文章
· 5 hr 前 阅读大约需 6 分钟

2025.1 FHIR 搜索亮点 - 列表相关搜索支持(_List、$find、功能/"当前 "列表)

有时,根据预先定义的资源 "列表(List)"限制 FHIR 搜索会更方便、更高效、更安全。

自 2025.1 版起,我们的 FHIR 服务器支持多个与列表相关的功能

我将在此重点介绍这些功能,并提供一些示例。

一般来说,您可以从官方的 FHIR 文档中了解有关列表资源(List Resource)的详细信息

下面是基于上述内容的简短描述:

FHIR列表资源(FHIR List Resource)代表一个平面(可选有序)记录集合,用于临床列表(如过敏、药物、警报、病史)和工作流管理(如跟踪患者、教学病例)。
列表可以是同质的(单一资源类型),也可以是异质的(混合类型,例如,问题列表包含病症、过敏不耐受和手术)。
当您需要一个无法通过简单查询获得的经过整理/过滤的集合时(例如,"当前 "过敏症与所有记录的过敏症),请使用列表。
查询列表可获得经人工编辑的时间点快照,而查询资源端点通常会返回更广泛的、未经编辑的、"截至目前 "的数据集。

在我们的最新版本(2025.1+)中,您可以找到处理列表的新支持:

  • 列表搜索参数

请参阅相关的 FHIR 文档了解完整描述。有关可用支持的详细信息(特别是围绕类型级搜索与系统级搜索),请参阅我们的相关文档

使用该功能,您可以定义特定资源(例如会诊或患者等)的列表,您可能希望根据这些资源进行搜索,而无需将所有资源作为多个搜索参数进行详细说明。

例如,我可以定义一个患者列表:

 
PUT /List cURL 代码段

然后像这样搜索它们:

 
GET /Patient?_list cURL 片段

这样就能得到我想要的病人的精选列表,而不必在多个搜索参数中 "提及"所有病人。

当然,还有许多其他用例。

  • 功能列表(包括自定义操作 $update-functional)

功能列表(或 "当前资源[Current Resource] "列表)是一种特殊的列表。

请参阅相关的 FHIR 文档,了解完整描述。

为方便起见,以下是基于上述内容的简短描述:

许多临床系统都会维护"当前 "患者列表(例如,当前问题列表和当前用药列表),但 FHIR 无法通过检查单个资源实例来可靠地推断 "当前性"。
"条件"Condition)为例,同一资源类型可能出于多种合法目的而被发布(问题列表条目、会诊投诉/诊断、诊断工作流上下文或入站转诊数据),而 "条件"(Condition)中并没有能明确区分这些用途的元素
由于区分当前与过去需要追溯性修改(造成完整性和数字签名方面的问题),因此对患者的Condition 进行正常搜索时,返回的结果将不仅仅是已策划的 "当前问题",而将其限制为 "仅当前问题 "将隐藏其他重要的 Condition 记录。
因此,患者的 "当前列表 "中是否有 "病症"(或类似记录),可以通过是否从适当的列表中引用来确定。
通过 REST API,可以使用 _list 和标准功能列表名称(如 GET [base]/AllergyIntolerance?patient=42&_list=$current-allergies)通过列表搜索机制来表达这一点,服务器可以支持这一点,而不一定要公开一个独立的列表实例。
有几个 "通用 "功能列表名称,如 $current-problems$current-medications$current-allergies$current-drug-allergies(过敏症的子集)。

为了维护这些功能列表,我们定义了一个名为 $update-functional 的自定义操作,用于创建和更新此类列表。更多详情,请参阅我们的文档

例如,您可以这样定义当前过敏症列表:

 
POST /List/$update-functional?for=...&name=\$current-allergies cURL 片段

这将创建/更新 $current-allergies 列表,针对特定患者(上例中 ID 为 34)。

请注意,我在 URL 中包含了指向患者 ID 的'for=',而在列表中,我使用'subject'来引用患者。

(另请注意,对于美元符号 ($),我在其前面使用了斜线 (\),即: \$)

现在,我可以询问该患者的过敏不耐受资源,而且我可以只询问 "当前 "的,而不是得到所有的,如上面列表中所定义的。

这看起来像这样

 
GET /AllergyIntolerance?patient=...&_list=\$current-allergies cURL 片段

这将根据当前过敏症列表返回该患者的过敏症子集。

请注意,我们使用的是之前提到的 _list 搜索参数,只是这次不再使用 "自定义列表",而是使用 "功能列表"。

请注意,您可以通过 FHIR 端点配置,特别是 "交互策略设置",控制功能列表名称(每个列表的 subject 搜索参数和 subject 资源类型;例如,在上面的示例中,subject 搜索参数为 patientsubject 资源类型为 Patient),请参见此处的相关文档。看起来是这样的

  • $find 操作

此外,如果只想获取功能列表本身(针对特定主题和特定类型),可以使用 $find 操作。

请参阅相关的 FHIR 文档,了解完整说明。另请参阅我们的相关文档

下面是一个例子:

 
/List/$find?patient=...&name=\$current-allergies cURL 代码段

这将返回该患者的相关 $current-allergies 列表,如上文通过 $update-functional 函数所定义。

请参阅相关的 Open Exchange 应用程序,其中包括一个包含上述示例的 Postman Collection(还有更多示例),以及在 @Evgeny Shvarov FHIR 服务器模板docker 容器上运行该 应用程序的说明 (事实上,上述示例就是围绕该示例创建的;但略有改动......请参阅我的应用程序使用说明中的详细信息)。

一般说明--所有这些功能都假定您正在使用相对较新的端点默认 JsonAdvSQL存储策略。(如果相关,请参阅此处关于从传统策略迁移的说明)
讨论 (0)1
登录或注册以继续