Skip to content

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 ids e entities) 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.