为MEdicationOrder资源HAPI构建POST请求消息 - FHIR

时间:2016-06-07 09:16:06

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

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

  1. 设置所包含资源的参考值。
  2. 生成的XML消息中不包含所包含的资源。
  3. 操作结果为HTTP / 1.1 500内部服务器错误,消息期望外部元素称为“Feed”,找到:MedicationOrder
  4. 任何熟悉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();
    }
    

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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