过滤医疗保健搜索结果

查询医疗保健数据时,您可以使用过滤条件来优化搜索结果。在搜索请求中,您可以提供过滤条件,以强制执行包含或排除特定搜索回答的条件。

例如,当您搜索单个患者的数据时,搜索请求正文必须包含以下用于指定患者 ID 的过滤表达式:

"filter": "patient_id: ANY(\"PATIENT_ID\")"

本页介绍了如何为医疗保健搜索定义过滤条件。

准备工作

在开始之前,请执行以下操作:

定义过滤条件

过滤条件在 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_VALUEresource_datetime 字段的值,表示 FHIR dateTime 格式的日期和时间。 此字段的一些示例如下:
    • 如需指定日期和时间以及时区(以 T 分隔符分隔),请使用以下格式:2022-08-05T01:00:00+00:00
    • 如需指定日期,请执行以下操作:2022-08-05
    • 如需指定月份,请使用:2022-08
    • 如需指定年份,请使用 2022

您应该收到类似以下截断响应的 JSON 响应。响应包含按倒序时间列出的明细搜索结果,以及摘要(如果有)。structData 字段包含文档的结构化 JSON 数据。

{
    "results": [
    {
        "id": "DOCUMENT_ID",
        "document": {
        "name": "projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID",
        "id": "DOCUMENT_ID",
        "structData": {
            ...
            "resource_type": "FHIR_RESOURCE_TYPE",
            "resource_datetime": "RESOURCE_DATETIME",
            "patient_id": "PATIENT_ID",
            "FHIR_RESOURCE_TYPE": { ... }
        },
        "derivedStructData": {
            "snippets": [
            {
                "snippet": "SNIPPET_TEXT",
                "snippet_status": "SUCCESS"
            }
            ]
        }
        }
    }]
}

定义资源类型过滤条件

以下示例展示了如何构建一个过滤条件,该过滤条件使用 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\")"