Esta página descreve como gerenciar dados DICOM na API Cloud Healthcare usando diferentes classes de armazenamento. A escolha da classe de armazenamento certa pode ajudar a reduzir custos e atender aos requisitos regulamentares de retenção de dados.
Esta página é destinada a usuários técnicos que já conhecem o DICOM e a API Cloud Healthcare.
Visão geral
As classes de armazenamento DICOM funcionam de maneira semelhante às classes de armazenamento do Cloud Storage, oferecendo diferentes características de custo e desempenho com base na frequência com que você acessa os dados e no tempo que precisa armazená-los. Para mais informações sobre cada classe de armazenamento, consulte Descrições de classe.
Talvez seja necessário mudar a classe de armazenamento de objetos DICOM dependendo da frequência de acesso ou do tempo de retenção do objeto. Exemplo:
- É possível mover imagens DICOM raramente acessadas do armazenamento padrão para o Nearline ou o Coldline e economizar nos custos de faturamento.
- É possível mover os dados do paciente que precisam ser mantidos por motivos legais para o Archive Storage, que é a classe de armazenamento mais barata e durável.
Classes de armazenamento DICOM disponíveis
É possível usar as seguintes classes de armazenamento para seus objetos DICOM:
- Padrão (padrão)
- Nearline
- Coldline
- Archive
Preços da classe de armazenamento
Cada classe de armazenamento tem uma estrutura de preços própria. Mudar a classe de armazenamento dos objetos DICOM pode afetar seus custos de faturamento. Para saber mais, consulte:
Mudar a classe de armazenamento de objetos DICOM individuais
É possível mudar a classe de armazenamento de objetos DICOM no nível do estudo, da série ou da instância.
Os exemplos a seguir mostram como mudar a classe de armazenamento de uma instância DICOM.
REST
Mude a classe de armazenamento da instância DICOM usando o método
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância de estudoSERIES_INSTANCE_UID
: o identificador exclusivo da instância da sérieINSTANCE_UID
: o identificador exclusivo da instânciaSTORAGE_CLASS
: a classe de armazenamento da instância DICOM. Um deSTANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.
Corpo JSON da solicitação:
{ "blobStorageSettings": { "blobStorageClass": "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' { "blobStorageSettings": { "blobStorageClass": "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; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings"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:@' { "blobStorageSettings": { "blobStorageClass": "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; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand ContentAPIs Explorer
Copie o corpo da solicitação e abra a 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.Confira o status da operação de longa duração usando o método
projects.locations.datasets.operations.get
.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 DICOMOPERATION_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"done": true
, a LRO é concluída.
Mudar a classe de armazenamento de vários objetos usando um arquivo de filtro
As seções a seguir mostram como criar e usar um arquivo de filtro para mudar a classe de armazenamento de objetos DICOM com base em um critério de filtro.
Requisitos de filtro de arquivo
- 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 exporte 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.
Usar um arquivo de filtro
Os exemplos a seguir mostram como aplicar um arquivo de filtro ao mudar a classe de armazenamento de objetos DICOM.
REST
Mude a classe de armazenamento das instâncias DICOM no arquivo de filtro usando o método
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.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 DICOMSTORAGE_CLASS
: a classe de armazenamento para os objetos DICOM. Um deSTANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.CLOUD_STORAGE_BUCKET
: o nome do bucket do Cloud Storage que contém o arquivo de filtroFILTER_FILE_PATH
: o URI totalmente qualificado para o arquivo de filtro no bucket do Cloud Storage
Corpo JSON da solicitação:
{ "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } }
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' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } 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:setBlobStorageSettings"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:@' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } '@ | 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:setBlobStorageSettings" | Select-Object -Expand ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.Confira o status da operação de longa duração usando o método
projects.locations.datasets.operations.get
.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 DICOMOPERATION_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"done": true
, a LRO é concluída.
Conferir a classe de armazenamento de um objeto DICOM
É possível conferir a classe de armazenamento de objetos DICOM no nível do estudo, da série ou da instância.
As seções a seguir descrevem como visualizar a classe de armazenamento de uma instância DICOM.
Conferir informações da classe de armazenamento de um objeto DICOM
Os exemplos a seguir mostram como usar
o método instances.getStorageInfo
para conferir a classe de armazenamento de objetos DICOM.
REST
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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância de estudoSERIES_INSTANCE_UID
: o identificador exclusivo da instância da sérieINSTANCE_UID
: o identificador exclusivo da instância
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo"
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo" | Select-Object -Expand Content
APIs Explorer
Abra a 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.
Você receberá uma resposta JSON semelhante a esta:
Consultar metadados DICOM exportados no BigQuery
É possível exportar metadados DICOM para o BigQuery e executar consultas para conferir as classes de armazenamento dos objetos DICOM exportados.
A consulta a seguir mostra como recuperar o UID da instância do estudo, o UID da instância da série, o UID da instância, o tamanho de armazenamento e a classe de armazenamento de até 1.000 instâncias DICOM de um conjunto de dados do BigQuery:
SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000
Substitua:
PROJECT_ID
: o ID do seu projeto do Google Cloud;BIGQUERY_DATASET
: o conjunto de dados pai do BigQuery da tabela que contém os metadados DICOM exportadosBIGQUERY_TABLE
: a tabela do BigQuery que contém os metadados do DICOM exportados