Exporta recursos de FHIR a BigQuery de forma masiva

En esta página, se describe cómo exportar recursos de FHIR por lotes a BigQuery para realizar exploraciones y análisis. La operación de exportación crea una tabla de BigQuery para cada tipo de recurso de FHIR en tu almacén de FHIR.

Para mejorar el rendimiento de las consultas y reducir los costos, considera exportar recursos de FHIR a tablas particionadas. Para obtener instrucciones, consulta Cómo exportar recursos de FHIR a tablas particionadas.

Si exportas recursos de FHIR según un programa, considera exportar tus datos de forma incremental. Para obtener instrucciones, consulta Exportaciones incrementales.

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.

Comprende el comportamiento de exportación

El comportamiento de la operación de exportación depende de lo siguiente:

  • Si la tabla de destino existe.
  • Si configuraste el campo force
  • Si especificas una enumeración en WriteDisposition. Si especificas una enumeración, no configures el campo force.

El comportamiento en cada caso es el siguiente:

  • La tabla de destino existe y force se establece como true: La operación de exportación reemplaza la tabla existente.
  • La tabla de destino existe y force se establece en false: Se produce un error.
  • La tabla de destino no existe: la operación de exportación crea una tabla nueva, sin importar si especificas el campo force.
  • La tabla de destino existe y configuraste WriteDisposition como WRITE_TRUNCATE o WRITE_APPEND: la operación de exportación se realiza correctamente en lugar de mostrar un error.

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

Exporta recursos de FHIR por lotes

En los siguientes ejemplos, se muestra cómo exportar recursos de FHIR a una tabla de BigQuery.

Cuando especifiques el destino de BigQuery, usa el URI completamente calificado:

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

Console

