Dry Eye Syndrome Symptom Checker

Dry Eye Syndrome Symptom Checker

An informational tool to help you assess your eye comfort.

About This Checker

This tool is based on a simplified version of the Ocular Surface Disease Index (OSDI), a standard questionnaire used to assess dry eye symptoms.

For each of the following symptoms, please indicate how often you have experienced it over the last week.

Disclaimer: This is an educational tool, not a diagnostic one. A definitive diagnosis of Dry Eye Syndrome can only be made by a qualified eye care professional (an optometrist or ophthalmologist) after a complete eye examination.

${q.text}

${options.map(o => ` `).join('')}
`).join(''); } function updateNavButtons() { const currentIndex = tabOrder.indexOf(currentTab); nav.prev.disabled = currentIndex === 0; nav.next.disabled = currentIndex === tabOrder.length - 1; if (currentTab === 'instructions') nav.next.textContent = 'Start Questionnaire'; else if (currentTab === 'questionnaire') nav.next.textContent = 'See Results'; else nav.next.textContent = 'Next'; } function setActiveTab(tabName) { if (!tabs[tabName] || !sections[tabName] || tabs[tabName].disabled) return; Object.values(tabs).forEach(t => t.classList.remove('tab-active')); Object.values(sections).forEach(s => s.classList.add('hidden')); tabs[tabName].classList.add('tab-active'); sections[tabName].classList.remove('hidden'); currentTab = tabName; updateNavButtons(); } function calculateScore() { const formData = new FormData(dryEyeForm); let sumOfScores = 0; let questionsAnswered = 0; assessmentData.responses = []; for (const q of questions) { const value = formData.get(q.id); if (value !== null) { sumOfScores += parseInt(value, 10); questionsAnswered++; assessmentData.responses.push({ question: q.text, answerValue: parseInt(value, 10) }); } else { alert('Please answer all questions before proceeding.'); return false; } } // OSDI formula: (Sum of scores * 25) / Number of questions answered const osdiScore = (sumOfScores * 25) / questionsAnswered; assessmentData.score = Math.round(osdiScore); let level = ''; let interpretation = ''; if (osdiScore <= 12) { level = 'Normal'; interpretation = 'Your score is within the normal range, suggesting you likely do not have significant dry eye symptoms.'; } else if (osdiScore <= 22) { level = 'Mild'; interpretation = 'Your score suggests mild dry eye symptoms. Over-the-counter lubricating eye drops and environmental awareness (like taking breaks from screens) may help.'; } else if (osdiScore <= 32) { level = 'Moderate'; interpretation = 'Your score suggests moderate dry eye symptoms. It is advisable to consult with an eye care professional for a proper diagnosis and management plan.'; } else { level = 'Severe'; interpretation = 'Your score suggests severe dry eye symptoms. It is highly recommended to see an eye care professional soon for a comprehensive evaluation and treatment.'; } assessmentData.level = level; assessmentData.interpretation = interpretation; return true; } function displayResults() { resultScoreEl.textContent = assessmentData.score; resultLevelEl.textContent = assessmentData.level; resultsInterpretationEl.innerHTML = `

${assessmentData.interpretation}

`; tabs.results.disabled = false; setActiveTab('results'); } async function generatePdf() { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' }); doc.setFont('Inter', 'bold'); doc.setFontSize(22); doc.setTextColor('#b45309'); // amber-700 doc.text('Dry Eye Symptom Checker Report', 105, 25, { align: 'center' }); doc.setFont('Inter', 'normal'); doc.setFontSize(10); doc.setTextColor('#6b7280'); doc.text(`Assessment Date: ${new Date().toLocaleDateString('en-US')}`, 105, 33, { align: 'center' }); doc.setLineWidth(0.5); doc.setDrawColor('#b45309'); doc.line(20, 40, 190, 40); let startY = 55; doc.setFillColor(255, 251, 235); // amber-50 doc.rect(15, startY - 10, 180, 30, 'F'); doc.setFont('Inter', 'bold'); doc.setFontSize(14); doc.setTextColor('#1f2937'); doc.text('Symptom Score (OSDI-like):', 40, startY); doc.text('Assessed Severity:', 120, startY); doc.setFontSize(28); doc.setTextColor('#b45309'); doc.text(`${assessmentData.score} / 100`, 50, startY + 10, { align: 'center' }); doc.text(assessmentData.level, 135, startY + 10, { align: 'center' }); startY += 35; doc.setFont('Inter', 'bold'); doc.setFontSize(16); doc.setTextColor('#1f2937'); doc.text('Interpretation', 20, startY); startY += 8; doc.setFont('Inter', 'normal'); doc.setFontSize(11); doc.text(assessmentData.interpretation, 22, startY, { maxWidth: 165, lineHeightFactor: 1.5 }); startY = 265; doc.setLineWidth(0.2); doc.setDrawColor('#d1d5db'); doc.line(20, startY, 190, startY); startY += 8; doc.setFontSize(9); doc.setTextColor('#6b7280'); doc.text('This report is for informational purposes only and is not a substitute for a professional diagnosis. Consult an optometrist or ophthalmologist for a complete evaluation of your eye health.', 105, startY, { align: 'center', maxWidth: 170 }); doc.save('Dry_Eye_Symptom_Report.pdf'); } // --- Event Listeners --- nav.next.addEventListener('click', () => { if (currentTab === 'instructions') { setActiveTab('questionnaire'); } else if (currentTab === 'questionnaire') { if (calculateScore()) { displayResults(); } } }); nav.prev.addEventListener('click', () => { if (currentTab === 'questionnaire') setActiveTab('instructions'); if (currentTab === 'results') setActiveTab('questionnaire'); }); downloadPdfBtn.addEventListener('click', generatePdf); // --- Initial Load --- renderQuestions(); setActiveTab('instructions'); });
Scroll to Top