fetch( "SELECT e.*, f.nombre AS form_nombre, f.categoria, f.descripcion AS form_descripcion, f.esquema, f.permite_firma, f.requiere_firma, f.doc_encabezado, f.doc_subtitulo, f.doc_logo_base64, f.doc_color, f.doc_pie_pagina, p.nombre_completo AS paciente_nombre, p.numero_documento, p.tipo_documento, p.fecha_nacimiento, p.telefono AS paciente_telefono, p.eps, u.full_name AS enviado_por_nombre, u.email AS enviado_por_email FROM lab_form_envios e JOIN lab_formularios f ON f.id = e.formulario_id LEFT JOIN lab_pacientes p ON p.id = e.paciente_id LEFT JOIN admin_users u ON u.id = e.enviado_por WHERE e.id = ?", [$id] ); if (!$envio) { http_response_code(404); die('Formulario no encontrado'); } // Enfermero solo puede ver sus propios envíos if (isEnfermero()) { $uid = (int)($_SESSION['admin_user']['id'] ?? 0); if ($envio['enviado_por'] != $uid) { http_response_code(403); die('Sin acceso'); } } // ── Config global del lab ───────────────────────────────────────────── $cfgRows = $db->fetchAll('SELECT clave, valor FROM lab_config WHERE valor != ""'); $cfg = []; foreach ($cfgRows as $r) { $cfg[$r['clave']] = $r['valor']; } // Merge: per-form override > global config $docColor = $envio['doc_color'] ?: ($cfg['doc_color'] ?? '#1565c0'); $docEncabezado = $envio['doc_encabezado'] ?: ($cfg['empresa_nombre'] ?? ''); $docSubtitulo = $envio['doc_subtitulo'] ?: ($cfg['empresa_subtitulo'] ?? ''); $docLogo = $envio['doc_logo_base64'] ?: ($cfg['doc_logo_base64'] ?? ''); $docPiePagina = $envio['doc_pie_pagina'] ?: ($cfg['doc_pie_pagina'] ?? ''); $docDireccion = $cfg['empresa_direccion'] ?? ''; $docTelefono = $cfg['empresa_telefono'] ?? ''; $docEmail = $cfg['empresa_email'] ?? ''; $docCiudad = $cfg['empresa_ciudad'] ?? ''; $esquema = json_decode($envio['esquema'], true) ?? []; $datosCliente = json_decode($envio['datos_cliente'] ?? '{}', true) ?? []; $datosPrefilled = json_decode($envio['datos_prefilled'] ?? '{}', true) ?? []; $todos = array_merge($datosPrefilled, $datosCliente); // Mapa id → label $labelMap = []; foreach ($esquema as $c) { if (!empty($c['id'])) $labelMap[$c['id']] = $c['label'] ?? $c['id']; } $completado = ($envio['completado_en'] ?? '') ? date('d/m/Y H:i', strtotime($envio['completado_en'])) : '—'; $creado = ($envio['created_at'] ?? '') ? date('d/m/Y H:i', strtotime($envio['created_at'])) : '—'; function esc2(mixed $v): string { if (is_array($v)) return htmlspecialchars(implode(', ', $v), ENT_QUOTES); return htmlspecialchars((string)($v ?? ''), ENT_QUOTES); } ?>