Criar um repositório de dados de pesquisa de saúde

Para pesquisar dados clínicos na Vertex AI para Pesquisa, siga um dos estes fluxos de trabalho:

  • Crie um repositório de dados de saúde, importe dados do FHIR R4 para ele, conecte-o a um app de pesquisa de saúde e consulte os dados clínicos.
  • Crie um app de pesquisa de saúde, crie um repositório de dados de saúde e importe dados do FHIR R4 para o repositório durante o processo de criação do app e consulte os dados clínicos. Para mais informações, consulte Criar um app de pesquisa de saúde.

Esta página descreve o primeiro método.

Sobre a frequência de importação de dados

É possível importar dados do FHIR R4 para um repositório de dados das seguintes maneiras:

  • Importação em lote: uma importação única. Os dados são importados para um repositório de dados. Para outras importações incrementais, consulte Atualizar dados de saúde.

  • Importação de streaming (pré-lançamento): uma importação de dados de streaming quase em tempo real. Todas as mudanças incrementais no armazenamento de FHIR de origem são sincronizadas no armazenamento de dados da Vertex AI para Pesquisa. O streaming exige um conector de dados, que é um tipo de armazenamento de dados que contém uma entidade. Uma entidade também é uma instância de repositório de dados.

    A taxa de streaming de dados de um determinado projeto do Google Cloud depende das cotas a seguir. Se você exceder a cota, poderá enfrentar atrasos na transmissão.

    • O número de gravações pendentes de streaming do FHIR ou do BigQuery por minuto. Para mais informações, consulte Cotas e limites.
    • O número de operações de leitura FHIR por minuto por região. Para mais informações, consulte Cotas de FHIR da API Cloud Healthcare.

É possível selecionar a frequência de importação de dados ao criar o repositório de dados e não será possível alterar a configuração depois.

A importação de streaming está disponível para todos os recursos compatíveis com a Vertex AI para Pesquisa. Para mais informações, consulte a referência do esquema de dados FHIR R4 do Healthcare.

Antes de começar

Antes de criar o repositório de dados de saúde e importar dados para ele, conclua estas requisitos:

  • Entenda a relação entre apps e armazenamentos de dados para a pesquisa de saúde. Para mais informações, consulte Sobre apps e repositórios de dados.

  • Prepare os dados FHIR para ingestão.

  • A Vertex AI para Pesquisa de saúde oferece serviços de pesquisa apenas na multirregião dos EUA (us). Portanto, o app de pesquisa de saúde e os repositórios de dados precisam estar na multirregião us.

Criar um repositório de dados

É possível criar um repositório de dados no console do Google Cloud ou usando a API. O duas abordagens diferem da seguinte maneira:

  • No console do Google Cloud, selecione o repositório FHIR de origem no a API Cloud Healthcare e importar dados FHIR como parte dos dados de pesquisa de saúde o processo de criação da loja. Para fazer streaming de dados FHIR (pré-lançamento), seu repositório FHIR de origem precisa estar no mesmo projeto do Google Cloud que o destino. repositório de dados da Vertex AI para Pesquisa.
  • Com a API REST: é possível importar dados de FHIR de um armazenamento FHIR da API Cloud Healthcare. que está no mesmo projeto do Google Cloud ou em outro.
    1. Use o dataStores.create método para criar um repositório de dados de saúde.
    2. Use o método documents.import para especificar o armazenamento FHIR na API Cloud Healthcare e importar dados R4 do FHIR.

Para criar um repositório de dados de saúde, siga estas etapas.

