Single Source of Truth (SSOT)
O princípio da Fonte Única da Verdade (SSOT) é a base da confiabilidade em nossa arquitetura. Em sistemas médicos, a inconsistência de dados (ex: uma tela mostrando que a consulta terminou e outra mostrando que ainda está ativa) pode levar a erros operacionais críticos.
Camadas de SSOT na Arquitetura
Aplicamos o conceito de SSOT em três níveis fundamentais:
1. SSOT de Estado (Estado Global)
O estado global da aplicação (Redux) é a única fonte da verdade para os dados em memória.
- Regra: Nunca duplicamos dados em estados locais de componentes (
useState) se esses dados pertencem ao domínio. - Exemplo: O status da teleconsulta reside na Store. Se o componente de Header e o componente de Chat precisam saber o status, ambos consultam o mesmo seletor na Store.
2. SSOT de Tipagem (Contratos)
O pacote packages/contracts é a fonte única da verdade para todos os tipos e interfaces do sistema.
- Regra: Se o Backend e o Frontend compartilham um objeto (ex:
Prescription), a definição desse objeto deve estar no pacote de contratos. - Benefício: Mudanças na estrutura de dados são detectadas em tempo de compilação em todo o ecossistema (Type Safety).
3. SSOT de Processo (Máquinas de Estado)
As State Machines (XState) são a fonte única da verdade sobre o fluxo do sistema.
- Regra: O componente visual não decide se pode exibir um botão; ele pergunta à máquina de estado qual é o estado atual e quais transições são permitidas.
Benefícios para Sistemas de Saúde
Integridade de Dados Clínicos
Garante que todos os módulos (Prontuário, Prescrição, Histórico) vejam o mesmo paciente e a mesma sessão de atendimento, eliminando riscos de salvar informações no contexto errado.
Facilidade de Debugging
Com o SSOT, o desenvolvedor sabe exatamente onde olhar se algo estiver errado. Não há dúvidas se o bug está no estado local do componente A ou B; o dado "está ou não está" na Store Global.
Sincronização em Tempo Real
Quando um evento de WebSocket atualiza a Store Global, todos os componentes que dependem daquele dado reagem instantaneamente, pois todos bebem da mesma fonte.
Desafios e Boas Práticas
- Evitar Derivação de Dados no Estado: Nunca salve dados calculados (ex:
isAdult: true) na Store se você pode calculá-los via Selectors a partir do dado base (ex:birthDate). O dado base é a verdade; o cálculo é uma derivação. - Normalize a Store: Utilize padrões de normalização (como
idseentities) para evitar que o mesmo objeto médico esteja presente em múltiplos lugares da store, o que quebraria o SSOT se um fosse atualizado e o outro não.
A aderência estrita ao SSOT torna o sistema previsível, auditável e resiliente a falhas de sincronia.