Crea un datastore di ricerca sanitaria

Per cercare i dati clinici in Vertex AI Search, puoi seguire uno di questi flussi di lavoro:

  • Crea un datastore sanitario, importa i dati FHIR R4 nel datastore, collegalo a un'app di ricerca sanitaria ed esegui query sui dati clinici.
  • Crea un'app di ricerca sanitaria, un datastore sanitari e importa i dati FHIR R4 nel datastore durante la procedura di creazione dell'app, quindi esegui query sui dati clinici. Per ulteriori informazioni, vedi Creare un'app di ricerca sanitaria.

Questa pagina descrive il primo metodo.

Informazioni sulla frequenza di importazione dei dati

Puoi importare i dati FHIR R4 in un datastore nei seguenti modi:

  • Importazione collettiva: un'importazione una tantum. I dati vengono importati in un datastore. Per altre importazioni incrementali, consulta Aggiornare i dati sanitari.

  • Importazione streaming (anteprima): un'importazione di dati in streaming quasi in tempo reale. Eventuali modifiche incrementali nell'archivio FHIR di origine vengono sincronizzate nell'datastore di Vertex AI Search. Lo streaming richiede un connettore dati, che è un tipo di datastore contenente un'entità. Un'entità è anche un'istanza di un datastore.

    La frequenza di streaming dei dati per un determinato progetto Google Cloud dipende dalle seguenti quote. Se superi la quota, potresti riscontrare ritardi nello streaming.

    • Il numero di scritture in attesa di FHIR o BigQuery streaming al minuto. Per ulteriori informazioni, consulta Quote e limiti.
    • Il numero di operazioni di lettura FHIR al minuto per regione. Per ulteriori informazioni, consulta le quote FHIR dell'API Cloud Healthcare.

Puoi selezionare la frequenza di importazione dei dati al momento della creazione datastore e non puoi modificare questa configurazione in un secondo momento.

L'importazione in streaming è disponibile per tutte le risorse supportate da Vertex AI Search. Per ulteriori informazioni, consulta la documentazione di riferimento dello schema di dati FHIR R4 per la salute.

Prima di iniziare

Prima di creare il datastore sanitario e importarvi i dati, completa i seguenti requisiti:

  • Comprendi la relazione tra app e datastore per la ricerca sanitaria. Per ulteriori informazioni, consulta Informazioni su app e datastore.

  • Prepara i dati FHIR per l'importazione.

  • Vertex AI Search per la sanità fornisce servizi di ricerca solo nella regione multipla degli Stati Uniti (us). Pertanto, l'app di ricerca sanitaria e i datastore devono trovarsi nella regione multipla us.

Crea un datastore

Puoi creare un datastore nella console Google Cloud o utilizzando l'API. I due approcci differiscono nel seguente modo:

  • Nella console Google Cloud: seleziona l'archivio FHIR di origine nell'API Cloud Healthcare e importa i dati FHIR nell'ambito della procedura di creazione del datastore di dati di ricerca sanitaria. Per eseguire lo streaming dei dati FHIR (anteprima), l'archivio FHIR di origine deve trovarsi nello stesso progetto Google Cloud dell'datastore Vertex AI Search di destinazione.
  • Tramite l'API REST: puoi importare i dati FHIR da un archivio FHIR dell'API Cloud Healthcare nello stesso progetto Google Cloud o in un altro.
    1. Utilizza il metodo dataStores.create per creare un datastore sanitario.
    2. Utilizza il metodo documents.import per specificare l'archivio FHIR nell'API Cloud Healthcare e importare i dati FHIR R4.

