Créer un data store de recherche dans le secteur de la santé

Pour rechercher des données cliniques dans Vertex AI Search, vous pouvez suivre l'un des workflows suivants:

  • Créez un data store de santé, importez des données FHIR R4 dans le data store, associez-le à une application de recherche de services de santé et interrogez les données cliniques.
  • Créez une application de recherche dans le secteur de la santé, créez un data store dans le secteur de la santé et importez des données FHIR R4 dans le data store lors du processus de création de l'application, puis interrogez les données cliniques. Pour en savoir plus, consultez Créer une application de recherche de services de santé.

Cette page décrit la première méthode.

À propos de la fréquence d'importation des données

Vous pouvez importer des données FHIR R4 dans un data store de plusieurs façons:

  • Importation par lots: importation ponctuelle. Les données sont importées dans un data store. Pour d'autres importations incrémentielles, consultez Actualiser les données de santé.

  • Importation par flux (version Preview): importation de données par flux en quasi-temps réel. Toutes les modifications incrémentielles apportées au magasin FHIR source sont synchronisées dans le data store Vertex AI Search. Le streaming nécessite un connecteur de données, qui est un type de data store contenant une entité. Une entité est également une instance de data store.

    Le débit de streaming de données d'un projet Google Cloud donné dépend des quotas suivants. Si vous dépassez le quota, vous risquez de rencontrer des retards de streaming.

    • Nombre d'écritures en streaming FHIR ou BigQuery en attente par minute. Pour en savoir plus, consultez la page Quotas et limites.
    • Nombre d'opérations de lecture FHIR par minute et par région. Pour en savoir plus, consultez la page Quotas FHIR de l'API Cloud Healthcare.

Vous pouvez sélectionner la fréquence d'importation des données au moment de la création du data store. Vous ne pourrez plus modifier cette configuration par la suite.

L'importation en streaming est disponible pour toutes les ressources compatibles avec Vertex AI Search. Pour en savoir plus, consultez la documentation de référence sur le schéma de données FHIR R4 pour les soins de santé.

Avant de commencer

Avant de créer le data store de santé et d'y importer des données, remplissez les conditions suivantes:

  • Découvrez la relation entre les applications et les datastores pour la recherche de prestataires de santé. Pour en savoir plus, consultez À propos des applications et des datastores.

  • Préparez vos données FHIR pour l'ingestion.

  • Vertex AI Search pour le secteur de la santé ne fournit des services de recherche que dans la multirégion des États-Unis (us). Par conséquent, votre application de recherche dans le secteur de la santé et vos data stores doivent se trouver dans la multirégion us.

Créer un data store

Vous pouvez créer un data store dans la console Google Cloud ou à l'aide de l'API. Les deux approches diffèrent comme suit:

  • Dans la console Google Cloud: sélectionnez le magasin FHIR source dans l'API Cloud Healthcare et importez les données FHIR dans le cadre du processus de création du magasin de données de recherche dans le domaine de la santé. Pour diffuser des données FHIR (version Preview), votre magasin FHIR source doit se trouver dans le même projet Google Cloud que le data store Vertex AI Search de destination.
  • Via l'API REST: vous pouvez importer des données FHIR à partir d'un magasin FHIR de l'API Cloud Healthcare situé dans le même projet Google Cloud ou dans un autre.
    1. Utilisez la méthode dataStores.create pour créer un data store de santé.
    2. Utilisez la méthode documents.import pour spécifier le magasin FHIR dans l'API Cloud Healthcare et importer des données FHIR R4.

