Test Menu

Test Menu

Start typing to search our complete test catalog. Select a result to view all details.

let tests = []; let timer = null; function esc(s){ return (s||'').toString().replace(/[&<>]/g, c => ({'&':'&','<':'<','>':'>'}[c])); } function renderSuggestions(list){ const wrap = document.getElementById('suggestions'); if(!list.length){ wrap.innerHTML = ''; return; } const items = list.slice(0,10).map(i => `
${esc(i.name)}
${esc(i.department || '')} ${i.sample? ' • '+esc(i.sample):''}
` ).join(''); wrap.innerHTML = `
${items}
`; wrap.querySelectorAll('.sugg').forEach(el => { el.addEventListener('click', () => { const slug = el.getAttribute('data-slug'); const selected = tests.find(t => t.slug === slug); if(selected){ renderDetail(selected); } wrap.innerHTML = ''; }); }); } function renderDetail(t){ const root = document.getElementById('testDetail'); const row = (k,v) => v ? `${k}${esc(v)}` : ''; root.innerHTML = `

${esc(t.name)}

${row('Department', t.department)} ${row('Patient Preparation', t.prep)} ${row('Sample Type', t.sample)} ${row('Container', t.container)} ${row('Turnaround Time (hours)', t.tat_hours)} ${row('Price', t.price)} ${row('Related Tests', t.related)} ${row('Notes', t.notes)}
`; } function search(q){ q = (q||'').toLowerCase().trim(); if(!q){ renderSuggestions([]); return; } const words = q.split(/\s+/); const scored = tests.map(t => { const hay = [t.name, t.department, t.sample, t.prep, t.container, t.related, t.keywords].join(' ').toLowerCase(); let score = 0; words.forEach(w => { if(hay.includes(w)) score += 1; }); // Boost prefix match on name if(t.name.toLowerCase().startsWith(q)) score += 2; return { t, score }; }).filter(x => x.score > 0).sort((a,b) => b.score - a.score).map(x => x.t); renderSuggestions(scored); } function init(){ fetch(INDEX_URL).then(r => r.json()).then(data => { tests = data; }).catch(e => console.error('Index load error', e)); const inp = document.getElementById('testQuery'); inp.addEventListener('input', () => { clearTimeout(timer); timer = setTimeout(() => search(inp.value), 120); }); // Enter to choose first suggestion inp.addEventListener('keydown', (e) => { if(e.key === 'Enter'){ const first = document.querySelector('#suggestions .sugg'); if(first){ first.click(); e.preventDefault(); } } }); } if(document.readyState !== 'loading') init(); else document.addEventListener('DOMContentLoaded', init); })();
Scroll to Top