{{-- Smart Report v2 - Semen analysis (SA). --}} {{-- Mirrors SmartReportService::GetSemenanalysisPDF (lines 8677-9788). --}} {{-- Three pages: page 1 = physical, page 2 = morphology, page 3 = motility. --}} @php $service = $service ?? app(\App\Services\SmartReportV2Service::class); // v1 (GetSemenanalysisPDF 8683-8687): title = package test name with // REPORT_DISPLAY_NAME_AR override, description = SMART_DESC_AR. $semenPkg = $group['package'] ?? ($group['firstPackage'] ?? null); $semenTestName = $semenPkg->lABCATEGORYPACKAGE->NAME_AR ?? ''; if (!empty($semenPkg->lABCATEGORYPACKAGE->REPORT_DISPLAY_NAME_AR)) $semenTestName = $semenPkg->lABCATEGORYPACKAGE->REPORT_DISPLAY_NAME_AR; $semenDescription = $semenPkg->lABCATEGORYPACKAGE->SMART_DESC_AR ?? ''; $Package = $group['package'] ?? ($group['firstPackage'] ?? null); $model = $Package ? $service->buildSemenModel($Package) : ['page1' => [], 'page2' => [], 'page3' => []]; $p1 = $model['page1']; $p2 = $model['page2']; $p3 = $model['page3']; // Standard LNH meter left position (normal 1-9, high 1-3, low 1-3) $meterLeft = function ($type, $move) { $move = (int) round($move); if ($type === 'normal') return 24 + ($move - 1) * 4; if ($type === 'high') return 52 + ($move - 1) * 3; return 22 - ($move - 1) * 3; }; // Sperm-Count meter (normal up to 11, no high, low 1-3) $spermMeterLeft = function ($type, $move) { $move = (int) round($move); if ($type === 'normal') { if ($move <= 9) return 24 + ($move - 1) * 4; if ($move === 10) return 52; if ($move === 11) return 55; return 58; } if ($type === 'low') return max(16, 22 - ($move - 1) * 3); return 24; }; $meterColor = fn ($c) => $c === 'green' ? 'rgb(120,201,38)' : 'rgb(221,52,68)'; @endphp {{-- ═══════════════════════════ PAGE 1 ═══════════════════════════ --}}