Programação Reativa e UI Orientada a Estado
Nossa arquitetura abraça o paradigma da Programação Reativa, onde a interface do usuário (UI) não manipula o DOM diretamente, mas sim "reage" a mudanças no estado e fluxos de dados contínuos.
O Conceito de Fluxos (Streams)
Diferente da programação imperativa (onde você diz "mude a cor do botão agora"), na reativa nós definimos: "a cor do botão depende do status da conexão".
Em nosso sistema, os fluxos reativos vêm de diversas fontes:
- Mudanças na Store: Via Selectors do Redux.
- Eventos de Domínio: Via barramento de eventos.
- Sinalização em Tempo Real: Via WebSockets (ex: sinal de batimento cardíaco ou posição na fila).
- Máquinas de Estado: Transições de status no XState.
UI como Função do Estado: UI = f(State)
Seguimos o princípio de que a interface deve ser uma representação visual pura do estado atual.
[Ação do Usuário] -> [Dispatcher/Saga] -> [Update State] -> [UI Reage Automaticamente]Exemplo: Reatividade em Teleconsulta
Quando o sinal de internet do paciente oscila:
- O
Core/WebSocketsdetecta a perda de pacotes. - Uma Action é disparada informando a queda de qualidade.
- O estado da
SessionMachinetransita paraRECONECTANDO. - A UI, que está "ouvindo" essa máquina, automaticamente exibe um overlay de "Instabilidade de conexão" e desabilita o chat.
- Tudo isso sem o desenvolvedor precisar escrever lógica de "esconder/mostrar" manualmente em cada componente.
Vantagens para o Ecossistema Médico
1. Baixa Carga Cognitiva
O desenvolvedor foca em como o estado deve mudar e não em como a UI deve parecer após cada pequena mudança. Isso reduz bugs de interface "travada" ou em estados inconsistentes.
2. Resiliência a Eventos Assíncronos
Sistemas de saúde são inerentemente assíncronos (exames que demoram a carregar, sinais vitais que chegam a cada segundo). A programação reativa permite lidar com essa enxurrada de dados de forma organizada e performática.
3. Desacoplamento Total
O componente que exibe a fila de espera não sabe quem atualizou a fila (se foi um WebSocket, um polling de API ou uma ação manual). Ele apenas reage ao fato de que a lista na Store mudou.
Ferramentas e Padrões Reativos Utilizados
- React Hooks (
useSelector,useMachine): Pontos de entrada para a reatividade nos componentes. - Redux-Saga: Gerencia fluxos reativos complexos de efeitos colaterais.
- Event Bus: Permite que domínios reajam a eventos uns dos outros de forma desacoplada.
A programação reativa transforma a interface em um sistema dinâmico e vivo, capaz de refletir a realidade clínica em tempo real com precisão e fluidez.