Pour créer un data store de santé, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Agent Builder.

    Agent Builder

  2. Dans le menu de navigation, cliquez sur Data stores (Datastores).

  3. Cliquez sur  Créer un datastore.

  4. Dans le volet Sélectionner une source de données, sélectionnez API Healthcare (FHIR) comme source de données.
  5. Pour importer des données depuis votre store FHIR, procédez comme suit :
    • Sélectionnez le magasin FHIR dans la liste des magasins FHIR disponibles :
      1. Développez le champ Magasin FHIR.
      2. Dans cette liste, sélectionnez un ensemble de données situé dans un emplacement autorisé, puis un magasin FHIR qui utilise la version R4 de FHIR.

        Pour diffuser des données FHIR (version Preview), votre magasin FHIR source doit se trouver dans le même projet Google Cloud que le data store Vertex AI Search de destination.

    • Saisissez le magasin FHIR manuellement :
      1. Développez le champ Magasin FHIR.
      2. Cliquez sur Saisir le magasin FHIR manuellement.
      3. Dans la boîte de dialogue Nom du magasin FHIR, saisissez le nom complet du magasin FHIR au format suivant:

        project/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

      4. Cliquez sur Enregistrer.
  6. Dans la section Synchronisation, sélectionnez l'une des options suivantes. Une fois le data store créé, cette sélection ne peut plus être modifiée.
    • Uniquement: pour effectuer une importation de données par lot unique. Pour d'autres importations incrémentielles, consultez Actualiser les données de santé.
    • Streaming: pour effectuer une importation de données en streaming en quasi-temps réel. Pour diffuser des données, vous devez créer un connecteur de données, qui est un type de data store. Il s'agit d'une fonctionnalité en preview. Pour configurer un data store en streaming à l'aide de l'API REST, contactez votre ingénieur client.
  7. Dans la section Quel est le schéma de ces données ?, sélectionnez l'une des options suivantes :
    • Schéma prédéfini Google: permet de conserver les configurations de schéma définies par Google, telles que l'indexabilité, la recherche et la récupération, pour les ressources et éléments FHIR compatibles. Une fois que vous avez sélectionné cette option, vous ne pouvez plus mettre à jour le schéma après avoir créé le data store. Si vous souhaitez pouvoir modifier le schéma après la création du data store, sélectionnez l'option Schéma personnalisé (preview).
      1. Cliquez sur Continuer.
      2. Dans le champ Nom de votre data store, saisissez un nom pour votre data store.
      3. Cliquez sur Créer.
      4. Le data store que vous avez créé est listé sur la page Datastores (Datastores).

    • Schéma personnalisé (version Preview): permet de définir vos propres configurations de schéma, telles que l'indexabilité, la recherche et la récupération, pour les ressources et éléments FHIR compatibles. Il s'agit d'une fonctionnalité en preview. Pour configurer un schéma configurable, contactez votre ingénieur client.
      1. Cliquez sur Continuer.
      2. Examinez le schéma, développez chaque champ et modifiez les paramètres de champ.
      3. Cliquez sur Ajouter des champs pour ajouter des champs aux ressources FHIR compatibles. Vous ne pouvez pas supprimer les champs fournis dans le schéma défini par Google.
      4. Cliquez sur Continuer.
      5. Dans le champ Nom de votre connecteur de données, saisissez un nom pour votre connecteur de données.
      6. Cliquez sur Créer.
      7. Le connecteur de données que vous avez créé est listé sur la page Datastores (Datastores). Le magasin FHIR source est ajouté en tant qu'entité dans le connecteur de données.

  8. Cliquez sur Continuer.

