Esta página descreve como alterar a classe de armazenamento para dados DICOM em API Cloud Healthcare.
Visão geral
A API Cloud Healthcare oferece as seguintes classes de armazenamento:
- Padrão
- Nearline
- Coldline
- Archive
Essas classes de armazenamento são semelhantes à no Cloud Storage.
É possível alterar a classe de armazenamento do seu objeto DICOM como uma medida de economia de custos em cenários como os seguintes:
- Mover uma série de imagens DICOM acessadas com pouca frequência Standard Storage para Nearline ou Coldline Storage. Isso libera os buckets de armazenamento padrão para armazenar imagens com mais acessados com frequência.
- Como transferir dados de pacientes do Standard Storage para o Archive Storage para arquivar dados que precisam ser retidos por motivos legais. 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 usando os seguintes métodos:
- A
import
método: defina a classe de armazenamento ao importar uma instância DICOM de um bucket do Cloud Storage com o CampoblobStorageSettings
- A
storeInstances
método: defina a classe de armazenamento ao armazenar um objeto DICOM a partir de um caminho local - O método
setBlobStorageSettings
: altere a classe de armazenamento de um instância, em um armazenamento DICOM no nível da 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ço:
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 uma instância, série ou nível de 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
.
- Alterar a classe de armazenamento da instância DICOM na instância
nível
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 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 do objeto DICOM no armazenamento DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
.
Corpo JSON da solicitação:
{ "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 - Confira 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
No nível da série
Para alterar a classe de armazenamento de uma instância DICOM em um nível de série, conclua estas etapas:
REST
Use o método projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
.
- Alterar a classe de armazenamento da instância DICOM na série
nível
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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.SERIES_INSTANCE_UID
: o identificador exclusivo da instância de série.STORAGE_CLASS
: a classe de armazenamento do objeto DICOM no armazenamento DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
.
Corpo JSON da solicitação:
{ "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 - Confira 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
No nível de estudo
Para alterar a classe de armazenamento de uma instância DICOM em um nível de estudo, conclua estas etapas:
REST
Use o método projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
.
- Alterar a classe de armazenamento da instância DICOM no estudo
nível
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 DICOMSTUDY_INSTANCE_UID
: o identificador exclusivo da instância do estudo.STORAGE_CLASS
: a classe de armazenamento do objeto DICOM no armazenamento DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
.
Corpo JSON da solicitação:
{ "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 - Confira 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
Usar filtros
A seção a seguir mostra como filtrar instâncias específicas e alterar as respectivas classe de armazenamento no nível de estudo, série ou instância usando um arquivo de filtro.
Você precisa adicionar o papel Leitor de objetos do Storage à conta de serviço do Agente de serviço do Healthcare, que tem acesso ao bucket em que o arquivo de filtro está armazenado.
Configurar um arquivo de filtro
Usando um arquivo de filtro, defina 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 alterar a classe de armazenamento de um
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
Esse arquivo de filtro resulta na filtragem do 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, 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, siga estas etapas:
Consulte os UIDs do estudo, da série e da instância necessários.
Por exemplo, depois de exportar os metadados DICOM para o BigQuery, execute a consulta a seguir para concatenar os estudos, as séries os UIDs da instância para que correspondam aos requisitos de 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 e exportá-lo 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 use-o como o arquivo de filtro. O local do arquivo de filtro no Cloud Storage é obrigatório em o método
setBlobStorageSettings
.
Criar um arquivo de filtro manualmente
Para criar um arquivo de filtro com conteúdo personalizado e fazer o upload para um bucket do Cloud Storage; siga estas etapas:
Criar um arquivo de filtro com uma lista de instâncias cuja classe de armazenamento precisa na sua máquina local. Use o formato descrito no Configurar arquivo de filtro nesta seção.
Faça upload do arquivo de texto do filtro para um local do Cloud Storage.
gcloud storage 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 local.FILTER_FILE_NAME
: o nome do arquivo de filtro.BUCKET/DIRECTORY
: o caminho para o local do Cloud Storage.
Exemplo:
gcloud storage cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
Transmita o arquivo de filtro
REST
Usar a
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 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 do objeto DICOM no armazenamento DICOM deSTANDARD
,NEARLINE
,COLDLINE
eARCHIVE
.BUCKET/DIRECTORY
Corpo JSON da solicitação:
{ "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 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
Verificar a classe de armazenamento de uma instância DICOM
Usar o método getStorageInfo
Os exemplos a seguir mostram como visualizar a classe de armazenamento de uma instância DICOM.
REST
Use oprojects.locations.datasets.dicomStores.dicomWeb.studies.series.instances.getStorageInfo
.
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 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/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
Você também pode exportar metadados do DICOM para o BigQuery e consultar o conjunto de dados do BigQuery para conferir as classes de armazenamento Instâncias DICOM.
Por exemplo, você pode executar a consulta abaixo para conferir o UID da instância do estudo: o UID da instância de série, o UID da instância, o tamanho do armazenamento do blob e o blob a classe de armazenamento de todas as instâncias no conjunto de dados do BigQuery:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000