Transmita e sincronize recursos FHIR com o BigQuery


Este tutorial explica cenários nos quais pode usar o streaming do BigQuery para manter um arquivo FHIR sincronizado com um conjunto de dados do BigQuery quase em tempo real.

Objetivos

O tutorial demonstra os seguintes passos:

  1. Configure as autorizações do BigQuery.
  2. Crie um FHIR store e adicione recursos de pacientes.
  3. Configure o streaming do BigQuery na loja FHIR.
  4. Valide a configuração de streaming para o BigQuery.
  5. Exporte recursos FHIR existentes para o BigQuery.
  6. Transmita recursos de várias lojas FHIR para o mesmo conjunto de dados do BigQuery.

Antes de começar

  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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  9. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

    Passo 1: configure as autorizações do BigQuery

    Para transmitir alterações de recursos FHIR para o BigQuery, tem de conceder autorizações adicionais à conta de serviço do agente do Cloud Healthcare . Para mais informações, consulte as autorizações do BigQuery da loja FHIR.

    Passo 2: configure e valide o streaming do BigQuery

    Para ativar o streaming para o BigQuery, siga estas instruções:

    Crie um arquivo FHIR e adicione recursos de pacientes

    Para criar um FHIR store e adicionar dois recursos de paciente, siga estes passos:

    1. Crie a loja FHIR:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: um identificador para a loja FHIR. O ID da loja FHIR tem de ter o seguinte:
        • Um ID exclusivo no respetivo conjunto de dados
        • Uma string Unicode de 1 a 256 carateres que consiste no seguinte:
          • Numbers
          • Cartas
          • Sublinhados
          • Traços
          • Períodos
      • FHIR_STORE_VERSION: a versão FHIR da loja FHIR. As opções disponíveis são DSTU2, STU3 ou R4.

      Corpo JSON do pedido:

      {
        "version": "FHIR_STORE_VERSION"
      }
      

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

      Deve receber uma resposta JSON semelhante à seguinte:

    2. Crie o primeiro recurso Patient na loja FHIR:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: o ID da loja FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Smith",
            "given": [
              "Darcy"
            ]
          }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient"
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Smith",
            "given": [
              "Darcy"
            ]
          }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Deve receber uma resposta JSON semelhante à seguinte:

    3. Crie o segundo recurso Patient na loja FHIR:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: o ID da loja FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Zhang",
            "given": [
              "Michael"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1980-01-01",
        "resourceType": "Patient"
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Zhang",
            "given": [
              "Michael"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1980-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Deve receber uma resposta JSON semelhante à seguinte:

    4. Pesquise recursos de pacientes na loja FHIR e verifique se a loja contém os dois recursos de pacientes:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: o ID da loja FHIR

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Execute o seguinte 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

      Execute o seguinte 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

      Deve receber uma resposta JSON semelhante à seguinte:

    Configure o streaming do BigQuery na loja FHIR

    Atualize a loja FHIR para configurar o streaming do BigQuery. Depois de configurar o streaming, a Cloud Healthcare API faz stream de quaisquer alterações de recursos para o conjunto de dados do BigQuery.

    1. Atualize a sua loja FHIR existente para adicionar a localização do conjunto de dados do BigQuery:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: o ID da sua loja FHIR
      • BIGQUERY_PROJECT_ID: o Google Cloud projeto que contém o conjunto de dados do BigQuery para alterações de recursos FHIR com streaming
      • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery para o qual está a fazer streaming de alterações de recursos FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS_V2"
              }
            }
          }
        ]
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS_V2"
              }
            }
          }
        ]
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

      Deve receber uma resposta JSON semelhante à seguinte:

    Valide a configuração de streaming para o BigQuery

    Para verificar se o streaming está configurado corretamente, conclua os seguintes passos:

    1. Crie um terceiro recurso Patient na loja FHIR:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • FHIR_STORE_ID: o ID da loja FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Deve receber uma resposta JSON semelhante à seguinte:

    2. Consulte a tabela BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient executando bq query. O BigQuery organiza as tabelas por tipo de recurso FHIR. O terceiro recurso Patient que criou está na tabela Patient.

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

      A consulta devolve o seguinte resultado. O resultado mostra que existe um registo de recursos de pacientes na tabela do BigQuery, porque adicionou o recurso de pacientes depois de configurar o streaming na loja FHIR.

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

    Passo 3: exporte recursos FHIR existentes para o BigQuery

    Se tiver um FHIR store existente com dados que quer sincronizar com um conjunto de dados do BigQuery, tem de concluir os seguintes passos para garantir que os dados existentes estão no BigQuery:

    1. Configure o streaming para o BigQuery.
    2. Exporte os dados existentes para o conjunto de dados do BigQuery.

    Para exportar os dois recursos de pacientes que existiam no FHIR store antes de configurar o streaming para o conjunto de dados do BigQuery, conclua os seguintes passos:

    1. Para exportar os recursos no FHIR store para o BigQuery, execute o comando gcloud healthcare fhir-stores export bq. O comando usa a flag --write-disposition=write-append, que anexa dados à tabela 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. Consulte a tabela BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient para verificar o número de recursos de pacientes no conjunto de dados do BigQuery:

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

      A consulta devolve o seguinte resultado, mostrando que existem 4 registos de recursos de pacientes na tabela do BigQuery:

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

      O número real de recursos de pacientes na tabela do BigQuery é 3, mas a consulta devolve 4. Podem ocorrer inconsistências quando um recurso contém duplicados de diferentes operações. Neste caso, o primeiro recurso Patient foi adicionado à tabela do BigQuery duas vezes:

      • Quando a criação do recurso Patient foi transmitida
      • Quando os recursos no FHIR store foram exportados para o BigQuery

      A tabela do BigQuery também contém um histórico de mutações do primeiro recurso Patient. Por exemplo, se eliminar o recurso Patient através de fhir.delete, a tabela do BigQuery tem uma coluna meta.tag.code com o valor DELETE.

    3. Para obter o resumo mais recente dos dados no FHIR store, consulte a vista. A Cloud Healthcare API cria a vista apenas analisando a versão mais recente de cada recurso. A consulta de vistas é a forma mais precisa de manter um FHIR store e a respetiva tabela do BigQuery sincronizados.

      Para consultar a vista, execute o seguinte comando:

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

      A consulta devolve o seguinte resultado, que mostra corretamente que existem 3 recursos de pacientes na tabela do BigQuery:

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

    Passo 4: transmita recursos de várias lojas FHIR para o mesmo conjunto de dados do BigQuery

    Em alguns casos, pode querer fazer stream de recursos FHIR de várias lojas FHIR para o mesmo conjunto de dados do BigQuery para realizar estatísticas nos recursos FHIR agregados das lojas FHIR.

    Nos passos seguintes, cria uma segunda loja FHIR no mesmo conjunto de dados da Cloud Healthcare API que a primeira loja FHIR, mas pode usar lojas FHIR de diferentes conjuntos de dados ao agregar recursos FHIR.

    1. Crie uma segunda FHIR store com o streaming do BigQuery ativado e use o mesmo conjunto de dados do BigQuery que usou em Configure o streaming do BigQuery na FHIR store.

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • SECOND_FHIR_STORE_ID: um identificador para a segunda loja FHIR. O ID da loja FHIR tem de ser exclusivo no conjunto de dados. O ID da loja FHIR pode ser qualquer string Unicode de 1 a 256 carateres composta por números, letras, sublinhados, traços e pontos finais.
      • FHIR_STORE_VERSION: a versão da loja FHIR: DSTU2, STU3 ou R4
      • BIGQUERY_PROJECT_ID: o Google Cloud projeto que contém o conjunto de dados do BigQuery para alterações de recursos FHIR com streaming
      • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery para o qual está a fazer streaming de alterações de recursos FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "version": "FHIR_STORE_VERSION"
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "version": "FHIR_STORE_VERSION"
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

      Deve receber uma resposta JSON semelhante à seguinte:

    2. Crie um recurso Patient na segunda loja FHIR:

      REST

      Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

      • PROJECT_ID: o ID do seu Google Cloud projeto
      • LOCATION: a localização do conjunto de dados principal
      • DATASET_ID: o conjunto de dados principal do FHIR store
      • SECOND_FHIR_STORE_ID: o segundo ID da loja FHIR

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, escolha uma destas opções:

      curl

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      EOF

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Em seguida, execute o seguinte comando para enviar o seu pedido 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

      Deve receber uma resposta JSON semelhante à seguinte:

    3. Consulte a tabela BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient para verificar o número de recursos de pacientes na tabela do BigQuery:

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

      Quando transmitiu os dados sobre o novo recurso Patient, o BigQuery usou a tabela Patient existente no conjunto de dados do BigQuery. A consulta devolve o seguinte resultado, mostrando que existem 5 registos de recursos de pacientes na tabela do BigQuery. Consulte o artigo Exporte recursos FHIR existentes para o BigQuery para ver uma explicação do motivo pelo qual a tabela contém 5 recursos em vez de 4.

      +-----+
      | f0_ |
      +-----+
      |   5 |
      +-----+
      
    4. Execute o seguinte comando para consultar a vista:

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

      A consulta devolve o seguinte resultado, mostrando que existem 4 recursos de pacientes no primeiro e segundo repositórios FHIR combinados e na tabela do BigQuery:

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

    Limpar

    Se criou um novo projeto para este tutorial, siga os passos em Elimine o projeto. Para eliminar apenas os recursos da API Cloud Healthcare e do BigQuery, conclua os passos em Elimine o conjunto de dados da API Cloud Healthcare e Elimine o conjunto de dados do BigQuery.

    Elimine o projeto

    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.

    Elimine o conjunto de dados da Cloud Healthcare API

    Se já não precisar do conjunto de dados da Cloud Healthcare API criado neste tutorial, pode eliminá-lo. A eliminação de um conjunto de dados elimina permanentemente o conjunto de dados e todos os FHIR stores que contém.

    1. Para eliminar um conjunto de dados, use o comando gcloud healthcare datasets delete:

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

      Substitua o seguinte:

      • DATASET_ID: o conjunto de dados da Cloud Healthcare API
      • LOCATION: a localização do conjunto de dados
      • PROJECT_ID: o ID do seu Google Cloud projeto
    2. Para confirmar, escreva Y.

    O resultado é o seguinte:

    Deleted dataset [DATASET_ID].
    

    Elimine o conjunto de dados do BigQuery

    Se já não precisar do conjunto de dados do BigQuery criado neste tutorial, pode eliminá-lo. A eliminação de um conjunto de dados elimina permanentemente o conjunto de dados e todas as tabelas que contém.

    1. Remova o BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID conjunto de dados executando o comando bq rm:

      bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID

      A flag --recursive elimina todas as tabelas no conjunto de dados, incluindo a tabela Patient.

    2. Para confirmar, escreva Y.

    O que se segue?