Classes de armazenamento DICOM

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

  1. 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 DICOM
    • DICOM_STORE_ID: o ID do armazenamento DICOM
    • STUDY_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 de STANDARD, NEARLINE, COLDLINE ou ARCHIVE.

    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 Content

    APIs 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.

    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. 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 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/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
    A saída é esta: Quando a resposta contém "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 e 567.890 no estudo 1.666.333.111
  • Três instâncias individuais com IDs como 111, 222 e 333 na estudo 1.888.999.222 e série 123.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:

  1. 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]
  2. 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.

  3. 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.

  4. 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:

  1. Crie um arquivo de filtro com os objetos DICOM que você está filtrando.
  2. 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

  1. 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 DICOM
    • DICOM_STORE_ID: o ID do repositório DICOM
    • STORAGE_CLASS: a classe de armazenamento dos objetos DICOM. Um de STANDARD, NEARLINE, COLDLINE ou ARCHIVE.
    • CLOUD_STORAGE_BUCKET: o nome do bucket do Cloud Storage que contém o arquivo de filtro
    • FILTER_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 Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. 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 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/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
    A saída é esta: Quando a resposta contém "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 DICOM
  • DICOM_STORE_ID: o ID do armazenamento DICOM
  • STUDY_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 exportados
  • BIGQUERY_TABLE: a tabela do BigQuery que contém os metadados do DICOM exportados.