En resumen
La bitácora registra cada acción crítica (creación, captura, envío, devolución, liberación, desbloqueos, ingresos y errores de instrumentos). Es inmutable a nivel de PostgreSQL — las operaciones UPDATE y DELETE están revocadas para todos los roles. La consultas desde Auditoría y la exportas en CSV para auditorías de COFEPRIS.
Por qué tiene que ser inmutable
Una bitácora que puede editarse no es una bitácora — es un documento. El propósito de un registro de auditoría es servir como evidencia en caso de cuestionamientos: regulatorios, clínicos, legales. Si la registración puede modificarse, deja de ser evidencia.
En Luna Labs, la inmutabilidad no depende de buenas intenciones ni de procedimientos. Está implementada en la capa de base de datos: la tabla audit_log tiene revocadas las operaciones UPDATE y DELETE para todos los roles, incluyendo el rol de administración. La única operación permitida es INSERT.
Qué se registra
| Acción | Quién la dispara |
|---|---|
| Inicio y cierre de sesión | Cualquier usuario |
| Creación de orden | Responsable |
| Recepción de muestra | Responsable |
| Captura / edición de resultado | Analista o responsable |
| Subida o eliminación de archivo | Analista o responsable |
| Envío a revisión | Analista |
| Devolución a captura | Responsable |
| Liberación de orden y generación de PDF | Responsable |
| Reentrega del PDF | Responsable |
| Desbloqueo de identidad | Responsable (con razón obligatoria) |
| Creación / desactivación de usuarios | Responsable |
| Cambios en catálogo y plantillas | Responsable |
| Mensaje recibido de instrumento ASTM | Sistema |
| Errores de validación de instrumentos | Sistema |
Cada entrada incluye: usuario, rol, IP, navegador, fecha y hora UTC, tipo de acción, identificadores afectados y, cuando aplica, razón obligatoria (en el caso de desbloqueos).
Consultar la bitácora
- Ve a Auditoría desde el menú lateral.
- Filtra por usuario, tipo de acción, rango de fechas o folio de orden.
- Cada fila se puede expandir para ver el detalle completo.
En el detalle de una orden específica, hay una pestaña Bitácora que muestra solo los eventos de esa orden, en orden cronológico.
Exportar a CSV
Desde la pantalla de Auditoría, aplica los filtros que necesites y haz clic en Exportar CSV. Obtienes un archivo con las siguientes columnas:
timestamp_utc, usuario, rol, ip, accion, recurso, recurso_id, razon, detalles_json
Este formato es directamente compatible con análisis en Excel y con las plantillas que solicita COFEPRIS en sus auditorías.
Desbloqueos de identidad
Cuando el responsable desbloquea la identidad de un paciente, la bitácora guarda:
- Usuario que desbloqueó.
- Folio y paciente afectado.
- Razón en texto libre (campo obligatorio).
- Fecha, hora e IP.
Hay un reporte específico en Auditoría › Desbloqueos que lista solo estos eventos. Útil para revisión periódica: ¿se desbloqueó demasiado? ¿quién lo hizo? ¿con qué razones?
Cómo se garantiza la inmutabilidad
Hay tres mecanismos:
- REVOKE en PostgreSQL. Las operaciones
UPDATEyDELETEsobre la tablaaudit_logestán revocadas para todos los roles de la aplicación. Una consulta directa con cualquier credencial de la aplicación falla con permission denied. - Sin lógica de modificación en el código. El código fuente no contiene ninguna función que actualice o borre entradas de auditoría. El único método disponible es
insert. - Respaldo independiente. La base de datos se respalda diariamente y los respaldos son inmutables (almacenamiento con object lock). Aunque alguien lograra modificar la bitácora viva, los respaldos preservan la versión original.
Preguntas frecuentes
¿Y si necesito corregir un dato erróneo en la bitácora?
No puedes corregir — pero puedes agregar una nueva entrada con la corrección. La entrada original queda. Esta es la convención estándar en bitácoras de calidad y normativas (ISO, FDA): nunca se borra, se agrega contexto.
¿Cuánto tiempo se conserva la bitácora?
Indefinidamente, mientras tu cuenta Luna Labs esté activa. NOM-004 sugiere mínimo 5 años para expediente clínico; nosotros recomendamos no borrar nunca.
¿La bitácora afecta el rendimiento?
Las escrituras de auditoría están optimizadas y son asíncronas — no bloquean la operación. Una orden típica genera 5-15 entradas en bitácora durante su ciclo completo.