Como fazer streaming de metadados de DICOM para o BigQuery

Nesta página, explicamos como configurar um armazenamento de DICOM para exportar metadados de uma instância de DICOM para uma Tabela do BigQuery sempre que uma instância de DICOM é inserida no armazenamento de DICOM. As instâncias de DICOM podem ser inseridas usando a transação de armazenamento ou importando do Cloud Storage.

Use o streaming do BigQuery para sincronizar os dados em um armazenamento de DICOM com um conjunto de dados do BigQuery quase em tempo real. É possível realizar consultas complexas em dados DICOM sem precisar exportar a versão mais recente do armazenamento de DICOM para o BigQuery sempre que você quiser analisar os dados.

Antes de configurar o streaming, consulte Como exportar metadados de DICOM para o BigQuery para ter uma visão geral sobre isso.

Como configurar permissões do BigQuery

Antes de exportar metadados DICOM para o BigQuery, você precisa conceder permissões extras à conta de serviço do Agente de serviço do Cloud Healthcare. Para mais informações, consulte Permissões do BigQuery para armazenar DICOM.

Como configurar o armazenamento de DICOM

Para ativar o streaming no BigQuery, configure o objeto StreamConfig no seu armazenamento de DICOM. Dentro de StreamConfig, configure BigQueryDestination para incluir um URI de Tabela do BigQuery totalmente qualificado em que os metadados da instância de DICOM serão transmitidos. StreamConfig é uma matriz. Portanto, é possível especificar vários destinos do BigQuery. É possível fazer streaming de metadados usando um único armazenamento de DICOM para até cinco Tabelas do BigQuery em um conjunto de dados do BigQuery.

Quando você exclui instâncias de DICOM na API Cloud Healthcare, as linhas do BigQuery que contêm os metadados para essas instâncias não são excluídas.

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.

curl

Para ativar o streaming do BigQuery em um armazenamento de DICOM existente, faça uma solicitação PATCH e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento DICOM
  • Nome de um conjunto de dados existente do BigQuery
  • Um nome para 1 a 5 destinos do BigQuery. O nome pode conter apenas letras (maiúsculas ou minúsculas), números e sublinhados. O conjunto de dados do BigQuery precisa existir, mas a API Cloud Healthcare pode atualizar uma tabela existente ou criar uma nova.
  • Uma máscara de atualização
  • Um token de acesso

O exemplo a seguir mostra uma solicitação PATCH usando curl.

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'streamConfigs': [{
         'bigqueryDestination': {
          'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
         }
      }]
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs"

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID",
  "streamConfigs": [
    {
      "bigqueryDestination": {
        "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID"
      }
    }
  ]
}

PowerShell

Para ativar o streaming do BigQuery em um armazenamento de DICOM existente, faça uma solicitação PATCH e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento DICOM
  • O nome de um conjunto de dados existente do BigQuery
  • Um nome para a tabela do BigQuery Export. O nome pode conter apenas letras (maiúsculas ou minúsculas), números e sublinhados. O conjunto de dados do BigQuery precisa existir, mas a API Cloud Healthcare pode atualizar uma tabela existente ou criar uma nova.
  • Uma máscara de atualização
  • Um token de acesso

O exemplo a seguir mostra uma solicitação PATCH usando o Windows PowerShell.

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

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
      'streamConfigs': [
        {
          'bigqueryDestination': {
            'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
        }
      }
    ]
  }" `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID",
  "streamConfigs": [
    {
      "bigqueryDestination": {
        "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID"
      }
    }
  ]
}

Limitações e comportamento adicional

  • As tags de DICOM serão listadas em uma coluna separada (chamada DroppedTags.TagName) na tabela de destino do BigQuery se uma das seguintes situações ocorrer:

    • O tamanho da tag de DICOM é igual ou maior que 1 MB.
    • A tag de DICOM não tem um tipo compatível no BigQuery (listado em RVs excluídas).
  • Se você excluir uma instância em um armazenamento de DICOM, ela não será excluída no BigQuery.

Solução de problemas em solicitações de streaming para 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 registros relacionados ao streaming de metadados de DICOM, selecione healthcare.googleapis.com/dicom_stream na segunda lista em Filtrar por rótulo ou pesquisa de texto.