问题描述
当前,我正在使用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
时为什么我没有得到期望的结果吗?
解决方法
_include=MedicationRequest:medication
是合适的用法。
medication[x]
是指:
- medicationCodeableConcept
- medicationReference
我最好的猜测是您正在尝试_include
没有设置全局可解析ID的Medication
资源。
没有全局可解析的ID,HAPI FHIR将生成本地可解析的ID,并将本地可解析的Medication
包含在MedicationRequest.contained
下。
通过设置ID并使用全局可解析的引用(即medicationReference.reference: Medication/myMed1
而非medicationReference.reference: #myMed1
请参阅:
URL: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
不是全局的;因此,它被包含了。
URL 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 medicationReference.reference: Medication/med0316
,因此药物在捆绑销售商品中列为单独的条目。