(function(){
'use strict';
const KEY='mahour-improvement-reports-v2',q=(s,r=document)=>r.querySelector(s);
const E=v=>String(v??'').replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
const REGIONS=['کمر','گردن','شانه','آرنج راست','آرنج چپ','مچ دست راست','مچ دست چپ','مچ پای راست','مچ پای چپ','پای راست','پای چپ','زانوی راست','زانوی چپ','لگن'];
const RECS={
'کمر':['فعالیت‌های روزمره را در حد تحمل ادامه دهید و از استراحت طولانی در تخت پرهیز کنید.','در نشستن، ایستادن و کارهای روزانه وضعیت بدنی مناسب را حفظ کنید و وضعیت ثابت طولانی را با وقفه‌های حرکتی کوتاه بشکنید.','هنگام بلندکردن اجسام، بار را نزدیک بدن نگه دارید و از بلندکردن اجسام سنگین یا نامطمئن بدون کمک پرهیز کنید.','تمرین‌های خانگی کششی و تقویتی تجویزشده توسط فیزیوتراپیست را منظم ادامه دهید.'],
'گردن':['وضعیت سر و گردن را هنگام کار با موبایل، رایانه و نشستن طولانی اصلاح کنید و وقفه‌های حرکتی منظم داشته باشید.','حرکات ملایم گردن و تمرین‌های انعطاف‌پذیری را فقط در محدوده‌ای که فیزیوتراپیست آموزش داده ادامه دهید.','عادت‌های صحیح وضعیت بدن و مکانیک بدن را در کارهای روزمره حفظ کنید.','تمرین‌های خانگی تقویتی و حرکتی اختصاصی را طبق برنامه فیزیوتراپیست ادامه دهید.'],
'شانه':['فعالیت‌های تشدیدکننده درد را موقتاً تعدیل کنید و بازگشت به فعالیت‌های بالای سر را تدریجی انجام دهید.','تمرین‌های دامنه حرکتی شانه و کتف را مطابق آموزش فیزیوتراپیست ادامه دهید.','تقویت عضلات شانه و کنترل کتف را به‌صورت تدریجی و طبق برنامه اختصاصی ادامه دهید.','با بهترشدن درد و حرکت، بازگشت به کار، ورزش و فعالیت‌های سنگین را مرحله‌ای انجام دهید.'],
'زانوی راست':['دامنه خم و صاف‌شدن زانو را با تمرین‌های تجویزشده حفظ و به‌تدریج بهتر کنید.','تقویت تدریجی عضلات ران، لگن و اندام تحتانی را طبق برنامه ادامه دهید.','بازگشت به پله، پیاده‌روی طولانی، اسکات یا فعالیت ورزشی را کنترل‌شده و تدریجی انجام دهید.','اگر فعالیت یا تمرینی درد را به‌طور واضح تشدید کرد، آن را متوقف و با فیزیوتراپیست مطرح کنید.'],
'زانوی چپ':[],
'لگن':['تحرک روزانه را در حد تحمل حفظ کنید و از بی‌حرکتی طولانی پرهیز کنید.','تمرین‌های دامنه حرکتی و انعطاف‌پذیری لگن را مطابق برنامه اختصاصی ادامه دهید.','تقویت عضلات لگن، تنه و اندام تحتانی را تدریجی انجام دهید.','بازگشت به پیاده‌روی طولانی، پله و فعالیت ورزشی را بر اساس تحمل و نظر فیزیوتراپیست افزایش دهید.'],
'آرنج راست':['فعالیت‌های تکراری یا سنگینی که علائم را تشدید می‌کنند موقتاً تعدیل کنید.','دامنه حرکتی آرنج و ساعد را طبق آموزش فیزیوتراپیست حفظ کنید.','تقویت تدریجی عضلات ساعد و اندام فوقانی را مطابق برنامه اختصاصی ادامه دهید.','بازگشت به کار دستی یا ورزش را تدریجی و با کنترل علائم انجام دهید.'],
'آرنج چپ':[],
'مچ دست راست':['از فعالیت‌های تکراری و بارگذاری تشدیدکننده علائم موقتاً بکاهید.','حرکت مچ و انگشتان را در محدوده آموزش‌داده‌شده حفظ کنید.','تقویت تدریجی مچ، ساعد و گرفتن دست را طبق برنامه فیزیوتراپیست ادامه دهید.','برای کارهای طولانی با دست، وقفه‌های کوتاه و وضعیت مناسب مچ را رعایت کنید.'],
'مچ دست چپ':[],
'مچ پای راست':['دامنه حرکتی مچ پا را با تمرین‌های تجویزشده حفظ و به‌تدریج بهتر کنید.','تمرین‌های تعادل و تقویت مچ و ساق را طبق برنامه اختصاصی ادامه دهید.','بازگشت به پیاده‌روی طولانی، دویدن یا ورزش را مرحله‌ای انجام دهید.','کفش مناسب و فعالیتی متناسب با تحمل فعلی انتخاب کنید.'],
'مچ پای چپ':[],
'پای راست':['فعالیت و راه‌رفتن را در حد تحمل و با افزایش تدریجی ادامه دهید.','تمرین‌های حرکتی و تقویتی پا و مچ را طبق برنامه اختصاصی ادامه دهید.','به کفش مناسب و نحوه توزیع فشار روی پا توجه کنید.','بازگشت به فعالیت‌های طولانی یا ورزشی را مرحله‌ای و بر اساس علائم انجام دهید.'],
'پای چپ':[]
};['زانوی چپ'].forEach(k=>RECS[k]=RECS['زانوی راست']);['آرنج چپ'].forEach(k=>RECS[k]=RECS['آرنج راست']);['مچ دست چپ'].forEach(k=>RECS[k]=RECS['مچ دست راست']);['مچ پای چپ'].forEach(k=>RECS[k]=RECS['مچ پای راست']);['پای چپ'].forEach(k=>RECS[k]=RECS['پای راست']);
const F=['Problem','Pain','Rom','Functional','DailyLimit','Goal','S1Pain','S1Function','S1Rom','S1Note','S5Pain','S5Function','S5Rom','S5Note','S10Pain','S10Function','S10Rom','S10Note','Result','BeforeAfter','Maintenance'];
function ready(){return typeof db!=='undefined'&&db&&Array.isArray(db.patients)}function pts(){return ready()?db.patients.filter(p=>!p.archived):[]}
function S(){try{return JSON.parse(localStorage.getItem(KEY)||'{}')}catch(e){return {}}}function P(){const id=Number(q('#irPatient')?.value);return pts().find(p=>Number(p.id)===id)}
function data(){const o={regions:[...document.querySelectorAll('.ir-region:checked')].map(x=>x.value)};F.forEach(k=>o[k]=q('#ir'+k)?.value||'');return o}
function save(silent=false){const p=P();if(!p){if(!silent&&typeof toast==='function')toast('بیمار را انتخاب کنید.');return false}const a=S();a[String(p.id)]={...data(),updatedAt:new Date().toISOString()};localStorage.setItem(KEY,JSON.stringify(a));if(!silent&&typeof toast==='function')toast('مسیر بهبود بیمار ذخیره شد.');return true}
function treatmentRegions(p){const text=[p.treatment,p.regions,p.bodyAreas,p.areas].flat().filter(Boolean).join(' ');return REGIONS.filter(r=>text.includes(r))}
function art(r){const map={'کمر':'♙','گردن':'♙','شانه':'◒','آرنج راست':'⌁','آرنج چپ':'⌁','مچ دست راست':'✋','مچ دست چپ':'✋','مچ پای راست':'♢','مچ پای چپ':'♢','پای راست':'♢','پای چپ':'♢','زانوی راست':'◉','زانوی چپ':'◉','لگن':'◇'};return map[r]||'✦'}
function addNav(){if(q('#irNav'))return;const n=q('.nav');if(!n)return;const b=document.createElement('button');b.id='irNav';b.type='button';b.innerHTML='<span>📈</span><span>گزارش مسیر بهبود</span>';b.onclick=show;n.appendChild(b)}
function addPage(){if(q('#page-improvement'))return;const m=q('main.main')||q('main');if(!m)return;const s=document.createElement('section');s.id='page-improvement';s.className='page hidden staff-only';s.innerHTML=`<div class="page-head"><div><h2>گزارش مسیر بهبود بیمار</h2><p>مسیر درمان بیمار، از ارزیابی اولیه تا نتیجه دوره</p></div></div><div class="form-panel">
<div class="ir-searchbox"><div class="form-grid"><label class="field"><span>جستجوی سریع بیمار</span><input id="irSearch" placeholder="نام، بخشی از نام، موبایل یا کد ملی"></label><label class="field"><span>انتخاب بیمار *</span><select id="irPatient"></select></label></div><div id="irInfo" class="notice">بیمار را انتخاب کنید.</div></div>
<div id="irRegionsBox" class="ir-regions"></div>
<h3>ارزیابی اولیه / جلسه ۱</h3><div class="form-grid"><label class="field full"><span>مشکل اصلی و شرح حال</span><textarea id="irProblem" rows="3"></textarea></label><label class="field"><span>شدت درد از ۱۰</span><input id="irPain" type="number" min="0" max="10"></label><label class="field"><span>دامنه حرکتی</span><input id="irRom"></label><label class="field full"><span>تست عملکردی</span><textarea id="irFunctional" rows="2"></textarea></label><label class="field full"><span>محدودیت در فعالیت‌های روزمره</span><textarea id="irDailyLimit" rows="2"></textarea></label><label class="field full"><span>هدف بیمار از درمان</span><textarea id="irGoal" rows="2"></textarea></label></div>
<h3>ثبت نقاط مهم مسیر</h3><div class="ir-sessions">${[1,5,10].map(n=>`<div class="ir-session"><div class="ir-step">${n}</div><h4>جلسه ${n}</h4><label class="field"><span>درد از ۱۰</span><input id="irS${n}Pain" type="number" min="0" max="10"></label><label class="field"><span>عملکرد از ۱۰</span><input id="irS${n}Function" type="number" min="0" max="10"></label><label class="field"><span>دامنه حرکتی</span><input id="irS${n}Rom"></label><label class="field"><span>توضیحات تکمیلی و تغییرات مشاهده‌شده</span><textarea id="irS${n}Note" rows="4"></textarea></label></div>`).join('')}</div>
<div class="ir-chart"><h3>نمودار مسیر بهبود</h3><canvas id="irChart" width="820" height="250"></canvas><div class="ir-legend">خط قرمز: درد &nbsp; • &nbsp; خط سبز: عملکرد</div></div>
<h3>جمع‌بندی و ادامه مسیر</h3><div class="form-grid"><label class="field full"><span>نتیجه دوره</span><textarea id="irResult" rows="3"></textarea></label><label class="field full"><span>مقایسه قبل و بعد</span><textarea id="irBeforeAfter" rows="3"></textarea></label></div>
<div id="irRoutine" class="ir-routine"></div><label class="field"><span>توصیه اختصاصی دکتر شادی دوستی / توضیحات تکمیلی</span><textarea id="irMaintenance" rows="4"></textarea></label>
<div class="actions"><button type="button" class="btn secondary" id="irSave">ذخیره مسیر بیمار</button><button type="button" class="btn primary" id="irPrint">گزارش حرفه‌ای A4 / PDF</button></div></div>`;m.appendChild(s);q('#irSearch').oninput=fill;q('#irPatient').onchange=load;q('#irSave').onclick=()=>save();q('#irPrint').onclick=printReport;s.querySelectorAll('input,textarea').forEach(e=>e.addEventListener('input',draw));fill()}
function show(){addPage();document.querySelectorAll('.page').forEach(e=>e.classList.add('hidden'));q('#page-improvement').classList.remove('hidden');document.querySelectorAll('.nav button').forEach(e=>e.classList.remove('active'));q('#irNav')?.classList.add('active');fill();draw()}
function fill(){const e=q('#irPatient');if(!e)return;const old=e.value,x=(q('#irSearch').value||'').trim().replace(/\s+/g,' '),a=pts().filter(p=>!x||[p.name,p.phone,p.fileNo].some(v=>String(v||'').includes(x)));e.innerHTML='<option value="">انتخاب بیمار...</option>'+a.map(p=>`<option value="${p.id}">${E(p.name)} — ${E(p.phone||'')} — ${E(p.fileNo||'')}</option>`).join('');if(a.some(p=>String(p.id)===old))e.value=old}
function regionUI(selected){q('#irRegionsBox').innerHTML='<h3>ناحیه درمان</h3><div class="ir-region-list">'+REGIONS.map(r=>`<label class="ir-region-card"><input class="ir-region" type="checkbox" value="${r}" ${selected.includes(r)?'checked':''}><span class="ir-art">${art(r)}</span><span>${r}</span></label>`).join('')+'</div>';document.querySelectorAll('.ir-region').forEach(x=>x.onchange=routine);routine()}
function load(){const p=P();if(!p){q('#irInfo').textContent='بیمار را انتخاب کنید.';regionUI([]);apply({});return}q('#irInfo').innerHTML=`<b>${E(p.name)}</b> &nbsp; | &nbsp; موبایل: ${E(p.phone||'—')} &nbsp; | &nbsp; کد ملی: ${E(p.fileNo||'—')} &nbsp; | &nbsp; درمان ثبت‌شده: ${E(p.treatment||'—')}`;const o=S()[String(p.id)]||{},rs=o.regions?.length?o.regions:treatmentRegions(p);regionUI(rs);apply(o)}
function apply(o){F.forEach(k=>{const e=q('#ir'+k);if(e)e.value=o[k]||''});draw();routine()}
function routine(){const rs=[...document.querySelectorAll('.ir-region:checked')].map(x=>x.value),items=[];rs.forEach(r=>(RECS[r]||[]).forEach(t=>{if(!items.includes(t))items.push(t)}));q('#irRoutine').innerHTML=rs.length?`<h4>توصیه‌های روتین ادامه مسیر</h4><p>این پیشنهادها بر اساس ناحیه انتخاب‌شده نمایش داده می‌شوند و جایگزین نظر فیزیوتراپیست نیستند.</p><ul>${items.map(x=>`<li>${E(x)}</li>`).join('')}</ul>`:'<p>با انتخاب ناحیه درمان، توصیه‌های روتین اینجا نمایش داده می‌شود.</p>'}
function draw(){const c=q('#irChart');if(!c)return;const x=c.getContext('2d'),W=c.width,H=c.height,L=50,R=20,T=20,B=35,w=W-L-R,h=H-T-B;x.clearRect(0,0,W,H);x.fillStyle='#fff';x.fillRect(0,0,W,H);x.strokeStyle='#e3e8e9';for(let i=0;i<=10;i+=2){const y=T+h-i/10*h;x.beginPath();x.moveTo(L,y);x.lineTo(W-R,y);x.stroke();x.fillStyle='#68777c';x.font='12px sans-serif';x.fillText(i,22,y+4)}const xs=[L,L+w/2,L+w];['جلسه ۱','جلسه ۵','جلسه ۱۰'].forEach((v,i)=>x.fillText(v,xs[i]-22,H-10));function line(ids,col){x.strokeStyle=col;x.fillStyle=col;x.lineWidth=3;x.beginPath();ids.forEach((id,i)=>{const v=Math.max(0,Math.min(10,Number(q(id)?.value)||0)),y=T+h-v/10*h;i?x.lineTo(xs[i],y):x.moveTo(xs[i],y)});x.stroke();ids.forEach((id,i)=>{const v=Math.max(0,Math.min(10,Number(q(id)?.value)||0)),y=T+h-v/10*h;x.beginPath();x.arc(xs[i],y,5,0,Math.PI*2);x.fill()})}line(['#irS1Pain','#irS5Pain','#irS10Pain'],'#b35b66');line(['#irS1Function','#irS5Function','#irS10Function'],'#397a74')}
function printReport(){const p=P();if(!p){if(typeof toast==='function')toast('بیمار را انتخاب کنید.');return}save(true);const d=data(),img=q('#irChart').toDataURL('image/png'),rs=d.regions||[],items=[];rs.forEach(r=>(RECS[r]||[]).forEach(t=>{if(!items.includes(t))items.push(t)}));const w=window.open('','_blank','width=980,height=900');if(!w)return;const box=(a,b)=>`<div class="box"><b>${a}</b><div>${E(b||'—')}</div></div>`;w.document.write(`<!doctype html><html lang="fa" dir="rtl"><head><meta charset="utf-8"><title>مسیر بهبود ${E(p.name)}</title><style>@page{size:A4;margin:9mm}*{box-sizing:border-box}body{font-family:Tahoma,Arial;color:#25363b;margin:0;font-size:11.5px;line-height:1.65}.sheet{border:1px solid #dce3e4;border-radius:18px;padding:18px;border-right:6px solid #b79a57}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dfe6e7;padding-bottom:11px}.logo{width:66px;height:66px;border:2px solid #b79a57;border-radius:50%;display:grid;place-items:center;font-size:22px;color:#28534f;font-weight:bold}h1{font-size:19px;color:#28534f;margin:0}h2{font-size:13px;color:#28534f;border-right:3px solid #b79a57;padding-right:7px;margin:12px 0 7px}.welcome{background:#f7faf9;border-radius:10px;padding:8px 10px;margin:10px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.box,.session{border:1px solid #e0e6e8;border-radius:9px;padding:7px}.box b{display:block;color:#68777d;font-size:9.5px}.full{grid-column:1/-1}.regions{display:flex;gap:7px;flex-wrap:wrap}.region{border:1px solid #dfd6bd;background:#fdfbf6;border-radius:10px;padding:6px 10px}.sessions{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.chart{width:100%;border:1px solid #e0e6e8;border-radius:10px;margin-top:7px}.routine{background:#f7faf9;border:1px solid #dfe8e5;border-radius:10px;padding:8px}.routine ul{margin:4px 0;padding-right:18px}.footer{display:flex;justify-content:space-between;border-top:1px solid #e0e6e8;margin-top:12px;padding-top:10px}.sign{text-align:center;min-width:180px}@media print{body{-webkit-print-color-adjust:exact;print-color-adjust:exact}}</style></head><body><div class="sheet"><header><div><h1>فیزیوتراپی مهر ماهور</h1><div>گزارش شخصی مسیر بهبود بیمار</div></div><div class="logo">مـ</div></header><div class="welcome">این گزارش خلاصه مسیری است که در مهر ماهور همراه شما دنبال کرده‌ایم؛ از ارزیابی اولیه تا تغییرات ثبت‌شده در طول دوره.</div><div class="grid">${box('نام بیمار',p.name)}${box('کد ملی',p.fileNo)}${box('شماره تماس',p.phone)}${box('تاریخ گزارش',new Date().toLocaleDateString('fa-IR'))}</div><h2>ناحیه درمان</h2><div class="regions">${rs.map(r=>`<div class="region">${art(r)} &nbsp; ${E(r)}</div>`).join('')||'—'}</div><h2>شروع مسیر</h2><div class="grid">${box('مشکل اصلی',d.Problem)}${box('شدت درد اولیه از ۱۰',d.Pain)}${box('دامنه حرکتی',d.Rom)}${box('تست عملکردی',d.Functional)}<div class="full">${box('محدودیت فعالیت روزمره',d.DailyLimit)}</div><div class="full">${box('هدف بیمار',d.Goal)}</div></div><h2>نقاط مهم پیشرفت</h2><div class="sessions">${[1,5,10].map(n=>`<div class="session"><b>جلسه ${n}</b><div>درد: ${E(d['S'+n+'Pain']||'—')} / ۱۰</div><div>عملکرد: ${E(d['S'+n+'Function']||'—')} / ۱۰</div><div>دامنه حرکت: ${E(d['S'+n+'Rom']||'—')}</div><div>${E(d['S'+n+'Note']||'—')}</div></div>`).join('')}</div><img class="chart" src="${img}"><h2>نتیجه دوره</h2><div class="grid"><div class="full">${box('نتیجه',d.Result)}</div><div class="full">${box('مقایسه قبل و بعد',d.BeforeAfter)}</div></div><h2>ادامه مسیر شما</h2><div class="routine"><ul>${items.map(x=>`<li>${E(x)}</li>`).join('')}</ul>${d.Maintenance?`<b>توصیه اختصاصی:</b><div>${E(d.Maintenance)}</div>`:''}</div><div class="footer"><div>با آرزوی تندرستی و حرکت بهتر برای شما<br><b>فیزیوتراپی مهر ماهور</b></div><div class="sign"><b>مسئول / فیزیوتراپیست</b><div>دکتر شادی دوستی</div><br>مهر و امضا</div></div></div><script>window.onload=()=>setTimeout(()=>window.print(),300)<\/script></body></html>`);w.document.close()}
function boot(){if(!ready()){setTimeout(boot,120);return}addNav();addPage()}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',boot);else boot();
})();