diff --git a/modules/lab_examenes/api/save.php b/modules/lab_examenes/api/save.php index f7658a0..d34ca4b 100644 --- a/modules/lab_examenes/api/save.php +++ b/modules/lab_examenes/api/save.php @@ -31,7 +31,7 @@ $activo = (int)($d['activo'] ?? 1); $req_ayuno = (int)($d['requiere_ayuno'] ?? 0); $horas_ayuno = isset($d['horas_ayuno']) && $d['horas_ayuno'] !== '' ? (int)$d['horas_ayuno'] : null; $instruc = trim($d['instrucciones'] ?? '') ?: null; -$formId = (int)($d['formulario_id'] ?? 0) ?: null; +$formIds = array_values(array_unique(array_filter(array_map('intval', (array)($d['form_ids'] ?? []))))); if ($codigo === '') jsonError('El código es requerido'); if ($nombre === '') jsonError('El nombre es requerido'); @@ -59,10 +59,8 @@ try { } $pdo->prepare('DELETE FROM exam_tipo_consentimientos WHERE exam_tipo_id = ?')->execute([$examId]); - if ($formId) { - $pdo->prepare('INSERT INTO exam_tipo_consentimientos (exam_tipo_id, formulario_id) VALUES (?,?)') - ->execute([$examId, $formId]); - } + $ins = $pdo->prepare('INSERT INTO exam_tipo_consentimientos (exam_tipo_id, formulario_id) VALUES (?,?)'); + foreach ($formIds as $fid) { $ins->execute([$examId, $fid]); } $pdo->commit(); jsonOk(['id' => $examId], $id ? 'Examen actualizado' : 'Examen creado'); diff --git a/modules/lab_examenes/views/examen.php b/modules/lab_examenes/views/examen.php index 199cc30..4b703a5 100644 --- a/modules/lab_examenes/views/examen.php +++ b/modules/lab_examenes/views/examen.php @@ -21,11 +21,11 @@ if ($id) { $protocolos = $pdo->query('SELECT codigo, nombre FROM lab_protocolos ORDER BY nombre')->fetchAll(PDO::FETCH_ASSOC); $muestras = $pdo->query('SELECT codigo, nombre FROM lab_tipos_muestra ORDER BY nombre')->fetchAll(PDO::FETCH_ASSOC); $formularios = $pdo->query('SELECT id, nombre FROM lab_formularios ORDER BY nombre')->fetchAll(PDO::FETCH_ASSOC); -$formActual = null; +$formsActuales = []; if ($id) { - $s = $pdo->prepare('SELECT formulario_id FROM exam_tipo_consentimientos WHERE exam_tipo_id=? LIMIT 1'); + $s = $pdo->prepare('SELECT formulario_id FROM exam_tipo_consentimientos WHERE exam_tipo_id=?'); $s->execute([$id]); - $formActual = $s->fetchColumn() ?: null; + $formsActuales = $s->fetchAll(PDO::FETCH_COLUMN); } $titulo = $exam ? 'Editar: ' . htmlspecialchars($exam['nombre']) : 'Nuevo Examen'; @@ -146,15 +146,19 @@ body { background:#f1f5f9 }
- - > + +
- +
@@ -311,7 +315,7 @@ async function guardarExamen() { instrucciones: document.getElementById('f-instrucciones').value.trim(), serecibe: document.getElementById('f-serecibe').value.trim(), activo: document.getElementById('f-activo').checked ? 1 : 0, - formulario_id: document.getElementById('f-formulario').value || null, + form_ids: [...document.querySelectorAll('.f-formulario-chk:checked')].map(c => parseInt(c.value)), }; const r = await fetch(API+'save.php', {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload)}).then(r=>r.json()); if (r.ok) {