Transmitir y sincronizar recursos FHIR con BigQuery


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

Objetivos

En el tutorial se muestran los siguientes pasos:

  1. Configura los permisos de BigQuery.
  2. Crea un almacén FHIR y añade recursos Patient.
  3. Configura la transmisión de BigQuery en el almacén de FHIR.
  4. Verifica la configuración de la transmisión a BigQuery.
  5. Exporta recursos FHIR a BigQuery.
  6. Transmite recursos de varios almacenes FHIR al mismo conjunto de datos de BigQuery.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Healthcare API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  7. Install the Google Cloud CLI.

  8. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  9. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init

    Paso 1: Configurar los permisos de BigQuery

    Para transmitir cambios en los recursos FHIR a BigQuery, debes conceder 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 almacenes FHIR.

    Paso 2: Configurar y verificar la transmisión de BigQuery

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

    Crear un almacén FHIR y añadir recursos Patient

    Para crear un almacén FHIR y añadir dos recursos Patient, sigue estos pasos:

    1. Crea el almacén FHIR:

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: el ID de tu Google Cloud proyecto
      • LOCATION: la ubicación del conjunto de datos
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: identificador del almacén FHIR. El ID de almacén FHIR debe tener lo siguiente:
        • Un ID único en su conjunto de datos
        • Una cadena Unicode de entre 1 y 256 caracteres que incluya lo siguiente:
          • Numbers
          • Cartas
          • Guiones bajos
          • Guiones
          • Periodos
      • FHIR_STORE_VERSION: la versión de FHIR del almacén 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

      cat > request.json << 'EOF'
      {
        "version": "FHIR_STORE_VERSION"
      }
      EOF

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

      @'
      {
        "version": "FHIR_STORE_VERSION"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 Explorador de APIs 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, rellena los campos obligatorios y haz clic en Ejecutar.

      Deberías recibir una respuesta JSON similar a la siguiente:

    2. Crea el primer recurso Patient en el almacén FHIR:

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: el ID de tu Google Cloud proyecto
      • LOCATION: la ubicación del conjunto de datos
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: el ID del almacén 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente:

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

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: el ID del almacén 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente:

    4. Busca recursos Patient en el almacén FHIR y comprueba que contiene los dos recursos Patient:

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: el ID del almacén FHIR

      Para enviar tu solicitud, elige una de estas opciones:

      curl

      Ejecuta el comando siguiente:

      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 comando siguiente:

      $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 siguiente:

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

    Actualiza el almacén FHIR para configurar la transmisión de BigQuery. Una vez configurada la transmisión, la API Cloud Healthcare transmite los cambios de recursos al conjunto de datos de BigQuery.

    1. Actualiza tu almacén FHIR para añadir la ubicación del conjunto de datos de BigQuery:

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: el ID de tu almacén FHIR
      • BIGQUERY_PROJECT_ID: el Google Cloud proyecto que contiene el conjunto de datos de BigQuery para transmitir cambios en los recursos FHIR
      • BIGQUERY_DATASET_ID: el conjunto de datos de BigQuery al que estás transmitiendo los cambios en los 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 Explorador de APIs 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, rellena los campos obligatorios y haz clic en Ejecutar.

      Deberías recibir una respuesta JSON similar a la siguiente:

    Verificar la configuración de la transmisión a BigQuery

    Para comprobar que la transmisión se ha configurado correctamente, sigue estos pasos:

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

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • FHIR_STORE_ID: el ID del almacén 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente:

    2. Consulta la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient ejecutando bq query. BigQuery organiza las tablas por tipo de recurso FHIR. El tercer recurso Patient que has creado se encuentra 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 devuelve el siguiente resultado. El resultado muestra que hay un registro de recurso Patient en la tabla de BigQuery, porque añadiste el recurso Patient después de configurar la transmisión en el almacén FHIR.

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

    Paso 3: Exportar recursos FHIR a BigQuery

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

    1. Configura la transmisión a BigQuery.
    2. Exporta los datos a un conjunto de datos de BigQuery.

    Para exportar los dos recursos Patient que había en el almacén FHIR antes de configurar la transmisión al conjunto de datos de BigQuery, sigue estos pasos:

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

      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 el número de recursos Patient del 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 devuelve el siguiente resultado, que muestra que hay 4 registros de recursos Patient en la tabla de BigQuery:

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

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

      • Cuándo se transmitió la creación del recurso Patient
      • Cuándo se exportaron los recursos del almacén FHIR a BigQuery

      La tabla de BigQuery también contiene un historial de mutaciones del primer recurso Patient. Por ejemplo, si elimina el recurso Patient con fhir.delete, la tabla de BigQuery tiene una columna meta.tag.code con el valor DELETE.

    3. Para obtener la última instantánea de los datos del almacén FHIR, consulta la vista. La API Cloud Healthcare crea la vista consultando únicamente la versión más reciente de cada recurso. Consultar vistas es la forma más precisa de mantener sincronizado un almacén 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 devuelve el siguiente resultado, que muestra correctamente que hay 3 recursos Patient en la tabla de BigQuery:

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

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

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

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

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

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • SECOND_FHIR_STORE_ID: identificador del segundo almacén FHIR. El ID del almacén FHIR debe ser único en el conjunto de datos. El ID del almacén FHIR puede ser cualquier cadena Unicode de entre 1 y 256 caracteres que contenga números, letras, guiones bajos, guiones y puntos.
      • FHIR_STORE_VERSION: la versión de la tienda FHIR: DSTU2, STU3 o R4
      • BIGQUERY_PROJECT_ID: el Google Cloud proyecto que contiene el conjunto de datos de BigQuery para transmitir cambios en los recursos FHIR
      • BIGQUERY_DATASET_ID: el conjunto de datos de BigQuery al que estás transmitiendo los cambios en los 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 Explorador de APIs 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, rellena los campos obligatorios y haz clic en Ejecutar.

      Deberías recibir una respuesta JSON similar a la siguiente:

    2. Crea un recurso Patient en el segundo almacén FHIR:

      REST

      Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

      • PROJECT_ID: tu ID de proyecto Google Cloud
      • LOCATION: la ubicación del conjunto de datos principal
      • DATASET_ID: el conjunto de datos superior del almacén FHIR
      • SECOND_FHIR_STORE_ID: el segundo ID de almacén 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

      A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente:

    3. Consulta la tabla BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient para verificar el número de recursos Patient de 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`'

      Al transmitir los datos sobre el nuevo recurso Patient, BigQuery usó la tabla Patient del conjunto de datos de BigQuery. La consulta devuelve el siguiente resultado, que muestra que hay 5 registros de recursos Patient en la tabla de BigQuery. Consulta Exportar recursos FHIR a BigQuery para saber 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 devuelve el siguiente resultado, que muestra que hay 4 recursos Patient en los almacenes FHIR primero y segundo combinados, así como en la tabla de BigQuery:

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

    Limpieza

    Si has creado un proyecto para este tutorial, sigue los pasos que se indican en la sección Eliminar el proyecto. Para eliminar solo los recursos de la API Cloud Healthcare y BigQuery, sigue los pasos que se indican en Eliminar el conjunto de datos de la API Cloud Healthcare y Eliminar el conjunto de datos de BigQuery.

    Eliminar el proyecto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Eliminar el conjunto de datos de la API Cloud Healthcare

    Si ya no necesitas el conjunto de datos de la API Cloud Healthcare creado en este tutorial, puedes eliminarlo. Si eliminas un conjunto de datos, este y todos los almacenes FHIR que contenga se eliminarán de forma permanente.

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

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

      Haz los cambios siguientes:

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

    El resultado es el siguiente:

    Deleted dataset [DATASET_ID].
    

    Eliminar el conjunto de datos de BigQuery

    Si ya no necesitas el conjunto de datos de BigQuery creado en este tutorial, puedes eliminarlo. Si eliminas un conjunto de datos, este y todas las tablas que contenga se eliminarán de forma permanente.

    1. Quita el BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID dataset ejecutando el comando bq rm:

      bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID

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

    2. Para confirmar, escribe S.

    Siguientes pasos