Console

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. No painel Selecionar uma fonte de dados, escolha API Healthcare (FHIR) como sua fonte de dados.
  5. Para importar dados do armazenamento FHIR, faça o seguinte:
    • Selecione o armazenamento de FHIR na lista de opções disponíveis:
      1. Expanda o campo Loja de FHIR.
      2. Nesta lista, selecione um conjunto de dados que reside em um local permitido e Em seguida, selecione um repositório FHIR que use o FHIR versão R4.

        Para fazer streaming de dados FHIR (pré-lançamento), seu armazenamento FHIR de origem precisa estar no mesmo projeto do Google Cloud que o destino repositório de dados da Vertex AI para Pesquisa.

    • Insira o repositório FHIR manualmente:
      1. Expanda o campo Loja de FHIR.
      2. Clique em Inserir repositório FHIR manualmente.
      3. Na caixa de diálogo Nome do repositório de FHIR, insira o nome completo do repositório no seguinte formato:

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

      4. Clique em Salvar.
  6. Na seção Sincronização, selecione uma das seguintes opções. Essa seleção não pode ser alterada depois que o repositório de dados é criado.
    • Uma vez: para executar uma importação única de dados em lote. Para mais importações incrementais, consulte Atualizar dados de saúde.
    • Streaming: para realizar uma importação de dados de streaming quase em tempo real. Para transmitir dados, crie um conector de dados, que é um tipo de repositório de dados. Este é um recurso em fase de pré-lançamento. Para configurar um repositório de dados de streaming usando a API REST, entre em contato com seu engenheiro de clientes.
  7. Na seção Qual é o esquema desses dados?, selecione uma destas opções:
    • Esquema predefinido pelo Google: para manter as configurações de esquema definidas pelo Google, como indexabilidade, pesquisa e recuperação do conjunto de dados Recursos e elementos FHIR. Depois de selecionar essa opção, não será possível atualizar o esquema após a criação do repositório de dados. Se você quiser mudar o esquema após a criação do repositório de dados, selecione a opção Esquema personalizado (pré-lançamento).
      1. Clique em Continuar.
      2. No campo Nome do repositório de dados, insira um nome para o repositório.
      3. Clique em Criar.
      4. O repositório de dados que você criou é listado na página Repositórios de dados.

    • Esquema personalizado (pré-lançamento): para definir suas próprias configurações de esquema, como indexabilidade, pesquisa e recuperação do conjunto de dados Recursos e elementos FHIR. Este é um recurso em fase de pré-lançamento. Para configurar um esquema configurável, entre em contato com seu engenheiro de clientes.
      1. Clique em Continuar.
      2. Revise o esquema, expanda cada campo e edite o campo. configurações.
      3. Clique em Adicionar novos campos para adicionar novos campos na recursos FHIR suportados. Não é possível remover os campos fornecidos no esquema definido pelo Google.
      4. Clique em Continuar.
      5. No campo Nome do conector de dados, insira um nome para ele.
      6. Clique em Criar.
      7. O conector de dados que você criou é listado na página Repositórios de dados. O armazenamento FHIR de origem é adicionado como uma entidade no conector de dados.

  8. Clique em Continuar.

REST

  1. Criar um repositório de dados.

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

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa que você quer criar. Este ID só pode conter letras minúsculas letras, dígitos, sublinhados e hifens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição do repositório de dados da Vertex AI para Pesquisa que você quer criar.
  2. Se o repositório FHIR de origem e o repositório de dados da Vertex AI para Pesquisa estão no mesmo projeto do Google Cloud, chame o método a seguir para realizar uma uma única importação em lote. Se eles não estiverem no mesmo projeto, vá para o próximo etapa.

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

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • CLOUD_HEALTHCARE_DATASET_ID: o ID do conjunto de dados da API Cloud Healthcare que contém o armazenamento FHIR de origem.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: o local do conjunto de dados da API Cloud Healthcare que contém o armazenamento FHIR de origem.
    • FHIR_STORE_ID: o ID da loja FHIR R4 da API Cloud Healthcare.
  3. Se o repositório FHIR de origem e o repositório de dados da Vertex AI para Pesquisa estiverem em projetos diferentes do Google Cloud, chame o método a seguir para realizar uma importação em lote única. Se eles estiverem no mesmo projeto, volte para o etapa 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"}
    }'
    

    Substitua:

    • TARGET_PROJECT_ID: o ID do projeto do Google Cloud que contém o repositório de dados da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • SOURCE_PROJECT_ID: o ID do Google Cloud. projeto que contém o conjunto de dados da API Cloud Healthcare e o armazenamento FHIR.
    • CLOUD_HEALTHCARE_DATASET_ID: o ID do conjunto de dados da API Cloud Healthcare que contém o armazenamento FHIR de origem.
    • CLOUD_HEALTHCARE_DATASET_LOCATION: o local do conjunto de dados da API Cloud Healthcare que contém o armazenamento FHIR de origem.
    • FHIR_STORE_ID: o ID da loja FHIR R4 da API Cloud Healthcare.
  4. Opcional: para configurar uma importação de dados de streaming (pré-lançamento) usando a API REST, entre em contato com seu engenheiro de atendimento ao cliente.

