의료 데이터 새로고침

Vertex AI Search 의료 데이터 스토어로 데이터를 처음 가져온 후 소스 FHIR 스토어에서 다음 업데이트를 수행했을 수 있습니다.

  • 새 FHIR 리소스 추가
  • 기존 FHIR 리소스 업데이트
  • FHIR 리소스 삭제

이 경우 소스 FHIR 스토어의 변경사항을 Vertex AI Search 의료 데이터 스토어로 조정할 수 있습니다.

조정 개요

변경사항을 점진적으로 또는 전체적으로 조정할 수 있습니다. 두 모드는 다음 표에 비교되어 있습니다.

소스 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)