@extends('layouts.app') @section('title', 'Dental Encounter | ' . ($visit->patient->full_name ?? '')) @section('content') @include('partials._encounter-styles') @php $readOnly = in_array($visit->status, ['completed', 'cancelled', 'discharged']); $dentalRecord = $visit->dentalRecord ?? null; $user = auth()->user(); $isAdmin = $user->hasAnyRole('Super Admin','Hospital Admin'); $isClinical = $user->hasAnyRole('Clinician','Nurse','Dental User'); $isTriageNurse = $user->hasRole('Triage Nurse'); $isReception = $user->hasAnyRole('Receptionist', 'Triage Nurse'); $canEditTriage = !$readOnly && ($isAdmin || $isClinical || $isTriageNurse || $isReception); $canEditDentalNotes = !$readOnly && ($isAdmin || $isClinical); $canEditDiagnosis = !$readOnly && ($isAdmin || $isClinical); $canEditPrescriptions= !$readOnly && ($isAdmin || $isClinical); $canEditLab = !$readOnly && ($isAdmin || $isClinical || $isReception); $canEditImaging = !$readOnly && ($isAdmin || $isClinical || $isReception); $canEditBilling = !$readOnly && ($isAdmin || $isClinical || $isReception); @endphp
{{-- ════════════ TITLE BAR ════════════ --}}

Dental Encounter

{{-- ════════════ PATIENT HEADER ════════════ --}}
{{ $visit->patient->full_name ?? '-' }}
Patient # {{ $visit->patient->mrn ?? '-' }}
Age {{ $visit->patient->age ?? '-' }} {{ $visit->patient->gender ? '· '.ucfirst($visit->patient->gender) : '' }}
Visit # {{ $visit->visit_number }}
Date {{ $visit->check_in_at?->format('d M Y H:i') ?? $visit->created_at->format('d M Y H:i') }}
@if($readOnly)Completed@endif
@if($visit->patient && $visit->patient->allergies && count($visit->patient->allergies))
⚠ Allergies: {{ implode(', ', $visit->patient->allergies) }}
@endif {{-- ════════════ 1. TRIAGE / VITALS ════════════ --}}

1 Triage / Vitals

@if($visit->triage)Recorded @elsePending@endif
@if($visit->triage)
Date / TimeWeightTempBP PulseSpO₂Pain
{{ $visit->triage->created_at?->format('d M Y H:i') ?? '-' }} {{ $visit->triage->weight ?? '-' }} {{ $visit->triage->temperature ?? '-' }} {{ ($visit->triage->blood_pressure_systolic ?? '-') }}/{{ $visit->triage->blood_pressure_diastolic ?? '-' }} {{ $visit->triage->pulse ?? '-' }} {{ $visit->triage->oxygen_saturation ?? '-' }} {{ $visit->triage->pain_score ?? '-' }}
@elseif($canEditTriage)
@csrf
Enter Vitals
@else

Triage was not recorded.

@endif
{{-- ════════════ 2. DENTAL CLINICAL NOTES ════════════ --}}

2 Dental Clinical Notes

@if($dentalRecord)Recorded@endif
@if($readOnly && $dentalRecord)
Chief Complaint
{{ $dentalRecord->chief_complaint ?? '-' }}
Dental History
{{ $dentalRecord->dental_history ?? '-' }}
Examination
{{ $dentalRecord->examination_findings ?? '-' }}
Diagnosis
{{ $dentalRecord->diagnosis ?? '-' }}
Treatment Plan
{{ $dentalRecord->treatment_plan ?? '-' }}
Procedures Done
{{ $dentalRecord->procedures_done ? implode(', ', $dentalRecord->procedures_done) : '-' }}
Materials Used
{{ $dentalRecord->materials_used ? implode(', ', $dentalRecord->materials_used) : '-' }}
Follow-up Date
{{ $dentalRecord->follow_up_date?->format('d M Y') ?? '-' }}
@elseif($canEditDentalNotes)
@csrf
Chief Complaint & History
Examination & Diagnosis
Treatment & Follow-up
@else

No dental notes recorded.

@endif
{{-- ════════════ 3. ICD-10 DIAGNOSIS ════════════ --}}

3 ICD-10 Diagnosis

