L Luna Labs · Soporte
Concepto fundamental

Bitácora de auditoría

Cada acción significativa en Luna Labs queda registrada permanentemente. La bitácora es inmutable a nivel de base de datos — ni siquiera un administrador puede editarla o borrarla.

Equipo Luna Labs 7 min de lectura Responsable

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ónQuién la dispara
Inicio y cierre de sesiónCualquier usuario
Creación de ordenResponsable
Recepción de muestraResponsable
Captura / edición de resultadoAnalista o responsable
Subida o eliminación de archivoAnalista o responsable
Envío a revisiónAnalista
Devolución a capturaResponsable
Liberación de orden y generación de PDFResponsable
Reentrega del PDFResponsable
Desbloqueo de identidadResponsable (con razón obligatoria)
Creación / desactivación de usuariosResponsable
Cambios en catálogo y plantillasResponsable
Mensaje recibido de instrumento ASTMSistema
Errores de validación de instrumentosSistema

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

  1. Ve a Auditoría desde el menú lateral.
  2. Filtra por usuario, tipo de acción, rango de fechas o folio de orden.
  3. 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.

Tip: antes de una auditoría externa, exporta la bitácora del período relevante y respaldala. La bitácora dentro de Luna Labs no se borrará, pero tener una copia local da tranquilidad — y los auditores agradecen recibirla en formato manejable.

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:

  1. REVOKE en PostgreSQL. Las operaciones UPDATE y DELETE sobre la tabla audit_log están revocadas para todos los roles de la aplicación. Una consulta directa con cualquier credencial de la aplicación falla con permission denied.
  2. 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.
  3. 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.