Criar um sistema de telessaúde no Azure

Banco de Dados do Azure para PostgreSQL
Funções do Azure
AKS (Serviço de Kubernetes do Azure)
Armazenamento do Azure
Gerenciador de Tráfego do Azure

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.

Baixe um Arquivo Visio dessa arquitetura.

Workflow

A solução é criada 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, há clientes em dois grupos, o profissional de saúde e o paciente. O profissional de saúde usa o software de ajuste e os clientes do portal da Web para se comunicar com seus pacientes. Os pacientes, por outro lado, usam um aplicativo móvel que está vinculado ao dispositivo médico por meio de uma conexão Bluetooth. Essa comunicação de ida e volta é obtida usando os 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 por meio do RTC da Web ou comunicação entre clientes usando Signal. Signal é uma biblioteca de software para 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 em contas de armazenamento do Azure. Todos os logs de todos os serviços são coletados em uma solução de registro em log centralizada que usa Azure Application Insights. Por fim, a comunicação assíncrona pode ser obtida entre os clientes por meio de notificações por push usando a ajuda do Hub de Notificação do Azure.

A solução foi configurada dessa forma para:

  • Beneficiar-se da escalabilidade dos serviços de nuvem em execução no back-end.

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

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

  • Alcance o monitoramento central e aprimore 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 o usuário (profissional de assistência médica e de pacientes) e o dispositivo. O serviço foi escolhido porque é estável, leve e não tem nenhum bloqueio de fornecedor.
  • O Serviço de 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 de forma subjacente.
  • O Cache do Azure para Redis hospeda dados temporários usados para dados de serviço interno (dados compartilhados). O serviço pode ser recriado do banco de dados no caso de expiração dos dados do cache
  • O Hub de Notificação do Azure notifica o paciente sobre o conteúdo de entrada: chat, 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 back-end (agregações...).
  • Azure Application Insights centraliza os sinais/eventos do sistema (logs, telemetria de logs de microsserviços, front-end e dispositivos) para fins de solução de problemas.
  • o Rede de Distribuição de Conteúdo de Azure (CDN) é usado para manutenção e atualizações (distribuição 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.
  • Gerenciador de Tráfego do Azure faz o balanceamento de 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 banco de dados, qualquer outro serviço de banco de dados PaaS pode ser usado. Ao hospedar a lógica do aplicativo, em vez de usar o Azure Kubernetes Service, você pode considerar usar o Serviço de Aplicativo do Azure.

Detalhes do cenário

Os detalhes são baseados em uma implementação de cliente real que conecta uma organização de saúde profissional a seus pacientes remotos. Embora haja outras maneiras de criar esse sistema, a solução descrita foi eficiente na comunicação entre os pacientes e o provedor de assistência remota, bem como o ajuste remoto dos dispositivos médicos que os pacientes carregam.

Há cerca de 700 milhões pessoas com deficiência auditiva. No entanto, somente 10% deles usam dispositivos de auxílio de audição para melhorar suas vidas. Em algumas regiões ou situações, é impossível para um paciente obter assistência direta quando necessário. Por exemplo, considere pacientes que:

  • Precisam de ajuda em uma situação de audição específica (por exemplo, ao andarem no parque, participarem de uma festa ou estarem em casa), que não pode ser reproduzido no consultório do profissional de assistência médica.
  • Têm problemas de mobilidade ou residem longe do profissional de assistência médica.
  • Vivem em um país/região emergente que tenha um número limitado de profissionais de assistência médica.

Para superar essas dificuldades, é importante ter a capacidade de fornecer serviços de atendimento ao ouvinte remotamente. Nesse caso, o profissional de saúde usa a comunicação de chat ou vídeo para envolver seus pacientes remotos. As pessoas que são difíceis de ouvir usam um smartphone para permitir o acesso ao dispositivo de auxílio de audição durante a sessão remota. O paciente experimenta imediatamente uma melhora na audição, à medida que o profissional de assistência médica implementa as alterações na configuração do aparelho auditivo em tempo real.

Possíveis casos de uso

Essa solução é ideal para o setor de saúde. Os seguintes casos de uso adicionais têm padrões de design semelhantes:

  • Qualquer dispositivo habilitado para Bluetooth pode ser acessado e ajustado remotamente usando essa solução.
  • Comunicação (pesquisa de texto, voz, vídeo) ou de conhecimento (educação, pesquisas de satisfação) em uma configuração/contexto remoto.
  • Gerenciamento de conteúdo da Web distribuído globalmente.
  • Internet das coisas (IoT)

Modos

Modo padrão

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

Modo Avançado

No modo avançado, o profissional de assistência médica usa o software de ajuste para enviar por push uma 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 alcança usando WebSockets. O telefone do usuário final está no final de recebimento deste canal. No telefone, a conexão Bluetooth estabelece o link de comunicação final com o dispositivo.

Considerações

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

É recomendável usar 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 o carregamento e a agregação de uma grande quantidade de dados. Recomendamos a entrega de arquivos da Web estáticos (.html, .js, imagens, etc.) globalmente usando uma rede de entrega de conteúdo (CDN) para melhorar a velocidade por meio do cache.

Implantação

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

Gerenciamento

Para se alinhar melhor à ideia de ter cada domínio funcional manipulado com o uso de um microsserviço específico, a longo prazo, há uma oportunidade de dividir o banco de dados em vários bancos menores de dados. Isso permitirá que o isolamento e a autonomia do princípio do fluxo estejam relacionados a cada microsserviço, em oposição à concentração dos dados relacionados a todos os serviços em um único banco de dados. Atingir esse objetivo exigirá a automação do provisionamento e do 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.

Monitoramento

É 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 informações holísticas entre componentes e camadas.

Atualmente, as camadas monitoradas incluem:

  • Aplicativos do Windows (ajustando o software na área de trabalho do profissional de assistência médica)
  • Lógica de aplicativo hospedado
  • Serviços de nuvem

Dimensionamento e escalonamento

Assegure-se de otimizar a configuração dos clusters de Kubernetes do Azurem, para corresponder aos requisitos de escala que oscilam 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.

Usar a 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 – Citus (hiperescala) para alcançar a escala global provisionando vários nós de banco de dados.

Segurança e conformidade

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

Essa solução lida com dados de PHI e pessoais. Como tal, é importante usar os serviços que são certificados para aplicativos médicos (certificações da HIPAA, não apenas para os dados que permanecem no banco de dados, mas também para os logs e a telemetria). Para obter detalhes, consulte a seção da 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 compatíveis com identidades gerenciadas para recursos do Azure.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

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

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Próximas etapas

Para começar a implementar uma arquitetura comparável para seus negócios, considere a criação de habilidades em relação a 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 .NET MAUI.

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.

Servidores Turn:

Use uma biblioteca de cliente como IceLink (carregada pelo aplicativo no telefone e pelo software de ajuste da área de trabalho do profissional de auxílio de audição) para gerenciar os servidores de ativação* e os tipos de conexão (TCP, UDP, P2P) entre os dois clientes (ajustando software e aplicativo no telefone). A biblioteca de clientes:

  • 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
  • Codifica/decodifica as chamadas (áudio e/ou vídeo) durante as chamadas

*Os servidores Turn são entidades de rede responsáveis pela retransmissão de mídia em protocolos relacionados a VoIP. Nessa solução, eles são hospedados por https://xirsys.com/ em vários datacenters em todo o mundo. Estabelecem uma conexão direta entre dois clientes na mesma sessão.