搜索医疗保健数据

将 FHIR R4 数据导入到医疗保健搜索应用后,您可以查询导入的数据以获取相关结果。您可以使用以下类型的查询进行搜索:

  • 关键字查询
  • 自然语言查询
  • 提供生成式 AI 答案的自然语言查询

此外,您还可以使用日期过滤查询过滤搜索结果。如需了解详情,请参阅定义 resource_datetime 过滤条件

在 Google Cloud 控制台中进行搜索时,您必须先提供患者 ID,并且一次只能搜索单个患者的数据。使用 REST API 进行搜索时, 您可以搜索整个数据存储区。

本页介绍了如何使用各种类型的查询搜索医疗保健数据。

Vertex AI Search 用于搜索医疗保健数据的预期用途

Vertex AI Search 的预期用途并非提供与预防、诊断或治疗疾病相关的信息。本产品不针对诊断或治疗建议相关问题提供解答。本产品的预期用途是检索和总结用户提供的现有医疗信息。

由于测试数据有限,此产品可能适用于 0-18 周岁和 85 周岁及以上的年龄段,也可能不适用。因此,在查看生成的输出时 客户必须考虑子群体内的代表性 源数据。

下面列举了一些示例来说明该产品的用途:

  • 探索性查询,用于查找与某个主题相关的患者信息:

    • "总结阿司匹林用途"
    • “血压”
    • “糖尿病管理?”
  • 导航查询,用于查找可映射到结构化查询的特定资源:

    • “Show me the latest a1c”
  • 提取性问题和答案,用于回答特定问题,证据可能 分布在多个资源中:

    • “此患者是否曾接受过头孢菌素治疗?”
    • “患者是否接受过精神病学评估”

以下示例说明了此产品适合用于的用途:

  • 诊断建议和治疗建议:

    • “这名患者的鉴别诊断是什么?”
    • “我应该给病人开哪些药物?”

准备工作

在搜索之前,请执行以下操作:

您可以使用关键字来搜索您的医疗保健数据存储区。例如,您 可以使用“a1c”、“胰岛素”或“ulcer”等关键字进行搜索以获得相关性 FHIR 资源。

下图显示了关键字为 "lipid"。此示例不包含摘要或生成式 AI 回答。

查询是“脂质”。
图 1:使用关键字进行搜索。

如需使用关键字进行搜索,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

  2. 选择您要查询的医疗保健搜索应用。

  3. 在导航菜单中,点击预览

  4. 患者 ID 字段中,输入您要查询数据的患者的 ID。患者 ID 区分大小写。

  5. Enter 键或点击预览以提交患者 ID。

  6. 在此处搜索搜索栏中,输入要搜索的关键字。

    如果您启用了自动补全功能,系统会在下方显示一系列自动补全建议 搜索栏。

  7. Enter 键提交查询。

    • 搜索结果会显示在分页表格中,这些表格会根据 FHIR 资源类型进行分类。
    • 默认情况下,所有 FHIR 资源类型的搜索结果均按时间倒序显示。
  8. 可选。如需过滤结果,请选择一个或多个 FHIR 资源类别 。

  9. 可选。如需按与 Composition、DocumentReference 和 DiagnosticReport 资源的相关性对结果进行排序,请点击排序:按时间倒序过滤条件,然后从列表中选择相关性。有关 信息,请参阅订购医疗保健搜索结果

REST

以下示例展示了如何在医疗保健搜索应用中使用关键字搜索单个患者的 FHIR R4 数据。此示例使用 servingConfigs.search 方法。

默认情况下,搜索结果按时间倒序返回。 在 Composition、DiagnosticReport 和 DocumentReference 资源中进行搜索时,您可以按相关性对搜索结果进行排序。如需了解详情,请参阅 订单医疗保健搜索结果

  1. 使用关键字进行搜索。

    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/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
    "query": "KEYWORD_QUERY",
    "filter": "patientId: ANY(\"PATIENT_ID\")",
    "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}}
    }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • APP_ID:您要查询的 Vertex AI Search 应用的 ID。
    • KEYWORD_QUERY:您要针对患者搜索的关键字 过滤出的患者的临床数据,例如“糖尿病”或“a1c”。
    • PATIENT_ID:您要搜索其数据的患者的资源 ID。

借助 Vertex AI Search,您可以获得复杂自然语言查询的结果。例如,下图显示了自然语言查询“与糖尿病相关的实验室结果”的结果。

查询是“患者的血脂实验室结果是什么”。
图 2. 使用自然语言查询进行搜索。

如需使用自然语言查询进行搜索,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

  2. 选择您要查询的医疗保健搜索应用。

  3. 在导航菜单中,点击 Preview

  4. 患者 ID 字段中,输入其数据的患者 ID 查询。患者 ID 区分大小写。

  5. Enter 键或点击预览以提交患者 ID。

  6. 在此处搜索搜索栏中,输入自然语言查询,例如“与糖尿病相关的实验室结果”。

    如果您启用了自动补全功能,系统会在下方显示一系列自动补全建议 搜索栏。

  7. Enter 键提交查询。

    • 搜索结果会显示在分页表格中,这些表格会根据 FHIR 资源类型进行分类。
    • 默认情况下,所有 FHIR 资源类型的搜索结果均以 按时间逆序排列。
  8. 可选。选择搜索栏下方的 FHIR 资源类别,以过滤结果。

  9. 可选。为根据乐曲的相关性对结果进行排序, DocumentReference 和 DiagnosticReport 资源之间可以点击 排序:逆向时间顺序过滤器,并从列表中排序 选择相关性。如需了解详情,请参阅对医疗保健搜索结果进行排序

REST

