# ربط الأجهزة — وثيقة التصميم الشاملة

> تاريخ: 2026-03-27
> المرجع: نظام ل.د.م + بحث شامل في أنظمة المعامل العالمية

---

## ١. طرق الاتصال بالأجهزة

### سيريال (RS-232)
- الأقدم والأكثر انتشاراً — خصوصاً الأجهزة قبل 2015
- سلك مباشر بين الجهاز والكمبيوتر — حد أقصى 15 متر
- الإعدادات النموذجية: سرعة 9600، 8 بت، بدون تحقق، 1 بت وقف
- ممكن يتمدد بمحول سيريال لشبكة (مثل Moxa)

### شبكة (TCP/IP)
- الجهاز على الشبكة زي أي كمبيوتر
- ممكن يكون في مبنى تاني
- بورت مخصص لكل جهاز (مثلاً 9100، 3000، 4000)
- نبضات حياة للكشف عن انقطاع الاتصال

### ملفات
- الجهاز بيكتب ملف نصي في فولدر مشترك
- النظام بيفحص الفولدر كل 5-30 ثانية
- صيغ مختلفة: CSV، نص ثابت العرض، XML

---

## ٢. البروتوكول (ASTM)

### أنواع السجلات في رسالة ASTM:

| الكود | السجل | المحتوى |
|-------|-------|---------|
| H | ترويسة | بداية الجلسة — اسم المرسل والمستقبل والوقت |
| P | مريض | بيانات المريض — الاسم وتاريخ الميلاد والجنس |
| O | طلب | رقم العينة (الباركود) + أكواد التحاليل المطلوبة |
| R | نتيجة | كود التحليل + القيمة + الوحدة + الرينج + العلم (H/L/N) |
| C | تعليق | ملاحظة حرة على أي سجل |
| Q | استعلام | الجهاز يسأل النظام: إيه المطلوب لهذه العينة؟ |
| L | نهاية | نهاية الرسالة |

### مثال حقيقي — نتيجة CBC من جهاز سيسمكس:
```
H|\^&|||Sysmex XN-1000^12345||||||LIS2-A2|P|1
P|1||||^محمد أحمد||19900115|M
O|1|2026030001||^^^WBC\^^^RBC\^^^HGB\^^^HCT\^^^PLT|||||||N
R|1|^^^WBC|8.5|x10^3/uL|4.5-11.0|N||F
R|2|^^^RBC|5.2|x10^6/uL|4.5-5.5|N||F
R|3|^^^HGB|15.3|g/dL|13.5-17.5|N||F
R|4|^^^HCT|45.2|%|40-54|N||F
R|5|^^^PLT|250|x10^3/uL|150-400|N||F
L|1|N
```

### الاتصال ثنائي الاتجاه (Host Query):
```
١. الفني يحط العينة على الجهاز
٢. الجهاز يقرأ الباركود: "2026030001"
٣. الجهاز يسأل النظام: "إيه المطلوب للعينة 2026030001؟"
   Q|1|2026030001||ALL
٤. النظام يرد: "اعمل CBC"
   H|...
   P|1||||^محمد أحمد
   O|1|2026030001||^^^WBC\^^^RBC\^^^HGB|||||||N
   L|1|N
٥. الجهاز يشغل التحاليل المطلوبة بس (مش كلها)
٦. الجهاز يبعت النتائج
```

---

## ٣. رينجات كل جهاز — لماذا وكيف

### ليه الرينجات بتختلف؟
1. **طريقة القياس**: جهاز بيقيس الهيموجلوبين بالليزر وتاني بالكيمياء — النتائج بتختلف شوية
2. **الكاشف (الريجنت)**: كل مصنّع كاشف ليه مواصفات مختلفة
3. **دفعة الكاشف (اللوت)**: حتى نفس الكاشف من نفس المصنّع — كل دفعة بتختلف شوية

