@@ -1168,6 +1168,19 @@ function _actualizarContadorExamenes() {
badge.classList.toggle('d-none', n === 0);
}
+/**
+ * Limpia la selección de exámenes dejando contador y precios en sincronía.
+ * examTS.clear() quita los ítems en modo silencioso, así que no dispara
+ * onItemRemove: sin esto la insignia conserva el número anterior y el panel
+ * de precios sigue mostrando exámenes que ya no están seleccionados.
+ */
+function limpiarExamenes() {
+ if (!examTS) return;
+ examTS.clear();
+ _actualizarContadorExamenes();
+ recalcularPrecios();
+}
+
document.addEventListener('DOMContentLoaded', () => {
examTS = new TomSelect('#sel-examenes', {
plugins: ['remove_button'],
@@ -1711,7 +1724,10 @@ async function consultarExamenesRips(cedula) {
async function cargarExamenesRips() {
if (!_ripsData?.encontrados?.length || !examTS) return;
+ // Se agregan en modo silencioso para no recalcular precios en cada examen;
+ // el recálculo y el contador se hacen una sola vez al terminar.
_ripsData.encontrados.forEach(e => examTS.addItem(String(e.exam_tipo_id), true));
+ _actualizarContadorExamenes();
if (_ripsData.diagnostico_cod) {
document.getElementById('inp-diag').value = _ripsData.diagnostico_cod;
}
@@ -2382,7 +2398,7 @@ function escJs(s) { return String(s||'').replace(/\\/g,'\\\\').replace(/'/g,"\\'
function toggleSoloMuestras() {
const solo = document.getElementById('chk-solo-muestras').checked;
const wrap = document.getElementById('wrap-examenes');
- if (examTS) { examTS.clear(); solo ? examTS.disable() : examTS.enable(); }
+ if (examTS) { limpiarExamenes(); solo ? examTS.disable() : examTS.enable(); }
wrap.classList.toggle('disabled', solo);
document.getElementById('bloque-medico').style.display = solo ? 'none' : '';
if (solo) quitarMedico();
@@ -2390,7 +2406,7 @@ function toggleSoloMuestras() {
function resetCheckboxes() {
document.getElementById('chk-solo-muestras').checked = false;
- if (examTS) { examTS.clear(); examTS.enable(); }
+ if (examTS) { limpiarExamenes(); examTS.enable(); }
document.getElementById('wrap-examenes').classList.remove('disabled');
document.getElementById('bloque-medico').style.display = '';
descartarRips();