شاشة إعداد الجهاز: التحاليل + الرنجات في مكان واحد

عند إضافة جهاز، نختار التحاليل اللي بيعملها، ونحدّد الرنجات لكل تحليل — كل ده من نفس الشاشة. الرنجات تظهر برضو في تاب الرينجات بتاع الـInvestigation (نفس البيانات، مدخل أسهل).

1 خبر سار: البنية موجودة بالفعل

المكوّنالحالة
جدول ربط الجهاز بالتحاليل lab_machine_test_mappings
(machine_id, investigation_id, machine_test_code, machine_test_name, unit, sort_order)
موجود
CRUD للـmappings — apiResource machine-test-mappingsموجود (GET/POST/PUT/DELETE)
جدول الرنجات lab_investigation_normal_ranges
(investigation_id, machine_id, age_from/to, gender, normal_min/max, critical_low/high, valid, reportable, unit, text_normal)
موجود
حفظ الرنجات — PUT /lis/investigations/{id}/normal-ranges (نفس اللي بيستخدمه تاب الرينجات)موجود

النتيجة: الموضوع معظمه فرونت إند

مفيش حاجة كبيرة في الباك إند — الـendpoints جاهزة. بنبني تاب جديد في شاشة الجهاز يستخدمها.

2 الفكرة: تاب «التحاليل والرنجات» في شاشة الجهاز

جهاز: Dymind DH36 — تبويب «التحاليل والرنجات»  [+ إضافة تحليل]
WBCWhite Blood Cellsكود الجهاز: WBC · وحدة: 10³/µL▾ رنجات
عام: 4.0–11.0 · حرج <2 أو >30  |  ذكر بالغ: 4.5–11 · أنثى: 4.0–10.5
HGBHemoglobinكود الجهاز: HGB · وحدة: g/dL▾ رنجات
ذكر: 13–17 · أنثى: 12–15 · أطفال: 11–14
PLTPlateletsكود الجهاز: PLT · وحدة: 10³/µL▾ رنجات

كل صف = ربط (mapping) بين كود الجهاز (WBC) وتحليل في النظام (White Blood Cells). توسيع الصف يفتح محرّر الرنجات لنفس التحليل.

3 إزاي بيشتغل (التدفق)

① إضافة تحليل للجهاز (mapping)

② رنجات كل تحليل (مشتركة)

ليه ده مهم

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

4 قرار: رنجات «عامة» ولا «خاصة بالجهاز»؟

جدول الرنجات فيه عمود machine_id — يعني ممكن رنج يكون خاص بجهاز معيّن. فعندنا اختيارين:

الخيارالمعنىملاحظة
عامة (مشتركة)machine_id = nullالرنج للتحليل نفسه، يظهر في تاب الرينجات، ويستخدمه أي جهاز.يطابق وصفك — موصى به الأول
خاصة بالجهازmachine_id = الجهازرنج مختلف لكل جهاز (أجهزة مختلفة لها مراجع مختلفة فعلاً).دقيق أكتر بس أعقد — لاحقاً

التوصية

نبدأ بـالعامة (machine_id null) عشان تظهر في تاب الرينجات زي ما قلت وتكون مصدر واحد. ونسيب الباب مفتوح للرنجات الخاصة بالجهاز كتحسين بعدين (الجدول داعمها).

5 الشغل المطلوب

الجزءالتفاصيلالحجم
Backendغالباً لا شيء — الـendpoints موجودة. (اختياري: endpoint واحد bulk يحفظ كل mappings الجهاز مرة واحدة لتقليل الطلبات.)صغير/لا شيء
Frontend — تاب جديد«التحاليل والرنجات» في dialog الجهاز: بحث/اختيار investigations، صف mapping (كود الجهاز + وحدة)، توسيع لتحرير الرنجات.متوسط
Frontend — محرّر الرنجاتنعيد استخدام نفس مكوّن رنجات الـInvestigation (سن/جنس/min/max/حرج + قبول الأرقام العربية) — موجود بالفعل.إعادة استخدام
الربط بالميدل ويربعد ما الـmappings تتظبّط، نتيجة الجهاز (test_code=WBC) تتربط بالـinvestigation تلقائياً عند الرفع.شغّال بالفعل

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

  1. الرنجات: عامة (مشتركة مع تاب الرينجات) — موصى به — ولا خاصة بالجهاز؟
  2. كود الجهاز: تكتبه يدوي لكل تحليل (WBC, HGB…)، ولا نعمل قائمة أكواد جاهزة لكل driver (DH36 له أكواده المعروفة) للاختيار منها؟
  3. مكان التاب: داخل dialog الجهاز الحالي (تبويب جديد)، ولا شاشة منفصلة «إعداد جهاز» أوسع؟
  4. الحفظ: طلب لكل mapping (أبسط)، ولا نضيف endpoint bulk واحد (أسرع لو ٢٠ تحليل)؟