刷新医疗保健数据

在将数据首次导入智能体搜索医疗保健数据存储区后,您可能在源 FHIR 存储区中执行了以下任何更新:

  • 添加了新的 FHIR 资源
  • 更新了现有 FHIR 资源
  • 删除了 FHIR 资源

在这种情况下,您可以将源 FHIR 存储区中的更改 协调 到智能体搜索医疗保健数据存储区中。

协调概览

您可以增量或完整地协调更改。下表对这两种模式进行了比较。

对源 FHIR 存储区的更改 增量模式 完整模式
新的 FHIR 资源 向智能体搜索数据存储区添加新文档 向智能体搜索数据存储区添加新文档
更新后的 FHIR 资源 替换智能体搜索数据存储区中的现有文档,同时保留文档 ID 替换智能体搜索数据存储区中的现有文档,同时保留文档 ID
已删除的 FHIR 资源 不协调 从智能体搜索数据存储区中移除相应文档

准备工作

查看项目的配额和限制。 Google Cloud 您的智能体搜索医疗保健数据存储区每个项目最多可包含 100 万个文档。如果在导入期间达到此配额,导入过程将停止。

执行增量导入

以下示例展示了如何使用 documents.import 方法从 Cloud Healthcare API FHIR 存储区导入增量 更改。

REST

  1. 执行增量导入。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
       "reconciliation_mode": "INCREMENTAL",
       "fhir_store_source": {"fhir_store": "projects/PROJECT_ID/locations/CLOUD_HEALTHCARE_DATASET_LOCATION/datasets/CLOUD_HEALTHCARE_DATASET_ID/fhirStores/FHIR_STORE_ID"}
    }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • DATA_STORE_ID:智能体搜索数据存储区的 ID。
    • CLOUD_HEALTHCARE_DATASET_ID:包含源 FHIR 存储区的 Cloud Healthcare API 数据集的 ID。
    • CLOUD_HEALTHCARE_DATASET_LOCATION:包含源 FHIR 存储区的 Cloud Healthcare API 数据集的位置。
    • FHIR_STORE_ID:Cloud Healthcare API FHIR R4 存储区的 ID。
  2. 验证 FHIR 数据导入操作是否已完成。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/operations/IMPORT_OPERATION_ID"
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • DATA_STORE_ID:智能体搜索数据存储区的 ID。
    • IMPORT_OPERATION_ID:调用 import 方法时返回的长时间运行的操作的操作 ID。

Python

如需了解详情,请参阅 智能体搜索 Python API 参考文档

如需向智能体搜索进行身份验证,请设置应用默认凭据。如需了解详情,请参阅 为本地开发环境设置身份验证

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "us"
# data_store_id = "YOUR_DATA_STORE_ID"
# healthcare_project_id = "YOUR_HEALTHCARE_PROJECT_ID"
# healthcare_location = "YOUR_HEALTHCARE_LOCATION"
# healthcare_dataset_id = "YOUR_HEALTHCARE_DATASET_ID"
# healthcare_fihr_store_id = "YOUR_HEALTHCARE_FHIR_STORE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    fhir_store_source=discoveryengine.FhirStoreSource(
        fhir_store=client.fhir_store_path(
            healthcare_project_id,
            healthcare_location,
            healthcare_dataset_id,
            healthcare_fihr_store_id,
        ),
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)