# Domicilios Visitas domiciliarias: agendamiento, asignación de enfermeros y seguimiento. ## Dónde está el código Es de la generación anterior. El módulo es un puente: ```php // modules/lab_domicilios/views/index.php require_once APP_ROOT . '/lab_domicilios.php'; ``` | Archivo | Rol | |---|---| | `lab_domicilios.php` | Pantalla administrativa | | `enfermero_portal.php` | Portal del enfermero, pensado para celular | | `classes/lab/Domicilio.php` | Reglas de negocio | | `classes/lab/Asignacion.php` | Vínculo enfermero–domicilio | | `api/lab/*.php` | Endpoints | ## Datos ``` lab_domicilios ├── lab_asignaciones qué enfermero atiende ├── lab_domicilio_notas seguimiento, admite adjuntos └── lab_domicilio_pagos cobros ``` Estados: `programado` → `en_curso` → `completado`, o `cancelado`. ## Permisos Se combinan dos niveles. **Nivel módulo** — `hasModuleWrite('lab_domicilios')` decide si aparecen los botones de crear y editar. Un rol con `permission = 'read'` ve la pantalla sin poder modificar. **Nivel registro** — un enfermero solo puede editar domicilios **que creó o que tiene asignados**. Se verifica en el servidor (`api/lab/save_domicilio.php`): ```sql SELECT d.creado_por, (SELECT COUNT(*) FROM lab_asignaciones a WHERE a.domicilio_id = d.id AND a.enfermera_id = ?) AS asignado FROM lab_domicilios d WHERE d.id = ? ``` > No alcanza con ocultar el botón en la vista: el endpoint verifica por su cuenta. Cualquier endpoint que modifique datos debe hacer lo mismo. ## Portal del enfermero `enfermero_portal.php` admite `admin`, `superadmin` y `enfermero`. Los administradores pueden ver el portal de un enfermero concreto pasando `?eid=`, útil para dar soporte. Incluye: - Agenda propia con creación y edición - Notas de ficha y notas libres, con fotos y archivos - Envío de formularios al paciente, o copia del enlace - Enlace a WhatsApp con el mensaje ya redactado, presentando al profesional como parte del Laboratorio Ximena Caicedo ## Formularios Los domicilios usan la vía `lab_form_envios` (token de 64 hex, parámetro `?t=`), a diferencia del turnero que usa UUID. Ver [Formularios](?m=soporte&v=documentacion&s=tecnica&d=formularios). Cuando el enfermero firma, su nombre y cédula salen de `lab_enfermeras` a través de `admin_users.enfermera_id`.