fhir 排序和搜索参数

Posted

技术标签:

【中文标题】fhir 排序和搜索参数【英文标题】:fhir sorting and searchParameter 【发布时间】:2020-11-26 14:46:05 【问题描述】:

我正在使用 hapi-fhir,并希望按患者的姓氏对程序列表进行排序。

据我了解,需要一个合适的 serchParameter 才能做到这一点。

文档说 searchParameter 也支持链接,如果它是类型引用的话。

并且在 searchParameter (0..*) 字符串中有一个字段“链”,“支持链式名称”)但我不知道 如何使用它,我还没有找到任何示例。

我认为这种方法有点幼稚并且行不通:

"description": "Search by patients lastname",
  "code": "function",
  "base": [
    "Procedure"
  ],
  "type": "reference",
  "expression": "Procedure.subject.name.family",
  "xpath": "f:Procedure/f:subject/f:name/f:family",
  "xpathUsage": "normal",
  "multipleOr": true,
  "multipleAnd": true,
  "comparator": [
    "eq",
    "ne"
  ]

谁能给出一些解释或提供一个样本?

提前致谢 克里斯

【问题讨论】:

【参考方案1】:

您是正确的,您需要在排序中使用有效的搜索参数,但据我所知,它不能是链。请参阅 https://chat.fhir.org/#narrow/stream/179166-implementers/topic/_sort.20-.20sorting.20on.20refs 了解有关此问题的讨论。

对于普通搜索,您可以使用链,并且您提到的搜索参数已经在规范中。所以GET <hapi>/Procedure?patient.family=Chalmers 会起作用,但GET <hapi>/Procedure?_sort=patient.family 会出错。

您的搜索参数中的表达式不正确,因为它指向主题字段中的名称字段,但它不存在。患者姓名不是程序资源的一部分,但驻留在患者资源中。您必须首先解析从 Procedure 到 Patient 的链接,然后才能查看第二个的名称。我不知道搜索参数表达式中有任何类似的示例,但您可以查看 FHIRPath specification 的表达式语法。服务器是否可以自动支持这种排序将是另一回事。

【讨论】:

以上是关于fhir 排序和搜索参数的主要内容,如果未能解决你的问题,请参考以下文章

KnpPaginatorBundle:排序分页表(由搜索表单参数生成)

java方法的可变参数数组复制排序分类冒泡和选择排序搜索等常用方法实现

参考资源中的 FHIR 搜索

您如何处理排序、分页和过滤的参数?

带有分页和排序的 Spring Boot JPA 规范 API

悟空分词的搜索和排序源码分析之——索引