Exportar recursos de FHIR a BigQuery

En esta página, se explica cómo exportar recursos FHIR a BigQuery para realizar exploraciones y análisis.

Configura permisos de BigQuery

Antes de exportar recursos FHIR a BigQuery, debes otorgar permisos adicionales a la cuenta de servicio del agente de servicio de Cloud Healthcare. Para obtener más información, consulta Permisos de BigQuery para el almacén de datos de FHIR.

Exporta recursos de FHIR

En los siguientes ejemplos, se muestra cómo exportar recursos de FHIR a una tabla 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

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

  • Si la tabla de destino ya existe
  • Si ya estableciste el campo force
  • Si ya estableciste un valor para la enumeración writeDisposition. Si usas la enumeración writeDisposition, no configures el campo force.

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

  • Si la tabla de destino ya existe y force se configura como true, la operación de exportación reemplazará la tabla existente.
  • Si la tabla de destino ya existe y force se establece en false, se produce un error.
  • Si la tabla de destino aún no existe, la operación de exportación crea una tabla nueva, sin importar si especificas el campo force.
  • Cuando se usa writeDisposition, si la tabla de destino ya existe y está vacía, la operación de exportación se completa de forma correcta en lugar de mostrar un error.

Console

Para exportar recursos de FHIR 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 que contiene el almacén de FHIR desde el que exportas los recursos de FHIR.
  3. En la lista de almacenes de datos, elige Export en la lista Actions para el almacén de FHIR.
  4. En la página Exportar recursos de FHIR que aparece, selecciona Tabla de BigQuery.
  5. En Opciones de salida de BigQuery, elige cómo se exportan los datos a BigQuery.
  6. En Opciones de salida de BigQuery, haz clic en Explorar para elegir el conjunto de datos y el proyecto de BigQuery.
  7. En Seleccionar conjunto de datos, busca el proyecto de BigQuery y el conjunto de datos al que deseas exportar los recursos de FHIR.
  8. Si quieres establecer la profundidad para todas las estructuras recurrentes en el esquema de salida, haz clic en el nivel de profundidad relevante en el control deslizante Profundidad de la estructura recurrente. De forma predeterminada, el valor recurrente es 2.

    Para obtener más información, consulta projects.locations.datasets.fhirStores.SchemaConfig.
  9. Haz clic en Exportar para exportar recursos de FHIR a BigQuery.
  10. Para hacer un seguimiento del 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:
    • En la sección Estado de la operación de larga duración, hay 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 de aceptar en la misma fila que el ID de operación.
    Si encuentras algún error, haz clic en Acciones y, luego, en Ver detalles en Cloud Logging.

gcloud

Para exportar recursos de FHIR a BigQuery, usa el comando gcloud healthcare fhir-stores export bq. Especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén FHIR
  • El nombre de un conjunto de datos de BigQuery existente
  • El nombre del proyecto al que pertenece el conjunto de datos de BigQuery
  • El schema-type establecido como analytics
  • Uno de los siguientes valores para la marca --writeDisposition:
    • write-empty: Solo exporta datos si las tablas de destino están vacías. Es el valor predeterminado.
    • write-truncate: Borra todos los datos existentes en las tablas antes de escribir las instancias.
    • write-append: Agrega datos a las tablas existentes.

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

gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --location=LOCATION \
  --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \
  --schema-type=analytics \
  --write-disposition={write-empty|write-truncate|write-append}

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: [FHIR_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/fhirStores/FHIR_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

En la respuesta, se incluye done: true.

done: true
metadata:
'@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ExportResources
createTime: 'CREATE_TIME'
endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
response:
'@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse
fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

API

Para obtener más información, consulta projects.locations.datasets.fhirStores.export

curl

Para exportar recursos de FHIR, realiza una solicitud POST y proporciona la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén FHIR
  • El nombre de un conjunto de datos de BigQuery existente
  • El nombre del proyecto al que pertenece el conjunto de datos de BigQuery
  • El campo schemaType establecido en el valor ANALYTICS
  • Un token de acceso
  • Uno de los siguientes valores para la enumeración writeDisposition:
    • write-empty: Solo exporta datos si las tablas de destino están vacías. Es el valor predeterminado.
    • write-truncate: Borra todos los datos existentes en las tablas antes de escribir las instancias.
    • write-append: Agrega datos a las tablas existentes.
  • Un campo opcional, _type, que solo exporta uno o más tipos de recursos de FHIR (solo disponible en la versión 1)
  • Un campo opcional, _since, que solo exporta recursos actualizados después de un momento específico, definido como YYYY-MM-DDThh:mm:ss.sss+zz:zz (solo disponible en la versión 1 de la versión 1)

La operación genera una tabla de BigQuery para cada tipo de recurso en el almacén de FHIR.

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': {
        'datasetUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID',
        'schemaConfig': {
          'schemaType': 'ANALYTICS'
        }
        'writeDisposition': '{write-empty|write-truncate|write-append}'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_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.fhir.FhirService.ExportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse",
  }
}

PowerShell

Para exportar recursos de FHIR, realiza una solicitud POST y proporciona la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén FHIR
  • El nombre de un conjunto de datos de BigQuery existente
  • El nombre del proyecto al que pertenece el conjunto de datos de BigQuery
  • El campo schemaType establecido en el valor ANALYTICS
  • Un token de acceso
  • Uno de los siguientes valores para la enumeración writeDisposition:
    • write-empty: Solo exporta datos si las tablas de destino están vacías. Es el valor predeterminado.
    • write-truncate: Borra todos los datos existentes en las tablas antes de escribir las instancias.
    • write-append: Agrega datos a las tablas existentes.
  • Un campo opcional, _type, que solo exporta uno o más tipos de recursos de FHIR (solo disponible en la versión 1)
  • Un campo opcional, _since, que solo exporta recursos actualizados después de un momento específico, definido como YYYY-MM-DDThh:mm:ss.sss+zz:zz (solo disponible en la versión 1 de la versión 1)

La operación genera una tabla de BigQuery para cada tipo de recurso en el almacén de FHIR.

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': {
      'datasetUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID',
      'schemaConfig': {
        'schemaType': 'ANALYTICS'
      },
      'writeDisposition': '{write-empty|write-truncate|write-append}'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_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.fhir.FhirService.ExportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse",
  }
}

Consulta y analiza datos de FHIR en BigQuery

Después de exportar los recursos FHIR a BigQuery, consulta la solución Analiza datos de FHIR en BigQuery para obtener información sobre cómo consultar y analizar los datos exportados. La solución hace referencia al conjunto de datos públicos de los datos sintéticos que genera Synthea™ en FHIR, que aloja más de 1 millón de registros de pacientes sintéticos generados en formatos de Synthea™ y FHIR.

Soluciona problemas de solicitudes de exportación de FHIR

Si se producen errores durante una solicitud de exportación de FHIR, estos se registrarán en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.

¿Qué sigue?