Crea un almacén de datos de búsqueda de atención médica

Para buscar datos clínicos en Vertex AI Search, puedes seguir uno de estos flujos de trabajo:

  • Crear un almacén de datos de atención médica, importar datos de FHIR R4 al almacén de datos conectarla a una app de búsqueda de servicios de salud y consultar los datos clínicos.
  • Crea una app de búsqueda de atención médica, crea un almacén de datos de atención médica y, luego, importa datos de FHIR R4 al almacén de datos durante el proceso de creación de la app y consulta los datos clínicos. Para obtener más información, consulta Cómo crear una app de búsqueda de atención médica.

En esta página, se describe el primer método.

Acerca de la frecuencia de importación de datos

Puedes importar datos de FHIR R4 a un almacén de datos de las siguientes maneras:

  • Importación por lotes: Es una importación única. Los datos se importan a un almacén de datos. Para para más importaciones incrementales, consulta Actualiza los datos de atención médica.

  • Importación de transmisión (versión preliminar): Es una importación de datos de transmisión casi en tiempo real. Cualquier cambio incremental en el almacén de FHIR de origen se sincroniza en el almacén de datos de Vertex AI Search. La transmisión requiere un conector de datos, que es un tipo de almacén de datos que contiene una entidad. Una entidad también es un en una instancia de almacén de datos.

    La velocidad de transmisión de datos para un proyecto de Google Cloud determinado es dependiendo de las siguientes cuotas. Si superas la cuota, podrías experimentan demoras en la transmisión.

    • Es la cantidad de operaciones de escritura de transmisión pendientes de FHIR o BigQuery por minuto. Para obtener más información, consulta Cuotas y límites.
    • Es la cantidad de operaciones de lectura de FHIR por minuto por región. Para obtener más información, consulta Cuotas de FHIR de la API de Cloud Healthcare.

Puedes seleccionar la frecuencia de importación de datos en el momento de la creación del almacén de datos y no puedes cambiar esta configuración más adelante.

La importación de transmisión está disponible para todos los recursos que admite Vertex AI Search. Para obtener más información, consulta la Referencia de esquema de datos de FHIR R4 de Healthcare.

Antes de comenzar

Antes de crear el almacén de datos de atención médica y, luego, importarlos, completa estos pasos: requisitos:

  • Comprende la relación entre las apps y los almacenes de datos para la búsqueda de atención médica. Para obtener más información, consulta Acerca de las apps y los almacenes de datos.

  • Prepara tus datos de FHIR para la transferencia.

  • Vertex AI Search para atención médica proporciona servicios de búsqueda solo en el Multirregión de EE.UU. (us). Por lo tanto, tu app de búsqueda y almacenes de datos de atención médica debe residir en la multirregión us.

Crea un almacén de datos

Puedes crear un almacén de datos en la consola de Google Cloud o con la API. El dos enfoques difieren de la siguiente manera:

  • En la consola de Google Cloud, selecciona el almacén de FHIR de origen en la API de Cloud Healthcare y, luego, importa los datos de FHIR como parte del proceso de creación del almacén de datos de búsqueda de atención médica. Para transmitir datos de FHIR (vista previa), tu almacén de FHIR de origen debe estar en el mismo proyecto de Google Cloud que el destino almacén de datos de Vertex AI Search.
  • A través de la API de REST: puedes importar datos de FHIR desde un almacén de FHIR de la API de Cloud Healthcare que están en el mismo proyecto de Google Cloud o en uno diferente.
    1. Usa el método dataStores.create para crear un almacén de datos de atención médica.
    2. Usa el documents.import método para especificar el almacén de FHIR en la API de Cloud Healthcare y, luego, importar los FHIR Datos de R4.

