Classes de armazenamento DICOM

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

  1. 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 projeto
    • LOCATION: a localização do conjunto de dados
    • DATASET_ID: o conjunto de dados principal do arquivo DICOM
    • DICOM_STORE_ID: o ID da loja DICOM
    • STUDY_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 da instância DICOM. Uma das seguintes opções: STANDARD, NEARLINE, COLDLINE ou ARCHIVE.

    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 Content

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

    O resultado é o seguinte. A resposta contém um identificador para uma operação de longa duração (LRO). As operações de longa duração são devolvidas quando as chamadas de métodos podem demorar mais tempo a serem concluídas. Repare no valor de OPERATION_ID. Precisa deste valor no passo seguinte.

  2. 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 projeto
    • LOCATION: a localização do conjunto de dados
    • DATASET_ID: o conjunto de dados principal do arquivo DICOM
    • OPERATION_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
    O resultado é o seguinte. Quando a resposta contém "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 e 567.890 no estudo 1.666.333.111
  • Três instâncias individuais com IDs de instância como 111, 222 e 333 no estudo 1.888.999.222 e na série 123.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:

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

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

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

  1. Crie um ficheiro de filtro que contenha os objetos DICOM nos quais está a aplicar o filtro.
  2. 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

  1. 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 projeto
    • LOCATION: a localização do conjunto de dados
    • DATASET_ID: o conjunto de dados principal do arquivo DICOM
    • DICOM_STORE_ID: o ID da loja DICOM
    • STORAGE_CLASS: a classe de armazenamento dos objetos DICOM. Uma das seguintes opções: STANDARD, NEARLINE, COLDLINE ou ARCHIVE.
    • CLOUD_STORAGE_BUCKET: o nome do contentor do Cloud Storage que contém o ficheiro de filtro
    • FILTER_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 Content
    O resultado é o seguinte. A resposta contém um identificador para uma operação de longa duração (LRO). As operações de longa duração são devolvidas quando as chamadas de métodos podem demorar mais tempo a serem concluídas. Repare no valor de OPERATION_ID. Precisa deste valor no passo seguinte.

  2. 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 projeto
    • LOCATION: a localização do conjunto de dados
    • DATASET_ID: o conjunto de dados principal do arquivo DICOM
    • OPERATION_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
    O resultado é o seguinte. Quando a resposta contém "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 projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o conjunto de dados principal do arquivo DICOM
  • DICOM_STORE_ID: o ID da loja DICOM
  • STUDY_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 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 projeto
  • BIGQUERY_DATASET: o conjunto de dados do BigQuery principal da tabela que contém os metadados DICOM exportados
  • BIGQUERY_TABLE: a tabela do BigQuery que contém os metadados DICOM exportados