Clases de almacenamiento DICOM

En esta página se describe cómo gestionar datos DICOM en la API Cloud Healthcare mediante diferentes clases de almacenamiento. Elegir la clase de almacenamiento adecuada puede ayudarte a reducir los costes y cumplir los requisitos normativos de conservación de datos.

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

Información general

Las clases de almacenamiento DICOM funcionan de forma similar a las clases de almacenamiento de Cloud Storage, y ofrecen diferentes características de coste y rendimiento en función de la frecuencia con la que accedas a tus datos y del tiempo que necesites almacenarlos. Para obtener más información sobre cada clase de almacenamiento, consulta las descripciones de las clases.

Puede cambiar la clase de almacenamiento de los objetos DICOM en función de la frecuencia con la que acceda al objeto o del tiempo que deba conservarse. Por ejemplo:

  • Puedes mover imágenes DICOM a las que se accede con poca frecuencia del almacenamiento Estándar al almacenamiento Nearline o Coldline para ahorrar costes de facturación.
  • Puedes mover los datos de los pacientes que deban conservarse por motivos legales a Archive Storage, la clase de almacenamiento más barata y duradera.

Clases de almacenamiento 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 puede afectar a tus costes de facturación. Para obtener más información, consulta lo siguiente:

Cambiar la clase de almacenamiento de objetos DICOM concretos

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

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

REST

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

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos
    • DATASET_ID: el conjunto de datos superior del almacén DICOM
    • DICOM_STORE_ID: el ID del almacén DICOM
    • STUDY_INSTANCE_UID: identificador único de la instancia del estudio
    • SERIES_INSTANCE_UID: identificador único de la instancia de la serie
    • INSTANCE_UID: identificador único de la instancia
    • STORAGE_CLASS: la clase de almacenamiento de la instancia DICOM. Uno de los valores 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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

    Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel Explorador de APIs 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, rellena los campos obligatorios y haz clic en Ejecutar.

    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

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

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos
    • DATASET_ID: el conjunto de datos superior del almacén DICOM
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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 comando siguiente:

    $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
    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la LRO ha finalizado.

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 DICOM en función de 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 especificando /studies/STUDY_INSTANCE_UID o una serie completa especificando /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 instancia de estudio 1.123.456.789
  • Dos series independientes con los UIDs de instancia de serie 123.456 y 567.890 en el estudio 1.666.333.111
  • Tres instancias individuales con los IDs de instancia 111, 222 y 333 en el estudio 1.888.999.222 y la serie 123.456

Crear un archivo de filtro con BigQuery

Para crear un archivo de filtro con BigQuery, primero debes exportar los metadatos de tu almacén DICOM a BigQuery. Los metadatos exportados muestran los UIDs del estudio, la serie y la instancia de los datos DICOM de tu almacén DICOM.

Después de exportar los metadatos, sigue estos pasos:

  1. Ejecuta una consulta para obtener los UIDs del estudio, la serie y las instancias que quieras añadir al archivo de filtro.

    Por ejemplo, la siguiente consulta muestra cómo concatenar los UIDs de estudio, serie e instancia para cumplir los requisitos del formato de 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 nueva tabla de destino en BigQuery.

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

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

Crear un archivo de filtro manualmente

Para crear un archivo de filtro manualmente, siga estos pasos:

  1. Crea un archivo de filtro que contenga los objetos DICOM por los que quieres filtrar.
  2. Sube el archivo de filtro a Cloud Storage. Para obtener instrucciones, consulta Subir objetos desde un sistema de archivos.

Usar un archivo de filtro

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

REST

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

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos
    • DATASET_ID: el conjunto de datos superior del almacén DICOM
    • DICOM_STORE_ID: el ID del almacén DICOM
    • STORAGE_CLASS: la clase de almacenamiento de los objetos DICOM. Uno de los valores STANDARD, NEARLINE, COLDLINE o ARCHIVE.
    • CLOUD_STORAGE_BUCKET: el nombre del segmento de Cloud Storage que contiene el archivo de filtro
    • FILTER_FILE_PATH: el URI completo del archivo de filtro en el segmento 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

    A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
    El resultado es el siguiente. La respuesta contiene un identificador de una operación de larga duración. Las operaciones de larga duración se devuelven cuando las llamadas a métodos pueden tardar más tiempo en completarse. Anota el valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

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

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID de tu Google Cloud proyecto
    • LOCATION: la ubicación del conjunto de datos
    • DATASET_ID: el conjunto de datos superior del almacén DICOM
    • OPERATION_ID: el ID devuelto por la operación de larga duración

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el comando siguiente:

    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 comando siguiente:

    $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
    El resultado es el siguiente. Cuando la respuesta contiene "done": true, la LRO ha finalizado.

Ver la clase de almacenamiento de un objeto DICOM

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

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

Obtener información sobre la clase de almacenamiento de un objeto DICOM

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

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

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 comando siguiente:

$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

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

Deberías recibir una respuesta JSON similar a la siguiente:

Consultar metadatos DICOM exportados en BigQuery

Puedes exportar metadatos DICOM a BigQuery y, a continuación, ejecutar consultas para ver las clases de almacenamiento de los objetos DICOM exportados.

La siguiente consulta muestra cómo obtener 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 1000 instancias DICOM de un conjunto de datos de BigQuery:

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

Haz los cambios siguientes:

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