Faça streaming e sincronize recursos FHIR com o BigQuery

Neste tutorial, explicamos cenários em que é possível usar o streaming do BigQuery para manter um armazenamento de FHIR sincronizado com um conjunto de dados do BigQuery quase em tempo real.

Objetivos

  1. Configure as permissões do BigQuery.
  2. Crie um armazenamento de FHIR e adicione recursos de paciente.
  3. Configurar o streaming do BigQuery no armazenamento de FHIR.
  4. Verifique a configuração de streaming para o BigQuery.
  5. Exporte os recursos atuais do FHIR para o BigQuery.
  6. Faça streaming de recursos de vários armazenamentos FHIR para o mesmo conjunto de dados do BigQuery.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative a Cloud Healthcare API.

    Ative a API

  5. Instale e inicialize o SDK do Cloud..

Etapa 1: configurar as permissões do BigQuery

Para transmitir alterações de recursos FHIR para o BigQuery, você precisa conceder mais permissões à conta de serviço ao Agente de serviço do Cloud Healthcare. Para mais informações, consulte Permissões do BigQuery para armazenar FHIR.

Etapa 2: configurar e verificar o streaming do BigQuery

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

Criar um armazenamento de FHIR e adicionar recursos de pacientes

Para criar um armazenamento FHIR e adicionar dois recursos de paciente, siga estas etapas:

  1. Crie o armazenamento de FHIR:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: um identificador para o armazenamento de FHIR. O ID de armazenamento FHIR precisa ser exclusivo no conjunto de dados. O ID de armazenamento FHIR pode ser qualquer string Unicode de 1 a 256 caracteres que consiste em números, letras, sublinhados, traços e pontos.
    • VERSION: a versão do armazenamento de FHIR: DSTU2, STU3 ou R4

    Corpo JSON da solicitação:

    {
      "version": "VERSION"
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "version": "VERSION"
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "version": "VERSION"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    API Explorer

    Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    Você receberá uma resposta JSON semelhante a esta:

  2. Crie o primeiro recurso de paciente no armazenamento de FHIR:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento do FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Smith",
            "given": [
              "Darcy"
            ]
          }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient"
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Smith",
            "given": [
              "Darcy"
            ]
          }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    Você receberá uma resposta JSON semelhante a esta:

  3. Crie o segundo recurso de paciente no armazenamento de FHIR:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento do FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Zhang",
            "given": [
              "Michael"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1980-01-01",
        "resourceType": "Patient"
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Zhang",
            "given": [
              "Michael"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1980-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    Você receberá uma resposta JSON semelhante a esta:

  4. Procure recursos de paciente no armazenamento FHIR e verifique se o armazenamento contém os dois recursos de paciente:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento do FHIR

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Execute o seguinte comando:

    curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth application-default 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 application-default 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

    Você receberá uma resposta JSON semelhante a esta:

Configurar o streaming do BigQuery no armazenamento de FHIR

Atualize o armazenamento de FHIR para configurar o streaming do BigQuery. Depois de configurar o streaming, a API Cloud Healthcare transmite todas as alterações de recursos para o conjunto de dados do BigQuery.

  1. Atualize o armazenamento de FHIR atual para adicionar o local do conjunto de dados do BigQuery:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento do FHIR
    • BIGQUERY_PROJECT_ID: o projeto do Google Cloud que contém o conjunto de dados do BigQuery para streaming de alterações de recursos do FHIR
    • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery em que você está fazendo streaming de alterações de recursos do FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X PATCH \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    API Explorer

    Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    Você receberá uma resposta JSON semelhante a esta:

Verificar a configuração do streaming para o BigQuery

Para verificar se o streaming está configurado corretamente, siga as etapas a seguir:

  1. Crie um terceiro recurso de paciente no armazenamento de FHIR:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento do FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    Você receberá uma resposta JSON semelhante a esta:

  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 de paciente que você 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 retorna o resultado a seguir. O resultado mostra que há um registro de recurso paciente na tabela do BigQuery, porque você adicionou o recurso paciente após configurar o streaming no armazenamento FHIR.

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

Etapa 3: exportar recursos FHIR atuais para o BigQuery

Se você tiver um armazenamento de FHIR atual contendo dados que quer sincronizar com um conjunto de dados do BigQuery, conclua as etapas a seguir para garantir que os dados existentes estejam no BigQuery:

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

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

  1. Para exportar os recursos no armazenamento de FHIR para o BigQuery, execute o comando gcloud healthcare fhir-stores export bq. O comando usa a sinalização --write-disposition=write-append, que anexa dados à tabela BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient atual.

    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 \
       --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`'
    

    Com a consulta é retornado o seguinte resultado, mostrando que há quatro registros de recurso para paciente na tabela do BigQuery:

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

    O número real de recursos do paciente na tabela do BigQuery é 3, mas a consulta retorna 4. Pode haver inconsistências quando um recurso contém cópias de diferentes operações. Nesse caso, o primeiro recurso de paciente foi adicionado à tabela do BigQuery destas duas vezes:

    • Quando a criação do recurso paciente foi transmitida
    • Quando os recursos no armazenamento de FHIR foram exportados para o BigQuery

    A tabela do BigQuery também contém um histórico de mutação do primeiro recurso do paciente. Por exemplo, se você excluir o recurso Patient usando fhir.delete, a tabela do BigQuery terá uma coluna meta.tag.code com o valor DELETE.

  3. Para ter o snapshot mais recente dos dados no armazenamento de FHIR, consulte a visualização. A API Cloud Healthcare cria a visualização apenas analisando a versão mais recente de cada recurso. Consultar visualizações é a maneira mais precisa de manter um armazenamento FHIR e a tabela do BigQuery correspondente sincronizada.

    Para consultar a visualização, 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`'
    

    Com a consulta é retornado o seguinte resultado, que mostra corretamente que há três recursos de pacientes na tabela do BigQuery:

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

Etapa 4: fazer streaming de recursos de vários armazenamentos FHIR para o mesmo conjunto de dados do BigQuery

Em alguns casos, pode ser útil fazer streaming de recursos FHIR de vários armazenamentos FHIR para o mesmo conjunto de dados do BigQuery para realizar análises nos recursos FHIR agregados dos armazenamentos FHIR.

Nas etapas a seguir, você criará um segundo armazenamento FHIR no mesmo conjunto de dados da API Cloud Healthcare que o primeiro armazenamento FHIR, mas poderá usar armazenamentos FHIR de diferentes conjuntos de dados ao agregar recursos FHIR.

  1. Crie um segundo armazenamento de FHIR com o streaming do BigQuery ativado e use o mesmo conjunto de dados do BigQuery usado em Configurar o streaming do BigQuery no armazenamento de FHIR.

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • SECOND_FHIR_STORE_ID: um identificador do segundo armazenamento de FHIR. O ID de armazenamento FHIR precisa ser exclusivo no conjunto de dados. O ID de armazenamento FHIR pode ser qualquer string Unicode de 1 a 256 caracteres que consiste em números, letras, sublinhados, traços e pontos.
    • VERSION: a versão do armazenamento de FHIR: DSTU2, STU3 ou R4
    • BIGQUERY_PROJECT_ID: o projeto do Google Cloud que contém o conjunto de dados do BigQuery para streaming de alterações de recursos do FHIR
    • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery em que você está fazendo streaming de alterações de recursos do FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "version": "VERSION"
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "version": "VERSION"
        "streamConfigs": [
          {
            "bigqueryDestination": {
              "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
              "schemaConfig": {
                "schemaType": "ANALYTICS"
              }
            }
          }
        ]
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    API Explorer

    Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    Você receberá uma resposta JSON semelhante a esta:

  2. Crie um recurso de paciente no segundo armazenamento de FHIR:

    REST e LINHA DE CMD

    Antes de usar os dados da solicitação abaixo, faça estas substituições:

    • PROJECT_ID: é o ID do projeto do Google Cloud.
    • LOCATION: o local do conjunto de dados pai
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • SECOND_FHIR_STORE_ID: o segundo ID de armazenamento de FHIR

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      cat > request.json << 'EOF'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      EOF
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default 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

    1. Salve o corpo da solicitação em um arquivo chamado request.json. Copie o comando a seguir e execute-o no terminal para criar esse arquivo.
      @'
      {
        "name": [
          {
            "use": "official",
            "family": "Lee",
            "given": [
              "Alex"
            ]
          }
        ],
        "gender": "male",
        "birthDate": "1990-01-01",
        "resourceType": "Patient"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8
    2. Execute o comando a seguir no terminal. Ele faz referência ao arquivo request.json que você acabou de criar.
      $cred = gcloud auth application-default 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

    Você receberá uma resposta JSON semelhante a esta:

  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`'
    

    Ao fazer streaming de dados sobre o novo recurso de paciente, o BigQuery usou a tabela Patient atual no conjunto de dados do BigQuery. A consulta retorna o resultado a seguir, mostrando que há cinco registros de recurso para paciente na tabela do BigQuery. Consulte Exportar recursos FHIR atuais para o BigQuery para ver uma explicação sobre por que a tabela contém cinco recursos, em vez de quatro.

    +-----+
    | f0_ |
    +-----+
    |   5 |
    +-----+
    
  4. Execute este comando para consultar a visualização:

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

    Com a consulta é retornado o seguinte resultado, mostrando que há quatro recursos de paciente nos primeiros armazenamentos FHIR combinados e na tabela do BigQuery:

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

Limpar

Se você criou um novo projeto para este tutorial, siga as etapas em Excluir o projeto. Para excluir apenas a API Cloud Healthcare e os recursos do BigQuery, conclua as etapas em Excluir o conjunto de dados da API Cloud Healthcare e Excluir o conjunto de dados do BigQuery.

Exclua o projeto

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir o conjunto de dados da API Cloud Healthcare

Se você não precisa mais do conjunto de dados da API Cloud Healthcare criado neste tutorial, é possível excluí-lo. A exclusão de um conjunto de dados exclui permanentemente o conjunto de dados e todos os armazenamentos de FHIR que ele contém.

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

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

    Substitua:

    • DATASET_ID: o conjunto de dados da API Cloud Healthcare
    • LOCATION: o local do conjunto de dados
    • PROJECT_ID: é o ID do projeto do Google Cloud.
  2. Para confirmar, digite Y.

A saída é esta:

Deleted dataset [DATASET_ID].

Excluir o conjunto de dados do BigQuery

Se você não precisar mais do conjunto de dados do BigQuery criado neste tutorial, basta excluí-lo. A exclusão de um conjunto de dados exclui permanentemente o conjunto de dados e as tabelas que ele contém.

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

    bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
    

    A sinalização --recursive exclui todas as tabelas do conjunto de dados, incluindo a tabela Patient.

  2. Para confirmar, digite Y.

A seguir