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:
co-authored by
Claude Opus 5
parent
81c007c516
commit
71c9dfd424
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* GET ?id=N — Detalle de un examen del catálogo con sus ítems.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireLogin();
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* GET ?exam_id=N — Tarifas de un examen por empresa o convenio.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireLogin();
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* GET ?q=&categoria=&page=&limit= — Catálogo de exámenes, paginado y filtrable.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireLogin();
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* POST — Crea o actualiza un examen del catálogo. Requiere administrador.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireAdmin();
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Método no permitido', 405);
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* POST — Crea o actualiza un ítem (analito) de un examen. Requiere administrador.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireAdmin();
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Método no permitido', 405);
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* POST — Crea o actualiza la tarifa de un examen. Requiere administrador.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireAdmin();
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Método no permitido', 405);
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* POST { id } — Elimina un médico del catálogo.
|
||||
*/
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* GET — Lista de médicos solicitantes.
|
||||
*/
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* POST — Crea o actualiza un médico del catálogo.
|
||||
*/
|
||||
require_once __DIR__ . '/../../../config/config.php';
|
||||
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
||||
|
||||
|
||||
@@ -34,6 +34,27 @@ Casi siempre es una de estas dos:
|
||||
| **Formularios** | Consentimientos y fichas; diseño y envíos |
|
||||
| **Soporte** | Esta documentación |
|
||||
|
||||
## El recorrido de un paciente
|
||||
|
||||
Desde que saca su turno hasta que se va:
|
||||
|
||||
```
|
||||
KIOSKO RECEPCIÓN TOMA DE MUESTRAS
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌──────┐ llama ┌──────┐ deriva ┌──────────────┐ ┌────────────┐
|
||||
│espera├──────────►│recep.├───────────►│ espera lugar ├──►│ en servicio│
|
||||
└──┬───┘ └──┬───┘ └──────────────┘ └──────┬─────┘
|
||||
│ │ │
|
||||
│ no responde │ ▼
|
||||
└──────────────────┴──────────► ausente ┌────────────────┐
|
||||
│ finalizado │
|
||||
cancelado └────────────────┘
|
||||
cuenta para facturar
|
||||
```
|
||||
|
||||
Un turno **nunca se borra**. Si el paciente no aparece se marca *ausente*; si no se hace, *cancelado*. Los dos quedan registrados, y ninguno cuenta como facturación.
|
||||
|
||||
## Cosas que conviene saber desde el principio
|
||||
|
||||
**Los turnos no se borran.** Se cancelan o se marcan como ausente, pero quedan registrados. Es a propósito: el historial tiene valor clínico y administrativo.
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
# Kiosko y pantallas de TV
|
||||
|
||||
Las dos pantallas que funcionan solas, sin nadie operándolas. Conviene entenderlas porque cuando fallan, el que se entera primero es quien está en recepción.
|
||||
|
||||
## El kiosko
|
||||
|
||||
El tótem de la entrada, donde el paciente saca su turno sin ayuda.
|
||||
|
||||
```
|
||||
PACIENTE LLEGA
|
||||
│
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ Elige tipo │ general, preferencial, embarazada,
|
||||
│ de turno │ solo entrega de muestras…
|
||||
└──────┬───────┘
|
||||
▼
|
||||
┌──────────────┐
|
||||
│Datos básicos │ nombre y celular (opcional)
|
||||
└──────┬───────┘
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ Imprime │──► el turno aparece en la pantalla de TV
|
||||
│ su turno │ y en la cola de recepción
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
Es una de las **dos únicas pantallas públicas** del sistema: no pide usuario ni contraseña, porque nadie va a iniciar sesión en el tótem de la entrada.
|
||||
|
||||
### Prioridades
|
||||
|
||||
El tipo de turno que elige el paciente define su lugar en la cola. Las prioridades las configura un administrador; quien atiende no necesita hacer nada: **Llamar siguiente** ya respeta el orden.
|
||||
|
||||
### Si el paciente deja su celular
|
||||
|
||||
Puede recibir por WhatsApp el aviso de su turno y los consentimientos para firmar desde el teléfono mientras espera. Vale la pena insistirle en que lo deje.
|
||||
|
||||
### Cuando el kiosko falla
|
||||
|
||||
Un turno siempre se puede crear a mano desde recepción. El kiosko es una comodidad, no un requisito — si está caído, la atención sigue.
|
||||
|
||||
## Pantalla de TV
|
||||
|
||||
La de la sala de espera. Muestra el turno que se está llamando y la cola, y reproduce contenido del laboratorio de fondo.
|
||||
|
||||
También es pública: se abre en el navegador del televisor y se deja andando.
|
||||
|
||||
### El contenido de fondo
|
||||
|
||||
Es una lista de videos e imágenes que se reproducen en bucle, uno detrás de otro:
|
||||
|
||||
```
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│ video 1 │──►│ imagen │──►│ video 2 │──►│ imagen │──┐
|
||||
│ hasta │ │ 8 seg │ │ hasta │ │ 10 seg │ │
|
||||
│ el final│ │ │ │ el final│ │ │ │
|
||||
└─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
||||
▲ │
|
||||
└──────────────────── vuelve a empezar ────────────┘
|
||||
```
|
||||
|
||||
Los videos van completos; a las imágenes se les fija cuántos segundos duran. Se administra desde **Configuración del turnero → Pantalla TV**: se suben, se reordenan arrastrando y se eliminan de a uno.
|
||||
|
||||
### Si la pantalla se queda pegada
|
||||
|
||||
Recargá la página en el televisor. Si el contenido no cambió, verificá que la lista tenga elementos activos en la configuración.
|
||||
|
||||
## Verificar paciente
|
||||
|
||||
Una consulta rápida por cédula para ver la ficha y el historial de alguien, sin abrir su turno. Útil cuando el paciente pregunta algo en el mostrador y no querés perder lo que estás haciendo.
|
||||
@@ -45,6 +45,22 @@ Se admite pago combinado — efectivo más tarjeta, por ejemplo.
|
||||
|
||||
### 5. Consentimientos
|
||||
|
||||
Quién firma qué, y dónde:
|
||||
|
||||
```
|
||||
RECEPCIÓN TOMA DE MUESTRAS
|
||||
┌─────────────────────┐ ┌──────────────────────┐
|
||||
│ Consentimiento │ │ Datos Toma de │
|
||||
│ pruebas de lab │ │ Muestras (F-LAB-08) │
|
||||
│ │ │ │
|
||||
│ firma: EL PACIENTE │ │ firma: EL PERSONAL │
|
||||
│ vía WhatsApp │ │ en la estación │
|
||||
└─────────────────────┘ └──────────────────────┘
|
||||
obligatorio obligatorio SIEMPRE
|
||||
salvo "solo entrega" (incluso solo entrega)
|
||||
```
|
||||
|
||||
|
||||
Los que hagan falta aparecen listados con su estado. Se envían al WhatsApp del paciente, que los firma desde el celular.
|
||||
|
||||
**No podés guardar la solicitud si quedan consentimientos sin firmar**, salvo que sea una visita de *solo entrega de muestras*.
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
roles: recepcionista, lab_recepcion, operador_bot, supervisor
|
||||
---
|
||||
|
||||
# Chat de WhatsApp
|
||||
|
||||
La línea de WhatsApp del laboratorio la atiende un bot, pero cuando hace falta una persona, la conversación pasa a un operador. Esta es esa pantalla.
|
||||
|
||||
## Cómo se reparte el trabajo
|
||||
|
||||
```
|
||||
MENSAJE DEL PACIENTE
|
||||
│
|
||||
▼
|
||||
┌─────────────┐ no ┌──────────────────────┐
|
||||
│ ¿Aceptó los ├────────►│ Le pide aceptar y │
|
||||
│ términos? │ │ no avanza hasta que │
|
||||
└──────┬──────┘ │ responda ACEPTO │
|
||||
│ sí └──────────────────────┘
|
||||
▼
|
||||
┌─────────────┐ sí ┌──────────────────────┐
|
||||
│ ¿La tomó un ├────────►│ El bot NO interviene │
|
||||
│ operador? │ │ Respondés vos │
|
||||
└──────┬──────┘ └──────────────────────┘
|
||||
│ no
|
||||
▼
|
||||
┌─────────────┐ fuera ┌──────────────────────┐
|
||||
│ ¿Está en ├────────►│ Responde con el │
|
||||
│ horario? │ │ mensaje de fuera de │
|
||||
└──────┬──────┘ │ horario │
|
||||
│ dentro └──────────────────────┘
|
||||
▼
|
||||
El bot responde
|
||||
```
|
||||
|
||||
Lo importante: **cuando tomás una conversación, el bot deja de responder ahí**. No hay riesgo de que le conteste encima al paciente mientras vos estás escribiendo.
|
||||
|
||||
## Atender una conversación
|
||||
|
||||
La lista muestra los hilos con mensajes recientes. Al abrir uno ves el historial completo y podés responder.
|
||||
|
||||
Si el paciente ya está registrado, se ve su ficha; si no, se puede crear desde ahí mismo.
|
||||
|
||||
## La ventana de 24 horas
|
||||
|
||||
Es una regla de WhatsApp, no del sistema:
|
||||
|
||||
> Podés escribir libremente durante **24 horas** desde el último mensaje del paciente. Pasado ese plazo, solo se le puede escribir con una **plantilla aprobada**.
|
||||
|
||||
Por eso a veces el sistema no te deja mandar un texto libre y ofrece plantillas. No es una falla: es la restricción de WhatsApp.
|
||||
|
||||
Las plantillas las crea y aprueba Meta. Si necesitás una nueva para un caso que se repite, pedila a un administrador — el trámite lleva días.
|
||||
|
||||
## Términos y condiciones
|
||||
|
||||
Todo contacto nuevo debe aceptar los términos antes de que el bot converse. Responde **ACEPTO** o **NO ACEPTO**.
|
||||
|
||||
Se le vuelven a pedir cuando pasan 6 meses o cuando se publica una versión nueva. Si un paciente dice que no puede abrir el documento de términos, avisá: puede ser que el enlace esté caído, y eso lo resuelve un administrador.
|
||||
|
||||
## Problemas frecuentes
|
||||
|
||||
**El paciente dice que escribió y nadie le respondió.**
|
||||
Revisá si la conversación quedó tomada por un operador que no siguió. En ese estado el bot no responde y queda esperando a una persona.
|
||||
|
||||
**No me deja enviar un mensaje.**
|
||||
Pasaron más de 24 horas desde el último mensaje del paciente. Usá una plantilla.
|
||||
|
||||
**El paciente no recibe los consentimientos.**
|
||||
Verificá el número en su ficha. Si está bien y aun así no llegan, es problema de plantilla — avisá a un administrador.
|
||||
@@ -28,6 +28,19 @@ Al rechazar hay que indicar el motivo. Ese motivo queda registrado y se ve despu
|
||||
|
||||
### Muestras de visitas anteriores
|
||||
|
||||
```
|
||||
VISITA 1 · lunes VISITA 2 · jueves
|
||||
┌────────────────────┐ ┌────────────────────┐
|
||||
│ Turno A-042 │ │ Turno B-017 │
|
||||
│ │ │ │
|
||||
│ Sangre recibida │ │ Orina recibida │
|
||||
│ Orina PENDIENTE ├───────────────►│ └ visita anterior│
|
||||
└────────────────────┘ reaparece └────────────────────┘
|
||||
finalizado sola │
|
||||
NO se modifica ◄─────────────────────────────
|
||||
quedan enlazados
|
||||
```
|
||||
|
||||
Si el paciente quedó debiendo una muestra otro día, te aparece con una etiqueta ámbar **visita anterior**, e incluye los exámenes de aquella orden para que sepas de qué se trataba.
|
||||
|
||||
Se reciben con un clic, igual que cualquier otra. Al hacerlo, los dos turnos quedan enlazados: desde el historial podés saltar de uno al otro.
|
||||
@@ -48,6 +61,22 @@ Lo firmás vos, no el paciente.
|
||||
|
||||
Para exámenes que requieren varias tomas en el tiempo: curvas de glicemia, prolactina, cortisol, test de Sullivan.
|
||||
|
||||
```
|
||||
Glicemia pre y post carga
|
||||
|
||||
min 0 min 30 min 60 min 120
|
||||
│ │ │ │
|
||||
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
|
||||
│ ✔ │ ────► │ ✔ │ ────► │ │ ... │ │
|
||||
└─────┘ 30min └─────┘ 30min └─────┘ └─────┘
|
||||
07:28 08:06 pendiente bloqueada
|
||||
M. Monterrosa Y. Parada ▲
|
||||
└ cuenta regresiva
|
||||
|
||||
Cada toma guarda SU hora y QUIÉN la firmó. Si cambia
|
||||
el turno del personal, cada firma conserva su nombre.
|
||||
```
|
||||
|
||||
Cómo funciona:
|
||||
|
||||
1. **Marcá el examen.** El formulario muestra solo las tomas de ese examen; si el paciente tiene dos exámenes seriados, muestra las de ambos.
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# Respaldos y recuperación
|
||||
|
||||
Qué hay que respaldar, y qué se pierde si no está.
|
||||
|
||||
## Las tres cosas a respaldar
|
||||
|
||||
```
|
||||
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
|
||||
│ BASE DE DATOS │ │ ARCHIVOS SUBIDOS │ │ CÓDIGO │
|
||||
│ │ │ │ │ │
|
||||
│ 91 tablas │ │ uploads/terms/ │ │ repositorio git │
|
||||
│ pacientes, turnos, │ │ uploads/turnero/ │ │ │
|
||||
│ formularios, │ │ │ │ ya respaldado por │
|
||||
│ firmas │ │ NO están en git │ │ estar en el remoto │
|
||||
└────────────────────┘ └────────────────────┘ └────────────────────┘
|
||||
crítico crítico cubierto
|
||||
```
|
||||
|
||||
El código está a salvo por estar versionado. Los otros dos **no tienen respaldo automático por el solo hecho de existir**.
|
||||
|
||||
## Base de datos
|
||||
|
||||
Es lo único irreemplazable. Contiene historia clínica, consentimientos firmados y facturación — información con valor legal y sin forma de reconstruirse.
|
||||
|
||||
```bash
|
||||
mysqldump -h <host> -u <usuario> -p <base> \
|
||||
--single-transaction --routines --triggers \
|
||||
| gzip > respaldo_$(date +%F).sql.gz
|
||||
```
|
||||
|
||||
`--single-transaction` evita bloquear las tablas mientras corre, así se puede hacer con el sistema en uso.
|
||||
|
||||
### Qué contiene lo crítico
|
||||
|
||||
| Tabla | Por qué importa |
|
||||
|---|---|
|
||||
| `lab_pacientes` | Fichas clínicas |
|
||||
| `turnero_consentimientos`, `lab_form_envios` | **Formularios firmados** — valor legal |
|
||||
| `turnero_turnos`, `turnero_solicitudes` | Historial de atención y facturación |
|
||||
| `terms_acceptance` | Aceptación de términos, ~5.000 registros |
|
||||
| `admin_users`, `roles`, `role_modules` | Acceso al sistema |
|
||||
|
||||
Las firmas se guardan como imagen **dentro** de las tablas, no como archivos sueltos. Un respaldo de la base las incluye.
|
||||
|
||||
## Archivos subidos
|
||||
|
||||
```
|
||||
uploads/terms/ documentos de términos y condiciones
|
||||
uploads/turnero/tv_media/ videos e imágenes de la pantalla de TV
|
||||
```
|
||||
|
||||
**No están en el repositorio.** Al mover el sistema de servidor hay que copiarlos aparte, o los enlaces quedan apuntando a archivos que ya no existen.
|
||||
|
||||
Es exactamente lo que pasó con el documento de términos cuando cambió el dominio: la base seguía apuntando a una URL que ya no respondía.
|
||||
|
||||
## Antes de un cambio riesgoso
|
||||
|
||||
Si vas a tocar datos en producción, respaldá **solo lo que vas a tocar**:
|
||||
|
||||
```bash
|
||||
mysqldump -h <host> -u <usuario> -p <base> role_modules admin_users \
|
||||
> antes_del_cambio.sql
|
||||
```
|
||||
|
||||
Es rápido y suele alcanzar. Un respaldo completo para cambiar una columna es desproporcionado; no tener ninguno es imprudente.
|
||||
|
||||
## Verificar que el respaldo sirve
|
||||
|
||||
Un respaldo que nunca se restauró no es un respaldo, es un archivo:
|
||||
|
||||
```bash
|
||||
gunzip -t respaldo_2026-08-03.sql.gz # ¿está íntegro?
|
||||
zcat respaldo_2026-08-03.sql.gz | head -40 # ¿tiene lo que esperás?
|
||||
```
|
||||
|
||||
Lo ideal es restaurarlo de vez en cuando en una base de prueba y comprobar que el sistema arranca contra ella.
|
||||
|
||||
## Qué NO es recuperable
|
||||
|
||||
Aunque tengas respaldos, hay datos que nunca se guardaron y no hay de dónde sacarlos:
|
||||
|
||||
| Dato | Desde cuándo existe |
|
||||
|---|---|
|
||||
| Quién creó cada consentimiento del turnero | 3 de agosto de 2026 |
|
||||
| Quién firmó cada toma de F-LAB-28 | 3 de agosto de 2026 |
|
||||
| Cédula del personal no enfermero | 3 de agosto de 2026 |
|
||||
|
||||
Los registros anteriores tienen esos campos vacíos, y **no hay traza de auditoría** que permita reconstruirlos. Vale como advertencia: cuando se agrega una columna para registrar quién hizo algo, lo anterior se pierde.
|
||||
@@ -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á.
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* GET ?q= — Busca diagnósticos CIE-10 por código o descripción.
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireMethod('GET');
|
||||
requireTurnero();
|
||||
|
||||
Reference in New Issue
Block a user