Per creare un datastore per la salute, completa i seguenti passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nel riquadro Seleziona un'origine dati, seleziona API Healthcare (FHIR) come origine dati.
  5. Per importare i dati dal tuo archivio FHIR, esegui una delle seguenti operazioni:
    • Seleziona l'archivio FHIR dall'elenco degli archivi FHIR disponibili:
      1. Espandi il campo Datastore FHIR.
      2. In questo elenco, seleziona un set di dati che si trova in una posizione consentita e poi seleziona un archivio FHIR che utilizzi la versione R4 di FHIR.

        Per eseguire lo streaming dei dati FHIR (anteprima), l'archivio FHIR di origine deve essere nello stesso progetto Google Cloud del datastore Vertex AI Search di destinazione.

    • Inserisci manualmente l'archivio FHIR:
      1. Espandi il campo Datastore FHIR.
      2. Fai clic su Inserisci manualmente l'archivio FHIR.
      3. Nella finestra di dialogo Nome dell'archivio FHIR, inserisci il nome completo dell'archivio FHIR nel seguente formato:

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

      4. Fai clic su Salva.
  6. Nella sezione Sincronizzazione, seleziona una delle seguenti opzioni. Questa selezione non può essere modificata dopo la creazione del datastore.
    • Una tantum: per eseguire un'importazione collettiva dei dati una tantum. Per ulteriori Importazioni incrementali, consulta Aggiornare i dati sanitari.
    • Streaming: per eseguire un'importazione di dati in streaming quasi in tempo reale. Per eseguire lo streaming dei dati, devi creare un connettore dati, che è un tipo di datastore. Questa è una funzionalità in anteprima. Per configurare un datastore in streaming utilizzando l'API REST, contatta il tuo Customer Engineer.
  7. Nella sezione Qual è lo schema per questi dati?, seleziona una di queste opzioni:
    • Schema predefinito di Google: per mantenere le configurazioni dello schema definite da Google, ad esempio l'indicizzazione, la ricerca e il recupero, per le risorse e gli elementi FHIR supportati. Una volta selezionata questa opzione, non puoi aggiornare lo schema dopo aver creato il datastore. Se vuoi essere in grado di modificare lo schema dopo la creazione del datastore, seleziona l'opzione Schema personalizzato (anteprima).
      1. Fai clic su Continua.
      2. Nel campo Nome del tuo datastore, inserisci un nome per il datastore.
      3. Fai clic su Crea.
      4. Il datastore che hai creato è elencato nella pagina Datastore.

    • Schema personalizzato (anteprima): per definire le tue configurazioni dello schema, ad esempio l'indicizzazione, la ricercabilità e il recupero, per le risorse e gli elementi FHIR supportati. Questa è una funzionalità in anteprima. Per configurare uno schema configurabile, contatta il tuo Customer Engineer.
      1. Fai clic su Continua.
      2. Esamina lo schema, espandi ogni campo e modifica le impostazioni.
      3. Fai clic su Aggiungi nuovi campi per aggiungere nuovi campi alle risorse FHIR supportate. Non puoi rimuovere i campi forniti nello schema definito da Google.
      4. Fai clic su Continua.
      5. Nel campo Nome del connettore dati, inserisci un nome per il connettore dati.
      6. Fai clic su Crea.
      7. Il connettore dati che hai creato è elencato nella pagina Datastore. L'archivio FHIR di origine viene aggiunto come entità all'interno del connettore di dati.

  8. Fai clic su Continua.

REST

  1. Crea un datastore.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID del datastore di Vertex AI Search che vuoi creare. Questo ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DATA_STORE_DISPLAY_NAME: il nome visualizzato del datastore di ricerca Vertex AI che vuoi creare.
  2. Se l'archivio FHIR di origine e l'datastore Vertex AI Search di destinazione si trovano nello stesso progetto Google Cloud, chiama il seguente metodo per eseguire un'importazione collettiva una tantum. Se non si trovano nello stesso progetto, vai al passaggio successivo.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello datastore 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.
  3. Se l'archivio FHIR di origine e l'datastore Vertex AI Search di destinazione si trovano in progetti Google Cloud diversi, chiama il seguente metodo per eseguire un'importazione collettiva una tantum. Se si trovano nello stesso progetto, torna al passaggio precedente.

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

    Sostituisci quanto segue:

    • TARGET_PROJECT_ID: l'ID del progetto Google Cloud che contiene il datastore di Vertex AI Search.
    • DATA_STORE_ID: l'ID dello datastore di Vertex AI Search.
    • SOURCE_PROJECT_ID: l'ID del progetto Google Cloud che contiene il set di dati dell'API Cloud Healthcare e il repository FHIR.
    • 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 contenente il datastore FHIR di origine.
    • FHIR_STORE_ID: l'ID dello spazio di archiviazione FHIR R4 dell'API Cloud Healthcare.
  4. (Facoltativo) Per configurare un'importazione di dati in streaming (anteprima) utilizzando l'API REST, contatta il tuo esperto dei clienti.

