能否基于关联对象标识符构建FHIR查询?指定日期预约需排除特定机构
解决方案
1. 直接通过查询排除特定机构
完全可以通过FHIR搜索参数直接实现排除特定机构的需求,无需先获取所有结果再过滤。你需要利用Appointment资源的participant.actor参数结合否定运算符:not来排除目标机构:
修改后的查询示例:
https://fhir.example.com/api/r4/v1/Appointment?status=booked&date=ge2025-05-06T00:00:00&date=lt2025-05-07T00:00:00&_count=50&_include=Appointment:patient:Patient&participant.actor:not=Organization/[你的特定机构ID]
- 其中
participant.actor:not=Organization/[机构ID]的作用是排除参与者中包含指定机构ID的预约记录。 - 部分FHIR服务器支持
_not参数组写法,也可以写成:https://fhir.example.com/api/r4/v1/Appointment?status=booked&date=ge2025-05-06T00:00:00&date=lt2025-05-07T00:00:00&_count=50&_include=Appointment:patient:Patient&_not:participant.actor=Organization/[你的特定机构ID]
2. 基于关联对象标识符构建搜索查询
FHIR完全支持基于关联资源的标识符(而非内部ID)进行搜索,语法格式为[关联路径]:identifier=[标识符系统]|[标识符值]。
举个实际例子:
- 若要排除的机构拥有标识符系统
http://example.org/org-identifiers,标识符值为CLINIC-EXCLUDE-001,则查询可写为:https://fhir.example.com/api/r4/v1/Appointment?status=booked&date=ge2025-05-06T00:00:00&date=lt2025-05-07T00:00:00&_count=50&_include=Appointment:patient:Patient&participant.actor:identifier:not=http://example.org/org-identifiers|CLINIC-EXCLUDE-001 - 同理,如果需要基于Patient的标识符筛选预约,可使用
patient:identifier=[系统]|[值]的语法。
注意:不同FHIR服务器对高级搜索参数的支持可能略有差异,建议先查阅目标服务器的FHIR文档确认
:not运算符和标识符搜索的实现情况。
内容的提问来源于stack exchange,提问作者RKodakandla
相关产品推荐
相关产品推荐

