prepare( "SELECT id, usuario_nombre, comentario, tipo, creado_at FROM turnero_comentarios WHERE turno_id = ? ORDER BY creado_at DESC" ); $stmtCom->execute([$turnoId]); $datos['comentarios'] = $stmtCom->fetchAll(PDO::FETCH_ASSOC); // Exámenes solicitados (si lo pide) if (!empty($_GET['incluir_examenes'])) { $stmtExam = $pdo->prepare( "SELECT DISTINCT et.nombre, et.codigo FROM turnero_examen_items tei JOIN exam_tipos et ON et.id = tei.exam_tipo_id WHERE tei.solicitud_id = ( SELECT id FROM turnero_solicitudes WHERE turno_id = ? LIMIT 1 ) ORDER BY et.nombre ASC" ); $stmtExam->execute([$turnoId]); $datos['examenes'] = $stmtExam->fetchAll(PDO::FETCH_ASSOC); } // Consentimientos (si lo pide) if (!empty($_GET['incluir_consentimientos'])) { $stmtCons = $pdo->prepare( "SELECT tc.id, f.nombre, tc.estado, tc.firmado_at, tc.firma_profesional_svg FROM turnero_consentimientos tc LEFT JOIN lab_formularios f ON f.id = tc.formulario_id WHERE tc.turno_id = ? ORDER BY tc.estado DESC, tc.firmado_at DESC" ); $stmtCons->execute([$turnoId]); $datos['consentimientos'] = $stmtCons->fetchAll(PDO::FETCH_ASSOC); } jsonOk($datos); } // ── POST: Guardar comentario ── if ($_SERVER['REQUEST_METHOD'] === 'POST') { $datos = inputJson(); $turnoId = (int)($datos['turno_id'] ?? 0); $comentario = trim($datos['comentario'] ?? ''); $tipo = $datos['tipo'] ?? 'general'; if ($turnoId <= 0) jsonError('turno_id requerido.'); if (!$comentario) jsonError('Comentario vacío.'); if (!in_array($tipo, ['recepcion','muestras','general'], true)) $tipo = 'general'; // Validar que el turno existe $stmtTurno = $pdo->prepare("SELECT id FROM turnero_turnos WHERE id = ?"); $stmtTurno->execute([$turnoId]); if (!$stmtTurno->fetch()) jsonError('Turno no encontrado.', 404); // Guardar comentario $stmtIns = $pdo->prepare( "INSERT INTO turnero_comentarios (turno_id, usuario_id, usuario_nombre, comentario, tipo) VALUES (?, ?, ?, ?, ?)" ); $stmtIns->execute([$turnoId, $userId, $userName, $comentario, $tipo]); $comId = (int)$pdo->lastInsertId(); jsonOk(['id' => $comId, 'creado_at' => date('c')]); }