Nesta página, explicamos como exportar instâncias DICOM e importar objetos DICOM do Cloud Storage. Uma instância DICOM normalmente é uma imagem, mas pode ser outro tipo de dados persistentes, como um relatório estruturado. Um objeto DICOM no Cloud Storage é uma instância DICOM que reside no Cloud Storage. Para mais informações, consulte Cloud Storage.
Como definir permissões do Cloud Storage
Antes de exportar e importar dados DICOM de e para o Cloud Storage, você precisa conceder permissões extras à conta de serviço Agente de serviço do Cloud Healthcare. Para mais informações, consulte Permissões do Cloud Storage para armazenamento DICOM.
Como importar objetos DICOM
Para importar vários arquivos de instância DICOM para um armazenamento DICOM, use um dos seguintes métodos:
- Armazene os dados de modo programático diretamente em um armazenamento DICOM da sua máquina local usando o serviço da Web RESTful Armazenar transação, conforme implementado na API Cloud Healthcare.
- Faça upload dos dados DICOM em um bucket do Cloud Storage e importe os arquivos para um armazenamento DICOM usando uma única operação de importação, conforme explicado nesta seção.
Os exemplos a seguir mostram como importar objetos DICOM de um bucket do Cloud Storage.
Console
Para importar objetos DICOM de um bucket do Cloud Storage, siga estas etapas:
- No console do Google Cloud, acesse a página Conjuntos de dados.
Acessar a página Conjuntos de dados - Clique no conjunto de dados que contém o armazenamento DICOM para o qual você está importando objetos DICOM.
- Na lista de armazenamentos de dados, escolha Importar na lista Ações
para o armazenamento DICOM.
A página Importar para armazenamento DICOM é exibida. - Na lista Projeto, selecione um projeto do Cloud Storage.
- Na lista Local, selecione um bucket do Cloud Storage.
- Para definir um local específico para importar arquivos, faça o seguinte:
- Expanda Opções avançadas.
- Selecione Modificar caminho do Cloud Storage.
- Para definir uma origem específica para a importação de arquivos, defina o caminho
usando as seguintes variáveis na caixa de texto Local:
*
: corresponde a caracteres não separadores.**
: corresponde a caracteres, incluindo separadores. Isso pode ser usado com uma extensão de nome de arquivo para corresponder a todos os arquivos do mesmo tipo.?
: corresponde a um caractere.
- Clique em Importar para importar objetos DICOM da origem definida.
- 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 importar objetos DICOM de um bucket do Cloud Storage, use o comando gcloud healthcare dicom-stores import gcs
. Especifique o nome do conjunto de dados pai, o nome do armazenamento DICOM e o local do objeto em um bucket do Cloud Storage.
- O local dos arquivos no bucket é arbitrário e não precisa aderir exatamente ao formato especificado na amostra a seguir.
- Ao especificar o local dos objetos DICOM no Cloud Storage, use caracteres curinga para importar vários arquivos de um ou mais diretórios.
Os seguintes caracteres curinga são suportados:
- Use
*
para corresponder a 0 ou mais caracteres que não sejam separadores. Por exemplo,gs://BUCKET/DIRECTORY/Example*.dcm
corresponde a Example.dcm e Example22.dcm em DIRECTORY. - Use
**
para corresponder a 0 ou mais caracteres (incluindo separadores). Precisa ser usado no final de um caminho e sem outros caracteres curinga no caminho. Também pode ser usado com uma extensão de nome de arquivo (como .dcm), que importa todos os arquivos com a extensão de nome de arquivo no diretório especificado e seus subdiretórios. Por exemplo,gs://BUCKET/DIRECTORY/**.dcm
importa todos os arquivos com a extensão de nome de arquivo .dcm em DIRECTORY e seus subdiretórios. - Use
?
para corresponder a um caractere. Por exemplo,gs://BUCKET/DIRECTORY/Example?.dcm
corresponde a Example1.dcm, mas não corresponde a Example.dcm nem Example01.dcm.
- Use
O exemplo a seguir mostra como importar objetos DICOM de um bucket do Cloud Storage.
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
A linha de comando exibe o ID da operação:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver o status da operação, execute o
comando
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Depois que o comando for concluído, a resposta incluirá done: true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Para importar objetos DICOM de um bucket do Cloud Storage, use o método projects.locations.datasets.dicomStores.import
.
- O local dos arquivos no bucket pode variar e não precisa corresponder ao formato especificado nas amostras a seguir.
- Ao especificar o local dos objetos DICOM no Cloud Storage,
use caracteres curinga para importar vários arquivos de um ou mais diretórios.
Os seguintes caracteres curinga são suportados:
- Use
*
para corresponder a 0 ou mais caracteres que não sejam separadores. Por exemplo,gs://BUCKET/DIRECTORY/Example*.dcm
corresponde a Example.dcm e Example22.dcm em DIRECTORY. - Use
**
para corresponder a 0 ou mais caracteres (incluindo separadores). Precisa ser usado no final de um caminho e sem outros caracteres curinga no caminho. Também pode ser usado com uma extensão de nome de arquivo (como .dcm), que importa todos os arquivos com a extensão de nome de arquivo no diretório especificado e seus subdiretórios. Por exemplo,gs://BUCKET/DIRECTORY/**.dcm
importa todos os arquivos com a extensão de nome de arquivo .dcm em DIRECTORY e seus subdiretórios. - Use
?
para corresponder a um caractere. Por exemplo,gs://BUCKET/DIRECTORY/Example?.dcm
corresponde a Example1.dcm, mas não corresponde a Example.dcm nem Example01.dcm.
- Use
REST
Importe o objeto 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 DICOMDICOM_STORE_ID
: o ID do armazenamento DICOMBUCKET/PATH/TO/FILE
: o caminho para o objeto DICOM no Cloud Storage
Corpo JSON da solicitação:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }
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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } 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" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand ContentConfira 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;
- LOCATION: o local do conjunto de dados;
- DATASET_ID: o conjunto de dados pai do armazenamento DICOM
- 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 Content
Go
Java
Node.js
Python
Para recuperar uma única instância ou estudo de um armazenamento DICOM, recupere dados DICOM usando o serviço da Web RESTful Recuperar transação, conforme implementado na API Cloud Healthcare.
Especificar uma classe de armazenamento para importar objetos DICOM (pré-lançamento)
Por padrão, o método projects.locations.datasets.dicomStores.import
importa
um objeto DICOM para um armazenamento DICOM com uma classe de armazenamento padrão. É possível definir a
classe de armazenamento ao importar objetos DICOM do Cloud Storage.
Para mais informações, consulte
Alterar a classe de armazenamento DICOM.
Os exemplos a seguir mostram como especificar a classe de armazenamento ao importar objetos DICOM do Cloud Storage.
REST
Use o método projects.locations.datasets.dicomStores.import
.
Importe o objeto 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 DICOMDICOM_STORE_ID
: o ID do armazenamento DICOMBUCKET/PATH/TO/FILE
: o caminho para o objeto DICOM no Cloud StorageSTORAGE_CLASS
: a classe de armazenamento do objeto DICOM no armazenamento DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Corpo JSON da solicitação:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } }
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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } 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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | 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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand ContentConfira 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;
- LOCATION: o local do conjunto de dados;
- DATASET_ID: o conjunto de dados pai do armazenamento DICOM
- 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Solução de problemas de solicitações de importação do DICOM
Se ocorrerem erros durante uma solicitação de importação do DICOM, eles serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.
Como exportar instâncias DICOM
Os exemplos a seguir mostram como exportar instâncias DICOM para um bucket do Cloud Storage. Quando você exporta instâncias DICOM de um armazenamento DICOM, todas as instâncias nele são exportadas.
Console
Para exportar instâncias DICOM para o Cloud Storage, siga estas etapas:
- No console do Google Cloud, acesse a página Conjuntos de dados.
Acessar a página Conjuntos de dados - Clique no conjunto de dados que contém o armazenamento DICOM do qual você está exportando instâncias DICOM.
- Na lista de armazenamentos de dados, escolha Exportar na lista de Ações para o armazenamento DICOM.
- Na página Exportar armazenamento DICOM Store, selecione Bucket do Google Cloud Storage.
- Na lista Projeto, selecione um projeto do Cloud Storage.
- Na lista Local, selecione um bucket do Cloud Storage.
- Em Configurações de exportação DICOM, selecione o tipo de arquivo usado para exportar
as instâncias DICOM. Os seguintes tipos estão disponíveis:
- Arquivo DICOM (
.dcm
) - octet-stream
- Imagem (
.jpg
,.png
)
- Arquivo DICOM (
- Para definir a sintaxe de transferência adicional, escolha a sintaxe na lista Sintaxe de transferência.
- Clique em Exportar para exportar instâncias DICOM para o local definido no Cloud Storage.
- 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 instâncias DICOM para um bucket do Cloud Storage, use o comando gcloud healthcare dicom-stores export gcs
.
- Forneça o nome do conjunto de dados pai, o nome do armazenamento DICOM e o bucket de destino do Cloud Storage.
- Grave em um bucket ou diretório do Cloud Storage, em vez de um objeto, porque a API Cloud Healthcare cria um arquivo
.dcm
para cada objeto. - Se o comando especificar um diretório que não existe, o diretório será criado.
A amostra a seguir exibe o comando gcloud healthcare dicom-stores export gcs
.
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
A linha de comando exibe o ID da operação:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver o status da operação, execute o
comando
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Depois que o comando for concluído, a resposta incluirá done: true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Para exportar instâncias DICOM para um bucket do Cloud Storage, use o método projects.locations.datasets.dicomStores.export
.
- Grave em um bucket ou diretório do Cloud Storage, em vez de um objeto, porque a API Cloud Healthcare cria um arquivo
.dcm
para cada objeto DICOM. - Se o comando especificar um diretório que não existe, o diretório será criado.
curl
Para exportar instâncias DICOM, faça uma solicitação POST
e forneça as seguintes informações:
- O nome e o local do conjunto de dados pai.
- O nome do armazenamento DICOM
- O bucket de destino do Cloud Storage
O exemplo a seguir mostra uma solicitação POST
usando curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Para rastrear o status da operação,
use o
Método get
da operação:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES } }, "done": true, "response": { "@type": "..." } }
PowerShell
Para exportar instâncias DICOM, faça uma solicitação POST
e forneça as seguintes informações:
- O nome e o local do conjunto de dados pai.
- O nome do armazenamento DICOM
- O bucket de destino do Cloud Storage
O exemplo a seguir mostra uma solicitação POST
usando o Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Para rastrear o status da operação,
use o
Método get
da operação:
$cred = gcloud auth application-default 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 Content
Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES }, }, "done": true, "response": { "@type": "..." } }
Go
Java
Node.js
Python
Como exportar instâncias DICOM usando filtros
Por padrão, quando você exporta arquivos DICOM para o Cloud Storage, todos os arquivos DICOM no armazenamento DICOM são exportados. Da mesma forma, ao exportar metadados DICOM para o BigQuery, os metadados de todos os dados DICOM no armazenamento DICOM são exportados.
É possível exportar um subconjunto de dados ou metadados DICOM usando um arquivo de filtro.
Configurar um arquivo de filtro
- Cada linha no arquivo de filtro define o estudo, a série ou a instância e
usa o formato
/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID
. - É possível truncar uma linha para especificar o nível em que o filtro funciona.
Por exemplo, é possível selecionar um estudo inteiro especificando
/studies/STUDY_INSTANCE_UID
. Você também pode selecionar uma série inteira especificando/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
.
Considere o seguinte arquivo de filtro:
/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
Este arquivo de filtro de exemplo se aplica ao seguinte:
- O estudo inteiro com o UID da instância do estudo como
1.123.456.789
- Duas séries separadas com UIDs de instância de série como
123.456
e567.890
no estudo1.666.333.111
- Três instâncias individuais com IDs de instância como
111
,222
e333
no estudo1.888.999.222
e na série123.456
Criar um arquivo de filtro usando o BigQuery
Para criar um arquivo de filtro usando o BigQuery, primeiro é necessário exportar os metadados da sua loja DICOM para o BigQuery. Os metadados exportados mostram os UIDs de estudo, série e instância dos dados DICOM no armazenamento DICOM.
Depois de exportar os metadados, siga estas etapas:
Execute uma consulta para retornar os UIDs do estudo, da série e das instâncias que você quer adicionar ao arquivo de filtro.
Por exemplo, a consulta a seguir mostra como concatenar os UIDs de estudo, série e instância para corresponder aos requisitos do formato do arquivo de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
Opcional: se a consulta retornar um conjunto de resultados grande que exceda o tamanho máximo de resposta, salve os resultados da consulta em uma nova tabela de destino no BigQuery.
Salve os resultados da consulta em um arquivo e exporte-os para o Cloud Storage. Se você salvou os resultados da consulta em uma nova tabela de destino na etapa 2, consulte Exportar dados de tabela para exportar o conteúdo da tabela para o Cloud Storage.
Edite o arquivo exportado conforme necessário e inclua-o na sua solicitação para mudar a classe de armazenamento de vários objetos DICOM.
Criar um arquivo de filtro manualmente
Para criar um arquivo de filtro manualmente, faça o seguinte:
- Crie um arquivo de filtro com os objetos DICOM que você está filtrando.
- Faça upload do arquivo de filtro para o Cloud Storage. Para instruções, consulte Fazer upload de objetos de um sistema de arquivos.
Como transmitir o arquivo de filtro
Depois de criar um arquivo de filtro, chame a operação de exportação DICOM e transmita-o usando a API REST. Os exemplos a seguir mostram como exportar dados DICOM usando um filtro.
gcloud
Para exportar metadados DICOM para o Cloud Storage usando um filtro, use o
comando
gcloud beta healthcare dicom-stores export gcs
:
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
Substitua:
- DICOM_STORE_ID: o identificador do armazenamento DICOM
- DATASET_ID: o nome do conjunto de dados pai do armazenamento DICOM
- LOCATION: o local do conjunto de dados pai do armazenamento DICOM
- DESTINATION_BUCKET/DIRECTORY: o bucket de destino no Cloud Storage
- BUCKET/DIRECTORY/FILTER_FILE: o local do arquivo de filtro em um bucket do Cloud Storage
A saída é esta:
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
Para ver o status da operação, execute o
comando
gcloud healthcare operations describe
e forneça o OPERATION_ID da resposta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Substitua:
- OPERATION_ID: o número de ID retornado na resposta anterior
- DATASET_ID: o nome do conjunto de dados pai do armazenamento DICOM
- LOCATION: o local do conjunto de dados pai do armazenamento DICOM
A saída é esta:
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
Para exportar dados do DICOM usando um filtro, use o método projects.locations.datasets.dicomStores.export
.
curl
Para exportar dados DICOM usando um arquivo de filtro, faça uma solicitação POST
e forneça as
seguintes informações:
- O nome e o local do conjunto de dados pai.
- O nome do armazenamento DICOM
- O bucket de destino do Cloud Storage
- O local do arquivo de filtro em um bucket do Cloud Storage
O exemplo a seguir mostra uma solicitação POST
usando curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Se a solicitação for bem-sucedida, o servidor retornará a seguinte resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Use o
Método get
da operação
para rastrear o status da operação:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
Se a solicitação for bem-sucedida, o servidor retornará a seguinte resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
PowerShell
Para exportar dados DICOM usando um arquivo de filtro, faça uma solicitação POST
e forneça as
seguintes informações:
- O nome e o local do conjunto de dados pai.
- O nome do armazenamento DICOM
- O bucket de destino do Cloud Storage
- O local do arquivo de filtro em um bucket do Cloud Storage
O exemplo a seguir mostra uma solicitação POST
usando o Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Se a solicitação for bem-sucedida, o servidor retornará a seguinte resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Use o
Método get
da operação
para rastrear o status da operação:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
Se a solicitação for bem-sucedida, o servidor retornará a seguinte resposta com o status da operação no formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
Solução de problemas de solicitações de exportação do DICOM
Se ocorrerem erros durante uma solicitação de exportação do DICOM, eles serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.
Se toda a operação retornar um erro, consulte Solução de problemas de operações de longa duração.