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:
- Configurar as permissões do BigQuery.
- Criar um armazenamento de FHIR e adicionar recursos "Paciente".
- Configurar o streaming do BigQuery no armazenamento de FHIR.
- Verificar a configuração de streaming para o BigQuery.
- Exportar recursos existentes de FHIR para o BigQuery.
- Fazer streaming de recursos de vários armazenamentos de FHIR para o mesmo conjunto de dados do BigQuery.
Antes de começar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Healthcare API.
- Install the Google Cloud CLI.
-
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:
Crie o armazenamento de FHIR:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do projeto Google CloudLOCATION : o local do conjunto de dados;DATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_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:
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 " } EOFDepois 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 "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 utf8Depois 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 ContentCopie 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:
Resposta
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID ", "version": "FHIR_STORE_VERSION " }Crie o primeiro recurso de paciente no armazenamento de FHIR:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do projeto Google CloudLOCATION : o local do conjunto de dados;DATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_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:
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"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 ContentVocê receberá uma resposta JSON semelhante a esta:
Resposta
{ "birthDate": "1970-01-01", "gender": "female", "id": "
PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }Crie o segundo recurso "Paciente" no armazenamento de FHIR:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_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:
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"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 ContentVocê receberá uma resposta JSON semelhante a esta:
Resposta
{ "birthDate": "1980-01-01", "gender": "male", "id": "
PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Zhang", "given": [ "Michael" ], "use": "official" } ], "resourceType": "Patient" }Procure recursos "Paciente" no armazenamento FHIR e verifique se o armazenamento contém os dois recursos "Paciente":
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_STORE_ID : o ID de armazenamento de FHIR
Para enviar a solicitação, escolha uma destas opções:
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"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 ContentVocê receberá uma resposta JSON semelhante a esta:
Resposta
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/d5d0d3a7-29a1-4bb6-b388-35e8ce218fc5", "resource": { "birthDate": "1980-01-01", "gender": "male", "id": "PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Zhang", "given": [ "Michael" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/f2aa0885-390d-437d-ac73-8d41516a2c05", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/?" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/?" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID /fhir/Patient/?" } ], "resourceType": "Bundle", "total": 2, "type": "searchset" }
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.
Atualize o armazenamento de FHIR existente para adicionar o local do conjunto de dados do BigQuery:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_STORE_ID : o ID de armazenamento de FHIRBIGQUERY_PROJECT_ID : o projeto Google Cloud que contém o conjunto de dados do BigQuery para streaming de alterações de recursos de FHIRBIGQUERY_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:
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" } } } ] } EOFDepois 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"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 utf8Depois 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 ContentCopie 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:
Resposta
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/FHIR_STORE_ID ", "version": "FHIR_STORE_VERSION ", "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID .BIGQUERY_DATASET_ID ", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] }
Verificar a configuração do streaming para o BigQuery
Para verificar se o streaming está configurado corretamente, siga as etapas a seguir:
Crie um terceiro recurso "Paciente" no armazenamento de FHIR:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRFHIR_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:
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"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 ContentVocê receberá uma resposta JSON semelhante a esta:
Resposta
{ "birthDate": "1990-01-01", "gender": "male", "id": "
PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Lee", "given": [ "Alex" ], "use": "official" } ], "resourceType": "Patient" }Consulte a tabela
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
executandobq query
. O BigQuery organiza as tabelas por tipo de recurso de FHIR. O terceiro recurso "Paciente" que você criou está na tabelaPatient
.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:
- Configure o streaming para o BigQuery.
- 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:
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 à tabelaBIGQUERY_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-appendConsulte 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 colunameta.tag.code
com o valorDELETE
.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.
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.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRSECOND_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 R4BIGQUERY_PROJECT_ID : o projeto Google Cloud que contém o conjunto de dados do BigQuery para streaming de alterações de recursos de FHIRBIGQUERY_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:
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" } } } ] } EOFDepois 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 "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 utf8Depois 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 ContentCopie 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:
Resposta
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /fhirStores/SECOND_FHIR_STORE_ID ", "version": "VERSION ", "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID .BIGQUERY_DATASET_ID ", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] }Crie um recurso "Paciente" no segundo armazenamento de FHIR:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID : o ID do Google Cloud projetoLOCATION : o local do conjunto de dados paiDATASET_ID : o conjunto de dados pai do armazenamento de FHIRSECOND_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:
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"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 ContentVocê receberá uma resposta JSON semelhante a esta:
Resposta
{ "birthDate": "1990-01-01", "gender": "male", "id": "
PATIENT_ID ", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "versionId": "VERSION_ID " }, "name": [ { "family": "Cruz", "given": [ "Taylor" ], "use": "official" } ], "resourceType": "Patient" }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 | +-----+
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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.
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 Google Cloud projeto
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.
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 tabelaPatient
.Para confirmar, digite Y.
A seguir
- Se ocorrerem erros durante o streaming no BigQuery, os erros serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.
- Confira uma visão geral de como exportar recursos de FHIR para o BigQuery.
- Para criar, visualizar, listar ou excluir armazenamentos de FHIR, consulte Como criar e gerenciar armazenamentos de FHIR.