feat: version 4.7.0 -- Agenda medica

Modulo clinic (habilitado por usuario): citas de pacientes para medicos con choques
bloqueantes (medico, paciente con cualquier medico, quirofano/bloqueos recurrentes y
horario de atencion), validados en transaccion con bloqueo de filas para que dos
recepcionistas no tomen el mismo hueco. Recepcion (alcance todos) y medico (alcance
propio). Vista Dia por columnas de medico, Semana y Lista; pacientes con historial;
bloqueos; configuracion de personal, horarios y tipos solo admin/superadmin. Capa de
citas en el calendario personal del medico. Migracion 036.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-28 12:57:43 -05:00
parent bdc62403f4
commit 1e25022630
29 changed files with 1649 additions and 34 deletions
+19
View File
@@ -93,6 +93,25 @@ tiene cada cosa — sin que cargar la información sea tedioso para quien lo usa
- La pestaña Calendario del proyecto muestra todas sus actividades y todas las reuniones
vinculadas al proyecto (requiere acceso de lectura al proyecto).
### 7 bis. Agenda médica (v4.7.0)
- `clinic` se habilita explícitamente por usuario (desactivado por defecto; superadmin siempre tiene el módulo). Además exige una fila activa en `clinic_staff`: `all` permite
a recepción ver/agendar con todos los médicos, gestionar pacientes y bloqueos; `own` permite
a un médico ver su agenda, gestionar sus bloqueos y marcar atendida/no asistió. No crea citas.
Los médicos conservan el resto de sus módulos y no se crea un rol del sistema.
- Admin/superadmin con acceso a `clinic` y fila de staff configuran personal, horarios por tramos
y tipos de cita desde la pestaña Configuración de agenda.
- Día muestra columnas por médico; Semana muestra un médico; Lista muestra citas y bloqueos.
Crear cita desde un hueco precarga médico/hora; el tipo fija la duración por defecto.
- Una cita no cancelada solo cabe si está completa dentro de un tramo de atención y no cruza
otra cita del médico, un bloqueo suyo (también recurrente) ni otra cita del paciente con
cualquier médico. Son errores 409 bloqueantes; la validación se repite bajo bloqueo de filas
en una transacción para evitar reservas simultáneas del mismo hueco.
- Crear/editar un bloqueo que cruce citas devuelve las citas afectadas; solo se guarda tras
`confirmAffected=true`. No cancela las citas: recepción debe reprogramarlas.
- Datos de paciente mínimos, sin historia clínica; cambios auditados sin incluir datos sensibles
en el detalle. `DATETIME` representa hora civil `America/Guayaquil`.
- El calendario personal muestra al médico sus citas activas y bloqueos en la capa Citas médicas.
### 8. Gantt
- Vista de solo lectura por proyecto: barras por actividad (inicio/fin/avance), sin edición directa
desde el gráfico en el MVP.