Transmitir e sincronizar 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

No tutorial, você verá as etapas a seguir:

  1. Configurar as permissões do BigQuery.
  2. Criar um armazenamento de FHIR e adicionar recursos "Paciente".
  3. Configurar o streaming do BigQuery no armazenamento de FHIR.
  4. Verificar a configuração de streaming para o BigQuery.
  5. Exportar recursos existentes de FHIR para o BigQuery.
  6. Fazer streaming de recursos de vários armazenamentos de 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.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Healthcare API.

    Enable the API

  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init

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 "Paciente"

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

  1. Crie o armazenamento de FHIR:

    REST

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

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • LOCATION: o local do conjunto de dados;
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: um identificador para o armazenamento de FHIR. O ID do repositório de FHIR precisa ter:
      • Um ID exclusivo no conjunto de dados.
      • Uma string Unicode de 1 a 256 caracteres que consiste no seguinte:
        • Números
        • Letras
        • Sublinhados
        • Traços
        • Pontos
    • FHIR_STORE_VERSION: a versão do FHIR do armazenamento de FHIR. As opções disponíveis são DSTU2, STU3 ou R4.

    Corpo JSON da solicitação:

    {
      "version": "FHIR_STORE_VERSION"
    }
    

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

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    APIs 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

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

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • LOCATION: o local do conjunto de dados;
    • DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
    • FHIR_STORE_ID: o ID de armazenamento de 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    Você receberá uma resposta JSON semelhante a esta:

  3. Crie o segundo recurso "Paciente" no armazenamento de FHIR:

    REST

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

    • 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 de 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    Você receberá uma resposta JSON semelhante a esta:

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

    REST

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

    • 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 de FHIR

    Para enviar a solicitação, 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

    Você receberá uma resposta JSON semelhante a esta:

Configurar o streaming do BigQuery no armazenamento de FHIR

Atualize o armazenamento do 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 existente para adicionar o local do conjunto de dados do BigQuery:

    REST

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

    • 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 de 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 de FHIR
    • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery em que você está fazendo streaming de alterações de recursos de FHIR

    Corpo JSON da solicitação:

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

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

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    APIs 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 "Paciente" no armazenamento de FHIR:

    REST

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

    • 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 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    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 de FHIR. O terceiro recurso "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 seguinte resultado: O resultado mostra que há um registro de recurso "Paciente" na tabela do BigQuery porque você adicionou esse recurso após configurar o streaming no armazenamento FHIR.

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

Etapa 3: exportar recursos existentes do FHIR para o BigQuery

Se você tiver um armazenamento existente de FHIR 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 existentes para o conjunto de dados do BigQuery.

Para exportar os dois recursos "Paciente" que existiam no armazenamento de FHIR antes de ter configurado 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 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 "Paciente" 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 retorna o resultado a seguir, mostrando que há quatro registros de recurso "Paciente" na tabela do BigQuery:

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

    O número real de recursos "Paciente" na tabela do BigQuery é três, mas a consulta retorna quatro. Pode haver inconsistências quando um recurso tiver cópias de diferentes operações. Nesse caso, o primeiro recurso "Paciente" foi adicionado à tabela do BigQuery duas vezes:

    • quando a criação do recurso de 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 "Paciente". Por exemplo, se você excluir o recurso "Paciente" usando fhir.delete, a tabela do BigQuery terá uma coluna meta.tag.code com o valor DELETE.

  3. Para conseguir 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 de FHIR e a tabela do BigQuery correspondente sincronizados.

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

    O seguinte resultado é retornado com a consulta, que mostra corretamente que há três recursos "Paciente" na tabela do BigQuery:

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

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

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

Nas etapas a seguir, você criará um segundo armazenamento de FHIR no mesmo conjunto de dados da API Cloud Healthcare que o primeiro armazenamento de FHIR, mas poderá usar armazenamentos de FHIR de conjuntos de dados diferentes ao agregar recursos de 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 do FHIR.

    REST

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

    • 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 para o segundo armazenamento de FHIR. O ID de armazenamento FHIR precisa ser exclusivo no conjunto de dados. O ID de armazenamento de FHIR pode ser qualquer string Unicode com 1 a 256 caracteres que consiste em números, letras, sublinhados, traços e pontos.
    • FHIR_STORE_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 de FHIR
    • BIGQUERY_DATASET_ID: o conjunto de dados do BigQuery em que você está fazendo streaming de alterações de recursos de FHIR

    Corpo JSON da solicitação:

    {
      "version": "FHIR_STORE_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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    APIs 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 "Paciente" no segundo armazenamento de FHIR:

    REST

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

    • 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 ID do segundo 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação 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

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo 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

    Depois execute o comando a seguir para enviar a solicitação 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

    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 "Paciente" 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 dos dados referentes ao novo recurso de paciente, o BigQuery usou a tabela Patient existente no conjunto de dados do BigQuery. A consulta retorna o resultado a seguir, mostrando que há cinco registros de recurso "Paciente" na tabela do BigQuery. Consulte Exportar recursos existentes de FHIR 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`'

    O seguinte resultado é retornado com a consulta, mostrando que há quatro recursos "Paciente" no primeiro e segundo armazenamentos de 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. 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.

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 o conjunto de dados BIGQUERY_PROJECT_ID.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