Esta página descreve como gerir dados DICOM na Cloud Healthcare API com diferentes classes de armazenamento. Escolher a classe de armazenamento certa pode ajudar a reduzir os custos e cumprir os requisitos regulamentares de retenção de dados.
Esta página destina-se a utilizadores técnicos que já conhecem o DICOM e a Cloud Healthcare API.
Vista geral
As classes de armazenamento DICOM funcionam de forma semelhante às classes de armazenamento do Cloud Storage, oferecendo diferentes características de custo e desempenho com base na frequência com que acede aos seus dados e no tempo que precisa de os armazenar. Para mais informações sobre cada classe de armazenamento, consulte as descrições das classes.
Pode alterar a classe de armazenamento de objetos DICOM consoante a frequência com que acede ao objeto ou o tempo durante o qual o objeto tem de ser mantido. Por exemplo:
- Pode mover imagens DICOM acedidas raramente do armazenamento Standard para o armazenamento Nearline ou Coldline para poupar nos custos de faturação.
- Pode mover os dados dos pacientes que têm de ser mantidos por motivos legais para o armazenamento de arquivo, que é a classe de armazenamento mais barata e duradoura.
Classes de armazenamento DICOM disponíveis
Pode usar as seguintes classes de armazenamento para os seus objetos DICOM:
- Padrão (predefinição)
- Nearline
- Coldline
- Arquivar
Preços da classe de armazenamento
Cada classe de armazenamento tem a sua própria estrutura de preços. A alteração da classe de armazenamento dos seus objetos DICOM pode afetar os custos de faturação. Para mais informações, consulte o seguinte:
Altere a classe de armazenamento para objetos DICOM individuais
Pode alterar a classe de armazenamento de objetos DICOM ao nível do estudo, da série ou da instância.
Os exemplos seguintes mostram como alterar a classe de armazenamento de uma instância DICOM.
REST
Altere a classe de armazenamento da instância DICOM através do método
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do 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. Uma das seguintes opções:STANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.
Corpo JSON do pedido:
{ "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" } }
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' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" } } 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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings"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:@' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" } } '@ | 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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings" | 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.Obtenha o estado da operação de execução longa através do método
projects.locations.datasets.operations.get
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMOPERATION_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 Content"done": true
, o LRO terminou.
Altere a classe de armazenamento de vários objetos através de um ficheiro de filtro
As secções seguintes mostram como criar e usar um ficheiro de filtro para alterar a classe de armazenamento de objetos DICOM com base num critério de filtro.
Requisitos do ficheiro de filtro
- Cada linha no ficheiro de filtros 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
. - Pode truncar uma linha para especificar o nível em que o filtro funciona.
Por exemplo, pode selecionar um estudo completo especificando
/studies/STUDY_INSTANCE_UID
ou pode selecionar uma série completa especificando/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
.
Considere o seguinte ficheiro 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 ficheiro de filtro de exemplo aplica-se ao seguinte:
- Todo o estudo 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
Crie um ficheiro de filtro com o BigQuery
Para criar um ficheiro de filtros com o BigQuery, tem de exportar primeiro os metadados do seu arquivo DICOM para o BigQuery. Os metadados exportados mostram os UIDs de estudo, série e instância dos dados DICOM no seu arquivo DICOM.
Depois de exportar os metadados, conclua os seguintes passos:
Execute uma consulta para devolver os UIDs do estudo, da série e das instâncias que quer adicionar ao ficheiro de filtros.
Por exemplo, a consulta seguinte mostra como concatenar os UIDs do estudo, da série e da instância para corresponder aos requisitos do formato de ficheiro de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
Opcional: se a consulta devolver um conjunto de resultados grande que exceda o tamanho máximo da resposta, guarde os resultados da consulta numa nova tabela de destino no BigQuery.
Guarde os resultados da consulta num ficheiro e exporte-o para o Cloud Storage. Se guardou os resultados da consulta numa nova tabela de destino no passo 2, consulte Exportar dados da tabela para exportar o conteúdo da tabela para o Cloud Storage.
Edite o ficheiro exportado conforme necessário e inclua-o no seu pedido para alterar a classe de armazenamento de vários objetos DICOM.
Crie um ficheiro de filtro manualmente
Para criar um ficheiro de filtro manualmente, faça o seguinte:
- Crie um ficheiro de filtro que contenha os objetos DICOM nos quais está a aplicar o filtro.
- Carregue o ficheiro de filtro para o Cloud Storage. Para ver instruções, consulte o artigo Carregue objetos a partir de um sistema de ficheiros.
Use um ficheiro de filtro
Os exemplos seguintes mostram como aplicar um ficheiro de filtro ao alterar a classe de armazenamento de objetos DICOM.
REST
Altere a classe de armazenamento das instâncias DICOM no ficheiro de filtro através do método
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTORAGE_CLASS
: a classe de armazenamento dos objetos DICOM. Uma das seguintes opções:STANDARD
,NEARLINE
,COLDLINE
ouARCHIVE
.CLOUD_STORAGE_BUCKET
: o nome do contentor do Cloud Storage que contém o ficheiro de filtroFILTER_FILE_PATH
: o URI totalmente qualificado para o ficheiro de filtro no contentor do Cloud Storage
Corpo JSON do pedido:
{ "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } }
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' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } 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" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:setBlobStorageSettings"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:@' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } '@ | 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" `
-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
. Precisa deste valor no passo seguinte.Obtenha o estado da operação de execução longa através do método
projects.locations.datasets.operations.get
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMOPERATION_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 Content"done": true
, o LRO terminou.
Veja a classe de armazenamento de um objeto DICOM
Pode ver a classe de armazenamento de objetos DICOM ao nível do estudo, da série ou da instância.
As secções seguintes descrevem como ver a classe de armazenamento de uma instância DICOM.
Obtenha informações da classe de armazenamento para um objeto DICOM
Os exemplos seguintes mostram como usar o método
instances.getStorageInfo
para ver a classe de armazenamento de objetos DICOM.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o conjunto de dados principal do arquivo DICOMDICOM_STORE_ID
: o ID da loja DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudoSERIES_INSTANCE_UID
: o identificador exclusivo da instância da sérieINSTANCE_UID
: o identificador exclusivo da instância
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/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
Explorador 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.
Deve receber uma resposta JSON semelhante à seguinte:
Consulte metadados DICOM exportados no BigQuery
Pode exportar metadados DICOM para o BigQuery e, em seguida, executar consultas para ver as classes de armazenamento dos seus objetos DICOM exportados.
A consulta seguinte mostra como obter o UID da instância do estudo, o UID da instância da série, o UID da instância, o tamanho do armazenamento e a classe de armazenamento de até 1000 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 o seguinte:
PROJECT_ID
: o ID do seu Google Cloud projetoBIGQUERY_DATASET
: o conjunto de dados do BigQuery principal da tabela que contém os metadados DICOM exportadosBIGQUERY_TABLE
: a tabela do BigQuery que contém os metadados DICOM exportados