En esta página, se describe cómo administrar los datos de DICOM en la API de Cloud Healthcare con diferentes clases de almacenamiento. Elegir la clase de almacenamiento correcta 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, ofrecer diferentes características de costo y rendimiento según la frecuencia para acceder a tus datos y cuánto tiempo necesitas almacenarlos. Para obtener más información sobre cada clase de almacenamiento, consulta Descripciones de las clases.
Te recomendamos que cambies la clase de almacenamiento de los objetos DICOM según la frecuencia con la que accedes a ellos o el tiempo que deben conservarse. Por ejemplo:
- Puede mover las imágenes de DICOM a las que se accede con muy poca frecuencia de Standard Storage a Nearline o Coldline Storage para ahorrar en costos de facturación
- Puede mover 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 DICOM disponibles
Puedes usar las siguientes clases de almacenamiento para tus objetos de DICOM:
- Estándar (predeterminado)
- Nearline
- Coldline
- Archivar
Precios de las clases de almacenamiento
Cada clase de almacenamiento tiene su propia estructura de precios. Cambia la clase de almacenamiento de tus objetos de DICOM podría afectar los costos de facturación. Para obtener más información, consulta lo siguiente:
Cambiar la clase de almacenamiento para 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
Cambiar la clase de almacenamiento de la instancia de DICOM con el
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
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMSTUDY_INSTANCE_UID
: Es 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 para la instancia de DICOM.STANDARD
,NEARLINE
,COLDLINE
oARCHIVE
.
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 ContentExplorador 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.
OPERATION_ID
. Necesitarás este valor en el paso siguiente.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
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMOPERATION_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"done": true
, significa que la LRO finalizó.
Cambia 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 de objetos DICOM según un criterio de filtro.
Requisitos para los archivos de filtro
- Cada línea en el 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 puedes seleccionar un serie entera 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 la instancia del estudio como
1.123.456.789
- Dos series separadas con UID de instancia de serie como
123.456
y567.890
en el estudio1.666.333.111
- Tres instancias individuales con los IDs de instancia
111
,222
y333
en el estudio1.888.999.222
y la serie123.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 muestra el estudio, la serie y los UID de instancia de los datos de DICOM en tus en una tienda física.
Después de exportar los metadatos, completa los siguientes pasos:
Ejecuta una consulta para que devuelva los UID del estudio, las series y las instancias que agregar al archivo de filtro.
Por ejemplo, la siguiente consulta muestra cómo concatenar el estudio, la serie y UID de instancia para que coincidan con los requisitos de formato de archivo de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
Opcional: Si la consulta muestra 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.
Guarda los resultados de la consulta en un archivo y expórtalos a Cloud Storage. Si guardaste los resultados de tu consulta a una nueva tabla de destino en el paso 2, consulta Exporta datos de tablas para exportar los datos de la tabla contenido a Cloud Storage.
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.
Crear un archivo de filtro de forma manual
Para crear un archivo de filtro de forma manual, haz lo siguiente:
- Crea un archivo de filtro que contenga los objetos de DICOM que estás filtrando.
- 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 el de objetos de DICOM.
REST
Cambiar la clase de almacenamiento de las instancias de DICOM en el archivo de filtro con el
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
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMSTORAGE_CLASS
: Es la clase de almacenamiento para los objetos de DICOM.STANDARD
,NEARLINE
,COLDLINE
oARCHIVE
.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 para el 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 ContentOPERATION_ID
. Necesitarás este valor en el paso siguiente.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
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMOPERATION_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"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 a nivel de instancia.
En las siguientes secciones, se describe cómo ver la clase de almacenamiento de una instancia de DICOM.
Cómo obtener información de la clase de almacenamiento de un objeto DICOM
En los siguientes ejemplos, se muestra cómo usar
el 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
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
: El conjunto de datos superior del almacén de DICOMDICOM_STORE_ID
: El ID del almacén de DICOMSTUDY_INSTANCE_UID
: Es 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:
Cómo consultar metadatos de DICOM exportados en BigQuery
Puedes exportar metadatos de DICOM a BigQuery y, luego, ejecutar consultas para ver las clases de almacenamiento de tus objetos DICOM exportados.
La siguiente consulta muestra cómo recuperar el estudio UID de instancia, UID de instancia de serie, UID de instancia, tamaño 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
El ID de tu proyecto de Google Cloud.BIGQUERY_DATASET
: Es el conjunto de datos superior de BigQuery de la tabla que contiene los metadatos de DICOM exportadosBIGQUERY_TABLE
: Es la tabla de BigQuery que contiene los metadatos de DICOM exportados.