CTR — Informes Técnicos Controlados
El módulo CTR gestiona la ejecución de protocolos de laboratorio (IDTs). Cada bundle agrupa uno o más protocolos que se ejecutan, firman electrónicamente y se archivan con trazabilidad ALCOA+ completa.
¿Qué es un bundle CTR?
Un bundle es el contenedor regulatorio de una sesión de trabajo. Puede incluir uno o varios protocolos IDT ejecutados en la misma sesión. Por ejemplo: la calificación operacional de un HPLC puede incluir tres protocolos distintos — todos forman un único bundle que se firma y verifica de forma unificada.
Cada bundle está vinculado a un servicio de ITS Lab, lo que permite precargar automáticamente los datos del equipo, estándares y solventes desde ITS Lab sin necesidad de tipearlos manualmente.
El PDF final sellado contiene todos los datos ejecutados, las firmas electrónicas reguladas, el rawdata adjunto y el audit trail del bundle. El módulo además está integrado con QEM: si durante la ejecución o al cerrar el bundle se detectan resultados con discrepancias (No Cumple / FAIL / desviación), el sistema crea automáticamente el evento de calidad correspondiente.
Si un Admin o QA continúa el trabajo de un bundle asignado a otro técnico (lo completa o lo firma), el sistema aplica un takeover: el bundle se reasigna a quien realmente ejecutó y así queda reflejado en la carátula del PDF (ver takeover en el panel de detalle).
Estados del bundle
El bundle se crea directamente en estado En ejecución desde el wizard — no existe un paso previo de preparación. El ciclo de vida efectivo es: in_execution → pending_review → closed, con reaperturas excepcionales que devuelven el bundle a En ejecución.
| Estado | Código | Descripción | ¿Qué puede hacerse? |
|---|---|---|---|
| En ejecución | in_execution |
Estado inicial. El técnico ejecuta los protocolos activamente. | Completar formularios, adjuntar rawdata, pull de ITS Lab, agregar/cambiar/quitar IDTs, seleccionar certificado TMS, firmar como técnico (si todo está completo) |
| Pendiente revisión | pending_review |
El técnico firmó. Esperando firma del verificador QA. | Verificador puede firmar o retirar la firma para corrección. El técnico no puede modificar datos. |
| Cerrado | closed |
Ambas firmas completas. Bundle inmutable. | Descargar el PDF sellado. Admin/QA pueden reabrir en casos excepcionales. |
Un bundle reabierto que se vuelve a firmar y verificar regresa al estado Cerrado — no existe un estado "Enmendado" separado. La reapertura y su motivo quedan documentados en el audit trail.
Flujo completo de un bundle
Transiciones del bundle
| Acción (label en la UI) | De → A | Endpoint | Quién puede | Firma | Condiciones |
|---|---|---|---|---|---|
| + Nuevo bundle (wizard) | — → En ejecución | POST /ctr/ |
Admin / QA (ctr.bundle.create) | Operativa (sin reauth) | "Comentario de apertura" obligatorio, ≥15 caracteres |
| Firmar como técnico | En ejecución → Pend. revisión | POST /ctr/{id}/sign/technician |
Técnico asignado o Admin (ctr.bundle.execute) | 🔐 Reauth + motivo ≥15 | Todos los protocolos Completados o No ejecutados |
| Firmar como verificador | Pend. revisión → Cerrado | POST /ctr/{id}/sign/verifier |
Admin / QA ≠ técnico firmante | 🔐 Reauth | Cierre definitivo · crea evento QEM automático si hay discrepancias · notifica el cierre a ITS Lab |
| Retirar firma | → En ejecución | POST /ctr/{id}/withdraw |
Técnico / QA / Admin | 🔐 Reauth | Requiere ≥1 firma activa · la firma no se borra, queda retirada (append-only) |
| 🔓 Reabrir bundle | Cerrado → En ejecución | POST /ctr/{id}/reopen |
Admin / QA (ctr.bundle.reopen) | 🔐 Reauth + motivo ≥15 | Retira todas las firmas, resetea protocolos completados, limpia firmas de puntos de firma y revoca tokens de PDF · bloqueado si el servicio en ITS Lab está Finalizado/Cancelado |
| 🔓 Reabrir (protocolo individual) | Protocolo: Completado → En curso | POST /ctr/{id}/protocols/{pid}/reopen |
Usuarios con acceso al bundle | 🔐 Reauth | Solo si el bundle aún no tiene firma de técnico · corrige un protocolo puntual sin reabrir todo |
Roles y permisos
| Rol | Crea bundles | Ejecuta protocolos | Firma como técnico | Firma como verificador | Reabre bundles |
|---|---|---|---|---|---|
| Técnico | No | ✅ (si es el técnico asignado) | ✅ | No (segregación de funciones) | No |
| QA / Calidad | ✅ | Vía takeover (el bundle se le reasigna) | Vía takeover | ✅ (si no es el técnico del bundle) | ✅ |
| Admin | ✅ | ✅ (vía takeover si no es el asignado) | ✅ | ✅ (si no es el técnico del bundle) | ✅ |
En resumen: el técnico ejecuta y firma, QA verifica y firma (segregación de funciones) y Admin/QA crean y reabren bundles.
Separación de funciones (21 CFR Pt. 11 / GMP). La persona que firmó como técnico no puede firmar como verificador en el mismo bundle. El sistema lo bloquea automáticamente. Esto aplica también después de un takeover: quien quedó como técnico ejecutor no puede verificar ese bundle.
Lista de bundles
La pantalla principal del CTR muestra todos los bundles con filtros por estado y búsqueda por código, cliente o protocolo ITS. Las columnas principales son: código del bundle, cliente, protocolo ITS Lab, estado, técnico asignado y fecha de creación.
Al hacer clic en cualquier bundle se abre el panel de detalle en el panel derecho.
El botón + Nuevo bundle abre el wizard de creación.
Preguntas frecuentes
No. Al confirmar el wizard, el bundle se crea directamente en En ejecución y el técnico puede empezar a completar los protocolos de inmediato.
Sí. En el wizard de creación podés agregar múltiples IDTs distintas — incluidos anexos como documentos seleccionables independientes. También podés incluir múltiples instancias de la misma IDT (ej: calibrar dos balanzas distintas con el mismo protocolo → dos instancias de la IDT-BAL-001 en el mismo bundle).
Los protocolos IDT que se ejecutan en un bundle son documentos vigentes del CDMS. Solo pueden incluirse IDTs con estado Vigente y con schema de formulario configurado. Si una IDT se retira o vence, no puede agregarse a nuevos bundles (los bundles existentes que la incluían no se ven afectados).
Solo para crear bundles. El paso 1 del wizard consulta ITS Lab en tiempo real para mostrar los servicios programados. Si ITS Lab no está disponible, el wizard no puede completarse. Una vez creado el bundle, el trabajo continúa localmente en eQMS aunque ITS Lab esté fuera de línea.
Vuelve al estado Cerrado — no existe un estado "Enmendado" separado. Las firmas originales quedan retiradas (nunca se borran) y la reapertura, su motivo y el nuevo ciclo de firmas quedan completos en el audit trail.