📋 مقارنة تقرير التحاليل المخبرية

النسخة الحالية في Moon LIS مقابل التقرير المرجعي (NASLAB) — تحليل تفصيلي للفروقات قبل البدء بالتعديل

📅 تاريخ التحليل: 2026-05-10 📄 المرجع: AllServices PDF (6 صفحات) 🔧 المسؤول: Frontend (Angular 21 + jsPDF) 🆕 شاهد Mockup التقرير الجديد

📌 الملخص التنفيذي

التقرير الحالي مبني بـ jsPDF + jspdf-autotable في src/app/core/services/lis-report-pdf.service.ts. التقرير المرجعي مبني بـ iTextSharp ويتبع نمط مختبرات تجاري معروف (NASLAB). الهيكل العام متشابه لكن هناك فروقات في:

الجيد: نمط الـ "page break قبل كل قسم/panel" والـ continuation header موجود بالفعل في النسخة الحالية ومطابق للمرجع.

📑 1. التقرير المرجعي (NASLAB) — كل الصفحات

الـ PDF الأصلي 6 صفحات، كل صفحة قسم/panel مستقل. هذا الـ thumbnails:

Page 1 — Chemistry / HbA1C Page 2 — Haematology / ESR Page 3 — Chemistry / Lipid Profile Page 4 — Haematology / CBC Page 5 — Hormones (TSH, Vit D) Page 6 — Chemistry (full panel)

📥 تحميل الـ PDF المرجعي الأصلي

🏷️ 2. الترويسة (Header)

الحالي (Moon LIS)
┌──────────────────────────────────────────────┐ │ Moon Lab email@lab.com │ │ +966 ... │ │ address ... │ │ ──────────────────────── (blue line) ───── │ └──────────────────────────────────────────────┘

اسم المختبر يسار + معلومات الاتصال يمين + خط أزرق رفيع.
لا يوجد شعار. لا يوجد اسم عربي.

المرجع (NASLAB)
┌──────────────────────────────────────────────┐ │ [LOGO] مختبرات ناس │ │ شعار NASLAB │ │ ──────────────────────────────────────────── │ └──────────────────────────────────────────────┘

شعار يسار + اسم عربي/إنجليزي يمين (RTL aware).
خط أفقي رفيع (رمادي وليس أزرق).

👤 3. صندوق بيانات المريض

الحقلالحاليالمرجعالأهمية
رقم الحساب (Acc. No.)❌ غير موجود12116960عالي
الفرع (Branch)❌ غير موجودJeddah Branchعالي
اسم المريض✅ Name✅ Patient Nameتطابق
رقم المريض✅ Patient ID✅ Patient Numberتسمية فقط
الجنس/العمر✅ Age/Gender✅ Gender/Ageترتيب
رقم الإحالة❌ غير موجود✅ Reffering No.متوسط
الطبيب المُحيل✅ Ref. By✅ Ref. Doctorتسمية
العيادة المُحيلة❌ غير موجود✅ Ref. Clinicمتوسط
تاريخ الزيارة⚠️ Collection✅ Visit Dateدلالة مختلفة
تاريخ النتيجة✅ Report Date✅ Result Dateتسمية
نوع العينة (Sample)✅ موجود❌ غير موجودإضافي
رقم التقرير (Report ID)✅ موجود❌ غير موجودإضافي
القرار المطلوب: هل نضيف Acc. No., Branch, Ref. Clinic, Reffering No. ونحذف Sample و Report ID؟ أم نحتفظ بكل شيء (8 حقول → 12 حقل)؟

🧪 4. عنوان القسم (Section Title)

الحالي
Chemistry

سطر واحد متمركز بـ fontSize: 11, bold

المرجع
Chemistry Lipid Profile

سطرين: القسم الرئيسي (section.name) + الـ panel (investigation.name) — كلاهما متمركز ومُعَتم

التغيير المطلوب: إضافة عنوان فرعي (sub-title) للـ panel name. الموديل ReportSection يحتاج حقل panelName?: string.

📊 5. جدول النتائج

ترتيب الأعمدة

العمودالحاليالمرجعالتعديل
1INVESTIGATION (75mm, يسار)Test (يسار)نفس المنطق
2RESULT (30mm, وسط) + flag inlineResult (يسار)إزالة inline flag
3REF. RANGE (45mm, وسط)Flag (L/H) — عمود ضيقعمود جديد
4UNIT (25mm, يمين)Unit (يسار)نقل لمكان 4
5Ref. Range (يسار)آخر عمود

