fix(ui): use clinician-friendly assessment copy
Deploy Ladill Care / deploy (push) Successful in 1m22s

Replace internal design jargon (Layer 1, narrative source of truth,
pathway instruments) with plain clinical language on consultations,
patient charts, settings, and nav.
This commit is contained in:
isaacclad
2026-07-16 23:17:08 +00:00
parent f6780b9958
commit 6c9051d2c6
13 changed files with 48 additions and 51 deletions
@@ -89,26 +89,25 @@
@endif
@if ($canViewAssessments ?? false)
{{-- Layer 1: universal intake (structured overlay; does not replace free-text symptoms) --}}
@if ($universalTemplate)
<section class="mt-6 rounded-2xl border border-sky-100 bg-sky-50/40 p-6">
<div class="flex flex-wrap items-start justify-between gap-3">
<div>
<h2 class="text-sm font-semibold uppercase tracking-wide text-sky-800">Universal intake</h2>
<h2 class="text-sm font-semibold uppercase tracking-wide text-sky-800">Patient history form</h2>
<p class="mt-1 text-xs text-slate-500">
Structured Layer 1 assessment (presenting complaint, social history, function).
Free-text <span class="font-medium">Symptoms</span> and <span class="font-medium">Clinical notes</span> below remain the narrative source of truth they are not auto-copied either way.
Optional checklist for chief complaint, social history, and day-to-day function.
You can still write freely in Symptoms and Clinical notes below the two are separate and do not overwrite each other.
</p>
</div>
@if ($universalAssessment)
<a href="{{ route('care.assessments.show', $universalAssessment) }}" class="rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white hover:bg-sky-700">
{{ $universalAssessment->isDraft() ? 'Continue intake' : 'View intake' }}
{{ $universalAssessment->isDraft() ? 'Continue form' : 'View form' }}
</a>
@elseif (($canCaptureUniversal ?? false) && ! $isCompleted)
<form method="POST" action="{{ route('care.consultations.assessments.store', $consultation) }}">
@csrf
<input type="hidden" name="template_code" value="universal_intake">
<button type="submit" class="rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white hover:bg-sky-700">Start universal intake</button>
<button type="submit" class="rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white hover:bg-sky-700">Start patient history form</button>
</form>
@endif
</div>
@@ -118,7 +117,7 @@
Status:
<span class="font-medium">{{ $assessmentStatuses[$universalAssessment->status] ?? $universalAssessment->status }}</span>
@if ($universalAssessment->consultation_id !== $consultation->id)
<span class="text-slate-400">(from another visit open to review)</span>
<span class="text-slate-400">(from an earlier visit open to review)</span>
@endif
</p>
@php
@@ -142,16 +141,15 @@
</dl>
@endif
@elseif (! ($canCaptureUniversal ?? false))
<p class="mt-3 text-sm text-slate-400">No universal intake for this patient yet.</p>
<p class="mt-3 text-sm text-slate-400">No patient history form recorded yet.</p>
@endif
</section>
@endif
{{-- Layer 2: pathways (suggest from persisted diagnoses; clinician confirms) --}}
<section class="mt-6 rounded-2xl border border-slate-200 bg-white p-6">
<div class="flex flex-wrap items-center justify-between gap-2">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical pathways</h2>
<a href="{{ route('care.pathways.index', $consultation->patient) }}" class="text-sm text-sky-600 hover:text-sky-700">Manage pathways</a>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Condition pathways</h2>
<a href="{{ route('care.pathways.index', $consultation->patient) }}" class="text-sm text-sky-600 hover:text-sky-700">View all</a>
</div>
@if (($activePathways ?? collect())->isNotEmpty())
@@ -167,7 +165,7 @@
@if (($pathwayInstruments ?? collect())->isNotEmpty())
<div class="mt-4 overflow-hidden rounded-xl border border-slate-100">
<div class="bg-slate-50 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-slate-500">
Pathway instruments
Recommended forms
</div>
<ul class="divide-y divide-slate-100 text-sm">
@foreach ($pathwayInstruments as $instrument)
@@ -176,8 +174,7 @@
<span class="font-medium text-slate-900">{{ $instrument['template_name'] }}</span>
<span class="text-xs text-slate-400">
· {{ $instrument['pathway_name'] }}
· {{ $instrument['template_code'] }}
@if ($instrument['required']) · required @endif
@if ($instrument['required']) · recommended for this condition @endif
</span>
@if ($instrument['assessment']?->score)
<span class="ml-1 text-xs font-medium text-emerald-700">
@@ -187,7 +184,7 @@
</div>
<div class="flex items-center gap-2">
@if ($instrument['pack_missing'])
<span class="text-xs text-amber-600">Content pack not seeded</span>
<span class="text-xs text-amber-600">Form not available yet</span>
@elseif ($instrument['assessment'])
<span class="text-xs text-slate-500">{{ $assessmentStatuses[$instrument['assessment']->status] ?? $instrument['assessment']->status }}</span>
<a href="{{ route('care.assessments.show', $instrument['assessment']) }}" class="text-sky-600 hover:text-sky-700">
@@ -234,9 +231,9 @@
@else
<p class="mt-3 text-sm text-slate-400">
@if ($consultation->diagnoses->isEmpty())
Save diagnoses to see pathway suggestions.
Save diagnoses to see suggested condition pathways.
@else
No pathway matches for saved diagnoses.
No matching condition pathways for the saved diagnoses.
@endif
</p>
@endif
@@ -244,8 +241,8 @@
<section class="mt-6 rounded-2xl border border-slate-200 bg-white p-6">
<div class="flex flex-wrap items-center justify-between gap-2">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical assessments</h2>
<a href="{{ route('care.assessments.index', $consultation->patient) }}" class="text-sm text-sky-600 hover:text-sky-700">Patient assessments</a>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical forms this visit</h2>
<a href="{{ route('care.assessments.index', $consultation->patient) }}" class="text-sm text-sky-600 hover:text-sky-700">All patient forms</a>
</div>
@if (($consultationAssessments ?? collect())->isNotEmpty())
@@ -260,18 +257,18 @@
@endforeach
</ul>
@else
<p class="mt-4 text-sm text-slate-400">No assessments linked to this consultation yet.</p>
<p class="mt-4 text-sm text-slate-400">No extra forms started for this visit yet.</p>
@endif
@if (($canCaptureAssessment ?? false) && ! $isCompleted && ($startableTemplates ?? collect())->isNotEmpty())
<form method="POST" action="{{ route('care.consultations.assessments.store', $consultation) }}" class="mt-4 flex flex-wrap items-end gap-3 border-t border-slate-100 pt-4">
@csrf
<div class="min-w-[12rem] flex-1">
<label class="block text-xs text-slate-500">Start other assessment</label>
<label class="block text-xs text-slate-500">Add another form</label>
<select name="template_code" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
<option value="">Select template</option>
<option value="">Select a form</option>
@foreach ($startableTemplates as $template)
<option value="{{ $template->code }}">{{ $template->name }} ({{ $template->code }})</option>
<option value="{{ $template->code }}">{{ $template->name }}</option>
@endforeach
</select>
</div>
@@ -328,10 +325,10 @@
@if ($canManage)
<section class="rounded-2xl border border-slate-200 bg-white p-6">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical notes (narrative)</h2>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical notes</h2>
@if ($canViewAssessments ?? false)
<p class="mt-1 text-xs text-slate-400">
Narrative source of truth for this encounter. Structured universal intake is a separate overlay above and is not auto-synced with these fields.
Free-text notes for this visit. The patient history form above is optional and will not replace what you write here.
</p>
@endif
<div class="mt-4 space-y-4">
@@ -390,7 +387,7 @@
<button type="submit" class="btn-primary">Save</button>
@if ($canManage && ($canViewAssessments ?? false))
<button type="submit" name="suggest_pathways" value="1" class="rounded-lg border border-sky-200 bg-sky-50 px-4 py-2 text-sm font-medium text-sky-800 hover:bg-sky-100">
Save diagnoses &amp; suggest pathways
Save diagnoses &amp; show condition suggestions
</button>
@endif
<a href="{{ route('care.queue.index') }}" class="rounded-lg border border-slate-200 px-4 py-2 text-sm text-slate-600">Back to queue</a>
@@ -414,7 +411,7 @@
@if ($consultation->symptoms || $consultation->clinical_notes)
<section class="rounded-2xl border border-slate-200 bg-white p-6">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical notes (narrative)</h2>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Clinical notes</h2>
@if ($consultation->symptoms)
<p class="mt-4 text-sm"><span class="font-medium text-slate-700">Symptoms:</span> {{ $consultation->symptoms }}</p>
@endif
@@ -427,7 +424,7 @@
@if (($canViewAssessments ?? false) && ($universalAssessment ?? null)?->isCompleted())
<section class="rounded-2xl border border-sky-100 bg-white p-6">
<div class="flex items-center justify-between gap-2">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Universal intake (structured)</h2>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Patient history form</h2>
<a href="{{ route('care.assessments.show', $universalAssessment) }}" class="text-sm text-sky-600 hover:text-sky-700">Open</a>
</div>
<dl class="mt-4 space-y-2 text-sm">