如何通过引用资源字段在FHIR中搜索medicationRequest资源
通过EpisodeOfCare ID检索匹配MedicationRequest的操作方法
FHIR规范本身支持跨引用资源的筛选,你可以根据服务端的能力支持情况选下面两种方案:
- 方案一:直接用链式检索(优先推荐,符合FHIR标准,一次请求就能拿到结果)
直接调用MedicationRequest资源的搜索接口,传链式搜索参数即可,请求格式如下:
参数逻辑说明:GET [你的FHIR服务根路径]/MedicationRequest?encounter.episode-of-care=[你要匹配的EpisodeOfCare ID]encounter是MedicationRequest资源上指向关联Encounter资源的标准搜索参数- 点号后面的
episode-of-care是沿着Encounter引用下钻,用Encounter资源上关联EpisodeOfCare的标准搜索参数做筛选,服务端会自动完成跨资源的关联匹配,直接返回所有符合条件的用药请求。
注意不要把参数名写成驼峰格式的episodeOfCare,FHIR所有标准搜索参数统一使用短横线分隔命名,写错会报参数无效。
- 方案二:分步检索(适用于不支持链式检索的裁剪版FHIR服务)
如果你的FHIR服务端关闭了链式搜索能力,分两步走就能拿到结果:- 先检索所有绑定了目标EpisodeOfCare ID的Encounter资源,请求格式:
从返回的资源包里提取所有Encounter的资源ID,整理成逗号分隔的ID列表。GET [你的FHIR服务根路径]/Encounter?episode-of-care=[你要匹配的EpisodeOfCare ID] - 再用拿到的Encounter ID列表检索关联的MedicationRequest,请求格式:
GET [你的FHIR服务根路径]/MedicationRequest?encounter=[逗号分隔的Encounter ID列表]
- 先检索所有绑定了目标EpisodeOfCare ID的Encounter资源,请求格式:
校验提示:拿到结果后可以随机抽取1-2条返回的MedicationRequest资源,顺着资源内的encounter引用字段打开对应Encounter详情,确认其关联的episodeOfCare ID和你的目标ID一致,排查服务端搜索逻辑异常导致的结果偏差。
内容的提问来源于stack exchange,提问作者Muteshi
相关产品推荐
相关产品推荐

