家庭健康档案

编辑
+ 编辑标签
// ── 影像报告(独立模块)──────────────────────────────────────────────── function rImaging2(){ const c = document.getElementById('mc'); const imaging2 = AD().imaging2||[]; let html = '
' +'' +'' +'
'; if(!imaging2.length){ html += '
🔬

暂无影像报告
' +'
' +'支持超声/CT/MRI/X光等
AI 识别报告文字,忠实原文
'; c.innerHTML = html; return; } const groups = {}; imaging2.forEach(function(v){ const m = v.date.slice(0,7); if(!groups[m]) groups[m] = []; groups[m].push(v); }); const monthNames = ['','1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']; Object.keys(groups).sort(function(a,b){return b.localeCompare(a);}).forEach(function(month){ const parts = month.split('-'); const yr = parts[0], mo = parts[1]; html += '
' +'
'+yr+'年 '+monthNames[parseInt(mo)]+'
' +'
'; groups[month].sort(function(a,b){return b.date.localeCompare(a.date);}).forEach(function(v){ const abnFindings = (v.findings||[]).filter(function(f){return f.status!=='ok';}); const bc = abnFindings.length===0?'bok':abnFindings.length<=2?'bwarn':'bdanger'; const abnLabel = abnFindings.length===0?'未见异常':abnFindings.length+'项需关注'; let cardHtml = '
' +'
' +'
🔬
' +'
' +'
' +''+esc(v.type||'影像报告')+'' +''+abnLabel+'
' +'
' +v.date+(v.hospital?' · '+esc(v.hospital):'')+'
' +'
' +'
'; // 异常所见 if(abnFindings.length){ cardHtml += '
⚠️ 异常所见
' +'
'; abnFindings.forEach(function(f){ const dc = f.status==='warn'?'#fac775':'#e24b4a'; cardHtml += '
' +'
' +'
'+esc(f.location)+'
' +'
'+esc(f.desc)+'
' +(f.size?'
📏 '+esc(f.size)+'
':'') +'
'; }); cardHtml += '
'; } // 正常所见 const okFindings = (v.findings||[]).filter(function(f){return f.status==='ok';}); if(okFindings.length){ cardHtml += '
正常所见('+okFindings.length+'项)' +'
'; okFindings.forEach(function(f){ cardHtml += '
' +'
' +'
'+esc(f.location)+'
' +'
'+esc(f.desc)+'
'; }); cardHtml += '
'; } if(v.conclusion) cardHtml += '
' +'
影像提示 / 结论
' +esc(v.conclusion)+'
'; if(v.suggestion) cardHtml += '
💡 建议:'+esc(v.suggestion)+'
'; cardHtml += '
' +'' +'
'; html += cardHtml; }); }); c.innerHTML = html; } function delImaging2(id){ if(!confirm('确定删除此影像报告?'))return; const d=AD(); d.imaging2=(d.imaging2||[]).filter(x=>x.id!==id); saveState(); renderSidebar(); rImaging2(); }