# دليل تطوير LIMS 2 — نظام إدارة معلومات المختبرات

## نظرة عامة

هذا الدليل يوثّق الحالة الحالية لنظام Lab LIMS ويحدد ما هو موجود مقابل ما ينقص لتحقيق نظام LIMS 2 متكامل وفق المعايير الدولية.

---

## 1. المكونات الأساسية لنظام LIMS 2

| المكون | الوصف |
|--------|-------|
| **LIS** | أنظمة معلومات المختبر — العمليات السريرية والمرضى |
| **LIMS** | إدارة العينات والبحث العلمي |
| **ELN** | دفاتر المختبر الإلكترونية |
| **LES** | تنفيذ إجراءات المختبر |
| **QA/QC** | ضبط الجودة ومراقبة الجودة |

---

## 2. الحالة الحالية — ما هو موجود ✅

### 2.1 إدارة المرضى والأطباء
| الميزة | الحالة |
|--------|--------|
| إدارة المرضى (CRUD) | ✅ |
| البيانات الديموغرافية | ✅ |
| كود بوابة المريض | ✅ |
| نقاط الولاء | ✅ |
| إدارة الأطباء | ✅ |
| بوابة المريض (نتائج بالكود/الهاتف) | ✅ |

### 2.2 الطلبات والنتائج
| الميزة | الحالة |
|--------|--------|
| إنشاء الطلبات | ✅ |
| كتالوج الفحوصات والفئات | ✅ |
| البانels (مجموعات الفحوصات) | ✅ |
| المدى المرجعي والقيم الحرجة | ✅ |
| المدى المرجعي حسب العمر/الجنس | ✅ |
| إدخال النتائج يدوياً | ✅ |
| أعلام النتائج (N, L, H, C) | ✅ |
| التحقق من المدى المرجعي | ✅ |
| اعتماد النتائج | ✅ |
| قائمة العمل (Worklist) | ✅ |
| استيراد النتائج (CSV) | ✅ |

### 2.3 إدارة العينات
| الميزة | الحالة |
|--------|--------|
| جدول العينات | ✅ |
| الباركود | ✅ (حقل موجود) |
| الموقع والتخلص | ✅ |
| تتبع حالة العينة | ✅ (collected, received, in_progress, disposed, إلخ) |

### 2.4 الفواتير والمخزون
| الميزة | الحالة |
|--------|--------|
| الفواتير والمدفوعات | ✅ |
| عملات متعددة (USD/IQD) | ✅ |
| المخزون والحركات | ✅ |
| تاريخ انتهاء الصلاحية | ✅ |
| تنبيه المخزون المنخفض | ✅ |

### 2.5 الأمان والصلاحيات
| الميزة | الحالة |
|--------|--------|
| RBAC (أدوار وصلاحيات) | ✅ |
| صلاحيات لكل صفحة | ✅ |
| سجل التدقيق (Audit Log) | ✅ |
| تصدير CSV للسجل | ✅ |
| حظر IPs | ✅ |
| القائمة البيضاء للـ IPs | ✅ |
| سياسة كلمات المرور | ⚠️ يحتاج تفعيل |
| عزل بيانات لكل مختبر | ✅ |

### 2.6 ضبط الجودة
| الميزة | الحالة |
|--------|--------|
| اختبارات QC | ✅ |
| نتائج QC مع z-score | ✅ |
| داخل/خارج النطاق | ✅ |
| مخططات Levey-Jennings | ✅ |
| قواعد Westgard (1-2s, 1-3s, 2-2s, R-4s) | ✅ |

### 2.7 التكامل
| الميزة | الحالة |
|--------|--------|
| تكامل الأجهزة (CSV) | ✅ |
| ربط جهاز–فحص | ✅ |
| API العيادات | ✅ |
| واتساب | ✅ |
| SMS | ✅ (إعدادات) |
| بوابات الدفع (Stripe, ZainCash, Asia Pay) | ✅ |

### 2.8 البنية التحتية
| الميزة | الحالة |
|--------|--------|
| Multi-tenant SaaS | ✅ |
| Multi-branch | ✅ |
| الخطط والاشتراكات | ✅ |
| وضع أوفلاين (PWA) | ✅ |
| مزامنة أوفلاين | ✅ |
| التحقق من التقرير (QR) | ✅ |
| التحقق من الفاتورة | ✅ |

---

## 3. فجوات التطوير — ما تم وما ينقص

### 3.1 تم تنفيذه ✅

| الميزة | الوصف |
|--------|-------|
| **قواعد الانعكاس (Reflex)** | واجهة كاملة + أتمتة عند إدخال النتائج |
| **مخططات Levey-Jennings** | رسم بياني مع Mean ± 1–3 SD (Chart.js) |
| **قواعد Westgard** | 1-2s, 1-3s, 2-2s, R-4s + عمود rule_violated |
| **القيم الحرجة — تنبيه** | تنبيه واضح مع تأكيد عند إدخال قيمة حرجة |
| **المدى المرجعي حسب العمر/الجنس** | جدول reference_ranges + واجهة إدارة + استخدام عند التحقق |
| **دورة حياة العينة الكاملة** | فلتر وتحديث الحالة (collected, in_progress, disposed...) |

