Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Exporta 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.

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 enumeración writeDisposition:
    • WRITE_EMPTY: Solo exporta datos si las tablas de destino están vacías. Esta es la opción predeterminada.
    • 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
  • Un campo opcional, _since, que solo exporta los recursos actualizados después de un tiempo específico, definido como YYYY-MM-DDThh:mm:ss.sss+zz:zz

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. Esta es la opción predeterminada.
    • 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
  • Un campo opcional, _since, que solo exporta los recursos actualizados después de un tiempo específico, definido como YYYY-MM-DDThh:mm:ss.sss+zz:zz

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
  • Uno de los siguientes valores para la enumeración writeDisposition:
    • WRITE_EMPTY: Solo exporta datos si las tablas de destino están vacías. Esta es la opción predeterminada.
    • WRITE_TRUNCATE: borra todos los datos existentes en las tablas antes de escribir las instancias.
    • WRITE_APPEND: Agrega datos a las tablas existentes.
  • Un token de acceso
  • Un campo opcional, _type, que solo exporta uno o más tipos de recursos de FHIR
  • Un campo opcional, _since, que solo exporta los recursos actualizados después de un tiempo específico, definido como YYYY-MM-DDThh:mm:ss.sss+zz:zz

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?