Bone Density Risk Assessment

Bone Density Risk Assessment

Subject: Risk Assessment
Date:

${advice}

`; document.getElementById('download-pdf-btn').addEventListener('click', generatePdf); } function saveFormData() { const currentFields = assessmentData[currentTabIndex].fields; if (!currentFields) return; currentFields.forEach(field => { const el = document.getElementById(field.id); if (el) formData[field.id] = el.value; }); } function calculateScore() { let score = 0; assessmentData.forEach(tab => { if (!tab.fields) return; tab.fields.forEach(field => { const userValue = formData[field.id]; if (field.type === 'number') { const age = parseInt(userValue); if (age >= 61) score += field.points['61+']; else if (age >= 51) score += field.points['51-60']; else if (age >= 40) score += field.points['40-50']; } else { if (field.points[userValue]) { score += field.points[userValue]; } } }); }); return score; } window.goToTab = function(index) { if (index > currentTabIndex && !validateCurrentTab()) { alert("Please fill out all fields before proceeding."); return; } saveFormData(); currentTabIndex = index; renderFormContent(); updateUI(); }; function validateCurrentTab() { const currentFields = assessmentData[currentTabIndex].fields; if (!currentFields) return true; for (const field of currentFields) { const el = document.getElementById(field.id); if (!el || !el.value) return false; } return true; } function updateUI() { // Update tab buttons document.querySelectorAll('.tab-btn').forEach((btn, index) => { btn.classList.toggle('active', index === currentTabIndex); }); // Update nav buttons prevBtn.classList.toggle('invisible', currentTabIndex === 0); nextBtn.classList.toggle('invisible', currentTabIndex === assessmentData.length - 1); nextBtn.textContent = (currentTabIndex === assessmentData.length - 2) ? 'See Results' : 'Next →'; } function handleNav(direction) { if (direction === 'next' && !validateCurrentTab()) { alert("Please fill out all fields before proceeding."); return; } saveFormData(); currentTabIndex += (direction === 'next' ? 1 : -1); renderFormContent(); updateUI(); } function generatePdf() { prepareReportData(); const reportContainer = document.getElementById('pdf-report-container'); reportContainer.style.display = 'block'; html2canvas(reportContainer, { scale: 2, useCORS: true }).then(canvas => { const { jsPDF } = window.jspdf; const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'portrait', unit: 'px', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const ratio = canvas.width / canvas.height; const imgHeight = pdfWidth / ratio; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, imgHeight); pdf.save('Bone-Health-Assessment.pdf'); reportContainer.style.display = 'none'; }); } function prepareReportData() { document.getElementById('report-date').textContent = new Date().toLocaleDateString('en-US'); const reportBody = document.getElementById('pdf-report-body'); const resultsContent = document.getElementById('results-content').cloneNode(true); resultsContent.querySelector('#download-pdf-btn').remove(); // Remove button from PDF let inputsHtml = `

Your Inputs

`; Object.keys(formData).forEach(key => { const fieldLabel = assessmentData.flatMap(t => t.fields || []).find(f => f.id === key)?.label || key; inputsHtml += `

${fieldLabel}

${formData[key]}

`; }); inputsHtml += `
`; let resultsHtml = `

Assessment Results

${resultsContent.innerHTML}
`; reportBody.innerHTML = inputsHtml + resultsHtml; } // --- Event Listeners --- nextBtn.addEventListener('click', () => handleNav('next')); prevBtn.addEventListener('click', () => handleNav('prev')); // --- Initial Setup --- renderTabs(); renderFormContent(); updateUI(); });
Scroll to Top