Moon ERP · LIS · تحليل وخطة اعتماد

تطوير داشبورد المعامل
من شاشة تقارير… إلى مركز قيادة تشغيلي

تحليل متكامل للداشبورد الحالية (فرونت + باكند بنداءات حية)، مقارنة بمؤشرات معامل التحاليل العالمية (CAP / ISO 15189 / Westgard)، وثلاثة اتجاهات تصميم كاملة — وخطة تنفيذ مرحلية. وثيقة خطة فقط: لا يُنفَّذ أي شيء قبل اعتمادك.

📅 2026-06-11 🤖 4 Agents تحليل متوازي (Opus 4.8) 🔬 نداءات حية على بيئة dev ⛔ القيد الحاكم: LIS لا يتأثر
3.5/10
التقييم الإجمالي الحالي
2.5/10
دقة تمثيل الأداء الفعلي
12 نداء
HTTP عند فتح الصفحة
20+ endpoint
بيانات جاهزة غير مستغلة
8 مراحل
TAT قابل للحساب من الداتا
01

تشخيص الوضع الحالي — ليه 3.5/10؟

الداشبورد الحالية (`/lab`) هي صفحة تجميع تقارير مش لوحة قيادة: 9 كروت KPI + 4 رسوم + جدول TAT، كلها بنفس الوزن البصري، مجمّدة على آخر 30 يوم، وبتتجاهل فلاتر الفرع والقسم الموجودة أصلاً في النظام.

أخطاء بتضلّل المدير فعلياً accuracy bugs

كارت «إيراد اليوم» بيعرض العدد مش المبلغ

الكارت بيقرأ total_payments (عدد عمليات الدفع) ويعرضه تحت عنوان «إيراد» — والكارت اللي جنبه «مدفوعات معلّقة» بيعرض في الحقيقة المُحصَّل اليوم مش المعلّق. كارتان ماليان مقلوبان.

بادج «إدخال النتائج» = إجمالي الطلبات

البادج بيجيب requests.meta.total (كل الطلبات تاريخياً) مش عدد النتائج المعلّقة — رقم مضلل بيكبر للأبد.

الأخطاء بتتبلع في صمت

أي endpoint يفشل بيتحول لـ 0 بدون أي تنبيه — «صفر إيراد» و«فشل التحميل» شكلهم واحد. المدير ممكن ياخد قرار على رقم ناقص.

نطاقات زمنية مخلوطة بدون تسمية

كروت «آخر 30 يوم» جنب كروت «اليوم» على نفس الشاشة بدون أي توضيح — الأرقام بتبان متناقضة.

اللي مدير المعمل مش قادر يجاوب عليه من الشاشة دي

تقنياً وبصرياً

02

كنز البيانات الموجود — جرد حي من الباكند

الـ agent الثاني عمل جرداً بنداءات حية على dev: أكثر من 20 endpoint جاهزة تكفي لبناء داشبورد عالمية — معظمها غير مستغل في الداشبورد الحالية إطلاقاً.

المصدر الجاهزالمؤشرات المستخرجةعيّنة حية (dev اليوم)
reports/turnaround-timeTAT بالدقيقة لكل تحليل وقسم + expected_tat_hours للمقارنة بالهدفHemoglobin متوسط 13.5 دقيقة (هدفه ساعة)
reports/abnormalsنسبة غير الطبيعي + عدد الحرج + توزيع الأعلام + أعلى 20 تحليلاً74 صادر، 52 غير طبيعي، 8 حرجة
lis/critical-alertsطابور النتائج الحرجة: المريض، الفلاغ، الإقرار، الإبلاغ، التصعيد8+ غير مُقرّة (acknowledged_at: null)
worklist/cardsحالة كل طلب بالمراحل (معلق/مُدخل/مُعتمد/صادر) + الإجراء التالي — نمط الـ aggregation المثاليLR-2026-00332: صادر 21/21
reports/workloadالأحمال لكل قسم وفني (إجمالي/منجز/معلق)هيماتولوجي 91 (51 منجز / 34 معلق)
reports/revenue + test-volumeالإيراد اليومي/التحصيل/المتبقي + الحجم بالمصدر والأولوية، وكلها تقبل branch_id11 فاتورة، 2,651 إجمالي، 303 متبقي
cashier-sessions + reconciliationالورديات المفتوحة، المتوقع نقداً، العجز/الزيادة، Z-reportوردية مفتوحة فرع 8، فيزا 402.5
reports/insurance-claimsمطالبات التأمين: المفوتر/المحصّل/المعلّق15 مطالبة، 893.55 معلّقة بالكامل
reports/qc-summary + profitability + external-labs-financial + doctor-commissionsجودة QC، ربحية الأقسام والتحاليل، صافي حسابات معامل B2B، عمولات الأطباءجاهزة بنيوياً (QC فاضي في dev)