Para crear un almacén de datos de atención médica, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Agent Builder.

    Agent Builder

  2. En el menú de navegación, haz clic en almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En el panel Selecciona una fuente de datos, elige API de Healthcare (FHIR) como tu fuente de datos.
  5. Para importar datos de tu almacén de FHIR, haz una de las siguientes acciones:
    • Selecciona el almacén de FHIR de la lista de almacenes de FHIR disponibles:
      1. Expande el campo Tienda de FHIR.
      2. En esta lista, selecciona un conjunto de datos que resida en una la ubicación permitida y Luego, selecciona un almacén de FHIR que use la versión R4 de FHIR.

        Para transmitir datos de FHIR (versión preliminar), tu almacén de FHIR de origen debe estar en el mismo proyecto de Google Cloud que el almacén de datos de destino de Vertex AI Search.

    • Ingresa el almacén de FHIR de forma manual:
      1. Expande el campo Tienda de FHIR.
      2. Haz clic en Ingresar almacén de FHIR manualmente.
      3. En el diálogo Nombre del almacén de FHIR, ingresa el nombre completo del almacén de FHIR en el siguiente formato:

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

      4. Haz clic en Guardar.
  6. En la sección Sincronización, selecciona una de las siguientes opciones. Esta selección no se puede cambiar después de crear el almacén de datos.
    • Única: Para realizar una importación de datos por lotes única. Para obtener más de las importaciones incrementales, consulta Actualiza los datos de atención médica.
    • Transmisión: Para realizar una importación de datos de transmisión casi en tiempo real. Para de transmisión de datos, debes crear un conector de datos, que es un tipo de en un almacén de datos. Esta es una función de versión preliminar. Configurar un almacén de datos de transmisión con la API de REST, comunícate con tu Ingeniero de Atención al cliente.
  7. En la sección ¿Cuál es el esquema para estos datos?, selecciona una de estas opciones:
    • Esquema predefinido de Google: Para conservar los parámetros de configuración de esquema definidos por Google, como indexabilidad, capacidad de búsqueda y recuperación y los recursos y elementos de FHIR. Una vez que selecciones esta opción, no podrás actualizar el esquema después de crear el almacén de datos. Si quieres estar cambiar el esquema después de crearlo, selecciona La opción Esquema personalizado (vista previa).
      1. Haga clic en Continuar.
      2. En el campo Nombre de tu almacén de datos, ingresa un nombre para tu almacén de datos.
      3. Haz clic en Crear.
      4. El almacén de datos que creaste aparece en la página Almacenes de datos.

    • Esquema personalizado (versión preliminar): Para definir tus propias configuraciones de esquemas, como la indexabilidad, la capacidad de búsqueda y la recuperabilidad, para los recursos y elementos de FHIR compatibles. Esta es una función de versión preliminar. Para configurar un esquema configurable, comunícate con tu ingeniero de atención al cliente.
      1. Haga clic en Continuar.
      2. Revisa el esquema, expande cada campo y edítalo configuración.
      3. Haz clic en Agregar nuevos campos para agregar nuevos campos recursos FHIR admitidos. No puedes quitar los campos proporcionados en el esquema definido por Google.
      4. Haga clic en Continuar.
      5. En el campo Nombre de tu conector de datos, ingresa un nombre para el conector.
      6. Haz clic en Crear.
      7. El conector de datos que creaste se muestra en la página Almacenes de datos. El almacén de FHIR de origen se agrega como una entidad dentro del conector de datos.

  8. Haga clic en Continuar.

