Actualiser les données de santé

Après l'importation initiale de données dans votre data store de santé Vertex AI Search, vous avez peut-être effectué l'une des mises à jour suivantes dans votre data store FHIR source:

  • Ajout de nouvelles ressources FHIR
  • Mise à jour des ressources FHIR existantes
  • Ressources FHIR supprimées

Dans ce cas, vous pouvez réconcilier les modifications de votre magasin FHIR source dans votre data store de données de santé Vertex AI Search.

Présentation du rapprochement

Vous pouvez rapprocher les modifications de manière incrémentielle ou complète. Les deux modes sont comparés dans le tableau suivant.

Modifications apportées au datastore FHIR source Mode incrémentiel Mode complet
Nouvelles ressources FHIR Ajoute de nouveaux documents au data store Vertex AI Search Ajoute de nouveaux documents au data store Vertex AI Search
Ressources FHIR mises à jour Remplace les documents existants dans le data store Vertex AI Search tout en conservant l'ID du document. Remplace les documents existants dans le data store Vertex AI Search tout en conservant l'ID du document.
Ressources FHIR supprimées ne sont pas conciliées ; Supprime les documents correspondants de votre data store Vertex AI Search.

Avant de commencer

Consultez les quotas et limites de votre projet Google Cloud . Votre data store de santé Vertex AI Search peut contenir un maximum d'un million de documents par projet. Si ce quota est atteint pendant l'importation, le processus d'importation s'arrête.

Effectuer une importation incrémentielle

L'exemple suivant montre comment importer des modifications incrémentielles à partir d'un magasin FHIR de l'API Cloud Healthcare à l'aide de la méthode documents.import.

Accordez les autorisations suivantes ou les rôles Identity and Access Management (IAM) suivants au compte de service service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com.

  1. Effectuez une importation incrémentielle.

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

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre Google Cloud projet.
    • DATA_STORE_ID: ID du data store Vertex AI Search.
    • CLOUD_HEALTHCARE_DATASET_ID: ID de l'ensemble de données de l'API Cloud Healthcare contenant le magasin FHIR source.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: emplacement de l'ensemble de données de l'API Cloud Healthcare contenant le magasin FHIR source.
    • FHIR_STORE_ID: ID du magasin FHIR R4 de l'API Cloud Healthcare.

    Vous devriez recevoir une réponse JSON semblable à la suivante. La réponse contient un identifiant pour une opération de longue durée. Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre un temps considérable. Notez la valeur de IMPORT_OPERATION_ID. Vous avez besoin de cette valeur pour vérifier l'état de l'importation.

      {
        "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. Vérifiez si l'opération d'importation des données FHIR est terminée.

    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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre Google Cloud projet.
    • DATA_STORE_ID: ID du data store Vertex AI Search.
    • IMPORT_OPERATION_ID: ID de l'opération de longue durée renvoyé lorsque vous appelez la méthode import.

    Vous devriez recevoir une réponse JSON semblable à la suivante. L'opération d'importation est une opération de longue durée. Pendant l'exécution de l'opération, la réponse contient les champs suivants:

    • successCount: indique le nombre de ressources FHIR importées jusqu'à présent.
    • failureCount: indique le nombre de ressources FHIR qui n'ont pas pu être importées jusqu'à présent. Ce champ ne s'affiche que si l'importation de certaines ressources FHIR a échoué.

    Une fois l'opération terminée, la réponse contient les champs suivants:

    • successCount: indique le nombre de ressources FHIR importées avec succès.
    • failureCount: indique le nombre de ressources FHIR dont l'importation a échoué. Ce champ ne s'affiche que si l'importation de certaines ressources FHIR a échoué.
    • totalCount: indique le nombre de ressources FHIR présentes dans le magasin FHIR source. Ce champ ne s'affiche que si l'importation de certaines ressources FHIR a échoué.
    • done: a la valeur true pour indiquer que l'opération d'importation est terminée
    • errorSamples: fournit des informations sur les ressources dont l'importation a échoué. Ce champ ne s'affiche que si l'importation de certaines ressources FHIR a échoué.
    • errorConfig: fournit un chemin d'accès à un emplacement Cloud Storage contenant le fichier journal récapitulatif des erreurs.
    {
     "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"
       }
     }
    }
    

Pour en savoir plus, consultez la documentation de référence de l'API Python Vertex AI Agent Builder.

Pour vous authentifier auprès de Vertex AI Agent Builder, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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)