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 de ces workflows :

  • Créez un datastore de données de santé, importez des données FHIR R4 dans le datastore, associez-le à une application de recherche de services de santé et interrogez les données cliniques.
  • Créer une application de recherche médicale, créer un data store de santé et y importer des données FHIR R4 le data store pendant le processus de création de l'application et interroger 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 datastore de plusieurs façons :

  • Importation par lots: une importation unique. 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 datastore contenant une entité. Une entité est aussi un Cloud 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 datastore. Vous ne pourrez pas modifier cette configuration par la suite.

L'importation en flux continu est disponible pour toutes les ressources dans Vertex AI Search. Pour en savoir plus, consultez la documentation de référence sur le schéma de données FHIR R4 Healthcare.

Avant de commencer

Avant de créer le datastore de données 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 data stores.

  • 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 le Emplacement multirégional des États-Unis (us). Par conséquent, votre application de recherche médicale et vos data stores doit se trouver dans l'emplacement multirégional us.

Créer un data store

Vous pouvez créer un data store dans la console Google Cloud ou à l'aide de l'API. La deux approches diffèrent de la manière suivante:

  • Dans la console Google Cloud: sélectionnez le store FHIR source dans L'API Cloud Healthcare permet d'importer des données FHIR dans les données de recherche médicales de création de boutique. 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 les dataStores.create pour créer un data store de santé.
    2. Utilisez les documents.import permettant de spécifier le store FHIR dans l'API Cloud Healthcare et d'importer des données FHIR Données 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 qui se trouve dans un emplacement autorisé puis sélectionnez un store FHIR qui utilise FHIR version R4.

        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 store 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 store FHIR, saisissez le nom complet du store 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: permet d'importer des flux de données en temps quasi réel. Pour diffuser des données, vous devez créer un connecteur de données, qui est un type de magasin de données. Il s'agit d'une fonctionnalité en preview. Pour configurer un entrepôt de données 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 datastore. Si vous voulez être modifier le schéma après la création du data store, sélectionnez Option Schéma personnalisé (preview).
      1. Cliquez sur Continuer.
      2. Dans le champ Nom de data store datastore, saisissez le nom de votre data store.
      3. Cliquez sur Créer.
      4. Le data store que vous avez créé est répertorié sur la page Data stores.

    • 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 une configuration contactez votre ingénieur client.
      1. Cliquez sur Continuer.
      2. Examinez le schéma, développez chaque champ et modifiez le champ paramètres.
      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 store FHIR source est ajouté en tant qu'entité dans les données le connecteur.

  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 magasin de données 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 store FHIR source.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: emplacement de l'ensemble de données de l'API Cloud Healthcare contenant le store FHIR source.
    • FHIR_STORE_ID : ID du magasin FHIR R4 de l'API Cloud Healthcare.
  3. Si le store FHIR source et le data store Vertex AI Search cible se trouvent dans des projets Google Cloud différents, appelez la méthode suivante pour effectuer une importation par lot ponctuelle. 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 de l'instance Google Cloud Projet contenant l'ensemble de données et le store FHIR de l'API Cloud Healthcare.
    • CLOUD_HEALTHCARE_DATASET_ID: ID de l'ensemble de données de l'API Cloud Healthcare contenant le store FHIR source.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: L'emplacement de l'ensemble de données de l'API Cloud Healthcare contenant le store FHIR source
    • FHIR_STORE_ID : ID du magasin FHIR R4 de l'API Cloud Healthcare.
  4. Facultatif: Pour configurer une importation de flux de données (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 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 de données FHIR

Cette tâche vous montre comment vérifier si un data store a é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 magasin de données et vérifiez ses détails.
  • Via l'API REST :
    1. Utilisez la méthode dataStores.get pour obtenir les détails du datastore de données 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 datastore 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 (Magasins de données).

    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 magasin de données ou le connecteur de données, puis vérifiez ses informations.

    • Pour un datastore :
      • 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 consulter les détails de l'importation du document, tels que que les détails concernant une importation réussie, partielle ou ayant échoué.
      • 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 associée.
        • État du connecteur (actif ou mis en pause).
      • 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 auquel est ajouté le nom du magasin FHIR source.
        • Cliquez sur le nom de l'entité pour voir ses détails. Parce qu'un entité est une instance de data store au sein d'un connecteur de données, Les détails d'une entité sont les mêmes que ceux d'un data store.
  5. Dans l'onglet Schéma, affichez les propriétés des ressources FHIR prises en charge. et éléments. Cliquez sur Modifier pour configurer le schéma. Ceci est une conversation privée en preview. Pour configurer un schéma configurable, contactez votre ingénieur client.

REST

  1. Vérifier 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