En esta página, se explica cómo exportar metadatos de DICOM a BigQuery para realizar exploraciones y análisis. Para obtener información sobre el esquema de BigQuery que se crea cuando se exportan metadatos de DICOM, consulta Comprende el esquema de DICOM de BigQuery.
Configura permisos de BigQuery
Antes de exportar metadatos de DICOM a una tabla de BigQuery, 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 BigQuery para el almacén de DICOM.
Configura el destino de BigQuery
Cuando configures el destino de BigQuery, usa el URI completamente calificado como se indica a continuación:bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
- Si la tabla de destino ya existe
- Si estableciste el campo
force
(con la API) o la marca--overwrite-table
(con la CLI de Google Cloud) - Si ya estableciste un valor para la enumeración
writeDisposition
. Si usas la enumeraciónwriteDisposition
, no configures el campoforce
.
- Si la tabla de destino ya existe y
force
se configura comotrue
o si se especifica la marca--overwrite-table
, la operación de exportación reemplaza la tabla existente. - Si la tabla de destino ya existe y
force
se establece enfalse
o no se especifica la marca--overwrite-table
, se produce un error. - Si la tabla de destino aún no existe, se crea una tabla nueva, sin importar si especificas el campo
force
o la marca--overwrite-table
. - El comportamiento de
writeDisposition
se describe en su documentación. La enumeraciónwriteDisposition
realiza un comportamiento similar a las opciones cuando se usaforce
, con la siguiente excepción: si la tabla de destino ya existe y está vacía, la operación de exportación se completa en lugar de mostrar un error.
Exporta metadatos de DICOM
En los siguientes ejemplos, se muestra cómo exportar metadatos de DICOM a una tabla de BigQuery. En estas muestras, el almacén de DICOM y la tabla de BigQuery están en el mismo proyecto. Para exportar metadatos de DICOM a una tabla de BigQuery en otro proyecto, consulta Exporta metadatos de DICOM a un proyecto diferente.
Consola
Para exportar metadatos de DICOM a una tabla de BigQuery, completa los siguientes pasos:
En la consola de Google Cloud, ve a la página Conjuntos de datos.
Haz clic en el conjunto de datos que tiene el almacén de DICOM con los metadatos que exportarás.
En la misma fila que el almacén de DICOM, abre la lista Acciones y selecciona Exportar.
En la página Exportar almacén de DICOM que aparece, selecciona Tabla de BigQuery.
En el campo Proyecto, haz clic en Explorar y selecciona tu proyecto.
En la lista Conjunto de datos, selecciona el conjunto de datos de BigQuery en el que exportas los metadatos de DICOM.
En el campo Tabla, ingresa un nombre de tabla nuevo. BigQuery verifica cada selección para asegurarse de que la tabla de destino sea válida.
En la sección Disposición de escritura de la tabla de destino, selecciona una de las siguientes opciones. Estas opciones corresponden a la enumeración
WriteDisposition
.- Solo exportar datos si la tabla de destino está vacía: Equivalente a
WRITE_EMPTY
. - Agregar datos a la tabla de destino: Equivalente a
WRITE_APPEND
- Borra todos los datos existentes en la tabla de destino antes de escribir las instancias: Equivalente a
WRITE_TRUNCATE
.
- Solo exportar datos si la tabla de destino está vacía: Equivalente a
Haz clic en Exportar para exportar los metadatos de DICOM a la tabla de BigQuery.
- 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 metadatos de DICOM a una tabla de BigQuery, ejecuta el comando gcloud healthcare dicom-stores export bq
.
Exporta los metadatos de DICOM.
Antes de usar cualquiera de los datos de comando 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
- DICOM_STORE_ID: El ID del almacén de DICOM
- BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el que exportarás los metadatos de DICOM.
- BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:write-empty
: Solo exportar datos si la tabla de BigQuery está vacía.write-truncate
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.write-append
: Agrega datos a la tabla de BigQuery.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
después de que finaliza la exportación. Anota el valor deOPERATION_ID
. Necesitarás este valor en el paso siguiente.Respuesta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver más detalles de la operación, ejecuta el comando
gcloud healthcare operations describe
y proporciona el OPERATION_ID de la respuesta:Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- PROJECT_IDEl ID de tu proyecto de Google Cloud.
- DATASET_ID: El ID del conjunto de datos
- LOCATION: La ubicación del conjunto de datos
- OPERATION_ID: Es el ID que muestra la operación de larga duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Deberías recibir una respuesta similar a la que figura a continuación:
Respuesta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadatos de DICOM a una tabla de BigQuery, usa el método projects.locations.datasets.dicomStores.export
.
Exporta los metadatos de DICOM.
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
- DICOM_STORE_ID: El ID del almacén de DICOM
- BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el que exportarás los metadatos de DICOM.
- BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:WRITE_EMPTY
: Solo exportar datos si la tabla de BigQuery está vacía.WRITE_TRUNCATE
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.WRITE_APPEND
: Agrega datos a la tabla de BigQuery.
Cuerpo JSON de la solicitud:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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:export" | 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.Usa el método
projects.locations.datasets.operations.get
para obtener 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.
- DATASET_ID: El ID del conjunto de datos
- LOCATION: La ubicación del conjunto de datos
- 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 ContentExplorador 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.
"done": true
, significa que la operación de larga duración finalizó.
Exporta metadatos de DICOM a un proyecto diferente
Para exportar metadatos de DICOM de un almacén de DICOM en un proyecto a un conjunto de datos de BigQuery en otro proyecto, primero consulta la sección sobre cómo exportar metadatos de DICOM a un permiso diferente del proyecto para obtener información sobre cómo configurar los permisos de IAM en el proyecto de destino.
gcloud
Para exportar metadatos de DICOM desde un almacén de DICOM en un proyecto a una tabla de BigQuery en otro proyecto, usa el comando gcloud healthcare dicom-stores export bq
.
Exporta los metadatos de DICOM.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SOURCE_PROJECT_ID: El ID del proyecto de Google Cloud de origen
- SOURCE_LOCATION: La ubicación del conjunto de datos de origen
- SOURCE_DATASET_ID: El conjunto de datos superior del almacén de DICOM de origen
- SOURCE_DICOM_STORE_ID: El ID del almacén de DICOM de origen
- DESTINATION_PROJECT_ID: El ID del proyecto diferente
- DESTINATION_BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el proyecto de destino en el que exportarás los metadatos de DICOM.
- DESTINATION_BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:write-empty
: Solo exportar datos si la tabla de BigQuery está vacía.write-truncate
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.write-append
: Agrega datos a la tabla de BigQuery.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \ --project=SOURCE_PROJECT_ID \ --location=SOURCE_LOCATION \ --dataset=SOURCE_DATASET_ID \ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ` --project=SOURCE_PROJECT_ID ` --location=SOURCE_LOCATION ` --dataset=SOURCE_DATASET_ID ` --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^ --project=SOURCE_PROJECT_ID ^ --location=SOURCE_LOCATION ^ --dataset=SOURCE_DATASET_ID ^ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
después de que finaliza la exportación. Anota el valor deOPERATION_ID
. Necesitarás este valor en el paso siguiente.Respuesta
Request issued for: [SOURCE_DICOM_STORE_ID] Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
Para ver más detalles de la operación, ejecuta el comando
gcloud healthcare operations describe
y proporciona el OPERATION_ID de la respuesta:Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- SOURCE_PROJECT_ID: El ID del proyecto de Google Cloud de origen
- SOURCE_LOCATION: La ubicación del conjunto de datos de origen
- SOURCE_DATASET_ID: El ID del conjunto de datos de origen
- OPERATION_ID: Es el ID que muestra la operación de larga duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=SOURCE_PROJECT_ID \ --dataset=SOURCE_DATASET_ID \ --location=SOURCE_LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=SOURCE_PROJECT_ID ` --dataset=SOURCE_DATASET_ID ` --location=SOURCE_LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=SOURCE_PROJECT_ID ^ --dataset=SOURCE_DATASET_ID ^ --location=SOURCE_LOCATION
Deberías recibir una respuesta similar a la que figura a continuación:
Respuesta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadatos de DICOM desde un almacén de DICOM en un proyecto a una tabla de BigQuery en otro proyecto, usa el método projects.locations.datasets.dicomStores.export
.
Exporta los metadatos de DICOM.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- SOURCE_PROJECT_ID: El ID del proyecto de Google Cloud de origen
- SOURCE_LOCATION: La ubicación del conjunto de datos de origen
- SOURCE_DATASET_ID: El conjunto de datos superior del almacén de DICOM de origen
- SOURCE_DICOM_STORE_ID: El ID del almacén de DICOM de origen
- DESTINATION_PROJECT_ID: El ID del proyecto diferente
- DESTINATION_BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el proyecto de destino en el que exportarás los metadatos de DICOM.
- DESTINATION_BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:WRITE_EMPTY
: Solo exportar datos si la tabla de BigQuery está vacía.WRITE_TRUNCATE
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.WRITE_APPEND
: Agrega datos a la tabla de BigQuery.
Cuerpo JSON de la solicitud:
{ "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export"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:@' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | 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.Usa el método
projects.locations.datasets.operations.get
para obtener 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:
- SOURCE_PROJECT_ID: El ID del proyecto de Google Cloud de origen
- SOURCE_LOCATION: La ubicación del conjunto de datos de origen
- SOURCE_DATASET_ID: El ID del conjunto de datos de origen
- 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentExplorador 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.
"done": true
, significa que la operación de larga duración finalizó.
Exportar metadatos de DICOM mediante filtros
De forma predeterminada, cuando exportas archivos de DICOM a Cloud Storage, se exportan todos los archivos de DICOM en el almacén de DICOM especificado. 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 especificado.
Puedes exportar un subconjunto de datos o metadatos de DICOM mediante un filtro. Debes definir el filtro en un archivo de filtro.
Configura archivos de filtro
Un archivo de filtro define qué archivos DICOM que se exportarán a Cloud Storage o BigQuery. Puedes configurar archivos en los siguientes niveles:
- A nivel del estudio
- En el nivel de la serie
- En el nivel de la instancia
El archivo de filtro está compuesto por varias líneas y cada línea define el estudio, la serie o la instancia que quieres exportar. Cada línea usa el formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
Si no se especifica un estudio, una serie o una instancia en el archivo de filtro cuando pasas el archivo de filtro, no se exportará ese estudio, serie ni instancia.
Solo se requiere la parte /studies/STUDY_UID
de la ruta de acceso. Puedes exportar un estudio completo si especificas /studies/STUDY_UID
o puedes exportar una serie completa si especificas /studies/STUDY_UID/series/SERIES_UID
.
Considera el siguiente archivo de filtro. El archivo de filtro dará como resultado que se exporten un estudio, dos series y tres instancias individuales:
/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
Crea un archivo de filtro con BigQuery
Por lo general, para crear un archivo de filtro, primero debes exportar los metadatos de un almacén de DICOM a BigQuery. Esto te permite usar BigQuery para ver los UID del estudio, serie y de las instancias de los datos de DICOM en tu almacén de DICOM. A continuación, puedes completar los siguientes pasos:
-
Realiza consultas para los UID del estudio, la serie y la instancia que te interesa.
Por ejemplo, después de exportar los metadatos de DICOM a BigQuery, puedes ejecutar la siguiente consulta para concatenar los UID del estudio, la serie y la instancia en un formato compatible con los requisitos del archivo de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Si la consulta muestra un conjunto de resultados grande, puedes materializar una tabla nueva si guardas los resultados de las consultas en una tabla de destino en BigQuery.
- Si guardaste los resultados de la consulta en una tabla de destino, puedes guardar el contenido de la tabla de destino en un archivo y exportarlo a Cloud Storage. Si quieres obtener los pasos para hacerlo, consulta Exporta datos de tablas. El archivo exportado es tu archivo de filtro. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de exportación.
Crea un archivo de filtro de forma manual
Puedes crear un archivo de filtro con contenido personalizado y subirlo a un bucket de Cloud Storage. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de exportación. En el siguiente ejemplo, se muestra cómo subir un archivo de filtro a un bucket de Cloud Storage con el comandogcloud storage cp
:
gcloud storage cp FILTER_FILE gs://BUCKET
Pasa el archivo de filtro
Después de crear un archivo de filtro, puedes llamar 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 metadatos de DICOM con un filtro.
gcloud
Para exportar metadatos de DICOM a una tabla de BigQuery con un filtro, ejecuta el comando gcloud beta healthcare dicom-stores export bq
.
Exporta los metadatos de DICOM.
Antes de usar cualquiera de los datos de comando 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
- DICOM_STORE_ID: El ID del almacén de DICOM
- BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el que exportarás los metadatos de DICOM.
- BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- BUCKET: El nombre del bucket de Cloud Storage que contiene el archivo de filtro. Si el archivo de filtro está en un directorio, incluye el directorio en la ruta.
- FILTER_FILE: La ubicación y el nombre del archivo de filtro en un bucket de Cloud Storage.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:write-empty
: Solo exportar datos si la tabla de BigQuery está vacía.write-truncate
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.write-append
: Agrega datos a la tabla de BigQuery.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^ --write-disposition=WRITE_DISPOSITION
name
después de que finaliza la exportación. Anota el valor deOPERATION_ID
. Necesitarás este valor en el paso siguiente.Respuesta
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Para ver más detalles de la operación, ejecuta el comando
gcloud healthcare operations describe
y proporciona el OPERATION_ID de la respuesta:Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
- PROJECT_IDEl ID de tu proyecto de Google Cloud.
- DATASET_ID: El ID del conjunto de datos
- LOCATION: La ubicación del conjunto de datos
- OPERATION_ID: Es el ID que muestra la operación de larga duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Deberías recibir una respuesta similar a la que figura a continuación:
Respuesta
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Para exportar metadatos de DICOM a una tabla de BigQuery con un filtro, usa el método projects.locations.datasets.dicomStores.export
.
Exporta los metadatos de DICOM.
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
- DICOM_STORE_ID: El ID del almacén de DICOM
- BIGQUERY_DATASET_ID: El nombre de un conjunto de datos de BigQuery existente en el que exportarás los metadatos de DICOM.
- BIGQUERY_TABLE_ID: El nombre de una tabla nueva o existente en el conjunto de datos de BigQuery. Si la operación de exportación crea una tabla nueva, consulta Nombres de tablas para conocer los requisitos de nombres de tablas.
- BUCKET: El nombre del bucket de Cloud Storage que contiene el archivo de filtro. Si el archivo de filtro está en un directorio, incluye el directorio en la ruta.
- FILTER_FILE: La ubicación y el nombre del archivo de filtro en un bucket de Cloud Storage.
- WRITE_DISPOSITION: Un valor para la enumeración
WriteDisposition
. Usa uno de los siguientes valores:WRITE_EMPTY
: Solo exportar datos si la tabla de BigQuery está vacía.WRITE_TRUNCATE
: Borra todos los datos existentes en la tabla de BigQuery antes de escribir las instancias de DICOM.WRITE_APPEND
: Agrega datos a la tabla de BigQuery.
Cuerpo JSON de la solicitud:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } 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:export"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:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } '@ | 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:export" | 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.Usa el método
projects.locations.datasets.operations.get
para obtener 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.
- DATASET_ID: El ID del conjunto de datos
- LOCATION: La ubicación del conjunto de datos
- 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 ContentExplorador 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.
"done": true
, significa que la operación de larga duración finalizó.
Consulta y analiza datos de DICOM en BigQuery
Después de exportar los metadatos de DICOM a una tabla de BigQuery, puedes ejecutar consultas de muestra para obtener más detalles sobre los metadatos. En los siguientes ejemplos, se muestra cómo ejecutar consultas para algunos casos de uso comunes.
Busca en los metadatos
Supongamos que quieres buscar en una gran cantidad de metadatos que son difíciles de buscar en otros sistemas, como un sistema de archivo y comunicación de imágenes (PACS) o un archivo neutral del proveedor (VNA). En la siguiente consulta, se muestra cómo consultar el valor PatientID
de un paciente y usar la ruta de DICOMweb para recuperar instancias de imágenes específicas. La muestra usa la tabla chc-nih-chet-xray.nih_chet_xray.nih_chet_xray del conjunto de datos de radiografías de tórax de los NIH.
#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';
La consulta muestra los estudios asociados con el paciente. La siguiente respuesta usa formato JSON:
[
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
}
]
Consulta los estudios más recientes
Supongamos que quieres propagar una lista de trabajo de lectura de PACS con los estudios más recientes de tu conjunto de datos.
En la siguiente consulta, se muestra cómo recuperar y mostrar los estudios más recientes junto con los recuentos de instancias y los metadatos circundantes. En la muestra, se usa la tabla bigquery-public-data.idc_v5.dicom_metadata del conjunto de datos de TCIA.
#standardSQL
SELECT
MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
`bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;
La consulta muestra la siguiente información:
- Los 10 estudios más recientes que ingresaron al sistema y cuándo lo hicieron
- El paciente asociado con cada estudio
- El UID del estudio
- La cantidad de instancias asociadas con el estudio
La siguiente respuesta usa formato JSON:
[
{
"StudyDateTime": "2021-07-11 00:38:22",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:52:10",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:31:13",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 23:25:17",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 22:35:16",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:49:46",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 21:46:04",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:13:30",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 21:10:17",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 20:05:48",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
"InstanceCount": "6"
}
]
Limitaciones y comportamientos adicionales
Si la etiqueta de DICOM no tiene un tipo compatible en BigQuery (enumerado en RV excluidas), se muestra en una columna independiente (llamada DroppedTags.TagName
) en la tabla de BigQuery de destino.
Soluciona problemas de solicitudes de exportación de DICOM
Si se producen errores durante una solicitud de exportación de DICOM a BigQuery, se registran en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.