如何在 HAPI FHIR 中包含完整对象而不是"contained"对象



我对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",
"type": "batch",
"entry": [ {
"resource": {
"resourceType": "CoverageEligibilityRequest",
"id": "7890",
"patient": {
"type": "Patient",
"identifier": {
"type": {
"coding": [ {
...
...
} ]
},

在哪里我想用actual string省略contained

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

您实际上想要做的似乎是向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);

最新更新