2016-06-07 83 views
0

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

  1. 设置所包含资源的参考值。
  2. 包含的资源不存在于生成的XML消息中。
  3. 操作结果为HTTP/1.1 500内部服务器错误消息期待外部元素称为'feed',找到: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(); 
} 
+0

目前尚不清楚你的要求。请包括您说您正在编写的Java代码 - 包含生成这些错误的Java代码会更有帮助。请查看一些关于[如何提出一个好问题]的有用提示(http://stackoverflow.com/help/how-to-ask) - 询问一个好问题可以提高获得答案的机会。 但是,在发布您的问题之前,您先搜索并做一些调查也同样重要。还包括您尝试过的内容,并指出您遇到的问题。 – ishmaelMakitla

回答

0

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

而不是创建HttpPost对象,只需使用高致病性禽流感的客户端来进行创建:

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

嗨詹姆斯阿格纽,它工作。非常感谢..!!! –

+0

我设法克服了这里提到的所有问题。但是现在,生成的消息中存在重复的“包含”资源。例如,有2个位置条目和3个组织条目。你有什么主意吗? –

0

如果接口抱怨“饲料”,那么它听起来就像你正在使用的DSTU 1版高致病性禽流感,而不是DSTU2。 (Feed已更改为DSTU 2中的Bundle。)

+0

我已经删除了'hapi-fhir-structures-dstu2'版本1.4的依赖项,现在它正在抱怨'Bundle'。 –