// ============================================================
// LÓGICA DE DIAGNÓSTICOS CIE-10 (Globales para la atención)
// ============================================================

var pestanaParaDiagnostico = null; // ID de la pestaña (opcional, ahora es global)
var currentDiagnosticosCIE10 = []; // Array global de diagnósticos: {codigo, enfermedad, tipo}

// 1. ABRIR MODAL
// Usamos delegación de eventos porque los botones se crean dinámicamente
$(document).on("click", ".btn-agregar-diagnostico", function () {
    // Ya no necesitamos identificar pestaña específica para guardar,
    // pero sí para saber que se invocó correctamente.
    $("#txtBuscarDiagnostico").val("");
    $("#bodyTablaDiagnosticos").html("");

    // Abrir modal
    $("#modalDiagnosticos").modal("show");

    // Foco en input
    setTimeout(function () {
        $("#txtBuscarDiagnostico").focus();
    }, 500);
});

// 2. BUSCAR DIAGNÓSTICOS
function buscarDiagnosticosCIE10() {
    var texto = $("#txtBuscarDiagnostico").val();
    if (texto.length < 3) {
        bootbox.alert("Ingrese al menos 3 caracteres para buscar.");
        return;
    }

    $("#bodyTablaDiagnosticos").html('<tr><td colspan="3" class="text-center"><i class="fa fa-spinner fa-spin"></i> Buscando...</td></tr>');

    // FIX: El backend espera 'texto' por GET, no por POST
    var url = "../ajax/diagnostico.php?op=listar&texto=" + encodeURIComponent(texto);

    $.get(url, function (data) {
        try {
            var registros = JSON.parse(data);
            var html = "";

            if (registros.aaData && registros.aaData.length > 0) {
                registros.aaData.forEach(function (reg) {
                    var codigo = reg[1];
                    var enfermedad = reg[2];

                    html += "<tr>";
                    html += '<td><button class="btn btn-warning btn-xs" onclick="seleccionarDiagnostico(\'' + codigo + '\', \'' + enfermedad + '\')"><span class="fa fa-plus"></span></button></td>';
                    html += '<td>' + codigo + '</td>';
                    html += '<td>' + enfermedad + '</td>';
                    html += "</tr>";
                });
            } else {
                html = '<tr><td colspan="3" class="text-center">No se encontraron resultados</td></tr>';
            }

            $("#bodyTablaDiagnosticos").html(html);

        } catch (e) {
            console.error("Error parseando respuesta diagnósticos:", e);
            $("#bodyTablaDiagnosticos").html('<tr><td colspan="3" class="text-center">Error al procesar respuesta del servidor</td></tr>');
        }
    });
}

// Enter en caja de texto
$("#txtBuscarDiagnostico").keypress(function (e) {
    if (e.which == 13) {
        buscarDiagnosticosCIE10();
    }
});

// 3. SELECCIONAR DIAGNÓSTICO Y AGREGAR GLOBALMENTE
function seleccionarDiagnostico(codigo, enfermedad) {
    // Verificar si ya existe globalmente
    var existe = currentDiagnosticosCIE10.find(d => d.codigo === codigo);

    if (existe) {
        bootbox.alert("Este diagnóstico ya ha sido agregado.");
        return;
    }

    // Agregar a la lista global
    currentDiagnosticosCIE10.push({
        codigo: codigo,
        enfermedad: enfermedad,
        tipo: 'PRESUNTIVO' // Valor por defecto
    });

    // Sincronizar UI en TODAS las pestañas
    sincronizarDiagnosticosEnUI();

    $("#modalDiagnosticos").modal("hide");

    // Notificar
    bootbox.alert("Diagnóstico agregado. Se mostrará en todos los formatos activos.");
}

// 4. ELIMINAR DIAGNÓSTICO GLOBAL
function eliminarDiagnostico(codigo) {
    currentDiagnosticosCIE10 = currentDiagnosticosCIE10.filter(d => d.codigo !== codigo);
    sincronizarDiagnosticosEnUI();
}

// 5. SINCRONIZAR UI
function sincronizarDiagnosticosEnUI() {
    // Buscar todas las tablas de diagnósticos en pestañas abiertas
    $(".tabla-diagnosticos tbody").each(function () {
        var $tbody = $(this);
        $tbody.empty(); // Limpiar tabla

        currentDiagnosticosCIE10.forEach(function (diag) {
            var fila = '<tr class="filas">';
            fila += '<td><button type="button" class="btn btn-danger btn-xs" onclick="eliminarDiagnostico(\'' + diag.codigo + '\')"><i class="fa fa-trash"></i></button></td>';
            fila += '<td><input type="hidden" name="codigo_cie[]" value="' + diag.codigo + '">' + diag.codigo + '</td>';
            fila += '<td><input type="hidden" name="enfermedad_cie[]" value="' + diag.enfermedad + '">' + diag.enfermedad + '</td>';
            fila += '<td>';
            fila += '<select name="tipo_cie[]" class="form-control input-sm" onchange="actualizarTipoDiagnostico(\'' + diag.codigo + '\', this.value)">';
            fila += '<option value="PRESUNTIVO" ' + (diag.tipo === 'PRESUNTIVO' ? 'selected' : '') + '>Presuntivo</option>';
            fila += '<option value="DEFINITIVO" ' + (diag.tipo === 'DEFINITIVO' ? 'selected' : '') + '>Definitivo</option>';
            fila += '<option value="REPETITIVO" ' + (diag.tipo === 'REPETITIVO' ? 'selected' : '') + '>Repetitivo</option>';
            fila += '</select>';
            fila += '</td>';
            fila += '</tr>';

            $tbody.append(fila);
        });
    });
}

// 6. ACTUALIZAR TIPO (Presuntivo/Definitivo)
function actualizarTipoDiagnostico(codigo, nuevoTipo) {
    var diag = currentDiagnosticosCIE10.find(d => d.codigo === codigo);
    if (diag) {
        diag.tipo = nuevoTipo;
        // No sincronizamos toda la UI para no perder foco ni recargar selects, 
        // pero actualizamos los select de otras pestañas
        $('input[name="codigo_cie[]"][value="' + codigo + '"]').closest('tr').find('select[name="tipo_cie[]"]').val(nuevoTipo);
    }
}
