تحليل: جعل طباعة البوابة تلتزم بالأقسام والبانلز وأنواع التحاليل — تماماً كتقرير المعمل
تحليل قبل التنفيذ · 2026-05-22الطباعة اللي بيشوفها المريض من البوابة لازم تكون نفس طباعة المعمل الرسمية:
PpPrintService — جدول إنجليزي مسطّح في صفحة واحدة. كل التحاليل ورا بعض بدون أقسام ولا بانلز.
LisReportPdfService (756 سطر) — صفحة لكل قسم، بانلز مجمّعة، ترويسة المعمل، QR.
LisReportPdfService.generateReport(data, settings, lab) — يستقبل ReportData فيه sections[]:
ReportData {
requestNumber, requestDate, patient{name,mrn,age,gender}, doctor,
sections: [
{ name: "Hematology",
panelName?: "CBC",
results: [ { testName, result, unit, referenceRange, flag,
indent?, subHeader? } ] }
]
}
sections[] → صفحة منفصلة (doc.addPage()).indent (عضو بانل مزاح) و subHeader (عنوان فرعي).providedIn:'root' — البوابة تقدر تستدعيها لو وفّرت لها ReportData بالشكل الصح.
عشان نطبع per-section لازم نعرف كل تحليل في أنهي قسم، وكمان نعرف البانلز. استجابة GET /lis/portal/requests الحالية:
tests: [
{ name, name_en, unit, status, value, normal_min, normal_max, abnormal_flag }
// ✘ مفيش section ✘ مفيش تجميع بانل
]
| الناقص | الطبقة | الحالة |
|---|---|---|
حقل section (name + name_en) لكل تحليل | Backend | جديد — أحمد |
تعشيش البانلز (is_panel + members[]) | Backend | تذكرة #1601 |
(اختياري) code لكل تحليل — لعرضه في التقرير | Backend | جديد — أحمد |
{id, mrn, name} فقط. الحل: إما الـ backend يضيفهم لرد link-access، أو نطبع بدونهم (السن/الجنس فاضيين). مقترح: نضيفهم لرد link-access — تحسين بسيط.
استجابة /lis/portal/requests لكل تحليل (وكل عضو بانل):
{
"section": { "name": "أمراض الدم", "name_en": "Hematology" },
"code": "HGB",
"name": "...", "name_en": "Hemoglobin", "unit": "g/dL",
"status": "released", "value": "14",
"normal_min": "13", "normal_max": "17", "abnormal_flag": "normal"
}
+ تعشيش البانلز (is_panel + members[]) من #1601. + سن/جنس المريض في رد link-access.
portalRequestToReportData() — يبني ReportData من PortalRequest: تجميع بالقسم، البانل كـ panelName/أعضاء، الفحوصات المُصدَرة فقط.PpPrintService يستدعي LisReportPdfService.generateReport() بدل الجدول المسطّح — مع LabInfo من config.json و ReportSettings افتراضية (بدون توقيع طبيب).section، كل التحاليل تروح قسم واحد «Lab Results» (صفحة واحدة، شغّال). أول ما section يوصل → تتقسّم تلقائياً.
LisReportPdfService مباشرة — لا نكرّر منطق الطباعة. طباعة البوابة = نفس محرّك تقرير المعمل.section + code لكل تحليل + سن/جنس المريض في link-access.