Equipos HPLC/UHPLC
El módulo Equipos es el núcleo de ITS Lab: gestiona los equipos cromatográficos de los clientes, sus módulos componentes, los servicios GMP de calificación (IQ/OQ/PQ, calibraciones, mantenimientos) y sus consumibles. La pantalla es una lista de tarjetas expandibles: cada tarjeta muestra el estado de vigencia de un equipo de un vistazo y, al abrirla, todo su detalle. Los servicios GMP se crean, registran y archivan desde acá.
Los equipos, módulos y servicios son registros GMP: no se pueden borrar. La API responde
405 a cualquier DELETE. Para dar de baja se archiva con un motivo
obligatorio (≥5 caracteres en pantalla) y queda en el audit trail. Restaurar es exclusivo de
administradores.
La lista de tarjetas
Cada equipo se muestra como una tarjeta (no una fila de tabla). La fila visible contiene:
| Elemento | Qué es |
|---|---|
| Flecha ▸ | Expande / colapsa el panel de detalle de la tarjeta. |
| Badge del ID del equipo | El id_propietario asignado por el cliente (ej: HPLC03). Al clickearlo se abre la Ficha técnica del equipo. |
| Marca + modelo | Fabricante y modelo del equipo. |
| Laboratorio · Sector | Cliente y sector al que pertenece el equipo. |
| Pastillas por servicio | Una pastilla por cada servicio GMP: sigla del tipo + vencimiento AAAA-MM, con un semáforo de color en el borde según qué tan cerca está el vencimiento. |
| Acciones de la fila | Editar y Archivar (o Restaurar si ya está archivado). |
El panel expandido de cada tarjeta reúne todo el detalle del equipo:
Filtros, orden y agrupación
| Control | Opciones |
|---|---|
| Búsqueda | Texto libre (marca, modelo, ID, sector…). |
| Laboratorio | Filtra por cliente. |
| Sector | Filtra por sector. |
| Marca | Filtra por fabricante. |
| Vencimiento | Todos · Vencidos · Próximos 30 días · Próximos 60 días · Vigentes. No existe "90 días". |
| Orden | Cliente A-Z · Nombre del equipo · Próximo vencimiento · ID del equipo. |
| Agrupar | Sin agrupación · por Cliente · por Marca. No agrupa por Sector. |
| Filtro por ID de equipo | Aísla la tarjeta de un equipo puntual por su ID. |
| Ver archivados | Toggle que incluye los equipos archivados en el listado. |
Hoy, al activar "Ver archivados", los equipos archivados aparecen mezclados sin un distintivo visual que los diferencie de los activos (el listado no expone el flag de archivado). Es un comportamiento conocido: para confirmar el estado de un equipo, abrí su Ficha técnica.
Campos del equipo y del módulo
Equipo
| Campo | Obligatorio | Detalle |
|---|---|---|
| Equipo (ID) | ✅ Sí | id_propietario: el ID que le asigna el cliente (ej: HPLC03). |
| Marca | ✅ Sí | Fabricante del equipo. |
| Modelo | ✅ Sí | Modelo del equipo. |
| Sector | ✅ Sí | Determina laboratorio, sector y usuarios del equipo. Es la relación de la que cuelga todo. |
| Fecha de último servicio | — | Fecha referencial del último servicio previo al alta en ITS Lab. No genera historial. |
Módulo
| Campo | Obligatorio | Detalle |
|---|---|---|
| Marca | ✅ Sí | Fabricante del módulo (bomba, detector, inyector, degasificador…). |
| Modelo | ✅ Sí | Modelo del módulo. |
| N° de serie | — | Opcional pero recomendable para la trazabilidad GMP. |
Servicios GMP del equipo
La sección Servicios del panel muestra las calificaciones y calibraciones del equipo. Cada
servicio tiene un estado (equipo_servicio) que define si bloquea crear otro del mismo
tipo y si se puede archivar:
| Estado | Semántica | ¿Bloquea crear otro del mismo tipo? | ¿Archivable? |
|---|---|---|---|
| Por Realizar | Creado, aún no iniciado. | ✅ Sí | — |
| Programado | Con fecha coordinada con el cliente. | ✅ Sí | — |
| En Ejecución | Técnico trabajando en sitio. | ✅ Sí | — |
| Finalizado | Servicio completado. | — | ✅ Sí |
| Cancelado | Servicio cancelado. | — | ✅ Sí |
Los tres estados activos (Por Realizar, Programado, En Ejecución) bloquean crear otro servicio del mismo tipo. Solo los dos estados terminales (Finalizado, Cancelado) son archivables.
Crear un servicio GMP desde el equipo
Si elegís un tipo AT/RB (asistencia técnica / reparación), el modal muta a "Nueva intervención (AT/RB)" y hace POST /asistencias con numeración automática. El backend rechaza registrar AT/RB como servicio GMP con un 422: no son servicios calificados, son intervenciones. Ver AT y Reparaciones.
El vencimiento se autocalcula al último día del mes = fecha de ejecución + periodicidad del tipo.
Dos opciones:
• "Guardar" — crea el servicio sin protocolo.
• "Guardar y Registrar" — POST /equipo-servicios/con-registro: crea el servicio + el historial de forma atómica y le asigna el número ITS-AAAAMMDD-NN, que abre el Protocolo ITS.
Conflicto: ya existe un servicio del mismo tipo
Si al crear ya existe un servicio del mismo tipo en el equipo, el sistema abre un modal de conflicto:
| Situación / Opción | Qué pasa |
|---|---|
| Existente activo (Por Realizar / Programado / En Ejecución) | Bloqueado. No se puede crear otro mientras haya uno activo. Primero finalizá o cancelá el existente. |
| Reemplazar | Archiva el servicio viejo y el nuevo pasa a ser la calificación vigente. |
| Recalificación parcial | Crea el nuevo como hijo del existente (servicio_padre_id). El padre sigue marcando la vigencia; el hijo lleva el badge Recalif. parcial. |
Una vez creado, numero_protocolo, equipo_id y servicio_padre_id son
inmutables: no cambian con una edición. Si un servicio ya tiene protocolo y cambiás la fecha a
otro mes, la edición se rechaza (409) — el flujo correcto es cancelar y crear uno nuevo.
Solo se archivan servicios en estado terminal (Finalizado o Cancelado). Además, si el
servicio es padre y tiene hijos parentados activos (recalificaciones parciales), archivarlo
se rechaza con 409: primero hay que resolver los hijos.
Endpoints
Equipos
| Acción | Endpoint | Condiciones |
|---|---|---|
| Listar | GET /equipos/ | — |
| Crear | POST /equipos/ | Sector, ID, marca y modelo obligatorios. |
| Editar | PUT /equipos/{id} | 409 si el equipo está archivado. |
| Archivar | PATCH /equipos/{id}/archivar | Motivo obligatorio. |
| Restaurar | PATCH /equipos/{id}/restaurar | Solo administrador. |
| Eliminar | DELETE | Responde 405 — no existe borrado. |
Módulos
Mismas operaciones sobre /modulos
(GET · POST · PUT /{id} con 409 si archivado ·
PATCH /{id}/archivar · PATCH /{id}/restaurar solo admin · DELETE → 405).
Servicios GMP
| Acción | Endpoint | Condiciones |
|---|---|---|
| Listar del equipo | GET /equipo-servicios/equipo/{id} | — |
| Crear | POST /equipo-servicios/ | 422 si es intervención AT/RB · 409 si el equipo está archivado · valida el parentesco. |
| Crear + registrar | POST /equipo-servicios/con-registro | Atómico (servicio + historial + número ITS). Fecha obligatoria. |
| Editar | PUT /equipo-servicios/{id} | 409 si archivado. numero_protocolo, servicio_padre_id y equipo_id inmutables. Cambio de mes con protocolo → 409. |
| Archivar | PATCH /equipo-servicios/{id}/archivar | Solo Finalizado / Cancelado. 409 si tiene hijos parentados activos. |
| Restaurar | PATCH /equipo-servicios/{id}/restaurar | Solo administrador. |
Consumibles del equipo
Se asocian y desasocian sobre GET/POST/DELETE /equipos/{id}/consumibles…
(los consumibles son catálogo, no registros GMP del equipo: sí admiten DELETE de la asociación).
Escáner QR
El botón "📷 Escanear QR" abre la cámara del dispositivo. El QR de la etiqueta ION codifica un correo cuyo asunto es "Solicitud de Asistencia Técnica – Equipo: <ID>". El escáner extrae el ID de ese asunto, limpia los filtros activos y expande la tarjeta del equipo correspondiente. Es la vía rápida para llegar a un equipo desde su etiqueta física.
Etiquetas
El botón "🏷️ Etiquetas" abre un selector con tres modos:
| Modo | Qué genera |
|---|---|
| Por equipo | Etiqueta del equipo completo. |
| Por módulo | Etiqueta por cada módulo. |
| Zebra (ZPL) | Código ZPL para impresora Zebra, con textarea + botones copiar y descargar. |
El código QR se incluye únicamente en las etiquetas de tipo Mantenimiento Preventivo. Las demás etiquetas se generan sin QR.
Notas internas y Adjuntos
A diferencia de los equipos, módulos y servicios (que nunca se borran), las notas internas y los adjuntos son material de trabajo interno: admiten borrado permanente (con confirmación, sin motivo) y no aparecen en los reportes.
Los adjuntos son binarios con un límite de 5 MB y se suben de tres maneras: drag & drop, elegir archivo o tomar foto con la cámara. Usalos para material de apoyo que no forma parte del expediente regulado del equipo.
Ficha técnica
Al hacer click en el badge del ID del equipo se abre la Ficha técnica: un modal imprimible que consolida todo el expediente del equipo en una sola vista:
Políticas GMP del módulo
• Sin eliminar: equipos, módulos y servicios responden 405 a DELETE; solo se archivan con motivo (≥5 caracteres en pantalla).
• Inmutables: numero_protocolo, equipo_id y servicio_padre_id no cambian nunca tras crearse.
• Guard de hijos: no se archiva un servicio padre con hijos parentados activos (409).
• Solo estados terminales (Finalizado / Cancelado) son archivables.
• Restaurar es admin-only en equipos, módulos y servicios.
Preguntas frecuentes
POST /asistencias). El backend rechaza registrar AT/RB como servicio GMP con 422. Ver AT y Reparaciones.servicio_padre_id): el padre sigue marcando la vigencia y el hijo lleva el badge "Recalif. parcial". Usá recalificación parcial cuando solo re-calificás una parte del equipo sin invalidar la calificación completa vigente.409): resolvé primero los hijos.409): un número ITS corresponde a un mes específico. El flujo correcto cancela el servicio actual (preservando su protocolo) y recrea uno nuevo con la fecha correcta y un número ITS nuevo.