Python

Para mais informações, consulte a API Vertex AI Agent Builder Python documentação de referência.

Para autenticar no Vertex AI Agent Builder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório de dados


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)

Verificar a criação do repositório de dados e a importação de dados FHIR

Esta tarefa mostra como verificar se um repositório de dados foi criado e se os dados do FHIR foram importados para o repositório.

  • No console do Google Cloud: selecione o repositório de dados e verifique os detalhes.
  • Pela API REST:
    1. Use o dataStores.get para receber os detalhes do repositório de dados de saúde.
    2. Use o operations.get para obter os detalhes da operação de importação.

Para verificar a criação e a importação de dados do repositório, siga estas etapas.

Console

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  2. No menu de navegação, clique em Repositórios de dados.

    A página Repositórios de dados exibe uma lista de repositórios de dados da sua conta do Google Cloud projeto com os detalhes.

  3. Verifique se o repositório de dados ou o conector de dados que você criou está na lista de repositórios de dados.

  4. Selecione o repositório de dados ou o conector de dados e verifique os detalhes.

    • Para um repositório de dados:
      • A tabela de resumo lista os seguintes detalhes:
        • O ID, o tipo e a região do repositório de dados.
        • O número de documentos que indicam o número de recursos FHIR importados.
        • O carimbo de data/hora em que o último documento foi importado.
        • Também é possível clicar em Ver detalhes para consultar os detalhes da importação de documentos, como como os detalhes de uma importação bem-sucedida, parcial ou com falha.
      • A guia Documentos lista os IDs dos recursos FHIR importados e os respectivos tipos de recursos em uma tabela paginada. É possível filtrar essa tabela para verificar se um recurso específico foi importado.
      • A guia Atividade lista os detalhes da importação de documentos, como os detalhes sobre uma importação bem-sucedida, parcial ou com falha.
    • Para um conector de dados:
      • A tabela de resumo lista os seguintes detalhes:
        • O ID, o tipo e a região da coleção.
        • O nome do app conectado.
        • O estado do conector, que pode ser ativo ou pausado.
      • A tabela Entidades mostra a entidade dentro do conector de dados. O nome da entidade é o nome do repositório de FHIR de origem. O ID da entidade é o ID do conector de dados anexado ao nome do armazenamento FHIR de origem.
        • Clique no nome da entidade para ver os detalhes. Como um entidade é uma instância de repositório de dados dentro de um conector de dados, a os detalhes da entidade são iguais aos detalhes de um repositório de dados.
  5. Na guia Esquema, veja as propriedades dos recursos FHIR compatíveis. e elementos. Clique em Editar para configurar o esquema. Este é um recurso de pré-lançamento privado. Para definir um esquema configurável, entre em contato com com seu engenheiro de clientes.

REST

  1. Verifique a criação do repositório de dados.

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
  2. Verifique se a operação de importação de dados do FHIR foi concluída.

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • IMPORT_OPERATION_ID: o ID da operação de longa duração que é retornado quando você chama o método import.

A seguir