طباعة تقارير الهيستوباثولوجي (والتقارير السردية)

ليه التقرير طالع وحش؟ + تصميم مقترح لتقرير احترافي + إصلاح الإيصال الفاضي

التاريخ: 4 يونيو 2026  •  LIS  •  محرّكات الطباعة: lis-report-pdf.service.ts (jsPDF) · lis-html-report.service.ts (HTML→print)

1) ليه تقرير الهيستوباثولوجي طالع "مدمّر"

جذر المشكلة: تقرير الهيستو سردي (فقرات نص طويلة)، لكنه بيتطبع بنفس قالب التقرير الرقمي (جدول نتائج بأعمدة ومرجع) — وده غلط مفهومياً.

① القالب الغلط

الهيستو بيتحط تحت جدول النتائج الرقمي (drawHistopathBlocks بعد الجدول). الجدول ده مصمّم لأرقام + Reference Range، مش لفقرات. فبيظهر جدول فاضي/أعمدة مالهاش لازمة فوق النص.

② خطوط ومسافات مكدوسة

الخطوط 7–8.5pt والمسافة بين السطور 3.5mm — حجم صغير جداً لفقرات طويلة، فالنص بيبقى كتلة مكدوسة صعبة القراءة.

③ مفيش معالجة فواصل صفحات

الكود بيزوّد cursorY يدوي من غير addPage() داخل البلوك. لو التقرير طويل، النص بيخرج من حدود الصفحة ويتقصّ — ده اللي بيدي إحساس "التقرير مكسور".

④ بلا هيكل بصري

العناوين مجرد سطر صغير uppercase، مفيش فصل واضح بين الأقسام، مفيش بلوك معلومات إكلينيكية، مفيش بلوك توقيع الباثولوجي — فالشكل "تقني" مش "تقرير طبي".

مقارنة بصرية

الحالي

Madinah Specialist Lab
Report
TestResultUnitRef.Flag
Histopathology…
Gross description
Fragments of fibrofatty tissue measuring 4 cm in aggregate cut surface shows a firm ill defined area…
Microscopic description
Sections show fragments of breast tissue showing infiltrating tumor cells arranged in cords nests and tubules within a desmoplastic stroma tumor cells are moderately pleomorphic…
Diagnosis
Invasive Ductal Carcinoma Nottingham Grade 2…
✂ النص بيتقصّ عند نهاية الصفحة

المقترح

Madinah Specialist Lab
Surgical Pathology Report
LR-2026-00273
04/06/2026
Patient: hazemMRN: 26Age/Sex: 34 / MSpecimen: Breast, biopsyRef. Dr:
Final Diagnosis
Invasive Ductal Carcinoma, Nottingham Grade 2 (2+2+1).
Gross Description
Fragments of fibrofatty tissue measuring 4 cm in aggregate. Cut surface shows a firm, ill-defined area measuring 1.2 cm. Entire specimen submitted in cassette 1.
Microscopic Description
Sections show fragments of breast tissue showing infiltrating tumor cells arranged in cords, nests and tubules within a desmoplastic stroma. Tumor cells are moderately pleomorphic with vesicular nuclei and prominent nucleoli…
Special Stains
PAS positive.
Consultant Pathologist
Dr. ______

2) التصميم المقترح — تقرير سردي مستقل

قالب مخصّص للتقارير السردية (هيستو / سايتولوجي / ميكروبيولوجي / أي تحليل بياناته نص)، منفصل تماماً عن قالب الأرقام.

هيدر طبياسم المعمل + شعار، عنوان "Surgical Pathology Report"، رقم التقرير، التاريخ.
بلوك المريض/العيّنةالاسم/MRN/السن/النوع + نوع العيّنة + الطبيب المحوِّل + تاريخ الاستلام.
التشخيص أولاًFinal Diagnosis في بلوك بارز فوق (هو أهم جزء للطبيب).
أقسام كفقراتعنوان واضح + نص justified، مسافات مريحة (خط 10–11pt، سطر 1.4–1.5).
أقسام ديناميكيةالأقسام الإضافية اللي عملناها بتظهر بنفس النسق، والفاضي مايظهرش.
صور الشرائح(لو موجودة) شبكة صور بـcaptions تحت النص.
بلوك التوقيعاسم الباثولوجي + التوقيع + تاريخ الاعتماد + "Peer reviewed by".
فواصل صفحات سليمةالأقسام بتتدفّق عبر الصفحات من غير قص + هيدر/فوتر متكرر + ترقيم صفحات.

3) قرار المحرّك — الأهم

للنصوص السردية، الـHTML→Print أفضل بكتير من رسم jsPDF اليدوي.

التوصية: نوجّه تقارير النوع السردي لمسار HTML مخصّص (lis-html-report.service.ts) بقالب CSS احترافي بدل ما نرسمها بـjsPDF خطوة-بخطوة:
  • الـCSS بيتعامل مع تدفّق الفقرات وفواصل الصفحات تلقائياً (page-break-inside:avoid للأقسام).
  • تحكّم كامل في التايبوغرافي (justify, line-height, مسافات) بسطر CSS بدل حسابات يدوية.
  • دعم RTL/عربي أسهل بكتير.
  • أرخص في الصيانة — تعديل الشكل = تعديل CSS مش رياضة إحداثيات.
jsPDF يفضل للملصقات والباركود والتقارير الجدولية القصيرة.

4) ملف منفصل — الإيصال طلع فاضي (سبب مختلف)

ده مش مشكلة طباعة شكل — ده تسعير:

الإصلاح المقترح (Backend-first)

  • الجذر: وقت إضافة تحليل للريكوست، لو مفيش سعر من قائمة الأسعار → نرجع لسعر التحليل الافتراضي (investigation.price) بدل 0.
  • متانة الطباعة: نخلّي الفلتر يخفي أعضاء البانل بس — مش أي تحليل مستقل سعره 0 (التحليل المستقل يظهر حتى لو 0).

5) نقاط محتاج قرارك فيها

أ) نطاق القالب السردي: نعمله للهيستو بس، ولا لكل الأنواع السردية (culture / cytology / memo / text)؟ (أنصح: لكل السردية بنفس القالب.)
ب) لغة التقرير: إنجليزي افتراضي (المعتاد في الباثولوجي)، عربي، ولا ثنائي حسب إعداد؟
ج) الحقول المهيكلة: (ICD / TNM / Margins / IHC) — نعرضها كـ"Synoptic summary" منظّم تحت التشخيص، ولا نخفيها لو فاضية بس؟
د) التوقيع: نعرض اسم + صورة توقيع الباثولوجي (لو متخزّنة) ولا اسم بس؟

6) خطة التنفيذ المقترحة

  1. قالب HTML سردي مخصّص: دالة جديدة في lis-html-report.service.ts تبني تقرير document-style (هيدر + بلوك مريض/عيّنة + تشخيص بارز + أقسام كفقرات + توقيع + فوتر) بـCSS طباعة محترم.
  2. التوجيه: لما الريكوست يكون نوعه سردي (هيستو/culture/cytology) → يروح للقالب الجديد بدل التقرير الرقمي.
  3. الأقسام الديناميكية: تظهر بنفس نسق الأقسام الأساسية، الفاضي مايظهرش (متعمول خلاص).
  4. إصلاح الإيصال: ترسيب سعر التحليل الافتراضي + إظهار التحاليل المستقلة صفر-السعر في الطباعة.
  5. تحقّق: نطبع تقرير هيستو طويل (يتعدّى صفحة) ونتأكد إن الأقسام بتتدفّق صح من غير قص.