📋 Documentación del Sistema de Laboratorio
+Sistema Laboratorio Clínico — Módulos de Agendamiento y Formularios
+ +Módulo 1 — Agendamiento (Domicilios)
+Gestión de servicios de toma de muestras a domicilio
+¿Qué es?
+
+ El módulo de agendamiento gestiona los servicios de toma de muestras a domicilio.
+ Permite crear, asignar, seguir y completar visitas médicas domiciliarias.
+ Los administradores gestionan la agenda desde lab_domicilios.php;
+ los enfermeros gestionan su propia agenda desde enfermero_portal.php.
+
Archivos involucrados
+| Archivo | Descripción |
|---|---|
lab_domicilios.php | Vista principal del admin — tabla con filtros, detalle del domicilio, formularios recibidos, exportar CSV |
enfermero_portal.php | Portal exclusivo del enfermero — su agenda personal del día, ordenada por hora, con tarjetas colapsables |
lab_enfermeras.php | CRUD del personal de enfermería |
classes/lab/Domicilio.php | Clase ORM — crear, editar, cambiar estado, estadísticas |
classes/lab/Enfermera.php | Clase ORM — CRUD, agenda por enfermero, carga de trabajo |
classes/lab/Asignacion.php | Clase ORM — asignar / reasignar / liberar enfermero a domicilio |
api/lab/get_domicilios.php | GET — lista de domicilios con filtros y estadísticas del día |
api/lab/save_domicilio.php | POST — crear, actualizar o cambiar estado |
api/lab/update_domicilio_enfermero.php | POST — el enfermero avanza el estado desde su portal |
api/lab/my_agenda.php | GET — agenda del enfermero actualmente autenticado |
api/lab/save_asignacion.php | POST — asignar o reasignar enfermero |
api/lab/get_asignaciones.php | GET — asignaciones por fecha |
api/lab/registrar_pago.php | POST — registrar pago de un domicilio |
api/lab/save_servicio_extra.php | POST — agregar servicio realizado durante la visita |
api/lab/get_notas_domicilio.php | GET — notas clínicas y libres del domicilio |
api/lab/upload_nota_imagen.php | POST — subir imagen adjunta a una nota |
api/lab/crear_desde_whatsapp.php | GET/POST — crear paciente u orden desde una conversación de WhatsApp activa |
Base de datos
+ +Tabla lab_domicilios
+ Tabla principal. Cada fila es un servicio a domicilio.
+| Campo | Tipo | Descripción |
|---|---|---|
id | INT PK | Identificador único |
paciente_id | INT FK | Paciente al que se le realiza el servicio |
orden_id | INT FK NULL | Orden médica adjunta (opcional) |
direccion | TEXT | Dirección completa de la visita |
ciudad | VARCHAR(100) | Ciudad |
barrio | VARCHAR(100) | Barrio |
indicaciones_dir | TEXT | Referencias o indicaciones adicionales ("apto 302, tocar campanilla") |
fecha_programada | DATE | Fecha de la visita |
hora_programada | TIME | Hora de la visita |
tipo_servicio | VARCHAR(100) | Tipo de servicio (toma de muestra, etc.) |
tipo_cliente | ENUM | particular / seguro / eps |
examenes_solicitados | TEXT | Lista de exámenes (cuando no hay orden médica) |
seguro_nombre | VARCHAR | Nombre del seguro o EPS |
autorizacion | VARCHAR | Número de autorización |
valor_domicilio | DECIMAL | Valor del servicio nullable |
valor_copago | DECIMAL | Copago a cargo del cliente nullable |
copago_laboratorio | DECIMAL | Copago al laboratorio nullable |
pago_estado | ENUM | pendiente / pagado / exento |
pago_modo | ENUM | efectivo / transferencia / otro |
pago_monto | DECIMAL | Monto pagado |
pago_fecha | DATETIME | Fecha del pago |
pago_notas | TEXT | Notas sobre el pago |
estado | ENUM | Ver flujo de estados |
motivo_cancelacion | TEXT | Motivo si fue cancelado (obligatorio al cancelar) |
fecha_reprogramada | DATE | Nueva fecha si fue reprogramado |
hora_llegada | TIME | Registrada automáticamente al iniciar la visita |
hora_salida | TIME | Registrada automáticamente al completar |
observaciones | TEXT | Observaciones del resultado de la visita |
muestras_tomadas | TEXT | Lista de muestras obtenidas |
notas_admin | TEXT | Notas internas del equipo administrativo |
creado_por | INT FK | Usuario que creó el registro |
Tabla lab_enfermeras
+ Personal de enfermería disponible para asignación.
+| Campos | Descripción |
|---|---|
id, numero_documento | PK e identificador del empleado |
tipo_documento | CC / CE / TI / PA |
nombre_completo, telefono, telefono_alt | Datos de contacto |
email, zona, notas | Información adicional |
is_active | Soft-delete del registro |
Tabla lab_asignaciones
+ Asignación de enfermero a domicilio. Máximo un enfermero activo por domicilio (UNIQUE KEY en domicilio_id).
| Campo | Descripción |
|---|---|
id, domicilio_id, enfermera_id | PK y relaciones |
asignada_por | Usuario admin que realizó la asignación |
estado | asignada / confirmada / liberada / completada |
notas | Observaciones de la asignación |
Tabla lab_servicios_extra
+ Servicios realizados por el enfermero durante la visita, adicionales a la orden original.
+| Campo | Descripción |
|---|---|
tipo | inyeccion / cura / nebulizacion / toma_muestra / tension_arterial / glucometria / otro |
descripcion, notas | Detalle del servicio |
requiere_pago, valor | Si genera cobro adicional y su valor |
realizado_por | FK al enfermero que lo realizó |
Tabla lab_domicilio_notas
+ Notas registradas por el enfermero durante la visita. Dos tipos:
+| Campos | Descripción |
|---|---|
id, domicilio_id, enfermera_id | PK y relaciones |
tipo | clinica / libre |
antecedentes, medicamentos | Sección clínica |
acudiente_nombre, acudiente_documento | Datos del acudiente si el paciente es menor |
titulo, cuerpo, imagen_path | Sección de nota libre |
Roles y permisos
+🛡️ Admin
+-
+
- Crear, editar y ver todos los domicilios +
- Asignar / reasignar enfermeros +
- Registrar pagos +
- Exportar Excel +
- Ver informe completo con notas +
- Ver agenda de cualquier enfermero con
?eid=X
+
👩⚕️ Enfermero
+-
+
- Solo ve su propia agenda en
enfermero_portal.php
+ - Avanza el estado de sus domicilios asignados +
- Agrega servicios extra +
- Registra notas clínicas y libres +
- Visualiza órdenes médicas adjuntas +
enfermero,
+ lab_domicilios.php lo redirige inmediatamente a enfermero_portal.php.
+ Flujo de estados
+Notas automáticas según estado:
+| Evento | Acción automática |
|---|---|
Transición a en_domicilio | Se registra hora_llegada automáticamente |
Transición a completado | Se registra hora_salida automáticamente |
Transición a cancelado | Campo motivo_cancelacion obligatorio |
Transición a reprogramado | Campo fecha_reprogramada obligatorio |
Transiciones permitidas al enfermero (validadas en update_domicilio_enfermero.php):
| Estado actual | Estados posibles |
|---|---|
| programado | confirmado |
| confirmado | en_camino · cancelado |
| en_camino | en_domicilio · cancelado |
| en_domicilio | completado · cancelado |
Funcionalidades
+API Endpoints
+| Endpoint | Método | Descripción |
|---|---|---|
api/lab/get_domicilios.php | GET | Lista con filtros. ?id=X para uno solo con detalle completo. |
api/lab/save_domicilio.php | POST | Crear, editar o cambiar estado. Con solo_estado=true solo cambia el estado. |
api/lab/update_domicilio_enfermero.php | POST | El enfermero avanza el estado de su domicilio. |
api/lab/my_agenda.php | GET | Agenda del enfermero autenticado con servicios extra. |
api/lab/save_asignacion.php | POST | Asignar o reasignar enfermero a domicilio. |
api/lab/get_asignaciones.php | GET | Asignaciones por fecha. |
api/lab/registrar_pago.php | POST | Registrar pago con monto y modalidad. |
api/lab/save_servicio_extra.php | POST | Agregar servicio realizado durante la visita. |
api/lab/get_notas_domicilio.php | GET | Notas del domicilio (clínicas y libres). |
api/lab/upload_nota_imagen.php | POST | Subir imagen adjunta a una nota libre. |
api/lab/crear_desde_whatsapp.php | GET/POST | Crear paciente u orden desde una conversación de WhatsApp activa. |
Módulo 2 — Formularios
+Builder visual, envío por WhatsApp, firma digital y sello SHA-256
+¿Qué es?
++ El módulo de formularios permite crear plantillas de documentos + (consentimientos, historias clínicas, autorizaciones, encuestas) mediante un builder visual, + enviarlas a los pacientes por WhatsApp y recopilar sus respuestas con firma digital. + El documento firmado genera un sello de integridad SHA-256 que puede verificarse públicamente. +
+ + +Archivos involucrados
+| Archivo | Descripción |
|---|---|
lab_formularios.php | Vista principal — lista de plantillas y registro de envíos |
lab_formulario_builder.php | Editor visual drag & drop (ventana separada, solo admin) |
form_cliente.php | Página pública — el paciente llena y firma sin iniciar sesión |
ver_formulario_enviado.php | Vista del documento firmado — acceso por ID (admin/enfermero) o token (cliente) |
verificar_formulario.php | Verificación pública de autenticidad por hash SHA-256 |
classes/lab/Formulario.php | Clase ORM — CRUD de plantillas, crear envíos, guardar respuestas, generar hash |
api/lab/get_formularios.php | GET — lista plantillas o envíos |
api/lab/save_formulario.php | POST — crear, editar y eliminar plantillas (solo admin) |
api/lab/send_formulario.php | POST — crear instancia de envío, devolver URL pública y mensaje WhatsApp |
api/lab/submit_formulario.php | GET/POST — cargar el formulario por token / guardar la respuesta del cliente |
api/lab/firmar_profesional.php | POST — guardar firma del profesional (requiere sesión activa) |
Base de datos
+ +Tabla lab_formularios
+ Plantillas de documentos creadas desde el builder.
+| Campo | Tipo | Descripción |
|---|---|---|
id | INT PK | Identificador único |
nombre | VARCHAR(150) | Nombre de la plantilla |
descripcion | TEXT | Descripción visible al cliente |
categoria | ENUM | consentimiento / historia_clinica / autorizacion / encuesta / otro |
esquema | LONGTEXT | JSON con el array de campos del formulario |
permite_firma | TINYINT(1) | El formulario tiene sección de firma global |
requiere_firma | TINYINT(1) | La firma global es obligatoria |
firma_modos | VARCHAR(50) | canvas, foto o canvas,foto (separados por coma) |
version | SMALLINT | Se incrementa automáticamente al editar el esquema |
is_active | TINYINT(1) | Soft-delete |
creado_por | INT FK | Usuario que creó la plantilla |
doc_encabezado | VARCHAR | Override del nombre de empresa en el documento |
doc_subtitulo | VARCHAR | Override del subtítulo en el documento |
doc_logo_base64 | LONGTEXT | Override del logo en el documento |
doc_color | VARCHAR(20) | Override del color del encabezado del documento |
doc_pie_pagina | TEXT | Override del pie de página |
Tabla lab_form_envios
+ Cada fila es una instancia enviada a un paciente.
+| Campo | Tipo | Descripción |
|---|---|---|
id | INT PK | Identificador único |
formulario_id | INT FK | Plantilla enviada |
paciente_id | INT FK NULL | Paciente asociado |
domicilio_id | INT FK NULL | Domicilio asociado (opcional) |
token | CHAR(64) UNIQUE | Token público — 64 chars hex (acceso sin sesión) |
datos_prefilled | LONGTEXT | JSON con datos pre-llenados al enviar (incluye __paciente.*) |
datos_cliente | LONGTEXT | JSON con las respuestas completadas por el cliente |
firma_svg | LONGTEXT | Firma del paciente (PNG base64 — canvas o foto) |
ip_cliente | VARCHAR(45) | IP del cliente al enviar el formulario |
user_agent | VARCHAR(512) | Navegador del cliente |
estado | ENUM | pendiente / completado / firmado / expirado |
enviado_por | INT FK | Usuario que generó el enlace |
enviado_via | ENUM | whatsapp / email / link |
expira_en | DATETIME NULL | Siempre NULL — el enlace no expira |
completado_en | DATETIME | Fecha y hora en que el cliente completó el formulario |
hash_verificacion | CHAR(64) | Sello de integridad SHA-256 del documento |
Roles y permisos
+🛡️ Admin
+-
+
- Crear, editar y eliminar plantillas en el builder +
- Enviar formularios a cualquier paciente +
- Ver todos los envíos +
- Descargar PDF de cualquier formulario +
👩⚕️ Enfermero
+-
+
- Enviar formularios existentes a sus pacientes +
- Ver solo sus propios envíos (
enviado_por = su user_id)
+ - No puede crear ni editar plantillas +
- Puede firmar como profesional en formularios que él mismo envió +
🌐 Cliente (público)
+-
+
- Accede a
form_cliente.php?t=TOKENsin autenticación
+ - Llena y firma el formulario +
- Puede volver al mismo enlace para ver el documento firmado +
- Puede descargarlo como PDF +
Flujo completo
+-
+
-
+ + Admin crea la plantilla+
+ Abrelab_formulario_builder.php(ventana nueva), arrastra campos al canvas, + configura diseño del documento (logo, color, encabezado, pie de página) + y guarda → POSTapi/lab/save_formulario.php. +
+ -
+ + Admin o Enfermero envía el formulario+
+ Desdelab_formularios.php→ botón "Enviar" → selecciona paciente → + elige canal (WhatsApp o solo link) → POSTapi/lab/send_formulario.php. + Se genera un token de 64 chars (bin2hex(random_bytes(32))) + y se crea la fila enlab_form_enviosconestado = pendiente. +
+ -
+ + Cliente recibe el enlace+
+ Abreform_cliente.php?t=TOKEN→ GETapi/lab/submit_formulario.php?t=TOKEN+ carga los datos. Si ya fue firmado → muestra pantalla de solo lectura con link al PDF. +
+ -
+ + Cliente llena el formulario+
+ Campos "linked" llegan pre-llenados con datos del paciente (readonly si tienen valor, editables si están vacíos). + Los camposfirma_profesionalmuestran aviso "uso exclusivo del profesional". + El cliente dibuja su firma o adjunta una foto. +
+ -
+ + Cliente envía+
+ POSTapi/lab/submit_formulario.php→ se genera hash SHA-256 + (contenido + firma + ID + token + timestamp) → + estado cambia afirmado(con firma) ocompletado(sin firma). + Pantalla de éxito con hash visible y botón para descargar el PDF. +
+ -
+ + Profesional firma (si el formulario lo requiere)+
+ Admin/Enfermero abrever_formulario_enviado.php?id=Xcon sesión activa, + dibuja su firma en el canvas del campofirma_profesional+ → POSTapi/lab/firmar_profesional.php. +
+ -
+ + Admin/Enfermero revisa el resultado+
+lab_formularios.php→ pestaña "Envíos" → icono "Ver respuesta" → +ver_formulario_enviado.php?id=X— documento HTML imprimible. +
+ -
+ + Verificación pública de integridad+
+verificar_formulario.php?h=HASH_SHA256→ busca enhash_verificacion+ → muestra nombre del formulario, paciente, fecha, estado y si el sello es válido. +
+
Tipos de campos del Builder
+ +Campos de entrada
+| Tipo | Descripción |
|---|---|
texto | Campo de texto corto de una sola línea |
textarea | Área de texto largo (varias líneas) |
numero | Campo numérico |
fecha | Selector de fecha |
hora | Selector de hora |
select | Lista desplegable con opciones configurables |
radio | Selección única con opciones configurables |
checkbox | Selección múltiple con opciones configurables |
lista_marcable | Lista de ítems numerados con checkboxes |
Campos de firma
+| Tipo | Descripción |
|---|---|
firma | Firma del paciente — visible y editable en form_cliente.php |
firma_profesional | Firma del profesional — bloqueada para el cliente; solo editable desde el panel admin/enfermero |
Campos de contenido
+| Tipo | Descripción |
|---|---|
separador | Separador visual o título de sección |
parrafo | Bloque de texto estático (pre-formatado o flujo libre) |
parrafo_inline | Párrafo con marcadores {nombre_completo}, {telefono}, etc. que se convierten en espacios editables si el valor está vacío |
Campos vinculados al paciente (tipo: linked)
+ Se auto-rellenan con los datos del paciente al momento de enviar. Si el valor existe → campo de solo lectura. Si está vacío → el cliente puede completarlo.
+linked_key | Dato que extrae |
|---|---|
nombre_completo | Nombre completo del paciente |
numero_documento | Número de documento |
tipo_documento | Tipo de documento |
fecha_nacimiento | Fecha de nacimiento |
telefono | Teléfono |
email | Correo electrónico |
eps | EPS o aseguradora |
direccion | Dirección |
Firma digital
+| Modo | Funcionamiento |
|---|---|
| canvas | +El cliente dibuja su firma con el dedo o el mouse. Se captura con canvas.toDataURL('image/png'). |
+
| foto | +El cliente sube una imagen desde su cámara o galería (<input accept="image/*" capture="environment">). Se convierte a base64 con FileReader. |
+
firma_modos = "canvas,foto".
+
+ Firma global vs. firma por campo:
+ Si el esquema no incluye campos tipo firma, se muestra una sección de firma global al pie del formulario.
+ Si el esquema incluye campos firma, cada uno tiene su propio widget canvas en la posición configurada.
+
Enlace público y vigencia
+form_cliente.php?t=TOKENbin2hex(random_bytes(32))expira_en siempre es NULLPDF y visualización del documento
+ver_formulario_enviado.php
+ con estilos @media print. El usuario imprime o guarda como PDF directamente desde el navegador.
+ Contenido del documento impreso:
+-
+
- Encabezado con logo, nombre, subtítulo, datos de contacto y color corporativo +
- Datos del paciente (nombre, documento, fecha de nacimiento, teléfono, EPS) +
- Respuestas del formulario campo por campo en el orden del esquema +
- Imagen de la firma del paciente +
- Firma del profesional (si fue completada) +
- Sello SHA-256 con link para verificar autenticidad +
- Pie de página con fecha de generación e ID del documento +
Formas de acceder al documento:
+| URL | Quién puede acceder |
|---|---|
ver_formulario_enviado.php?id=X | Admin (cualquier formulario) o Enfermero (solo los que él envió). Requiere sesión. |
ver_formulario_enviado.php?t=TOKEN | Cliente u cualquier persona con el enlace. Sin sesión. Solo si el estado es firmado o completado. |
Sello de integridad SHA-256
+Al guardar la respuesta del cliente, el sistema genera un hash SHA-256 que vincula de forma única el contenido del formulario con la firma y el momento en que se completó.
+Construcción del hash (en Formulario::guardarRespuesta()):
SHA-256 de:
+ JSON de los datos del cliente
+ + firma SVG/PNG del paciente
+ + ID interno del envío
+ + token del enlace
+ + timestamp del momento de registro
+ verificar_formulario.php?h=HASH para confirmar que el documento existe,
+ el nombre del formulario y del paciente, la fecha en que fue completado y el estado actual.
+ Si el documento fue alterado, el hash no coincidirá y la verificación fallará.
+ Firma del profesional
+-
+
-
+ Al diseñar la plantilla en el builder se agrega un campo+
tipo: firma_profesionalen la posición deseada.
+ -
+ Cuando el cliente llena el formulario, ese campo muestra solo un aviso: "Uso exclusivo del profesional de salud". El cliente no puede interactuar con él.+
+
-
+ Una vez que el cliente ha completado y enviado, el admin o enfermero abre+
ver_formulario_enviado.php?id=Xcon sesión activa y verá el canvas de firma en esa posición.
+ -
+ El profesional dibuja su firma y hace clic en "Guardar firma" → POST+
api/lab/firmar_profesional.php.
+
Validaciones en el servidor:
+-
+
- Requiere sesión activa (
isUserLoggedIn())
+ - Si el usuario es enfermero, solo puede firmar en formularios que él mismo envió +
- Valida que el
campo_idcorresponde a un campotipo: firma_profesionalen el esquema
+ - Valida que la imagen enviada sea un data URI de imagen válido (prevención XSS/inyección) +
?t=TOKEN (cliente público), el canvas no aparece.
+ En su lugar se muestra un aviso "Pendiente de firma del profesional"
+ (solo visible en pantalla, no en el PDF impreso).
+ API Endpoints
+| Endpoint | Método | Autenticación | Descripción |
|---|---|---|---|
api/lab/get_formularios.php | GET | Sesión | Lista plantillas. ?id=X para una sola. ?envios=1 para lista de envíos. |
api/lab/save_formulario.php | POST | Admin | Crear, editar o eliminar una plantilla. |
api/lab/send_formulario.php | POST | Sesión | Crear instancia de envío. Devuelve URL pública y mensaje para WhatsApp. |
api/lab/submit_formulario.php | GET | Público | Cargar el formulario por token (sin sesión). |
api/lab/submit_formulario.php | POST | Público | Guardar la respuesta y firma del cliente. |
api/lab/firmar_profesional.php | POST | Sesión | Guardar la firma del profesional en un campo firma_profesional. |
+ Documentación generada para uso interno del equipo · 30/03/2026 +
+ + + + +Manual de Uso — Administrador · Domicilios
+🛡️ Admin Gestión completa desde lab_domicilios.php
Crear un nuevo domicilio
+Abrir el formulario
+Haz clic en el botón + Nuevo Domicilio ubicado en la esquina superior derecha de la pantalla. Se abrirá un modal con el formulario de creación.
+Buscar y seleccionar el paciente
+En el campo Paciente, empieza a escribir el nombre o documento del paciente. Aparecerá un listado de sugerencias; haz clic en el paciente correcto para seleccionarlo.
+lab_pacientes.php.Llenar los datos del servicio
+Completa los campos requeridos (*):
+-
+
- Dirección completa — incluye barrio e indicaciones adicionales si aplica +
- Fecha programada — se pre-llena con la fecha del filtro activo +
- Tipo de servicio — ej: "toma de muestras", "inyección" +
- Tipo de cliente — si estás en Seguro / EPS, aparecerá el campo del nombre del seguro +
- Valores de cobro — valor domicilio y/o copago (dejar vacío si no aplica) +
Adjuntar orden médica (opcional)
+Si tienes una imagen o PDF con la orden del médico, haz clic en 📎 Adjuntar orden. Se acepta JPG, PNG, PDF y DOC hasta 10 MB.
+Guardar
+Haz clic en 💾 Guardar. El domicilio aparecerá en la tabla con estado programado.
+Asignar un enfermero
+Seleccionar el domicilio
+Haz clic en la fila del domicilio en la tabla. Se abrirá el panel de detalle a la derecha. Si el domicilio no tiene enfermero, verás un aviso en naranja: "Sin enfermero asignado".
+Abrir el modal de asignación
+Haz clic en 👤 Asignar (o Reasignar si ya tiene uno). Se abrirá un modal con la lista del personal disponible.
+Seleccionar y confirmar
+En el desplegable elige el enfermero. Verás cuántos domicilios tiene asignados hoy y su usuario de acceso al portal. Haz clic en ✔ Confirmar asignación.
+Cambiar el estado de un domicilio
+Los botones de avance de estado aparecen en el panel de detalle del domicilio seleccionado:
+Seleccionar el domicilio y hacer clic en el botón de estado
+En el panel de detalle aparecerán uno o dos botones según el estado actual. Haz clic en el que corresponda y confirma en el diálogo que aparece.
+Registrar un pago
+Domicilio con valores de cobro
+En el panel de detalle, si el domicilio tiene Valor domicilio o Copago asignados, verás la sección de cobro con un badge ⏳ Pago pendiente.
+Abrir el registro de pago
+Haz clic en el botón 💳 Registrar pago dentro del bloque de cobro.
+Completar los datos del pago
+Selecciona la modalidad (💵 Efectivo / 📲 Transferencia / 📋 Otro), ingresa el monto recibido y agrega notas si es necesario. Haz clic en Confirmar pago.
+Filtros y exportar a Excel
+| Control | Descripción |
|---|---|
| 📅 Fecha | Filtra los domicilios por fecha programada. Se carga con la fecha actual al abrir la pantalla. |
| Estado | Filtra por estado del domicilio. Deja en blanco para ver todos. |
| Enfermero | Filtra solo los domicilios asignados a ese enfermero. |
| 📅 Hoy | Restablece el filtro de fecha a la fecha de hoy. |
| 📁 Excel | Exporta todos los domicilios que coincidan con los filtros activos, incluyendo notas del enfermero. |
Manual de Uso — Enfermero · Portal
+👩⚕️ Enfermero Gestión de agenda personal desde enfermero_portal.php
Acceder al portal
+Iniciar sesión
+Ve a login.php e ingresa con el usuario y contraseña que el administrador te asignó. El sistema te redirigirá automáticamente a enfermero_portal.php.
Ver tu agenda del día
+Encontrarás dos bloques: Activos (domicilios pendientes de hoy) y Finalizados (completados o cancelados). Cada domicilio aparece como una tarjeta colapsable ordenada por hora.
+Avanzar el estado de un domicilio
+Expandir la tarjeta
+Haz clic en la tarjeta del domicilio para expandirla y ver el detalle completo: paciente, dirección, hora, orden médica adjunta y botones de acción.
+Usar el botón de estado correspondiente
+| Estado actual | Botón disponible | ¿Qué ocurre? |
|---|---|---|
| programado | ✔ Confirmar | Confirmas que realizarás la visita |
| confirmado | 🚗 En camino | Indicas que saliste hacia el domicilio |
| en_camino | 🏠 En domicilio | Indicas que llegaste — se registra la hora de llegada automáticamente |
| en_domicilio | ✅ Completar | Finalizas la visita — se registra la hora de salida automáticamente |
Registrar notas clínicas y libres
+Ficha clínica del paciente
+Dentro de la tarjeta del domicilio, busca la sección Ficha clínica. Puedes registrar:
+-
+
- Antecedentes — patologías previas del paciente +
- Medicamentos — medicamentos que toma actualmente +
- Acudiente — nombre y documento del acudiente si el paciente es menor de edad +
Nota libre
+Haz clic en + Agregar nota. Puedes escribir un título, el cuerpo de la nota y adjuntar una imagen (por ejemplo, una foto del estado del paciente o de las muestras tomadas).
+Agregar servicios extra
+¿Cuándo usar esto?
+Si durante la visita realizas servicios adicionales a los de la orden original (ej: una inyección, una curación, toma de tensión arterial), puedes registrarlos para que queden en el historial.
+Agregar el servicio
+En la tarjeta del domicilio, haz clic en + Servicio extra. Selecciona el tipo, agrega una descripción y, si genera cobro adicional, marca la opción Requiere pago e ingresa el valor.
+| Tipo disponible | Descripción |
|---|---|
inyeccion | Administración de medicamento inyectable |
cura | Curación de herida o procedimiento de limpieza |
nebulizacion | Terapia de nebulización |
toma_muestra | Toma de muestra adicional |
tension_arterial | Medición de tensión arterial |
glucometria | Medición de glucosa en sangre |
otro | Cualquier otro procedimiento (especificar en descripción) |
Manual de Uso — Administrador · Formularios
+🛡️ Admin 👩⚕️ Enfermero (envío) Desde lab_formularios.php
Crear una plantilla de formulario
+Ir al builder
+Desde lab_formularios.php, haz clic en + Nueva plantilla. Se abrirá el editor lab_formulario_builder.php en una ventana nueva.
Configurar el encabezado del documento
+En el panel derecho del builder puedes personalizar: nombre de la empresa, subtítulo, logo (imagen base64), color del encabezado y pie de página. Estos datos aparecerán en el PDF imprimible.
+Agregar campos al formulario
+Arrastra campos del panel izquierdo al canvas central. Tipos disponibles:
+Configurar la firma
+En la sección Firma del builder puedes activar los modos permitidos: ✍️ Canvas (dibujo) y/o 📷 Foto. Si la firma es obligatoria, marca Requerida.
+Guardar la plantilla
+Haz clic en 💾 Guardar. La plantilla quedará disponible en lab_formularios.php para ser enviada a pacientes.
Enviar un formulario a un paciente
+Seleccionar la plantilla y hacer clic en Enviar
+En lab_formularios.php busca la plantilla que deseas enviar y haz clic en el botón 📤 Enviar. Se abrirá un modal.
Buscar y seleccionar el paciente
+Empieza a escribir el nombre o documento del paciente. Al seleccionarlo, verás una vista previa de los campos que se pre-llenarán automáticamente con sus datos.
+Elegir el canal de envío
+Selecciona cómo compartirás el enlace:
+-
+
- WhatsApp — genera un mensaje pre-redactado con el enlace listo para enviar desde en la conversación del paciente +
- Solo link — copia el enlace y compártelo como prefieras +
Confirmar el envío
+Haz clic en Generar enlace. Se creará un token único para ese paciente. El enlace generado no tiene fecha de vencimiento y es de un solo uso (no permite modificar la respuesta una vez enviada).
+Revisar las respuestas de un formulario
+Ir a la pestaña de envíos
+En lab_formularios.php, haz clic en la pestaña 📋 Envíos. Verás el historial de todos los formularios enviados con su estado actual.
Ver la respuesta del paciente
+En formularios con estado completado o firmado, aparecerá el botón 👁 Ver. Este abrirá un modal con todas las respuestas campo por campo y la imagen de la firma.
+Descargar el PDF
+Haz clic en el ícono 🖨️ junto al botón Ver, o en el botón Ver / Imprimir PDF dentro del modal. Esto abre ver_formulario_enviado.php con el documento completo listo para imprimir o guardar como PDF.
Firmar como profesional
+Abrir el formulario completado
+Ve a ver_formulario_enviado.php?id=X con tu sesión activa (admin o el enfermero que lo envió). Verás el documento con el canvas de firma del profesional en la posición configurada.
Dibujar la firma y guardar
+Dibuja tu firma en el canvas usando el mouse o la pantalla táctil. Haz clic en 💾 Guardar firma. La firma quedará vinculada al documento de forma permanente.
+Verificar la autenticidad de un documento
+Obtener el hash SHA-256 del documento
+Al pie del documento en ver_formulario_enviado.php encontrarás el sello de integridad — una cadena hexadecimal de 64 caracteres. Este hash identifica únicamente este documento.
Ir al verificador público
+Accede a verificar_formulario.php?h=HASH_AQUI o comparte ese enlace con la persona que necesita verificar la autenticidad. El sistema mostrará:
-
+
- Nombre del formulario y del paciente +
- Fecha en que fue completado +
- Estado actual del documento +
- Confirmación de que el sello es válido ✅ o inválido ❌ +
+ Manual de uso — Sistema de Laboratorio · 30/03/2026 +
+ +