REST

  1. Créez un data store.

    curl -X POST\
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json"\
     -H "X-Goog-User-Project: PROJECT_ID" \
    "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
     -d '{
        "displayName": "DATA_STORE_DISPLAY_NAME",
        "industryVertical": "HEALTHCARE_FHIR",
        "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
        "searchTier": "STANDARD",
        "searchAddOns": ["LLM"]
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store Vertex AI Search que vous souhaitez créer. Cet identifiant ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher du data store Vertex AI Search que vous souhaitez créer.
  2. Si le magasin FHIR source et le data store Vertex AI Search cible se trouvent dans le même projet Google Cloud, appelez la méthode suivante pour effectuer une importation par lot unique. Si ce n'est pas le cas, passez à l'étape suivante.

    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": "FULL",
       "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 projet Google Cloud
    • 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.
  3. Si le magasin FHIR source et le data store de recherche Vertex AI cible se trouvent dans des projets Google Cloud différents, appelez la méthode suivante pour effectuer une importation par lot unique. S'ils font partie du même projet, revenez à l'étape précédente.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "X-Goog-User-Project: TARGET_PROJECT_ID" \
    "https://us-discoveryengine.googleapis.com/v1alpha/projects/TARGET_PROJECT_ID/locations/us/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
       "reconciliation_mode": "FULL",
       "fhir_store_source": {"fhir_store": "projects/SOURCE_PROJECT_ID/locations/CLOUD_HEALTHCARE_DATASET_LOCATION/datasets/CLOUD_HEALTHCARE_DATASET_ID/fhirStores/FHIR_STORE_ID"}
    }'
    

    Remplacez les éléments suivants :

    • TARGET_PROJECT_ID: ID du projet Google Cloud contenant le data store Vertex AI Search.
    • DATA_STORE_ID: ID du data store Vertex AI Search.
    • SOURCE_PROJECT_ID: ID du projet Google Cloud contenant l'ensemble de données de l'API Cloud Healthcare et le magasin FHIR.
    • 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.
  4. Facultatif: Pour configurer une importation de données en streaming (version Preview) à l'aide de l'API REST, contactez votre ingénieur client.

Python

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

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

Créer un data store


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: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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)

Vérifier la création du data store et l'importation des données FHIR

Cette tâche vous explique comment vérifier si un data store a bien été créé et si les données FHIR ont bien été importées dans le data store.

  • Dans la console Google Cloud: sélectionnez le data store et vérifiez ses détails.
  • Via l'API REST :
    1. Utilisez la méthode dataStores.get pour obtenir les détails du data store de santé.
    2. Utilisez la méthode operations.get pour obtenir les détails de l'opération d'importation.

Pour vérifier la création du data store et l'importation des données, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Agent Builder.

    Agent Builder

  2. Dans le menu de navigation, cliquez sur Data stores (Datastores).

    La page Datastores affiche la liste des datastores de votre projet Google Cloud, avec leurs détails.

  3. Vérifiez si le data store ou le connecteur de données que vous avez créés figurent dans la liste des data stores.

  4. Sélectionnez le data store ou le connecteur de données, puis vérifiez ses informations.

    • Pour un data store :
      • Le tableau récapitulatif contient les informations suivantes :
        • ID, type et région du data store
        • Nombre de documents indiquant le nombre de ressources FHIR importées.
        • Code temporel du dernier document importé.
        • Vous pouvez également cliquer sur Afficher les détails pour afficher les détails de l'importation de documents, comme les informations sur une importation réussie, partielle ou échouée.
      • L'onglet Documents répertorie les ID de ressources des ressources FHIR importées et leurs types de ressources dans un tableau paginé. Vous pouvez filtrer ce tableau pour vérifier si une ressource spécifique a été importée.
      • L'onglet Activité liste les détails de l'importation de documents, comme les détails d'une importation réussie, partielle ou échouée.
    • Pour un connecteur de données :
      • Le tableau récapitulatif contient les informations suivantes :
        • ID, type et région de la collection
        • Nom de l'application connectée.
        • État du connecteur, qui est actif ou mis en veille.
      • Le tableau Entités affiche l'entité dans le connecteur de données. Le nom de l'entité correspond au nom du magasin FHIR source. L'ID de l'entité correspond à l'ID du connecteur de données suivi du nom du magasin FHIR source.
        • Cliquez sur le nom de l'entité pour voir ses détails. Étant donné qu'une entité est une instance de data store dans un connecteur de données, les informations de l'entité sont les mêmes que celles d'un data store.
  5. Dans l'onglet Schéma, affichez les propriétés des ressources et éléments FHIR compatibles. Cliquez sur Modifier pour configurer le schéma. Il s'agit d'une fonctionnalité en version Preview privée. Pour configurer un schéma configurable, contactez votre ingénieur client.

REST

  1. Vérifiez la création du data store.

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json"\
     -H "X-Goog-User-Project: PROJECT_ID" \
     "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store Vertex AI Search.
  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 projet Google Cloud
    • 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

Étape suivante