diff --git a/modules/turnero/api/buscar_cie10.php b/modules/turnero/api/buscar_cie10.php
new file mode 100644
index 0000000..4479234
--- /dev/null
+++ b/modules/turnero/api/buscar_cie10.php
@@ -0,0 +1,22 @@
+ []]); }
+
+$pdo = db();
+$like = '%' . $q . '%';
+
+// Código exacto primero, luego coincidencias por descripción
+$stmt = $pdo->prepare(
+ "SELECT cod_diag, concepto
+ FROM cie10_diagnosticos
+ WHERE cod_diag LIKE ? OR concepto LIKE ?
+ ORDER BY CASE WHEN cod_diag LIKE ? THEN 0 ELSE 1 END, cod_diag
+ LIMIT 12"
+);
+$stmt->execute([$like, $like, $like]);
+
+jsonOk(['items' => $stmt->fetchAll(PDO::FETCH_ASSOC)]);
diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php
index fc6a392..ebbaea8 100644
--- a/modules/turnero/views/recepcion.php
+++ b/modules/turnero/views/recepcion.php
@@ -796,7 +796,15 @@ document.addEventListener('DOMContentLoaded', function() {
@@ -1133,7 +1141,7 @@ document.addEventListener('DOMContentLoaded', () => {
examTS = new TomSelect('#sel-examenes', {
plugins: ['remove_button'],
maxOptions: null,
- selectOnTab: true,
+ selectOnTab: false,
onItemAdd() { recalcularPrecios(); examTS.setTextboxValue(''); examTS.refreshOptions(false); },
onItemRemove: () => recalcularPrecios(),
@@ -2355,6 +2363,37 @@ function quitarEmpresa() {
document.getElementById('inp-diag').value = '';
}
+// ── CIE-10 autocomplete ───────────────────────────────────────
+let _diagTimer = null, _diagResultados = [];
+function buscarDiag() {
+ clearTimeout(_diagTimer);
+ _diagTimer = setTimeout(_doDiagSearch, 250);
+}
+async function _doDiagSearch() {
+ const q = document.getElementById('inp-diag').value.trim();
+ const ul = document.getElementById('diag-resultados');
+ if (q.length < 2) { ul.classList.add('d-none'); return; }
+ const res = await fetch(`${API}buscar_cie10.php?q=${encodeURIComponent(q)}`);
+ const j = await res.json();
+ _diagResultados = j.items || [];
+ if (!_diagResultados.length) {
+ ul.innerHTML = 'Sin resultados';
+ ul.classList.remove('d-none'); return;
+ }
+ ul.innerHTML = _diagResultados.map((d, i) => `
+
+ ${escHtml(d.cod_diag)}
+ ${escHtml(d.concepto)}
+ `).join('');
+ ul.classList.remove('d-none');
+}
+function seleccionarDiag(cod, concepto) {
+ document.getElementById('inp-diag').value = cod;
+ document.getElementById('diag-resultados').classList.add('d-none');
+ _diagResultados = [];
+}
+
// ── Motor de precios ──────────────────────────────────────────
let _recalcTimer;
let _preciosActivos = [];