Transmitir y sincronizar recursos de FHIR con BigQuery


En este instructivo, se explican las situaciones en las que puedes usar la transmisión de BigQuery para mantener un almacén de FHIR sincronizado con un conjunto de datos de BigQuery casi en tiempo real.

Objetivos

En el instructivo, se explican los siguientes pasos:

  1. Configurar los permisos de BigQuery
  2. Crear un almacén de FHIR y agregar recursos de paciente
  3. Configurar la transmisión de BigQuery en el almacén de FHIR
  4. Verificar la configuración de transmisión a BigQuery
  5. Exportar recursos de FHIR existentes a BigQuery
  6. Transmite recursos desde varios almacenes de FHIR al mismo conjunto de datos de BigQuery.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita Cloud Healthcare API.

    Habilita la API

  7. Instala Google Cloud CLI.
  8. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Paso 1: Configura los permisos de BigQuery

Para transmitir los cambios de los recursos de 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.

Paso 2: Configura y verifica la transmisión de BigQuery

Para habilitar la transmisión a BigQuery, sigue estas instrucciones:

Crea un almacén de FHIR y agrega recursos de paciente

Para crear un almacén de FHIR y agregar dos recursos de paciente, sigue estos pasos:

  1. Crea el almacén de FHIR:

    REST

    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 FHIR
    • FHIR_STORE_ID: Es un identificador para el almacén de FHIR. El ID del almacén de FHIR debe tener lo siguiente:
      • Un ID único en su conjunto de datos
      • Una string de Unicode de 1 a 256 caracteres que consiste en lo siguiente:
        • Números
        • Letras
        • Guiones bajos
        • Guiones:
        • Puntos:
    • FHIR_STORE_VERSION: La versión de FHIR del almacén de FHIR. Las opciones disponibles son DSTU2, STU3 o R4.

    Cuerpo JSON de la solicitud:

    {
      "version": "FHIR_STORE_VERSION"
    }
    

    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'
    {
      "version": "FHIR_STORE_VERSION"
    }
    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?fhirStoreId=FHIR_STORE_ID"

    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:

    @'
    {
      "version": "FHIR_STORE_VERSION"
    }
    '@  | 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?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content

    Explorador de APIs

    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. Crea el primer recurso de paciente en el almacén de FHIR:

    REST

    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

    Cuerpo JSON de la solicitud:

    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    

    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'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    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/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

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

  3. Crea el segundo recurso de paciente en el almacén de FHIR:

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID: El conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR

    Cuerpo JSON de la solicitud:

    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    

    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'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    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/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

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

  4. Busca recursos Pacientes en el almacén de FHIR y verifica que el almacén contenga los dos recursos Pacientes:

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID: El conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR

    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/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

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

Configura la transmisión de BigQuery en el almacén de FHIR

