كاتالوج الأجهزة مقابل نُسخ العميل

نفرّق بين «نوع الجهاز» (كاتالوج عام بالموديل + درايفر + تحاليل + رنجات) و«جهاز العميل» (نسخة فعلية ليها IP/بورت، وممكن العميل عنده 3 من نفس النوع). ده التحليل قبل التنفيذ.

1 الفرق بين الحاجتين

① كاتالوج الأجهزة (النوع / Template)

قائمة عامة بالأجهزة اللي النظام بيدعمها — مرة واحدة على مستوى النظام. مثال: «Dymind DH36».

  • الموديل + الشركة المصنّعة
  • الـDriver (طريقة القراءة)
  • الـبروتوكولات المدعومة (HL7 / ASTM / Serial…)
  • قائمة التحاليل اللي بيعملها + أكوادها
  • الـرنجات الافتراضية لكل تحليل

② جهاز العميل (نسخة / Instance)

الجهاز الفعلي الموجود في المعمل. العميل ممكن عنده 3 من نفس النوع → 3 نُسخ.

  • بيتعمل بـاختيار نوع من الكاتالوج
  • بيـيورث التحاليل/الرنجات/الدرايفر من النوع
  • ليه اسم فريد + فرع
  • ليه IP / بورت خاص بيه (ده اللي يظهر في الميدل وير)
  • البيانات الواردة بتتسجّل باسم النسخة دي

التشبيه

الكاتالوج = «كتالوج السيارات» (موديل كامري بمواصفاته). نسخة العميل = «عربيتك إنت» (كامري بلوحة معدنية ولون معيّن). تقدر يكون عندك 3 كامري — كلهم نفس الموديل، كل واحدة ليها لوحتها.

2 الوضع الحالي في البرنامج

الموجودالنوع
lab_machinesنُسخ بس (company/branch) — مفيش كاتالوج
lab_machine_test_mappingsتحاليل لكل نسخة (مش على النوع)
الرنجات lab_investigation_normal_rangesعلى التحليل (وممكن machine_id لنسخة)
كاتالوج أنواع الأجهزةغير موجود

المشكلة دلوقتي

لو العميل عنده 3 × DH36، لازم يضيف التحاليل والرنجات 3 مرات (مرة لكل نسخة) — تكرار وأخطاء. الحل: نحطها مرة واحدة على النوع في الكاتالوج، والنُسخ تورثها.

3 التصميم المقترح

كاتالوج (نظام) نُسخ العميل (معمل) ───────────── ────────────────── ┌───────────────────────┐ │ Device Model: DH36 │ ┌──────────────────────────┐ │ driver: dymind_hl7 │ ──يورث──► │ DH36 - فرع المعادي #1 │ IP/بورت: …:5601 │ protocols: HL7 │ │ (نسخة من DH36) │ │ tests: WBC,HGB,PLT… │ ├──────────────────────────┤ │ ranges: لكل تحليل │ ──يورث──► │ DH36 - فرع المعادي #2 │ IP/بورت: …:5602 │ │ ├──────────────────────────┤ │ │ ──يورث──► │ DH36 - فرع جدة #1 │ IP/بورت: …:5600 └───────────────────────┘ └──────────────────────────┘ (نفس التحاليل/الرنجات، اتصال مختلف)

جدول جديد: كاتالوج الأنواع lab_device_models

تعديل النُسخ: lab_machines

قرار جوهري: «نسخ» ولا «مرجع مشترك»؟

نسخ (موصى به): النسخة تاخد كوبي من تحاليل/رنجات النوع وقت الإنشاء، وتقدر تعدّلها لوحدها (مثلاً معايرة مختلفة لجهاز). أبسط وأمرن.
مرجع مشترك: النسخة تشاور النوع دايماً — تعديل النوع يأثر على الكل. أنضف للصيانة بس أقل مرونة للنسخة الواحدة.

4 الشاشات

الشاشةالدورمين بيستخدمها
كاتالوج الأجهزة (جديدة)إدارة أنواع الأجهزة: موديل، درايفر، بروتوكولات، تحاليل افتراضية + رنجاتهاالأدمن / النظام (مرة)
أجهزة المعمل (الحالية + تعديل)إضافة نسخة: اختر نوع من الكاتالوج → اسم/فرع/IP/بورت. تقدر تعدّل تحاليلها لو لزمالمعمل
إعداد الجهاز (اللي عملناها)تبقى لتعديل تحاليل/رنجات النسخة (override) — أو نوجّهها للكاتالوجالمعمل
البيانات الواردة (اللي عملناها)الداتا الخام اللي وصلت — باسم النسخةالمعمل

5 الربط بالميدل وير

6 الهجرة والشغل

7 قرارات قبل التنفيذ

  1. التحاليل/الرنجات: «نسخ» للنسخة وقت الإنشاء (موصى به)، ولا «مرجع مشترك» من الكاتالوج؟
  2. الكاتالوج: على مستوى النظام (مشترك لكل العملاء)، ولا لكل شركة كاتالوجها؟
  3. الأكواد والرنجات في الكاتالوج: أعبّيها أنا للـDH36 من الداتا الحقيقية اللي عندنا (WBC, HGB… + رنجات)، ولا تعبّيها إنت؟
  4. الترتيب: نبني الكاتالوج الأول ونعيد ربط النُسخ، ولا نكمّل النُسخ الحالية ونضيف الكاتالوج بعدين؟