<?php
require_once __DIR__ . '/../../config/config.php';
requireLogin();

$db = getDB();
$orden_id = intval($_GET['orden_id'] ?? 0);

// Obtener orden
$stmt = $db->prepare("
    SELECT o.*, p.nombre, p.apellidos, p.documento_numero, p.sexo, p.fecha_nacimiento, p.telefono
    FROM ordenes o 
    JOIN pacientes p ON o.paciente_id = p.id 
    WHERE o.id = ?
");
$stmt->execute([$orden_id]);
$orden = $stmt->fetch();

if (!$orden) {
    die('Orden no encontrada');
}

// Obtener configuración
$stmt = $db->query("SELECT * FROM configuracion LIMIT 1");
$config = $stmt->fetch();

// Calcular edad
$edad = null;
if ($orden['fecha_nacimiento']) {
    $edad = date_diff(date_create($orden['fecha_nacimiento']), date_create('today'))->y;
}

// Generar token para QR
$token = md5($orden['codigo'] . $orden['id']);
$urlResultados = SITE_URL . '/ver_resultados.php?token=' . $token;

// Obtener exámenes y resultados
$stmt = $db->prepare("
    SELECT od.*, e.nombre as examen_nombre, e.codigo as examen_codigo
    FROM orden_detalle od
    JOIN examenes e ON od.examen_id = e.id
    WHERE od.orden_id = ?
    ORDER BY e.nombre
");
$stmt->execute([$orden_id]);
$detalles = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Resultados - <?= $orden['codigo'] ?></title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body {
            font-family: 'Arial', sans-serif;
            font-size: 11px;
            margin: 20px;
            line-height: 1.5;
            color: #333;
        }
        .header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            border-bottom: 3px solid #1a237e;
            padding-bottom: 15px;
            margin-bottom: 20px;
        }
        .header-left {
            flex: 1;
        }
        .header-center {
            flex: 2;
            text-align: center;
        }
        .header-right {
            flex: 1;
            text-align: right;
        }
        .logo {
            max-height: 70px;
            max-width: 150px;
        }
        .header h1 {
            margin: 5px 0;
            color: #1a237e;
            font-size: 18px;
            font-weight: bold;
        }
        .header-info {
            font-size: 9px;
            color: #666;
            margin-top: 5px;
        }
        .qr-code {
            width: 80px;
            height: 80px;
        }
        .info-section {
            background: #f5f8fa;
            border: 1px solid #ddd;
            border-radius: 8px;
            padding: 15px;
            margin-bottom: 20px;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px 30px;
        }
        .info-item {
            display: flex;
            margin-bottom: 5px;
        }
        .info-label {
            font-weight: bold;
            min-width: 120px;
            color: #1a237e;
        }
        .info-value {
            color: #333;
        }
        .examen-section {
            margin-bottom: 25px;
            page-break-inside: avoid;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }
        .examen-title {
            background: linear-gradient(135deg, #1a237e 0%, #283593 100%);
            color: white;
            padding: 10px 15px;
            font-weight: bold;
            font-size: 12px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #e0e0e0;
            padding: 8px 10px;
            text-align: left;
        }
        th {
            background-color: #e8eaf6;
            font-weight: bold;
            color: #1a237e;
            font-size: 10px;
        }
        td {
            font-size: 10px;
        }
        .resultado-alto {
            color: #c62828;
            font-weight: bold;
        }
        .resultado-bajo {
            color: #1976d2;
            font-weight: bold;
        }
        .resultado-normal {
            color: #2e7d32;
            font-weight: 600;
        }
        .fuera-rango {
            background-color: #ffebee;
        }
        .footer {
            margin-top: 30px;
            padding-top: 15px;
            border-top: 2px solid #ddd;
        }
        .nota {
            background: #fff3cd;
            border-left: 4px solid #ffc107;
            padding: 10px;
            margin: 15px 0;
            font-size: 10px;
        }
        .firma-section {
            margin-top: 50px;
            display: flex;
            justify-content: space-around;
        }
        .firma {
            text-align: center;
            width: 200px;
        }
        .firma-line {
            border-top: 2px solid #333;
            margin-top: 40px;
            padding-top: 5px;
            font-weight: bold;
        }
        .sello {
            max-height: 80px;
            margin-top: 10px;
        }
        .pie-pagina {
            text-align: center;
            font-size: 9px;
            color: #666;
            margin-top: 20px;
            padding: 10px;
            background: #f5f5f5;
            border-radius: 5px;
        }
        @media print {
            body { margin: 10px; }
            .no-print { display: none; }
            .examen-section { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <button class="no-print" onclick="window.print()" style="padding: 10px 20px; margin-bottom: 15px; background: #1a237e; color: white; border: none; border-radius: 5px; cursor: pointer;">
        🖨️ Imprimir Resultados
    </button>

    <div class="header">
        <div class="header-left">
            <?php if (!empty($config['logo'])): ?>
                <img src="<?= SITE_URL ?>/modules/configuracion/imagen.php?tipo=logo" alt="Logo" class="logo">
            <?php endif; ?>
        </div>
        <div class="header-center">
            <h1><?= htmlspecialchars($config['nombre_laboratorio'] ?? SITE_NAME) ?></h1>
            <?php if ($config['direccion']): ?>
                <div class="header-info"><?= nl2br(htmlspecialchars($config['direccion'])) ?></div>
            <?php endif; ?>
            <?php if ($config['telefono'] || $config['email']): ?>
                <div class="header-info">
                    <?php if ($config['telefono']): ?>Tel: <?= htmlspecialchars($config['telefono']) ?> <?php endif; ?>
                    <?php if ($config['email']): ?><?= $config['telefono'] ? '| ' : '' ?>Email: <?= htmlspecialchars($config['email']) ?><?php endif; ?>
                </div>
            <?php endif; ?>
            <h2 style="margin-top: 10px; font-size: 14px; color: #1a237e;">INFORME DE RESULTADOS DE LABORATORIO</h2>
        </div>
        <div class="header-right">
            <img src="https://api.qrserver.com/v1/create-qr-code/?size=80x80&data=<?= urlencode($urlResultados) ?>" alt="QR Code" class="qr-code">
            <div style="font-size: 8px; margin-top: 5px;">Escanear para ver en línea</div>
        </div>
    </div>

    <div class="info-section">
        <div>
            <div class="info-item">
                <span class="info-label">Paciente:</span>
                <span class="info-value"><?= htmlspecialchars($orden['nombre'] . ' ' . $orden['apellidos']) ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Documento:</span>
                <span class="info-value"><?= htmlspecialchars($orden['documento_numero']) ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Sexo:</span>
                <span class="info-value"><?= $orden['sexo'] == 'M' ? 'Masculino' : 'Femenino' ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Edad:</span>
                <span class="info-value"><?= $edad ? $edad . ' años' : '-' ?></span>
            </div>
        </div>
        <div>
            <div class="info-item">
                <span class="info-label">N° Orden:</span>
                <span class="info-value"><strong><?= htmlspecialchars($orden['codigo']) ?></strong></span>
            </div>
            <div class="info-item">
                <span class="info-label">Fecha Orden:</span>
                <span class="info-value"><?= date('d/m/Y H:i', strtotime($orden['fecha_orden'])) ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Médico Solicitante:</span>
                <span class="info-value"><?= htmlspecialchars($orden['medico_solicitante'] ?: '-') ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Fecha Impresión:</span>
                <span class="info-value"><?= date('d/m/Y H:i') ?></span>
            </div>
        </div>
    </div>
        .examen-section {
            margin-bottom: 20px;
            page-break-inside: avoid;
        }
        .examen-title {
            background: #1a237e;
            color: white;
            padding: 8px 12px;
            font-weight: bold;
            border-radius: 5px 5px 0 0;
        }
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 6px 8px;
            text-align: left;
        }
        th {
            background-color: #e3f2fd;
            font-weight: bold;
        }
        .resultado-alto {
            color: #c62828;
            font-weight: bold;
        }
        .resultado-bajo {
            color: #1565c0;
            font-weight: bold;
        }
        .resultado-normal {
            color: #2e7d32;
        }
        .fuera-rango {
            background-color: #ffebee;
        }
        .footer {
            margin-top: 30px;
            border-top: 1px solid #ddd;
            padding-top: 15px;
        }
        .firma {
            margin-top: 50px;
            text-align: center;
        }
        .firma-line {
            border-top: 1px solid #333;
            width: 200px;
            margin: 0 auto;
            padding-top: 5px;
        }
        @media print {
            body { margin: 0; }
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <button class="no-print" onclick="window.print()" style="padding: 10px 20px; margin-bottom: 15px;">
        Imprimir
    </button>

    <div class="header">
        <h1><?= SITE_NAME ?></h1>
        <p>INFORME DE RESULTADOS DE LABORATORIO</p>
    </div>

    <div class="info-section">
        <div>
            <p><strong>Paciente:</strong> <?= $orden['nombre'] . ' ' . $orden['apellidos'] ?></p>
            <p><strong>Documento:</strong> <?= $orden['documento_numero'] ?></p>
            <p><strong>Sexo:</strong> <?= $orden['sexo'] == 'M' ? 'Masculino' : 'Femenino' ?></p>
            <p><strong>Edad:</strong> <?= $edad ? $edad . ' años' : '-' ?></p>
        </div>
        <div>
            <p><strong>N° Orden:</strong> <?= $orden['codigo'] ?></p>
            <p><strong>Fecha Orden:</strong> <?= formatDateTime($orden['fecha_orden']) ?></p>
            <p><strong>Médico:</strong> <?= $orden['medico_solicitante'] ?: '-' ?></p>
            <p><strong>Fecha Impresión:</strong> <?= date('d/m/Y H:i') ?></p>
        </div>
    </div>

    <?php foreach ($detalles as $det): ?>
    <?php
    // Obtener resultados
    $stmtRes = $db->prepare("
        SELECT r.*, p.nombre as parametro_nombre, p.unidad
        FROM resultados r
        JOIN parametros_examen p ON r.parametro_id = p.id
        WHERE r.orden_detalle_id = ?
        ORDER BY p.orden, p.nombre
    ");
    $stmtRes->execute([$det['id']]);
    $resultados = $stmtRes->fetchAll();
    
    if (empty($resultados)) continue;
    ?>
    
    <div class="examen-section">
        <div class="examen-title">
            <?= htmlspecialchars($det['examen_nombre']) ?> (<?= $det['examen_codigo'] ?>)
        </div>
        <table>
            <thead>
                <tr>
                    <th width="30%">Parámetro</th>
                    <th width="20%">Resultado</th>
                    <th width="15%">Unidad</th>
                    <th width="25%">Valores de Referencia</th>
                    <th width="10%">Observación</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($resultados as $res): ?>
                <?php
                // Obtener rango
                $stmtRango = $db->prepare("
                    SELECT * FROM rangos_referencia 
                    WHERE parametro_id = ? 
                    AND (sexo = ? OR sexo = 'Ambos')
                    AND ? BETWEEN edad_min AND edad_max
                    LIMIT 1
                ");
                $stmtRango->execute([$res['parametro_id'], $orden['sexo'], $edad ?? 30]);
                $rango = $stmtRango->fetch();
                
                // Determinar clase de resultado
                $claseResultado = 'resultado-normal';
                if ($res['fuera_rango']) {
                    if ($rango && $res['valor_numerico'] !== null) {
                        if ($rango['valor_min'] !== null && $res['valor_numerico'] < $rango['valor_min']) {
                            $claseResultado = 'resultado-bajo';
                        } else {
                            $claseResultado = 'resultado-alto';
                        }
                    } else {
                        $claseResultado = 'resultado-alto';
                    }
                }
                ?>
                <tr class="<?= $res['fuera_rango'] ? 'fuera-rango' : '' ?>">
                    <td><?= htmlspecialchars($res['parametro_nombre']) ?></td>
                    <td class="<?= $claseResultado ?>">
                        <strong><?= htmlspecialchars($res['valor']) ?></strong>
                        <?php if ($res['fuera_rango']): ?>
                            <?php if ($claseResultado == 'resultado-alto'): ?>
                                ↑
                            <?php else: ?>
                                ↓
                            <?php endif; ?>
                        <?php endif; ?>
                    </td>
                    <td><?= $res['unidad'] ?: '-' ?></td>
                    <td>
                        <?php if ($rango): ?>
                            <?php if ($rango['valor_min'] !== null && $rango['valor_max'] !== null): ?>
                                <?= $rango['valor_min'] ?> - <?= $rango['valor_max'] ?>
                            <?php elseif ($rango['valor_texto']): ?>
                                <?= $rango['valor_texto'] ?>
                            <?php endif; ?>
                        <?php else: ?>
                            -
                        <?php endif; ?>
                    </td>
                    <td><?= $res['observacion'] ?: '' ?></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
    <?php endforeach; ?>

    <div class="footer">
        <p><small>
            <strong>Nota:</strong> Los valores marcados con ↑ (alto) o ↓ (bajo) están fuera del rango de referencia.<br>
            Este documento es válido sin firma ni sello. Conserve este informe para su historial médico.
        </small></p>
    </div>

    <div class="firma">
        <div class="firma-line">
            Laboratorista
        </div>
    </div>

    <div class="footer" style="text-align: center; font-size: 9px; color: #666;">
        <p><?= SITE_NAME ?> - Sistema de Laboratorio Clínico</p>
        <p>Documento generado el <?= date('d/m/Y H:i:s') ?></p>
    </div>
</body>
</html>
