Faça stream de metadados DICOM para o BigQuery

Esta página descreve como configurar um arquivo DICOM para exportar metadados de instâncias DICOM para uma tabela do BigQuery sempre que ocorrer uma das seguintes situações:

A transmissão de metadados DICOM para uma tabela do BigQuery sincroniza a tabela com os seus dados DICOM para que possa executar consultas complexas na versão mais recente do seu arquivo DICOM.

Antes de começar

Antes de configurar o seu arquivo DICOM, conclua o seguinte

Defina as autorizações do BigQuery

Antes de transmitir metadados DICOM para o BigQuery, tem de conceder as autorizações necessárias à conta de serviço do agente do Cloud Healthcare . Para mais informações, consulte as autorizações do BigQuery para o arquivo DICOM.

Saiba como exportar metadados DICOM para o BigQuery

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

Configure o arquivo DICOM

Para ativar o streaming para o BigQuery, configure o objeto StreamConfig na sua loja DICOM. No objeto StreamConfig, defina o objeto BigQueryDestination como um URI de tabela do BigQuery totalmente qualificado como destino de metadados de instância DICOM.

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

A eliminação de instâncias DICOM num arquivo DICOM não elimina as linhas do BigQuery que contêm os metadados dessas instâncias.

Consola

Para atualizar um arquivo DICOM para ativar o streaming do BigQuery, conclua os seguintes passos:

  1. Na Google Cloud consola, aceda à página Conjuntos de dados.
    Aceder a conjuntos de dados
  2. Selecione o conjunto de dados que contém o arquivo DICOM que quer editar.
  3. Selecione o armazenamento DICOM para o qual está a adicionar uma configuração de streaming.
  4. No separador Vista geral da página Detalhes do arquivo de dados, clique em Adicionar nova configuração de streaming.
  5. No campo Nova configuração de streaming, clique em Procurar.
    1. No painel Selecionar tabela, selecione uma tabela do BigQuery.
    2. Clique em Selecionar.
  6. Clique em Concluído.

REST

Os exemplos seguintes mostram como atualizar um arquivo DICOM para ativar o streaming do BigQuery. Nestes exemplos, o armazenamento DICOM e a tabela do BigQuery estão no mesmo projeto. Para exportar metadados DICOM para outro projeto, consulte o artigo Exportar metadados DICOM para um projeto diferente.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o conjunto de dados principal do arquivo DICOM
  • DICOM_STORE_ID: o ID da loja DICOM
  • BIGQUERY_DATASET_ID: o nome de um conjunto de dados do BigQuery existente
  • BIGQUERY_TABLE_ID: um nome único para uma tabela no conjunto de dados do BigQuery. Consulte o artigo Nomenclatura de tabelas para ver os requisitos de nomenclatura. O conjunto de dados do BigQuery tem de existir, mas a Cloud Healthcare API pode atualizar uma tabela existente ou criar uma nova.

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Explorador de APIs

Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

Deve receber uma resposta JSON semelhante à seguinte:

Metadados de eliminação

Nas versões anteriores da Cloud Healthcare API, os metadados de instâncias DICOM só eram exportados para o BigQuery quando uma instância DICOM era inserida num arquivo DICOM. Quando a gravação de metadados para eliminações foi adicionada, foram adicionadas duas novas colunas, denominadas Type e LastUpdated, à tabela gerada que contém os metadados DICOM.

Todos os metadados na tabela que existiam antes da introdução dos metadados de eliminação têm um valor NULL para estas colunas. Um NULL é o valor mais baixo e aparece por último quando a ordenação é feita por ordem descendente.

Visualização do BigQuery gerada

Quando insere ou elimina uma instância DICOM num arquivo DICOM, a tabela do BigQuery configurada é atualizada.

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

Limitações e comportamento adicional

Podem faltar algumas etiquetas DICOM nos metadados exportados. Se for o caso, as etiquetas em falta são adicionadas a uma coluna separada denominada DroppedTags.TagName na tabela do BigQuery de destino.

As etiquetas estão em falta por um dos seguintes motivos:

  • A etiqueta DICOM é um VR não suportado listado em VRs excluídos.
  • A etiqueta DICOM excede aproximadamente 1 MB.
  • O número de colunas na tabela do BigQuery de destino 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 etiquetas DICOM que não correspondem a uma coluna existente são adicionadas à coluna DroppedTags.Name. Se não for possível adicionar a coluna DroppedTags, as etiquetas DICOM são ignoradas sem uma notificação e é gerado um registo de aviso. Para mais informações, consulte o artigo Resolução de problemas de pedidos de streaming DICOM para ver registos.

Incorpore metadados de eliminação numa tabela existente

O comportamento da vista gerada depende se a respetiva tabela base contém metadados adicionados antes da introdução da funcionalidade de metadados de eliminação.

Suponhamos que uma tabela do BigQuery contém metadados DICOM de antes de os metadados de eliminação serem suportados e, em seguida, ocorre o seguinte:

  1. Inserir uma instância DICOM num arquivo DICOM.
  2. Elimina a instância DICOM da loja DICOM.
  3. Edita as etiquetas da instância DICOM original e insere a instância DICOM modificada no arquivo DICOM.

Uma vez que a tabela do BigQuery continha os metadados originais antes de os metadados de eliminação serem suportados, a instância DICOM original e a respetiva versão editada têm os mesmos identificadores únicos (UID) de estudos, séries e instâncias. A vista gerada pode conter a instância DICOM original ou a instância DICOM mais recente. Sem a coluna LastUpdated, a vista não consegue identificar qual instância DICOM é mais recente.

Para garantir que está a consultar os metadados da instância DICOM mais recentes, faça uma das seguintes ações:

  • Consulte a tabela base em vez da vista. Certifique-se de que a consulta pesquisa as etiquetas atualizadas na instância DICOM editada.
  • Elimine a tabela existente que contém metadados DICOM e, em seguida, recrie-a exportando manualmente os metadados DICOM para o BigQuery. A tabela recriada contém a coluna LastUpdated.

    Esta opção remove os metadados de streaming do histórico, mas garante que a tabela contém a coluna LastUpdated com valores válidos.

Resolva problemas de pedidos de streaming DICOM

Se ocorrerem erros durante um pedido de metadados de exportação DICOM para o BigQuery, os erros são registados no Cloud Logging. Para mais informações, consulte Ver registos de erros nos Registos na nuvem.

Para filtrar os registos de erros de metadados DICOM de streaming na Google Cloud consola, conclua os seguintes passos:

  1. Aceda à página Explorador de registos.

    Aceda ao Explorador de registos

  2. No campo Consulta, introduza a seguinte consulta:

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

    Todos os registos de erros são apresentados na secção Resultados da consulta.