<?php
$pageTitle = "Configurar Parámetros de Control";
require_once __DIR__ . '/../../config/config.php';
requirePermiso('control_calidad');

$db = Database::getInstance()->getConnection();
$lote_id = $_GET['lote_id'] ?? null;

if (!$lote_id) {
    setAlert('danger', 'Lote no especificado');
    header('Location: list.php');
    exit;
}

// Obtener datos del lote
$stmt = $db->prepare("SELECT * FROM cc_lotes WHERE id = ?");
$stmt->execute([$lote_id]);
$lote = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$lote) {
    setAlert('danger', 'Lote no encontrado');
    header('Location: list.php');
    exit;
}

// Obtener categorías de exámenes
$categorias = $db->query("SELECT * FROM categorias_examenes ORDER BY nombre")->fetchAll(PDO::FETCH_ASSOC);

// Obtener parámetros ya configurados
$stmtParams = $db->prepare("SELECT lp.*, pe.nombre as parametro_nombre, pe.unidad, e.nombre as examen_nombre
                            FROM cc_lote_parametros lp
                            JOIN parametros_examen pe ON lp.parametro_id = pe.id
                            JOIN examenes e ON pe.examen_id = e.id
                            WHERE lp.lote_id = ?
                            ORDER BY e.nombre, pe.orden");
$stmtParams->execute([$lote_id]);
$parametrosConfigurados = $stmtParams->fetchAll(PDO::FETCH_ASSOC);

// Función para calcular media y DE a partir de límites
// Rango total = Lím.Superior - Lím.Inferior, dividido en 4 segmentos (2 DE+ y 2 DE-)
// Media (centro) = (Superior + Inferior) / 2
// DE = (Superior - Inferior) / 4
function calcularDesdeRangos($rango_min, $rango_max) {
    $media = ($rango_max + $rango_min) / 2;
    $de = ($rango_max - $rango_min) / 4;
    return ['media' => $media, 'de' => $de];
}

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';
    
    if ($action === 'agregar') {
        $parametro_id = $_POST['parametro_id'];
        $tipo = $_POST['tipo_resultado'];
        $valor_esperado = $_POST['valor_esperado_cualitativo'] ?? null;
        
        // Obtener unidad del parámetro
        $stmtU = $db->prepare("SELECT unidad FROM parametros_examen WHERE id = ?");
        $stmtU->execute([$parametro_id]);
        $unidad = $stmtU->fetchColumn();
        
        $rango_min = null; $rango_max = null; $valor_asignado = null; $desviacion = null;
        
        if ($tipo === 'numerico') {
            $rango_min = $_POST['rango_min'] !== '' ? floatval($_POST['rango_min']) : null;
            $rango_max = $_POST['rango_max'] !== '' ? floatval($_POST['rango_max']) : null;
            
            if ($rango_min !== null && $rango_max !== null && $rango_max > $rango_min) {
                $calc = calcularDesdeRangos($rango_min, $rango_max);
                $valor_asignado = $calc['media'];
                $desviacion = $calc['de'];
            }
        }
        
        try {
            $stmt = $db->prepare("INSERT INTO cc_lote_parametros 
                (lote_id, parametro_id, valor_asignado, rango_min, rango_max, unidad, 
                desviacion_estandar, tipo_resultado, valor_esperado_cualitativo)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
                ON DUPLICATE KEY UPDATE 
                valor_asignado = VALUES(valor_asignado),
                rango_min = VALUES(rango_min),
                rango_max = VALUES(rango_max),
                desviacion_estandar = VALUES(desviacion_estandar),
                tipo_resultado = VALUES(tipo_resultado),
                valor_esperado_cualitativo = VALUES(valor_esperado_cualitativo)");
            $stmt->execute([$lote_id, $parametro_id, $valor_asignado, $rango_min, $rango_max, 
                           $unidad, $desviacion, $tipo, $valor_esperado]);
            setAlert('success', 'Parámetro agregado correctamente');
        } catch (PDOException $e) {
            setAlert('danger', 'Error: ' . $e->getMessage());
        }
        header("Location: parametros.php?lote_id=$lote_id");
        exit;
    }
    
    if ($action === 'editar') {
        $param_id = $_POST['param_id'];
        $tipo = $_POST['tipo_resultado'];
        $valor_esperado = $_POST['valor_esperado_cualitativo'] ?? null;
        
        $rango_min = null; $rango_max = null; $valor_asignado = null; $desviacion = null;
        
        if ($tipo === 'numerico') {
            $rango_min = $_POST['rango_min'] !== '' ? floatval($_POST['rango_min']) : null;
            $rango_max = $_POST['rango_max'] !== '' ? floatval($_POST['rango_max']) : null;
            
            if ($rango_min !== null && $rango_max !== null && $rango_max > $rango_min) {
                $calc = calcularDesdeRangos($rango_min, $rango_max);
                $valor_asignado = $calc['media'];
                $desviacion = $calc['de'];
            }
        }
        
        try {
            $stmt = $db->prepare("UPDATE cc_lote_parametros SET 
                valor_asignado = ?, rango_min = ?, rango_max = ?, 
                desviacion_estandar = ?, tipo_resultado = ?, valor_esperado_cualitativo = ?
                WHERE id = ? AND lote_id = ?");
            $stmt->execute([$valor_asignado, $rango_min, $rango_max, 
                           $desviacion, $tipo, $valor_esperado, $param_id, $lote_id]);
            setAlert('success', 'Parámetro actualizado correctamente');
        } catch (PDOException $e) {
            setAlert('danger', 'Error: ' . $e->getMessage());
        }
        header("Location: parametros.php?lote_id=$lote_id");
        exit;
    }
    
    if ($action === 'eliminar') {
        $param_id = $_POST['param_id'];
        $db->prepare("DELETE FROM cc_lote_parametros WHERE id = ? AND lote_id = ?")->execute([$param_id, $lote_id]);
        setAlert('success', 'Parámetro eliminado');
        header("Location: parametros.php?lote_id=$lote_id");
        exit;
    }
}

require_once __DIR__ . '/../../includes/header.php';
?>

<div class="row mb-4">
    <div class="col-12">
        <nav aria-label="breadcrumb">
            <ol class="breadcrumb">
                <li class="breadcrumb-item"><a href="list.php">Control de Calidad</a></li>
                <li class="breadcrumb-item active">Configurar Parámetros</li>
            </ol>
        </nav>
        <h2><i class="bi bi-sliders me-2"></i>Configurar Parámetros de Control</h2>
        <p class="text-muted">
            <strong>Lote:</strong> <?= htmlspecialchars($lote['codigo']) ?> - <?= htmlspecialchars($lote['nombre']) ?>
            <span class="badge bg-<?= $lote['nivel'] == 'Normal' ? 'success' : ($lote['nivel'] == 'Alto' ? 'danger' : 'info') ?> ms-2">
                Nivel <?= $lote['nivel'] ?>
            </span>
        </p>
    </div>
</div>

<div class="row">
    <!-- Formulario para agregar parámetro -->
    <div class="col-md-5">
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-plus-circle me-2"></i>Agregar Parámetro</h5>
            </div>
            <div class="card-body">
                <form method="POST" id="formAgregar">
                    <input type="hidden" name="action" value="agregar">
                    
                    <div class="mb-3">
                        <label class="form-label">Categoría</label>
                        <select id="categoria" class="form-select">
                            <option value="">-- Seleccione categoría --</option>
                            <?php foreach ($categorias as $cat): ?>
                            <option value="<?= $cat['id'] ?>"><?= htmlspecialchars($cat['nombre']) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Examen</label>
                        <select id="examen" class="form-select" disabled>
                            <option value="">-- Primero seleccione categoría --</option>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Parámetro <span class="text-danger">*</span></label>
                        <select name="parametro_id" id="parametro" class="form-select" required disabled>
                            <option value="">-- Primero seleccione examen --</option>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Tipo de Resultado</label>
                        <select name="tipo_resultado" id="tipoResultado" class="form-select">
                            <option value="numerico">Numérico</option>
                            <option value="cualitativo">Cualitativo (Positivo/Negativo)</option>
                        </select>
                    </div>
                    
                    <!-- Campos para resultado numérico -->
                    <div id="camposNumericos">
                        <div class="alert alert-info small mb-3">
                            <i class="bi bi-info-circle me-1"></i>
                            Ingrese el <strong>Límite Inferior</strong> y <strong>Límite Superior</strong> del control.
                            El sistema calculará automáticamente la Media (centro) y la Desviación Estándar (rango ÷ 4).
                            <br><strong>±1DE</strong> y <strong>±2DE</strong> se distribuyen equitativamente dentro del rango.
                        </div>
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Límite Inferior <span class="text-danger">*</span></label>
                                <input type="number" step="0.0001" name="rango_min" id="addRangoMin" class="form-control"
                                       placeholder="Valor mínimo" required>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Límite Superior <span class="text-danger">*</span></label>
                                <input type="number" step="0.0001" name="rango_max" id="addRangoMax" class="form-control"
                                       placeholder="Valor máximo" required>
                            </div>
                        </div>
                        <!-- Vista previa de valores calculados -->
                        <div id="previewCalculo" class="card bg-light mb-3" style="display:none;">
                            <div class="card-body py-2 px-3">
                                <small class="text-muted d-block mb-1"><strong>Valores calculados:</strong></small>
                                <div class="row text-center">
                                    <div class="col-3">
                                        <small class="text-muted">-2DE</small><br>
                                        <strong class="text-danger" id="prevMinus2de">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">-1DE</small><br>
                                        <strong class="text-warning" id="prevMinus1de">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">Media</small><br>
                                        <strong class="text-success" id="prevMedia">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">+1DE</small><br>
                                        <strong class="text-warning" id="prevPlus1de">-</strong>
                                    </div>
                                    <div class="col-3">
                                        <small class="text-muted">+2DE</small><br>
                                        <strong class="text-danger" id="prevPlus2de">-</strong>
                                    </div>
                                </div>
                                <div class="text-center mt-1">
                                    <small class="text-muted">DE = <span id="prevDE">-</span></small>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Campos para resultado cualitativo -->
                    <div id="camposCualitativos" style="display: none;">
                        <div class="mb-3">
                            <label class="form-label">Valor Esperado</label>
                            <select name="valor_esperado_cualitativo" class="form-select">
                                <option value="Positivo">Positivo</option>
                                <option value="Negativo">Negativo</option>
                                <option value="Reactivo">Reactivo</option>
                                <option value="No Reactivo">No Reactivo</option>
                            </select>
                        </div>
                    </div>
                    
                    <button type="submit" class="btn btn-primary w-100">
                        <i class="bi bi-plus-lg me-1"></i> Agregar Parámetro
                    </button>
                </form>
            </div>
        </div>
    </div>
    
    <!-- Lista de parámetros configurados -->
    <div class="col-md-7">
        <div class="card">
            <div class="card-header d-flex justify-content-between align-items-center">
                <h5 class="mb-0"><i class="bi bi-list-check me-2"></i>Parámetros Configurados</h5>
                <span class="badge bg-primary"><?= count($parametrosConfigurados) ?> parámetros</span>
            </div>
            <div class="card-body">
                <?php if (empty($parametrosConfigurados)): ?>
                <div class="text-center text-muted py-4">
                    <i class="bi bi-inbox fs-1"></i>
                    <p>No hay parámetros configurados para este lote</p>
                </div>
                <?php else: ?>
                <div class="table-responsive">
                    <table class="table table-sm table-hover">
                        <thead>
                            <tr>
                                <th>Examen / Parámetro</th>
                                <th>Tipo</th>
                                <th>Lím. Inferior</th>
                                <th>Lím. Superior</th>
                                <th>Media</th>
                                <th>DE</th>
                                <th></th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($parametrosConfigurados as $p): ?>
                            <tr>
                                <td>
                                    <small class="text-muted d-block"><?= htmlspecialchars($p['examen_nombre']) ?></small>
                                    <strong><?= htmlspecialchars($p['parametro_nombre']) ?></strong>
                                    <?php if ($p['unidad']): ?>
                                    <small class="text-muted">(<?= htmlspecialchars($p['unidad']) ?>)</small>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <span class="badge bg-<?= $p['tipo_resultado'] == 'numerico' ? 'primary' : 'info' ?>">
                                        <?= ucfirst($p['tipo_resultado']) ?>
                                    </span>
                                </td>
                                <?php if ($p['tipo_resultado'] == 'numerico'): ?>
                                <td>
                                    <?= $p['rango_min'] !== null ? number_format($p['rango_min'], 2) : '-' ?>
                                </td>
                                <td>
                                    <?= $p['rango_max'] !== null ? number_format($p['rango_max'], 2) : '-' ?>
                                </td>
                                <td>
                                    <strong><?= $p['valor_asignado'] ? number_format($p['valor_asignado'], 2) : '-' ?></strong>
                                </td>
                                <td>
                                    <?= $p['desviacion_estandar'] ? number_format($p['desviacion_estandar'], 4) : '-' ?>
                                </td>
                                <?php else: ?>
                                <td colspan="4" class="text-center">
                                    <span class="badge bg-secondary"><?= htmlspecialchars($p['valor_esperado_cualitativo']) ?></span>
                                </td>
                                <?php endif; ?>
                                <td class="text-nowrap">
                                    <button type="button" class="btn btn-sm btn-outline-primary me-1" title="Editar rangos"
                                            onclick='editarParametro(<?= json_encode($p) ?>)'>
                                        <i class="bi bi-pencil"></i>
                                    </button>
                                    <form method="POST" class="d-inline" onsubmit="return confirm('¿Eliminar este parámetro?');">
                                        <input type="hidden" name="action" value="eliminar">
                                        <input type="hidden" name="param_id" value="<?= $p['id'] ?>">
                                        <button type="submit" class="btn btn-sm btn-outline-danger" title="Eliminar">
                                            <i class="bi bi-trash"></i>
                                        </button>
                                    </form>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
                <?php endif; ?>
            </div>
        </div>
        
        <div class="mt-3 text-end">
            <a href="list.php" class="btn btn-outline-secondary me-2">
                <i class="bi bi-arrow-left me-1"></i> Volver a Lotes
            </a>
            <?php if (!empty($parametrosConfigurados)): ?>
            <a href="ingresar.php?lote_id=<?= $lote_id ?>" class="btn btn-success">
                <i class="bi bi-journal-plus me-1"></i> Ingresar Resultados
            </a>
            <?php endif; ?>
        </div>
    </div>
</div>

<!-- Modal para editar parámetro -->
<div class="modal fade" id="modalEditar" tabindex="-1" aria-labelledby="modalEditarLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <form method="POST" id="formEditar">
                <input type="hidden" name="action" value="editar">
                <input type="hidden" name="param_id" id="edit_param_id">
                <input type="hidden" name="tipo_resultado" id="edit_tipo_resultado">
                <div class="modal-header">
                    <h5 class="modal-title" id="modalEditarLabel">
                        <i class="bi bi-pencil-square me-2"></i>Editar Rangos de Control
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                </div>
                <div class="modal-body">
                    <div class="mb-3">
                        <strong id="edit_nombre_param" class="text-primary"></strong>
                    </div>
                    
                    <!-- Campos numéricos -->
                    <div id="editCamposNumericos">
                        <div class="row">
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Límite Inferior <span class="text-danger">*</span></label>
                                <input type="number" step="0.0001" name="rango_min" id="edit_rango_min" class="form-control" required>
                            </div>
                            <div class="col-md-6 mb-3">
                                <label class="form-label">Límite Superior <span class="text-danger">*</span></label>
                                <input type="number" step="0.0001" name="rango_max" id="edit_rango_max" class="form-control" required>
                            </div>
                        </div>
                        <!-- Vista previa en modal -->
                        <div id="editPreviewCalculo" class="card bg-light mb-3" style="display:none;">
                            <div class="card-body py-2 px-3">
                                <small class="text-muted d-block mb-1"><strong>Valores calculados:</strong></small>
                                <div class="row text-center">
                                    <div class="col-3">
                                        <small class="text-muted">-2DE</small><br>
                                        <strong class="text-danger" id="editPrevMinus2de">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">-1DE</small><br>
                                        <strong class="text-warning" id="editPrevMinus1de">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">Media</small><br>
                                        <strong class="text-success" id="editPrevMedia">-</strong>
                                    </div>
                                    <div class="col-2">
                                        <small class="text-muted">+1DE</small><br>
                                        <strong class="text-warning" id="editPrevPlus1de">-</strong>
                                    </div>
                                    <div class="col-3">
                                        <small class="text-muted">+2DE</small><br>
                                        <strong class="text-danger" id="editPrevPlus2de">-</strong>
                                    </div>
                                </div>
                                <div class="text-center mt-1">
                                    <small class="text-muted">DE = <span id="editPrevDE">-</span></small>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Campos cualitativos -->
                    <div id="editCamposCualitativos" style="display:none;">
                        <div class="mb-3">
                            <label class="form-label">Valor Esperado</label>
                            <select name="valor_esperado_cualitativo" id="edit_valor_esperado" class="form-select">
                                <option value="Positivo">Positivo</option>
                                <option value="Negativo">Negativo</option>
                                <option value="Reactivo">Reactivo</option>
                                <option value="No Reactivo">No Reactivo</option>
                            </select>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-primary">
                        <i class="bi bi-check-lg me-1"></i>Guardar Cambios
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const categoria = document.getElementById('categoria');
    const examen = document.getElementById('examen');
    const parametro = document.getElementById('parametro');
    const tipoResultado = document.getElementById('tipoResultado');
    const camposNumericos = document.getElementById('camposNumericos');
    const camposCualitativos = document.getElementById('camposCualitativos');
    
    // Cargar exámenes al seleccionar categoría
    categoria.addEventListener('change', function() {
        examen.innerHTML = '<option value="">Cargando...</option>';
        examen.disabled = true;
        parametro.innerHTML = '<option value="">-- Primero seleccione examen --</option>';
        parametro.disabled = true;
        
        if (!this.value) {
            examen.innerHTML = '<option value="">-- Primero seleccione categoría --</option>';
            return;
        }
        
        fetch('get_examenes.php?categoria_id=' + this.value)
            .then(r => r.json())
            .then(data => {
                examen.innerHTML = '<option value="">-- Seleccione examen --</option>';
                data.forEach(e => {
                    examen.innerHTML += `<option value="${e.id}">${e.codigo} - ${e.nombre}</option>`;
                });
                examen.disabled = false;
            })
            .catch(err => {
                console.error('Error cargando exámenes:', err);
                examen.innerHTML = '<option value="">Error al cargar exámenes</option>';
            });
    });
    
    // Cargar parámetros al seleccionar examen
    examen.addEventListener('change', function() {
        parametro.innerHTML = '<option value="">Cargando...</option>';
        parametro.disabled = true;
        
        if (!this.value) {
            parametro.innerHTML = '<option value="">-- Primero seleccione examen --</option>';
            return;
        }
        
        fetch('get_parametros.php?examen_id=' + this.value)
            .then(r => {
                if (!r.ok) throw new Error('HTTP ' + r.status);
                return r.json();
            })
            .then(data => {
                if (data.error) throw new Error(data.error);
                parametro.innerHTML = '<option value="">-- Seleccione parámetro --</option>';
                data.forEach(p => {
                    if (!p.es_titulo) {
                        parametro.innerHTML += `<option value="${p.id}">${p.nombre} ${p.unidad ? '(' + p.unidad + ')' : ''}</option>`;
                    }
                });
                parametro.disabled = false;
            })
            .catch(err => {
                console.error('Error cargando parámetros:', err);
                parametro.innerHTML = '<option value="">Error al cargar parámetros</option>';
                parametro.disabled = false;
            });
    });
    
    // Cambiar campos según tipo de resultado
    tipoResultado.addEventListener('change', function() {
        if (this.value === 'numerico') {
            camposNumericos.style.display = 'block';
            camposCualitativos.style.display = 'none';
        } else {
            camposNumericos.style.display = 'none';
            camposCualitativos.style.display = 'block';
        }
    });
    
    // ===== Cálculo automático para el formulario de AGREGAR =====
    const addRangoMin = document.getElementById('addRangoMin');
    const addRangoMax = document.getElementById('addRangoMax');
    const previewCalculo = document.getElementById('previewCalculo');
    
    function actualizarPreviewAgregar() {
        const min = parseFloat(addRangoMin.value);
        const max = parseFloat(addRangoMax.value);
        
        if (!isNaN(min) && !isNaN(max) && max > min) {
            const media = (max + min) / 2;
            const de = (max - min) / 4;
            
            document.getElementById('prevMinus2de').textContent = min.toFixed(2);
            document.getElementById('prevMinus1de').textContent = (media - de).toFixed(2);
            document.getElementById('prevMedia').textContent = media.toFixed(2);
            document.getElementById('prevPlus1de').textContent = (media + de).toFixed(2);
            document.getElementById('prevPlus2de').textContent = max.toFixed(2);
            document.getElementById('prevDE').textContent = de.toFixed(4);
            previewCalculo.style.display = 'block';
        } else {
            previewCalculo.style.display = 'none';
        }
    }
    
    addRangoMin.addEventListener('input', actualizarPreviewAgregar);
    addRangoMax.addEventListener('input', actualizarPreviewAgregar);
    
    // ===== Cálculo automático para el modal de EDITAR =====
    const editRangoMin = document.getElementById('edit_rango_min');
    const editRangoMax = document.getElementById('edit_rango_max');
    const editPreview = document.getElementById('editPreviewCalculo');
    
    function actualizarPreviewEditar() {
        const min = parseFloat(editRangoMin.value);
        const max = parseFloat(editRangoMax.value);
        
        if (!isNaN(min) && !isNaN(max) && max > min) {
            const media = (max + min) / 2;
            const de = (max - min) / 4;
            
            document.getElementById('editPrevMinus2de').textContent = min.toFixed(2);
            document.getElementById('editPrevMinus1de').textContent = (media - de).toFixed(2);
            document.getElementById('editPrevMedia').textContent = media.toFixed(2);
            document.getElementById('editPrevPlus1de').textContent = (media + de).toFixed(2);
            document.getElementById('editPrevPlus2de').textContent = max.toFixed(2);
            document.getElementById('editPrevDE').textContent = de.toFixed(4);
            editPreview.style.display = 'block';
        } else {
            editPreview.style.display = 'none';
        }
    }
    
    editRangoMin.addEventListener('input', actualizarPreviewEditar);
    editRangoMax.addEventListener('input', actualizarPreviewEditar);
});

