Gerencie dados FHIR do app Android com OHS e o Google Cloud

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

8514f90f016ecfc0.png

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

  1. No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
  2. Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Ativar as APIs necessárias (BigQuery, API Healthcare)

Ativar o Cloud Shell

  1. 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:

51622c00acec2fa.png

  1. Após 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

  1. 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
  2. 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 os recursos 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.

  1. Acesse o console do Google Cloud Healthcare, página do navegador
  2. Clique no CONJUNTO DE DADOS recém-criado.
  3. Clique no LOJA DE DADOS recém-criado 7acaa364337086aa.png.
  4. Clique em ADICIONAR NOVA CONFIGURAÇÃO DE STREAMING

caa2cc881d3406aa.png

  1. 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

1e038c694fcca1ef.png

É 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:

  1. Acesse o Cloud Functions e clique em CRIAR FUNÇÃO
  2. Defina o nome como fhir-datastore-proxy, a região como us-central1 e a opção Autenticação como "Autenticação necessária"
  3. 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

  1. Pressione Próximo para ir para a próxima página, onde adicionaremos nosso código
  2. 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
  3. Copie o código do repositório e cole-o no editor in-line
  4. Acesse o arquivo pom.xml e copie o arquivo pom do repositório para o editor in-line
  5. Clique em IMPLANTAR, e a função será criada e executada em breve.

Observação:

  1. A API Cloud Healthcare usada nesta função utiliza a credencial padrão do aplicativo para autenticar as solicitações que chegam à API Healthcare
  2. 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 maneira 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:

  1. Clone o repositório de exemplos de aplicativos FHIR: https://github.com/google/fhir-app-examples (em inglês)
  2. 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 ./gradlew subscriptionReport 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

  1. Abra o FhirApplication.kt e defina o campo baseUrl como o URL da sua função do Cloud
  2. 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:

  1. Conferir se a FragmentContainerView está presente dentro do ConstraintLayout no arquivo app/src/main/res/layout/activity_main.xml
  2. 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&quot; 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

9e1bb440074f1a88.png

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,

  1. Executar o app no Android Emulator e assistir ao carregamento do questionário
  2. Responda às perguntas e clique em "Enviar" na parte superior.
  3. Você verá a mensagem "O paciente foi salvo". no app

Conferir resultado do armazenamento FHIR

Navegue até o console FHIRViewer do Google Cloud Healthcare

1064f03b4e1e45f5.png

Selecione seu armazenamento FHIR, faça a consulta e clique em EXECUTAR PESQUISA e você verá os resultados da pesquisa logo abaixo. 37a070480a06362c.png

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.

7c483ec6d578b8cd.png

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.

faafeae4a837a41c.png

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:

  1. Leitor de FHIR no console do Google Cloud
  2. 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:

  1. No console do Google Cloud, acesse a página 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.

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:

  1. Configurar o app Android
  2. Configurar a API Google Cloud Healthcare
  3. O conjunto de dados do Healthcare e o FHIR foram criados
  4. Conjunto de dados do BigQuery criado
  5. Configurou um stream do BigQuery para gravar dados do Datastore FHIR no conjunto de dados do BigQuery
  6. Implantou uma função do Cloud para gravar dados R4 no FHIR no Datastore
  7. 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.