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)oumedicalRecordActions.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)ouselectIsPrescriptionValid(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
| Responsabilidade | Tecnologia | Papel no Sistema |
|---|---|---|
| Escrita (Commands) | Redux Actions | Expressa intenção de mudança. |
| Processamento | Redux-Sagas | Executa validações e chamadas assíncronas. |
| Persistência Local | Redux Reducers | Atualiza o estado imutável. |
| Leitura (Queries) | Reselect Selectors | Extrai 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.