1. Introdução
Neste codelab, vamos aprender a usar o OHS (Open Health Stack) e a API Google Cloud Healthcare para criar soluções de saúde inovadoras, seguras, escalonáveis e em conformidade. A combinação dessas ferramentas poderosas oferece aos profissionais de saúde e aos desenvolvedores a capacidade de criar soluções baseadas em dados que podem melhorar significativamente o atendimento e os resultados dos pacientes.
Pretendemos aproveitar o poder do Open Health Stack e da API Google Cloud Healthcare em um app para dispositivos móveis que usa o SDK Android-FHIR para permitir que os usuários gerenciem os registros de pacientes FHIR no Google Cloud.
Vamos nos aprofundar nas etapas de implementação.
O que você vai criar
Nesta implementação,
- Usaremos a biblioteca de captura de dados estruturados para renderizar um questionário e a biblioteca FHIR Engine para armazenar o conteúdo FHIR da resposta.
- Os dados serão então carregados no armazenamento FHIR do Cloud usando a API Cloud Healthcare
- Antes de fazer o upload, primeiro vamos nos autenticar usando o Firebase
O diagrama acima representa o fluxo. Leia o blog para ver uma explicação detalhada de cada componente.
2. Requisitos
- Use um navegador, como o Chrome ou o Firefox.
- Tenha um projeto do Google Cloud com o faturamento ativado.
- Uma versão recente do Android Studio.
- Um Android Emulator configurado (também é possível usar seu dispositivo Android físico).
Criar seu projeto
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
- Ativar as APIs necessárias (BigQuery, API Healthcare)
Ativar o Cloud Shell
- Você usará o Cloud Shell, um ambiente de linha de comando em execução no Google Cloud que vem pré-carregado com bq:
No console do Cloud, clique em "Ativar o Cloud Shell" no canto superior direito:
- Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto estará configurado com o ID do seu projeto. Se o projeto não estiver configurado, use o seguinte comando para configurá-lo:
gcloud config set project <YOUR_PROJECT_ID>
Consulte a documentação para ver o uso e os comandos gcloud.
3. Configuração da API Healthcare
- Verifique se a API Healthcare está ativada: acesse a biblioteca de APIs do console do Google Cloud, procure a API Healthcare, clique em "ATIVAR" para ativar a API e adicionar a conta de serviço Healthcare ao projeto
- Como conceder permissões de administrador do BigQuery à conta de serviço Execute o comando gcloud abaixo no terminal do Cloud Shell para conceder permissão:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com --role=roles/bigquery.admin
Observação: você pode encontrar seu PROJECT_ID e PROJECT_NUMBER no console. Consulte o documento para identificação.
Criar conjunto de dados de saúde
No Cloud Shell, execute o comando abaixo para criar o conjunto de dados de saúde:
gcloud beta healthcare datasets create <<DATASET_ID>> --location=us-central1
Defina o local como uma região.
Criar FHIR
No Cloud Shell, execute o comando abaixo para criar o repositório de dados FHIR:
gcloud beta healthcare fhir-stores create <<FHIR_STORE>> \
--dataset=<<DATASET_ID>> --location=us-central1 --version=r4
Defina o local como uma região.
4. Configuração e streaming do BigQuery
Isso abrange como salvar dados do armazenamento FHIR no conjunto de dados do BigQuery para que eles possam ser consultados, programados e analisados com o poder do BigQuery e do BQML.
Crie um conjunto de dados do BigQuery
Um conjunto de dados do BigQuery é uma coleção de tabelas. Todas as tabelas em um conjunto de dados são armazenadas no mesmo local dos dados. Você também pode anexar controles de acesso personalizados para limitar o acesso a um conjunto de dados e às tabelas dele.
No Cloud Shell, execute o comando abaixo:
bq mk --location=us-central1 --dataset <<PROJECT_ID>>:<<BQ_DATASET>>
Defina o local como uma região.
Criar streaming do BigQuery
O streaming é necessário para exportar alterações de recursos para o BigQuery sempre que um recurso FHIR é criado, atualizado, corrigido ou excluído em um repositório FHIR. Cada armazenamento pode ter até 10 configurações de streaming.
- Acesse o console do Google Cloud Healthcare, página do navegador
- Clique no CONJUNTO DE DADOS recém-criado.
- Clique no LOJA DE DADOS recém-criado .
- Clique em ADICIONAR NOVA CONFIGURAÇÃO DE STREAMING
- Selecione o conjunto de dados do BigQuery recém-criado na lista e o tipo de esquema como "Analytics V2" e o tipo de recurso "Paciente" na lista (É possível escolher quantos tipos de recursos) quiser e clique em Concluído
É isso. Você já pode salvar dados do armazenamento FHIR e transmiti-los para o BigQuery.
5. Cloud Functions (gravar dados R4 no Datastore FHIR usando a API Healthcare)
O Cloud Functions permite escrever códigos e implantar na nuvem sem servidor de maneira conveniente. Ele é escalonável, tem pagamento por uso, é orientado a eventos e aberto em termos de tecnologia e suporte a idiomas. Consulte a documentação para conhecer mais recursos.
A função que vamos gravar busca autenticar e gravar dados que chegam no formato FHIR R4 no repositório de dados FHIR usando a API Cloud Healthcare. Para criar a função do Cloud:
- Acesse o Cloud Functions e clique em CRIAR FUNÇÃO
- Defina o nome como fhir-datastore-proxy, a região como us-central1 e a opção Autenticação como "Autenticação necessária"
- Expanda as configurações de ambiente de execução, build, conexões e segurança. Adicione cinco variáveis de ambiente de execução:
Nome: CLOUD_FUNCTIONS_ENDPOINT | Valor: o endpoint de URL da função. Isso vai aparecer no bloco "Autenticação" acima e com o formato: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy
Nome: PROJECT_ID | Valor: o ID do projeto
Nome: DATASET_LOCATION | Valor: o local do seu Datastore FHIR
Nome: DATASET_ID | Valor: o ID do Healthcare Datastore
Nome: FHIR_STORE_ID | Valor: o ID da loja FHIR
- Pressione Próximo para ir para a próxima página, onde adicionaremos nosso código
- Um editor in-line será exibido. Selecione "Java 17" como a linguagem e acesse a classe HelloHttpFunction.java. Renomeie-o como FhirDatastoreProxy.java. Não se esqueça de renomear também o ponto de entrada para gcfv2.FhirDatastoreProxy
- Copie o código do repositório e cole-o no editor in-line
- Acesse o arquivo pom.xml e copie o arquivo pom do repositório para o editor in-line
- Clique em IMPLANTAR e sua função será criada e executada em breve
Observação:
- A API Cloud Healthcare usada nesta função utiliza a credencial padrão do aplicativo para autenticar as solicitações que chegam à API Healthcare
- Salve o URL da função implantada para poder invocar usando o aplicativo Android. Até agora, criamos todas as partes necessárias para o app Android gravar dados FHIR no BigQuery usando a API Healthcare de forma independente. Agora vamos garantir que todas as peças estejam conectadas e que a API seja invocada no envio de um questionário.
6. Projeto do Android e configuração do Firebase
Vamos usar uma versão recente do Android Studio e uma configuração do Android Emulator. Também é possível usar seu dispositivo Android físico. Assim que estiver pronto, siga as etapas abaixo:
- Clone o repositório de exemplos de aplicativos FHIR: https://github.com/google/fhir-app-examples (em inglês)
- Abra o Android Studio, selecione Import Project (Gradle, Eclipse ADT etc.) e escolha a pasta cloudfunction/ do código-fonte que você baixou anteriormente.Abra app/google-services.json. Está vazio e precisa ser preenchido.
Gere uma chave SHA-1 usando ./gradlewsigningReport e anote o campo SHA1 na variante de depuração.
Adicione o app ao Firebase usando o Console do Firebase (siga as etapas 1 e 2). No campo "Certificado de assinatura SHA-1 de depuração", , preencha o valor da etapa anterior
Baixe o arquivo google-services.json e substitua o conteúdo do Firebase pelo arquivo vazio na pasta do app.
O SDK do Firebase já foi adicionado aos arquivos de build do Gradle
- Abra o FhirApplication.kt e defina o campo baseUrl como o URL da sua função do Cloud
- Selecione "Sync your project with Gradle files". na barra de ferramentas do Android Studio
Concluímos a parte de configuração e inclusão de dependência da implementação.
7. Configuração e resposta do questionário
Já configuramos o questionário no repositório. Mas vamos examinar o código:
- Conferir se a FragmentContainerView está presente dentro do ConstraintLayout no arquivo app/src/main/res/layout/activity_main.xml
- Verifique se o QuestionnaireFragment tem um questionário FHIR codificado em JSON para renderizar o fragmento
Neste caso, vamos usar o json - " new-patient-registration-paginated.json" para renderizar o fragmento. Verifique os arquivos MainActivity.kt, AddPatientFragment.kt e AddPatientViewModel.kt
Agora que verificamos o fragmento, o JSON e o modelo, execute o app e insira respostas para os campos do questionário.
Você vai notar a validação de strings, datas, campos numéricos e outras condições
Execute o app e verifique o registro para conferir se ele foi criado
Saiba mais sobre o uso de fragmentos aqui. Isso é basicamente para a configuração do fragmento do questionário e da resposta.
8. Exibição de resultados do conjunto de dados FHIRStore e BigQuery
Agora que está tudo pronto para a configuração e atualizações, clique em "Sync Project with Gradle Files". Após a conclusão,
- Executar o app no Android Emulator e assistir ao carregamento do questionário
- Responda às perguntas e clique em "Enviar" na parte superior.
- Você verá a mensagem "O paciente foi salvo". no app
Conferir resultado do armazenamento FHIR
Navegue até o console FHIRViewer do Google Cloud Healthcare
Selecione seu armazenamento FHIR, faça a consulta e clique em EXECUTAR PESQUISA e você verá os resultados da pesquisa logo abaixo.
Ver o resultado do conjunto de dados do BigQuery
Navegue até o console do BigQuery do Google Cloud e, no painel do Explorer, acesse o conjunto de dados que você criou para este projeto.
Clique em "Visualizar" para ver o mesmo número e os dados resultantes encontrados no armazenamento FHIR do Healthcare no conjunto de dados do BigQuery.
Agora é possível executar o BigQuery SQL, Analytics e ML nos dados FHIR que você acabou de salvar no conjunto de dados do Cloud.
9. Recursos de pesquisa e off-line
Para garantir a funcionalidade off-line no app do SDK Android FHIR com tecnologia OHS, siga as diretrizes de design que precisam ser ativadas na implementação discutida aqui.
Para pesquisar recursos FHIR, temos duas maneiras:
- Leitor de FHIR no console do Google Cloud
- Método de pesquisa FHIR usando solicitações GET ou POST
10. Demonstração do app
Agora que nosso app está desenvolvido, vamos brincar com ele e ver o resultado na nuvem.
11. Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta postagem, siga estas etapas:
- No console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
12. Parabéns
Parabéns! Neste projeto, criamos um aplicativo Android para armazenar e consultar dados FHIR de pacientes no armazenamento FHIR de assistência médica na nuvem e no conjunto de dados do BigQuery usando a API Cloud Healthcare em apenas sete etapas:
- Configurar o app Android
- Configurar a API Google Cloud Healthcare
- O conjunto de dados do Healthcare e o FHIR foram criados
- Conjunto de dados do BigQuery criado
- Configurou um stream do BigQuery para gravar dados do Datastore FHIR no conjunto de dados do BigQuery
- Implantou uma função do Cloud para gravar dados R4 no FHIR no Datastore
- Acionou o Cloud Functions pelo app Android no envio da resposta ao questionário
Agora que as etapas estão claras, tente as mesmas etapas para a sincronização de edições do FHIR com a nuvem.