Esta página explica como exportar metadados DICOM para o BigQuery para exploração e análise. Para ver informações sobre o esquema do BigQuery criado quando exporta metadados DICOM, consulte o artigo Compreender o esquema DICOM do BigQuery.
Definir autorizações do BigQuery
Antes de exportar metadados DICOM para uma tabela do BigQuery, tem de conceder autorizações adicionais à conta de serviço do agente do Cloud Healthcare Service . Para mais informações, consulte as autorizações do BigQuery para o arquivo DICOM.
Definir o destino do BigQuery
Quando definir o destino do BigQuery, use o URI totalmente qualificado, da seguinte forma:bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
- Se a tabela de destino já existe
- Se definiu o campo
force
(através da API) ou a flag--overwrite-table
(através da CLI Google Cloud) - Se definiu um valor para a enumeração
writeDisposition
. Se usar a enumeraçãowriteDisposition
, não defina o campoforce
.
- Se a tabela de destino já existir e
force
estiver definido comotrue
ou o indicador--overwrite-table
for especificado, a operação de exportação substitui a tabela existente. - Se a tabela de destino já existir e
force
estiver definido comofalse
ou a flag--overwrite-table
não estiver especificada, ocorre um erro. - Se a tabela de destino ainda não existir, é criada uma nova tabela, independentemente de especificar o campo
force
ou a flag--overwrite-table
. - O comportamento de
writeDisposition
é descrito na respetiva documentação. A enumeraçãowriteDisposition
tem um comportamento semelhante às opções quando usaforce
, com a seguinte exceção: se a tabela de destino já existir e estiver vazia, a operação de exportação é concluída em vez de devolver um erro.
Exportar metadados DICOM
Os exemplos seguintes mostram como exportar metadados DICOM para uma tabela do BigQuery. Nestes exemplos, o arquivo DICOM e a tabela do BigQuery estão no mesmo projeto. Para exportar metadados DICOM para uma tabela do BigQuery noutro projeto, consulte o artigo Exportar metadados DICOM para um projeto diferente.
Consola
Para exportar metadados DICOM para uma tabela do BigQuery, conclua os seguintes passos:
Na Google Cloud consola, aceda à página Conjuntos de dados.
Clique no conjunto de dados que tem o arquivo DICOM com os metadados que está a exportar.
Na mesma linha que o arquivo DICOM, abra a lista Ações e selecione Exportar.
Na página Exportar loja DICOM apresentada, selecione Tabela do BigQuery.
No campo Projeto, clique em Procurar e selecione o seu projeto.
Na lista Conjunto de dados, selecione o conjunto de dados do BigQuery para o qual está a exportar metadados DICOM.
No campo Tabela, introduza um novo nome de tabela. O BigQuery verifica cada seleção para garantir que a tabela de destino é válida.
Na secção Disposição de gravação da tabela de destino, selecione uma das seguintes opções. Estas opções correspondem à enumeração
WriteDisposition
.- Exporte dados apenas se a tabela de destino estiver vazia: equivalente a
WRITE_EMPTY
- Anexar dados à tabela de destino: equivalente a
WRITE_APPEND
- Apagar todos os dados existentes na tabela de destino antes de escrever as instâncias: equivalente a
WRITE_TRUNCATE
.
- Exporte dados apenas se a tabela de destino estiver vazia: equivalente a
Clique em Exportar para exportar metadados DICOM para a tabela do BigQuery.
- Para acompanhar o estado da operação, clique no separador Operações. Após a conclusão da operação, são apresentadas as seguintes indicações:
- A secção Estado da operação de longa duração tem uma marca de verificação verde no cabeçalho OK.
- A secção Vista geral tem uma marca de verificação verde e um indicador OK na mesma linha que o ID da operação.
gcloud
Para exportar metadados DICOM para uma tabela do BigQuery, execute o comando
gcloud healthcare dicom-stores export bq
.
Exporte os metadados DICOM.
Antes de usar qualquer um dos dados de comandos abaixo, 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 para o qual está a exportar metadados DICOM
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:write-empty
: exportar dados apenas se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.write-append
: acrescentar 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
após a conclusão da exportação. Repare no valor deOPERATION_ID
. Precisa deste valor no passo seguinte.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 ver mais detalhes sobre a operação, execute o comando
gcloud healthcare operations describe
e indique o OPERATION_ID da resposta:Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela 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
Deve receber uma resposta semelhante à seguinte:
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 método
projects.locations.datasets.dicomStores.export
.
Exporte os metadados DICOM.
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 para o qual está a exportar metadados DICOM
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: exportar dados apenas se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.WRITE_APPEND
: acrescentar dados à tabela do BigQuery.
Corpo JSON do pedido:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } EOF
Em seguida, execute o seguinte comando para enviar o seu pedido 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
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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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 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 ContentExplorador 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.
OPERATION_ID
. Precisa deste valor no passo seguinte.Use o método
projects.locations.datasets.operations.get
para obter o estado da operação de execução longa.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Exportar metadados DICOM para um projeto diferente
Para exportar metadados DICOM de um arquivo DICOM num projeto para um conjunto de dados do BigQuery noutro projeto, consulte primeiro o artigo Exportar metadados DICOM para um projeto diferente: autorizações para ver informações sobre como definir autorizações IAM no projeto de destino.
gcloud
Para exportar metadados DICOM de um arquivo DICOM num projeto para uma tabela do BigQuery noutro projeto, use o comando gcloud healthcare dicom-stores export bq
.
Exporte os metadados DICOM.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem
- SOURCE_LOCATION: a localização do conjunto de dados de origem
- SOURCE_DATASET_ID: o conjunto de dados principal do armazenamento DICOM de origem
- SOURCE_DICOM_STORE_ID: o ID da loja DICOM de origem
- DESTINATION_PROJECT_ID: o ID do projeto diferente
- DESTINATION_BIGQUERY_DATASET_ID: o nome de um conjunto de dados do BigQuery existente no projeto de destino para o qual está a exportar metadados DICOM
- DESTINATION_BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:write-empty
: exportar dados apenas se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.write-append
: acrescentar 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
após a conclusão da exportação. Repare no valor deOPERATION_ID
. Precisa deste valor no passo seguinte.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 ver mais detalhes sobre a operação, execute o comando
gcloud healthcare operations describe
e indique o OPERATION_ID da resposta:Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem
- SOURCE_LOCATION: a localização do conjunto de dados de origem
- SOURCE_DATASET_ID: o ID do conjunto de dados de origem
- OPERATION_ID: o ID devolvido pela 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
Deve receber uma resposta semelhante à seguinte:
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 arquivo DICOM num projeto para uma tabela do BigQuery noutro projeto, use o método projects.locations.datasets.dicomStores.export
.
Exporte os metadados DICOM.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem
- SOURCE_LOCATION: a localização do conjunto de dados de origem
- SOURCE_DATASET_ID: o conjunto de dados principal do armazenamento DICOM de origem
- SOURCE_DICOM_STORE_ID: o ID da loja DICOM de origem
- DESTINATION_PROJECT_ID: o ID do projeto diferente
- DESTINATION_BIGQUERY_DATASET_ID: o nome de um conjunto de dados do BigQuery existente no projeto de destino para o qual está a exportar metadados DICOM
- DESTINATION_BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: exportar dados apenas se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.WRITE_APPEND
: acrescentar dados à tabela do BigQuery.
Corpo JSON do pedido:
{ "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } EOF
Em seguida, execute o seguinte comando para enviar o seu pedido 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
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:@' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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 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 ContentExplorador 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.
OPERATION_ID
. Precisa deste valor no passo seguinte.Use o método
projects.locations.datasets.operations.get
para obter o estado da operação de execução longa.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- SOURCE_PROJECT_ID: o ID do projeto Google Cloud de origem
- SOURCE_LOCATION: a localização do conjunto de dados de origem
- SOURCE_DATASET_ID: o ID do conjunto de dados de origem
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Exportar metadados DICOM através de filtros
Por predefinição, quando exporta ficheiros DICOM para o Cloud Storage, todos os ficheiros DICOM no arquivo DICOM especificado são exportados. Da mesma forma, quando exporta metadados DICOM para o BigQuery, os metadados de todos os dados DICOM no arquivo DICOM especificado são exportados.
Pode exportar um subconjunto de dados ou metadados DICOM através de um filtro. Define o filtro num ficheiro de filtro.
Configurar ficheiros de filtros
Um ficheiro de filtro define os ficheiros DICOM a exportar para o Cloud Storage ou o BigQuery. Pode configurar ficheiros de filtros nos seguintes níveis:
- Ao nível do estudo
- Ao nível da série
- Ao nível da instância
O ficheiro de filtro é composto por várias linhas, cada uma a definir o estudo, a série ou a instância que 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 for especificado no ficheiro de filtro quando transmite o ficheiro de filtro, esse estudo, série ou instância não é exportado.
Apenas a parte /studies/STUDY_UID
do caminho é
obrigatória. Pode exportar um estudo completo especificando /studies/STUDY_UID
ou pode exportar uma série completa especificando /studies/STUDY_UID/series/SERIES_UID
.
Considere o seguinte ficheiro de filtros. O ficheiro 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
Criar um ficheiro de filtro com o BigQuery
Normalmente, cria um ficheiro de filtro exportando primeiro os metadados de um armazenamento DICOM para o BigQuery. Isto permite-lhe usar o BigQuery para ver os UIDs de estudo, série e instância dos dados DICOM no seu arquivo DICOM. Em seguida, pode concluir os seguintes passos:
-
Consulte os UIDs do estudo, da série e da instância nos quais tem interesse.
Por exemplo, depois de exportar metadados DICOM para o BigQuery, pode executar a seguinte consulta para concatenar os UIDs de estudo, série e instância num formato compatível com os requisitos do ficheiro de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Se a consulta devolver um conjunto de resultados grande, pode materializar uma nova tabela guardando os resultados da consulta numa tabela de destino no BigQuery.
- Se guardou os resultados da consulta numa tabela de destino, pode guardar o conteúdo da tabela de destino num ficheiro e exportá-lo para o Cloud Storage. Para ver os passos sobre como o fazer, consulte o artigo Exportar dados de tabelas. O ficheiro exportado é o ficheiro de filtro. Usa a localização do ficheiro de filtro no armazenamento na nuvem quando especifica o filtro na operação de exportação.
Criar um ficheiro de filtro manualmente
Pode criar um ficheiro de filtro com conteúdo personalizado e carregá-lo para um contentor do Cloud Storage. Usa a localização do ficheiro de filtro no Cloud Storage quando especifica o filtro na operação de exportação. O exemplo seguinte mostra como carregar um ficheiro de filtro para um contentor do Cloud Storage através do comandogcloud storage cp
:
gcloud storage cp FILTER_FILE gs://BUCKET
Aprovado no ficheiro de filtro
Depois de criar um ficheiro de filtro, pode chamar a operação de exportação DICOM e transmitir o ficheiro de filtro através da API REST. Os exemplos seguintes mostram como exportar metadados DICOM através de um filtro.
gcloud
Para exportar metadados DICOM para uma tabela do BigQuery através de um filtro, execute o comando
gcloud beta healthcare dicom-stores export bq
.
Exporte os metadados DICOM.
Antes de usar qualquer um dos dados de comandos abaixo, 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 para o qual está a exportar metadados DICOM
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- BUCKET: o nome do contentor do Cloud Storage que contém o ficheiro de filtro. Se o ficheiro de filtro estiver num diretório, inclua o diretório no caminho.
- FILTER_FILE: a localização e o nome do ficheiro de filtro num contentor do Cloud Storage
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:write-empty
: exportar dados apenas se a tabela do BigQuery estiver vazia.write-truncate
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.write-append
: acrescentar 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
após a conclusão da exportação. Repare no valor deOPERATION_ID
. Precisa deste valor no passo seguinte.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 ver mais detalhes sobre a operação, execute o comando
gcloud healthcare operations describe
e indique o OPERATION_ID da resposta:Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela 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
Deve receber uma resposta semelhante à seguinte:
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 através de um filtro, use o método projects.locations.datasets.dicomStores.export
.
Exporte os metadados DICOM.
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 para o qual está a exportar metadados DICOM
- BIGQUERY_TABLE_ID: o nome de uma tabela nova ou existente no conjunto de dados do BigQuery. Se a operação de exportação estiver a criar uma nova tabela, consulte a secção Nomenclatura de tabelas para ver os requisitos de nomes de tabelas.
- BUCKET: o nome do contentor do Cloud Storage que contém o ficheiro de filtro. Se o ficheiro de filtro estiver num diretório, inclua o diretório no caminho.
- FILTER_FILE: a localização e o nome do ficheiro de filtro num contentor do Cloud Storage
- WRITE_DISPOSITION: um valor para a enumeração
WriteDisposition
. Use um dos seguintes valores:WRITE_EMPTY
: exportar dados apenas se a tabela do BigQuery estiver vazia.WRITE_TRUNCATE
: apaga todos os dados existentes na tabela do BigQuery antes de escrever as instâncias DICOM.WRITE_APPEND
: acrescentar dados à tabela do BigQuery.
Corpo JSON do pedido:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } EOF
Em seguida, execute o seguinte comando para enviar o seu pedido 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
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:@' { "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
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 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 ContentExplorador 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.
OPERATION_ID
. Precisa deste valor no passo seguinte.Use o método
projects.locations.datasets.operations.get
para obter o estado da operação de execução longa.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
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. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Consultar e analisar dados DICOM no BigQuery
Depois de exportar os metadados DICOM para uma tabela do BigQuery, pode executar consultas de exemplo para obter mais detalhes sobre os metadados. Os exemplos seguintes mostram como executar consultas para alguns exemplos de utilização comuns.
Pesquisar nos metadados
Suponhamos que quer pesquisar uma grande quantidade de metadados que são difíceis de pesquisar noutros sistemas, como um sistema de arquivo e comunicação de imagens (PACS) ou um arquivo neutro de fornecedores (VNA). A consulta seguinte mostra como consultar o valor PatientID
de um paciente e usar o caminho DICOMweb para obter instâncias de imagens específicas. O exemplo 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 devolve os estudos associados ao paciente. A resposta seguinte 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"
}
]
Consultar os estudos mais recentes
Suponhamos que quer preencher uma lista de trabalho de leitura do PACS com os estudos mais recentes do seu conjunto de dados.
A consulta seguinte mostra como obter e apresentar os estudos mais recentes, juntamente com as contagens de instâncias e os metadados circundantes. O exemplo usa a tabela 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 devolve as seguintes informações:
- Os 10 estudos mais recentes que foram introduzidos no sistema e quando foram introduzidos
- O paciente associado a cada estudo
- O UID do estudo
- O número de instâncias associadas ao estudo
A resposta seguinte 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 etiqueta DICOM não tiver um tipo suportado no BigQuery (indicado em VRs excluídos),
é apresentada numa coluna separada (denominada DroppedTags.TagName
) na
tabela do BigQuery de destino.
Resolução de problemas de pedidos de exportação de 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.