_include 在 hapi fhir 中

Posted

技术标签:

【中文标题】_include 在 hapi fhir 中【英文标题】:_include in hapi fhir 【发布时间】:2020-12-07 12:51:41 【问题描述】:

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

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

//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 时没有得到想要的结果?

【问题讨论】:

是不是因为不叫“MedicationRequest:medication”?您可以通过查看使用 _include=* 时收到的值来确认使用的名称 【参考方案1】:

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

medication[x] 指的是:

medicationCodeableConcept 药物参考

我的最佳猜测是您正在尝试 _include 一个没有全局可解析 ID 集的 Medication 资源。

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

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

见:

2.2.2 References in Server Code 4.5.14 Resource Includes (_include)

网址: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

返回包含MedicationRequestMedication 的捆绑包。


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

  "resourceType" : "Medication",
  "id" : "med0316",

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

【讨论】:

感谢您解释@rmharrison。我添加了 setBundleInclusionRule(BundleInclusionRule.BASED_ON_RESOURCE_PRESENCE);在我的代码中,之后它工作正常

以上是关于_include 在 hapi fhir 中的主要内容,如果未能解决你的问题,请参考以下文章

HAPI FHIR R4:ReferenceParam 上的修饰符

HAPI FHIR - 数据模型 - 实体关系,有没有人有指向基于 FHIR 的 ERD 模型的链接

fhir 排序和搜索参数

使用 JAVA 将 HL7 转换为 JSON

根据配置文件验证简单 FHIR 资源时出错

hapi.js - 404 路由 VS 静态文件路由