FHIR中如何结合identifier.use属性进行患者标识符搜索?
FHIR搜索排除use=old的标识符患者
要实现只返回具有指定system/value且identifier.use≠old的患者,你需要利用FHIR的参数分组功能,确保标识符的system、value和use约束都作用于同一个标识符实例上,避免出现“患者有多个标识符分别满足不同条件”的误匹配。
可行的搜索请求写法
写法1:结合token格式与参数分组
/Patient?_and=identifier,identifier&identifier=https://nick.systems/try1|123&identifier.use:not=old
_and=identifier,identifier:指定后续两个identifier相关参数必须同时作用于同一个标识符实例identifier=https://nick.systems/try1|123:匹配system和value都符合的标识符identifier.use:not=old:排除该标识符的use为old的情况
写法2:拆分system/value的参数分组
/Patient?_and=identifier,identifier,identifier&identifier.system=https://nick.systems/try1&identifier.value=123&identifier.use:not=old
这种写法把system、value、use的约束拆分开,同样通过_and确保三个条件都作用于同一个标识符实例。
写法3:方括号分组(部分服务器支持)
部分FHIR服务器支持更简洁的方括号分组语法,直接把同一实例的约束放在一组:
/Patient?identifier[system=https://nick.systems/try1][value=123][use:not=old]
关键逻辑说明
FHIR默认对重复参数(如多个identifier.*)的处理是OR逻辑(即只要患者有任何一个标识符满足其中一个条件就算匹配),而通过_and参数分组,我们强制要求所有指定的标识符约束必须同时匹配同一个标识符实例,这样就能精准排除那些只有use=old的目标标识符的患者。
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

