From 56b8fc98df2b738f78c5f4e1a3ab8d86550a6f66 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Sat, 4 Jul 2026 15:54:36 -0500 Subject: [PATCH] =?UTF-8?q?feat(recepcion):=20Tom=20Select=20para=20selecc?= =?UTF-8?q?i=C3=B3n=20de=20ex=C3=A1menes=20con=20badge=20de=20consentimien?= =?UTF-8?q?to?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reemplaza la lista de checkboxes por Tom Select (sin jQuery): - Búsqueda integrada mientras se escribe - Exámenes agrupados por categoría (optgroup) - Cada examen con consentimiento asociado muestra badge ⚠ Consentimiento en el dropdown y marcador visual en el tag seleccionado - Solo entrega de muestras deshabilita el select automáticamente - Remove_button plugin para quitar ítems individualmente - Elimina filtrarExamenes / toggleCategoria / actualizarCatChk (ya innecesarios) Co-Authored-By: Claude Sonnet 4.6 --- modules/turnero/views/recepcion.php | 160 ++++++++++++---------------- 1 file changed, 67 insertions(+), 93 deletions(-) diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php index 3dfb68f..6267e99 100644 --- a/modules/turnero/views/recepcion.php +++ b/modules/turnero/views/recepcion.php @@ -30,7 +30,13 @@ try { $lugarMuestras = $lugaresDestino[0] ?? null; $examenes = $pdo->query( - "SELECT id, codigo, nombre, categoria FROM exam_tipos WHERE activo = 1 ORDER BY categoria, nombre" + "SELECT et.id, et.codigo, et.nombre, et.categoria, + IF(COUNT(etc.formulario_id) > 0, 1, 0) AS tiene_consentimiento + FROM exam_tipos et + LEFT JOIN exam_tipo_consentimientos etc ON etc.exam_tipo_id = et.id + WHERE et.activo = 1 + GROUP BY et.id + ORDER BY et.categoria, et.nombre" )->fetchAll(PDO::FETCH_ASSOC); // Agrupar exámenes por categoría @@ -79,6 +85,8 @@ $adminNombre = $_SESSION['admin_user']['full_name'] ?? $_SESSION['admin_user'][' + +