查询医疗保健数据时,您可以使用过滤条件来优化搜索结果。在搜索请求中,您可以提供过滤条件,以强制执行包含或排除特定搜索响应的条件。
例如,当您搜索单个患者的数据时,搜索请求正文必须包含以下用于指定患者 ID 的过滤表达式:
"filter": "patient_id: ANY(\"PATIENT_ID\")"
本页介绍了如何为医疗保健搜索定义过滤条件。
准备工作
在开始之前,请执行以下操作:
- 创建医疗保健搜索应用和医疗保健搜索数据存储区,然后导入 FHIR R4 数据。如需了解详情,请参阅创建医疗保健搜索应用和创建医疗保健搜索数据存储空间。
- 查看 Vertex AI Search 支持用作可编入索引、可搜索和可检索字段的 FHIR R4 资源列表。如需了解详情,请参阅 Healthcare FHIR R4 数据架构参考文档。
- 了解过滤条件表达式语法。
定义过滤条件
过滤条件在 servingConfigs.search
方法的请求正文的 filter
字段中指定。
过滤条件定义遵循过滤条件表达式语法。在过滤条件表达式中,字面量可以是搜索查询响应中的任何可编入索引的字段。例如,如果响应包含 Observation 资源,则 Observation 资源引用的 patient_id
可用作过滤条件字面量。
以下部分展示了一些有关如何构建过滤条件的示例。
定义 resource_datetime
过滤器
此示例展示了如何为搜索指定过滤条件,以便仅包含 resource_datetime
值晚于指定日期和时间值的资源。
REST
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "filter": "patient_id: ANY(\"PATIENT_ID\") AND resource_datetime > \"DATE_TIME_VALUE, "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}} }'
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目的 ID。DATA_STORE_ID
:Vertex AI Search 数据存储区的 ID。QUERY
:搜索查询。PATIENT_ID
:您要搜索其数据的患者的资源 ID。DATE_TIME_VALUE
:resource_datetime
字段的值,表示 FHIR dateTime 格式的日期和时间。 此字段的一些示例如下:- 如需指定日期和时间以及时区(以
T
分隔符分隔),请使用以下格式:2022-08-05T01:00:00+00:00
- 如需指定日期,请执行以下操作:
2022-08-05
- 如需指定月份,请使用以下格式:
2022-08
- 如需指定年份,请使用
2022
- 如需指定日期和时间以及时区(以
定义资源类型过滤条件
以下示例展示了如何构建一个过滤条件,该过滤条件使用 AND
运算符先过滤所有 Composition 资源,然后过滤日期晚于指定日期和时间的资源。
"filter": "resource_type: ANY("Composition") AND Composition.date > "2022-08-05T01:00:00+00:00""
定义 FHIR 资源过滤条件
您可以使用过滤条件检查 Vertex AI Search 数据存储区中是否存在 FHIR 资源。例如,您可以使用以下过滤条件搜索 ID 为 6112d1ac-c6bd-4755-d689-bfb71d59afc5
的 DocumentReference 资源。
"filter": "DocumentReference.id: ANY(\"6112d1ac-c6bd-4755-d689-bfb71d59afc5\")"