在查询医疗保健数据时,您可以使用过滤条件来缩小搜索范围 响应。在搜索请求中,您可以提供过滤条件,以强制执行包含或排除特定搜索响应的条件。
例如,当您 搜索单个患者数据时,搜索请求 body 必须包含以下指定患者 ID 的过滤器表达式:
"filter": "patient_id: ANY(\"PATIENT_ID\")"
本页介绍了如何为医疗保健搜索定义过滤器。
准备工作
在开始之前,请执行以下操作:
- 创建医疗保健搜索应用和医疗保健搜索数据存储区,然后导入 FHIR R4 数据。如需了解详情,请参阅创建医疗保健搜索应用和创建医疗保健搜索数据存储空间。
- 查看 Vertex AI Search 支持的 FHIR R4 资源列表 可编入索引、可搜索和检索的字段。 如需了解详情,请参阅 Healthcare FHIR R4 数据架构参考文档。
- 了解过滤条件表达式语法。
定义过滤器
过滤条件在 servingConfigs.search
方法的请求正文的 filter
字段中指定。
过滤条件定义遵循过滤条件表达式语法。
在过滤条件表达式中,字面量可以是
对搜索查询的响应。例如,如果响应包含观察资源,
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 资源过滤条件
您可以使用过滤条件检查某个 FHIR 资源是否存在于
Vertex AI Search 数据存储区。例如,您可以搜索
具有 ID 的 DocumentReference 资源
6112d1ac-c6bd-4755-d689-bfb71d59afc5
。
"filter": "DocumentReference.id: ANY(\"6112d1ac-c6bd-4755-d689-bfb71d59afc5\")"