Aggiornare i dati sanitari

Dopo l'importazione iniziale dei dati nell'archivio dei dati sanitari di Vertex AI Search, potresti aver eseguito uno dei seguenti aggiornamenti nell'archivio FHIR di origine:

  • Sono state aggiunte nuove risorse FHIR
  • Risorse FHIR esistenti aggiornate
  • Risorse FHIR eliminate

In questi casi, puoi riconciliare le modifiche dall'archivio FHIR di origine nel tuo datastore dei dati sanitari di Vertex AI Search.

Panoramica della riconciliazione

Puoi riconciliare le modifiche in modo incrementale o completo. Le due modalità sono messe a confronto nella tabella seguente.

Modifiche al datastore FHIR di origine Modalità incrementale Modalità completa
Nuove risorse FHIR Aggiunge nuovi documenti al datastore di Vertex AI Search Aggiunge nuovi documenti al datastore di Vertex AI Search
Risorse FHIR aggiornate Sostituisce i documenti esistenti nel data store di Vertex AI Search mantenendo l'ID documento Sostituisce i documenti esistenti nel data store di Vertex AI Search mantenendo l'ID documento
Risorse FHIR eliminate Non si riconcilia Rimuove i documenti corrispondenti dal tuo datastore Vertex AI Search

Prima di iniziare

Esamina le quote e i limiti per il tuo Google Cloud progetto. Il datastore dei dati sanitari di Vertex AI Search può contenere al massimo 1 milione di documenti per progetto. Se questa quota viene raggiunta durante l'importazione, il processo di importazione viene interrotto.

Eseguire un'importazione incrementale

L'esempio seguente mostra come importare le modifiche incrementali da un archivio FHIR dell'API Cloud Healthcare utilizzando il metodo documents.import.

Concedi le seguenti autorizzazioni o i seguenti ruoli Identity and Access Management (IAM) all'account di servizio service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com.

RESTPython
  1. Esegui un'importazione incrementale.

    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"}
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID dello spazio dati di Vertex AI Search.
    • CLOUD_HEALTHCARE_DATASET_ID: l'ID del set di dati dell'API Cloud Healthcare che contiene l'archivio FHIR di origine.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: la posizione del set di dati dell'API Cloud Healthcare che contiene il datastore FHIR di origine.
    • FHIR_STORE_ID: l'ID dello spazio di archiviazione FHIR R4 dell'API Cloud Healthcare.

    Dovresti ricevere una risposta JSON simile alla seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione. Le operazioni a lunga esecuzione vengono restituite quando il completamento delle chiamate ai metodi potrebbe richiedere molto tempo. Prendi nota del valore di IMPORT_OPERATION_ID. Questo valore è necessario per verificare lo stato dell'importazione.

      {
        "name": "projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/operations/IMPORT_OPERATION_ID",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsMetadata"
        }
      }
    
  2. Verifica che l'operazione di importazione dei dati FHIR sia completata.

    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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID dello spazio dati di Vertex AI Search.
    • IMPORT_OPERATION_ID: l'ID operazione dell'operazione a lunga esecuzione restituito quando chiami il metodo import.

    Dovresti ricevere una risposta JSON simile alla seguente. L'operazione di importazione è un'operazione a lunga esecuzione. Durante l'esecuzione dell'operazione, la risposta contiene i seguenti campi:

    • successCount: indica il numero di risorse FHIR importate correttamente finora.
    • failureCount: indica il numero di risorse FHIR che non è stato possibile importare finora. Questo campo viene visualizzato solo se sono presenti risorse FHIR di cui non è stata completata l'importazione.

    Al termine dell'operazione, la risposta contiene i seguenti campi:

    • successCount: indica il numero di risorse FHIR importate correttamente.
    • failureCount: indica il numero di risorse FHIR di cui non è stato possibile completare l'importazione. Questo campo viene visualizzato solo se sono presenti risorse FHIR di cui non è stata completata l'importazione.
    • totalCount: indica il numero di risorse FHIR presenti nell'archivio FHIR di origine. Questo campo viene visualizzato solo se sono presenti risorse FHIR di cui non è stata completata l'importazione.
    • done: ha il valore true per indicare che l'operazione di importazione è completata
    • errorSamples: fornisce informazioni sulle risorse di cui non è riuscita l'importazione. Questo campo viene visualizzato solo se sono presenti risorse FHIR di cui non è stata completata l'importazione.
    • errorConfig: fornisce un percorso a una posizione di Cloud Storage contenente il file di log di riepilogo degli errori.
    {
     "name": "projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/operations/IMPORT_OPERATION_ID",
     "metadata": {
       "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsMetadata",
       "createTime": "START_TIMESTAMP",
       "updateTime": "END_TIMESTAMP",
       "successCount": "SUCCESS_COUNT",
       "failureCount": "FAILURE_COUNT",
       "totalCount": "TOTAL_COUNT",
     },
     "done": true,
     "response": {
       "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsResponse",
      "errorSamples": [ERROR_SAMPLE],
      "errorConfig": {
         "gcsPrefix": "LOG_FILE_LOCATION"
       }
     }
    }
    

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI Agent Builder.

Per autenticarti in Vertex AI Agent Builder, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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)