From 9c2ef19510cb31853434fbc0e315be70be650f47 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 4 Aug 2026 11:35:38 -0500 Subject: [PATCH] =?UTF-8?q?Documentaci=C3=B3n:=20=C3=B3rdenes=20m=C3=A9dic?= =?UTF-8?q?as,=20formularios=20y=20reportes;=20cobertura=20por=20rol=20com?= =?UTF-8?q?pleta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al cruzar los roles con sus módulos aparecieron manuales que faltaban: había roles con acceso a pantallas que ninguna página explicaba. lab_readonly tenía órdenes médicas, formularios_readonly tenía el diseñador de formularios y supervisor tenía reportes, y ninguno de los tres estaba documentado. Manual: órdenes médicas (flujo de revisión y autorización, con el ayuno señalado como el dato de mayor consecuencia si se transcribe mal), formularios (tipos de campo, secciones condicionales, quién firma qué) y reportes (la diferencia entre el dashboard del turnero y el módulo de reportes, que miran cosas distintas y no son comparables). Técnica: órdenes médicas con sus estados y trazabilidad, reportes, configuración del laboratorio y dashboard — los cuatro módulos de la generación anterior que quedaban sin página. Ahora cada rol ve solo sus páginas: readonly ve 2, los roles operativos entre 3 y 5, supervisor 10 y los administradores las 30. Co-Authored-By: Claude Opus 5 --- .../soporte/docs/manual/10-primeros-pasos.md | 5 ++ .../soporte/docs/manual/35-ordenes-medicas.md | 63 ++++++++++++++++ modules/soporte/docs/manual/45-formularios.md | 71 +++++++++++++++++++ modules/soporte/docs/manual/55-reportes.md | 70 ++++++++++++++++++ .../docs/tecnica/60-ordenes-y-reportes.md | 61 ++++++++++++++++ 5 files changed, 270 insertions(+) create mode 100644 modules/soporte/docs/manual/35-ordenes-medicas.md create mode 100644 modules/soporte/docs/manual/45-formularios.md create mode 100644 modules/soporte/docs/manual/55-reportes.md create mode 100644 modules/soporte/docs/tecnica/60-ordenes-y-reportes.md diff --git a/modules/soporte/docs/manual/10-primeros-pasos.md b/modules/soporte/docs/manual/10-primeros-pasos.md index 8309925..ab21e14 100644 --- a/modules/soporte/docs/manual/10-primeros-pasos.md +++ b/modules/soporte/docs/manual/10-primeros-pasos.md @@ -67,7 +67,12 @@ Un turno **nunca se borra**. Si el paciente no aparece se marca *ausente*; si no ## Manual según su rol +- [Kiosko y pantallas](?m=soporte&v=documentacion&s=manual&d=kiosko-y-pantallas) - [Recepción](?m=soporte&v=documentacion&s=manual&d=recepcion) +- [Chat de WhatsApp](?m=soporte&v=documentacion&s=manual&d=chat-whatsapp) +- [Órdenes médicas](?m=soporte&v=documentacion&s=manual&d=ordenes-medicas) +- [Formularios](?m=soporte&v=documentacion&s=manual&d=formularios) +- [Reportes y métricas](?m=soporte&v=documentacion&s=manual&d=reportes) - [Toma de muestras](?m=soporte&v=documentacion&s=manual&d=toma-de-muestras) - [Enfermeros — domicilios](?m=soporte&v=documentacion&s=manual&d=enfermeros) - [Administración](?m=soporte&v=documentacion&s=manual&d=administracion) diff --git a/modules/soporte/docs/manual/35-ordenes-medicas.md b/modules/soporte/docs/manual/35-ordenes-medicas.md new file mode 100644 index 0000000..1b108cb --- /dev/null +++ b/modules/soporte/docs/manual/35-ordenes-medicas.md @@ -0,0 +1,63 @@ +--- +roles: lab_readonly, recepcionista, lab_recepcion, supervisor +--- + +# Órdenes médicas + +Las órdenes que el paciente envía por WhatsApp, casi siempre como foto de la orden en papel. Acá se revisan y se autorizan. + +## El recorrido + +``` + PACIENTE USTED RESULTADO + │ │ │ + ▼ ▼ ▼ + ┌─────────┐ ┌───────────────┐ ┌────────────────┐ + │ envía │───────────►│ PENDIENTE │───────────►│ AUTORIZADA │ + │ la foto │ │ la revisa │ │ puede atenderse│ + └─────────┘ └───────┬───────┘ └────────────────┘ + │ + └──────────────────► ┌────────────────┐ + │ RECHAZADA │ + │ con comentario│ + └────────────────┘ +``` + +Toda orden llega como **pendiente**. Queda registrado quién la revisó, quién la autorizó y cuándo. + +## Revisar una orden + +Al abrirla ve la imagen que envió el paciente y los campos para transcribir lo que dice: + +| Dato | Por qué importa | +|---|---| +| Médico y registro | Identifica quién la solicitó | +| Fecha de la orden | Una orden vieja puede estar vencida | +| Diagnóstico | Va en los reportes y en la facturación | +| Exámenes solicitados | Define qué se le va a hacer | +| **Requiere ayuno** y horas | Determina qué se le indica al paciente antes de venir | +| Indicaciones | Cualquier preparación adicional | + +> El ayuno es el dato que más consecuencias tiene si se transcribe mal: un paciente que viene sin ayunar cuando debía obliga a repetir la visita. + +## Autorizar o rechazar + +- **Autorizar** — la orden queda lista y el paciente puede ser atendido. +- **Rechazar** — hay que dejar un comentario explicando por qué. Ese comentario es lo que permite entender después qué pasó. + +Motivos frecuentes de rechazo: foto ilegible, orden vencida, faltan datos del médico, o los exámenes no corresponden a los que presta el laboratorio. + +## Si solo tiene permiso de lectura + +Algunos roles ven las órdenes sin poder modificarlas. En ese caso no aparecen los botones de autorizar ni rechazar: puede consultarlas e informarse, pero la decisión la toma otra persona. + +## Preguntas frecuentes + +**La foto llegó ilegible.** +Rechace la orden indicándolo en el comentario, para que se le pueda pedir al paciente que la envíe de nuevo. + +**El paciente dice que envió la orden y no aparece.** +Verifique en el chat de WhatsApp que el mensaje haya llegado. Si llegó pero no se registró como orden, avise a un administrador. + +**Me equivoqué al transcribir un dato.** +Mientras la orden no esté autorizada se puede corregir. Si ya lo está, pídale a un administrador que la reabra. diff --git a/modules/soporte/docs/manual/45-formularios.md b/modules/soporte/docs/manual/45-formularios.md new file mode 100644 index 0000000..a40b436 --- /dev/null +++ b/modules/soporte/docs/manual/45-formularios.md @@ -0,0 +1,71 @@ +--- +roles: formularios_readonly, supervisor +--- + +# Formularios + +Los consentimientos y fichas clínicas que firman pacientes y personal. Acá se diseñan, se consultan y se revisan los que ya se firmaron. + +## Cómo está armado un formulario + +Un formulario es una lista de campos en orden. El diseñador permite armarlo sin escribir nada técnico: se agregan campos, se les pone nombre y se ordenan. + +| Tipo de campo | Para qué sirve | +|---|---| +| **Separador** | Divide el formulario en secciones | +| **Párrafo** | Texto fijo — es lo que se usa para el articulado legal de un consentimiento | +| **Texto**, **Área de texto**, **Número** | Respuestas escritas | +| **Fecha**, **Hora** | Fechas y horas | +| **Opción única**, **Casillas**, **Lista** | Respuestas para elegir | +| **Vinculado** | Se llena solo con un dato del paciente (nombre, documento, EPS) | +| **Firma del paciente** | La dibuja el paciente | +| **Firma del profesional** | La dibuja quien atiende | + +> Los campos **vinculados** evitan que alguien escriba mal un nombre o un documento: los toma de la ficha del paciente. + +## Secciones que aparecen solo a veces + +Una sección puede depender de una respuesta anterior. Por ejemplo, los datos obstétricos solo aparecen si el sexo registrado es femenino; las tomas de insulina, solo si se marcó ese examen. + +Se configura eligiendo de qué campo depende la sección y con qué respuestas debe mostrarse. Si la condición no se cumple, ni la sección ni sus campos aparecen. + +## Quién firma qué + +``` + ┌───────────────────────┐ ┌───────────────────────┐ + │ FIRMA DEL PACIENTE │ │ FIRMA DEL PROFESIONAL │ + │ │ │ │ + │ la dibuja el paciente │ │ la dibuja quien atiende│ + │ desde su celular │ │ en el equipo del lab │ + │ │ │ │ + │ llega por WhatsApp │ │ queda con nombre │ + │ │ │ y cédula │ + └───────────────────────┘ └───────────────────────┘ +``` + +La firma del profesional **siempre** queda identificada con nombre y cédula. No es opcional. + +## Formularios con varias firmas + +Algunos formularios se firman por partes a lo largo de horas — el de tomas prolongadas es el caso típico. Cada firma se guarda por separado, con su hora y el nombre de quien la hizo, de modo que si cambia el turno del personal cada toma conserva el nombre correcto. + +## Consultar formularios firmados + +Se puede ver el documento tal como quedó, con las respuestas y las firmas. Los formularios firmados **no se modifican**: son un registro con valor legal. + +Si un formulario tiene un error, se emite uno nuevo; no se corrige el anterior. + +## Si solo tiene permiso de lectura + +Puede consultar los formularios y los documentos firmados, pero no crear ni modificar plantillas. Es el permiso habitual para quien audita o revisa documentación. + +## Preguntas frecuentes + +**Cambié un formulario. ¿Se modifican los ya firmados?** +No. Los firmados conservan la versión con la que se firmaron. El cambio aplica de ahí en adelante. + +**Un documento firmado muestra secciones que no correspondían.** +Avise a soporte con el número de turno. Debería mostrar únicamente las secciones del examen del paciente. + +**No aparece el nombre de quien firmó.** +Los documentos anteriores a agosto de 2026 no guardaban ese dato y no se puede recuperar. Los posteriores sí lo registran. diff --git a/modules/soporte/docs/manual/55-reportes.md b/modules/soporte/docs/manual/55-reportes.md new file mode 100644 index 0000000..3d0e8a3 --- /dev/null +++ b/modules/soporte/docs/manual/55-reportes.md @@ -0,0 +1,70 @@ +--- +roles: supervisor +--- + +# Reportes y métricas + +Dónde mirar cada cosa. Hay **dos lugares distintos** y conviene no confundirlos. + +``` + ┌──────────────────────────┐ ┌──────────────────────────┐ + │ DASHBOARD DEL TURNERO │ │ REPORTES │ + │ │ │ │ + │ la operación de HOY │ │ el laboratorio en │ + │ │ │ general y los domicilios │ + │ • facturación del día │ │ │ + │ • tiempos de atención │ │ • ingresos y pagos │ + │ • turnos en espera │ │ • rendimiento │ + │ • asistente LIA │ │ • traslado de enfermeros │ + └──────────────────────────┘ └──────────────────────────┘ +``` + +## Facturación del día + +En el dashboard del turnero, tres cifras separadas: + +| Cifra | Qué incluye | +|---|---| +| **Facturado** | Turnos finalizados — plata efectivamente cobrada | +| **En proceso** | Turnos aún activos, ya cobrados pero sin cerrar | +| **Total estimado** | La suma de ambos | + +Lo importante de entender: **los ausentes y cancelados no se cuentan en ninguna**. No se van a cobrar, así que sumarlos daría una cifra falsa. + +La gráfica por hora usa la misma separación: azul lo finalizado, ámbar lo que sigue en curso. + +## Tiempos de atención + +El dashboard muestra promedios de espera, recepción y servicio, y los desglosa por persona. + +En el historial, un servicio que superó los 20 minutos se resalta en rojo. **No siempre es un problema**: un examen seriado dura horas por definición. Al abrir el detalle se ve el desglose por toma y quién atendió cada una. + +## Traslado de enfermeros + +En Reportes. Sale de comparar las marcas de hora de las visitas domiciliarias, y sirve para detectar rutas mal armadas — mucho tiempo entre visitas suele significar que el orden geográfico no se tuvo en cuenta al agendar. + +## Preguntar en lugar de buscar + +En el dashboard del turnero está **LIA**, que responde sobre la operación del día: + +- ¿Cuántos pacientes se atendieron hoy y cuántos faltan? +- ¿Cuánto se facturó? +- ¿Cuáles son los tiempos promedio por bacteriólogo? +- ¿Cuántos están en espera ahora? + +Responde con los datos del día, no con estimaciones. Si no tiene el dato, lo dice. + +## Exportar + +El historial de turnos se exporta a CSV con los filtros que tenga aplicados. Sirve para analizar en una planilla lo que la pantalla no muestra. + +## Preguntas frecuentes + +**Los números del dashboard y de reportes no coinciden.** +Miran cosas distintas: el dashboard es la operación presencial de hoy; reportes abarca el laboratorio en general, incluidos domicilios. No son comparables directamente. + +**Un turno aparece con un tiempo de servicio enorme.** +Revise si era un examen seriado. Esos duran horas por diseño y el tiempo alto es correcto. + +**Necesito un reporte que no existe.** +Exporte el historial a CSV y arme el cálculo en una planilla. Si es algo que va a necesitar seguido, pídalo a un administrador. diff --git a/modules/soporte/docs/tecnica/60-ordenes-y-reportes.md b/modules/soporte/docs/tecnica/60-ordenes-y-reportes.md new file mode 100644 index 0000000..095597d --- /dev/null +++ b/modules/soporte/docs/tecnica/60-ordenes-y-reportes.md @@ -0,0 +1,61 @@ +# Órdenes médicas, reportes y configuración + +Tres módulos de la generación anterior: el código vive en archivos de la raíz y el módulo solo aporta el registro en el menú. + +| Módulo | Archivo real | +|---|---| +| `lab_ordenes` | `lab_ordenes.php` | +| `lab_reportes` | `lab_reportes.php` | +| `lab_configuracion` | `lab_configuracion.php` | +| `lab_dashboard` | `index.php` | + +## Órdenes médicas + +Las órdenes que el paciente envía por WhatsApp, normalmente como foto de la orden en papel. El módulo permite revisarlas y autorizarlas. + +### Datos + +`lab_ordenes_medicas` guarda tanto la imagen recibida como lo que el personal extrae de ella: + +| Grupo | Columnas | +|---|---| +| Origen | `conversation_id`, `whatsapp_media_id`, `local_file` | +| Vínculos | `paciente_id`, `domicilio_id` | +| Contenido de la orden | `medico_nombre`, `medico_registro`, `fecha_orden`, `diagnostico`, `examenes_solicitados` | +| Preparación | `requiere_ayuno`, `horas_ayuno`, `indicaciones` | +| Trazabilidad | `revisada_por`, `revisada_at`, `autorizada_por`, `autorizada_at`, `comentario_revision` | + +### Estados + +``` + pendiente ──► autorizada + │ + └──────► rechazada + (con comentario) +``` + +La orden llega en `pendiente`. Al revisarla se autoriza o se rechaza, y en ambos casos queda **quién** lo hizo y **cuándo** — es de los pocos flujos que registró trazabilidad desde el principio. + +`requiere_ayuno` y `horas_ayuno` importan porque condicionan lo que se le indica al paciente antes de la toma. + +## Reportes + +`lab_reportes.php` — informes de ingresos, rendimiento y pagos. + +Incluye el **tiempo de traslado del enfermero**, que sale de comparar las marcas de hora de las visitas domiciliarias. Es la métrica que permite ver si una ruta está mal armada. + +> Para métricas del turnero (tiempos de atención, facturación del día) el lugar es el **dashboard del turnero**, no este módulo. Los dos existen y cubren cosas distintas: este mira el laboratorio en general y los domicilios; aquel mira la operación presencial del día. + +## Configuración del laboratorio + +`lab_configuracion.php` edita lo que aparece en el encabezado de todos los documentos generados: nombre, subtítulo, dirección, ciudad, teléfono, correo, logo y color. + +Se guarda en `lab_config`, con las claves `empresa_*` y `doc_*`. Ver [Configuraciones críticas](?m=soporte&v=documentacion&s=operacion&d=configuraciones-criticas) para el detalle de qué se configura desde aquí y qué no. + +> Desde aquí **no** se cambian las URL que llegan por WhatsApp en los botones de plantilla: esas viven en Meta. + +## Dashboard + +`index.php` es el panel principal del laboratorio y, a la vez, el punto de entrada histórico del sistema. Convive con `erp.php`, que es el del ERP modular. + +Que el archivo de entrada original siga siendo una pantalla activa es una de las consecuencias de la [migración gradual](?m=soporte&v=documentacion&s=arquitectura&d=decisiones-y-deuda).