正在为 MEdicationOrder 资源 HAPI - FHIR 构造 POST 请求消息
Constructing POST request message for MEdicationOrder Resource HAPI - FHIR
我正在编写 java 代码以使用 HAPI - FHIR DSTU2 HL7 中的 MedicationOrder 资源生成 POST 请求。我遇到过几个麻烦。
- 正在为包含的资源设置参考值。
- 生成的 XML 消息中不存在包含的资源。
- 操作结果为 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();
}
如果界面抱怨 "feed",那么听起来您使用的是 DSTU 1 版本的 HAPI,而不是 DSTU2。 (在 DSTU 2 中 Feed 更改为 Bundle。)
看起来您将 HAPI 的客户端与 Apache HTTP 客户端层(它在 HAPI 的客户端内部,但您不需要直接交互)混淆了。
不用创建 HttpPost
对象,只需使用 HAPI 的客户端来执行创建:
MethodOutcome outcome = client.create()
.resource(medicationOrder)
.prettyPrint()
.encodedJson()
.execute();
我正在编写 java 代码以使用 HAPI - FHIR DSTU2 HL7 中的 MedicationOrder 资源生成 POST 请求。我遇到过几个麻烦。
- 正在为包含的资源设置参考值。
- 生成的 XML 消息中不存在包含的资源。
- 操作结果为 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();
}
如果界面抱怨 "feed",那么听起来您使用的是 DSTU 1 版本的 HAPI,而不是 DSTU2。 (在 DSTU 2 中 Feed 更改为 Bundle。)
看起来您将 HAPI 的客户端与 Apache HTTP 客户端层(它在 HAPI 的客户端内部,但您不需要直接交互)混淆了。
不用创建 HttpPost
对象,只需使用 HAPI 的客户端来执行创建:
MethodOutcome outcome = client.create()
.resource(medicationOrder)
.prettyPrint()
.encodedJson()
.execute();