var tabla;

function init() {
    // Inicializar Select2 para Pacientes
    $('#idpersona').select2({
        placeholder: 'Busque por nombre o número de documento...',
        minimumInputLength: 1,
        ajax: {
            url: '../ajax/persona.php?op=select_paciente',
            dataType: 'json',
            delay: 250,
            processResults: function (data) {
                return {
                    results: data
                };
            },
            cache: true
        }
    });

    // Evento al seleccionar paciente
    $('#idpersona').on('select2:select', function (e) {
        var data = e.params.data;
        $("#info_paciente").html("<b>Seleccionado:</b> " + data.text);
    });

    // Inicializar Select2 para Diagnósticos (CIE-10)
    $('#diagnostico_select').select2({
        placeholder: 'Busque diagnóstico (CIE-10)...',
        minimumInputLength: 1,
        ajax: {
            url: '../ajax/diagnostico.php?op=buscar_cie10',
            dataType: 'json',
            delay: 250,
            processResults: function (data) {
                return {
                    results: data
                };
            },
            cache: true
        }
    });

    cambiarTipoSolicitud();
}

function cambiarTipoSolicitud() {
    var tipo = $("#tipo_solicitud").val();

    // Ocultar todos
    $(".div-laboratorio").hide();
    $(".div-imagenologia").hide();
    $(".div-especializado").hide();

    // Mostrar según tipo
    if (tipo == 'LABORATORIO') {
        $(".div-laboratorio").show();
    } else if (tipo == 'IMAGENOLOGIA') {
        $(".div-imagenologia").show();
    } else if (tipo == 'ESPECIALIZADO') {
        $(".div-especializado").show();
    }
}

function solicitarVistaPrevia() {
    // Validaciones básicas
    var idpersona = $("#idpersona").val();
    if (!idpersona) {
        bootbox.alert("Debe seleccionar un paciente.");
        return;
    }

    generarSolicitud();
}

function generarSolicitud() {
    var dialog = bootbox.dialog({
        message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i> Generando Vista Previa...</p>',
        closeButton: false
    });

    console.log("Generando solicitud de examen...");

    // Recolectar datos del form
    var contenido = {};
    var tipo = $("#tipo_solicitud").val();

    // Diagnóstico
    var diagSelect = $('#diagnostico_select').val();
    var diagTexto = $("#diagnostico_texto").val();
    var diagFinal = "";

    if (diagSelect) {
        if (Array.isArray(diagSelect)) {
            diagFinal += diagSelect.join("\n") + "\n";
        } else {
            diagFinal += diagSelect + "\n";
        }
    }
    diagFinal += diagTexto;
    contenido.diagnostico = diagFinal;

    // Indicaciones clínicas
    contenido.indicaciones = $("#indicaciones").val();

    // Datos específicos según tipo
    if (tipo == 'LABORATORIO') {
        contenido.categoria = $("#categoria_lab").val();
        contenido.examenes = $("#examenes_lab").val();
    } else if (tipo == 'IMAGENOLOGIA') {
        contenido.tipo_estudio = $("#tipo_imagen").val();
        contenido.region_anatomica = $("#region_anatomica").val();
        contenido.especificaciones = $("#especificaciones_imagen").val();
    } else if (tipo == 'ESPECIALIZADO') {
        contenido.tipo_examen = $("#tipo_especializado").val();
        contenido.especificaciones = $("#especificaciones_esp").val();
    }

    $.ajax({
        url: "../ajax/solicitud_examen.php?op=guardar",
        type: "POST",
        data: {
            idpersona: $("#idpersona").val(),
            tipo: tipo,
            contenido: JSON.stringify(contenido)
        },
        dataType: "json",
        success: function (response) {
            if (response.success) {
                var idsolicitud = response.idsolicitud;
                dialog.modal('hide');

                // ABRIR VENTANA DE VISTA PREVIA
                var url = "../reportes/vista_solicitud_examen.php?idsolicitud=" + idsolicitud;
                window.open(url, '_blank');

                // Limpiar form
                $("#idpersona").val(null).trigger('change');
                $("#diagnostico_select").val(null).trigger('change');
                $("#diagnostico_texto").val("");
                $("#indicaciones").val("");
                $("#examenes_lab").val("");
                $("#region_anatomica").val("");
                $("#especificaciones_imagen").val("");
                $("#especificaciones_esp").val("");

            } else {
                dialog.modal('hide');
                bootbox.alert('<div class="alert alert-danger">Error al guardar: ' + response.message + '</div>');
            }
        },
        error: function (xhr, status, error) {
            dialog.modal('hide');
            bootbox.alert("Error de comunicación: " + error);
        }
    });
}

init();