اكتشاف مهم: الداتا تدعم TAT من 8 مراحل — والـ endpoint بيحسب مرحلة واحدة

أعمدة التوقيت موجودة فعلاً على lab_samples / lab_results / lab_requests وتسمح بحساب كل وصلة في السلسلة: طلب←سحب، سحب←استلام، استلام←قبول، قبول←معالجة، معالجة، إدخال←اعتماد، اعتماد←إصدار، وإجمالي الرحلة — بالإضافة لزمن إقرار النتائج الحرجة وTAT الإحالات الخارجية. كل ده محتاج aggregation جديدة بس، مش أعمدة جديدة.

الفجوات (مؤشر محتاج شغل باكند)

المؤشر الغايبالبياناتالجهد
نسبة الالتزام بالـ TAT + P50/P90/P95 لكل أولويةموجودة (timestamps + expected_tat_hours)M
نسبة الرفض + باريتو الأسبابموجودة (rejected_at + rejection_reasons)S
أعمار تراكم الاعتماد (validation backlog aging)موجودة (status + entered_at vs now)S
متوسط زمن إقرار الحرج + % غير المُقرّموجودة (critical_alerts)S
funnel اليوم الحي (طلبات مفتوحة بالمرحلة والأولوية)موجودةS
فلتر فرع على QC / التكاليف / العمولات / التأمينعمود branch_id متاحS
نسبة إعادة التحليل (retest rate)audit logM
تتبع توقف الأجهزة (analyzer uptime)مفيش جدول — محتاج schemaL — مؤجل
تنبيهان للأرقام الحالية على dev: التكاليف 0/2268 تحليل مُكلّف → تقارير الربحية بتعرض هامش 100% (placeholder مش حقيقي — نعرض «تغطية التكلفة» كمؤشر تحذيري). و/core/dashboard مفيهوش أي بيانات LIS — التجميع لازم يتبني جديد.
03

البنشمارك العالمي — إيه اللي بتعرضه داشبورد معمل world-class؟

مرجعية CAP / CLIA / ISO 15189 وقواعد Westgard وممارسات SENAITE / Orchard / Sunquest. المبدأ الحاكم: كل رقم لازم يجاوب «أعمل إيه دلوقتي؟» — وإلا فهو رقم استعراضي. و«47 معلّق» ضجيج؛ «12 معلّق أكتر من ساعتين، منهم 3 STAT» إنذار.

كتالوج المؤشرات بالأهداف المرجعية (المختصر — التفصيل الكامل عند التنفيذ)