### الحل:
```
التحليل: هيموجلوبين
├── رينج عام: 13.5 - 17.5 (لو مفيش جهاز محدد)
├── جهاز سيسمكس XN-1000: 13.5 - 17.5
├── جهاز ميندراي BC-5380: 13.0 - 17.0
└── جهاز آبوت CELL-DYN: 13.2 - 17.3
```

### منطق الاختيار:
1. ابحث عن رينج الجهاز + العمر + الجنس
2. لو مش لقيت → استخدم الرينج العام + العمر + الجنس
3. لو مش لقيت أي رينج → لا تعلّم (مفيش علم H/L)

---

## ٤. التحقق التلقائي من النتائج

### القواعد بالترتيب:

| الترتيب | القاعدة | الفشل يعني |
|---------|---------|-----------|
| ١ | هل النتيجة في المدى الصالح؟ (مثلاً HGB 0.5-25) | رفض — غلط إدخال |
| ٢ | هل النتيجة حرجة؟ (مثلاً HGB < 7) | وقف — تنبيه فوري + مراجعة بشرية |
| ٣ | هل الجهاز بعت علم خطأ؟ (عينة ملوثة/ناقصة) | وقف — مراجعة بشرية |
| ٤ | هل مراقبة الجودة (QC) ناجحة؟ | وقف — كل نتائج الجهاز توقف |
| ٥ | فحص دلتا: هل النتيجة تغيرت كتير عن آخر مرة؟ | تحذير — مراجعة بشرية |
| ٦ | هل النتائج المرتبطة متسقة؟ | تحذير |

### فحص دلتا — 3 طرق حساب:
1. **فرق مطلق**: |الحالي - السابق| — مثلاً HGB تغير 3 g/dL
2. **فرق نسبي**: |الحالي - السابق| / السابق × 100% — مثلاً تغير 20%
3. **معدل التغير**: الفرق / الوقت — مثلاً كرياتينين ارتفع 0.5 في ساعة

### أعلام الجهاز الشائعة:
- H (مرتفع) / L (منخفض) / HH (حرج مرتفع) / LL (حرج منخفض)
- F (نهائي) / P (مبدئي) / R (معاد)
- أعلام الجهاز الخاصة: مثلاً "Lipemia" (عينة دهنية)، "Hemolysis" (عينة محللة)

---

## ٥. مطابقة نتائج الأجهزة

### كيف النظام يعرف النتيجة دي بتاعة مين؟
```
الجهاز يبعت: باركود "2026030001" + كود تحليل "HGB" + نتيجة "15.3"

النظام:
١. ابحث في العينات عن باركود "2026030001" → لقيت عينة #45
٢. العينة #45 مرتبطة بطلب #12
٣. الطلب #12 فيه تحليل هيموجلوبين
٤. ابحث في ربط الأجهزة: كود "HGB" على جهاز #3 = تحليل هيموجلوبين (#2)
٥. طابق! → أنشئ سجل نتيجة جهاز (machine_result)
```

### النتائج غير المطابقة:
- لو مش لقى الباركود → "غير مطابق" → ينتظر مراجعة يدوية
- لو لقى الباركود بس مش لقى التحليل → "تحليل غير معروف"
- الفني يراجع ويطابق يدوياً أو يرفض

---

## ٦. الميدل وير

### إيه هو؟
برنامج وسيط بين الأجهزة والنظام:
```
[جهاز 1] --سيريال--> |              |
[جهاز 2] --شبكة---->  | الميدل وير   | ---> [النظام LIS]
[جهاز 3] --ملف-----> | (محرك قواعد) |
```

### ليه محتاجينه؟
1. **كل جهاز بيتكلم لغة مختلفة** — الميدل وير بيترجم الكل لغة واحدة
2. **قواعد التحقق** — بيطبق القواعد قبل ما النتيجة توصل للنظام
3. **مراقبة** — بيراقب كل الأجهزة في مكان واحد
4. **احتياطي** — لو النظام وقع، النتائج بتتخزن في الميدل وير

