Criar um sistema de telessaúde no Azure

Azure Database for PostgreSQL
Azure Functions
Azure Kubernetes Service (AKS)
Azure Storage
Azure Traffic Manager

Este artigo explica como criar um sistema de telessaúde usando a plataforma de nuvem do Azure.

Arquitetura

Visão geral da arquitetura dos componentes do Azure incluídos no sistema de telessaúde.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

A solução assenta em quatro pilares, incluindo:

  • Clientes
  • Componentes de comunicação
  • APIs e lógica de negócios
  • Serviços de armazenamento e infraestrutura

No lado esquerdo do diagrama arquitetónico, encontram-se os utentes em dois grupos, o profissional de saúde e o doente. O profissional de saúde utiliza o software de adaptação e os clientes do portal Web para comunicar com os seus pacientes. Os pacientes, por outro lado, usam um aplicativo móvel que está conectado ao dispositivo médico através de uma conexão Bluetooth. Essa comunicação de ida e volta é obtida usando serviços de back-end:

  • APIs voltadas para o público
  • Microsserviços internos que são responsáveis por fluxos de trabalho, como chamadas de vídeo através de Web RTC ou comunicação cliente-a-cliente usando o Signal. signal é uma biblioteca de software para o Microsoft ASP.NET que permite que o código do servidor envie notificações assíncronas para aplicativos Web do lado do cliente.

O estado desses serviços é persistido em vários serviços do Azure (no lado direito do diagrama), como o Banco de Dados do Azure para PostgreSQL. Os arquivos de mídia são salvos nas contas de armazenamento do Azure. Todos os logs de todos os serviços são reunidos em uma solução de log centralizada que usa o Azure Application Insights. Por fim, a comunicação assíncrona pode ser alcançada entre os clientes por meio de notificações por push usando a ajuda do Hub de Notificação do Azure.

A solução foi montada desta forma para:

  • Beneficie-se da escalabilidade dos serviços de nuvem executados no back-end.

  • Aumentar a autonomia das equipas que constroem a solução. Cada equipe supervisiona domínios funcionais e impulsiona a evolução de seus componentes. Uma vez que os domínios funcionais não se sobrepõem, cada equipa pode inovar ao seu próprio ritmo. Além disso, como as bases de código dos serviços são independentes, o pipeline de CI/CD para toda a solução é simplificado.

  • Construir o mecanismo de comunicação e coordenação interserviços exigido pela distribuição de funcionalidades entre microsserviços. A solução descrita neste documento usa o Cache Redis do Azure para realizar essa tarefa.

  • Obtenha monitoramento central e melhore a capacidade de solucionar problemas da solução.

  • Gerenciamento simplificado de segredos, credenciais, certificados e chaves, aproveitando as identidades gerenciadas para proteger a comunicação entre serviços.

Componentes

  • O Banco de Dados do Azure para PostgreSQL armazena dados relacionados ao usuário (paciente e profissional de saúde) e ao dispositivo. O serviço foi escolhido porque é estável, leve e não tem bloqueio de fornecedor.
  • O Serviço Kubernetes do Azure hospeda a lógica de negócios do aplicativo e fornece facilidade de implantação e flexibilidade para personalização. O serviço também abstrai a solução do hardware real usado abaixo.
  • O Cache Redis do Azure hospeda dados temporários usados para dados intrasserviço (dados compartilhados). O serviço pode ser recriado a partir do banco de dados caso os dados expirem do cache
  • O Hub de Notificação do Azure notifica o paciente sobre o conteúdo de entrada: bate-papo, chamadas de vídeo, definições de configuração do dispositivo.
  • O Azure Functions agenda tarefas. Por exemplo, comunicações amplas para um grande conjunto de usuários, coordenação do trabalho de análise no backend (agregações...).
  • O Azure Application Insights centraliza sinais/eventos do sistema (logs, telemetria de logs de microsserviços, frontend e dispositivos) para fins de solução de problemas.
  • A Rede de Entrega de Conteúdo (CDN) do Azure é usada para manutenção e atualizações (entrega de arquivo de scripts java) para o portal da Web e para entregar arquivos de mídia (vídeos, imagens) por meio do portal. Todo esse conteúdo é armazenado nas contas de armazenamento do Azure em segundo plano.
  • O Azure Traffic Manager equilibra a carga entre localizações geográficas.
  • O Azure SignalR permite que o código do servidor envie notificações assíncronas para aplicativos Web do lado do cliente. Os dispositivos do usuário final podem ser configurados no modo Standard ou Avançado .

