Agendamento e Disponibilidade
O módulo de agendamento gerencia a agenda dos cirurgiões e garante que não haja conflitos de horário.
Disponibilidade de Cirurgiões
A disponibilidade é gerida através de três entidades:
- AvailabilitySlot: Horários fixos semanais (ex: Segundas das 08h às 12h).
- ExtraAvailabilitySlot: Horários excepcionais em datas específicas.
- ScheduleBlock: Bloqueios de agenda (férias, congressos, cirurgias de emergência).
Regras de Agendamento
- Expediente (RN08): O sistema bloqueia agendamentos fora do intervalo de 08h-18h, a menos que o usuário possua role
ADMIN. - Duração: Cada agendamento tem uma duração padrão definida no cadastro do cirurgião (
appointmentDuration), geralmente 30 ou 60 minutos. - Conflito (RN04): O backend valida a sobreposição de horários antes de confirmar a criação ou atualização de um agendamento.
Fluxo de Notificação
Ao criar um agendamento:
- O agendamento entra com status
SCHEDULED. - O Cronjob Diário (às 08:00) avalia se o agendamento está na janela correta (30d, 7d, 48h) e enfileira o disparo no BullMQ.
- Caso o paciente confirme via WhatsApp, o status muda automaticamente para
CONFIRMED. - Caso o paciente não responda à confirmação de 48h dentro do SLA de 24 horas úteis (RN09), o status muda para
ATTENTION_REQUIRED, umAuditLogé gerado e o recálculo do Risk Score é enfileirado automaticamente.
Integração com Risk Score
Cada alteração de status no agendamento dispara automaticamente o recálculo do No-Show Risk Score, permitindo que a equipe identifique lacunas na agenda com antecedência.