// Función para abrir modal de edición
function editarParametro(p) {
    document.getElementById('edit_param_id').value = p.id;
    document.getElementById('edit_tipo_resultado').value = p.tipo_resultado;
    document.getElementById('edit_nombre_param').textContent = 
        p.examen_nombre + ' → ' + p.parametro_nombre + (p.unidad ? ' (' + p.unidad + ')' : '');
    
    if (p.tipo_resultado === 'numerico') {
        document.getElementById('editCamposNumericos').style.display = 'block';
        document.getElementById('editCamposCualitativos').style.display = 'none';
        document.getElementById('edit_rango_min').value = p.rango_min || '';
        document.getElementById('edit_rango_max').value = p.rango_max || '';
        
        // Trigger preview calculation
        const min = parseFloat(p.rango_min);
        const max = parseFloat(p.rango_max);
        if (!isNaN(min) && !isNaN(max) && max > min) {
            const media = (max + min) / 2;
            const de = (max - min) / 4;
            document.getElementById('editPrevMinus2de').textContent = min.toFixed(2);
            document.getElementById('editPrevMinus1de').textContent = (media - de).toFixed(2);
            document.getElementById('editPrevMedia').textContent = media.toFixed(2);
            document.getElementById('editPrevPlus1de').textContent = (media + de).toFixed(2);
            document.getElementById('editPrevPlus2de').textContent = max.toFixed(2);
            document.getElementById('editPrevDE').textContent = de.toFixed(4);
            document.getElementById('editPreviewCalculo').style.display = 'block';
        }
    } else {
        document.getElementById('editCamposNumericos').style.display = 'none';
        document.getElementById('editCamposCualitativos').style.display = 'block';
        document.getElementById('edit_valor_esperado').value = p.valor_esperado_cualitativo || 'Positivo';
    }
    
    var modal = new bootstrap.Modal(document.getElementById('modalEditar'));
    modal.show();
}
</script>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>
