我对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中做到这一点的正确方法是构建包含这两种资源的单个batch
或transaction
束。基本上,您想要构建一个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);