如何通过Epic on FHIR API获取所有CareTeam和Patient FHIR资源
解决方案
你遇到的限制是主流EHR FHIR实现的默认安全策略:出于隐私合规考虑,默认禁止无过滤条件的全量资源拉取,避免批量泄露患者数据。你可以通过以下几种方式实现需求:
- 调整SMART授权层级与Scope
你当前用的是患者层级的SMART launch,授权Scope仅允许访问单患者相关资源。改为申请用户层级launch,提交user/CareTeam.read、user/Patient.read类Scope,同时在申请时明确标注查询会添加业务过滤条件,大部分EHR会批准这类授权。 - 补充CareTeam查询过滤参数
即使公开文档标注CareTeam.Search仅支持subject参数,你可以尝试添加FHIR标准的participant查询参数,参数值填入当前登录临床医生对应的Practitioner资源ID,Epic的多数实现默认支持该未公开参数,可直接拉取当前医生参与的所有护理团队,无需传入患者ID。 - 批量拉取关联患者
拿到所有护理团队数据后,提取所有CareTeam资源中subject字段关联的患者FHIR ID列表,调用Patient.Search接口时传入_id参数,参数值为所有患者ID用英文逗号拼接,示例查询语法:GET [你的FHIR服务端点]/Patient?_id=pat123,pat456,pat789
该方式符合现有接口参数规则,可一次拉取所有关联患者数据。 - 复用公共PatientList实现科室级查询
如果你需要展示特定科室的所有患者与关联护理团队,可以联系院内EHR管理员获取对应科室公共患者列表的固定ID,调用PatientList.Search接口传入该ID即可拿到列表下全量患者,再反向查询每个患者对应的护理团队即可。
注意:所有跨患者的查询都需要添加明确的业务过滤条件,仅拉取当前登录医生权限范围内的数据,避免触发权限拦截也符合隐私合规要求。
内容的提问来源于stack exchange,提问作者element119
相关产品推荐
相关产品推荐

