Files
whatsapp/modules/soporte/docs/tecnica/50-domicilios.md
Lizandro GuarnizoandClaude Opus 5 32c209710c Documentación completa del proyecto en el módulo Soporte
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>
2026-08-04 10:14:32 -05:00

2.3 KiB
Raw Permalink Blame History

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:

// 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 enfermerodomicilio
api/lab/*.php Endpoints

Datos

lab_domicilios
  ├── lab_asignaciones       qué enfermero atiende
  ├── lab_domicilio_notas    seguimiento, admite adjuntos
  └── lab_domicilio_pagos    cobros

Estados: programadoen_cursocompletado, o cancelado.

Permisos

Se combinan dos niveles.

Nivel módulohasModuleWrite('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):

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=<id>, ú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.

Cuando el enfermero firma, su nombre y cédula salen de lab_enfermeras a través de admin_users.enfermera_id.