Documentación: órdenes médicas, formularios y reportes; cobertura por rol completa

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 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-04 11:35:38 -05:00
co-authored by Claude Opus 5
parent fe96e5b60d
commit 9c2ef19510
5 changed files with 270 additions and 0 deletions
@@ -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)
@@ -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.
@@ -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.
@@ -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.
@@ -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).