# LIS Revamp — وثيقة التصميم الشاملة

> نظام معلومات المختبر — إعادة بناء كاملة مستوحاة من LDM National Technology
> التاريخ: 2026-03-26

---

## 1. الرؤية العامة

إعادة بناء موديول المختبر (LIS) بالكامل ليكون نظام متكامل يدعم:
- معمل واحد أو سلسلة فروع أو معمل مرجعي
- كل الأدوار (استقبال، فني سحب، فني معمل، مشرف، باثولوجيست، محاسب، مدير)
- مرونة في الصلاحيات — نفس الشخص يعمل أكتر من دور
- مرجع التصميم: LDM by National Technology (28 سنة خبرة، 2000+ معمل، FDA certified)

---

## 2. خريطة العلاقات الكاملة

```
المريض (Patient)
  └── الزيارة (Visit)
       └── الطلب (Request)
            ├── تحاليل الطلب (Request Investigations) ──→ التحليل (Investigation)
            │    ├── العينة (Sample) ──→ نوع العينة (Specimen Type)
            │    │    ├── الكانبان (Kanban Processing) ──→ القسم (Section)
            │    │    └── التقسيم (Aliquot) ──→ عينات فرعية
            │    ├── النتيجة (Result) ──→ أعلام (Flags)
            │    │    ├── التحقق التلقائي (Auto-Verify Rules)
            │    │    ├── فحص دلتا (Delta Check) ──→ نتيجة سابقة
            │    │    └── تحليل انعكاسي (Reflex Test) ──→ طلب تحليل جديد
            │    └── الإحالة (Referral) ──→ معمل خارجي (External Lab)
            ├── الفاتورة (Invoice)
            │    ├── المدفوعات (Payments) ──→ الخزينة / البنك
            │    └── التأمين (Insurance Contract) ──→ حصة المريض / حصة التأمين
            └── التقرير (Report PDF)
                 └── نشر (Publish) ──→ طباعة / إلكتروني / موبايل

التحليل (Investigation)
  ├── القسم (Section) ──→ مركز التكلفة
  ├── نوع العينة (Specimen Type)
  ├── التصنيف (Category) ──→ تصنيف أب
  ├── المدى الطبيعي (Normal Ranges) ──→ عمر + جنس
  ├── أعضاء البانل (Panel Members) ──→ تحاليل فرعية
  ├── المستهلكات (Consumables) ──→ الكواشف (Reagents)
  ├── قواعد التحقق التلقائي (Auto-Verify Rules)
  ├── قواعد الريفلكس (Reflex Rules)
  └── ربط الأجهزة (Machine Test Mapping) ──→ الجهاز (Machine)

الجهاز (Machine)
  ├── القسم (Section)
  ├── ربط التحاليل (Test Mappings) ──→ كود الجهاز ↔ كود التحليل
  └── نتائج الجهاز (Machine Results) ──→ مطابقة مع العينة والتحليل

مراقبة الجودة (QC)
  ├── الدفعة (QC Lot) ──→ التحليل + القيم المستهدفة
  ├── النتائج (QC Results) ──→ رسم ليفي جينينجز
  └── قواعد ويستجارد ──→ تنبيهات المخالفات

التنبيهات (Alerts) — جديد
  ├── تأخير نتائج ──→ مشرف القسم
  ├── نتيجة حرجة ──→ الطبيب المحول + مشرف
  ├── مخالفة جودة ──→ مسؤول الجودة
  └── تصعيد ──→ لو ما اتحلتش في الوقت المحدد
```

---

## 3. المراحل

---

### المرحلة الأولى — الأساس (البيانات الرئيسية)

**الهدف:** التأكد إن كل البيانات الأساسية شغالة صح وتجربة المستخدم ممتازة.

**الموجود في الباك اند:** جاهز بالكامل (sections, specimen-types, investigation-categories, investigations, patients, doctors, packages, price-lists, visits)