以下示例展示了如何在医疗保健搜索应用中搜索单个患者的 FHIR R4 数据 使用自然语言查询。此示例使用 servingConfigs.search 方法。如需使用自然语言查询进行搜索,您必须将 naturalLanguageQueryUnderstandingSpec 字段添加到请求正文中。

默认情况下,搜索结果按时间倒序返回。 在 Composition、DiagnosticReport 和 DocumentReference 资源中进行搜索时,您可以按相关性对搜索结果进行排序。如需了解详情,请参阅对医疗保健搜索结果进行排序

  1. 使用自然语言发布查询。

    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/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
    "query": "NATURAL_LANGUAGE_QUERY",
    "filter": "patientId: ANY(\"PATIENT_ID\")",
    "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}},
    "naturalLanguageQueryUnderstandingSpec":{"filterExtractionCondition":"ENABLED"}
    }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • APP_ID:您在创建 Vertex AI Search 应用时 查询。
    • NATURAL_LANGUAGE_QUERY:用自然语言的查询,例如“实验结果与 糖尿病"或“患者目前是否在服用任何药物”。
    • PATIENT_ID:您要搜索其数据的患者的资源 ID。

使用自然语言查询进行搜索,并通过生成式 AI 获取回答

使用自然语言查询搜索患者的 FHIR 数据时,您可以选择在搜索结果中获取生成式 AI 回答。答案是对搜索结果的总结,同时还会显示 用于生成答案的引用。

使用该控制台时,您可以为 生成式 AI 的回答。如需了解详情,请参阅为医疗保健数据配置搜索结果

使用 REST API 时,您可以在 version 字段中指定以下 LLM 模型之一,以获取生成式 AI 回答:

  • gemini-1.5-flash-001/answer_gen/v1stable:一个稳定版,通常为 一个基于 gemini-1.5-flash-001 模型的可用模型。有关 信息,请参阅正式版 (GA) 模型
  • gemini-1.0-pro-002/answer_gen/v1:基于 gemini-1.0-pro-002 模型的 Vertex AI Search。如需了解详情,请参阅正式版 (GA) 模型
  • medlm-medium/answer_gen/v1preview:基于 MedLM 模型的预览模型。有关 相关信息,请参阅 MedLM 模型

下图显示了使用生成式 AI 进行查询的 AI 回答。搜索摘要通过总结 从相关结果中提取发现。您可以展开包含引用内容的句段 查看用于生成所选片段的参考。 并非所有生成的回答都带有引文。

查询内容是
患者的血脂实验室”。搜索结果以表格形式显示
。搜索结果随附生成式 AI 生成的摘要,其中显示“患者没有已知过敏症”。
图 3. 使用自然语言查询进行搜索,并通过生成式 AI 获取回答。

如需使用生成式 AI 回答进行搜索,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

  2. 选择要查询的医疗保健搜索应用。

  3. 在导航菜单中,点击配置

  4. 自定义搜索微件:

    1. 搜索类型字段中,选择包含回答的搜索
    2. 选择要用于生成摘要的模型。如需了解详情,请参阅为医疗数据配置搜索结果
    3. 保存并发布您的偏好设置。
  5. 在导航菜单中,点击预览

  6. 患者 ID 字段中,输入其数据的患者 ID 查询。患者 ID 区分大小写。

  7. Enter 键或点击预览以提交患者 ID。

  8. 在此处搜索搜索栏中,输入自然语言查询,例如“nsaids”“患者的血脂实验结果是什么”或“最新的 A1C 结果是什么”。

    如果您启用了自动补全功能,则在输入时,搜索栏下方会显示自动补全建议列表。

  9. Enter 键提交查询。

    • 生成式 AI 回答会显示在搜索栏下方。
    • 搜索结果会显示在分页表格中,这些表格会根据 FHIR 资源类型进行分类。
    • 默认情况下,所有 FHIR 资源类型的搜索结果均以 按时间逆序排列。
  10. 可选。展开包含引文的回答部分,查看搜索结果中的参考文献。

  11. 可选。选择搜索栏下方的 FHIR 资源类别,以过滤结果。

  12. 可选。如需按与 Composition、DocumentReference 和 DiagnosticReport 资源的相关性对结果进行排序,请点击排序:按时间倒序过滤条件,然后从列表中选择相关性。有关 信息,请参阅订购医疗保健搜索结果

REST

以下示例展示了如何在医疗保健搜索应用中使用包含生成式 AI 回答的自然语言查询搜索单个患者的 FHIR R4 数据。此示例使用 servingConfigs.search 方法。

  • 要使用自然语言查询进行搜索,您必须将 naturalLanguageQueryUnderstandingSpec 字段添加到请求正文。
  • 如需添加内嵌引文索引,您必须添加 includeCitations 字段。这是一个布尔字段,默认值设为 false

默认情况下,搜索结果按时间倒序返回。 当您搜索乐曲时, 和 DocumentReference 资源,您可以对搜索结果进行排序, 。如需了解详情,请参阅对医疗保健搜索结果进行排序

  1. 用自然语言发布查询。

    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/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "filter": "patientId: ANY(\"PATIENT_ID\")",
            "contentSearchSpec": {
              "snippetSpec": {
                "returnSnippet": true
              },
              "summarySpec": {
                "summaryResultCount": 1,
                "includeCitations": true,
                "modelSpec": {
                  "version": "MODEL_VERSION"
                }
              }
            },
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
          }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • APP_ID:您要查询的 Vertex AI Search 应用的 ID。
    • QUERY:自然语言的查询, 如“美国国家税务局 (NSAids)、患者的脂肪实验室有哪些”或“什么是 最近的 A1C 结果”。如果查询包含单引号 ',您必须将其替换为单引号的数字字符引用:'
    • PATIENT_ID:您要搜索其数据的患者的资源 ID。
    • MODEL_VERSION:要用于生成 回答。