الترتيب المقترح بعد التعديل

| Test | Result | Flag | Unit | Ref. Range | | --------------- | ------ | ---- | ----- | --------------------- | | HbA1C | 5.9 | | % | Normal: Below 5.7% | | | | | | Prediabetic: 5.7-6.4% | | | | | | Diabetic: >= 6.5% | | MDGL | 123 | | mg/dL | 70 - 130 | | HGB | 11.60 | L | g/dl | 12 - 16 | | Cholesterol | 188 | | mg/dl | 0 - 220 |

عرض الـ Flag

الحالي
11.60 Low g/dl 12 - 16

النص "Low" داخل خلية النتيجة بلون أحمر/أزرق

المرجع
11.60 L g/dl 12 - 16

حرف واحد (L/H) في عمود مستقل ضيق — أنقى وأوضح

عرض الـ Reference Range متعدد الأسطر

المرجع يكتب الـ ranges المعقدة (مثل HbA1C: Normal/Prediabetic/Diabetic أو Vitamin D: Deficient/Insufficient/Sufficient) داخل خلية الـ Range نفسها على عدة أسطر بـ font-size أصغر — وليس كـ comment row منفصل تحت الصف.

📝 6. التذييل (Footer)

العنصرالحاليالمرجعالأهمية
Approved by⚠️ توقيع + اسم تحت خط (داخل المحتوى قبل الـ footer)✅ "Approved by:" + اسم الطبيب يمين الصفحةتعديل موضع
Verified By❌ غير موجود✅ "Verified By: Emad Ahmed Ghali"حقل مفقود
Printed By❌ غير موجود✅ "Printed By: System1"حقل مفقود
Printed Date⚠️ "Electronically generated — DD/MM/YYYY HH:MM"✅ "Printed Date: 29/11/2021 03:17 PM"إعادة تسمية
Page X of Y✅ يمين✅ وسطموضع
عنوان المختبر❌ غير موجود✅ سطر تحت الـ footerإضافة
┌──────────────────────────────────────────────────┐ │ Verified By: ____ Page 1 of 1 Printed By:_ │ │ Printed Date │ │ ─────────────────────────────────────────────── │ │ Jeddah, prince mohamed Ben abdelaziz road... │ └──────────────────────────────────────────────────┘

🗂️ 7. تجميع الأقسام (Section ↔ Panel)

المرجع يستخدم تسلسل هرمي من مستويين:

Page 1: Chemistry → HbA1C (1 panel)
Page 2: Haematology → ESR (1 test)
Page 3: Chemistry → Lipid Profile (panel of 7)
Page 4: Haematology → CBC (panel of 19)
Page 5: Hormones (TSH + Vit D)
Page 6: Chemistry (16 tests, مجموعة كاملة)
القاعدة:
  • إذا كان قسم به panel واحد → يطبع مع عنوان فرعي للـ panel.
  • إذا كان قسم به panels متعددة أو tests منفصلة → يجمع تحت عنوان القسم بدون panel name (مثل Page 6).
  • كل صفحة = قسم واحد (page break بين الأقسام). موجود بالفعل ✅

✅ 8. قائمة التغييرات المقترحة

A. إضافات في موديل البيانات (TypeScript interfaces)

B. تعديلات في PDF Service (lis-report-pdf.service.ts)

C. تغييرات اختيارية

❓ 9. أسئلة قبل البدء

  1. هل نحذف Sample و Report ID من patient info box (غير موجودين في المرجع)، أم نحتفظ بهما؟
  2. هل عنوان المختبر يجب أن يطبع في كل الصفحات أم في آخر صفحة فقط؟
  3. الـ Logo الحالي للمختبر — هل سيتم رفعه عبر core/settings أم سيكون asset ثابت؟
  4. هل نحتاج علاوة على ذلك إخراج HTML preview قبل توليد الـ PDF (للمراجعة قبل الطباعة)؟
  5. هل نسخة العربية للحقول مطلوبة؟ (مثلاً "اسم المريض" بدلاً من "Patient Name") أم نبقي إنجليزي فقط لأنه التقرير الرسمي؟
طلبك: اعتمد المنهج (يسار/يمين/قائمة العناصر المضافة/المحذوفة) قبل البدء في التنفيذ. التنفيذ متوقع حوالي 3-4 ساعات للتعديلات الأساسية.