如何查询Azure FHIR服务中存在无效引用的资源
查询Azure FHIR Service中存在无效引用的资源
针对单个资源类型的无效引用查询
以你提到的MedicationDispense引用不存在Patient的场景为例,可通过FHIR的_filter参数结合FHIRPath表达式直接查询:
GET请求方式
直接构造URL发起查询:GET /MedicationDispense?_filter=not exists(subject.resolve())该表达式的逻辑是:检查
MedicationDispense的subject引用是否能解析到有效资源,若无法解析(即引用的Patient不存在),则返回该MedicationDispense资源。POST请求方式(适合复杂查询场景)
若需要构造更复杂的查询条件,可使用POST请求提交查询Bundle:{ "resourceType": "Bundle", "type": "search", "parameter": [ { "name": "_filter", "value": "not exists(subject.resolve())" } ] }将上述Bundle内容POST到
/MedicationDispense端点即可获取结果。
扩展到其他引用场景
如果需要检查其他类型的无效引用,只需修改_filter中的FHIRPath路径即可:
- 检查
MedicationDispense引用不存在的Medication资源:GET /MedicationDispense?_filter=not exists(medication.resolve()) - 检查
Encounter引用不存在的Practitioner资源:GET /Encounter?_filter=not exists(participant.individual.resolve())
注意事项
resolve()函数是FHIR标准中用于解析引用资源的函数,Azure FHIR Service默认支持该函数在_filter参数中的使用。- 若需要批量检查所有资源类型的无效引用,需针对每个资源类型及其常见引用字段逐一执行类似查询,目前FHIR暂不支持跨所有资源类型的通用无效引用查询。
内容的提问来源于stack exchange,提问作者Michiel Meulendijk
相关产品推荐
相关产品推荐

