Exporta metadatos de DICOM a BigQuery

En esta página, se explica cómo exportar metadatos de DICOM a BigQuery para exploración y análisis. Para obtener información sobre el esquema de BigQuery que se crea cuando se exportan metadatos de DICOM, consulta Información sobre el esquema de DICOM de BigQuery.

Configura permisos de BigQuery

Antes de exportar metadatos de DICOM a 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.

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 otro proyecto, consulta Exporta metadatos de DICOM a un proyecto diferente.

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

El comportamiento de la operación de exportación puede variar según los siguientes factores:

  • Si la tabla de destino ya existe
  • Ya sea que estableciste el campo force (con la API) o la marca --overwrite-table (con la herramienta de línea de comandos de gcloud).

El comportamiento en cada uno de estos casos es el siguiente:

  • Si la tabla de destino ya existe y force se establece en true o 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 en false o la marca --overwrite-table no se especifica, 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.

Console

Para exportar metadatos de DICOM a BigQuery, completa los siguientes pasos:

  1. En Cloud Console, ve a la página Conjuntos de datos.

    Ir a la página Conjuntos de datos

  2. Haz clic en el conjunto de datos para el que exportas metadatos de DICOM.

  3. En la lista de almacenes de DICOM, selecciona Exportar en la lista Acciones.

    Aparecerá la página Exportar almacén de DICOM.

  4. Selecciona Tabla de BigQuery.

  5. En la lista Proyecto, selecciona el proyecto de BigQuery.

  6. En la lista ID del conjunto de datos, selecciona el conjunto de datos.

  7. En el campo Nombre de la tabla, ingresa un nombre de tabla nuevo.

    BigQuery verifica cada selección para asegurarse de que la tabla de destino sea válida.

  8. Haz clic en Exportar para exportar los metadatos de DICOM al destino definido en BigQuery.

gcloud

Para exportar metadatos de DICOM a BigQuery, usa el comando gcloud healthcare dicom-stores export bq. Especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El nombre de un conjunto de datos de BigQuery existente
  • El nombre de la tabla de BigQuery. El nombre de la tabla solo puede contener letras (mayúsculas o minúsculas), números y guiones bajos.

En el siguiente ejemplo, se muestra el comando gcloud dicom-stores export bq.

gcloud healthcare dicom-stores export bq DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
  [--overwrite-table]

Después de que ejecutas el comando, se muestra el nombre de la operación:

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:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Cuando finaliza la operación, la respuesta incluye done: true.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
response:
  '@type': '...'

API

Para exportar metadatos de DICOM a BigQuery, usa el método projects.locations.datasets.dicomStores.export.

curl

Para exportar metadatos de DICOM, realiza una solicitud POST y especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El nombre de un conjunto de datos de BigQuery existente
  • Un nombre para la tabla de exportación de BigQuery. El nombre solo puede contener letras (mayúsculas o minúsculas), números y guiones bajos. El conjunto de datos de BigQuery debe existir, pero la API de Cloud Healthcare puede actualizar una tabla existente o crear una nueva.
  • Un token de acceso

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 "{
      'bigqueryDestination': {
        'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
      }
    }" "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, puedes usar 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/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

PowerShell

Para exportar metadatos de DICOM, realiza una solicitud POST y especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El nombre de un conjunto de datos de BigQuery existente
  • La tabla de BigQuery
  • Un token de acceso

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 "{
    'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
    }
  }" `
  -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, puedes usar 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/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

Exporta metadatos de DICOM a un proyecto diferente

Para exportar metadatos de DICOM de un proyecto a otro, primero consulta Permisos para exportar metadatos de DICOM a un proyecto diferente para obtener información sobre cómo establecer 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. Especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El proyecto de destino
  • El nombre de un conjunto de datos de BigQuery existente en el proyecto de destino
  • El nombre de la tabla de BigQuery. El nombre de la tabla solo puede contener letras (mayúsculas o minúsculas), números y guiones bajos.

En el siguiente ejemplo, se muestra el comando gcloud dicom-stores export bq.

gcloud healthcare dicom-stores export bq DICOM_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --bq-table=bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
  [--overwrite-table]

La línea de comandos muestra el ID de la operación y, después de que se completa la operación, done:

Request issued for: [DICOM_STORE_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_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:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Cuando finaliza la operación, la respuesta incluye done: true.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/SOURCE_PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
response:
  '@type': '...'

API

Para exportar metadatos de DICOM a BigQuery, usa el método projects.locations.datasets.dicomStores.export.

curl

Para exportar metadatos de DICOM de un almacén de DICOM en un proyecto a una tabla de BigQuery en otro proyecto, realiza una solicitud POST y especifica la siguiente información:

  • El proyecto de origen
  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El proyecto de destino
  • El nombre de un conjunto de datos de BigQuery existente en el proyecto de destino
  • La tabla de BigQuery
  • Un token de acceso

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 "{
      'bigqueryDestination': {
        'tableUri': 'bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
      }
    }" "https://healthcare.googleapis.com/v1/projects/SOURCE_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/SOURCE_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, puedes usar 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/SOURCE_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/SOURCE_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/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

PowerShell

Para exportar metadatos de DICOM de un almacén de DICOM en un proyecto a una tabla de BigQuery en otro proyecto, realiza una solicitud POST y especifica la siguiente información:

  • El proyecto de origen
  • El nombre del conjunto de datos superior
  • El nombre del almacén de DICOM
  • El proyecto de destino
  • El nombre de un conjunto de datos de BigQuery existente en el proyecto de destino
  • La tabla de BigQuery
  • Un token de acceso

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 "{
    'bigqueryDestination': {
      'tableUri': 'bq://DESTINATION_PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_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/SOURCE_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, puedes usar 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/SOURCE_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/SOURCE_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/viewer/CLOUD_LOGGING_URL"
  },
  "done": true,
  "response": {
    "@type": "..."
  }
}

Limitaciones y comportamientos adicionales

Las etiquetas de DICOM se enumerarán en una columna separada (llamada DroppedTags.TagName) en la tabla de BigQuery de destino si la etiqueta de DICOM no tiene un tipo compatible en BigQuery (enumerado en VRs excluidas).

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.