医療データを更新する

Vertex AI Search の医療データストアにデータを最初にインポートした後、ソースの FHIR ストアで次のいずれかの更新を行った可能性があります。

  • 新しい FHIR リソースを追加しました
  • 既存の FHIR リソースを更新しました
  • 削除された FHIR リソース

このような場合は、ソース FHIR ストアから Vertex AI Search ヘルスケア データストアに変更を調整できます。

調整の概要

変更の調整は、増分または完全な方法で行うことができます。次の表に、2 つのモードの比較を示します。

ソース FHIR ストアの変更 増分モード フルモード
新しい FHIR リソース Vertex AI Search データストアに新しいドキュメントを追加します。 Vertex AI Search データストアに新しいドキュメントを追加します。
FHIR リソースの更新 ドキュメント ID を保持しながら、Vertex AI Search データストア内の既存のドキュメントを置き換えます。 ドキュメント ID を保持しながら、Vertex AI Search データストア内の既存のドキュメントを置き換えます。
削除された FHIR リソース 調整されない Vertex AI Search データストアから対応するドキュメントを削除します。

始める前に

Google Cloud プロジェクトの割り当てと上限を確認します。Vertex AI Search の医療データストアには、プロジェクトごとに最大 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: Vertex AI Search データストアの 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: Vertex AI Search データストアの ID。
    • IMPORT_OPERATION_ID: import メソッドの呼び出し時に返される長時間実行オペレーションのオペレーション ID。

Python

詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。

Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。

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)