首页 > 解决方案 > _include 在 hapi fhir 中

问题描述

目前我正在使用 HAPI FHIR (Java) 开发 FHIR 搜索 API。

在 HAPI FHIR (Java) 中的 FHIR 资源MedicationRequest中,我想将Medication资源内联包含在 下MedicationRequest.medication[x],而不是作为参考。我在下面提供了一个片段。

//code
@IncludeParam(allow = { "MedicationRequest:medication" }) Set<Include> theIncludes 


// url
/MedicationRequest?_include=MedicationRequest:medication&status=stopped,active

但是,当我点击 url 时,响应不包括内联的药物资源。

如果我使用_include=*,那么我会得到想要的结果。药物与其他参考文献一起包含在内。

// code
@IncludeParam(allow = { "*" }) Set<Include> theIncludes

// url
/MedicationRequest?_include=*&status=stopped,active

谁能帮助我理解为什么我在使用时没有得到想要的结果_include=MedicationRequest:medication

标签: hl7-fhirhapihapi-fhir

解决方案


_include=MedicationRequest:medication是适当的用法。

medication[x]指的是:

  • 药物可编码概念
  • 药物参考

我最好的猜测是您正在尝试使用没有全局可解析 id 集_include的资源。Medication

如果没有全局可解析的 id,HAPI FHIR 将生成一个本地可解析的 id,并将本地可解析的包含MedicationMedicationRequest.contained.

通过设置 id 并使用全局可解析引用来修复,即medicationReference.reference: Medication/myMed1代替medicationReference.reference: #myMed1

看:


网址:http ://test.fhir.org/r4/MedicationRequest?_id=medrx0311&_include=MedicationRequest:medication

返回一个只有MedicationRequest. Medication包含在MedicationRequest.contained.

{
  "resourceType" : "MedicationRequest",
  "id" : "medrx0311",
  ...
  "contained" : [
    {
      "resourceType" : "Medication",
      "id" : "med0316",
  ...
  "medicationReference" : {
      "reference" : "#med0316"
},

medicationReference.reference: #med0316不是全局的;因此,它被包含在内。

网址http://test.fhir.org/r4/MedicationRequest?_id=medrx002&_include=MedicationRequest:medication

MedicationRequest返回包含和的捆绑包Medication

{
  "resourceType" : "MedicationRequest",
  "id" : "medrx002",
... 
  "medicationReference" : {
  "reference" : "Medication/med0316",
  "display" : "prescribed medication"
},
...
{
  "resourceType" : "Medication",
  "id" : "med0316",

在这里,使用了适当的全局 id medicationReference.reference: Medication/med0316,因此 Medication 在捆绑包中被列为单独的条目。


推荐阅读