REST

  1. Crea un almacén de datos.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search que deseas crear. Este ID solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
    • DATA_STORE_DISPLAY_NAME: Es el nombre visible de Vertex AI. Busca el almacén de datos que quieres crear.
  2. Si el almacén de FHIR de origen y el almacén de datos de destino de Vertex AI Search están en el mismo proyecto de Google Cloud, llama al siguiente método para realizar una importación por lotes única. Si no están en el mismo proyecto, ve al siguiente paso.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • CLOUD_HEALTHCARE_DATASET_ID: El ID del conjunto de datos de la API de Cloud Healthcare que contiene el almacén de FHIR de origen.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: Es la ubicación del conjunto de datos de la API de Cloud Healthcare que contiene el almacén de FHIR de origen.
    • FHIR_STORE_ID: Es el ID del almacén de FHIR R4 de la API de Cloud Healthcare.
  3. Si el almacén de FHIR de origen y el de destino de Vertex AI Search están en diferentes proyectos de Google Cloud, llama al siguiente método para realizar una importación por lotes por única vez. Si están en el mismo proyecto, vuelve al paso anterior.

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

    Reemplaza lo siguiente:

    • TARGET_PROJECT_ID: el ID de Google Cloud proyecto que contiene el almacén de datos de Vertex AI Search.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • SOURCE_PROJECT_ID: el ID de Google Cloud que contiene el conjunto de datos de la API de Cloud Healthcare y el almacén de FHIR.
    • CLOUD_HEALTHCARE_DATASET_ID: el ID del conjunto de datos de la API de Cloud Healthcare que contiene el almacén de FHIR de origen.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: Es la ubicación del conjunto de datos de la API de Cloud Healthcare que contiene el almacén de FHIR de origen.
    • FHIR_STORE_ID: Es el ID del almacén de FHIR R4 de la API de Cloud Healthcare.
  4. Opcional: Para configurar una importación de datos de transmisión (vista previa) con la API de REST, comunícate con el ingeniero de Atención al cliente.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python del compilador de agentes de Vertex AI.

Para autenticarte en Vertex AI Agent Builder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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 creación del almacén de datos y la importación de datos de FHIR

En esta tarea, se muestra cómo verificar si se creó un almacén de datos correctamente y si los datos de FHIR se importaron al almacén de datos correctamente.

  • En la consola de Google Cloud, selecciona el almacén de datos y verifica sus detalles.
  • A través de la API de REST:
    1. Usa el dataStores.get para obtener los detalles del almacén de datos de atención médica.
    2. Usa el método operations.get para obtener los detalles de la operación de importación.

Para verificar la creación del almacén de datos y la importación de datos, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Agent Builder.

    Agent Builder

  2. En el menú de navegación, haz clic en almacenes de datos.

    En la página Almacenes de datos, se muestra una lista de los almacenes de datos de tu proyecto de Google Cloud con sus detalles.

  3. Verifica si el almacén de datos o el conector de datos que creaste se encuentra en la lista de almacenes de datos.

  4. Selecciona el almacén de datos o el conector de datos y verifica sus detalles.

    • Para un almacén de datos:
      • La tabla de resumen incluye los siguientes detalles:
        • El ID, el tipo y la región del almacén de datos.
        • Es la cantidad de documentos que indica la cantidad de recursos FHIR importados.
        • La marca de tiempo de la última vez que se importó un documento.
        • De manera opcional, haz clic en Ver detalles para ver los detalles de la importación de documentos, como los detalles sobre una importación correcta, parcial o fallida.
      • En la pestaña Documentos, se muestra una lista de los ID de los recursos de FHIR importados y sus tipos de recursos en una tabla paginada. Puedes filtrar esta tabla por verificar si se importó un recurso en particular.
      • En la pestaña Actividad, se enumeran los detalles de la importación de documentos, como los detalles de una importación correcta, parcial o fallida.
    • Para un conector de datos, haz lo siguiente:
      • La tabla de resumen incluye los siguientes detalles:
        • El ID, el tipo y la región de la colección
        • Es el nombre de la app conectada.
        • El estado del conector, que está activo o detenido.
      • La tabla Entidades muestra la entidad dentro del conector de datos. El nombre de la entidad es el nombre del almacén de FHIR de origen. El ID de la entidad es el ID del conector de datos anexado al nombre del almacén de FHIR de origen.
        • Haz clic en el nombre de la entidad para ver sus detalles. Debido a que un es una instancia de almacén de datos dentro de un conector de datos, de la entidad son los mismos que los de un almacén de datos.
  5. En la pestaña Esquema, visualiza las propiedades de los recursos de FHIR compatibles. y sus elementos. Haz clic en Editar para configurar el esquema. Esta es una función de vista previa privada. Para configurar un esquema configurable, comunícate con tu ingeniero de atención al cliente.

REST

  1. Verifica la creación del almacén de datos.

    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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
  2. Verifica si se completó la operación de importación de datos FHIR.

    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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search.
    • IMPORT_OPERATION_ID: Es el ID de la operación de larga duración que se muestra cuando llamas al método import.

¿Qué sigue?