#### 1.1 أقسام المعمل (Sections)

**الحقول:** الاسم عربي/إنجليزي، الكود، الوصف، مركز التكلفة، نسبة المصاريف العامة، رئيس القسم، الترتيب، الحالة

**شاشة الفرونت:**
- جدول بكل الأقسام مع بحث وفلتر
- إضافة/تعديل في dialog
- ربط بمركز التكلفة (dropdown من المحاسبة)

**تحسينات مطلوبة:**
- عرض عدد التحاليل في كل قسم
- عرض عدد الأجهزة المربوطة
- ألوان لكل قسم (زي الـ LDM)

#### 1.2 أنواع العينات (Specimen Types)

**الحقول:** الاسم عربي/إنجليزي، الكود، لون الأنبوب (color_code)، نوع الحاوية، تعليمات التجميع، متطلبات التخزين، تعليمات المعالجة

**شاشة الفرونت:**
- جدول مع عرض لون الأنبوب كدائرة ملونة
- إضافة/تعديل في dialog مع color picker

#### 1.3 تصنيفات التحاليل (Investigation Categories)

**الحقول:** الاسم عربي/إنجليزي، الكود، الوصف، التصنيف الأب، الترتيب، الحالة

**شاشة الفرونت:**
- عرض شجري (مثل تصنيفات المنتجات)
- إضافة أقسام رئيسية وفرعية
- سحب وإفلات لتغيير الترتيب

#### 1.4 التحاليل (Investigations) — الأهم

**الحقول الأساسية:** الاسم عربي/إنجليزي، الكود، القسم، التصنيف، نوع العينة، الطريقة، نوع النتيجة (رقمي/نصي/اختيار/معادلة/ملاحظة)، الوحدة، السعر، التكلفة

**تابات في شاشة التعديل:**
1. **البيانات الأساسية** — الحقول العامة
2. **المدى الطبيعي** — جدول بالرينجات حسب العمر والجنس
3. **أعضاء البانل** — لو التحليل بانل (مثل CBC = 14 تحليل)
4. **المستهلكات** — الكواشف المستخدمة مع الكمية لكل تحليل
5. **تحليل التكلفة** — تكلفة الكواشف + الجهاز + القسم + المصاريف العامة
6. **ربط الأجهزة** — أي جهاز بيعمل التحليل ده وبأي كود (جديد)
7. **قواعد التحقق التلقائي** — القواعد الذكية (جديد — المرحلة السادسة)

**تحسين المدى الطبيعي (backend task مطلوب):**
- تغيير `age_from`/`age_to` من integer إلى decimal أو إضافة `age_unit` (days/months/years)
- إضافة حقول: `low_valid`, `high_valid` (المدى المقبول من الجهاز)
- إضافة حقول: `low_reporting_range`, `high_reporting_range` (حد الكشف)

#### 1.5 المرضى (Patients)

**الحقول:** رقم الملف (MRN)، الاسم عربي/إنجليزي، تاريخ الميلاد، الجنس، الهاتف، الإيميل، فصيلة الدم، العنوان، بيانات التأمين، ملاحظات

**شاشة الفرونت:**
- جدول مع بحث سريع (بالاسم أو رقم الملف أو الهاتف)
- إضافة سريعة من dialog
- عرض تاريخ الزيارات والطلبات السابقة
- حساب العمر تلقائي من تاريخ الميلاد

#### 1.6 الأطباء (Doctors)

**الحقول:** الاسم عربي/إنجليزي، الكود، التخصص، رقم الترخيص، الهاتف، الإيميل، داخلي/خارجي، حسابات العمولة

**شاشة الفرونت:**
- جدول مع بحث
- تاب لقواعد العمولة في شاشة التعديل (حسب تحليل أو تصنيف)

#### 1.7 الباقات (Packages)

**الحقول:** الاسم عربي/إنجليزي، الكود، الوصف، سعر الباقة، التحاليل المشمولة مع أسعارها

