271 lines
11 KiB
Markdown
271 lines
11 KiB
Markdown
# EPICA: EPIC-CL-003 - Citas (Agenda Médica)
|
|
|
|
## Metadata
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | EPIC-CL-003 |
|
|
| **Nombre** | Citas (Agenda Médica) |
|
|
| **Modulo** | citas |
|
|
| **Fase** | Fase 1 - MVP |
|
|
| **Prioridad** | P0 (Critico) |
|
|
| **Estado** | Backlog |
|
|
| **Story Points** | 42 |
|
|
| **Sprint(s)** | Sprint 3-4 |
|
|
|
|
---
|
|
|
|
## Descripcion
|
|
|
|
Sistema de agenda médica para programación de citas. Gestión de horarios por médico y consultorio, confirmación de citas, recordatorios automáticos, lista de espera y módulo de check-in para llegada de pacientes.
|
|
|
|
---
|
|
|
|
## Objetivo de Negocio
|
|
|
|
- Optimizar uso de consultorios
|
|
- Reducir ausentismo con recordatorios
|
|
- Mejorar experiencia del paciente
|
|
- Control de tiempos de espera
|
|
- Maximizar productividad médica
|
|
|
|
---
|
|
|
|
## Historias de Usuario
|
|
|
|
| ID | Historia | Prioridad | SP | Estado |
|
|
|----|----------|-----------|-----|--------|
|
|
| US-CL003-001 | Como recepcionista, quiero agendar cita seleccionando médico, fecha y hora disponible | P0 | 5 | Backlog |
|
|
| US-CL003-002 | Como recepcionista, quiero ver agenda del día por médico en formato calendario | P0 | 5 | Backlog |
|
|
| US-CL003-003 | Como recepcionista, quiero confirmar cita vía WhatsApp o llamada | P0 | 3 | Backlog |
|
|
| US-CL003-004 | Como paciente, quiero recibir recordatorio automático 24h antes de mi cita | P0 | 5 | Backlog |
|
|
| US-CL003-005 | Como recepcionista, quiero reagendar cita manteniendo historial | P0 | 3 | Backlog |
|
|
| US-CL003-006 | Como recepcionista, quiero registrar check-in del paciente al llegar | P0 | 3 | Backlog |
|
|
| US-CL003-007 | Como médico, quiero ver mis citas del día con datos del paciente | P0 | 3 | Backlog |
|
|
| US-CL003-008 | Como admin, quiero configurar horarios de atención por médico | P0 | 5 | Backlog |
|
|
| US-CL003-009 | Como recepcionista, quiero gestionar lista de espera para cancelaciones | P1 | 3 | Backlog |
|
|
| US-CL003-010 | Como paciente, quiero agendar cita desde portal web o app | P1 | 5 | Backlog |
|
|
| US-CL003-011 | Como admin, quiero bloquear horarios por vacaciones o eventos | P1 | 2 | Backlog |
|
|
|
|
**Total Story Points:** 42 SP
|
|
|
|
---
|
|
|
|
## Flujo de Cita
|
|
|
|
```
|
|
┌─────────────┐
|
|
│ AGENDADA │ ← Cita programada
|
|
└──────┬──────┘
|
|
│
|
|
▼ (-24h)
|
|
┌─────────────┐
|
|
│ RECORDATORIO│ ← Envío automático WhatsApp/SMS
|
|
└──────┬──────┘
|
|
│
|
|
├── Sin respuesta ────────────┐
|
|
▼ │
|
|
┌─────────────┐ │
|
|
│ CONFIRMADA │ │
|
|
└──────┬──────┘ │
|
|
│ │
|
|
▼ (Día de la cita) │
|
|
┌─────────────┐ │
|
|
│ CHECK-IN │ ← Paciente llega │
|
|
└──────┬──────┘ │
|
|
│ │
|
|
▼ │
|
|
┌─────────────┐ │
|
|
│ EN_CONSULTA │ ← Médico inicia │
|
|
└──────┬──────┘ │
|
|
│ │
|
|
▼ ▼
|
|
┌─────────────┐ ┌─────────────┐
|
|
│ ATENDIDA │ │ NO_ASISTIO │
|
|
└─────────────┘ └─────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Configuración de Agenda
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ AGENDA DEL DR. GARCÍA │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ HORARIO DE ATENCIÓN │
|
|
│ ├── Lunes a Viernes: 09:00 - 14:00, 16:00 - 20:00 │
|
|
│ ├── Sábados: 09:00 - 14:00 │
|
|
│ └── Domingos: No labora │
|
|
│ │
|
|
│ DURACIÓN DE CITAS │
|
|
│ ├── Primera vez: 45 minutos │
|
|
│ ├── Seguimiento: 20 minutos │
|
|
│ └── Procedimiento: 60 minutos │
|
|
│ │
|
|
│ CONSULTORIOS │
|
|
│ ├── Consultorio 1 (Principal) │
|
|
│ └── Consultorio 3 (Alterno) │
|
|
│ │
|
|
│ BLOQUEOS │
|
|
│ ├── 15-22 Dic: Vacaciones │
|
|
│ └── Cada miércoles 10:00-11:00: Junta médica │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Vista de Agenda
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ DR. GARCÍA - Lunes 9 Diciembre 2024 │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ 09:00 │ ████████████████████ Juan Pérez (Primera vez) │
|
|
│ 09:45 │ - DISPONIBLE - │
|
|
│ 10:00 │ ████████ María López (Seguimiento) ✓ Confirmada│
|
|
│ 10:20 │ - DISPONIBLE - │
|
|
│ 10:40 │ ████████ Carlos Ruiz (Seguimiento) │
|
|
│ 11:00 │ ▓▓▓ JUNTA MÉDICA ▓▓▓ │
|
|
│ 12:00 │ ████████████████████████████████ Procedimiento │
|
|
│ 13:00 │ ████████ Ana García (Seguimiento) ✓ En sala │
|
|
│ 13:20 │ ████████ Pedro Soto (Seguimiento) │
|
|
│ 13:40 │ - DISPONIBLE - │
|
|
│ │
|
|
│ ────────────── DESCANSO ────────────── │
|
|
│ │
|
|
│ 16:00 │ ████████████████████ Nuevo paciente (1a vez) │
|
|
│ ... │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Criterios de Aceptacion de la Epica
|
|
|
|
**Funcionales:**
|
|
- [ ] Agendar citas con validación de disponibilidad
|
|
- [ ] Vista de agenda diaria/semanal por médico
|
|
- [ ] Confirmación de citas
|
|
- [ ] Recordatorios automáticos (WhatsApp/SMS/Email)
|
|
- [ ] Check-in de pacientes
|
|
- [ ] Reagendar y cancelar citas
|
|
- [ ] Lista de espera
|
|
- [ ] Configuración de horarios
|
|
|
|
**No Funcionales:**
|
|
- [ ] Carga de agenda < 2 segundos
|
|
- [ ] Envío de recordatorio en < 1 minuto
|
|
- [ ] Soporte para 10+ médicos simultáneos
|
|
|
|
**Tecnicos:**
|
|
- [ ] Integración con WhatsApp Business API
|
|
- [ ] Calendario sincronizable (Google Calendar, Outlook)
|
|
- [ ] Notificaciones push para app
|
|
- [ ] Tiempo real con WebSockets
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
**Esta epica depende de:**
|
|
| Epica/Modulo | Estado | Bloqueante |
|
|
|--------------|--------|------------|
|
|
| EPIC-CL-001 Fundamentos | Backlog | Si |
|
|
| EPIC-CL-002 Pacientes | Backlog | Si |
|
|
|
|
**Esta epica bloquea:**
|
|
| Epica/Modulo | Razon |
|
|
|--------------|-------|
|
|
| EPIC-CL-004 Consultas | Requiere cita para iniciar consulta |
|
|
| EPIC-CL-008 Facturación | Requiere citas para facturar |
|
|
|
|
---
|
|
|
|
## Desglose Tecnico
|
|
|
|
**Database:**
|
|
- [ ] Schema: `appointments`
|
|
- [ ] Tablas: 7 (appointments, schedules, schedule_blocks, waiting_list, reminders, check_ins, appointment_types)
|
|
- [ ] Funciones: 3 (check_availability, send_reminder, calculate_wait_time)
|
|
- [ ] Indices: Por médico, fecha, paciente, estado
|
|
|
|
**Backend:**
|
|
- [ ] Modulo: `appointments`
|
|
- [ ] Entities: 6 (Appointment, Schedule, ScheduleBlock, WaitingList, Reminder, CheckIn)
|
|
- [ ] Endpoints: 18
|
|
- [ ] Jobs: Envío de recordatorios
|
|
- [ ] Tests: 35
|
|
|
|
**Frontend:**
|
|
- [ ] Paginas: 5 (Calendar, AppointmentForm, DayView, WeekView, WaitingList)
|
|
- [ ] Componentes: 15 (CalendarGrid, TimeSlot, AppointmentCard, CheckInModal, etc.)
|
|
- [ ] WebSockets para actualizaciones en tiempo real
|
|
- [ ] Stores: 1 (appointmentsStore)
|
|
|
|
---
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| POST | /api/appointments | Crear cita |
|
|
| GET | /api/appointments/:id | Detalle de cita |
|
|
| PATCH | /api/appointments/:id | Actualizar cita |
|
|
| DELETE | /api/appointments/:id | Cancelar cita |
|
|
| GET | /api/appointments/calendar/:doctorId | Agenda del médico |
|
|
| GET | /api/appointments/availability | Horarios disponibles |
|
|
| POST | /api/appointments/:id/confirm | Confirmar cita |
|
|
| POST | /api/appointments/:id/check-in | Registrar llegada |
|
|
| GET | /api/schedules/:doctorId | Horarios del médico |
|
|
| POST | /api/schedules/:doctorId/blocks | Bloquear horario |
|
|
| GET | /api/waiting-list | Lista de espera |
|
|
|
|
---
|
|
|
|
## Riesgos
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|--------------|---------|------------|
|
|
| Overbooking | Media | Alto | Validación de disponibilidad |
|
|
| Recordatorios no enviados | Media | Medio | Reintentos + logs |
|
|
| Ausentismo alto | Media | Medio | Confirmación + lista de espera |
|
|
|
|
---
|
|
|
|
## Definition of Ready (DoR)
|
|
|
|
- [x] Historias de usuario definidas
|
|
- [x] Criterios de aceptacion claros
|
|
- [x] Dependencias identificadas
|
|
- [x] Estimacion completada
|
|
- [ ] Horarios de médicos definidos
|
|
- [ ] Proveedor de WhatsApp Business API seleccionado
|
|
|
|
## Definition of Done (DoD)
|
|
|
|
- [ ] Agenda funcional por médico
|
|
- [ ] Recordatorios automáticos enviándose
|
|
- [ ] Check-in operativo
|
|
- [ ] Lista de espera activa
|
|
- [ ] Tests de integración pasando
|
|
- [ ] Documentación de API
|
|
|
|
---
|
|
|
|
## Historial
|
|
|
|
| Fecha | Cambio | Autor |
|
|
|-------|--------|-------|
|
|
| 2025-12-08 | Creacion de epica | Claude-Agent |
|
|
|
|
---
|
|
|
|
**Creada por:** Claude-Agent
|
|
**Fecha:** 2025-12-08
|
|
**Ultima actualizacion:** 2025-12-08
|