【发布时间】:2015-11-27 22:00:38
【问题描述】:
搜索参数的使用是否仅限于公共搜索参数(即_id、_text)以及在每个资源定义底部定义的参数?例如,家庭,这是在患者资源 @https://www.hl7.org/fhir/patient.html#search 上定义的。
我想知道是否可以将资源的任何元素直接用作搜索参数?例如:
- 搜索超过 3 个系列的 ImagingStudy:/ImagingStudy?numberOfSeries>3
- 使用任何在线可用系列搜索 ImagingStudy: /ImagingStudy?series.availability=在线。这类似于来自 Odata (http://www.odata.org/getting-started/basic-tutorial/#filter) 的复杂类型过滤器,其中相同的查询可以在 OData 中编写为 /ImagingStudy?$filter=series/any(s:s/availability eq 'ONLINE')
以下于 2015-11-28 添加:
我们的服务器是一个只读服务,它聚合来自各种源系统的数据并实现基于 FHIR 的 API。以下是有关基础架构的一些有趣事实和挑战:
- 大部分源系统只能提供原始查询能力, 例如,按日期过滤。
- 我们无法创建索引,因为我们不拥有数据存储库。
- 在典型场景中,我们会首先从客户端的请求中检索日期过滤器,并使用它来减少源系统需要返回的数据量。然后我们的服务将对聚合结果进行剩余的过滤、排序和分页。
例如,我们需要针对 ImagingStudy.procedure.code.coding[].display 实现字符串搜索。
很高兴知道服务器能够在一致性声明中定义额外的搜索参数;但是,对于我们的场景,搜索参数主要由客户需求驱动。对此需求的任何更改或更新都可能触发对服务器一致性的更改。这使得一致性/合同容易受到更改。
这是促使我提出问题的动机,因为 FHIR 客户端和服务器已经通过 FHIR 资源定义了明确定义的合同,是否可以将此合同扩展为搜索参数,客户端和服务器将能够利用 FHIR 资源的现有对象图作为搜索参数,而无需定义单独的列表。
【问题讨论】:
-
对于第一个例子,查询应该是 /ImagingStudy?numberOfSeries=gt3
标签: hl7-fhir