# Refatorações Sugeridas - Princípios SOLID

## Problemas Identificados

### 1. Single Responsibility Principle (SRP) - VIOLADO
A classe `BaseRecorrenciaChecker` está fazendo muitas coisas:
- Orquestrar regras de recorrência
- Buscar histórico
- Validar condições
- Formatar resposta
- Buscar procedimento casado

**Solução**: Extrair responsabilidades para classes específicas

### 2. Dependency Inversion Principle (DIP) - PARCIALMENTE VIOLADO
Consultas diretas a modelos Eloquent:
- `Param2::query()`
- `Pessoa::query()`
- `LiberaBenefDaGarantia::query()`
- `ProcedimentoCasado::query()`

**Solução**: Criar serviços/repositórios para abstrair acesso aos dados

### 3. Métodos muito grandes
- `buscarProcedimentoCasadoNoHistoricoWeb()` tem muitas responsabilidades

**Solução**: Dividir em métodos menores ou extrair para classe específica

## Refatorações Propostas

### Opção 1: Refatoração Mínima (Recomendada agora)
Manter estrutura atual, mas extrair apenas o que está muito grande:
- Extrair `ProcedimentoCasadoService` para buscar procedimentos casados
- Criar `ParametroService` para buscar parâmetros (grupo dentística)

### Opção 2: Refatoração Completa (Para depois dos testes)
- Extrair validadores em classes separadas (Chain of Responsibility)
- Criar `HistoricoRecorrenciaService` consolidado
- Extrair formatação para `RecorrenciaResponseFormatter`

## Recomendação
**Manter como está por enquanto e focar nos testes.** Após validar a funcionalidade, fazer refatorações incrementais conforme necessário.