الشخصيةالمؤشرالهدف العالميأفضل تمثيلالتحديث
مدير المعمل
العمليات اليومية
التزام TAT لكل أولويةSTAT <60 دقيقة ≥90% · روتيني نفس اليوم ≥90%bullet gauge + سباركلاين5–15 د
المعلّق بالمرحلة + الأعمارصفر STAT متأخر >30 د في الاعتمادfunnel + جدول حراري2–5 د
نسبة رفض العينات + الأسباب<2% (ممتاز <1%)رقم + باريتوساعة
النتائج الحرجة + زمن الإبلاغ≥95% خلال 30–60 د، إقرار 100%عدّاد إنذار + جدولحي ≤1 د
مسؤول الجودة QC لكل تحليل×جهاز×مستوى>95–98% passمصفوفة حرارية + Levey-Jenningsلكل run
مخالفات Westgard + التقارير المصحَّحةنادرة ومحلولة · تصحيح <0.5%سجل + ترندحي / يومي
المالك
المالية
إيراد اليوم/الشهر vs الهدف + توقع نهاية الشهرنسبة للهدف الداخليرقم كبير + bullet + خط تراكميساعة/يومي
مزيج الدافعين (كاش/تأمين/B2B) + أعمار المديونيةدلو >90 يوم = إنذارstacked bars بالزمنيومي
أعلى التحاليل إيراداً وحجماً + الخصومات اليدوية~20% من التحاليل = 80% من الإيرادباريتو + drill بالمستخدميومي
الاستقبال التسجيلات بالساعة + السحب المعلّقتسجيل←سحب <10–15 دمنحنى ساعي + جدول أعمار1–2 د
أطول مريض منتظر>20–30 د = تدخل فوريكارت بطل واحدحي

الخمس Anti-Patterns اللي هنتجنبها (والحالية واقعة في 4 منهم)

04

الداشبورد المقترحة — البنية المعلوماتية

شريط فلاتر عالمي ثابت (الفترة: اليوم/أمس/الأسبوع/الشهر/مخصص · الفرع · القسم · الأولوية) بيسري على كل المناطق + chips للفلاتر النشطة + «آخر تحديث» وإيقاف مؤقت للتحديث التلقائي.

Z1
🚨 شريط الإنذارات (أعلى الشاشة، استثنائي فقط)نتائج حرجة غير مُقرّة · STAT كاسر للهدف · QC خارج السيطرة · أطول مريض منتظر — لو فاضي: شريط أخضر رفيع «كله تمام». تحديث حي ≤1 دقيقة.
critical-alerts + tat
Z2
⚡ الـ Flow Funnel الحي (البطل التشغيلي)تسجيل ← سحب ← استلام ← معالجة ← اعتماد ← إصدار — كل مرحلة قابلة للنقر لشاشتها، ارتفاعها بعدد الحالات، وتتوهّج كهرماني لو اتراكمت ضد SLA المرحلة. تحديث 2–5 د.
new /lis/dashboard
Z3
⏱ صف الـ TATbullet gauges لكل أولوية (فعلي vs هدف، أخضر≥90/كهرماني/أحمر) + سباركلاين ساعي + جدول TAT بالقسم بوحدة قياس وعمود هدف.
turnaround-time+
Z4
🔬 صف الجودةنسبة الرفض + باريتو الأسباب · مصفوفة QC (تحليل×جهاز) · عدّاد الحرج وزمن الإقرار · أعلى التحاليل غير الطبيعية.
new rejections agg + qc
Z5
💰 الصف الماليإيراد اليوم/الشهر vs أمس (دلتا ▲▼) · مزيج الدافعين · تأمين معلّق · ورديات الكاشير المفتوحة والعجز/الزيادة · مقارنة الفروع.
revenue + cashier + insurance
Z6
👥 الإنتاجية (ذيل الصفحة)الأحمال بالقسم والفني (منجز/معلق) — إطار «موازنة أحمال» مش لوحة تشهير.
workload

الـ Funnel — جوهرة الداشبورد (محاكاة)

142
مسجّل
→ سحب <15د
38
في السحب ⚠
متراكم!
27
معالجة
kanban
14
اعتماد
validation
63
صادر ✓
released

المرحلة الكهرمانية المتوهجة = «هنا الاختناق» — نقرة واحدة توصلك لشاشة السحب مباشرة. الداشبورد بتتحول من تقرير لأداة فرز.

05

اتجاهات التصميم الثلاثة

كلها مبنية على هوية التطبيق الفعلية: شل المعمل داكن كحلي #0c1222 بأكسنت سماوي #0ea5e9، وذهب الـ ERP #f5a623، وخطا Cairo / JetBrains Mono، وChart.js 4 (الـ funnel والـ heatmap هيتبنوا CSS/SVG — وفيه سابقة: رسم Levey-Jennings مرسوم يدوياً في شاشة QC).

