@php $patient = $session->patient; $canManage = auth()->user()->can('interpreting.manage'); $open = $session->is_open; @endphp @if ($session->follow_up) @endif @if ($canManage && $open) Edit @endif @if ($canManage) @if (in_array($session->status, ['requested', 'scheduled'], true)) @elseif ($session->status === 'in_progress') @endif @endif
Language
Mode
@if ($session->is_video)
Device
{{ $session->device_label }}
@else
Modality note
Over the phone — no visual channel
@endif
Scheduled at
{{ $session->scheduled_at?->format('d M Y H:i') ?? 'Not scheduled' }}
Started
{{ $session->started_at?->format('d M H:i') ?? '—' }}
Ended
{{ $session->ended_at?->format('d M H:i') ?? '—' }} @if ($session->duration_minutes) · {{ $session->duration_minutes }} min @endif
Requested by
{{ $session->requestedBy?->name ?? '—' }}
Raised
{{ $session->created_at?->format('d M Y H:i') }}
Linked to
@if ($session->admission) {{ $session->admission->admission_no }} @if ($session->admission->ward) · {{ $session->admission->ward->name }} @endif @if ($session->admission->room) · Room {{ $session->admission->room->room_number }} @endif @if ($session->admission->bed) · Bed {{ $session->admission->bed->bed_number }} @endif @elseif ($session->appointment) {{ $session->appointment->appointment_no }} · {{ $session->appointment->appointment_date?->format('d M Y') }} {{ $session->appointment->slot_time }} @else Standalone request @endif
@if ($session->interpreter)

{{ $session->interpreter->name }}

@if ($session->interpreter->agency) {{ $session->interpreter->agency }} @endif
@foreach ($session->interpreter->language_labels as $label) {{ $label }} @endforeach
@if ($session->interpreter->certification_no)

Cert. {{ $session->interpreter->certification_no }}

@endif
@if ($session->interpreter->phone) {{ $session->interpreter->phone }} @endif @if ($session->interpreter->email) {{ $session->interpreter->email }} @endif
@else

No interpreter routed yet. @if ($canManage && $open) Assign one from the directory. @endif

@endif

Why interpreting was needed

{{ $session->reason ?: '—' }}

@if ($session->prep_notes)

Prep notes for the interpreter

{{ $session->prep_notes }}

@endif @if ($session->interpreter_notes)

Interpreter's notes

{{ $session->interpreter_notes }}

@endif @if ($session->cancellation_reason)

{{ $session->status === 'no_show' ? 'No show — what happened' : 'Cancellation reason' }}

{{ $session->cancellation_reason }}

@endif
@if ($canManage && $open)

The lifecycle mirrors the call itself: the session goes live when the interpreter joins, and is completed when the conversation ends — that is where the duration and the interpreter's notes are captured.

@if (in_array($session->status, ['requested', 'scheduled'], true)) @elseif ($session->status === 'in_progress') @endif
@endif @if ($recent->isEmpty())

This is the first interpreter session recorded for {{ $patient?->full_name ?? 'this patient' }}.

@else @endif
@if ($open) @if ($session->is_video) @if ($session->platform)

Platform

{{ $session->platform }}

@endif @if ($session->join_url) Open video room

{{ $session->join_url }}

@else

No join link yet — the interpreter and the patient's room both need it before the call. {{ $canManage ? 'Add the platform and link on Edit.' : 'Ask the requester to add it.' }}

@endif @else

Dial

@if ($session->interpreter?->phone) {{ $session->interpreter->phone }} @else

The interpreter dials the requesting number.

@endif @endif @if ($session->access_code)

Access code

{{ $session->access_code }}

@endif @if ($session->is_video && $session->device)
Patient's device {{ $session->device_label }}
@endif @if ($session->scheduled_at)
Scheduled {{ $session->scheduled_at->format('d M H:i') }}
@endif @else
Started {{ $session->started_at?->format('d M H:i') ?? '—' }}
Ended {{ $session->ended_at?->format('d M H:i') ?? '—' }}
Duration {{ $session->duration_minutes ? $session->duration_minutes.' min' : '—' }}
@if ($session->follow_up)

Follow-up flagged — another session is anticipated for this patient.

@endif
@endif

{{ $patient?->full_name ?? 'Unknown patient' }}

{{ $patient?->medical_record_number }}

{{ $patient?->age_display }} · {{ $patient?->gender_label }}

@if ($patient?->is_confidential) @endif
@if ($patient?->preferred_language)

Recorded preference: {{ \App\Support\Lookup::label('interpreter_language', $patient->preferred_language) }} @if ($patient->preferred_language !== $session->language) — this session is booked in a different language. Confirm which the conversation needs. @endif

@endif
@if ($canManage)
@csrf

Start {{ $session->session_no }}?

This marks the session live — the interpreter has joined and the conversation is being interpreted. {{ $session->is_video ? "The patient's room connects through the join link on this page." : 'The call runs over the phone.' }}

@csrf

Complete {{ $session->session_no }}?

The conversation has ended. The duration is recorded from when the session went live.

@csrf

Cancel {{ $session->session_no }}?

The session will not take place. The reason is kept on the record — cancelled sessions are reported on like completed ones.

@csrf

Mark {{ $session->session_no }} as no show?

Use this when the interpreter never connected. It is recorded separately from a cancellation so the directory can follow up with the interpreter or their agency.

@endif