Nesta página, descrevemos como alterar a classe de armazenamento para dados DICOM na API Cloud Healthcare.
Visão geral
A API Cloud Healthcare oferece as seguintes classes de armazenamento:
- Standard
- Nearline
- Coldline
- Archive
Essas classes de armazenamento são semelhantes às do Cloud Storage.
É possível alterar a classe de armazenamento do objeto DICOM como uma medida de economia de custos em cenários como os seguintes:
- Mover uma série de imagens DICOM acessada com pouca frequência do armazenamento padrão para o armazenamento nearline ou coldline. Isso libera os buckets de armazenamento padrão para armazenar imagens que são acessadas com mais frequência.
- Mover dados de pacientes do armazenamento padrão para o armazenamento de arquivos para arquivar dados que precisam ser retidos por motivos legais. O Archive Storage é a classe de armazenamento de menor custo e alta durabilidade.
Métodos para alterar a classe de armazenamento DICOM
Por padrão, uma instância DICOM tem uma classe de armazenamento padrão. É possível alterar a classe de armazenamento usando os seguintes métodos:
- O método
import
: defina a classe de armazenamento ao importar uma instância DICOM de um bucket do Cloud Storage com o campoblobStorageSettings
. - O método
storeInstances
: defina a classe de armazenamento ao armazenar uma instância DICOM de um caminho local. - O método
setBlobStorageSettings
: altere a classe de armazenamento de uma instância DICOM em um armazenamento DICOM no nível de instância, série ou estudo.
Antes de começar
Antes de alterar a classe de armazenamento das instâncias DICOM na API Cloud Healthcare, confira os seguintes detalhes de preços:
Alterar a classe de armazenamento de uma instância DICOM
Os exemplos a seguir mostram como alterar a classe de armazenamento de uma instância DICOM em um nível de instância, série ou estudo.
No nível da instância
Para alterar a classe de armazenamento de uma instância DICOM no nível da instância, conclua estas etapas:
REST
Use o
método
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
.
- Altere a classe de armazenamento da instância DICOM no nível da
instância.
Antes de usar os dados da solicitação, 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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância da série.INSTANCE_UID
: o identificador exclusivo da instância.STORAGE_CLASS
: a classe de armazenamento para o objeto DICOM no repositório DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Solicitar corpo JSON:
{ "blobStorageSettings": { "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' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/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": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Veja o status da operação de longa duração.
Antes de usar os dados da solicitação, 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
No nível da série
Para alterar a classe de armazenamento de uma instância DICOM no nível da série, siga estas etapas:
REST
Use o
método
projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
.
- Altere a classe de armazenamento da instância DICOM no nível da
série.
Antes de usar os dados da solicitação, 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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância da série.STORAGE_CLASS
: a classe de armazenamento para o objeto DICOM no repositório DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Solicitar corpo JSON:
{ "blobStorageSettings": { "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' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_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": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Veja o status da operação de longa duração.
Antes de usar os dados da solicitação, 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
No nível de estudo
Para alterar a classe de armazenamento de uma instância DICOM no nível de estudo, siga estas etapas:
REST
Use o
método
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
.
- Altere a classe de armazenamento da instância DICOM no nível do
estudo.
Antes de usar os dados da solicitação, 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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.STORAGE_CLASS
: a classe de armazenamento para o objeto DICOM no repositório DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
Solicitar corpo JSON:
{ "blobStorageSettings": { "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' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_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": { "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/dicomWeb/studies/STUDY_INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content - Veja o status da operação de longa duração.
Antes de usar os dados da solicitação, 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
Usar filtros
A seção a seguir mostra como filtrar instâncias específicas e alterar a classe de armazenamento delas no nível de estudo, série ou instância usando um arquivo de filtro.
Adicione o papel de Leitor de objetos do Storage à conta de serviço do Agente de serviço do Healthcare, que tem acesso ao bucket onde o arquivo de filtro está armazenado.
Configurar um arquivo de filtro
Usando um arquivo de filtro, é possível definir a lista de arquivos DICOM cuja classe de armazenamento precisa ser alterada.
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 mudar a classe de armazenamento de um estudo inteiro especificando
/studies/STUDY_INSTANCE_UID
ou a classe de armazenamento de 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
Esse arquivo de filtro resulta na filtragem do 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 da série123.456
Criar um arquivo de filtro usando o BigQuery
Para criar um arquivo de filtro usando o BigQuery, você precisa exportar os metadados do repositório DICOM para o BigQuery. Os metadados exportados mostram os UIDs de estudo, série e instância dos dados DICOM no repositório DICOM.
Depois de exportar, siga estas etapas:
Consulte os UIDs de estudo, série e instância necessários.
Por exemplo, depois de exportar metadados DICOM para o BigQuery, execute a seguinte consulta para concatenar os UIDs de estudo, série e instância para corresponder aos requisitos de formato de arquivo do filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
Opcional: se a consulta retornar um grande conjunto de resultados que exceda o tamanho máximo da resposta, salve os resultados 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 em uma nova tabela de destino na etapa 2, consulte Como exportar os dados da tabela para exportar o conteúdo da tabela para o Cloud Storage.
Edite o arquivo exportado conforme necessário e use-o como o arquivo de filtro. O local do arquivo de filtro no Cloud Storage é necessário no método
setBlobStorageSettings
.
Criar um arquivo de filtro manualmente
Para criar um arquivo de filtro com conteúdo personalizado e fazer upload dele para um bucket do Cloud Storage, siga estas etapas:
Crie um arquivo de filtro contendo uma lista de instâncias cuja classe de armazenamento precisa ser alterada na máquina local. Use o formato descrito na seção Configurar arquivo de filtro.
Faça upload do arquivo de texto do filtro em um local do Cloud Storage.
gsutil cp PATH_TO_FILTER_FILE/FILTER_FILE_NAME.txt gs://BUCKET/DIRECTORY
Substitua:
PATH_TO_FILTER_FILE
: o caminho para o arquivo de filtro na máquina localFILTER_FILE_NAME
: o nome do arquivo de filtroBUCKET/DIRECTORY
: o caminho para o local do Cloud Storage
Exemplo:
gsutil cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
Transmitir o arquivo de filtro
REST
Use o método
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
para alterar a classe de armazenamento de todas as instâncias no arquivo de filtro em um nível de armazenamento DICOM.Antes de usar os dados da solicitação, 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 para o objeto DICOM no repositório DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
BUCKET/DIRECTORY
Solicitar corpo JSON:
{ "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "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' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "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: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:@' { "filter_config": { "resource_paths_gcs_uri": "gs://BUCKET/DIRECTORY" }, "blobStorageSettings": { "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:setBlobStorageSettings" | Select-Object -Expand ContentVeja o status da operação de longa duração.
Antes de usar os dados da solicitação, 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
Verificar a classe de armazenamento de uma instância DICOM
Usar o método getStorageInfo
.
Os exemplos a seguir mostram como exibir a classe de armazenamento de uma instância DICOM.
REST
Use o métodoprojects.locations.datasets.dicomStores.dicomWeb.studies.series.instances.getStorageInfo
.
Antes de usar os dados da solicitação, 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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância da 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/v1beta1/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/v1beta1/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
Você receberá uma resposta JSON semelhante a esta:
Consultar metadados DICOM exportados no BigQuery
Também é possível exportar metadados DICOM para o BigQuery e consultar o conjunto de dados do BigQuery para visualizar as classes de armazenamento de instâncias DICOM.
Por exemplo, é possível executar a consulta a seguir para visualizar o UID da instância de estudo, o UID da instância em série, o UID da instância, o tamanho do armazenamento de blobs e a classe de armazenamento de blobs de todas as instâncias no seu conjunto de dados do BigQuery:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000