Documentación: diagramas, kiosko y chat, catálogos, respaldos y endpoints documentados

Diagramas en texto dentro de bloques de código, en vez de capturas: se editan
como texto, no pesan en el repositorio y no quedan desactualizados solos. Se
agregan el recorrido de un turno, quién firma cada consentimiento, el paso de
una muestra pendiente entre visitas y la línea de tiempo de las tomas seriadas.

Páginas nuevas del manual: kiosko y pantallas de TV (las dos que funcionan sin
nadie operándolas), y chat de WhatsApp, que explica por qué el bot deja de
responder cuando un operador toma la conversación y de dónde sale el límite de
24 horas.

Páginas técnicas nuevas: registro de exámenes, y los catálogos del laboratorio
agrupados en una sola página por compartir la misma forma. Operación suma
respaldos y recuperación, incluyendo qué datos históricos no son recuperables.

Los 10 endpoints que no tenían comentario de cabecera ahora lo tienen, así que
la tabla generada por {{endpoints}} queda completa: 83 de 83.

DOCUMENTACION_LAB.md y README_LAB.md quedan como puntero al módulo;
WEBHOOK_ENDPOINTS.md se elimina por estar ya migrado a la sección técnica.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-04 10:49:02 -05:00
co-authored by Claude Opus 5
parent 81c007c516
commit 71c9dfd424
21 changed files with 454 additions and 806 deletions
@@ -0,0 +1,54 @@
# Registro de exámenes
Registro de exámenes realizados en sede: creación de órdenes, toma de muestras e ingreso de resultados. Es de los módulos nuevos — todo su código vive dentro de `modules/registro_exams/`.
## Vistas
| Vista | Qué hace |
|---|---|
| `lista` | Órdenes con filtros y estado |
| `nueva_orden` | Alta de una orden |
| `orden` | Detalle: ítems, estados e ingreso de resultados |
| `etiqueta` | Etiqueta imprimible para rotular la muestra |
## Endpoints
| Endpoint | Qué hace |
|---|---|
| `get_ordenes.php` | Lista con filtros |
| `get_orden.php` | Detalle de una orden |
| `save_orden.php` | Crea o actualiza |
| `save_resultado.php` | Guarda el resultado de un ítem |
| `cambiar_estado_item.php` | Avanza el estado de un ítem individual |
Usan `api/_helpers.php` del módulo, con las mismas convenciones que el turnero.
## Flujo
```
nueva_orden orden orden
│ │ │
▼ ▼ ▼
┌─────────┐ ┌───────────┐ ┌─────────────┐
│ crear ├──────►│ muestra ├──────────►│ resultado │
│ orden │ │ tomada │ │ ingresado │
└─────────┘ └───────────┘ └─────────────┘
│ │
▼ ▼
etiqueta se rotula
imprimible la muestra
```
El estado se lleva **por ítem**, no por orden completa: una orden puede tener unos exámenes resueltos y otros pendientes.
## Relación con otros módulos
| Módulo | Vínculo |
|---|---|
| `lab_examenes` | De ahí sale el catálogo y los valores de referencia |
| `lab_pacientes` | El paciente de la orden |
| `medicos` | El médico que la solicitó |
## Al tocarlo
Los resultados de laboratorio son información clínica: un ítem mal guardado o un valor de referencia equivocado tienen consecuencias reales. Cualquier cambio en `save_resultado.php` merece probarse con una orden de prueba antes de subirlo.
@@ -0,0 +1,67 @@
# Catálogos del laboratorio
Los módulos que administran las tablas maestras. Se agrupan acá porque comparten la misma forma: una pantalla de listado con alta, edición y baja sobre una tabla.
## Los módulos
| Módulo | Tabla principal | Qué administra |
|---|---|---|
| `lab_examenes` | `exam_tipos` | Catálogo de exámenes, valores de referencia y tarifas |
| `medicos` | `medicos` | Médicos solicitantes |
| `lab_pacientes` | `lab_pacientes` | Fichas clínicas e historial |
| `lab_enfermeras` | `lab_enfermeras` | Personal clínico |
| `lab_eps` | `lab_eps` | EPS y aseguradoras |
| `lab_empresas` | `lab_empresas` | Empresas, convenios, subgrupos y tarifas |
| `lab_ciudades` | `lab_ciudades` | Ciudades de pacientes |
| `usuarios` | `admin_users`, `roles` | Usuarios y asignación de roles |
## Los que tienen endpoints propios
La mayoría son puentes al sistema anterior. Dos tienen código propio:
### `lab_examenes`
| Endpoint | Qué hace |
|---|---|
| `list.php` / `get.php` | Listado y detalle |
| `save.php` | Alta y edición del examen |
| `save_item.php` | Ítems que componen un examen |
| `get_tarifas.php` / `save_tarifa.php` | Tarifas por empresa o convenio |
Es el catálogo del que dependen el turnero y el registro de exámenes. Un examen mal configurado se propaga a todo lo demás: consentimientos que no se piden, tarifas que no se aplican.
**`exam_tipo_consentimientos`** vincula un examen con los formularios que obliga a firmar. Es una de las dos fuentes de consentimientos del turnero; la otra es la estación destino.
### `medicos`
`list.php`, `save.php`, `delete.php`. El médico se asocia a la solicitud del turnero y sale impreso en los documentos.
## Pacientes
`lab_pacientes` es el más consultado de todos: lo usan el turnero, domicilios, registro de exámenes y el bot.
Campos que otros módulos dan por sentados:
| Campo | Quién lo usa |
|---|---|
| `numero_documento` | Búsqueda en todas las pantallas |
| `telefono` | Envío de consentimientos y encuestas |
| `nombre_completo`, `tipo_documento` | Encabezado de todos los documentos |
| `fecha_nacimiento` | Cálculo de edad en formularios |
| `eps` | Facturación |
Un teléfono mal cargado se manifiesta lejos de donde se originó: como un consentimiento que nunca llegó.
## Usuarios
Ver [Roles y permisos](?m=soporte&v=documentacion&s=arquitectura&d=roles-y-permisos) para el detalle del control de acceso.
Lo esencial al crear o editar un usuario:
- **`role` y `role_id` deben cambiarse juntos.** La interfaz lee uno, los permisos salen del otro.
- **Cargá la cédula.** Es lo que aparece bajo la firma en los formularios.
- El usuario debe **volver a iniciar sesión** para que un cambio de permisos surta efecto.
## Al agregar un catálogo nuevo
Si es un ABM simple, seguí el patrón de `medicos`: un `views/index.php` y tres endpoints (`list`, `save`, `delete`). Registralo en `SYSTEM_MODULES` y concedelo a los roles que corresponda, o nadie lo verá.