### هل لازم؟
- معمل صغير (1-3 أجهزة): ممكن بدون ميدل وير — النظام يتكلم مع الأجهزة مباشرة
- معمل متوسط/كبير (5+ أجهزة): الميدل وير ضروري

---

## ٧. الشاشات المطلوبة في الفرونت اند

### أ. إدارة الأجهزة (موجود — محتاج تحسين)
- تعريف الجهاز: اسم + موديل + مصنّع + رقم تسلسلي + قسم
- إعدادات الاتصال: نوع (سيريال/شبكة/ملف) + آي بي + بورت + سرعة
- حالة: نشط / صيانة / معطل
- بيانات التكلفة

### ب. ربط التحاليل بالأجهزة (موجود — تاب في فورم التحاليل)
- كل جهاز → أي تحاليل بيعملها → بأي كود

### ج. رينجات الجهاز (مطلوب — تاسك #1281)
- لكل ربط (جهاز + تحليل): رينجات خاصة حسب العمر والجنس

### د. نتائج الأجهزة (موجود في الباك اند — الفرونت محتاج تحسين)
- جدول النتائج الواردة من الأجهزة
- فلاتر: جهاز + حالة (غير مطابق / مطابق / معتمد / مرفوض)
- مطابقة يدوية: اختيار العينة والتحليل
- موافقة / رفض مع سبب

### هـ. مراقبة الأجهزة (جديد — محتاج باك اند)
- لوحة حية: كل الأجهزة مع حالة الاتصال
- آخر نتيجة استلمت + وقتها
- تنبيه لو جهاز انقطع عنه الاتصال

### و. قواعد التحقق التلقائي (جديد — محتاج باك اند)
- لكل تحليل: القواعد المفعلة
- إعدادات فحص دلتا (نوع الفحص + الحد)
- إعدادات التحقق التلقائي

### ز. سجل الاتصالات (جديد — محتاج باك اند)
- تاريخ كل رسالة بين الجهاز والنظام
- البيانات الخام (للتشخيص)

---

## ٨. الوضع الحالي في الباك اند

| الميزة | الحالة | التاسك |
|--------|--------|--------|
| تعريف الأجهزة | ✅ كامل | — |
| ربط التحاليل بالأجهزة | ✅ كامل | #1276 (خلص) |
| نتائج الأجهزة + مطابقة + موافقة/رفض | ✅ كامل | — |
| رينجات لكل جهاز | ❌ ناقص | #1281 (اتبعت) |
| قواعد التحقق التلقائي | ❌ مفيش | مطلوب |
| فحص دلتا | ❌ مفيش | مطلوب |
| مراقبة الأجهزة (حالة حية) | ❌ مفيش | مطلوب |
| سجل الاتصالات | ❌ مفيش | مطلوب |
| الميدل وير | ❌ مفيش | سيرفس منفصل — مرحلة 7 |

---

## ٩. التاسكات المطلوبة

### باك اند:
1. رينجات لكل جهاز (تاسك #1281 — اتبعت)
2. قواعد التحقق التلقائي + فحص دلتا
3. مراقبة الأجهزة (حالة حية + آخر نتيجة)
4. سجل الاتصالات (تخزين الرسائل الخام)

### فرونت اند:
1. تحسين شاشة إدارة الأجهزة
2. شاشة نتائج الأجهزة (مطابقة + موافقة + رفض)
3. شاشة مراقبة الأجهزة (لوحة حية)
4. شاشة قواعد التحقق التلقائي
5. ربط رينجات الجهاز في تاب ربط الأجهزة

### الميدل وير (مرحلة 7):
- سيرفس منفصل بيتكلم مع الأجهزة
- بيترجم بروتوكول ASTM/HL7
- بيبعت النتائج للنظام عبر API
