@extends('layouts.admin') @php use App\Enums\EmergencyApprovalStatus; use App\Enums\HospitalVisitStage; $r = auth()->user()->role; $can = fn (string $t) => in_array($r, $transitionRoles[$t] ?? [], true); $emergencyQueueReady = $visit->triage_priority !== 'emergency' || $visit->emergency_approval_status === EmergencyApprovalStatus::Approved; $canApproveEmergency = in_array($r, ['nurse', 'charge_nurse', 'hospital_admin'], true) || ($r === 'doctor' && auth()->user()->doctor_type === 'hospital'); @endphp @section('page_kicker', 'Clinical flow') @section('page_title', 'Visit #'.$visit->id) @section('content')

MRN {{ $visit->mrn }} · {{ $visit->patient?->name }}

Current stage

{{ str_replace('_', ' ', $visit->stage->value) }}

All visits

Registration

Control # {{ $visit->registration_control_number ?? '—' }}

Registration fee {{ $visit->registration_fee_amount !== null ? number_format((float) $visit->registration_fee_amount, 2).' TZS' : '—' }}

Registration invoice @if($visit->registration_invoice_id)#{{ $visit->registration_invoice_id }}@else — @endif

Paid at {{ $visit->registration_paid_at?->format('Y-m-d H:i') ?? '—' }}

Verified at {{ $visit->registration_verified_at?->format('Y-m-d H:i') ?? '—' }}

Triage & queue

Priority @if($visit->triage_priority === 'emergency') {{ $visit->triage_priority }} @else {{ $visit->triage_priority ?? '—' }} @endif

@if($visit->triage_priority === 'emergency')

Emergency activation @if($visit->emergency_approval_status === EmergencyApprovalStatus::Pending) Pending approval @elseif($visit->emergency_approval_status === EmergencyApprovalStatus::Approved) Approved @if($visit->emergency_financial_bypass) · financial bypass active (registration / service payment gates) @endif @if($visit->emergency_approved_at) · {{ $visit->emergency_approved_at->format('Y-m-d H:i') }} @if($visit->emergencyApprovedBy) by {{ $visit->emergencyApprovedBy->name }} @endif @endif @else @endif

@endif

Department {{ $visit->department?->name ?? '—' }}

Doctor {{ $visit->assignedDoctor?->name ?? '—' }}

@if($visit->doctor_assigned_at)

Doctor assignment {{ $visit->doctor_assigned_by_id ? 'Manual by '.$visit->doctorAssignedBy?->name : 'Automatic (system)' }} · {{ $visit->doctor_assigned_at->format('Y-m-d H:i') }}

@endif

Queued {{ $visit->queued_at?->format('Y-m-d H:i') ?? '—' }}

@if($visit->triage_vitals)

Vitals

{{ json_encode($visit->triage_vitals, JSON_PRETTY_PRINT) }}
@endif @if($visit->diagnosis || $visit->clinical_notes || $visit->treatment_plan)

Examination

@if($visit->diagnosis)

Diagnosis
{{ $visit->diagnosis }}

@endif @if($visit->clinical_notes)

Notes
{{ $visit->clinical_notes }}

@endif @if($visit->treatment_plan)

Treatment plan
{{ $visit->treatment_plan }}

@endif
@endif @if($visit->orders->isNotEmpty())

Orders

@endif

Billing & services

Service invoice @if($visit->service_invoice_id)#{{ $visit->service_invoice_id }} ({{ number_format((float) ($visit->serviceInvoice?->amount ?? 0), 2) }} {{ $visit->serviceInvoice?->currency ?? 'TZS' }})@else — @endif

Service paid {{ $visit->service_paid_at?->format('Y-m-d H:i') ?? '—' }}

Service verified {{ $visit->service_verified_at?->format('Y-m-d H:i') ?? '—' }}

@if($visit->emergency_financial_bypass)

Emergency financial bypass is on — approved emergency activation; reception may apply the emergency service waiver instead of collecting service fees.

@endif
@if($visit->stage === HospitalVisitStage::Discharged && $visit->discharge_summary)

Discharge report

{{ $visit->discharge_summary }}

Discharged {{ $visit->discharged_at?->format('Y-m-d H:i') ?? '' }}

@endif

Next actions

@if($visit->stage === HospitalVisitStage::Registered && $can('issue_registration_control'))
@csrf

Issue registration control number & fee

@endif @if($visit->stage === HospitalVisitStage::RegistrationFeePending && $can('record_registration_payment'))
@csrf

Record registration payment (patient paid)

@endif @if($visit->stage === HospitalVisitStage::RegistrationFeePaidUnverified && $can('verify_registration_payment'))
@csrf

