Skip to content

CQRS no Front-End (Command Query Responsibility Segregation)

Embora o CQRS seja um padrão frequentemente associado ao Back-End, sua aplicação na arquitetura Front-End do nosso sistema de saúde é fundamental para gerenciar a complexidade e garantir a performance em interfaces ricas em dados.

O Que é CQRS?

CQRS é a separação da responsabilidade de Escrita (Comandos/Updates) da responsabilidade de Leitura (Consultas). No nosso ecossistema, implementamos isso através da integração entre Redux Actions/Sagas e Selectors.

1. O Lado da Escrita (Commands)

As Actions do Redux funcionam como "Comandos". Elas expressam a intenção do usuário ou do sistema de alterar algo.

  • Exemplo: consultationActions.fetchConsultationRequest(id) ou medicalRecordActions.savePrescription(data).
  • Efeito: Essas ações não retornam dados; elas disparam um processo (via Reducer ou Saga) que eventualmente atualizará o estado.

2. O Lado da Leitura (Queries)

Os Selectors (utilizando a biblioteca reselect) funcionam como as "Consultas". Eles são responsáveis por extrair e transformar dados do estado global para a UI.

  • Exemplo: selectActiveConsultation(state) ou selectIsPrescriptionValid(state).
  • Benefício: Como as consultas são desacopladas da estrutura física da store, podemos otimizar o formato dos dados na memória sem quebrar os componentes que os consomem.

Por que CQRS é Vital na Saúde Digital?

Otimização de Performance

Em um prontuário médico complexo, o objeto de dados pode ser enorme. Com CQRS, a UI não "lê" o prontuário inteiro. Ela utiliza Selectors granulares para ler apenas o que é necessário (ex: apenas as alergias do paciente), reduzindo re-renderizações desnecessárias.

Desacoplamento de Lógica

A lógica de como um dado é salvo (escrita) é complexa, envolvendo validações clínicas e chamadas de API. A lógica de como um dado é exibido (leitura) envolve formatações e máscaras. Manter essas responsabilidades separadas em Sagas (Escrita) e Selectors (Leitura) torna o código muito mais fácil de manter.

Auditabilidade e Previsibilidade

Como cada alteração de estado (escrita) passa por uma Action nomeada, temos um log claro de todos os "Comandos" executados pelo médico durante um atendimento, o que é essencial para auditoria clínica.

Matriz de Implementação CQRS

ResponsabilidadeTecnologiaPapel no Sistema
Escrita (Commands)Redux ActionsExpressa intenção de mudança.
ProcessamentoRedux-SagasExecuta validações e chamadas assíncronas.
Persistência LocalRedux ReducersAtualiza o estado imutável.
Leitura (Queries)Reselect SelectorsExtrai e formata dados para a UI.

Este padrão garante que o crescimento da complexidade de um domínio (como a adição de novos campos em uma prescrição) não degrade a experiência do desenvolvedor nem a performance da aplicação.