Clases de almacenamiento de DICOM

En esta página, se describe cómo administrar datos de DICOM en la API de Cloud Healthcare con diferentes clases de almacenamiento. Elegir la clase de almacenamiento adecuada puede ayudarte a reducir los costos y cumplir con los requisitos reglamentarios de retención de datos.

Esta página está dirigida a usuarios técnicos que ya conocen DICOM y la API de Cloud Healthcare.

Descripción general

Las clases de almacenamiento de DICOM funcionan de manera similar a las clases de almacenamiento de Cloud Storage, ya que ofrecen diferentes características de costo y rendimiento según la frecuencia con la que accedes a tus datos y el tiempo que necesitas almacenarlos. Para obtener más información sobre cada clase de almacenamiento, consulta las descripciones de las clases.

Es posible que desees cambiar la clase de almacenamiento de los objetos DICOM según la frecuencia con la que accedas a ellos o el tiempo que deban conservarse. Por ejemplo:

  • Puedes mover las imágenes DICOM a las que se accede con poca frecuencia del almacenamiento estándar al almacenamiento Nearline o Coldline para ahorrar en los costos de facturación.
  • Puedes trasladar los datos de los pacientes que deben conservarse por motivos legales a Archive Storage, que es la clase de almacenamiento más económica y duradera.

Clases de almacenamiento de DICOM disponibles

Puedes usar las siguientes clases de almacenamiento para tus objetos DICOM:

  • Estándar (predeterminado)
  • Nearline
  • Coldline
  • Archivar

Precios de las clases de almacenamiento

Cada clase de almacenamiento tiene su propia estructura de precios. Cambiar la clase de almacenamiento de tus objetos DICOM podría afectar tus costos de facturación. Para obtener más información, consulta lo siguiente:

Cambia la clase de almacenamiento de objetos DICOM individuales

Puedes cambiar la clase de almacenamiento de los objetos DICOM a nivel del estudio, la serie o la instancia.

En los siguientes ejemplos, se muestra cómo cambiar la clase de almacenamiento de una instancia de DICOM.

REST

  1. Cambia la clase de almacenamiento de la instancia de DICOM con el método projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
    • LOCATION: La ubicación del conjunto de datos
    • DATASET_ID: El conjunto de datos superior del almacén de DICOM
    • DICOM_STORE_ID: El ID del almacén de DICOM
    • STUDY_INSTANCE_UID: El identificador único de la instancia del estudio
    • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
    • INSTANCE_UID: Es el identificador único de la instancia.
    • STORAGE_CLASS: Es la clase de almacenamiento de la instancia de DICOM. Uno de STANDARD, NEARLINE, COLDLINE o ARCHIVE.

    Cuerpo JSON de la solicitud:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 API

    Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, completa cualquier otro campo obligatorio y haz clic en Ejecutar.

    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  2. Obtén el estado de la operación de larga duración con el método projects.locations.datasets.operations.get.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
    • LOCATION: La ubicación del conjunto de datos
    • DATASET_ID: El conjunto de datos superior del almacén de DICOM
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente 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

    Ejecuta el siguiente 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
    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la LRO finalizó.

Cómo cambiar la clase de almacenamiento de varios objetos con un archivo de filtro

En las siguientes secciones, se muestra cómo crear y usar un archivo de filtro para cambiar la clase de almacenamiento de los objetos de DICOM según un criterio de filtro.

Requisitos de los archivos de filtro

  • Cada línea del archivo de filtro define el estudio, la serie o la instancia, y usa el formato /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID.
  • Puedes truncar una línea para especificar el nivel en el que funciona el filtro. Por ejemplo, puedes seleccionar un estudio completo si especificas /studies/STUDY_INSTANCE_UID o puedes seleccionar una serie completa si especificas /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID.

Considera el siguiente archivo 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 archivo de filtro de ejemplo se aplica a lo siguiente:

  • Todo el estudio con el UID de la instancia del estudio como 1.123.456.789
  • Dos series separadas con los UID de instancia de la serie como 123.456 y 567.890 en el estudio 1.666.333.111
  • Tres instancias individuales con IDs de instancia como 111, 222 y 333 en el estudio 1.888.999.222 y la serie 123.456

Crea un archivo de filtro con BigQuery

Para crear un archivo de filtro con BigQuery, primero debes exportar los metadatos de tu almacén de DICOM a BigQuery. Los metadatos exportados te muestran los UID de estudio, serie e instancia de los datos de DICOM en tu almacén de DICOM.

