# 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á.