**شاشة الفرونت:**
- جدول بالباقات
- شاشة تعديل فيها اختيار التحاليل وتحديد السعر الإجمالي
- عرض نسبة التوفير

#### 1.8 قوائم الأسعار (Price Lists)

**الحقول:** الاسم عربي/إنجليزي، الكود، العملة، افتراضي أم لا، تاريخ السريان، الأسعار لكل تحليل

**شاشة الفرونت:**
- جدول بالقوائم
- شاشة تعديل فيها grid لكل التحاليل مع أسعارها

---

### المرحلة التانية — سير العمل الأساسي (الطلبات والعينات)

**الهدف:** معالج الطلبات + تجميع العينات + طباعة الباركود + توزيع العمل

**الموجود في الباك اند:** جاهز بالكامل (requests, samples, visits)

#### 2.1 الزيارات (Visits)

**أنواع الزيارة:** حضور مباشر، موعد مسبق، طوارئ

**شاشة الفرونت:**
- تسجيل زيارة جديدة مع اختيار المريض
- عرض الزيارات اليومية

#### 2.2 معالج الطلبات (Request Wizard) — 4 خطوات

هذا أهم شاشة في النظام — كل عملية بيع بتبدأ من هنا.

**الخطوة 1 — اختيار المريض:**
- بحث سريع بالاسم أو رقم الملف أو الهاتف
- إنشاء مريض جديد inline (بدون مغادرة المعالج)
- لو معمل خارجي بيبعت → اختيار المعمل الخارجي كعميل
- عرض بيانات المريض (العمر، الجنس، آخر زيارة، التأمين)

**الخطوة 2 — اختيار التحاليل:**
- تصفح بالتصنيف (شجرة الأقسام)
- بحث بالاسم أو الكود
- اختيار تحاليل فردية أو باقات
- لو بانل → يظهر كعنصر واحد (مش 14 عنصر)
- عرض السعر بجانب كل تحليل
- عرض المجموع الفرعي أسفل القائمة

**الخطوة 3 — الفوترة:**
- اختيار نوع العميل: فرد / تأمين / معمل خارجي
- لو تأمين → اختيار العقد → حساب حصة المريض وحصة التأمين تلقائي
- لو قائمة أسعار خاصة → تطبيقها
- خصم يدوي (نسبة أو مبلغ)
- عرض الإجمالي النهائي

**الخطوة 4 — الدفع:**
- دفع كامل / جزئي / آجل
- طريقة الدفع: كاش / شبكة / تأمين
- إصدار الفاتورة تلقائي
- طباعة إيصال

**بعد إتمام المعالج:**
- إنشاء الطلب + الفاتورة + الدفع (كله atomic)
- التوجيه لشاشة تجميع العينات
- طباعة باركود العينات

#### 2.3 تجميع العينات (Sample Collection)

**شاشة الفرونت:**
- عرض الطلبات المعلقة لليوم
- اختيار طلب → عرض التحاليل مجمعة حسب **نوع العينة** ثم **القسم**
- كل مجموعة عينات = أنبوب واحد = باركود واحد
- التحاليل الخارجية/المحولة = مجموعة منفصلة
- زرار "تجميع" لكل مجموعة
- طباعة باركود فوري (50×25 مم) فيه: الباركود، اسم المريض، الجنس، العمر، أكواد التحاليل، نوع العينة، رقم الطلب

**بعد التجميع:**
- التحاليل الداخلية ← تروح الكانبان
- التحاليل المحولة (خارجية) ← تروح الإحالات

#### 2.4 توزيع العمل (Kanban)

**3 أعمدة:** مستلم ← قيد التشغيل ← مكتمل

**لكل قسم صف منفصل** — يعني لو عندك 5 أقسام هتشوف 5 صفوف كل واحد فيه 3 أعمدة

