27 Agendamiento y Reprogramación de Citas en Tiempo Real con Laravel y FullCalendar Sis Odontológico
Duración: 14 minDescripción
🎓 Lección 27: Agendamiento Administrativo y Reprogramación de Citas Médicas en Tiempo Real
El objetivo principal de esta lección es implementar las funcionalidades de agendamiento directo desde recepción y la reprogramación interactiva de citas médicas en Laravel, garantizando la reutilización de lógica de negocio, validación de disponibilidad de horarios y control estricto de accesos según el rol del usuario.
🚀 Pasos Clave con Timestamps
- ⏱️ 00:00 📢 Agradecimiento y Contexto de la Comunidad: Reflexión sobre la entrega del código fuente, el crecimiento de la comunidad y la bienvenida a nuevos miembros del canal.
- ⏱️ 03:22 🔐 Definición de Nuevos Permisos en RoleSeeder: Creación e integración de tres nuevos permisos en la base de datos (Programar cita, Crear cita de recepción y Guardar cita de recepción) limitados al personal administrativo y médico.
- ⏱️ 05:37 🛣️ Configuración de Rutas y Controlador: Registro de las rutas web y revisión de los métodos create(), store(), edit(), update() y reprogramar() dentro de CitaController.
- ⏱️ 07:41 🔄 Flujo de Reprogramación de Citas: Demostración paso a paso para modificar la fecha y hora de una cita existente desde la vista administrativa sin perder el historial.
- ⏱️ 10:02 📝 Agendamiento Directo desde Recepción: Creación de citas presenciales seleccionando doctor, paciente, tratamiento, estado (confirmado directo) y observaciones.
- ⏱️ 11:50 📅 Validación en Tiempo Real y Bloqueo de Horarios: Verificación en el calendario dinámico de la agenda ocupada del doctor para evitar traslapes o doble reserva.
🛠️ Comandos y Rutas Principales
| Tipo / Elemento | Detalle / Comando / Ruta | Descripción |
|---|---|---|
| 🛠️ Artisan Command | php artisan db:seed --class=RoleSeeder | Registra los permisos de reprogramación y agendamiento administrativo en la base de datos. |
| 🛣️ HTTP Route | GET /citas/create | Muestra el formulario de agendamiento directo desde el módulo de recepción/administración. |
| 🛣️ HTTP Route | POST /citas/reprogramar/{id} | Procesa el cambio de fecha, hora u observación de una cita asignada. |
| ⚙️ Controller Method | CitaController@reprogramar | Revalida disponibilidad horaria y actualiza la fecha/hora de la cita en la base de datos. |
🔒 Buenas Prácticas y Seguridad
- 🚫 Restricción de Funcionalidad Crítica en Frontend: Los pacientes no deben tener acceso a las rutas ni botones de reprogramación arbitraria; esta acción debe permanecer protegida exclusivamente bajo el rol de SuperAdmin, Admin o Secretaria.
- ♻️ Reutilización del Código de Negocio (DRY): Aprovecha métodos existentes como VerificarDisponibilidad y TratamientosPorDoctor en las vistas administrativas para mantener la consistencia de reglas de negocio sin duplicar lógica en el controlador.
- 🔒 Confirmación Obligatoria e Historial de Cambios: Exige confirmación mediante modales (SweetAlert2) antes de guardar la reprogramación e incentiva registrar el motivo en el campo observaciones para mantener trazabilidad médica.