# تاسكات الباك اند المطلوبة — ملف متراكم

> يتم التحديث باستمرار — كل تاسك يتضاف هنا أول وبعدين يتبعت لأحمد

---

## تاسكات مرسلة بالفعل:

| # | الرقم | الوصف | الأولوية | الحالة |
|---|-------|-------|---------|--------|
| 1 | #1275 | المدى المقبول والصالح (valid/reportable ranges) | متوسطة | RETURNED |
| 2 | #1281 | رينجات لكل جهاز (machine_id on ranges) | عالية | Pending |
| 3 | #1282 | حقول الأطباء الجديدة | متوسطة | Pending |
| 4 | #1283 | محرك التحقق التلقائي + فحص دلتا | عالية | Pending |
| 5 | #1284 | مراقبة الأجهزة + سجل اتصالات | متوسطة | Pending |
| 6 | #1285 | endpoint إرسال التحويلة (`/send`) | عالية | Pending |
| 7 | #1286 | تعديل تحاليل التحويلة بعد الإنشاء | متوسطة | Pending |
| 8 | #1287 | تعليق + علم على نتائج التحويلة | متوسطة | Pending |

---

## تاسكات جديدة (لسه ما اتبعتتش):

### من تحليل المرحلة الثانية (Phase 2):

| # | الوصف | الأولوية | التفاصيل |
|---|-------|---------|----------|
| 9 | **إلغاء تحليل فردي من الطلب** | عالية | - `POST /requests/{id}/investigations/{invId}/cancel` - `POST /requests/{id}/investigations/{invId}/reinstate` (إعادة تفعيل) - تحديث totals تلقائي - صلاحيات: قبل الجمع = استقبال، بعد = مشرف |
| 10 | **أسباب رفض منظمة** | عالية | - جدول أو enum لأسباب الرفض (HEM, CLT, QNS, WRG_TUBE, UNLAB, MISLAB, LIP, ICT, CONTAM, LEAK, TEMP, EXP, NO_FAST) - حقل `rejection_reason_code` بجانب `rejection_reason` النصي - استخدامه في `POST /sections/{id}/kanban/{id}/reject` |
| 11 | **إشعار عند رفض العينة** | متوسطة | - notification للاستقبال لما عينة تترفض - يبيّن اسم المريض + سبب الرفض + هل المريض لسه في المعمل |
| 12 | **ربط المستخدم بأقسام (section-based access)** | عالية | - جدول pivot `user_sections` (user_id, section_id) - فلترة الكانبان والنتائج حسب أقسام المستخدم - endpoint: `GET /users/{id}/sections` و `POST /users/{id}/sections` |
| 13 | **مبدأ العيون الأربعة** | متوسطة | - `POST /results/{id}/validate` يرفض لو `entered_by == current_user_id` - configurable: بعض التحاليل ممكن تتعدى (override) |
| 14 | **تنبيه القيم الحرجة** | عالية | - لما نتيجة تكون critical (HH أو LL) → إنشاء notification فوري - notification تروح للمشرف + الباثولوجي - تسجيل: مين اتبلّغ + إمتى |
| 15 | **Amendment workflow (تعديل بعد الإصدار)** | متوسطة | - جدول `result_amendments` (result_id, old_value, new_value, reason, amended_by, amended_at) - `POST /results/{id}/amend` — يحفظ القديم + يعدل + يعلّم التقرير "معدّل" - النتيجة القديمة مبتتمسحش |
| 16 | **إنشاء العينات تلقائي عند إنشاء الطلب** | عالية | - حالياً العينات بتتعمل يدوي من شاشة الجمع - المطلوب: لما الطلب يتعمل → الباك اند ينشئ العينات تلقائي (auto_split) - أو: endpoint `POST /requests/{id}/create-samples` يعمل auto_split ويرجع العينات بالباركودات |
| 17 | **رفض نتيجة/تحليل من قائمة العمل مع إنشاء عينة جديدة** | عالية | - حالياً `POST /results/{id}/reset` بيرجع النتيجة لـ pending بس مش بيعمل عينة جديدة - المطلوب: `POST /results/{id}/reject` يعمل: (1) يلغي النتيجة (2) ينشئ عينة جديدة بباركود جديد (3) يرجع الباركود الجديد في الـ response (4) يبعت إشعار للاستقبال - أو: يربط الرفض بـ kanban reject endpoint اللي بيعمل ده بالفعل |

### من تحليل المعامل الخارجية:

| # | الوصف | الأولوية | التفاصيل |
|---|-------|---------|----------|
| مرسل #1285 | endpoint إرسال التحويلة | عالية | — |
| مرسل #1286 | تعديل تحاليل التحويلة | متوسطة | — |
| مرسل #1287 | تعليق + علم على نتائج التحويلة | متوسطة | — |

---

## ملاحظات عامة:

### الباك اند الموجود كويس في:
- إنشاء الطلبات + expansion للـ panels ✓
- إنشاء العينات مع auto_split ✓
- collect + deliver + aliquoting تلقائي ✓
- الكانبان (kanban entries) ✓
- إدخال النتائج + حساب العلم ✓
- تحقق + موافقة + إصدار ✓
- الرفض من الكانبان + إعادة جمع تلقائي ✓
- التحويلات الخارجية + البوابة ✓
- الفوترة + المحاسبة ✓

### الباك اند ناقص في:
- إلغاء تحليل فردي (بس الطلب كله)
- أسباب رفض منظمة (نص حر بس)
- section-based access (مفيش)
- عيون أربعة (مفيش)
- تنبيه قيم حرجة (مفيش)
- تعديل بعد الإصدار (بس return + re-enter)
- إنشاء عينات تلقائي مع الطلب (يدوي بس)
