如何在HAPI FHIR中包含完整对象而不是“包含”

问题描述

我对hapi FHIR还是陌生的,我正在尝试以以下格式对请求进行编码。

   CoverageEligibilityRequest coverageEligibilityRequest =  new CoverageEligibilityRequest();
   Patient patient = new Patient().addIdentifier(new Identifier().setType(getPatientIdentifierCodeableConcept()).setSystem("http://www.abc.xyz").setValue("123"));
   coverageEligibilityRequest.setPatient(new Reference(patient));

以上代码是用于在CoverageEligibilityRequest中填充患者的Java代码段。

{
  "resourceType": "Bundle","type": "batch","entry": [ {
    "resource": {
      "resourceType": "CoverageEligibilityRequest","id": "7890","contained": [ {
        "resourceType": "Patient","id": "1","identifier": [ {
          "type": {
            "coding": [ {
             ...
             ...

}

但是我希望请求的格式如下

{
  "resourceType": "Bundle","patient": {
        "type": "Patient","identifier": {
          "type": {
            "coding": [ {
              ...
              ...

            } ]
          },

我想在哪里contained 省略actual string

解决方法

FHIR通常不允许您将对象的整个图表示为单个资源,因此,如果您尝试将Patient资源作为CoverageEligibilityRequest资源的一部分发送,则唯一的方法是您可以通过在contained字段中设置患者来做到这一点。 CoverageEligibilityResource.patient字段被定义为Reference类型,因此只能包含the data allowed by a Reference data type,不能包含任意数据。

似乎您实际上想要做的是向HAPI FHIR服务器添加Patient和引用患者的CoverageEligibilityRequest资源。在FHIR中执行此操作的正确方法是构造一个包含两个资源的单个batchtransaction捆绑包。基本上,您想构造一个看起来像这样的Bundle

{
  "resourceType": "Bundle","type": "batch","entry": [ {
      "resource": {
        "resourceType": "Patient","id": "1","identifier": [ {
          "type": {
            "coding": [ {
             ...
      }
    },{
      "resource": {
        "resourceType": "CoverageEligibilityRequest","id": "7890","patient": "Patient/1",...

在HAPI FHIR中构造类似内容的最简单方法是使用transaction捆绑包,如下所示:

IGenericClient client = ...
CoverageEligibilityRequest coverageEligibilityRequest =  new CoverageEligibilityRequest();
Patient patient = new Patient().addIdentifier(new Identifier().setType(getPatientIdentifierCodeableConcept()).setSystem("http://www.abc.xyz").setValue("123"));
coverageEligibilityRequest.setPatient(new Reference(patient));
client.transaction().withResources(patient,coverageEligibilityRequest);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...