Fazer streaming de metadados de DICOM para o BigQuery

Nesta página, descrevemos como configurar um armazenamento DICOM para exportar metadados da instância DICOM para uma tabela do BigQuery sempre que uma das seguintes situações ocorrer:

Os metadados do streaming de DICOM para uma tabela do BigQuery sincronizam a tabela com os dados do DICOM para que você possa executar consultas complexas na versão mais recente do armazenamento DICOM.

Antes de começar

Definir permissões do BigQuery

Antes de fazer streaming de metadados DICOM para o BigQuery, conceda as permissões necessárias à conta de serviço do Agente de serviço do Cloud Healthcare. Para mais informações, consulte Permissões do BigQuery para armazenar DICOM.

Saiba como exportar metadados do DICOM para o BigQuery

Antes de configurar o streaming, entenda como exportar metadados do DICOM para o BigQuery.

Configurar o repositório DICOM

Para ativar o streaming no BigQuery, configure o objeto StreamConfig no seu armazenamento de DICOM. No objeto StreamConfig, defina o objeto BigQueryDestination como um URI de tabela do BigQuery totalmente qualificado como um destino de metadados da instância DICOM.

É possível especificar até cinco destinos do BigQuery como objetos JSON separados por vírgulas.

A exclusão de instâncias DICOM em um repositório DICOM não exclui as linhas do BigQuery que contêm os metadados dessas instâncias.

Console

Para atualizar um repositório DICOM e ativar o streaming do BigQuery, siga estas etapas:

  1. No console do Google Cloud, acesse a página Conjuntos de dados.
    Acessar Conjuntos de dados
  2. Selecione o conjunto de dados que contém o armazenamento DICOM que você quer editar.
  3. Selecione o repositório DICOM para adicionar uma configuração de streaming.
  4. Na página Detalhes do Datastore, clique em Adicionar nova configuração de streaming.
  5. No campo Nova configuração de streaming, clique em Procurar.
    1. No painel Selecionar tabela, escolha uma tabela do BigQuery.
    2. Clique em Selecionar.
  6. Clique em Concluído.

REST

Os exemplos a seguir mostram como atualizar um armazenamento de DICOM para ativar o streaming do BigQuery. Nestas amostras, o armazenamento de DICOM e a Tabela do BigQuery estão no mesmo projeto. Para exportar metadados DICOM para outro projeto, consulte Como exportar metadados DICOM para um projeto diferente.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: o local do conjunto de dados;
  • DATASET_ID: o conjunto de dados pai do armazenamento DICOM
  • DICOM_STORE_ID: o ID do repositório DICOM
  • BIGQUERY_DATASET_ID: o nome de um conjunto de dados do BigQuery
  • BIGQUERY_TABLE_ID: um nome exclusivo para uma tabela no conjunto de dados do BigQuery. Consulte os requisitos de nomenclatura em Nomenclatura da tabela. O conjunto de dados do BigQuery precisa existir, mas a API Cloud Healthcare pode atualizar uma tabela existente ou criar uma nova.

Solicitar corpo JSON:

{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

cat > request.json << 'EOF'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
EOF

Depois execute o comando a seguir para enviar a solicitação REST:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs"

PowerShell

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
'@  | Out-File -FilePath request.json -Encoding utf8

Depois execute o comando a seguir para enviar a solicitação REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

APIs Explorer

Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

Você receberá uma resposta JSON semelhante a esta:

Metadados de exclusão

Nas versões anteriores da API Cloud Healthcare, os metadados da instância DICOM só eram exportados para o BigQuery quando uma instância DICOM era inserida em um armazenamento DICOM. Ao gravar metadados para exclusões, duas novas colunas, denominadas Type e LastUpdated, foram adicionadas à tabela gerada que contém os metadados DICOM.

Todos os metadados na tabela que existiam antes da introdução dos metadados de exclusão têm um valor NULL para essas colunas. Uma NULL é o valor mais baixo e aparece por último ao classificar por ordem decrescente.

Visualização gerada do BigQuery

Quando você insere ou exclui uma instância DICOM em um armazenamento DICOM, a tabela do BigQuery configurada é atualizada.

Se uma visualização da tabela não existir, ela será criada. Caso contrário, a visualização é atualizada.

Limitações e comportamento adicional

Algumas tags DICOM podem estar ausentes nos metadados exportados. Nesse caso, as tags ausentes estão em uma coluna separada chamada DroppedTags.TagName na tabela de destino do BigQuery ou são totalmente removidas.

As tags estarão ausentes por um dos seguintes motivos:

  • A tag DICOM é uma RV não compatível listada em RVs excluídas.
  • A tag DICOM excede aproximadamente 1 MB, o que faz com que a tag seja adicionada à coluna DroppedTags.Name. As tags de sequência (SQ) que excederem aproximadamente 1 MB serão excluídas por completo.
  • O número de colunas na tabela de destino do BigQuery excede o número máximo de colunas. Quando a exportação de metadados DICOM para uma tabela do BigQuery excede o limite de colunas, as tags DICOM que não correspondem a uma coluna atual são adicionadas à coluna DroppedTags.Name. Se não for possível adicionar a coluna DroppedTags, as tags DICOM serão descartadas sem uma notificação e um registro de aviso será gerado. Para mais informações, consulte Solução de problemas de solicitações de streaming DICOM para exibir registros.

Incorporar metadados de exclusão a uma tabela atual

O comportamento da visualização gerada depende de a tabela base conter metadados adicionados antes da introdução do recurso de metadados de exclusão.

Suponha que uma tabela do BigQuery contenha metadados DICOM de antes dos metadados de exclusão eram compatíveis. O seguinte vai ocorrer:

  1. Você insere uma instância DICOM em um repositório DICOM.
  2. Exclua a instância DICOM do repositório DICOM.
  3. Edite as tags da instância DICOM original e insira a instância DICOM modificada no armazenamento DICOM.

Como a tabela do BigQuery continha os metadados originais antes da compatibilidade com os metadados de exclusão, a instância DICOM original e a versão editada dela têm os mesmos estudos, séries e identificadores exclusivos de instâncias (UID, na sigla em inglês). A visualização gerada pode conter a instância DICOM original ou a mais recente. Sem a coluna LastUpdated, a visualização não pode identificar qual instância DICOM é mais recente.

Para garantir que você esteja consultando os metadados mais recentes da instância DICOM, siga um destes procedimentos:

  • Consulte a tabela base em vez da visualização. Verifique se a consulta procura as tags atualizadas na instância DICOM editada.
  • Exclua a tabela atual que contém metadados DICOM e a recrie exportando os metadados DICOM para o BigQuery manualmente. A tabela recriada contém a coluna LastUpdated.

    Essa opção remove metadados de streaming históricos, mas garante que a tabela contenha a coluna LastUpdated com valores válidos.

Resolver problemas de solicitações de streaming DICOM

Se ocorrerem erros durante uma solicitação de exportação do DICOM para o BigQuery, eles serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.

Para filtrar os registros de erro de metadados do DICOM de streaming no console do Google Cloud, siga estas etapas:

  1. Acesse a página Explorador de registros.

    Acessar o "Análise de registros"

  2. No campo Consulta, digite:

    logName="healthcare.googleapis.com%2Fdicom_stream"
    
  3. Clique em Executar consulta.

    Todos os registros de erro são exibidos na seção Resultados da consulta.