问题描述
我对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中执行此操作的正确方法是构造一个包含两个资源的单个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);