Add Care Units, beds, and dated staff assignments.
Deploy Ladill Care / deploy (push) Successful in 1m8s
Deploy Ladill Care / deploy (push) Successful in 1m8s
Models employment as department/unit/shift placements with primary and temporary kinds so nurses are not permanently bound to a ward. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
<x-app-layout title="Add care unit">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-xl font-semibold text-slate-900">Add care unit</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">Place the unit under a department. Use Float pool for nurses without a permanent ward.</p>
|
||||
<form method="POST" action="{{ route('care.care-units.store') }}" class="mt-6 space-y-4 rounded-2xl border border-slate-200 bg-white p-6">
|
||||
@csrf
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Department</label>
|
||||
<select name="department_id" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">Select…</option>
|
||||
@foreach ($departments as $department)
|
||||
<option value="{{ $department->id }}" @selected((int) old('department_id', $selectedDepartmentId) === (int) $department->id)>
|
||||
{{ $department->labelForSelect() }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('department_id')<p class="mt-1 text-xs text-red-600">{{ $message }}</p>@enderror
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Name</label>
|
||||
<input type="text" name="name" value="{{ old('name') }}" required class="mt-1 w-full rounded-lg border-slate-300 text-sm" placeholder="e.g. Labour Ward, ANC Clinic">
|
||||
@error('name')<p class="mt-1 text-xs text-red-600">{{ $message }}</p>@enderror
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Code <span class="font-normal text-slate-400">(optional)</span></label>
|
||||
<input type="text" name="code" value="{{ old('code') }}" class="mt-1 w-full rounded-lg border-slate-300 text-sm" placeholder="LW, ANC">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Kind</label>
|
||||
<select name="kind" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($kinds as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('kind', 'inpatient') === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn-primary w-full">Create care unit</button>
|
||||
</form>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,36 @@
|
||||
<x-app-layout title="Edit care unit">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-xl font-semibold text-slate-900">Edit care unit</h1>
|
||||
<form method="POST" action="{{ route('care.care-units.update', $unit) }}" class="mt-6 space-y-4 rounded-2xl border border-slate-200 bg-white p-6">
|
||||
@csrf @method('PUT')
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Department</label>
|
||||
<select name="department_id" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($departments as $department)
|
||||
<option value="{{ $department->id }}" @selected((int) old('department_id', $unit->department_id) === (int) $department->id)>
|
||||
{{ $department->labelForSelect() }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Name</label>
|
||||
<input type="text" name="name" value="{{ old('name', $unit->name) }}" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Code</label>
|
||||
<input type="text" name="code" value="{{ old('code', $unit->code) }}" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Kind</label>
|
||||
<select name="kind" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($kinds as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('kind', $unit->kind) === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<label class="flex items-center gap-2 text-sm"><input type="checkbox" name="is_active" value="1" @checked(old('is_active', $unit->is_active))> Active</label>
|
||||
<button type="submit" class="btn-primary w-full">Save changes</button>
|
||||
</form>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,52 @@
|
||||
<x-app-layout title="Care units">
|
||||
<div class="space-y-6">
|
||||
<x-care.page-hero
|
||||
badge="Inpatient · Clinics · Float pool"
|
||||
title="Care units"
|
||||
description="Units under departments — wards, clinics, theatres, and float pools. Staff are assigned to units with effective dates, not permanently bound to a ward."
|
||||
:stats="[
|
||||
['value' => number_format($heroStats['total']), 'label' => 'Units'],
|
||||
['value' => number_format($heroStats['inpatient']), 'label' => 'Inpatient'],
|
||||
['value' => number_format($heroStats['float']), 'label' => 'Float pools'],
|
||||
['value' => number_format($heroStats['active']), 'label' => 'Active'],
|
||||
]">
|
||||
<x-slot name="actions">
|
||||
<a href="{{ route('care.care-units.create') }}" class="btn-primary">Add care unit</a>
|
||||
</x-slot>
|
||||
</x-care.page-hero>
|
||||
|
||||
<div class="overflow-hidden rounded-2xl border border-slate-200 bg-white">
|
||||
<table class="min-w-full text-sm">
|
||||
<thead class="bg-slate-50 text-left text-xs uppercase text-slate-500">
|
||||
<tr>
|
||||
<th class="px-4 py-3">Name</th>
|
||||
<th class="px-4 py-3">Kind</th>
|
||||
<th class="px-4 py-3">Department</th>
|
||||
<th class="px-4 py-3">Branch</th>
|
||||
<th class="px-4 py-3"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-slate-50">
|
||||
@forelse ($units as $unit)
|
||||
<tr class="{{ $unit->is_active ? '' : 'opacity-60' }}">
|
||||
<td class="px-4 py-3 font-medium">
|
||||
{{ $unit->name }}
|
||||
@if ($unit->code)
|
||||
<span class="ml-1 text-xs text-slate-400">{{ $unit->code }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-3">{{ $kinds[$unit->kind] ?? $unit->kind }}</td>
|
||||
<td class="px-4 py-3">{{ $unit->department?->name }}</td>
|
||||
<td class="px-4 py-3">{{ $unit->department?->branch?->name }}</td>
|
||||
<td class="px-4 py-3 text-right">
|
||||
<a href="{{ route('care.care-units.show', $unit) }}" class="text-sky-600">Open</a>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="5" class="px-4 py-6 text-center text-slate-500">No care units yet.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,83 @@
|
||||
<x-app-layout title="{{ $unit->name }}">
|
||||
<div class="space-y-6">
|
||||
<div class="flex flex-wrap items-start justify-between gap-4">
|
||||
<div>
|
||||
<p class="text-sm text-slate-500">
|
||||
<a href="{{ route('care.care-units.index') }}" class="text-indigo-600 hover:text-indigo-800">Care units</a>
|
||||
<span class="text-slate-300">/</span>
|
||||
{{ $unit->department?->name }}
|
||||
</p>
|
||||
<h1 class="mt-1 text-2xl font-semibold text-slate-900">{{ $unit->name }}</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">
|
||||
{{ $kinds[$unit->kind] ?? $unit->kind }}
|
||||
@if ($unit->code) · {{ $unit->code }} @endif
|
||||
· {{ $unit->department?->branch?->name }}
|
||||
@unless ($unit->is_active)
|
||||
· <span class="text-amber-700">Inactive</span>
|
||||
@endunless
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<a href="{{ route('care.care-units.edit', $unit) }}" class="btn-secondary">Edit</a>
|
||||
<a href="{{ route('care.staff-assignments.create', ['care_unit_id' => $unit->id]) }}" class="btn-primary">Assign staff</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($unit->supportsBeds())
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-6">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<div>
|
||||
<h2 class="text-base font-semibold text-slate-900">Beds</h2>
|
||||
<p class="text-sm text-slate-500">Rooms and bed labels for this inpatient unit.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="POST" action="{{ route('care.care-units.beds.store', $unit) }}" class="mt-4 grid gap-3 sm:grid-cols-4">
|
||||
@csrf
|
||||
<input type="text" name="label" required placeholder="Bed label" class="rounded-lg border-slate-300 text-sm" value="{{ old('label') }}">
|
||||
<input type="text" name="room" placeholder="Room" class="rounded-lg border-slate-300 text-sm" value="{{ old('room') }}">
|
||||
<select name="status" class="rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($bedStatuses as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('status', 'available') === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<button type="submit" class="btn-primary">Add bed</button>
|
||||
</form>
|
||||
|
||||
<div class="mt-4 overflow-x-auto">
|
||||
<table class="min-w-full text-sm">
|
||||
<thead class="text-left text-xs uppercase text-slate-500">
|
||||
<tr>
|
||||
<th class="pb-2 pr-4">Label</th>
|
||||
<th class="pb-2 pr-4">Room</th>
|
||||
<th class="pb-2 pr-4">Status</th>
|
||||
<th class="pb-2"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-slate-100">
|
||||
@forelse ($unit->beds as $bed)
|
||||
<tr class="{{ $bed->is_active ? '' : 'opacity-50' }}">
|
||||
<td class="py-3 pr-4 font-medium">{{ $bed->label }}</td>
|
||||
<td class="py-3 pr-4">{{ $bed->room ?: '—' }}</td>
|
||||
<td class="py-3 pr-4">{{ $bedStatuses[$bed->status] ?? $bed->status }}</td>
|
||||
<td class="py-3 text-right">
|
||||
<form method="POST" action="{{ route('care.care-units.beds.destroy', [$unit, $bed]) }}" class="inline" onsubmit="return confirm('Remove this bed?')">
|
||||
@csrf @method('DELETE')
|
||||
<button type="submit" class="text-red-600 hover:text-red-800">Remove</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="4" class="py-4 text-slate-500">No beds yet.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="rounded-2xl border border-dashed border-slate-200 bg-slate-50 px-6 py-5 text-sm text-slate-600">
|
||||
This unit kind does not use beds. Outpatient clinics, service units, and float pools assign staff without bed inventory.
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -10,6 +10,7 @@
|
||||
['value' => number_format($heroStats['branches']), 'label' => 'Branches'],
|
||||
]">
|
||||
<x-slot name="actions">
|
||||
<a href="{{ route('care.care-units.index') }}" class="btn-secondary">Care units</a>
|
||||
<a href="{{ route('care.departments.create') }}" class="btn-primary">Add department</a>
|
||||
</x-slot>
|
||||
</x-care.page-hero>
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
@php
|
||||
$assignment = $assignment ?? null;
|
||||
@endphp
|
||||
|
||||
<x-app-layout title="{{ $assignment ? 'Edit assignment' : 'Add assignment' }}">
|
||||
<div class="mx-auto max-w-xl">
|
||||
<h1 class="text-xl font-semibold text-slate-900">{{ $assignment ? 'Edit staff assignment' : 'Add staff assignment' }}</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">RBAC role stays on the team member. This record is their unit placement over a date range.</p>
|
||||
|
||||
<form method="POST"
|
||||
action="{{ $assignment ? route('care.staff-assignments.update', $assignment) : route('care.staff-assignments.store') }}"
|
||||
class="mt-6 space-y-4 rounded-2xl border border-slate-200 bg-white p-6">
|
||||
@csrf
|
||||
@if ($assignment) @method('PUT') @endif
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Staff member</label>
|
||||
<select name="member_id" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">Select…</option>
|
||||
@foreach ($members as $member)
|
||||
<option value="{{ $member->id }}" @selected((int) old('member_id', $assignment?->member_id ?? $selectedMemberId) === (int) $member->id)>
|
||||
{{ $memberLabels[$member->id] ?? $member->user_ref }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('member_id')<p class="mt-1 text-xs text-red-600">{{ $message }}</p>@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Assignment kind</label>
|
||||
<select name="kind" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($kinds as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('kind', $assignment?->kind ?? 'primary') === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<p class="mt-1 text-xs text-slate-500">Temporary requires a care unit (e.g. float nurse covering Emergency today).</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Department <span class="font-normal text-slate-400">(optional if unit selected)</span></label>
|
||||
<select name="department_id" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">—</option>
|
||||
@foreach ($departments as $department)
|
||||
<option value="{{ $department->id }}" @selected((int) old('department_id', $assignment?->department_id) === (int) $department->id)>
|
||||
{{ $department->labelForSelect() }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Care unit</label>
|
||||
<select name="care_unit_id" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">—</option>
|
||||
@foreach ($units as $unit)
|
||||
<option value="{{ $unit->id }}"
|
||||
data-department="{{ $unit->department_id }}"
|
||||
@selected((int) old('care_unit_id', $assignment?->care_unit_id ?? request('care_unit_id')) === (int) $unit->id)>
|
||||
{{ $unit->labelForSelect() }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('care_unit_id')<p class="mt-1 text-xs text-red-600">{{ $message }}</p>@enderror
|
||||
</div>
|
||||
|
||||
<div class="grid gap-4 sm:grid-cols-2">
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Post / grade</label>
|
||||
<select name="assignment_role" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">—</option>
|
||||
@foreach ($assignmentRoles as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('assignment_role', $assignment?->assignment_role) === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Shift</label>
|
||||
<select name="shift_code" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<option value="">—</option>
|
||||
@foreach ($shiftCodes as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('shift_code', $assignment?->shift_code) === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid gap-4 sm:grid-cols-2">
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Starts on</label>
|
||||
<input type="date" name="starts_on" required value="{{ old('starts_on', $assignment?->starts_on?->format('Y-m-d') ?? now()->toDateString()) }}" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Ends on <span class="font-normal text-slate-400">(open-ended OK)</span></label>
|
||||
<input type="date" name="ends_on" value="{{ old('ends_on', $assignment?->ends_on?->format('Y-m-d')) }}" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Status</label>
|
||||
<select name="status" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@foreach ($statuses as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('status', $assignment?->status ?? 'active') === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Notes</label>
|
||||
<textarea name="notes" rows="2" class="mt-1 w-full rounded-lg border-slate-300 text-sm">{{ old('notes', $assignment?->notes) }}</textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-primary w-full">{{ $assignment ? 'Save changes' : 'Create assignment' }}</button>
|
||||
</form>
|
||||
|
||||
@if ($assignment)
|
||||
<form method="POST" action="{{ route('care.staff-assignments.destroy', $assignment) }}" class="mt-4" onsubmit="return confirm('Remove this assignment?')">
|
||||
@csrf @method('DELETE')
|
||||
<button type="submit" class="text-sm font-medium text-red-600 hover:text-red-800">Remove assignment</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1 @@
|
||||
@include('care.admin.staff-assignments.create')
|
||||
@@ -0,0 +1,67 @@
|
||||
<x-app-layout title="Staff assignments">
|
||||
<div class="space-y-6">
|
||||
<x-care.page-hero
|
||||
badge="Primary · Temporary · Specialty"
|
||||
title="Staff assignments"
|
||||
description="Dated employment placements — department, care unit, post, and shift. Temporary assignments cover float nurses without making ward ownership permanent."
|
||||
:stats="[
|
||||
['value' => number_format($heroStats['total']), 'label' => 'Assignments'],
|
||||
['value' => number_format($heroStats['active']), 'label' => 'Effective today'],
|
||||
['value' => number_format($heroStats['primary']), 'label' => 'Primary'],
|
||||
['value' => number_format($heroStats['temporary']), 'label' => 'Temporary'],
|
||||
]">
|
||||
<x-slot name="actions">
|
||||
<a href="{{ route('care.staff-assignments.create') }}" class="btn-primary">Add assignment</a>
|
||||
</x-slot>
|
||||
</x-care.page-hero>
|
||||
|
||||
<div class="overflow-hidden rounded-2xl border border-slate-200 bg-white">
|
||||
<table class="min-w-full text-sm">
|
||||
<thead class="bg-slate-50 text-left text-xs uppercase text-slate-500">
|
||||
<tr>
|
||||
<th class="px-4 py-3">Staff</th>
|
||||
<th class="px-4 py-3">Kind</th>
|
||||
<th class="px-4 py-3">Post</th>
|
||||
<th class="px-4 py-3">Unit / Dept</th>
|
||||
<th class="px-4 py-3">Shift</th>
|
||||
<th class="px-4 py-3">Dates</th>
|
||||
<th class="px-4 py-3">Status</th>
|
||||
<th class="px-4 py-3"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-slate-50">
|
||||
@forelse ($assignments as $assignment)
|
||||
<tr>
|
||||
<td class="px-4 py-3 font-medium">{{ $memberLabels[$assignment->member_id] ?? ('#'.$assignment->member_id) }}</td>
|
||||
<td class="px-4 py-3">{{ $kinds[$assignment->kind] ?? $assignment->kind }}</td>
|
||||
<td class="px-4 py-3">{{ $assignmentRoles[$assignment->assignment_role] ?? ($assignment->assignment_role ?: '—') }}</td>
|
||||
<td class="px-4 py-3">
|
||||
{{ $assignment->careUnit?->name ?? '—' }}
|
||||
@if ($assignment->department)
|
||||
<div class="text-xs text-slate-400">{{ $assignment->department->name }}</div>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-3">{{ $shiftCodes[$assignment->shift_code] ?? ($assignment->shift_code ?: '—') }}</td>
|
||||
<td class="px-4 py-3 whitespace-nowrap">
|
||||
{{ $assignment->starts_on->format('Y-m-d') }}
|
||||
→
|
||||
{{ $assignment->ends_on?->format('Y-m-d') ?? 'open' }}
|
||||
</td>
|
||||
<td class="px-4 py-3">
|
||||
{{ $statuses[$assignment->status] ?? $assignment->status }}
|
||||
@if ($assignment->isEffectiveOn())
|
||||
<span class="ml-1 text-xs text-emerald-600">today</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-4 py-3 text-right whitespace-nowrap">
|
||||
<a href="{{ route('care.staff-assignments.edit', $assignment) }}" class="text-sky-600">Edit</a>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="8" class="px-4 py-6 text-center text-slate-500">No staff assignments yet.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -114,6 +114,12 @@
|
||||
if ($permissions->can($member, 'admin.departments.view')) {
|
||||
$adminNav[] = ['name' => 'Departments', 'route' => route('care.departments.index'), 'active' => request()->routeIs('care.departments.*'),
|
||||
'icon' => '<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z" />'];
|
||||
$adminNav[] = ['name' => 'Care units', 'route' => route('care.care-units.index'), 'active' => request()->routeIs('care.care-units.*'),
|
||||
'icon' => '<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z" />'];
|
||||
}
|
||||
if ($permissions->can($member, 'admin.members.view')) {
|
||||
$adminNav[] = ['name' => 'Staff assignments', 'route' => route('care.staff-assignments.index'), 'active' => request()->routeIs('care.staff-assignments.*'),
|
||||
'icon' => '<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z" />'];
|
||||
}
|
||||
if ($permissions->can($member, 'admin.practitioners.view')) {
|
||||
$adminNav[] = ['name' => 'Practitioners', 'route' => route('care.practitioners.index'), 'active' => request()->routeIs('care.practitioners.*'),
|
||||
|
||||
Reference in New Issue
Block a user