Esta página descreve como gerenciar dados DICOM na API Cloud Healthcare usando diferentes classes de armazenamento. Escolher a classe de armazenamento certa pode ajudar você reduz custos e atende aos requisitos regulatórios de retenção de dados.
Esta página é destinada a usuários técnicos já familiarizados com 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 características de custo e desempenho diferentes você acessa seus dados e por quanto tempo precisa armazená-los. Para mais informações sobre cada classe de armazenamento, consulte Descrições de classe.
É possível alterar a classe de armazenamento dos objetos DICOM, dependendo de como a frequência em que você acessa o objeto ou por quanto tempo ele precisa ser mantido. Exemplo:
- É possível mover imagens DICOM raramente acessadas do Standard Storage para Nearline ou Coldline Storage para economizar nos custos de faturamento.
- Você pode mover para o Archive Storage dados de pacientes que precisam ser mantidos por motivos legais 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 a própria estrutura de preços. Como alterar a classe de armazenamento dos objetos DICOM pode afetar os custos de faturamento. Para saber mais, consulte:
Mudar a classe de armazenamento de objetos DICOM individuais
É possível alterar a classe de armazenamento dos objetos DICOM no nível do estudo, da série ou no nível da instância.
Os exemplos a seguir mostram como alterar 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 do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância de série.INSTANCE_UID
: o identificador exclusivo da instância.STORAGE_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 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.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
, o A LRO foi 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 alterar as classe de armazenamento de objetos DICOM com base em um critério de filtro.
Filtrar requisitos 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
. - Você pode 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
ou selecione uma a 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 exemplo de arquivo de filtro se aplica ao seguinte:
- Todo o estudo com o UID da instância do estudo como
1.123.456.789
- Duas séries separadas com UIDs da instância da série
123.456
e567.890
no estudo1.666.333.111
- Três instâncias individuais com IDs como
111
,222
e333
na estudo1.888.999.222
e série123.456
Criar um arquivo de filtro usando o BigQuery
Para criar um arquivo de filtro usando o BigQuery, primeiro você precisa exportar os metadados do seu armazenamento DICOM para o BigQuery. Os metadados exportados mostra os UIDs do estudo, da série e da instância dos dados DICOM no loja on-line.
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 da resposta, salve os resultados da consulta em uma nova tabela de destino. no BigQuery.
Salve os resultados da consulta em um arquivo e exporte-o para o Cloud Storage. Se você salvou os resultados da consulta para uma nova tabela de destino na Etapa 2, consulte Exportar os dados da tabela para exportar os dados para o Cloud Storage.
Edite o arquivo exportado conforme necessário e inclua-o em sua solicitação para alterar 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 Faça 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 alterar 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 repositório DICOMSTORAGE_CLASS
: a classe de armazenamento dos 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
, o A LRO foi concluída.
Visualizar 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 do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância de série.INSTANCE_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, em seguida, executar consultas para visualizar as classes de armazenamento dos objetos DICOM exportados.
A consulta a seguir mostra como recuperar o estudo o UID da instância, o UID da instância de série, o UID da instância, o tamanho do armazenamento, e 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 do DICOM exportadosBIGQUERY_TABLE
: a tabela do BigQuery que contém os metadados do DICOM exportados.