Después de exportar los metadatos, completa los siguientes pasos:

  1. Ejecuta una consulta para devolver los UID del estudio, la serie y las instancias que deseas agregar al archivo de filtro.

    Por ejemplo, la siguiente consulta muestra cómo concatenar los UID del estudio, la serie y la instancia para que coincidan con los requisitos del formato del archivo de filtro:

    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Opcional: Si la consulta devuelve un conjunto de resultados grande que supera el tamaño máximo de respuesta, guarda los resultados de la consulta en una tabla de destino nueva en BigQuery.

  3. Guarda los resultados de la consulta en un archivo y expórtalo a Cloud Storage. Si guardaste los resultados de la consulta en una tabla de destino nueva en el paso 2, consulta Cómo exportar datos de tabla para exportar el contenido de la tabla a Cloud Storage.

  4. Edita el archivo exportado según sea necesario y, luego, inclúyelo en tu solicitud para cambiar la clase de almacenamiento de varios objetos de DICOM.

Crea un archivo de filtro de forma manual

Para crear un archivo de filtro de forma manual, haz lo siguiente:

  1. Crea un archivo de filtro que contenga los objetos DICOM según los que deseas filtrar.
  2. Sube el archivo de filtro a Cloud Storage. Para obtener instrucciones, consulta Sube objetos desde un sistema de archivos.

Usa un archivo de filtro

En los siguientes ejemplos, se muestra cómo aplicar un archivo de filtro cuando se cambia la clase de almacenamiento de los objetos de DICOM.

REST

  1. Cambia la clase de almacenamiento de las instancias de DICOM en el archivo de filtro con el método projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
    • LOCATION: La ubicación del conjunto de datos
    • DATASET_ID: El conjunto de datos superior del almacén de DICOM
    • DICOM_STORE_ID: El ID del almacén de DICOM
    • STORAGE_CLASS: Es la clase de almacenamiento para los objetos DICOM. Uno de STANDARD, NEARLINE, COLDLINE o ARCHIVE.
    • CLOUD_STORAGE_BUCKET: Es el nombre del bucket de Cloud Storage que contiene el archivo de filtro.
    • FILTER_FILE_PATH: Es el URI completamente calificado del archivo de filtro en el bucket de Cloud Storage.

    Cuerpo JSON de la solicitud:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  2. Obtén el estado de la operación de larga duración con el método projects.locations.datasets.operations.get.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
    • LOCATION: La ubicación del conjunto de datos
    • DATASET_ID: El conjunto de datos superior del almacén de DICOM
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente 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

    Ejecuta el siguiente 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
    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la LRO finalizó.

Cómo ver la clase de almacenamiento de un objeto DICOM

Puedes ver la clase de almacenamiento de los objetos DICOM a nivel del estudio, la serie o la instancia.

En las siguientes secciones, se describe cómo ver la clase de almacenamiento de una instancia de DICOM.

Obtén información de la clase de almacenamiento de un objeto de DICOM

En los siguientes ejemplos, se muestra cómo usar el método instances.getStorageInfo para ver la clase de almacenamiento de los objetos de DICOM.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
  • LOCATION: La ubicación del conjunto de datos
  • DATASET_ID: El conjunto de datos superior del almacén de DICOM
  • DICOM_STORE_ID: El ID del almacén de DICOM
  • STUDY_INSTANCE_UID: El identificador único de la instancia del estudio
  • SERIES_INSTANCE_UID: Es el identificador único de la instancia de la serie.
  • INSTANCE_UID: Es el identificador único de la instancia.

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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 API

Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Consulta los metadatos de DICOM exportados en BigQuery

Puedes exportar metadatos de DICOM a BigQuery y, luego, ejecutar consultas para ver las clases de almacenamiento de los objetos DICOM que exportaste.

En la siguiente consulta, se muestra cómo recuperar el UID de la instancia del estudio, el UID de la instancia de la serie, el UID de la instancia, el tamaño de almacenamiento y la clase de almacenamiento de hasta 1,000 instancias de DICOM de un conjunto de datos de BigQuery:

SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass
FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE
LIMIT 1000

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto Google Cloud .
  • BIGQUERY_DATASET: Es el conjunto de datos principal de BigQuery de la tabla que contiene los metadatos de DICOM exportados.
  • BIGQUERY_TABLE: La tabla de BigQuery que contiene los metadatos de DICOM exportados