0

我正在编写一个 java 代码,用于使用HAPI - FHIR DSTU2 HL7中的 MedicationOrder 资源生成 POST 请求。我遇到了几个麻烦。

  1. 设置包含资源的参考值。
  2. 生成的 XML 消息中不存在包含的资源。
  3. 操作结果是 HTTP/1.1 500 Internal Server Error 并带有消息Expecting external element called 'feed', found: MedicationOrder

任何熟悉 MedicationOrder 资源的人都可以帮助我吗?

下面是java代码

public int sendMessage(MedicationOrder medicationOrder) throws   ClientProtocolException, IOException
{
  FhirContext ctx = FhirContext.forDstu2Hl7Org();
  IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2");    
  HttpPost httpPost = new HttpPost("http://fhirtest.uhn.ca/baseDstu2");

  String message = ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(medicationOrder);
  httpPost.setEntity((HttpEntity) new StringEntity(message, ContentType.create(Constants.CT_FHIR_XML, "UTF-8")));

  org.apache.http.HttpResponse response = client.getHttpClient().execute(httpPost);
  return response.getStatusLine().getStatusCode();
}
4

2 回答 2

0

如果界面抱怨“feed”,那么听起来您使用的是 DSTU 1 版本的 HAPI,而不是 DSTU2。(在 DSTU 2 中,Feed 已更改为 Bundle。)

于 2016-06-07T13:34:36.260 回答
0

看起来您将 HAPI 的客户端与 Apache HTTP 客户端层(HAPI 的客户端内部,但您不需要直接交互)混合在一起。

无需创建HttpPost对象,只需使用 HAPI 的客户端执行创建:

MethodOutcome outcome = client.create()
  .resource(medicationOrder)
  .prettyPrint()
  .encodedJson()
  .execute();
于 2016-06-08T16:57:03.297 回答