En esta página, se explica cómo exportar instancias de DICOM y cómo importar objetos de DICOM desde Cloud Storage. Una instancia de DICOM suele ser una imagen, pero puede ser otro tipo de datos persistentes, como un informe estructurado. Un objeto DICOM en Cloud Storage es una instancia de DICOM que reside en Cloud Storage. Para obtener más información, consulta Cloud Storage.
Configura permisos de Cloud Storage
Antes de importar y exportar datos de DICOM desde y hacia Cloud Storage, debes otorgar permisos adicionales a la cuenta de servicio del agente de servicios de Cloud Healthcare. Para obtener más información, consulta Permisos de Cloud Storage de la tienda de DICOM.
Importa objetos de DICOM
Para importar varios archivos de instancia de DICOM a un almacén de DICOM, puedes usar cualquiera de los siguientes métodos:
- Almacena los datos directamente en una tienda de DICOM de forma programática desde tu máquina local con el servicio web RESTful de Transacciones en tienda como se implementa en la API de Cloud Healthcare.
- Sube los datos de DICOM a un bucket de Cloud Storage y, luego, importa los archivos a una tienda de DICOM con una sola operación de importación, como se explica en esta sección.
En las siguientes muestras, se demuestra cómo importar objetos de DICOM desde un bucket de Cloud Storage.
Console
Para importar objetos de DICOM desde un bucket de Cloud Storage, completa los siguientes pasos:
- En la consola de Google Cloud, ve a la página Conjuntos de datos.
Ir a Conjuntos de datos - Haz clic en el conjunto de datos que contiene el almacén de DICOM al que importas los objetos de DICOM.
- En la lista de almacenes de datos, selecciona Importar en la lista Acciones para el almacén de DICOM.
Aparecerá la página Importa al almacén de DICOM. - En la lista Proyecto, selecciona un proyecto de Cloud Storage.
- En la lista Ubicación, selecciona un bucket de Cloud Storage.
- Si deseas establecer una ubicación específica para la importación de archivos, haz lo siguiente:
- Expande Opciones avanzadas.
- Selecciona Anular ruta de Cloud Storage.
- Si deseas establecer una fuente específica para la importación de archivos, define la ruta de acceso mediante las siguientes variables en el cuadro de texto Ubicación:
*
: hace coincidir caracteres sin separadores.**
: hace coincidir caracteres, incluidos los separadores. Se puede usar con una extensión de nombre de archivo para hacer coincidir todos los archivos del mismo tipo.?
: hace coincidir 1 carácter.
- Haz clic en Importar para importar objetos de DICOM desde la fuente definida.
- Para seguir el estado de la operación, haz clic en la pestaña Operaciones. Una vez que se completa la operación, aparecerán las siguientes indicaciones:
- La sección Estado de la operación de larga duración tiene una marca de verificación verde debajo del encabezado Aceptar.
- La sección Descripción general tiene una marca de verificación verde y un indicador Aceptar en la misma fila que el ID de la operación.
gcloud
Para importar objetos de DICOM desde un bucket de Cloud Storage, usa el comando gcloud healthcare dicom-stores import gcs
. Especifica el nombre del conjunto de datos superior, el nombre de la tienda de DICOM y la ubicación del objeto en un bucket de Cloud Storage.
- La ubicación de los archivos dentro del bucket es arbitraria y no necesita adherirse exactamente al formato especificado en el siguiente ejemplo.
- Cuando especificas la ubicación de los objetos de DICOM en Cloud Storage, puedes usar comodines para importar varios archivos desde uno o más directorios.
Se admiten los siguientes comodines:
- Usa
*
para hacer coincidir 0 o más caracteres sin separadores. Por ejemplo,gs://BUCKET/DIRECTORY/Example*.dcm
hace coincidir Example.dcm y Example22.dcm en DIRECTORY. - Usa
**
para hacer coincidir 0 o más caracteres (con separadores). Se debe usar al final de una ruta y no debe haber otros comodines en la ruta. También se puede usar con una extensión de nombre de archivo (como .dcm), que importa todos los archivos con la extensión de nombre de archivo en el directorio especificado y en sus subdirectorios. Por ejemplo,gs://BUCKET/DIRECTORY/**.dcm
importa todos los archivos con la extensión de nombre de archivo .dcm en DIRECTORY y en sus subdirectorios. - Usa
?
para hacer coincidir 1 carácter. Por ejemplo,gs://BUCKET/DIRECTORY/Example?.dcm
hace coincidir Example1.dcm, pero no Example.dcm ni Example01.dcm.
- Usa
En la siguiente muestra, se demuestra cómo importar objetos de DICOM desde un bucket de Cloud Storage.
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
La línea de comandos muestra el ID de la operación:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver el estado de la operación, ejecuta el comando gcloud healthcare operations describe
y proporciona OPERATION_ID desde la respuesta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Una vez que se completa el comando, se incluirá done: true
en la respuesta.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Para importar objetos de DICOM desde un depósito de Cloud Storage, usa el método projects.locations.datasets.dicomStores.import
.
- La ubicación de los archivos dentro del bucket puede variar y no tiene que coincidir con el formato especificado en los siguientes ejemplos.
- Cuando especificas la ubicación de los objetos de DICOM en Cloud Storage, puedes usar comodines para importar varios archivos desde uno o más directorios.
Se admiten los siguientes comodines:
- Usa
*
para hacer coincidir 0 o más caracteres sin separadores. Por ejemplo,gs://BUCKET/DIRECTORY/Example*.dcm
hace coincidir Example.dcm y Example22.dcm en DIRECTORY. - Usa
**
para hacer coincidir 0 o más caracteres (con separadores). Se debe usar al final de una ruta y no debe haber otros comodines en la ruta. También se puede usar con una extensión de nombre de archivo (como .dcm), que importa todos los archivos con la extensión de nombre de archivo en el directorio especificado y en sus subdirectorios. Por ejemplo,gs://BUCKET/DIRECTORY/**.dcm
importa todos los archivos con la extensión de nombre de archivo .dcm en DIRECTORY y en sus subdirectorios. - Usa
?
para hacer coincidir 1 carácter. Por ejemplo,gs://BUCKET/DIRECTORY/Example?.dcm
hace coincidir Example1.dcm, pero no Example.dcm ni Example01.dcm.
- Usa
REST
Importa el objeto DICOM.
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 DICOMBUCKET/PATH/TO/FILE
: Es la ruta de acceso al objeto DICOM en Cloud Storage.
Cuerpo JSON de la solicitud:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }
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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } 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:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | 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:import" | Select-Object -Expand ContentObtén el estado de la operación de larga duración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_IDEl ID de tu proyecto de 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
Go
Java
Node.js
Python
Para recuperar una sola instancia o estudio de una tienda de DICOM, puedes recuperar datos de DICOM mediante el servicio web RESTful de Recuperación de transacciones como se lo implementa en la API de Cloud Healthcare.
Especifica una clase de almacenamiento para importar objetos de DICOM (versión preliminar)
De forma predeterminada, el método projects.locations.datasets.dicomStores.import
importa un objeto DICOM a un almacén de DICOM con una clase de almacenamiento estándar. Puedes configurar la clase de almacenamiento cuando importas objetos de DICOM desde Cloud Storage.
Para obtener más información, consulta Cambia la clase de almacenamiento de DICOM.
En los siguientes ejemplos, se muestra cómo especificar la clase de almacenamiento cuando importas objetos de DICOM desde Cloud Storage.
REST
Usa el método projects.locations.datasets.dicomStores.import
.
Importa el objeto DICOM.
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 DICOMBUCKET/PATH/TO/FILE
: Es la ruta de acceso al objeto DICOM en Cloud Storage.STORAGE_CLASS
: Es la clase de almacenamiento del objeto DICOM en el almacén de DICOM deSTANDARD
,NEARLINE
,COLDLINE
yARCHIVE
.
Cuerpo JSON de la solicitud:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "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' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "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" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"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:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand ContentObtén el estado de la operación de larga duración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_IDEl ID de tu proyecto de 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/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Soluciona problemas de solicitudes de importación de DICOM
Si se producen errores durante una solicitud de importación de DICOM, estos se registrarán en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.
Exporta instancias de DICOM
En las siguientes muestras, se demuestra cómo exportar instancias de DICOM a un bucket de Cloud Storage. Cuando exportas instancias de DICOM desde una tienda de DICOM, se exportarán todas las instancias de la tienda.
Console
Para exportar instancias de DICOM a Cloud Storage, completa los siguientes pasos:
- En la consola de Google Cloud, ve a la página Conjuntos de datos.
Ir a Conjuntos de datos - Haz clic en el conjunto de datos que contiene el almacén de DICOM desde el que exportas instancias de DICOM.
- En la lista de almacenes de datos, selecciona Exportar en la lista Acciones para el almacén de DICOM.
- En la página Exportar almacén de DICOM que aparecerá, selecciona bucket de Google Cloud Storage.
- En la lista Proyecto, selecciona un proyecto de Cloud Storage.
- En la lista Ubicación, selecciona un bucket de Cloud Storage.
- En Configuración de exportación de DICOM, selecciona el tipo de archivo que usas para exportar las instancias de DICOM. Estos son los tipos que se encuentran disponibles:
- Archivo de DICOM (
.dcm
) - octet-stream
- Imagen (
.jpg
,.png
)
- Archivo de DICOM (
- Para definir la sintaxis de transferencia adicional, selecciona la sintaxis en la lista Sintaxis de transferencia.
- Haz clic en Exportar para exportar las instancias de DICOM a la ubicación definida en Cloud Storage.
- Para seguir el estado de la operación, haz clic en la pestaña Operaciones. Una vez que se completa la operación, aparecerán las siguientes indicaciones:
- La sección Estado de la operación de larga duración tiene una marca de verificación verde debajo del encabezado Aceptar.
- La sección Descripción general tiene una marca de verificación verde y un indicador Aceptar en la misma fila que el ID de la operación.
gcloud
Para exportar instancias de DICOM a un depósito de Cloud Storage, usa el comando gcloud healthcare dicom-stores export gcs
.
- Proporciona el nombre del conjunto de datos superior, el nombre de la tienda de DICOM y el bucket de Cloud Storage de destino.
- Escribe en un depósito o un directorio de Cloud Storage, en lugar de en un objeto, ya que la API de Cloud Healthcare crea un archivo
.dcm
para cada objeto. - Si el comando especifica un directorio que no existe, este se creará.
En el siguiente ejemplo, se muestra el comando gcloud healthcare dicom-stores export gcs
.
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
La línea de comandos muestra el ID de la operación:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver el estado de la operación, ejecuta el comando gcloud healthcare operations describe
y proporciona OPERATION_ID desde la respuesta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Una vez que se completa el comando, se incluirá done: true
en la respuesta.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
Para exportar instancias de DICOM a un depósito de Cloud Storage, usa el método projects.locations.datasets.dicomStores.export
.
- Escribe en un depósito o un directorio de Cloud Storage, en lugar de en un objeto, ya que la API de Cloud Healthcare crea un archivo
.dcm
para cada objeto de DICOM. - Si el comando especifica un directorio que no existe, este se creará.
curl
Para exportar instancias de DICOM, realiza una solicitud POST
y proporciona la siguiente información:
- El nombre y la ubicación del conjunto de datos superior
- El nombre del almacén de DICOM
- El bucket de destino de Cloud Storage
En el siguiente ejemplo, se muestra una solicitud POST
mediante curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, usa el método get
de la operación:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Si la solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES } }, "done": true, "response": { "@type": "..." } }
PowerShell
Para exportar instancias de DICOM, realiza una solicitud POST
y proporciona la siguiente información:
- El nombre y la ubicación del conjunto de datos superior
- El nombre del almacén de DICOM
- El bucket de destino de Cloud Storage
En el siguiente ejemplo, se muestra una solicitud POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, usa el método get
de la operación:
$cred = gcloud auth application-default 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
Si la solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES }, }, "done": true, "response": { "@type": "..." } }
Go
Java
Node.js
Python
Exporta instancias de DICOM mediante filtros
De forma predeterminada, cuando exportas archivos DICOM a Cloud Storage, se exportan todos los archivos DICOM del almacén de DICOM. Del mismo modo, cuando exportas metadatos de DICOM a BigQuery, se exportan los metadatos de todos los datos de DICOM en el almacén de DICOM.
Puedes exportar un subconjunto de datos o metadatos de DICOM mediante un archivo de filtro.
Configura un archivo 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 UIDs de instancias 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 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:
Ejecuta una consulta para mostrar los UID del estudio, la serie y las instancias que quieres agregar al archivo de filtro.
Por ejemplo, en la siguiente consulta, se muestra cómo concatenar los UID del estudio, la serie y la instancia para que coincidan con los requisitos de formato del 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 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.
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:
- Crea un archivo de filtro que contenga los objetos DICOM en los que filtrarás.
- Sube el archivo de filtro a Cloud Storage. Para obtener instrucciones, consulta Sube objetos desde un sistema de archivos.
Pasa el archivo de filtro
Después de crear un archivo de filtro, llama a la operación de exportación de DICOM y pasar el archivo de filtro con la API de REST. En los siguientes ejemplos, se muestra cómo exportar datos de DICOM con un filtro.
gcloud
Para exportar metadatos de DICOM a Cloud Storage con un filtro, usa el comando gcloud beta healthcare dicom-stores export gcs
:
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
Reemplaza lo siguiente:
- DICOM_STORE_ID: El identificador del almacén de DICOM
- DATASET_ID: El nombre del conjunto de datos superior del almacén de DICOM
- LOCATION: La ubicación del conjunto de datos superior del almacén de DICOM
- DESTINATION_BUCKET/DIRECTORY: El bucket de destino de Cloud Storage
- BUCKET/DIRECTORY/FILTER_FILE: La ubicación del archivo de filtro en un bucket de Cloud Storage
Este es el resultado:
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
Para ver el estado de la operación, ejecuta el comando gcloud healthcare operations describe
y proporciona OPERATION_ID desde la respuesta:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
Reemplaza lo siguiente:
- OPERATION_ID: El número de ID que se muestra en la respuesta anterior
- DATASET_ID: El nombre del conjunto de datos superior del almacén de DICOM
- LOCATION: La ubicación del conjunto de datos superior del almacén de DICOM
Este es el resultado:
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
Para exportar datos de DICOM con un filtro, usa el método projects.locations.datasets.dicomStores.export
.
curl
Para exportar datos de DICOM con un archivo de filtro, realiza una solicitud POST
y proporciona la siguiente información:
- El nombre y la ubicación del conjunto de datos superior
- El nombre del almacén de DICOM
- El bucket de destino de Cloud Storage
- La ubicación del archivo de filtro en un bucket de Cloud Storage
En el siguiente ejemplo, se muestra una solicitud POST
mediante curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
Si la solicitud tiene éxito, se mostrará la siguiente respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Usa el método get
de operación para realizar un seguimiento del estado de la operación:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
Si la solicitud se realiza de forma correcta, el servidor muestra la siguiente respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
PowerShell
Para exportar datos de DICOM con un archivo de filtro, realiza una solicitud POST
y proporciona la siguiente información:
- El nombre y la ubicación del conjunto de datos superior
- El nombre del almacén de DICOM
- El bucket de destino de Cloud Storage
- La ubicación del archivo de filtro en un bucket de Cloud Storage
En el siguiente ejemplo, se muestra una solicitud POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
Si la solicitud tiene éxito, se mostrará la siguiente respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Usa el método get
de operación para realizar un seguimiento del estado de la operación:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
Si la solicitud se realiza de forma correcta, el servidor muestra la siguiente respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
Soluciona problemas de solicitudes de exportación de DICOM
Si se producen errores durante una solicitud de exportación de DICOM, estos se registrarán en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.
Si toda la operación muestra un error, consulta Solución de problemas de operaciones de larga duración.