Verify registration payment (finance / reception).

@endif @if($visit->stage === HospitalVisitStage::RegistrationFeeVerified && $can('send_to_triage'))
@csrf

Send patient to triage (nurse assessment).

@endif @if($visit->stage === HospitalVisitStage::AwaitingTriage && $can('complete_triage') && $departments->isEmpty())

Departments required

Add at least one department for this hospital before triage can record routing (needed for doctor auto-assignment).

@endif @if($visit->stage === HospitalVisitStage::AwaitingTriage && $can('complete_triage') && $departments->isNotEmpty())
@csrf

Triage — vitals & routing

Required for routing and automatic doctor assignment.

@endif @if($visit->stage === HospitalVisitStage::TriageComplete && $visit->triage_priority === 'emergency' && $visit->emergency_approval_status === EmergencyApprovalStatus::Pending)

Emergency activation approval

This visit is triaged as emergency. A nurse, charge nurse, hospital doctor, or hospital admin must approve activation before the patient can enter the doctor queue. Approval is written to the EMR audit trail with approver and timestamp.

@if($canApproveEmergency)
@csrf
@else

Sign in as authorized clinical staff to approve.

@endif
@endif @if($visit->stage === HospitalVisitStage::TriageComplete && ! $can('queue_for_doctor'))

Doctor queue

Only triage nursing staff can send this patient to a doctor (automatic assignment or manual override). Reception cannot assign doctors.

@endif @if($visit->stage === HospitalVisitStage::TriageComplete && $can('queue_for_doctor') && $emergencyQueueReady)

Queue to doctor

One active doctor per visit. Assignment is logged (who and when). Use automatic routing by department and queue load, or override with a specific doctor.

@if($suggestedDoctor)

Suggested automatic assignment: {{ $suggestedDoctor->name }} (department match, lowest active queue load).

@else

No doctor is linked to this department for auto-assignment. Link doctors to departments under Doctors, or use manual assignment below.

@endif
@csrf
@csrf
@endif @if($visit->stage === HospitalVisitStage::QueuedForDoctor && $can('start_consultation'))
@csrf

Start consultation (assigned doctor only).

@endif @if(auth()->user()->role === 'doctor' && (int) $visit->assigned_doctor_id === (int) auth()->id())

Doctor encounter

Use the doctor workspace for diagnosis, treatment plan, prescriptions, and encounter completion (EMR + pharmacy integration).

Open in doctor workspace
@endif @if($visit->stage === HospitalVisitStage::WithDoctor && $can('document_exam'))
@csrf

Diagnosis, clinical notes & treatment plan

@endif @if($visit->doctor_encounter_status === \App\Enums\DoctorEncounterStatus::InConsultation && in_array($visit->stage, [\App\Enums\HospitalVisitStage::ExamDocumented, \App\Enums\HospitalVisitStage::ServicePaymentPending], true) && $can('doctor_complete_encounter') && $visit->prescriptions()->count() > 0)
@csrf

All prescriptions sent. Complete doctor phase (billing may advance).

@endif @if($visit->stage === HospitalVisitStage::ExamDocumented && $can('place_orders'))
@csrf

Orders — lab / pharmacy / imaging (integrated billing)

Each non-empty row creates an order and a matching invoice line automatically (single service bill for this visit).

@foreach(range(0, 2) as $i)
@endforeach
@endif @if($visit->stage === HospitalVisitStage::ServicePaymentPending && $visit->emergency_financial_bypass && $can('emergency_billing_waiver'))
@csrf

Emergency service billing waiver

Applies a zero-amount waiver, marks the service invoice paid, and advances the visit to service verified (audit + payment transaction recorded).

@endif @if($visit->stage === HospitalVisitStage::ServicePaymentPending && ! $visit->emergency_financial_bypass && $can('record_service_payment'))
@csrf

Record service payment

@endif @if($visit->stage === HospitalVisitStage::ServicePaymentSubmitted && $can('verify_service_payment'))
@csrf

Verify service payment.

@endif @if($visit->stage === HospitalVisitStage::ServicePaymentVerified && $can('mark_treatment_delivered'))
@csrf

Confirm treatment / medicine delivered; orders marked fulfilled.

@endif @if($visit->stage === HospitalVisitStage::TreatmentDelivered && $can('finalize_medical_record'))
@csrf

Persist full encounter to the medical record (summary + structured attachment).

@endif @if($visit->stage === HospitalVisitStage::MedicalRecordFinalized && $can('discharge'))
@csrf

Discharge summary (report to patient)

@endif
@endsection