**الإجراءات على المستلم/قيد التشغيل:**
- بدء التشغيل → ينقل لقيد التشغيل
- رفض → اختيار التحاليل المرفوضة + السبب → إنشاء عينة جديدة بباركود جديد → ترجع للتجميع
- تحويل خارجي → اختيار التحاليل + المعمل الخارجي → إنشاء إحالة + باركود جديد → بعد التجميع تروح للإحالات
- إدخال نتيجة → dialog فوري → ينقل لمكتمل

**الإجراءات على المكتمل:**
- إعادة تحليل → إنشاء عينة جديدة بباركود جديد → ترجع للتجميع → النتيجة القديمة تتحفظ للمقارنة

---

### المرحلة التالتة — النتائج والتقارير

**الهدف:** إدخال النتائج + المراجعة + الاعتماد + الإصدار + طباعة التقارير

**الموجود في الباك اند:** جاهز بالكامل (results, result-reports)

#### 3.1 إدخال النتائج (Results Entry)

**شاشة مقسومة:**
- **الجانب الأيمن:** قائمة طلبات اليوم مع حالة كل طلب (معلق، فيه نتائج، مكتمل)
- **الجانب الأيسر:** نتائج الطلب المختار

**أنواع الإدخال حسب نوع النتيجة:**
- **رقمي** → input رقم + وحدة + علم تلقائي (طبيعي/منخفض/مرتفع/حرج)
- **نصي** → input نص حر
- **اختيار** → dropdown (مثل: إيجابي/سلبي)
- **معادلة** → يتحسب تلقائي (مثل: eGFR من الكرياتينين والعمر والجنس)
- **ملاحظة** → textarea (للتعليقات الطويلة)

**البانل:**
- يظهر كل أعضاء البانل في جدول واحد
- كل عضو في سطر مع الرينج الطبيعي والعلم

**الأعلام (Flags):**
- 🟢 طبيعي (N)
- 🟡 منخفض (L) / مرتفع (H)
- 🔴 حرج منخفض (LL) / حرج مرتفع (HH)
- ⚠️ غير طبيعي (A)

**النتيجة السابقة:**
- لو المريض عمل نفس التحليل قبل كده → تظهر بجانب النتيجة الحالية للمقارنة
- لو إعادة تحليل → النتيجة القديمة تظهر بوضوح

#### 3.2 دورة حياة النتيجة

```
معلق (pending) → تم الإدخال (entered) → تم التحقق (validated) → معتمد (approved) → صادر (released)
```

**الصلاحيات:**
- فني المعمل ← إدخال + تحقق
- مشرف القسم ← اعتماد
- الباثولوجيست ← اعتماد نهائي + إصدار
- في المعامل الصغيرة ← نفس الشخص يعمل كل الخطوات

#### 3.3 طباعة التقارير

**تقرير المريض (PDF):**
- ترويسة المعمل (الاسم، اللوجو، العنوان، الهاتف)
- بيانات المريض (الاسم، العمر، الجنس، رقم الملف، الطبيب المحول)
- النتائج مجمعة حسب القسم
- لكل نتيجة: اسم التحليل، القيمة، الوحدة، المدى الطبيعي، العلم
- QR code للتحقق الإلكتروني
- توقيع الطبيب
- تاريخ ووقت الطباعة

**طابور الطباعة:**
- عرض الطلبات اللي نتائجها صادرة
- اختيار متعدد + طباعة جماعية
- فلتر بالتاريخ

---

### المرحلة الرابعة — الفوترة (تصميم أولي)

**الهدف:** الفواتير + المدفوعات + التأمين + عقود التأمين

**الموجود في الباك اند:** جاهز بالكامل

#### 4.1 الفواتير
- إنشاء تلقائي من المعالج أو يدوي
- ترحيل (إنشاء قيد محاسبي)
- إلغاء مع سبب
- عرض حالة الدفع (مدفوع كامل / جزئي / معلق)