Python

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.

Crea un datastore


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

Importa documenti

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)

Verifica la creazione del datastore e l'importazione dei dati FHIR

Questa operazione mostra come verificare se un datastore è stato creato correttamente e se i dati FHIR sono stati importati correttamente nel datastore.

  • Nella console Google Cloud, seleziona l'datastore e verifica i relativi dettagli.
  • Tramite l'API REST:
    1. Utilizza il metodo dataStores.get per ottenere i dettagli del datastore sanitario.
    2. Utilizza il metodo operations.get per ottenere i dettagli dell'operazione di importazione.

Per verificare la creazione e l'importazione dei dati del datastore, completa i seguenti passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

  2. Nel menu di navigazione, fai clic su Datastore.

    La pagina Datastore mostra un elenco di datastore nel progetto Google Cloud con i relativi dettagli.

  3. Verifica che il datastore o il connettore dati che hai creato sia nell'elenco dei datastore.

  4. Seleziona il datastore o il connettore dati e verifica i relativi dettagli.

    • Per un datastore:
      • La tabella di riepilogo elenca i seguenti dettagli:
        • L'ID, il tipo e la regione del datastore.
        • Il numero di documenti che indica il numero di risorse FHIR importate.
        • Il timestamp dell'ultima importazione del documento.
        • Se vuoi, fai clic su Visualizza dettagli per visualizzare i dettagli dell'importazione dei documenti, ad esempio i dettagli di un'importazione riuscita, parziale o non riuscita.
      • La scheda Documenti elenca gli ID delle risorse FHIR importate e i relativi tipi di risorse in una tabella paginata. Puoi filtrare questa tabella per verificare se è stata importata una determinata risorsa.
      • La scheda Attività elenca i dettagli dell'importazione dei documenti, ad esempio i dettagli su un'importazione riuscita, parziale o non riuscita.
    • Per un connettore dati:
      • La tabella di riepilogo elenca i seguenti dettagli:
        • L'ID, il tipo e la regione della raccolta.
        • Il nome dell'app collegata.
        • Lo stato del connettore, che può essere attivo o in pausa.
      • La tabella Entità mostra l'entità all'interno del connettore dati. Il nome dell'entità corrisponde al nome dell'archivio FHIR di origine. L'ID dell'entità è l'ID del connettore dati a cui è stato aggiunto il nome dell'archivio FHIR di origine.
        • Fai clic sul nome dell'entità per visualizzarne i dettagli. Poiché un'entità è un'istanza di un datastore all'interno di un connettore dati, i dettagli dell'entità sono gli stessi di un datastore.
  5. Nella scheda Schema, visualizza le proprietà per le risorse e gli elementi FHIR supportati. Fai clic su Modifica per configurare lo schema. Questa è una funzionalità di anteprima privata. Per configurare uno schema configurabile, contatta il tuo tecnico dedicato ai clienti.

REST

  1. Verifica la creazione del datastore.

    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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello datastore di Vertex AI Search.
  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 progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello datastore di Vertex AI Search.
    • IMPORT_OPERATION_ID: l'ID operazione dell'operazione a lunga esecuzione restituito quando chiami il metodo import

Passaggi successivi