Nesta página, explicamos como exportar metadados do DICOM para o BigQuery para exploração e análise. Para informações sobre o esquema do BigQuery criado ao exportar metadados do DICOM, consulte Noções básicas sobre o esquema DICOM do BigQuery.
Como configurar permissões do BigQuery
Antes de exportar metadados DICOM para uma tabela do BigQuery, é preciso conceder permissões extras para o Agente de serviço do Cloud Healthcare conta de serviço. Para mais informações, consulte Permissões do BigQuery para armazenar DICOM.
Como configurar o destino do BigQuery
Ao definir o destino do BigQuery, use o comando URI qualificado, da seguinte forma:bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_IDO comportamento da operação de exportação pode variar dependendo de:
- Se a tabela de destino já existe
- Se você definiu o campo
force
(usando a API) ou a sinalização--overwrite-table
(usando a Google Cloud CLI). - Se você definiu um valor para o enum
writeDisposition
. Se você usar a enumeraçãowriteDisposition
, não defina o campoforce
.
- Se a tabela de destino já existir e
force
estiver definida comotrue
ou a sinalização--overwrite-table
for especificada, a operação de exportação substituirá a tabela atual. - Se a tabela de destino já existir e
force
estiver definida comofalse
ou a sinalização--overwrite-table
não for especificada, ocorrerá um erro. - Se a tabela de destino ainda não existir, uma nova tabela será criada, independentemente de você especificar o campo
force
ou a sinalização--overwrite-table
. - O comportamento de
writeDisposition
está descrito na documentação. O enumwriteDisposition
executa um comportamento semelhante ao das opções ao usarforce
, com a seguinte exceção: se a tabela de destino já existir e estiver vazia, a operação de exportação será concluída em vez de retornar um erro.
Como exportar metadados DICOM
Nas amostras a seguir, veja como exportar metadados DICOM para uma tabela do BigQuery. Nestas amostras, o armazenamento DICOM e a tabela do BigQuery estão no mesmo projeto. Para exportar Metadados DICOM para uma tabela do BigQuery em outro projeto, consulte Como exportar metadados DICOM para um projeto diferente.
Console
Para exportar metadados DICOM para uma tabela do BigQuery, conclua o seguinte etapas:
No console do Google Cloud, acesse a página Conjuntos de dados.
Clique no conjunto de dados que tem o armazenamento DICOM com os metadados que você está exportando.
Na mesma linha do armazenamento DICOM, abra a lista Ações e selecione Exportar.
Na página Exportar repositório DICOM, selecione Tabela do BigQuery.
No campo Projeto, clique em Procurar e selecione o projeto.
Na lista Conjunto de dados, selecione o conjunto de dados do BigQuery para o qual você está exportando os metadados DICOM.
No campo Tabela, insira um novo nome. BigQuery verifica cada seleção para garantir que a tabela de destino seja válida.
Na seção Disposição de gravação na tabela de destino, selecione um dos seguintes. Essas opções correspondem ao tipo enumerado
WriteDisposition
.- Só exportar dados se a tabela de destino estiver vazia: equivalente a
WRITE_EMPTY
- Anexar dados à tabela de destino: equivalente a
WRITE_APPEND
. - Apague todos os dados na tabela de destino antes de gravar as instâncias: equivalente a
WRITE_TRUNCATE
.
- Só exportar dados se a tabela de destino estiver vazia: equivalente a
Clique em Exportar para exportar metadados DICOM para a tabela do BigQuery.
- Para acompanhar o status da operação, clique na guia Operações. Após a conclusão da operação, as seguintes indicações serão exibidas:
- A seção Status da operação de longa duração tem uma marca de seleção verde no cabeçalho OK.
- A seção Visão geral tem uma marca de seleção verde e um indicador OK na mesma linha do ID da operação.
gcloud
Para exportar metadados DICOM para uma tabela do BigQuery, execute o
gcloud healthcare dicom-stores export bq
kubectl.
Exportar os metadados DICOM.
Antes de usar os dados do comando abaixo, faça estas substituições:
- 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 atual para onde você está exportando metadados DICOM.
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:write-empty
: só exporta dados se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.write-append
: anexa dados à tabela do BigQuery.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
.gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
depois que a exportação é concluída. Anote o valor deOPERATION_ID
. Você vai precisar desse valor na próxima etapa.Resposta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para mais detalhes sobre a operação, execute o
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:Antes de usar os dados do comando abaixo, faça estas substituições:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- OPERATION_ID: o ID retornado da operação de longa duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Você receberá uma resposta semelhante a esta:
Resposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadados DICOM para uma tabela do BigQuery, use o
projects.locations.datasets.dicomStores.export
.
Exportar os metadados DICOM.
Antes de usar os dados da solicitação abaixo, 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 atual para onde você está exportando metadados DICOM.
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: só exporta dados se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.WRITE_APPEND
: anexa dados à tabela do BigQuery.
Corpo JSON da solicitação:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-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:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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 POST `
-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:export" | Select-Object -Expand ContentAPIs Explorer
Copie o corpo da solicitação e abra o 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.
OPERATION_ID
. Você vai precisar desse valor na próxima etapa.Use o método
projects.locations.datasets.operations.get
para ver o status da operação de longa duração.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- OPERATION_ID: o ID retornado da operação de longa duração.
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra o 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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, o operação de longa duração foi concluída.
Como exportar metadados DICOM para um projeto diferente
Para exportar metadados DICOM de um armazenamento DICOM em um projeto para um BigQuery em outro projeto, confira primeiro Como exportar metadados DICOM para permissões de projeto diferentes para mais informações sobre como definir permissões do IAM no o projeto de destino.
gcloud
Para exportar metadados DICOM de um armazenamento DICOM em um projeto para uma tabela do BigQuery em outro projeto, use o comando gcloud healthcare dicom-stores export bq
.
Exportar os metadados do DICOM.
Antes de usar os dados do comando abaixo, faça estas substituições:
- SOURCE_PROJECT_ID: o ID do projeto de origem do Google Cloud
- SOURCE_LOCATION: o local do conjunto de dados de origem.
- SOURCE_DATASET_ID: o conjunto de dados pai do armazenamento DICOM de origem
- SOURCE_DICOM_STORE_ID: o ID do repositório DICOM de origem
- DESTINATION_PROJECT_ID: o ID do projeto diferente
- DESTINATION_BIGQUERY_DATASET_ID: o nome de um conjunto de dados atual do BigQuery no projeto de destino para onde você está exportando metadados DICOM
- DESTINATION_BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:write-empty
: só exporta dados se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.write-append
: anexa dados à tabela do BigQuery.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \ --project=SOURCE_PROJECT_ID \ --location=SOURCE_LOCATION \ --dataset=SOURCE_DATASET_ID \ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ` --project=SOURCE_PROJECT_ID ` --location=SOURCE_LOCATION ` --dataset=SOURCE_DATASET_ID ` --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
.gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^ --project=SOURCE_PROJECT_ID ^ --location=SOURCE_LOCATION ^ --dataset=SOURCE_DATASET_ID ^ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
depois que a exportação é concluída. Anote o valor deOPERATION_ID
. Você vai precisar desse valor na próxima etapa.Resposta
Request issued for: [SOURCE_DICOM_STORE_ID] Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
Para mais detalhes sobre a operação, execute o
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:Antes de usar os dados do comando abaixo, faça estas substituições:
- SOURCE_PROJECT_ID: o ID do projeto de origem do Google Cloud
- SOURCE_LOCATION: o local do conjunto de dados de origem.
- SOURCE_DATASET_ID: o ID do conjunto de dados de origem.
- OPERATION_ID: o ID retornado da operação de longa duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=SOURCE_PROJECT_ID \ --dataset=SOURCE_DATASET_ID \ --location=SOURCE_LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=SOURCE_PROJECT_ID ` --dataset=SOURCE_DATASET_ID ` --location=SOURCE_LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=SOURCE_PROJECT_ID ^ --dataset=SOURCE_DATASET_ID ^ --location=SOURCE_LOCATION
Você receberá uma resposta semelhante a esta:
Resposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadados DICOM de um armazenamento DICOM em um projeto para um BigQuery
em outro projeto, use a
projects.locations.datasets.dicomStores.export
.
Exportar os metadados do DICOM.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- SOURCE_PROJECT_ID: o ID do projeto de origem do Google Cloud
- SOURCE_LOCATION: o local do conjunto de dados de origem.
- SOURCE_DATASET_ID: o conjunto de dados pai do armazenamento DICOM de origem
- SOURCE_DICOM_STORE_ID: o ID do repositório DICOM de origem
- DESTINATION_PROJECT_ID: o ID do projeto diferente
- DESTINATION_BIGQUERY_DATASET_ID: o nome de um conjunto de dados atual do BigQuery no projeto de destino para onde você está exportando metadados DICOM
- DESTINATION_BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: só exporta dados se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.WRITE_APPEND
: anexa dados à tabela do BigQuery.
Corpo JSON da solicitação:
{ "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export"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:@' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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 POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | Select-Object -Expand ContentAPIs Explorer
Copie o corpo da solicitação e abra o 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.
OPERATION_ID
. Você vai precisar desse valor na próxima etapa.Use o método
projects.locations.datasets.operations.get
para ver o status da operação de longa duração.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- SOURCE_PROJECT_ID: o ID do projeto de origem do Google Cloud
- SOURCE_LOCATION: o local do conjunto de dados de origem.
- SOURCE_DATASET_ID: o ID do conjunto de dados de origem.
- OPERATION_ID: o ID retornado da operação de longa duração.
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra o 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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, o operação de longa duração foi concluída.
Como exportar metadados do DICOM usando filtros
Por padrão, quando você exporta arquivos DICOM para o Cloud Storage, todos os arquivos DICOM no armazenamento DICOM especificado são exportados. Da mesma forma, ao exportar metadados DICOM para o BigQuery, os metadados de todos os dados DICOM no armazenamento DICOM especificado são exportados.
É possível exportar um subconjunto de dados ou metadados DICOM usando um filtro. O filtro é definido em um arquivo de filtro.
Como configurar arquivos de filtro
Um arquivo de filtro define quais arquivos DICOM devem ser exportados para o Cloud Storage ou o BigQuery. É possível filtrar arquivos nos seguintes níveis:
- No nível do estudo
- No nível da série
- No nível da instância
O arquivo de filtro é composto de várias linhas, cada uma definindo o
estudo, a série ou a instância que você quer
exportar. Cada linha usa o formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
Se um estudo, uma série ou uma instância não estiver especificado no arquivo de filtro ao usar o arquivo de filtro, esse estudo, série ou instância não vai ser exportado.
Apenas a parte /studies/STUDY_UID
do caminho é obrigatória. É possível exportar um estudo inteiro especificando
/studies/STUDY_UID
. Você também pode exportar uma série
inteira especificando /studies/STUDY_UID/series/SERIES_UID
.
Considere o arquivo de filtro a seguir. O arquivo de filtro vai resultar na exportação de um estudo, duas séries e três instâncias individuais:
/studies/1.123.456.789 /studies/1.666.333.111/series/123.456 /studies/1.666.333.111/series/567.890 /studies/1.888.999.222/series/123.456/instances/111 /studies/1.888.999.222/series/123.456/instances/222 /studies/1.888.999.222/series/123.456/instances/333
Como criar um arquivo de filtro usando o BigQuery
Normalmente, você cria um arquivo de filtro exportando os metadados de um armazenamento DICOM para o BigQuery. Isso permite que você use o BigQuery para ver os UIDs de estudo, série e instância dos dados DICOM no seu armazenamento DICOM. Depois, siga estas etapas:
-
Consultar os UIDs de estudo, série e instância que você tem interesse.
Por exemplo, depois de exportar os metadados DICOM para o BigQuery,
a consulta a seguir para concatenar os estudos, as séries e
os UIDs da instância em um formato compatível com o arquivo de filtro
requisitos:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Se a consulta retornar um grande conjunto de resultados, é possível materializar uma nova tabela salvando os resultados da consulta em uma tabela de destino no BigQuery.
- Se você salvou os resultados da consulta em uma tabela de destino, é possível salvar o conteúdo dela em um arquivo e exportá-lo para o Cloud Storage. Para ver as etapas de como fazer isso, consulte Como exportar dados da tabela. O arquivo exportado é seu arquivo de filtro. Use o local do arquivo de filtro no Cloud Storage ao especificar o filtro na operação de exportação.
Como criar um arquivo de filtro manualmente
É possível criar um arquivo de filtro com conteúdo personalizado e fazer o upload dele para um bucket do Cloud Storage. Use o local do arquivo de filtro no Cloud Storage ao especificar o filtro na operação de exportação. O exemplo a seguir mostra como para fazer upload de um arquivo de filtro em um bucket do Cloud Storage usando o Comandogcloud storage cp
:
gcloud storage cp FILTER_FILE gs://BUCKET
Como transmitir o arquivo de filtro
Depois de criar um arquivo de filtro, você pode chamar a operação de exportação DICOM e transmiti-lo usando a API REST. Veja nas amostras a seguir como exportar metadados DICOM usando um filtro.
gcloud
Para exportar metadados DICOM para uma tabela do BigQuery usando um filtro, execute o
gcloud beta healthcare dicom-stores export bq
kubectl.
Exportar os metadados do DICOM.
Antes de usar os dados do comando abaixo, faça estas substituições:
- 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 atual para onde você está exportando metadados DICOM.
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- BUCKET: o nome do bucket do Cloud Storage que contém o arquivo de filtro. Se o arquivo de filtro estiver em um diretório, inclua o diretório no caminho.
- FILTER_FILE: o local e o nome do arquivo de filtro em um bucket do Cloud Storage
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:write-empty
: só exporta dados se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.write-append
: anexa dados à tabela do BigQuery.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
.gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^ --write-disposition=WRITE_DISPOSITION
name
depois que a exportação é concluída. Anote o valor deOPERATION_ID
. Você vai precisar desse valor na próxima etapa.Resposta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para mais detalhes sobre a operação, execute o
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:Antes de usar os dados do comando abaixo, faça estas substituições:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- OPERATION_ID: o ID retornado da operação de longa duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Você receberá uma resposta semelhante a esta:
Resposta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadados DICOM para uma tabela do BigQuery usando um filtro, use o
projects.locations.datasets.dicomStores.export
.
Exportar os metadados DICOM.
Antes de usar os dados da solicitação abaixo, 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 atual para onde você está exportando metadados DICOM.
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou atual no conjunto de dados do BigQuery. Se a operação de exportação estiver criando uma nova tabela, consulte Nomenclatura de tabelas para ver os requisitos de nome de tabela.
- BUCKET: o nome do bucket do Cloud Storage que contém o arquivo de filtro. Se o arquivo de filtro estiver em um diretório, inclua o diretório no caminho.
- FILTER_FILE: o local e o nome do arquivo de filtro em um bucket do Cloud Storage
- WRITE_DISPOSITION: um valor para o tipo enumerado
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: só exporta dados se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de gravar as instâncias DICOM.WRITE_APPEND
: anexa dados à tabela do BigQuery.
Corpo JSON da solicitação:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-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:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } '@ | 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 POST `
-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:export" | Select-Object -Expand ContentAPIs Explorer
Copie o corpo da solicitação e abra o 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.
OPERATION_ID
. Você vai precisar desse valor na próxima etapa.Use o método
projects.locations.datasets.operations.get
para ver o status da operação de longa duração.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- OPERATION_ID: o ID retornado da operação de longa duração.
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra o 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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, o operação de longa duração foi concluída.
Como consultar e analisar dados DICOM no BigQuery
Depois de exportar os metadados DICOM para uma tabela do BigQuery, é possível executar consultas de amostra para saber mais detalhes sobre os metadados. Os exemplos a seguir mostram como executar consultas em alguns casos de uso comuns.
Como pesquisar em metadados
Suponha que você queira pesquisar uma grande quantidade de metadados difíceis de pesquisar em outros sistemas, como um sistema de comunicação e arquivamento de imagem (PACS, na sigla em inglês) ou um arquivo neutro de fornecedor (VNA, na sigla em inglês). A consulta a seguir mostra como consultar o valor PatientID
de um paciente e usar o caminho DICOMweb para recuperar instâncias de imagem específicas. A amostra usa a tabela chc-nih-chest-xray.nih_chest_xray.nih_chest_xray do conjunto de dados NIH Chest X-ray.
#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';
A consulta retorna os estudos associados ao paciente. A resposta a seguir usa a formatação JSON:
[
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
}
]
Como consultar os estudos mais recentes
Suponha que você queira preencher uma lista de trabalho de leitura PACS com os estudos mais recentes do seu conjunto de dados.
A consulta a seguir mostra como recuperar e exibir os estudos mais recentes com as contagens de instâncias e os metadados relacionados. A amostra usa bigquery-public-data.idc_v5.dicom_metadata do conjunto de dados TCIA.
#standardSQL
SELECT
MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
`bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;
A consulta retorna as seguintes informações:
- Os 10 estudos mais recentes que entraram no sistema e quando entraram no sistema
- O paciente associado a cada estudo
- O UID do estudo
- O número de instâncias associadas ao estudo
A resposta a seguir usa a formatação JSON:
[
{
"StudyDateTime": "2021-07-11 00:38:22",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:52:10",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:31:13",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 23:25:17",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 22:35:16",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:49:46",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 21:46:04",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:13:30",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 21:10:17",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 20:05:48",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
"InstanceCount": "6"
}
]
Limitações e comportamento adicional
Se a tag DICOM não tiver um tipo compatível no BigQuery
(listados em RVs excluídas),
ele será listado em uma coluna separada (chamada DroppedTags.TagName
) no
tabela de destino do BigQuery.
Solução de problemas de solicitações de exportação do 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.