Alternativas

No lado do banco de dados, quaisquer outros serviços de banco de dados PaaS podem ser usados. Ao hospedar a lógica do aplicativo, em vez de usar o Serviço Kubernetes do Azure, você pode considerar o uso do Serviço de Aplicativo do Azure.

Detalhes do cenário

Os detalhes são baseados em uma implementação real do cliente que conecta uma organização profissional de saúde aos seus pacientes remotos. Embora existam outras maneiras de construir esse sistema, a solução descrita foi bem-sucedida em permitir a comunicação entre os pacientes e seu provedor de cuidados remotos, bem como ajustar remotamente os dispositivos médicos que os pacientes carregam.

Existem cerca de 700 milhões de pessoas que sofrem de deficiências auditivas. No entanto, apenas 10% deles usam aparelhos auditivos para melhorar suas vidas. Em algumas geografias ou situações, é impossível para um paciente obter assistência direta quando necessário. Por exemplo, considere os pacientes que:

  • Precisa de ajuda em uma situação auditiva específica (por exemplo, enquanto caminha no parque, participa de uma festa ou está em casa), que não pode ser reproduzida no consultório do fonoaudiólogo.
  • Ter problemas de mobilidade ou residir a longas distâncias do seu fonoaudiólogo.
  • Viver em um país/região emergente que tem um número limitado de profissionais de saúde auditiva.

Para superar essas dificuldades, é importante ter a capacidade de prestar serviços de cuidados auditivos remotamente. Neste caso, o profissional de saúde usa o chat ou a comunicação por vídeo para interagir com seus pacientes remotos. As pessoas com deficiência auditiva utilizam um smartphone para permitir o acesso ao aparelho auditivo durante a sessão remota. O paciente experimenta imediatamente uma melhora na audição à medida que o profissional de saúde auditiva implanta mudanças na configuração do aparelho auditivo em tempo real.

Potenciais casos de utilização

Esta solução é ideal para a indústria da saúde. Os seguintes casos de uso adicionais têm padrões de design semelhantes:

  • Qualquer dispositivo habilitado para Bluetooth pode ser acessado e sintonizado remotamente usando essa solução.
  • Comunicação (texto, voz, vídeo) ou troca de conhecimento (educação, inquéritos de satisfação) num contexto/contexto remoto.
  • Gerenciamento de conteúdo da Web distribuído globalmente.
  • Internet das Coisas (IoT)

Modos

Modo padrão

No modo Padrão, o software de ajuste prepara uma notificação, que contém algum arquivo JSON de configuração ou conteúdo para o dispositivo. Em seguida, a notificação é passada para o Hub de Notificação do Azure, que envia a notificação por push para o telefone do usuário.

Modo avançado

No modo Avançado, o profissional de aparelhos auditivos usa o software de ajuste para enviar a configuração detalhada para o dispositivo. Isso requer uma conexão estável e confiável entre o back-end e o dispositivo, que o SignalR consegue usando WebSockets. O telefone do usuário final está na extremidade recetora deste canal. A partir do telefone, a conexão Bluetooth estabelece o link de comunicação final com o dispositivo.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Recomendamos o uso de um gerenciador de tráfego na frente dos diferentes clusters para otimizar a latência entre regiões e como um mecanismo de fallback caso os clusters fiquem indisponíveis. Para os bancos de dados, recomendamos o uso de réplicas somente leitura para consultas que exigem carregamento e agregação de uma grande quantidade de dados. Recomendamos o fornecimento de arquivos da Web estáticos (.html, .js, imagens, etc.) globalmente usando uma rede de distribuição de conteúdo (CDN) para melhorar a velocidade por meio do cache.

Implementação

O aspeto mais importante a ser considerado ao implantar esse cenário é a coordenação de implantações no back-end baseado em nuvem e no frontend (telefones/dispositivos). Considere usar o conceito de um sinalizador de recurso para conseguir isso.