#### 4.2 المدفوعات
- تسجيل دفع على فاتورة
- طرق الدفع: كاش / شبكة / تحويل / شيك
- ربط بحساب الاستلام (خزينة أو بنك)
- إلغاء دفع مع سبب
- ملخص يومي

#### 4.3 عقود التأمين
- إنشاء عقد مع شركة التأمين
- نسبة التغطية الافتراضية
- أسعار مخصصة لكل تحليل
- حصة المريض وحصة التأمين
- سقف أقصى
- موافقة مسبقة لتحاليل معينة

#### 4.4 فواتير التأمين الشهرية
- تجميع تلقائي لكل التحاليل المؤمنة خلال الشهر
- إنشاء فاتورة شهرية لشركة التأمين
- متابعة حالة التحصيل

---

## 4. تاسكات الباك اند المطلوبة (للمراحل 1-3)

### تاسك 1: تحسين المدى الطبيعي
- تغيير `age_from`/`age_to` إلى decimal أو إضافة `age_unit`
- إضافة `low_valid`, `high_valid`, `low_reporting_range`, `high_reporting_range`

### تاسك 2: جدول ربط أجهزة بالتحاليل (machine_test_mappings)
- `machine_id`, `investigation_id`, `machine_test_code`, `machine_test_name`
- API: CRUD على `/api/lis/machines/{id}/test-mappings`

### تاسك 3: إعدادات المعمل (LIS Settings)
- إضافة `pos.` → `lis.` settings definitions في الـ seeder
- إعدادات مثل: `lis.lab_name`, `lis.auto_generate_invoice`, `lis.default_price_list_id`

---

## 5. تاسكات الفرونت اند (للمراحل 1-3)

### المرحلة 1:
1. مراجعة وتحسين شاشة الأقسام
2. مراجعة وتحسين شاشة أنواع العينات (color picker)
3. مراجعة وتحسين شاشة تصنيفات التحاليل (شجري)
4. إعادة بناء شاشة التحاليل (6 تابات)
5. مراجعة وتحسين شاشة المرضى
6. مراجعة وتحسين شاشة الأطباء
7. مراجعة وتحسين شاشة الباقات
8. مراجعة وتحسين شاشة قوائم الأسعار

### المرحلة 2:
9. إعادة بناء معالج الطلبات (4 خطوات)
10. إعادة بناء شاشة تجميع العينات
11. إعادة بناء شاشة الكانبان
12. شاشة طباعة الباركود

### المرحلة 3:
13. إعادة بناء شاشة إدخال النتائج (split panel)
14. شاشة طابور الطباعة
15. تحسين تقرير PDF

---

## 6. مبادئ التصميم

### تجربة المستخدم (من LDM):
- **سرعة** — كل عملية بأقل عدد نقرات
- **وضوح** — ألوان واضحة للأعلام والحالات
- **تتابع** — سير العمل منطقي من خطوة للي بعدها
- **مرونة** — نفس الشخص يقدر يعمل أكتر من دور
- **اختصارات** — باركود سكانر في كل مكان، بحث سريع، اختصارات لوحة مفاتيح

### تقنياً:
- كل شاشة standalone component
- استخدام signals بدل NgRx للشاشات التشغيلية
- NgRx للبيانات الرئيسية فقط (أقسام، تحاليل، أنواع عينات)
- Server-side pagination لكل القوائم
- Lazy loading لكل المراحل
- RTL أول (عربي افتراضي)

---

## 7. المراحل المستقبلية (تصميم لاحق)

| المرحلة | المحتوى | الحالة |
|---------|---------|--------|
| 5 | المعامل الخارجية والإحالات والبوابة | تصميم لاحق |
| 6 | مراقبة الجودة + التحقق التلقائي + التنبيهات | تصميم لاحق |
| 7 | ربط الأجهزة والميدل وير | تصميم لاحق |
| 8 | التقارير وذكاء الأعمال | تصميم لاحق |
| 9 | تطبيق الموبايل والبوابات | تصميم لاحق |
