21 documentos en cuatro secciones, escritos sobre el comportamiento real del sistema —incluidos los casos que costaron diagnosticar esta semana. Manual de usuario (visible para todos): primeros pasos, recepción, toma de muestras, portal del enfermero y administración. Orientado a tareas concretas, no a describir pantallas. Documentación técnica: índice de módulos, turnero, formularios y firma digital, WhatsApp y bot, domicilios, webhook (migrado de WEBHOOK_ENDPOINTS.md) e inventario de endpoints. Arquitectura: visión general, enrutamiento y registro de módulos, roles y permisos, modelo de datos, integración con WhatsApp, y decisiones tomadas con su deuda técnica asociada. Operación: runbook de incidentes ordenado por síntoma, configuraciones críticas —incluido qué vive en Meta y no en la base— y despliegue. Se documentan explícitamente las trampas conocidas: role/role_id que hay que mantener sincronizados, las columnas can_* que el control de acceso no lee, las URL de plantilla que no se cambian desde el código, y las columnas históricas que quedaron en NULL sin forma de recuperarlas. README_DOCS.md apunta al módulo y explica cómo agregar páginas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
Endpoints
Inventario de los endpoints de todos los módulos, generado del filesystem en cada carga. La descripción sale del comentario de cabecera de cada archivo.
Convenciones
Los endpoints son archivos PHP sueltos que devuelven JSON. No pasan por el enrutador: se invocan por su ruta real.
modules/turnero/api/get_historial.php
api/lab/save_domicilio.php
Cada módulo tiene su api/_helpers.php con lo común. Los archivos que empiezan con guión bajo son internos y no se listan acá.
Helpers típicos
| Función | Qué hace |
|---|---|
db() |
Conexión PDO |
inputJson() |
Cuerpo de la petición como arreglo |
jsonOk($datos) |
Respuesta correcta |
jsonError($msg, $codigo) |
Error con código HTTP |
adminId() |
Id del usuario de la sesión |
requireMethod('POST') |
Corta si el método no coincide |
requireTurnero() |
Corta si no tiene acceso al turnero |
Reglas al agregar uno
- Verificá permisos en el propio endpoint. Que la vista haya ocultado el botón no protege nada.
- Resolvé la identidad en el servidor. Para saber quién hace una acción, usá
adminId(), no un valor que mande el navegador. - Consultas preparadas siempre.
- Dejá un comentario de cabecera describiendo qué hace y qué recibe: es lo que aparece en la tabla de abajo.
Inventario
{{endpoints}}
Endpoints fuera de módulos
api/lab/ agrupa los del laboratorio de la generación anterior — domicilios, pacientes, formularios, configuración. Siguen las mismas convenciones y usan api/lab/_helpers.php.