{{-- Smart Report v2 - Urinalysis (UA/PEU). --}} {{-- Mirrors SmartReportService::GetUrinalysisPDF (lines 4930-6023). --}} {{-- Two pages: --}} {{-- page 1 = Color, Clarity, SG, pH, LEU, NIT, PRO, GC, KET, UR, BIL, BLD --}} {{-- page 2 = PC, URBC, EP, CST, CRS, UAM, OT, UCRT, UCAT --}} @php /** @var array $group Group view-model from WebController v2 dispatch */ /** @var \App\Services\SmartReportV2Service $service */ $service = $service ?? app(\App\Services\SmartReportV2Service::class); $Package = $group['package'] ?? ($group['firstPackage'] ?? null); $bg1 = public_path('img/smart-report-pdf/bg/urinalysis/page-1.png'); $bg2 = public_path('img/smart-report-pdf/bg/urinalysis/page-2.png'); $model = $Package ? $service->buildUrinalysisModel($Package) : ['page1' => [], 'page2' => []]; $p1 = $model['page1'] ?? []; $p2 = $model['page2'] ?? []; // LNH meter left-offset (normal 1-9, high 1-3, low 1-3) — used by UR. $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; }; $meterColor = fn ($c) => $c === 'green' ? 'rgb(120,201,38)' : 'rgb(221,52,68)'; // v1 plus/minus label positions reused by LEU/NIT/PRO/KET/GC/BIL/BLD/UR/CST/CRS. // Map a NAME_EN → x-offset (ymm supplied per block). $plusPosX = [ 'Negative' => 25, 'Nil' => 24, 'Normal' => 25, 'Positive' => 40, '0' => 37, '+1' => 34, '+2' => 40, '+3' => 46, '+4' => 52, '+5' => 59, '+6' => 43, '+7' => 46, '+8' => 49, '+9' => 52, '+10' => 55, '+11' => 59, ]; $plusColorMap = [ 'Negative' => 'rgb(120,201,38)', 'Normal' => 'rgb(120,201,38)', 'Nil' => 'rgb(120,201,38)', 'Positive' => 'rgb(228,111,1)', '0' => 'rgb(221,52,68)', '+1' => 'rgb(221,52,68)', '+2' => 'rgb(221,52,68)', '+3' => 'rgb(221,52,68)', '+4' => 'rgb(221,52,68)', '+5' => 'rgb(221,52,68)', '+6' => 'rgb(221,52,68)', '+7' => 'rgb(221,52,68)', '+8' => 'rgb(221,52,68)', '+9' => 'rgb(221,52,68)', '+10' => 'rgb(221,52,68)', '+11' => 'rgb(221,52,68)', ]; // Cell/NH5 meter x-offset for PC/URBC/EP numeric variants. Mirrors the // v1 0.5-step switch (see GetUrinalysisPDF lines 5698-5715 et al.). $cellMeterLeft = function ($result) { $max = 8; $min = 0.5; $rounded = (int) round($result); if ($rounded < $max) $max = round($result, 2); if ($rounded < $min) $max = $min; $map = [ '0.5' => 24, '1' => 24, '1.5' => 27, '2' => 30, '2.5' => 33, '3' => 36, '3.5' => 39, '4' => 42, '4.5' => 45, '5' => 45, '5.5' => 51, '6' => 54, '6.5' => 57, '7' => 60, '7.5' => 60, '8' => 63, ]; $key = (string) $max; return $map[$key] ?? 24; }; @endphp {{-- ═══════════════════════════ PAGE 1 ═══════════════════════════ --}}