HAPI FHIR Json 编码器未处理包含的资源
HAPI FHIR Json encoder not handling contained resources
我有一个包含 FHIR DeviceComponent 资源的 FHIR 设备资源。我使用以下 HAPI FHIR 代码将一个资源 'insert' 转换为另一个资源:
protected static void insertResourceInResouce(BaseResource resource, BaseResource resourceToInsert)
{
ContainedDt containedDt = new ContainedDt();
ArrayList<IResource> resourceList = new ArrayList<IResource>();
resourceList.add(resourceToInsert);
containedDt.setContainedResources(resourceList);
resource.setContained(containedDt);
}
根据 Eclipse 调试器,插入工作正常。然后将该资源及其插入添加到一个包中。完成所有工作后,Eclipse 调试器会显示资源,其中包含的资源已正确放置在包中。但是,在生成 JSON 字符串时,所包含的资源并不存在。编码操作出现如下:
return fhirContext.newJsonParser().setPrettyPrint(true)
.encodeResourceToString(bundle);
知道我做错了什么吗?
事实证明,必须使用“#”作为引用前缀从父资源引用包含的资源。 如果这样做,那么包含的资源将出现在 XML 和 JSON.
中
诚然,这个要求对我来说毫无意义。如果我认为资源不重要,为什么我会在另一个范围资源中包含资源?
我有一个包含 FHIR DeviceComponent 资源的 FHIR 设备资源。我使用以下 HAPI FHIR 代码将一个资源 'insert' 转换为另一个资源:
protected static void insertResourceInResouce(BaseResource resource, BaseResource resourceToInsert)
{
ContainedDt containedDt = new ContainedDt();
ArrayList<IResource> resourceList = new ArrayList<IResource>();
resourceList.add(resourceToInsert);
containedDt.setContainedResources(resourceList);
resource.setContained(containedDt);
}
根据 Eclipse 调试器,插入工作正常。然后将该资源及其插入添加到一个包中。完成所有工作后,Eclipse 调试器会显示资源,其中包含的资源已正确放置在包中。但是,在生成 JSON 字符串时,所包含的资源并不存在。编码操作出现如下:
return fhirContext.newJsonParser().setPrettyPrint(true)
.encodeResourceToString(bundle);
知道我做错了什么吗?
事实证明,必须使用“#”作为引用前缀从父资源引用包含的资源。 如果这样做,那么包含的资源将出现在 XML 和 JSON.
中诚然,这个要求对我来说毫无意义。如果我认为资源不重要,为什么我会在另一个范围资源中包含资源?