⭐ التوصية

1 · Mission Control — كوكبيت العمليات

داشبورد داكنة حيّة: الـ funnel هو البطل، شريط إنذارات جانبي حي، heatmap أقسام، أرقام mono بنبض count-up — الداشبورد هي الـ worklist مش تقرير عنه.

ليه دي الصح للمعمل ده: مستخدمو /lab اليوميون هم استقبال وساحبين وفنيين ومعتمِدين — سؤالهم «فين الشغل وإيه الواقف؟» مش «هامش الربح كام». والشل داكن أصلاً — ده الاتجاه الوحيد اللي بيخلي تجربة /lab منتجاً واحداً متماسكاً بدل «حساء كروت فاتح في إطار داكن». وبيصلّح الفشل الجوهري: فرض أولوية تشغيلية بدل الوزن المتساوي.

الجهد: L (مُقسّم على مرحلتين M+M)dark فقط — متسق مع الشلcustom: funnel + ticker + heatmap

2 · Clinical Clarity — الوضوح الإكلينيكي

فاتح هادئ editorial-medical: جملة بشرية واحدة تلخّص اليوم + شريط إنجاز، 4 كروت مراحل هادئة، قائمة انتباه — مصمم لقراءة مريحة طوال وردية كاملة.

أسرع تنفيذاً وأكثر أماناً (أغلبه PrimeNG وtokens موجودة، والوحيد الصحيح في الوضعين فاتح/داكن بدون شغل إضافي) — لكنه «الاختيار الآمن مش الأفضل» لجمهور تشغيلي. هنسرّب أنماطه الهادئة للبلوكات الثانوية في التوصية الهجينة.

الجهد: S–Mالأنسب لو عايز شحنة سريعة في سبرنت واحد

3 · Executive Pulse — النبض التنفيذي

المال أولاً: شريط بطل بثلاثة أرقام ضخمة (إيراد/محصَّل/متبقي) بدلتا ▲▼ vs أمس وperiod switch، خط إيراد ذهبي، مزيج الدفع، أعلى/أدنى هامش — والتشغيل شريط رفيع تحت.

جميل للمالك لكن بيجاوب سؤالاً مش بيتسأل يومياً جوه المعمل — والمالية عندها فعلاً /lab/cost-dashboard و/lab/financial-reports. هناخد منه «شريط الأرقام المالية بالدلتا» كصف Z5 جوه التوصية.

الجهد: Mيعيد ربط المعمل بذهب الـ ERP
التوصية النهائية (هجين): هيكل وروح Mission Control + هدوء Clinical Clarity في البلوكات الثانوية + شريط المال بالدلتا من Executive Pulse كصف Z5 — وبيتبني على مرحلتين لتقليل المخاطرة (انظر الخطة).
06

الباكند المطلوب — endpoint مجمَّع واحد

بدل 12 نداء: GET /lis/dashboard واحد على نمط worklist/cards المجرَّب — يعيد استخدام دوال LISReportService الموجودة + 3 تجميعات جديدة هزيلة (لقطة اليوم الحية، إقرار الحرج، نسب الـ TAT). تقارير التفصيل الـ 12 تفضل كما هي للـ drill-down.

GET /lis/dashboard?from=&to=&branch_id=&section_id=
{
  "headline": { requests_total, results_released, results_pending,
    tat_avg_minutes, tat_p50, tat_p90, tat_sla_breach_pct,   // جديد M
    abnormal_rate, critical_count, critical_unacked, critical_avg_ack_minutes, // جديد S
    samples_rejected, rejection_rate,                     // جديد S
    revenue_total, revenue_collected, revenue_outstanding, qc_pass_rate, costed_coverage_pct },
  "today": { // لقطة حية مستقلة عن from/to — جديد S
    open_requests, reception_pending, in_processing, awaiting_validation,
    ready_to_release, cashier_open_sessions, cash_collected, payments_count },
  "trends":     { daily_volume[], daily_revenue[], tat_funnel[] },
  "breakdowns": { by_section[], by_source[], by_priority[], top_abnormal[], by_technician[] },
  "alerts":     { critical_unacked[], validation_backlog[], costing_uncosted, insurance_outstanding }
}
07