@if($visit->consultation) @php $diags = $visit->consultation->diagnoses ?? collect(); @endphp @if($diags->isNotEmpty()) @foreach($diags as $d) @endforeach
Primary ICD-10 Code Diagnosis
@if($d->is_primary)Primary@else@endif {{ $d->icd10Code->code ?? '' }} {{ $d->icd10Code->description ?? '' }}
@endif @endif @if($canEditDiagnosis)
@csrf @if($visit->consultation) @method('PUT') @endif @include('partials._icd10_picker', ['consultation' => $visit->consultation ?? null])
@endif
{{-- ════════════ 4. PRESCRIPTIONS ════════════ --}}

4 Prescriptions

@if($visit->prescriptions->count()){{ $visit->prescriptions->count() }}@endif
@if($visit->prescriptions->count()) @if($canEditPrescriptions)@endif @foreach($visit->prescriptions as $rx) @php $rxLocked = in_array($rx->status, ['dispensed','cancelled']); $rxCanEdit = $canEditPrescriptions && !$rxLocked; // Used by the admin Reverse button below. $rxDispensedQty = \App\Models\PharmacyDispense::where('prescription_id', $rx->id) ->whereNull('reversed_at')->sum('quantity_dispensed'); @endphp @if($canEditPrescriptions) @endif @if($rxCanEdit) @endif @endforeach
Drug DosageFrequencyRouteDurationQty StatusActions
{{ $rx->drug_name }} {{ $rx->dosage ?? '-' }} {{ $rx->frequency ?? '-' }} {{ $rx->route ?? '—' }} {{ $rx->duration ?? '-' }} {{ $rx->quantity }} {{ ucfirst($rx->status) }} @if($rxCanEdit) @endif {{-- Reverse dispense — Super Admin / Hospital Admin only. Sends the prescription back to the pharmacy queue. Invoice line stays; use Delete to also drop the charge. --}} @if($isAdmin && $rxDispensedQty > 0 && $rx->status !== 'cancelled')
@csrf
@endif @if(!$rxLocked)
@csrf @method('DELETE')
@endif
@endif @if($canEditPrescriptions)
@csrf
Add Prescription
@endif
{{-- ════════════ 5. LAB ORDERS ════════════ --}}

5 Laboratory Tests

@if($visit->labOrders->count()){{ $visit->labOrders->count() }}@endif
@if($visit->labOrders->count()) @foreach($visit->labOrders as $lo) @endforeach
Test Urgency Status
{{ $lo->test_name }} {{ $lo->urgency }} {{ ucfirst($lo->status) }}
@endif @if($canEditLab)
@csrf
Order Lab Test

@endif
{{-- ════════════ 6. IMAGING / X-RAY ════════════ --}}

6 Imaging / X-Ray

@if($visit->imagingRequests->count()){{ $visit->imagingRequests->count() }}@endif
@if($visit->imagingRequests->count()) @foreach($visit->imagingRequests as $ir) @endforeach
Imaging Type Clinical Notes Status
{{ $ir->imaging_type }} {{ $ir->clinical_notes ?? '-' }} {{ ucfirst($ir->status) }}
@endif @if($canEditImaging)
@csrf
Order Imaging

@endif
{{-- ════════════ 7. PRODUCTS / SERVICES (BILLING) ════════════ --}}

7 Products / Services

@if($canEditBilling) @endif
@if($canEditBilling)@endif @if($visit->invoice && $visit->invoice?->items->count()) @foreach($visit->invoice?->items as $item) @php $isEditable = $canEditBilling && $item->source_type !== 'prescription'; @endphp @if($canEditBilling) @endif @endforeach @endif @if($canEditBilling)@endif
Product or Service Category / Instructions Qty Unit Price Total
{{ $item->description }} {{ $item->category }} @if($isEditable) @else {{ $item->quantity }} @endif @if($isEditable) @else {{ number_format($item->unit_price) }} @endif {{ number_format($item->total) }} @if(auth()->user()->hasAnyRole('Receptionist','Triage Nurse','Clinician','Nurse','Dental User','Hospital Admin','Super Admin'))
@csrf @method('DELETE')
@endif
Total KES {{ number_format($visit->invoice?->total_amount ?? 0) }}
{{-- ════════════ 8. PAYMENTS (shared partial) ════════════ --}}

8 Payments

@include('partials._payment-section', ['visit' => $visit])
{{-- ════════════ COMPLETE VISIT ACTION BAR ════════════ --}} @if(!$readOnly)
← Back to Dental Visits
@csrf
@endif
@endsection @push('scripts') @endpush