Add full Oncology, Renal Care, and Surgery specialty clinical suites.
Deploy Ladill Care / deploy (push) Successful in 32s
Deploy Ladill Care / deploy (push) Successful in 32s
Match Pediatrics/ENT depth with stages, workspace tabs, clinical records, reports/print, demo seed, and suite tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Oncology summary · {{ $patient->fullName() }}</title>
|
||||
<style>
|
||||
body { font-family: system-ui, sans-serif; color: #0f172a; margin: 2rem; }
|
||||
h1 { font-size: 1.25rem; margin: 0 0 .25rem; }
|
||||
h2 { font-size: .95rem; margin: 1.25rem 0 .5rem; border-bottom: 1px solid #e2e8f0; padding-bottom: .25rem; }
|
||||
.meta { color: #64748b; font-size: .875rem; }
|
||||
dl { display: grid; grid-template-columns: 10rem 1fr; gap: .35rem .75rem; font-size: .875rem; }
|
||||
dt { color: #64748b; }
|
||||
dd { margin: 0; font-weight: 500; }
|
||||
@media print { .no-print { display: none; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p class="no-print"><a href="{{ route('care.specialty.workspace', ['module' => 'oncology', 'visit' => $visit]) }}">Back</a></p>
|
||||
<h1>{{ $patient->fullName() }}</h1>
|
||||
<p class="meta">{{ $patient->patient_number }} · Visit #{{ $visit->id }} · Stage {{ $visit->specialty_stage ?? '—' }}</p>
|
||||
<h2>History</h2>
|
||||
@if ($history)<dl><dt>HPI</dt><dd>{{ $history->payload['history'] ?? '—' }}</dd><dt>Cancer history</dt><dd>{{ $history->payload['cancer_history'] ?? '—' }}</dd></dl>@else<p class="meta">No history recorded.</p>@endif
|
||||
<h2>Staging / exam</h2>
|
||||
@if ($staging)<dl><dt>Diagnosis</dt><dd>{{ $staging->payload['diagnosis'] ?? '—' }}</dd><dt>Stage</dt><dd>{{ $staging->payload['stage'] ?? '—' }}</dd><dt>ECOG</dt><dd>{{ $staging->payload['performance_status'] ?? '—' }}</dd></dl>@else<p class="meta">No staging recorded.</p>@endif
|
||||
<h2>Investigations</h2>
|
||||
@if ($investigation)<dl><dt>Investigation</dt><dd>{{ $investigation->payload['investigation'] ?? '—' }}</dd><dt>Findings</dt><dd>{{ $investigation->payload['findings'] ?? '—' }}</dd></dl>@else<p class="meta">No investigation recorded.</p>@endif
|
||||
<h2>Plan</h2>
|
||||
@if ($plan)<dl><dt>Diagnosis</dt><dd>{{ $plan->payload['diagnosis'] ?? '—' }}</dd><dt>Plan</dt><dd>{{ $plan->payload['plan'] ?? '—' }}</dd></dl>@else<p class="meta">No plan recorded.</p>@endif
|
||||
<h2>Treatment</h2>
|
||||
@if ($treatment)<dl><dt>Treatment</dt><dd>{{ $treatment->payload['treatment'] ?? '—' }}</dd><dt>Outcome</dt><dd>{{ $treatment->payload['outcome'] ?? '—' }}</dd></dl>@else<p class="meta">No treatment recorded.</p>@endif
|
||||
<script>window.print();</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,87 @@
|
||||
<x-app-layout title="Oncology reports">
|
||||
<div class="space-y-6">
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<div>
|
||||
<h1 class="text-xl font-semibold text-slate-900">Oncology reports</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">Arrivals, open chemo notes, diagnoses, regimens, length of stay, and oncology revenue.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.show', 'oncology') }}" class="text-sm font-medium text-indigo-600">← Specialty home</a>
|
||||
</div>
|
||||
|
||||
<form method="GET" class="flex flex-wrap items-end gap-3 rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-slate-600">From</label>
|
||||
<input type="date" name="from" value="{{ $report['from'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-medium text-slate-600">To</label>
|
||||
<input type="date" name="to" value="{{ $report['to'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
</div>
|
||||
<button type="submit" class="rounded-xl bg-indigo-600 px-4 py-2 text-sm font-semibold text-white">Apply</button>
|
||||
</form>
|
||||
|
||||
<div class="grid gap-4 sm:grid-cols-4">
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Arrivals today</p>
|
||||
<p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['arrivals_today']) }}</p>
|
||||
</div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Completed today</p>
|
||||
<p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['completed_today']) }}</p>
|
||||
</div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Chemo notes open</p>
|
||||
<p class="mt-2 text-2xl font-semibold tabular-nums text-rose-700">{{ number_format($report['chemo_open']) }}</p>
|
||||
</div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Avg LOS (range)</p>
|
||||
<p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">
|
||||
{{ $report['avg_los_minutes'] !== null ? $report['avg_los_minutes'].' min' : '—' }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid gap-4 lg:grid-cols-2">
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Diagnoses</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['diagnosis_breakdown'] as $row)
|
||||
<li class="flex justify-between gap-3">
|
||||
<span>{{ $row['diagnosis'] }}</span>
|
||||
<span class="tabular-nums text-slate-600">{{ $row['total'] }}</span>
|
||||
</li>
|
||||
@empty
|
||||
<li class="text-slate-500">No staging records in range.</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Regimens / treatments</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['regimen_breakdown'] as $row)
|
||||
<li class="flex justify-between gap-3">
|
||||
<span>{{ $row['regimen'] }}</span>
|
||||
<span class="tabular-nums text-slate-600">{{ $row['total'] }}</span>
|
||||
</li>
|
||||
@empty
|
||||
<li class="text-slate-500">No treatments in range.</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Oncology service revenue</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['revenue_by_service'] as $row)
|
||||
<li class="flex justify-between gap-3">
|
||||
<span>{{ $row->description }} <span class="text-slate-400">×{{ $row->total }}</span></span>
|
||||
<span class="tabular-nums">{{ $currency }} {{ number_format($row->amount_minor / 100, 2) }}</span>
|
||||
</li>
|
||||
@empty
|
||||
<li class="text-slate-500">No billed oncology services in range.</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,60 @@
|
||||
@php
|
||||
$hist = $oncologyHistory?->payload ?? [];
|
||||
$staging = $oncologyStaging?->payload ?? [];
|
||||
$plan = $oncologyPlan?->payload ?? [];
|
||||
@endphp
|
||||
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Oncology overview</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">History, staging, investigations, plan, and treatment for this episode.</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-3 text-sm">
|
||||
<a href="{{ route('care.specialty.oncology.print', $workspaceVisit) }}" target="_blank" class="font-medium text-indigo-600">Print summary</a>
|
||||
<a href="{{ route('care.specialty.oncology.reports') }}" class="font-medium text-indigo-600">Oncology reports</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 grid gap-3 sm:grid-cols-3">
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Diagnosis</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $staging['diagnosis'] ?? ($plan['diagnosis'] ?? '—') }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">Stage {{ $staging['stage'] ?? '—' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">ECOG</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $staging['performance_status'] ?? '—' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ $plan['intent'] ?? '—' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Plan</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ \Illuminate\Support\Str::limit($plan['plan'] ?? 'Not set', 40) }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ $plan['follow_up'] ?? '—' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
<div>
|
||||
<dt class="text-slate-500">History</dt>
|
||||
<dd class="font-medium text-slate-900">{{ $hist['history'] ?? '—' }}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt class="text-slate-500">Queue</dt>
|
||||
<dd class="font-medium text-slate-900">
|
||||
{{ $workspaceVisit->appointment?->queue_ticket_number ?? '—' }}
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
|
||||
@if (! empty($clinicalAlerts))
|
||||
<div class="mt-4 space-y-1.5 border-t border-slate-100 pt-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Alerts</p>
|
||||
@foreach ($clinicalAlerts as $alert)
|
||||
<p class="text-sm {{ ($alert['severity'] ?? '') === 'critical' ? 'text-rose-700' : 'text-amber-800' }}">
|
||||
{{ $alert['message'] ?? '' }}
|
||||
</p>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
@@ -0,0 +1,70 @@
|
||||
@php
|
||||
$record = $oncologyTreatment;
|
||||
$payload = $record?->payload ?? [];
|
||||
$canManage = $canManageClinical ?? $canConsult ?? false;
|
||||
@endphp
|
||||
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Treatment / chemo</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">Completed treatments can close the oncology visit.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.oncology.print', $workspaceVisit) }}" target="_blank" class="text-sm font-medium text-indigo-600">Print summary</a>
|
||||
</div>
|
||||
|
||||
@if ($canManage)
|
||||
<form method="POST" action="{{ route('care.specialty.oncology.treatment', $workspaceVisit) }}" class="mt-4 space-y-4">
|
||||
@csrf
|
||||
<input type="hidden" name="tab" value="treatment">
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
@php
|
||||
$name = $field['name'];
|
||||
$value = old('payload.'.$name, $payload[$name] ?? '');
|
||||
$type = $field['type'] ?? 'text';
|
||||
@endphp
|
||||
<div @class(['sm:col-span-2' => in_array($type, ['textarea'], true)])>
|
||||
<label class="block text-xs font-medium text-slate-600">
|
||||
{{ $field['label'] }}
|
||||
@if (! empty($field['required'])) <span class="text-rose-600">*</span> @endif
|
||||
</label>
|
||||
@if ($type === 'textarea')
|
||||
<textarea name="payload[{{ $name }}]" rows="{{ $field['rows'] ?? 3 }}" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">{{ $value }}</textarea>
|
||||
@elseif ($type === 'select')
|
||||
<select name="payload[{{ $name }}]" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
<option value="">Select…</option>
|
||||
@foreach ($field['options'] ?? [] as $option)
|
||||
<option value="{{ $option }}" @selected((string) $value === (string) $option)>{{ $option }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@elseif ($type === 'boolean')
|
||||
<label class="mt-2 inline-flex items-center gap-2 text-sm text-slate-700">
|
||||
<input type="checkbox" name="payload[{{ $name }}]" value="1" @checked(old('payload.'.$name, ! empty($payload[$name])))>
|
||||
Yes
|
||||
</label>
|
||||
@else
|
||||
<input type="{{ $type === 'number' ? 'number' : 'text' }}" name="payload[{{ $name }}]" value="{{ $value }}"
|
||||
@required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<button type="submit" class="btn-primary">Save treatment</button>
|
||||
</form>
|
||||
@elseif ($record)
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
<div>
|
||||
<dt class="text-slate-500">{{ $field['label'] }}</dt>
|
||||
<dd class="font-medium text-slate-900">{{ $payload[$field['name']] ?? '—' }}</dd>
|
||||
</div>
|
||||
@endforeach
|
||||
</dl>
|
||||
@else
|
||||
<p class="mt-4 text-sm text-slate-500">No treatment recorded yet.</p>
|
||||
@endif
|
||||
</section>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"><head><meta charset="utf-8"><title>Renal summary · {{ $patient->fullName() }}</title>
|
||||
<style>body{font-family:system-ui,sans-serif;color:#0f172a;margin:2rem}h1{font-size:1.25rem}h2{font-size:.95rem;margin:1.25rem 0 .5rem;border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}.meta{color:#64748b;font-size:.875rem}dl{display:grid;grid-template-columns:10rem 1fr;gap:.35rem .75rem;font-size:.875rem}dt{color:#64748b}dd{margin:0;font-weight:500}@media print{.no-print{display:none}}</style></head>
|
||||
<body>
|
||||
<p class="no-print"><a href="{{ route('care.specialty.workspace', ['module' => 'renal', 'visit' => $visit]) }}">Back</a></p>
|
||||
<h1>{{ $patient->fullName() }}</h1>
|
||||
<p class="meta">{{ $patient->patient_number }} · Visit #{{ $visit->id }} · Stage {{ $visit->specialty_stage ?? '—' }}</p>
|
||||
<h2>History</h2>@if($history)<dl><dt>HPI</dt><dd>{{ $history->payload['history'] ?? '—' }}</dd><dt>CKD</dt><dd>{{ $history->payload['ckd_stage'] ?? '—' }}</dd></dl>@else<p class="meta">No history.</p>@endif
|
||||
<h2>Exam</h2>@if($exam)<dl><dt>Complaint</dt><dd>{{ $exam->payload['chief_complaint'] ?? '—' }}</dd><dt>Fluid</dt><dd>{{ $exam->payload['fluid_status'] ?? '—' }}</dd></dl>@else<p class="meta">No exam.</p>@endif
|
||||
<h2>Dialysis / labs</h2>@if($dialysis)<dl><dt>Type</dt><dd>{{ $dialysis->payload['session_type'] ?? '—' }}</dd><dt>Notes</dt><dd>{{ $dialysis->payload['notes'] ?? '—' }}</dd></dl>@else<p class="meta">No session.</p>@endif
|
||||
<h2>Plan</h2>@if($plan)<dl><dt>Diagnosis</dt><dd>{{ $plan->payload['diagnosis'] ?? '—' }}</dd><dt>Plan</dt><dd>{{ $plan->payload['plan'] ?? '—' }}</dd><dt>Outcome</dt><dd>{{ $plan->payload['outcome'] ?? '—' }}</dd></dl>@else<p class="meta">No plan.</p>@endif
|
||||
<script>window.print();</script></body></html>
|
||||
@@ -0,0 +1,48 @@
|
||||
<x-app-layout title="Renal Care reports">
|
||||
<div class="space-y-6">
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<div>
|
||||
<h1 class="text-xl font-semibold text-slate-900">Renal Care reports</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">Arrivals, dialysis sessions, diagnoses, length of stay, and renal revenue.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.show', 'renal') }}" class="text-sm font-medium text-indigo-600">← Specialty home</a>
|
||||
</div>
|
||||
<form method="GET" class="flex flex-wrap items-end gap-3 rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<div><label class="block text-xs font-medium text-slate-600">From</label><input type="date" name="from" value="{{ $report['from'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm"></div>
|
||||
<div><label class="block text-xs font-medium text-slate-600">To</label><input type="date" name="to" value="{{ $report['to'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm"></div>
|
||||
<button type="submit" class="rounded-xl bg-indigo-600 px-4 py-2 text-sm font-semibold text-white">Apply</button>
|
||||
</form>
|
||||
<div class="grid gap-4 sm:grid-cols-4">
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Arrivals today</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['arrivals_today']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Completed today</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['completed_today']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Dialysis stage open</p><p class="mt-2 text-2xl font-semibold tabular-nums text-rose-700">{{ number_format($report['dialysis_open']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Avg LOS</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ $report['avg_los_minutes'] !== null ? $report['avg_los_minutes'].' min' : '—' }}</p></div>
|
||||
</div>
|
||||
<div class="grid gap-4 lg:grid-cols-2">
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Session types</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['session_breakdown'] as $row)
|
||||
<li class="flex justify-between gap-3"><span>{{ $row['session_type'] }}</span><span class="tabular-nums text-slate-600">{{ $row['total'] }}</span></li>
|
||||
@empty<li class="text-slate-500">No sessions in range.</li>@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Diagnoses</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['diagnosis_breakdown'] as $row)
|
||||
<li class="flex justify-between gap-3"><span>{{ $row['diagnosis'] }}</span><span class="tabular-nums text-slate-600">{{ $row['total'] }}</span></li>
|
||||
@empty<li class="text-slate-500">No care plans in range.</li>@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h2 class="text-sm font-semibold text-slate-900">Renal service revenue</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">
|
||||
@forelse ($report['revenue_by_service'] as $row)
|
||||
<li class="flex justify-between gap-3"><span>{{ $row->description }} <span class="text-slate-400">×{{ $row->total }}</span></span><span class="tabular-nums">{{ $currency }} {{ number_format($row->amount_minor / 100, 2) }}</span></li>
|
||||
@empty<li class="text-slate-500">No billed renal services in range.</li>@endforelse
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,46 @@
|
||||
@php
|
||||
$hist = $renalHistory?->payload ?? [];
|
||||
$exam = $renalExam?->payload ?? [];
|
||||
$plan = $renalPlan?->payload ?? [];
|
||||
@endphp
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Renal Care overview</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">History, exam, dialysis/labs, and care plan for this episode.</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-3 text-sm">
|
||||
<a href="{{ route('care.specialty.renal.print', $workspaceVisit) }}" target="_blank" class="font-medium text-indigo-600">Print summary</a>
|
||||
<a href="{{ route('care.specialty.renal.reports') }}" class="font-medium text-indigo-600">Renal reports</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 grid gap-3 sm:grid-cols-3">
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Complaint</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $exam['chief_complaint'] ?? '—' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">Fluid {{ $exam['fluid_status'] ?? '—' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">CKD / access</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $hist['ckd_stage'] ?? '—' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ $exam['access'] ?? '—' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Diagnosis / plan</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $plan['diagnosis'] ?? 'Not set' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ $plan['follow_up'] ?? '—' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
<div><dt class="text-slate-500">History</dt><dd class="font-medium text-slate-900">{{ $hist['history'] ?? '—' }}</dd></div>
|
||||
<div><dt class="text-slate-500">Plan</dt><dd class="font-medium text-slate-900">{{ $plan['plan'] ?? '—' }}</dd></div>
|
||||
</dl>
|
||||
@if (! empty($clinicalAlerts))
|
||||
<div class="mt-4 space-y-1.5 border-t border-slate-100 pt-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Alerts</p>
|
||||
@foreach ($clinicalAlerts as $alert)
|
||||
<p class="text-sm {{ ($alert['severity'] ?? '') === 'critical' ? 'text-rose-700' : 'text-amber-800' }}">{{ $alert['message'] ?? '' }}</p>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
@@ -0,0 +1,67 @@
|
||||
@php
|
||||
$record = $renalPlan;
|
||||
$payload = $record?->payload ?? [];
|
||||
$canManage = $canManageClinical ?? $canConsult ?? false;
|
||||
@endphp
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Care plan</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">Completed / discharged outcomes can close the renal visit.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.renal.print', $workspaceVisit) }}" target="_blank" class="text-sm font-medium text-indigo-600">Print summary</a>
|
||||
</div>
|
||||
@if ($canManage)
|
||||
<form method="POST" action="{{ route('care.specialty.renal.plan', $workspaceVisit) }}" class="mt-4 space-y-4">
|
||||
@csrf
|
||||
<input type="hidden" name="tab" value="plan">
|
||||
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
@php
|
||||
$name = $field['name'];
|
||||
$value = old('payload.'.$name, $payload[$name] ?? '');
|
||||
$type = $field['type'] ?? 'text';
|
||||
@endphp
|
||||
<div @class(['sm:col-span-2' => in_array($type, ['textarea'], true)])>
|
||||
<label class="block text-xs font-medium text-slate-600">
|
||||
{{ $field['label'] }}
|
||||
@if (! empty($field['required'])) <span class="text-rose-600">*</span> @endif
|
||||
</label>
|
||||
@if ($type === 'textarea')
|
||||
<textarea name="payload[{{ $name }}]" rows="{{ $field['rows'] ?? 3 }}" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">{{ $value }}</textarea>
|
||||
@elseif ($type === 'select')
|
||||
<select name="payload[{{ $name }}]" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
<option value="">Select…</option>
|
||||
@foreach ($field['options'] ?? [] as $option)
|
||||
<option value="{{ $option }}" @selected((string) $value === (string) $option)>{{ $option }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@elseif ($type === 'boolean')
|
||||
<label class="mt-2 inline-flex items-center gap-2 text-sm text-slate-700">
|
||||
<input type="checkbox" name="payload[{{ $name }}]" value="1" @checked(old('payload.'.$name, ! empty($payload[$name])))>
|
||||
Yes
|
||||
</label>
|
||||
@else
|
||||
<input type="{{ $type === 'number' ? 'number' : 'text' }}" name="payload[{{ $name }}]" value="{{ $value }}"
|
||||
@required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-primary">Save care plan</button>
|
||||
</form>
|
||||
@elseif ($record)
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
<div><dt class="text-slate-500">{{ $field['label'] }}</dt><dd class="font-medium text-slate-900">{{ $payload[$field['name']] ?? '—' }}</dd></div>
|
||||
@endforeach
|
||||
</dl>
|
||||
@else
|
||||
<p class="mt-4 text-sm text-slate-500">No care plan recorded yet.</p>
|
||||
@endif
|
||||
</section>
|
||||
@@ -79,6 +79,12 @@
|
||||
@include('care.specialty.orthopedics.workspace-'.$activeTab)
|
||||
@elseif ($moduleKey === 'ent' && in_array($activeTab, ['overview', 'procedure'], true))
|
||||
@include('care.specialty.ent.workspace-'.$activeTab)
|
||||
@elseif ($moduleKey === 'oncology' && in_array($activeTab, ['overview', 'treatment'], true))
|
||||
@include('care.specialty.oncology.workspace-'.$activeTab)
|
||||
@elseif ($moduleKey === 'renal' && in_array($activeTab, ['overview', 'plan'], true))
|
||||
@include('care.specialty.renal.workspace-'.$activeTab)
|
||||
@elseif ($moduleKey === 'surgery' && in_array($activeTab, ['overview', 'postop'], true))
|
||||
@include('care.specialty.surgery.workspace-'.$activeTab)
|
||||
@elseif ($activeTab === 'billing')
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<h3 class="text-sm font-semibold text-slate-900">
|
||||
|
||||
@@ -61,6 +61,15 @@
|
||||
@if ($moduleKey === 'ent')
|
||||
<a href="{{ route('care.specialty.ent.reports') }}" class="text-slate-600 hover:text-slate-900">Reports</a>
|
||||
@endif
|
||||
@if ($moduleKey === 'oncology')
|
||||
<a href="{{ route('care.specialty.oncology.reports') }}" class="text-slate-600 hover:text-slate-900">Reports</a>
|
||||
@endif
|
||||
@if ($moduleKey === 'renal')
|
||||
<a href="{{ route('care.specialty.renal.reports') }}" class="text-slate-600 hover:text-slate-900">Reports</a>
|
||||
@endif
|
||||
@if ($moduleKey === 'surgery')
|
||||
<a href="{{ route('care.specialty.surgery.reports') }}" class="text-slate-600 hover:text-slate-900">Reports</a>
|
||||
@endif
|
||||
<a href="{{ route('care.specialty.history', $moduleKey) }}" class="text-slate-600 hover:text-slate-900">History</a>
|
||||
@if ($canManageClinical ?? $canManageSpecialty ?? true)
|
||||
<a href="{{ route('care.specialty.billing', $moduleKey) }}" class="text-slate-600 hover:text-slate-900">Billing</a>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"><head><meta charset="utf-8"><title>Surgery summary · {{ $patient->fullName() }}</title>
|
||||
<style>body{font-family:system-ui,sans-serif;color:#0f172a;margin:2rem}h1{font-size:1.25rem}h2{font-size:.95rem;margin:1.25rem 0 .5rem;border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}.meta{color:#64748b;font-size:.875rem}dl{display:grid;grid-template-columns:10rem 1fr;gap:.35rem .75rem;font-size:.875rem}dt{color:#64748b}dd{margin:0;font-weight:500}@media print{.no-print{display:none}}</style></head>
|
||||
<body>
|
||||
<p class="no-print"><a href="{{ route('care.specialty.workspace', ['module' => 'surgery', 'visit' => $visit]) }}">Back</a></p>
|
||||
<h1>{{ $patient->fullName() }}</h1>
|
||||
<p class="meta">{{ $patient->patient_number }} · Visit #{{ $visit->id }} · Stage {{ $visit->specialty_stage ?? '—' }}</p>
|
||||
<h2>History</h2>@if($history)<dl><dt>HPI</dt><dd>{{ $history->payload['history'] ?? '—' }}</dd></dl>@else<p class="meta">No history.</p>@endif
|
||||
<h2>Exam</h2>@if($exam)<dl><dt>Complaint</dt><dd>{{ $exam->payload['chief_complaint'] ?? '—' }}</dd><dt>ASA</dt><dd>{{ $exam->payload['asa_class'] ?? '—' }}</dd></dl>@else<p class="meta">No exam.</p>@endif
|
||||
<h2>Investigations</h2>@if($investigation)<dl><dt>Investigation</dt><dd>{{ $investigation->payload['investigation'] ?? '—' }}</dd><dt>Findings</dt><dd>{{ $investigation->payload['findings'] ?? '—' }}</dd></dl>@else<p class="meta">No investigation.</p>@endif
|
||||
<h2>Consent / plan</h2>@if($plan)<dl><dt>Diagnosis</dt><dd>{{ $plan->payload['diagnosis'] ?? '—' }}</dd><dt>Procedure</dt><dd>{{ $plan->payload['proposed_procedure'] ?? '—' }}</dd><dt>Consent</dt><dd>{{ !empty($plan->payload['consent_obtained']) ? 'Yes' : 'No' }}</dd></dl>@else<p class="meta">No plan.</p>@endif
|
||||
<h2>Procedure</h2>@if($procedure)<dl><dt>Procedure</dt><dd>{{ $procedure->payload['procedure'] ?? '—' }}</dd><dt>Outcome</dt><dd>{{ $procedure->payload['outcome'] ?? '—' }}</dd></dl>@else<p class="meta">No procedure.</p>@endif
|
||||
<h2>Post-op</h2>@if($postop)<dl><dt>Progress</dt><dd>{{ $postop->payload['progress'] ?? '—' }}</dd><dt>Outcome</dt><dd>{{ $postop->payload['outcome'] ?? '—' }}</dd></dl>@else<p class="meta">No post-op.</p>@endif
|
||||
<script>window.print();</script></body></html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<x-app-layout title="Surgery reports">
|
||||
<div class="space-y-6">
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<div>
|
||||
<h1 class="text-xl font-semibold text-slate-900">Surgery reports</h1>
|
||||
<p class="mt-1 text-sm text-slate-500">Arrivals, pre-op pipeline, diagnoses, procedures, length of stay, and surgery revenue.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.show', 'surgery') }}" class="text-sm font-medium text-indigo-600">← Specialty home</a>
|
||||
</div>
|
||||
<form method="GET" class="flex flex-wrap items-end gap-3 rounded-2xl border border-slate-200 bg-white p-4">
|
||||
<div><label class="block text-xs font-medium text-slate-600">From</label><input type="date" name="from" value="{{ $report['from'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm"></div>
|
||||
<div><label class="block text-xs font-medium text-slate-600">To</label><input type="date" name="to" value="{{ $report['to'] ?? '' }}" class="mt-1 rounded-xl border border-slate-200 px-3 py-2 text-sm"></div>
|
||||
<button type="submit" class="rounded-xl bg-indigo-600 px-4 py-2 text-sm font-semibold text-white">Apply</button>
|
||||
</form>
|
||||
<div class="grid gap-4 sm:grid-cols-4">
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Arrivals today</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['arrivals_today']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Completed today</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ number_format($report['completed_today']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Pre-op pipeline</p><p class="mt-2 text-2xl font-semibold tabular-nums text-rose-700">{{ number_format($report['preop_open']) }}</p></div>
|
||||
<div class="rounded-2xl border border-slate-200 bg-white p-4"><p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Avg LOS</p><p class="mt-2 text-2xl font-semibold tabular-nums text-slate-900">{{ $report['avg_los_minutes'] !== null ? $report['avg_los_minutes'].' min' : '—' }}</p></div>
|
||||
</div>
|
||||
<div class="grid gap-4 lg:grid-cols-2">
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5"><h2 class="text-sm font-semibold text-slate-900">Diagnoses</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">@forelse ($report['diagnosis_breakdown'] as $row)<li class="flex justify-between gap-3"><span>{{ $row['diagnosis'] }}</span><span class="tabular-nums text-slate-600">{{ $row['total'] }}</span></li>@empty<li class="text-slate-500">No plans in range.</li>@endforelse</ul>
|
||||
</section>
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5"><h2 class="text-sm font-semibold text-slate-900">Procedures</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">@forelse ($report['procedure_breakdown'] as $row)<li class="flex justify-between gap-3"><span>{{ $row['procedure'] }}</span><span class="tabular-nums text-slate-600">{{ $row['total'] }}</span></li>@empty<li class="text-slate-500">No procedures in range.</li>@endforelse</ul>
|
||||
</section>
|
||||
</div>
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5"><h2 class="text-sm font-semibold text-slate-900">Surgery service revenue</h2>
|
||||
<ul class="mt-3 space-y-2 text-sm">@forelse ($report['revenue_by_service'] as $row)<li class="flex justify-between gap-3"><span>{{ $row->description }} <span class="text-slate-400">×{{ $row->total }}</span></span><span class="tabular-nums">{{ $currency }} {{ number_format($row->amount_minor / 100, 2) }}</span></li>@empty<li class="text-slate-500">No billed surgery services in range.</li>@endforelse</ul>
|
||||
</section>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -0,0 +1,46 @@
|
||||
@php
|
||||
$hist = $surgeryHistory?->payload ?? [];
|
||||
$exam = $surgeryExam?->payload ?? [];
|
||||
$plan = $surgeryPlan?->payload ?? [];
|
||||
@endphp
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Surgery overview</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">Pre-op history, exam, investigations, consent/plan, procedure, and post-op.</p>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-3 text-sm">
|
||||
<a href="{{ route('care.specialty.surgery.print', $workspaceVisit) }}" target="_blank" class="font-medium text-indigo-600">Print summary</a>
|
||||
<a href="{{ route('care.specialty.surgery.reports') }}" class="font-medium text-indigo-600">Surgery reports</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 grid gap-3 sm:grid-cols-3">
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Complaint</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $exam['chief_complaint'] ?? '—' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">ASA {{ $exam['asa_class'] ?? '—' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Proposed procedure</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $plan['proposed_procedure'] ?? '—' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ ! empty($plan['consent_obtained']) ? 'Consent obtained' : 'Consent pending' }}</p>
|
||||
</div>
|
||||
<div class="rounded-xl border border-slate-100 bg-slate-50 px-3 py-3">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Diagnosis / plan</p>
|
||||
<p class="mt-1 text-sm font-semibold text-slate-900">{{ $plan['diagnosis'] ?? 'Not set' }}</p>
|
||||
<p class="mt-1 text-xs text-slate-500">{{ $plan['follow_up'] ?? '—' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
<div><dt class="text-slate-500">History</dt><dd class="font-medium text-slate-900">{{ $hist['history'] ?? '—' }}</dd></div>
|
||||
<div><dt class="text-slate-500">Plan</dt><dd class="font-medium text-slate-900">{{ $plan['plan'] ?? '—' }}</dd></div>
|
||||
</dl>
|
||||
@if (! empty($clinicalAlerts))
|
||||
<div class="mt-4 space-y-1.5 border-t border-slate-100 pt-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Alerts</p>
|
||||
@foreach ($clinicalAlerts as $alert)
|
||||
<p class="text-sm {{ ($alert['severity'] ?? '') === 'critical' ? 'text-rose-700' : 'text-amber-800' }}">{{ $alert['message'] ?? '' }}</p>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
@@ -0,0 +1,67 @@
|
||||
@php
|
||||
$record = $surgeryPostop;
|
||||
$payload = $record?->payload ?? [];
|
||||
$canManage = $canManageClinical ?? $canConsult ?? false;
|
||||
@endphp
|
||||
<section class="rounded-2xl border border-slate-200 bg-white p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-3">
|
||||
<div>
|
||||
<h3 class="text-sm font-semibold text-slate-900">Post-op</h3>
|
||||
<p class="mt-0.5 text-xs text-slate-500">Completed / discharged outcomes can close the surgery visit.</p>
|
||||
</div>
|
||||
<a href="{{ route('care.specialty.surgery.print', $workspaceVisit) }}" target="_blank" class="text-sm font-medium text-indigo-600">Print summary</a>
|
||||
</div>
|
||||
@if ($canManage)
|
||||
<form method="POST" action="{{ route('care.specialty.surgery.postop', $workspaceVisit) }}" class="mt-4 space-y-4">
|
||||
@csrf
|
||||
<input type="hidden" name="tab" value="postop">
|
||||
|
||||
<div class="grid gap-3 sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
@php
|
||||
$name = $field['name'];
|
||||
$value = old('payload.'.$name, $payload[$name] ?? '');
|
||||
$type = $field['type'] ?? 'text';
|
||||
@endphp
|
||||
<div @class(['sm:col-span-2' => in_array($type, ['textarea'], true)])>
|
||||
<label class="block text-xs font-medium text-slate-600">
|
||||
{{ $field['label'] }}
|
||||
@if (! empty($field['required'])) <span class="text-rose-600">*</span> @endif
|
||||
</label>
|
||||
@if ($type === 'textarea')
|
||||
<textarea name="payload[{{ $name }}]" rows="{{ $field['rows'] ?? 3 }}" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">{{ $value }}</textarea>
|
||||
@elseif ($type === 'select')
|
||||
<select name="payload[{{ $name }}]" @required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
<option value="">Select…</option>
|
||||
@foreach ($field['options'] ?? [] as $option)
|
||||
<option value="{{ $option }}" @selected((string) $value === (string) $option)>{{ $option }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@elseif ($type === 'boolean')
|
||||
<label class="mt-2 inline-flex items-center gap-2 text-sm text-slate-700">
|
||||
<input type="checkbox" name="payload[{{ $name }}]" value="1" @checked(old('payload.'.$name, ! empty($payload[$name])))>
|
||||
Yes
|
||||
</label>
|
||||
@else
|
||||
<input type="{{ $type === 'number' ? 'number' : 'text' }}" name="payload[{{ $name }}]" value="{{ $value }}"
|
||||
@required(! empty($field['required']))
|
||||
class="mt-1 w-full rounded-xl border border-slate-200 px-3 py-2 text-sm">
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-primary">Save post-op</button>
|
||||
</form>
|
||||
@elseif ($record)
|
||||
<dl class="mt-4 grid gap-3 text-sm sm:grid-cols-2">
|
||||
@foreach ($clinicalFields ?? [] as $field)
|
||||
<div><dt class="text-slate-500">{{ $field['label'] }}</dt><dd class="font-medium text-slate-900">{{ $payload[$field['name']] ?? '—' }}</dd></div>
|
||||
@endforeach
|
||||
</dl>
|
||||
@else
|
||||
<p class="mt-4 text-sm text-slate-500">No post-op note recorded yet.</p>
|
||||
@endif
|
||||
</section>
|
||||
Reference in New Issue
Block a user