🧩 محرّر البانل — قبل / بعد

بانل CBC الحقيقي (16 عضو) — وضعه الحالي وشكله بعد التعديل

للمراجعة قبل البناء · 2026-05-22

① البانل المختار — CBC الحقيقي

بانل Complete Blood Count (id=1، كود CBC) — 16 عضو، كلهم بدون أقسام، الترتيب 0→15 (من الـ API الآن).

الباك إند جاهز ✅ — تذكرة #1599 مكتملة ومُختبَرة: panel_sections، حفظ بـ sections[]/ungrouped[]، توافق رجعي. باقي الواجهة فقط.

② قبل / بعد

✘ المحرّر الحالي — TAB «أعضاء البانل»

جدول مسطّح: 16 صف ورا بعض. مفيش ترتيب يدوي، مفيش أقسام.

أعضاء البانل (16)
1WBCWhite Blood Cell Count🗑
2RBCRed Blood Cell Count🗑
3HGBHemoglobin🗑
4HCTHematocrit🗑
5MCVMean Corpuscular Volume🗑
… حتى 16
✔ المحرّر الجديد — أقسام + سحب لإعادة الترتيب

الأعضاء منظّمين في أقسام، سحب لإعادة الترتيب على مستويين.

RBC Parameters · صورة الدم الحمراء ✎ 🗑
RBCRed Blood Cell Count🗑
HGBHemoglobin🗑
HCTHematocrit🗑
MCVMCV · MCH · MCHC · RDW🗑
WBC Differential · التفاضلي ✎ 🗑
WBCWhite Blood Cell Count🗑
719Lymphocytes · Neutrophil · …🗑
Platelets · الصفائح ✎ 🗑
PLTPlatelet Count · MPV · PDW🗑
+ إضافة قسم
بدون قسم — تظهر مسطّحة (اسحب عضو هنا لفك تجميعه)

③ آلية العمل

// payload الحفظ
{
  "sections": [
    { "name":"RBC Parameters", "name_ar":"صورة الدم الحمراء", "sort_order":1,
      "members":[ {"member_id":2,"sort_order":1}, {"member_id":3,"sort_order":2} ] }
  ],
  "ungrouped": [ {"member_id":15,"sort_order":1} ]
}
توافق رجعي: بانل بدون أي قسم → كل الأعضاء في «بدون قسم» → يُحفظ ويعمل زي النهارده بالظبط.

④ خطوات التنفيذ

1
موديل: LisPanelSection + section_id/sort_order على LisPanelMember.
2
الخدمة: updatePanelMembers() تبعت الشكل الغني (sections/ungrouped).
3
مكوّن PanelMembersEditorComponent بـ @angular/cdk/drag-drop — يستبدل جدول TAB «أعضاء البانل» المسطّح.
4
بناء + نشر + اختبار على بانل CBC حقيقي.
كله واجهة — الباك إند #1599 جاهز. لا اعتماد إضافي.