Actualizar el almacén de FHIR para configurar la transmisión de BigQuery Después de configurar la transmisión, la API de Cloud Healthcare transmite cualquier cambio de recursos al conjunto de datos de BigQuery.

  1. Actualiza tu almacén de FHIR existente para agregar la ubicación del conjunto de datos de BigQuery:

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID es el conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID de la tienda de FHIR.
    • BIGQUERY_PROJECT_ID es el proyecto de Google Cloud que contiene el conjunto de datos de BigQuery para la transmisión de cambios de recursos FHIR.
    • BIGQUERY_DATASET_ID es el conjunto de datos de BigQuery en el que transmites los cambios de recursos FHIR.

    Cuerpo JSON de la solicitud:

    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    

    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'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:

    curl -X PATCH \
    -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?updateMask=streamConfigs"

    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:

    @'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    '@  | 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 PATCH `
    -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?updateMask=streamConfigs" | Select-Object -Expand Content

    Explorador de APIs

    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:

Verifica la configuración de transmisión a BigQuery

Sigue estos pasos para verificar que la transmisión esté configurada correctamente:

  1. Crea un tercer recurso de paciente en el almacén de FHIR:

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID: El conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID es el ID del almacén de FHIR

    Cuerpo JSON de la solicitud:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    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'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    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/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

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

  2. Ejecuta bq query para consultar la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient. BigQuery organiza las tablas por tipo de recurso de FHIR. El tercer recurso de paciente que creaste está en la tabla Patient.

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    La consulta muestra el siguiente resultado. El resultado muestra que hay un registro de recursos de Paciente en la tabla de BigQuery, porque agregaste el recurso de paciente después de configurar la transmisión en el almacén de FHIR.

    +-----+
    | f0_ |
    +-----+
    |   1 |
    +-----+
    

Paso 3: Exporta recursos de FHIR existentes a BigQuery

Si tienes un almacén de FHIR existente que contiene datos que deseas sincronizar con un conjunto de datos de BigQuery, debes completar los siguientes pasos para asegurarte de que los datos existentes estén en BigQuery:

  1. Configurar la transmisión a BigQuery
  2. Exportar los datos existentes al conjunto de datos de BigQuery

Para exportar los dos recursos de pacientes que existían en el almacén de FHIR antes de configurar la transmisión al conjunto de datos de BigQuery, completa los siguientes pasos:

  1. Para exportar los recursos del almacén de FHIR a BigQuery, ejecuta el comando gcloud healthcare fhir-stores export bq. El comando usa la marca --write-disposition=write-append, que agrega datos a la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient existente.

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
       --dataset=DATASET_ID \
       --location=LOCATION \
       --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \
       --schema-type=analytics_v2 \
       --write-disposition=write-append
    
  2. Consulta la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient para verificar la cantidad de recursos Pacientes en el conjunto de datos de BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    La consulta muestra el siguiente resultado, que muestra que hay 4 registros de recursos de Paciente en la tabla de BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

    El número real de recursos de Pacientes en la tabla de BigQuery es 3, pero la consulta muestra 4. Pueden producirse incoherencias cuando un recurso contiene duplicados de diferentes operaciones. En este caso, el primer recurso Paciente se agregó a la tabla de BigQuery estas dos veces:

    • Cuando se transmitió la creación de recursos de pacientes
    • La fecha en la que se exportaron los recursos del almacén de FHIR a BigQuery

    La tabla de BigQuery también contiene un historial de mutaciones del primer recurso Paciente. Por ejemplo, si borras el recurso Paciente mediante fhir.delete, la tabla de BigQuery tendrá una columna meta.tag.code con el valor DELETE.

  3. Para obtener la instantánea más reciente de los datos del almacén de FHIR, consulta la vista. Para crear la vista, la API de Cloud Healthcare solo observa la versión más reciente de cada recurso. Las consultas de vistas son la forma más precisa de mantener sincronizada un almacén de FHIR y su tabla de BigQuery correspondiente.

    Para consultar la vista, ejecuta el siguiente comando:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
    

    La consulta muestra el siguiente resultado, que muestra correctamente que hay 3 recursos de pacientes en la tabla de BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   3 |
    +-----+
    

Paso 4: Transmite recursos de varios almacenes de FHIR al mismo conjunto de datos de BigQuery

En algunos casos, es posible que quieras transmitir recursos de FHIR desde varios almacenes de FHIR al mismo conjunto de datos de BigQuery para realizar análisis de los recursos de FHIR agregados de los almacenes de FHIR.

En los siguientes pasos, crearás un segundo almacén de FHIR en el mismo conjunto de datos de la API de Cloud Healthcare que el primer almacén de FHIR, pero puedes usar almacenes de FHIR de diferentes conjuntos de datos cuando agregues recursos de FHIR.

  1. Crea un segundo almacén de FHIR con la transmisión de BigQuery habilitada y usa el mismo conjunto de datos de BigQuery que usaste en Configura la transmisión de BigQuery en el almacén de FHIR.

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID es el conjunto de datos superior del almacén de FHIR
    • SECOND_FHIR_STORE_ID es un identificador para el segundo almacén de FHIR. El ID del almacén de FHIR debe ser único en el conjunto de datos. El ID de almacén de FHIR puede ser cualquier string Unicode de 1 a 256 caracteres que conste de números, letras, guiones bajos, guiones y puntos.
    • FHIR_STORE_VERSION es la versión del almacén de FHIR: DSTU2, STU3 o R4.
    • BIGQUERY_PROJECT_ID es el proyecto de Google Cloud que contiene el conjunto de datos de BigQuery para la transmisión de cambios de recursos FHIR.
    • BIGQUERY_DATASET_ID es el conjunto de datos de BigQuery en el que transmites los cambios de recursos FHIR.

    Cuerpo JSON de la solicitud:

    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    

    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'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    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?fhirStoreId=SECOND_FHIR_STORE_ID"

    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:

    @'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    '@  | 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?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand Content

    Explorador de APIs

    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. Crea un recurso de paciente en el segundo almacén de FHIR:

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del conjunto de datos superior.
    • DATASET_ID es el conjunto de datos superior del almacén de FHIR
    • SECOND_FHIR_STORE_ID es el segundo ID de tienda de FHIR

    Cuerpo JSON de la solicitud:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    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'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    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/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"

    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:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | 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/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

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

  3. Consulta la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient para verificar la cantidad de recursos de paciente en la tabla de BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    Cuando se transmitieron los datos sobre el recurso nuevo de pacientes, BigQuery usó la tabla Patient existente en el conjunto de datos de BigQuery. La consulta muestra el siguiente resultado, que muestra que hay 5 registros de recursos de Paciente en la tabla de BigQuery: Consulta Exporta recursos de FHIR existentes a BigQuery para obtener una explicación de por qué la tabla contiene 5 recursos en lugar de 4.

    +-----+
    | f0_ |
    +-----+
    |   5 |
    +-----+
    
  4. Ejecuta el siguiente comando para consultar la vista:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
    

    La consulta muestra el siguiente resultado, que muestra que hay 4 recursos para pacientes en los primeros almacenes de FHIR combinados y en la segunda tabla de BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

Limpia

Si creaste un proyecto nuevo para este instructivo, sigue los pasos en Borra el proyecto. Para borrar solo la API de Cloud Healthcare y los recursos de BigQuery, completa los pasos que se indican en Borra el conjunto de datos de la API de Cloud Healthcare y Borra el conjunto de datos de BigQuery.

Borra el proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra el conjunto de datos de la API de Cloud Healthcare

Si ya no necesitas el conjunto de datos de la API de Cloud Healthcare que creaste en este instructivo, puedes borrarlo. Si borras un conjunto de datos, se borrarán de forma permanente el conjunto de datos y los almacenes de FHIR que contenga.

  1. Para borrar un conjunto de datos, usa el comando gcloud healthcare datasets delete.

    gcloud healthcare datasets delete DATASET_ID \
    --location=LOCATION \
    --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • DATASET_ID: Es el conjunto de datos de la API de Cloud Healthcare.
    • LOCATION: La ubicación del conjunto de datos
    • PROJECT_ID: El ID del proyecto de Google Cloud.
  2. Para confirmar, escribe Y.

Esta es la salida:

Deleted dataset [DATASET_ID].

Borra el conjunto de datos de BigQuery

Si ya no necesitas el conjunto de datos de BigQuery creado en este instructivo, puedes borrarlo. Si borras un conjunto de datos, este y todas sus tablas se borrarán de forma permanente.

  1. Quita el BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID mediante la ejecución del comando bq rm:

    bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
    

    La marca --recursive borra todas las tablas del conjunto de datos, incluida la tabla Patient.

  2. Para confirmar, escribe Y.

¿Qué sigue?