医療データを更新する

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

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

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

調整の概要

変更は、増分または完全のいずれかで調整できます。次の表に、2 つのモードを比較します。

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

始める前に

実際のプロジェクトの割り当てと上限を確認します。 Google Cloud Agent Search ヘルスケア データストアには、プロジェクトごとに最大 100 万件のドキュメントを含めることができます。インポート中にこの割り当てに達すると、インポート プロセスは停止します。

増分インポートを実行する

次のサンプルは、Cloud Healthcare API FHIR ストアから増分 変更をインポートする方法を documents.import 示しています。

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: Agent 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: Agent Search データストアの ID。
    • IMPORT_OPERATION_ID: import メソッドを呼び出したときに返される長時間実行オペレーションのオペレーション ID。

Python

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

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

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)