خطة التنفيذ المرحلية

كل مرحلة تتسلّم بنفس نظامنا: agents متوازيون بملكية ملفات صارمة ← بوابات اختبار ← نشر BE+FE معاً ← قياس أداء ← مراجعة Codex ← push.

1

الأساس + إصلاح المضلِّل + قلب الداشبورد

~4–5 أيام · أعلى قيمة/جهد
  • BE:GET /lis/dashboard المجمَّع (لقطة اليوم + إقرار الحرج + الرفض + تجميع المراحل) + فلتر branch_id على QC/cost
  • FE: شريط الفلاتر العالمي (فترة/فرع/قسم) · الـ Funnel hero + شريط الإنذارات Z1 · شريط إحصاءات mono كثيف · إعادة صياغة الرسوم الأربعة بثيم داكن دلالي · skeletons + معالجة أخطاء ظاهرة (مفيش «صفر صامت») · تصحيح الكروت المقلوبة والبادجات المضللة · auto-refresh طبقي + «آخر تحديث»
  • نواتج فورية: المدير يشوف الحرج غير المُقر والاختناق والـ TAT vs الهدف لأول مرة
2

عمق الجودة والـ TAT

~3–4 أيام
  • BE: نسب TAT الالتزام + P50/P90 لكل أولوية · باريتو أسباب الرفض · أعمار تراكم الاعتماد
  • FE: صف TAT (bullet gauges) · صف الجودة (باريتو + مصفوفة QC + جدول الحرج) · heatmap الأقسام · drill-down من كل رقم لقائمة صفوفه
3

المال والفروع والشخصيات

~3 أيام · بعد مراجعة المرحلتين
  • الصف المالي بالدلتا (اليوم vs أمس، الشهر vs الهدف) · مزيج الدافعين · roll-up الكاشير · التأمين المعلّق · مقارنة الفروع جنباً لجنب
  • افتراضي بالشخصية (مدير/جودة/مالك/استقبال يشوف صفوفه أولاً) · مؤجل بوعي: تتبع توقف الأجهزة (محتاج schema — مع HIS)
اليومبعد المرحلة 1بعد المرحلة 3
الاكتمال3/107/109/10
دقة تمثيل الأداء2.5/108/109/10
نداءات HTTP~121–21–2
التصميم5/108/109/10
08

قرارات مطلوبة منك قبل البدء

① اتجاه التصميم

التوصية: Mission Control الهجين (داكن، funnel بطل). البديل الأسرع: Clinical Clarity فاتح في سبرنت واحد. — اعتماد أحدهما يطلق المرحلة 1.

② نطاق المرحلة 1

زي ما هي مقترحة (endpoint + funnel + إنذارات + إصلاحات) ولا تحب تضيف/تشيل؟

③ الافتراضي عند الفتح

الفترة الافتراضية «اليوم» (تشغيلي — التوصية) ولا «آخر 30 يوم» (زي الحالي)؟ وهل المدير متعدد الفروع يفتح على «كل الفروع» مجمَّعة؟

④ التحديث التلقائي

التوصية: إنذارات 60ث · funnel ‏3د · مالية عند الفتح فقط — موافق؟ (قابل للإيقاف من الهيدر)

✅ الحالة: المراحل 1+2+3 نُفِّذت بالكامل ونُشرت (2026-06-11/12). قرار المالك أثناء التنفيذ: الثيم فاتح (بنية Mission Control + لغة Clinical Clarity البصرية). BE: 208f3e07d → f95a98e75 · FE: 305c5b2 → 844f0c5. اختبارات 22/22 + بوابات 169، أداء المسارات الساخنة عند الـ baseline، مراجعتان PUSH-READY. متبقٍ كتحسينات لاحقة: drill-down موحّد للسياق المدمج /core/lis، وتتبع توقف الأجهزة (schema — مع HIS).