### 3.2 أولوية متوسطة — لم يُنفَّذ بعد

| الميزة | الوصف | الجهد |
|--------|-------|-------|
| **تقسيم العينة (Aliquot)** | عينة واحدة لعدة فحوصات | أسبوع |
| **ASTM/HL7 للأجهزة** | اتصال ثنائي الاتجاه مع المحللات | شهر+ |
| **دفعات المخزون (Batch)** | تتبع أرقام الدفعات | أسبوع |
| **FEFO للمخزون** | أول منتهي أول خارج | أسبوع |
| **تصدير PDF للتقارير** | ✅ منفذ — زر تحميل PDF في صفحة التقارير | — |

### 3.3 أولوية منخفضة

| الميزة | الوصف | الجهد |
|--------|-------|-------|
| **HL7 FHIR / EMR** | تكامل مع السجلات الصحية | أشهر |
| **API REST للطلبات/النتائج** | واجهة برمجية عامة | شهر |
| **SSO (SAML/OAuth)** | تسجيل دخول موحد | شهر |
| **دعم الاعتماد (ISO 15189)** | وثائق وتقارير الامتثال | أشهر |
| **تطبيق جوال أصلي** | iOS/Android | أشهر |

---

## 4. خارطة طريق تنفيذية

```
المرحلة 1 — ✅ مكتملة:
├── واجهة قواعد الانعكاس (Reflex Rules)
├── تنبيه القيم الحرجة عند الإدخال
├── مخططات Levey-Jennings لـ QC
├── دورة حياة العينة المحسّنة
├── المدى المرجعي حسب العمر/الجنس
└── قواعد Westgard

المرحلة 2 (مقترحة):
├── تفعيل سياسة كلمات المرور
├── تصدير PDF/Excel للتقارير
├── تقسيم العينة (Aliquot)
└── دفعات المخزون (Batch)

المرحلة 3 (طويلة الأمد):
├── ASTM/HL7 للأجهزة
├── FEFO للمخزون
├── API REST أساسي
├── استيراد Excel للنتائج
└── تحسين لوحة التحكم
```

---

## 5. هيكل المشروع

```
ss/
├── config/           # الإعدادات
├── docs/             # الوثائق (LIMS2_DEVELOPMENT_GUIDE.md)
├── api/              # نقاط نهاية API
├── js/               # JavaScript (مزامنة أوفلاين)
├── migrations/       # ترحيلات قاعدة البيانات (run_019_lims2_features.php)
├── modules/          # صفحات النظام
│   ├── quality.php       # ضبط الجودة، Levey-Jennings، Westgard
│   ├── reflex_rules.php  # قواعد الانعكاس
│   ├── reference_ranges.php  # المدى المرجعي حسب العمر/الجنس
│   ├── samples.php       # إدارة العينات (دورة الحياة)
│   └── results.php       # النتائج، القيم الحرجة
├── src/Core/         # Auth, Database, ResultValidator, AuditLog, etc.
├── index.php         # نقطة الدخول
├── payment_webhook.php
├── verify_report.php
├── verify_invoice.php
└── service-worker.js # PWA
```

---

## 6. الصلاحيات (RBAC)

| الصلاحية | الوصف |
|----------|-------|
| patients.view | عرض المرضى |
| patients.edit | إضافة/تعديل المرضى |
| doctors.view | عرض الأطباء |
| orders.view | عرض الطلبات |
| orders.edit | إنشاء/تعديل الطلبات |
| tests.view | عرض الفحوصات |
| tests.update | تعديل التحاليل (والمدى المرجعي) |
| results.view | عرض النتائج |
| results.edit | إدخال النتائج |
| results.validate | اعتماد النتائج |
| billing.view | الفواتير |
| inventory.view | المخزون |
| quality.manage | ضبط الجودة |
| integration.manage | التكامل والأجهزة |
| settings.manage | الإعدادات |
| users.manage | المستخدمون |
| roles.manage | الصلاحيات |
| security.view | الأمان والامتثال |
| audit_log.view | سجل التدقيق |

---

## 7. ترحيل قاعدة البيانات (LIMS 2)

لتشغيل ميزات LIMS 2، نفّذ الترحيل:

```bash
php migrations/run_019_lims2_features.php
```

أو نفّذ SQL يدوياً:
- إنشاء جدول `reference_ranges`
- إضافة عمود `rule_violated` إلى `qc_results`
- توسيع `samples.status` (collected, in_progress, disposed, rejected)

---

## 8. مراجع

- **مقارنة OpenELIS:** `docs/OPENELIS_COMPARISON_AND_ROADMAP.md`
- **دليل المزامنة الأوفلاين:** `docs/OFFLINE_SYNC_GUIDE.md`
- **OpenELIS Global:** https://docs.openelis-global.org