Gestão

Para melhor se alinhar à ideia de ter cada domínio funcional tratado usando um microsserviço específico, a longo prazo, há uma oportunidade de dividir o banco de dados em vários bancos de dados menores. Isso permitirá o princípio de isolamento e autonomia do fluxo relacionado a cada microsserviço, em vez de concentrar os dados relacionados a todos os serviços em um único banco de dados. Para atingir esse objetivo, será necessário automatizar o provisionamento e o gerenciamento desses bancos de dados, que é um dos principais recursos de um serviço de banco de dados PaaS na nuvem. Essa camada de gerenciamento de banco de dados deve ser integrada na solução, bem como na solução de monitoramento unificada.

Monitorização

É importante monitorar cada uma das camadas, e cada faceta de monitoramento deve ser federada em um único bucket na nuvem. É importante habilitar a correlação de todos esses logs e pontos de dados de telemetria para garantir insights holísticos entre componentes e camadas.

Hoje, as camadas monitoradas incluem:

  • Aplicação Windows (software de adaptação no ambiente de trabalho do fonoaudiólogo)
  • Lógica do aplicativo hospedado
  • Serviços cloud

Dimensionamento e dimensionamento

Certifique-se de otimizar a configuração dos clusters do Kubernetes do Azure para corresponder aos requisitos de escala que flutuam com a hora do dia ou padrões regionais. Considere descarregar cargas de trabalho de leitura (como agregar consultas) usando Réplicas de Leitura no Banco de Dados do Azure para PostgreSQL.

O uso da extensão TimescaleDB do PostgreSQL permitirá um tratamento mais eficiente dos dados relacionados ao tempo provenientes dos dispositivos médicos. Considere usar uma solução de expansão, como o Banco de Dados do Azure para PostgreSQL – Hyperscale (Citus), para alcançar a escala global provisionando vários nós de banco de dados.

Segurança e conformidade

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

Esta solução trata PHI e dados pessoais. Como tal, é importante usar serviços certificados para aplicações médicas (certificações HIPAA, não apenas para os dados que permanecem no banco de dados, mas também para os logs e dados de telemetria). Para obter detalhes, consulte a seção HIPAA da Central de Confiabilidade da Microsoft.

A identidade gerenciada deve ser usada em todos os serviços do Azure que oferecem suporte a esse tipo de autenticação sem senha para simplificar o gerenciamento de senhas: AKS, PostgreSQL, Cache Redis, Hub de Notificação, Cofre de Chaves do Azure e Azure Functions. Veja todos os serviços que dão suporte a identidades gerenciadas para recursos do Azure.

Otimização de custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

Para uma implantação em uma única região, informações de preços de exemplo estão disponíveis na Calculadora de Preços

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Próximos passos

Para começar a implementar uma arquitetura comparável para sua empresa, considere desenvolver habilidades em torno de serviços Web, bancos de dados, como o Banco de Dados do Azure para PostgreSQL, e técnicas e tecnologias de desenvolvimento de aplicativos móveis, como Xamarin e .NET Core.

Documentação do produto:

Comunicações em tempo real:

Mais informações sobre como o WebRTC fornece recursos de comunicação em tempo real para aplicativos móveis estão disponíveis no site do projeto WebRTC.

Vire servidores:

Use uma biblioteca de cliente como o Icelink (carregado pelo aplicativo no telefone e pelo software de encaixe da área de trabalho do profissional de aparelhos auditivos) para gerenciar os servidores de turno* e os tipos de conexão (tcp, udp, p2p) entre os dois clientes (software de encaixe e aplicativo no telefone). A biblioteca do cliente:

  • Cria o canal de streaming
  • Estabelece as conexões
  • Gerencia a conexão em caso de erros, pacotes ausentes, ajusta automaticamente o streaming para as variações da largura de banda
  • Codificar/descodificar as chamadas (áudio e/ou vídeo) durante as chamadas

*Turn servers são entidades de rede encarregadas de retransmitir mídia em protocolos relacionados a VoIP. Nesta solução estão alojados em https://xirsys.com/ vários datacenters em todo o mundo. Estabelece conexão direta entre dois clientes na mesma sessão.