Azure FHIR Service R4多资源查询:based-on参数不通用报错咨询
问题解答:Azure FHIR Service跨资源搜索
based-on参数报错处理 报错原因
虽然DeviceRequest和ServiceRequest各自都定义了based-on搜索参数,但Azure FHIR Service的多资源联合搜索(通过_type指定多个资源类型)要求使用的搜索参数必须是FHIR规范定义的公共搜索参数(比如_id、_lastUpdated这类跨所有资源通用的参数)。而based-on属于每个资源的专用搜索参数,并非公共参数,因此无法在一次联合搜索中同时用于两种资源类型。
解决方案
1. 分两次单独搜索
分别针对两种资源类型发起搜索请求,之后手动合并结果:
- 搜索DeviceRequest:
{{fhirurl}}/DeviceRequest?based-on=CarePlan/91beb13f-340c-40a0-9f76-f4434b5fe6e4
- 搜索ServiceRequest:
{{fhirurl}}/ServiceRequest?based-on=CarePlan/91beb13f-340c-40a0-9f76-f4434b5fe6e4
2. 使用批量操作(Bundle)一次请求完成
通过FHIR的$batch操作将两个搜索请求打包成一个请求发送,服务端会返回包含两个结果集的Bundle响应:
{ "resourceType": "Bundle", "type": "batch", "entry": [ { "request": { "method": "GET", "url": "DeviceRequest?based-on=CarePlan/91beb13f-340c-40a0-9f76-f4434b5fe6e4" } }, { "request": { "method": "GET", "url": "ServiceRequest?based-on=CarePlan/91beb13f-340c-40a0-9f76-f4434b5fe6e4" } } ] }
将以上内容作为POST请求体发送到{{fhirurl}}/$batch即可。
关于无法使用_revinclude的说明
由于目标CarePlan已被删除,确实无法通过_revinclude从该CarePlan反向关联查询相关资源(_revinclude需要以存在的资源为起点),因此上述两种方法是当前场景下的可行替代方案。
内容的提问来源于stack exchange,提问作者Alexandre Guimond
相关产品推荐
相关产品推荐