Para exportar recursos de FHIR a BigQuery con la consola de Google Cloud, completa los siguientes pasos:

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

    Ir a Conjuntos de datos

  2. Haz clic en el conjunto de datos que tiene el almacén de FHIR con los datos que exportarás.

  3. En la misma fila que el almacén de FHIR, abre la lista Acciones y selecciona Exportar.

  4. En la página Exporta recursos de FHIR que aparece, busca la sección Selecciona un destino. Selecciona Tabla de BigQuery.

  5. En la sección Disposición de escritura de la tabla de destino, selecciona una de las siguientes opciones para determinar el comportamiento de la operación de exportación:

    • Solo exportar datos si las tablas de destino están vacías: Esto equivale a seleccionar la enumeración WRITE_EMPTY en WriteDisposition.
    • Agregar datos a las tablas de destino: Esto equivale a seleccionar la enumeración WRITE_APPEND en WriteDisposition.
    • Borrar todos los datos existentes de las tablas de destino antes de escribir los recursos de FHIR: esto es equivalente a seleccionar la enumeración WRITE_TRUNCATE en WriteDisposition.
  6. En la sección Configuración de exportación de FHIR, haz clic en Explorar para seleccionar el proyecto y el conjunto de datos de BigQuery.

  7. En el menú desplegable Tipo de esquema, selecciona el esquema de salida para la tabla de BigQuery. Los siguientes esquemas están disponibles:

    • Analytics. Un esquema basado en el documento SQL en FHIR Debido a que BigQuery solo permite 10,000 columnas por tabla, no se generan esquemas para los campos Parameters.parameter.resource, Bundle.entry.resource y Bundle.entry.response.outcome.
    • Analytics V2. Un esquema similar al esquema de Analytics, con compatibilidad adicional para lo siguiente: El esquema de Estadísticas (versión 2) usa más espacio en la tabla de destino que el esquema de Analytics.

  8. Selecciona un nivel de profundidad en el control deslizante Profundidad de la estructura recurrente para establecer la profundidad de todas las estructuras recurrentes en el esquema de salida. De forma predeterminada, el valor recurrente es 2.

    Para obtener más información, consulta recursiveStructureDepth.

  9. Haz clic en Exportar para exportar recursos de FHIR a BigQuery.

  10. 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.
    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, ejecuta el comando gcloud healthcare fhir-stores export bq.

  1. Exporta los recursos de FHIR.

    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 es el conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR
    • BIGQUERY_DATASET_ID: El nombre del conjunto de datos de BigQuery existente en el que exportarás los recursos de FHIR.
    • SCHEMA_TYPE: Un valor para SchemaType. Usa uno de los siguientes valores:
      • analytics: Es un esquema basado en el documento SQL en FHIR. Debido a que BigQuery solo permite 10,000 columnas por tabla, no se generan esquemas para los campos Parameters.parameter.resource, Bundle.entry.resource y Bundle.entry.response.outcome.
      • analytics_v2: Es un esquema similar a analytics con compatibilidad adicional para lo siguiente:

        analytics-v2 usa más espacio en la tabla de destino que analytics.

    • WRITE_DISPOSITION: Un valor para WriteDisposition. Usa uno de los siguientes valores:
      • write-empty: Solo exporta datos si las tablas de BigQuery de destino están vacías.
      • write-truncate: Borra todos los datos existentes en las tablas de BigQuery antes de escribir los recursos de FHIR.
      • write-append: Agrega datos a las tablas de BigQuery de destino.
    • FHIR_RESOURCE_TYPE: Es un campo opcional. Especifica uno o más tipos de recursos de FHIR delimitados por comas para exportar solo recursos de FHIR de esos tipos.
    • SINCE_TIMESTAMP: Es un campo opcional. Especifica un valor en el formato YYYY-MM-DDThh:mm:ss.sss+zz:zz para exportar solo los recursos de FHIR actualizados después de un horario específico. Especifica la hora hasta el segundo y, luego, incluye una zona horaria. Por ejemplo, 2015-02-07T13:28:17.239+02:00 y 2017-01-01T00:00:00Z son horas válidas.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
      --location=LOCATION \
      --dataset=DATASET_ID \
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \
      --schema-type=SCHEMA_TYPE \
      --write-disposition=WRITE_DISPOSITION \
      --resource-type=FHIR_RESOURCE_TYPE \
      --since=SINCE_TIMESTAMP

    Windows (PowerShell)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID `
      --location=LOCATION `
      --dataset=DATASET_ID `
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID `
      --schema-type=SCHEMA_TYPE `
      --write-disposition=WRITE_DISPOSITION `
      --resource-type=FHIR_RESOURCE_TYPE `
      --since=SINCE_TIMESTAMP

    Windows (cmd.exe)

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID ^
      --location=LOCATION ^
      --dataset=DATASET_ID ^
      --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID ^
      --schema-type=SCHEMA_TYPE ^
      --write-disposition=WRITE_DISPOSITION ^
      --resource-type=FHIR_RESOURCE_TYPE ^
      --since=SINCE_TIMESTAMP
    La respuesta es la siguiente. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. El comando sondea la operación de larga duración y, luego, imprime el nombre de la operación en el campo name después de que finaliza la exportación. Anota el valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

    Respuesta

    Request issued for: [FHIR_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
    

  2. Para ver más detalles de la operación, ejecuta 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.fhir.FhirStoreService.ExportResources_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.cloud.healthcare.v1.fhir.ExportResourcesResponse'
    

REST

Para exportar recursos de FHIR a BigQuery, usa el método projects.locations.datasets.fhirStores.export.

  1. Exporta los recursos de FHIR:

    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 es el conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR
    • BIGQUERY_DATASET_ID: El nombre del conjunto de datos de BigQuery existente en el que exportarás los recursos de FHIR.
    • SCHEMA_TYPE: Un valor para SchemaType. Usa uno de los siguientes valores:
      • ANALYTICS: Es un esquema basado en el documento SQL en FHIR. Debido a que BigQuery solo permite 10,000 columnas por tabla, no se generan esquemas para los campos Parameters.parameter.resource, Bundle.entry.resource y Bundle.entry.response.outcome.
      • ANALYTICS_V2: Es un esquema similar a ANALYTICS con compatibilidad adicional para lo siguiente:

        ANALYTICS_V2 usa más espacio en la tabla de destino que ANALYTICS.

        .
    • WRITE_DISPOSITION: Un valor para WriteDisposition. Usa uno de los siguientes valores:
      • WRITE_EMPTY: Solo exporta datos si las tablas de BigQuery de destino están vacías.
      • WRITE_TRUNCATE: Borra todos los datos existentes en las tablas de BigQuery antes de escribir los recursos de FHIR.
      • WRITE_APPEND: Agrega datos a las tablas de BigQuery de destino.
    • FHIR_RESOURCE_TYPE: Es un campo opcional. Especifica uno o más tipos de recursos de FHIR delimitados por comas para exportar solo recursos de FHIR de esos tipos.
    • SINCE_TIMESTAMP: Es un campo opcional. Especifica un valor en el formato YYYY-MM-DDThh:mm:ss.sss+zz:zz para exportar solo los recursos de FHIR actualizados después de un horario específico. Especifica la hora hasta el segundo y, luego, incluye una zona horaria. Por ejemplo, 2015-02-07T13:28:17.239+02:00 y 2017-01-01T00:00:00Z son horas válidas.

    Cuerpo JSON de la solicitud:

    {
      "bigqueryDestination": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    

    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": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    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/fhirStores/FHIR_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": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
        },
        "writeDisposition": "WRITE_DISPOSITION"
      },
      "_type": "FHIR_RESOURCE_TYPE",
      "_since": "SINCE_TIMESTAMP"
    }
    '@  | 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/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand Content

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

    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  2. 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 Content

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

Exporta recursos de FHIR a tablas particionadas

Para exportar recursos de FHIR a tablas particionadas de BigQuery, establece la enumeración TimePartitioning en el campo lastUpdatedPartitionConfig de tu almacén de FHIR.

Las tablas particionadas funcionan como las tablas particionadas por unidad de tiempo de BigQuery. Las tablas particionadas tienen una columna adicional llamada lastUpdated, que es un duplicado de la columna meta.lastUpdated que se genera a partir del campo meta.lastUpdated en un recurso de FHIR. BigQuery usa la columna lastUpdated para particionar tablas por hora, día, mes o año.

Consulta Elige particiones diarias, por hora, mensuales o anuales para obtener recomendaciones sobre cómo seleccionar un nivel de detalle de partición.

No puedes convertir tablas de BigQuery existentes y no particionadas en tablas particionadas. Si exportas cambios en los recursos del paciente a una tabla Patients no particionada y, luego, creas un nuevo almacén de FHIR con particiones de tablas que exportan al mismo conjunto de datos de BigQuery, la API de Cloud Healthcare seguirá exportando datos a la tabla Patients no particionada. Para comenzar a usar una tabla particionada, borra la tabla Patients existente o usa un conjunto de datos de BigQuery diferente.

Si agregas particiones a una configuración de tienda de FHIR existente, podrás exportar a tablas existentes no particionadas. Sin embargo, el particionamiento solo se aplicará a las tablas nuevas.

En los siguientes ejemplos, se muestra cómo exportar recursos de FHIR a tablas particionadas de BigQuery.

Console

La consola de Google Cloud y la CLI de gcloud no admiten esta acción. En su lugar, usa curl, PowerShell o tu lenguaje preferido.

gcloud

La consola de Google Cloud y la CLI de gcloud no admiten esta acción. En su lugar, usa curl, PowerShell o tu lenguaje preferido.

REST

Para exportar recursos de FHIR a tablas particionadas de BigQuery, usa el método projects.locations.datasets.fhirStores.export.

  1. Exporta los recursos de FHIR:

    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 es el conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR
    • BIGQUERY_DATASET_ID: El nombre del conjunto de datos de BigQuery existente en el que exportarás los recursos de FHIR.
    • SCHEMA_TYPE: Un valor para SchemaType. Usa uno de los siguientes valores:
      • ANALYTICS: Es un esquema basado en el documento SQL en FHIR. Debido a que BigQuery solo permite 10,000 columnas por tabla, no se generan esquemas para los campos Parameters.parameter.resource, Bundle.entry.resource y Bundle.entry.response.outcome.
      • ANALYTICS_V2: Es un esquema similar a ANALYTICS con compatibilidad adicional para lo siguiente:

        ANALYTICS_V2 usa más espacio en la tabla de destino que ANALYTICS.

        .
    • TIME_PARTITION_TYPE: Es el nivel de detalle en el que se particionan los recursos de FHIR exportados. Usa uno de los siguientes valores:
      • HOUR: Particiona los datos por hora.
      • DAY: Particiona los datos por día.
      • MONTH: Particiona los datos por mes.
      • YEAR: Particiona los datos por año.
    • WRITE_DISPOSITION: Un valor para 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": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "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": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "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/fhirStores/FHIR_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": {
        "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID",
        "schemaConfig": {
          "schemaType": "SCHEMA_TYPE",
          "lastUpdatedPartitionConfig": {
            "type": "TIME_PARTITION_TYPE"
          }
        },
        "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/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand Content

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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  2. 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 Content

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

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

Consulta una tabla particionada

Para reducir los costos de consulta cuando se consultan tablas particionadas, usa la cláusula WHERE para filtrar por unidades de tiempo.

Por ejemplo, supongamos que configuras la enumeración PartitionType en DAY. Para consultar una tabla Patients en busca de recursos de Patient que se actualizaron en una fecha específica, ejecuta la siguiente consulta:

SELECT * FROM `PROJECT_ID.BIGQUERY_DATASET.Patients`
  WHERE DATE(lastUpdated) = 'YYYY-MM-DD'

Exportaciones incrementales

Puedes especificar una marca de tiempo para solo exportar los recursos de FHIR agregados a tu almacén de FHIR desde una exportación anterior que se realizó correctamente. Esto mejora el rendimiento y evita el costo de volver a exportar toda la tienda de FHIR, a la vez que garantiza que tus datos exportados siempre estén actualizados.

Cuando llames a fhirStores.export, especifica la marca de tiempo en el campo _since.

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.

Si toda la operación muestra un error, consulta Solución de problemas de operaciones de larga duración.

No se puede convertir la columna de NULLABLE a REPEATED

Este error se produce por una extensión repetida. Para resolver este error, usa el tipo de esquema ANALYTICS_V2. Si usas ANALYTICS_V2, es posible que tengas un conflicto entre dos extensiones o entre una extensión y otro campo.

Los nombres de las columnas se generan a partir del texto después del último carácter / en las URLs de extensión. Si una URL de extensión termina con un valor como /resource_field name, puede producirse un conflicto. \

Para evitar que vuelva a producirse este error, no uses extensiones si sus nombres de campo son los mismos que los campos de recursos que estás poblando.

¿Qué sigue?