【问题标题】:Constructing POST request message for MEdicationOrder Resource HAPI - FHIR为 MEdicationOrder 资源 HAPI 构建 POST 请求消息 - FHIR
【发布时间】:2016-06-07 09:16:05
【问题描述】:

我正在编写一个 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();
}

【问题讨论】:

  • 不清楚你在问什么。请包含您说您正在编写的 Java 代码 - 包含生成这些错误的 Java 代码会更有帮助。请在how to ask a good question 上查看一些有用的提示 - 问一个好问题可以提高您获得答案的机会。但同样重要的是,在发布问题之前先进行搜索并进行一些研究。还包括您尝试过的内容并指出您遇到的问题。

标签: java hl7-fhir hapi dstu2-fhir hapi-fhir


【解决方案1】:

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

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

MethodOutcome outcome = client.create()
  .resource(medicationOrder)
  .prettyPrint()
  .encodedJson()
  .execute();

【讨论】:

  • 我设法克服了这里提到的所有问题。但是现在,生成的消息中有重复的“包含”资源。例如,有 2 个 Location 条目和 3 个 Organization 条目。你有什么想法吗?
【解决方案2】:

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

【讨论】:

  • 我已经删除了 'hapi-fhir-structures-dstu2' 版本 1.4 的依赖项,现在它正在抱怨一个 'Bundle'。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多