@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->handlesFloorCare($member)) {
$nav[] = ['name' => 'Queue', 'route' => route('care.queue.index'), 'active' => request()->routeIs('care.queue.*') || request()->routeIs('care.consultations.*'),
'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.pathways.*')
|| request()->routeIs('care.outcomes.*'),
'icon' => '',
];
}
// Lab, pharmacy, billing, and Queue service counters are Pro/Enterprise modules.
if (! empty($hasPaidPlan)) {
if ($permissions->can($member, 'lab.view') && $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.
if ($permissions->handlesFloorCare($member) && $organization) {
$specialtyService = app(\App\Services\Care\SpecialtyModuleService::class);
$specialtyService->ensureDefaultModulesProvisioned(
$organization,
(string) $organization->owner_ref,
);
foreach ($specialtyService->enabledModulesForMember($organization, $member) as $item) {
$key = $item['key'];
$label = $item['definition']['nav_label'] ?? $item['definition']['label'] ?? $key;
$nav[] = [
'name' => $label,
'route' => route('care.specialty.workspace', $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 catalog', 'route' => route('care.lab.catalog.index'), 'active' => request()->routeIs('care.lab.catalog.*'),
'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.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