Transmitir y sincronizar recursos de FHIR con BigQuery


En este instructivo, se explican situaciones en las que puedes usar de 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 para pacientes
  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

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

    Go to project selector

  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 pacientes

Para crear un almacén de FHIR y agregar dos recursos de pacientes, 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 es el conjunto de datos superior del almacén de FHIR
    • FHIR_STORE_ID 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 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. 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 de Paciente en el almacén de FHIR y verifica que el almacén contenga los dos recursos de Paciente:

    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 recurso cambios en el conjunto de datos de BigQuery.

  1. Actualiza el 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 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:

Verifica la configuración de transmisión a BigQuery

Completa los siguientes 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 Patient 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 los recursos de FHIR existentes a BigQuery

Si tienes un almacén de FHIR existente que contiene datos que quieres sincronizar con BigQuery conjunto de datos, debes completar los siguientes pasos para asegurarse 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 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 Patient 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 Patient en la tabla de BigQuery es 3, pero la consulta muestra 4. Pueden ocurrir incoherencias cuando un recurso contiene duplicados de operaciones diferentes. En este caso, se agregó el primer recurso Patient. a la tabla de BigQuery estas dos veces:

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

    La tabla de BigQuery también contiene un historial de mutaciones de los primeros Recurso de paciente. Por ejemplo, si borras el recurso Patient con fhir.delete, ocurrirá lo siguiente: la tabla de BigQuery tiene una columna meta.tag.code con la valor DELETE.

  3. Para obtener la última instantánea de los datos del almacén de FHIR, consulta la vista. La API de Cloud Healthcare construye la vista solo a partir de 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 desde varios almacenes de FHIR al mismo conjunto de datos de BigQuery

En algunos casos, quizás quieras transmitir recursos FHIR desde varios Los almacenes FHIR en el mismo conjunto de datos de BigQuery para realizar análisis en 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 para agregar recursos de FHIR.

  1. Crea un segundo FHIR almacenar con la transmisión de BigQuery habilitada y usar el mismo conjunto de datos de BigQuery que usó 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 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. 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 Patient 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 solo borrar la API de Cloud Healthcare y los recursos de BigQuery, completa el pasos 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 creado en este instructivo, puedes borrar que la modifica. 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.

Este es el resultado:

Deleted dataset [DATASET_ID].

Borra el conjunto de datos de BigQuery

Si ya no necesitas el conjunto de datos de BigQuery que creaste en este instructivo, puedes borrar que la modifica. Si borras un conjunto de datos, este y todas las tablas que contenga se borrarán de forma permanente.

  1. Quita el BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID conjunto de datos Ejecutando el 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?