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:
@@ -33,6 +33,37 @@ campo en multipart. La API responde `428` si falta o es inválido y `409` si otr
|
||||
el registro. En empresa y SMTP la respuesta `GET` incluye `edit_version`.
|
||||
Las reuniones siguen el mismo contrato (`PUT /api/meetings/:id`).
|
||||
|
||||
## Agenda médica (v4.7.0)
|
||||
|
||||
Todas las rutas bajo `/api/clinic` exigen JWT, módulo `clinic` y fila activa en `clinic_staff`.
|
||||
Sin la fila se responde 403. `scope=own` solo accede a su médico; `scope=all` gestiona todos.
|
||||
Configuración exige además rol admin/superadmin. Fechas `YYYY-MM-DD HH:mm:ss` en hora civil
|
||||
`America/Guayaquil`; rangos de listado de máximo 93 días.
|
||||
|
||||
| Método y ruta | Uso |
|
||||
|---|---|
|
||||
| `GET /staff/me` | alcance y condición de médico |
|
||||
| `GET /doctors` | médicos visibles con horario y tipos activos |
|
||||
| `GET /availability?doctorId=&date=&typeId=` | huecos de 15 minutos con duración del tipo |
|
||||
| `GET /appointments?from=&to=[&doctorId=][&patientId=]` | citas no canceladas del rango; `patientId` solo recepción |
|
||||
| `POST /appointments`, `PUT /appointments/:id` | crear o reprogramar/editar; `PUT` exige `editVersion` |
|
||||
| `POST /appointments/:id/status` | `{status,editVersion}`; médico propio solo `attended`/`no_show` |
|
||||
| `POST /appointments/:id/cancel` | `{reason,editVersion}`, solo recepción |
|
||||
| `GET /blocks?from=&to=[&doctorId=]` | ocurrencias expandidas del rango |
|
||||
| `POST /blocks`, `PUT /blocks/:id` | bloqueo; `{confirmAffected:true}` para guardar si afecta citas |
|
||||
| `DELETE /blocks/:id?editVersion=` | eliminar bloqueo con versión |
|
||||
| `GET /patients?search=&page=&pageSize=` | búsqueda paginada, solo recepción |
|
||||
| `GET /patients/:id/appointments` | últimas 100 citas, solo recepción |
|
||||
| `POST /patients`, `PUT /patients/:id` | alta y edición, solo recepción; `PUT` exige `editVersion` |
|
||||
| `GET /config/staff`, `PUT /config/staff/:id` | personal y permiso interno |
|
||||
| `GET/PUT /config/schedules/:id` | tramos; `PUT` recibe `{segments:[{weekday,startsTime,endsTime}]}` |
|
||||
| `GET/POST /config/types`, `PUT /config/types/:id` | tipos de cita |
|
||||
|
||||
Una cita fuera del horario o en choque devuelve 409 con motivo concreto. Un bloqueo afectado
|
||||
responde `{requiresConfirmation:true,affected:[...]}` y no se guarda sin confirmación. Las
|
||||
ediciones con versión obsoleta devuelven 409. Las altas, ediciones, cambios de estado y
|
||||
cancelaciones se auditan sin copiar datos de pacientes al detalle de auditoría.
|
||||
|
||||
## Calendario de reuniones (v4.4.0)
|
||||
|
||||
Todas las rutas requieren JWT y módulo `calendar`. Las fechas son `YYYY-MM-DD HH:mm:ss` en hora
|
||||
|
||||
Reference in New Issue
Block a user