Ladill Care
@php $member = auth()->user() ? app(\App\Services\Care\OrganizationResolver::class)->memberFor(auth()->user()) : null; $permissions = app(\App\Services\Care\CarePermissions::class); $organization = auth()->user() ? app(\App\Services\Care\OrganizationResolver::class)->resolveForUser(auth()->user()) : null; $nav = [ ['name' => 'Dashboard', 'route' => route('care.dashboard'), 'active' => request()->routeIs('care.dashboard'), 'icon' => ''], ]; if ($permissions->can($member, 'patients.view')) { $nav[] = ['name' => 'Patients', 'route' => route('care.patients.index'), 'active' => request()->routeIs('care.patients.*'), 'icon' => '']; } if ($permissions->can($member, 'appointments.view')) { $nav[] = ['name' => 'Appointments', 'route' => route('care.appointments.index'), 'active' => request()->routeIs('care.appointments.*'), 'icon' => '']; if ($permissions->canAccessPatientQueue($member)) { $nav[] = ['name' => 'Queue', 'route' => route('care.queue.index'), 'active' => request()->routeIs('care.queue.*') || request()->routeIs('care.consultations.*'), 'icon' => '']; } } if (! empty($hasPaidPlan) && $permissions->can($member, 'displays.view')) { $nav[] = ['name' => 'Displays', 'route' => route('care.displays.index'), 'active' => request()->routeIs('care.displays.*'), 'icon' => '']; } if (! empty($hasPaidPlan) && $permissions->can($member, 'devices.view')) { $nav[] = ['name' => 'Devices', 'route' => route('care.devices.index'), 'active' => request()->routeIs('care.devices.*') || request()->routeIs('care.kiosk.*'), 'icon' => '']; } // Clinical assessments (layered intake / pathways) — on by default; toggle in Settings. $assessmentsEngineOn = $organization && app(\App\Services\Care\CareFeatures::class)->enabled( $organization, \App\Services\Care\CareFeatures::ASSESSMENTS_ENGINE, ); if ($assessmentsEngineOn && $permissions->can($member, 'assessments.view') && $permissions->can($member, 'patients.view') && $permissions->handlesFloorCare($member)) { $nav[] = [ 'name' => 'Clinical forms', 'route' => route('care.patients.index', ['focus' => 'assessments']), 'active' => request()->routeIs('care.assessments.*') || request()->routeIs('care.consultations.assessments.*') || request()->routeIs('care.pathways.*') || request()->routeIs('care.outcomes.*'), 'icon' => '', ]; } // Lab, pharmacy, billing, and Queue service counters are Pro/Enterprise modules. if (! empty($hasPaidPlan)) { // Queue ops require lab.manage (techs/managers). Doctors only have lab.view // for results — do not show a link that 403s on care.lab.queue.index. if ($permissions->can($member, 'lab.manage') && $permissions->handlesFloorCare($member)) { $nav[] = ['name' => 'Laboratory', 'route' => route('care.lab.queue.index'), 'active' => request()->routeIs('care.lab.*') && ! request()->routeIs('care.lab.catalog.*'), 'icon' => '']; } if ($permissions->can($member, 'prescriptions.view') && $permissions->handlesFloorCare($member)) { $nav[] = ['name' => 'Pharmacy queue', 'route' => route('care.prescriptions.queue'), 'active' => request()->routeIs('care.prescriptions.*') && ! request()->routeIs('care.pharmacy.*'), 'icon' => '']; } if ($permissions->can($member, 'pharmacy.view')) { $nav[] = ['name' => 'Inventory', 'route' => route('care.pharmacy.drugs.index'), 'active' => request()->routeIs('care.pharmacy.*'), 'icon' => '']; } if ($permissions->can($member, 'bills.view')) { $nav[] = ['name' => 'Billing', 'route' => route('care.bills.index'), 'active' => request()->routeIs('care.bills.*', 'care.obligations.*'), 'icon' => '']; } if ($permissions->can($member, 'reports.finance.view')) { $nav[] = ['name' => 'Reports', 'route' => route('care.reports.index'), 'active' => request()->routeIs('care.reports.*'), 'icon' => '']; } // Specialty modules — role-gated clinical surfaces for floor staff. // Desk specialists skip this group (redundant single-desk list); dashboard cards remain. if ($permissions->handlesFloorCare($member) && $organization) { $specialtyService = app(\App\Services\Care\SpecialtyModuleService::class); $specialtyModulesForNav = $specialtyService->enabledModulesForMember($organization, $member); if ($specialtyModulesForNav !== [] && $specialtyService->shouldShowSpecialtyNav($organization, $member)) { foreach ($specialtyModulesForNav as $item) { $key = $item['key']; $label = $item['definition']['nav_label'] ?? $item['definition']['label'] ?? $key; $nav[] = [ 'name' => $label, 'route' => route('care.specialty.show', $key), 'active' => request()->routeIs('care.specialty.*') && request()->route('module') === $key, 'icon' => $specialtyService->iconSvgPath($key), 'group' => 'specialty', ]; } } } } $adminNav = []; if (! empty($hasPaidPlan) && $permissions->can($member, 'lab.catalog.manage')) { $adminNav[] = ['name' => 'Lab admin', 'route' => route('care.lab.admin.index'), 'active' => request()->routeIs('care.lab.admin.*'), 'icon' => '']; $adminNav[] = ['name' => 'Lab catalog', 'route' => route('care.lab.catalog.index'), 'active' => request()->routeIs('care.lab.catalog.*'), 'icon' => '']; } if (! empty($hasPaidPlan) && $permissions->can($member, 'blood_bank.manage')) { $adminNav[] = ['name' => 'Blood Bank admin', 'route' => route('care.blood-bank.admin.index'), 'active' => request()->routeIs('care.blood-bank.admin.*'), 'icon' => '']; } if ($permissions->can($member, 'admin.departments.view')) { $adminNav[] = ['name' => 'Departments', 'route' => route('care.departments.index'), 'active' => request()->routeIs('care.departments.*'), 'icon' => '']; } if ($permissions->can($member, 'admin.departments.view') || $permissions->can($member, 'inpatient.placement.view')) { $adminNav[] = ['name' => 'Care units', 'route' => route('care.care-units.index'), 'active' => request()->routeIs('care.care-units.*'), 'icon' => '']; } if ($permissions->can($member, 'nursing.services.view')) { $adminNav[] = ['name' => 'Nursing Services', 'route' => route('care.nursing.services'), 'active' => request()->routeIs('care.nursing.*') || request()->routeIs('care.shifts.*'), 'icon' => '']; } if ($permissions->can($member, 'admin.members.view')) { $adminNav[] = ['name' => 'Staff assignments', 'route' => route('care.staff-assignments.index'), 'active' => request()->routeIs('care.staff-assignments.*'), 'icon' => '']; } if ($permissions->can($member, 'admin.practitioners.view')) { $adminNav[] = ['name' => 'Practitioners', 'route' => route('care.practitioners.index'), 'active' => request()->routeIs('care.practitioners.*'), 'icon' => '']; } if ($permissions->can($member, 'audit.view')) { $adminNav[] = ['name' => 'Audit log', 'route' => route('care.audit.index'), 'active' => request()->routeIs('care.audit.*'), 'icon' => '']; } $settingsActive = (request()->routeIs('care.settings*') && ! request()->routeIs('care.pro.*')) || request()->routeIs('care.branches.*') || request()->routeIs('care.members.*') || request()->routeIs('care.integrations*') || request()->routeIs('care.devices.*') || request()->routeIs('care.displays.*'); @endphp
@if ($permissions->can($member, 'settings.view')) Settings @endif @php $proActive = request()->routeIs('care.pro.*'); $issueActive = request()->routeIs('care.issues.*'); $isAccountOwner = \App\Support\StaffUx::showBilling(auth()->user()); @endphp @if ($isAccountOwner) @if (! empty($hasPaidPlan)) {{ ! empty($isEnterprise) ? 'Care Enterprise' : 'Care Pro' }} @else Upgrade to Pro @endif @else Report Issue @endif