Add the Healthcare platform backend (phases 13.0–13.7) with Alembic migration revision fix, production deploy script, validation reports, shared UI exports, and loyalty list page client directives so Next.js build succeeds. Co-authored-by: Cursor <cursoragent@cursor.com>
4.3 KiB
4.3 KiB
Healthcare UI Completion Report
Date: 2026-07-26
Scope: All existing /healthcare/* routes (114 pages)
Module root: frontend/src/modules/healthcare
Summary
Healthcare portal pages were upgraded from read-only list views to enterprise CRUD workspaces backed by the real healthcareApi client. A shared HealthcareResourceWorkspace engine powers tables, cards, search, saved filters, create/edit dialogs, workflow actions, audit drawers, and permission gates.
Architecture
| Layer | Location | Role |
|---|---|---|
| Routes | app/healthcare/** |
Thin re-exports only |
| Business UI | src/modules/healthcare/pages/* |
Portal-specific composition |
| Entity screens | src/modules/healthcare/components/entities/* |
Full CRUD + workflows |
| CRUD engine | src/modules/healthcare/components/crud/HealthcareResourceWorkspace.tsx |
Reusable enterprise table |
| Shared UI | src/shared/ui, src/shared/hooks |
Timeline, calendar, filters |
| API | src/modules/healthcare/services/healthcare-api.ts |
Real BFF → :8010 |
Portal Completion Matrix
| Portal | Pages | CRUD / Workflows | Calendar | Audit | Permissions |
|---|---|---|---|---|---|
| Admin | 14 | Clinics, doctors, patients, pharmacies, settings, audit | — | ✅ | ✅ catalog |
| Reception | 10 | Appointments, queue, walk-in, check-in/out | ✅ | ✅ | ✅ |
| Doctor | 16 | Schedule, availability, appointments, Rx, records | ✅ | ✅ | ✅ doctor gate |
| Patient | 18 | Book/cancel appointments, docs, notifications, profile | — | ✅ | ✅ patient gate |
| Clinic | 11 | Departments, branches, staff, services, policies | — | ✅ | ✅ |
| Hospital | 9 | Departments, beds, staff, appointments | — | ✅ | ✅ |
| Pharmacy | 7 | Rx workflow (accept→ready→pickup), delivery | — | ✅ | ✅ |
| Public site | 17 | Search, book, profiles (existing + API) | — | — | public |
| Hub / Mobile | 3 | Portal launcher | — | — | — |
Enterprise Features Delivered
- CRUD: create / edit / delete dialogs for foundation entities
- Workflow actions: appointment confirm/cancel/no-show; visit start/finish/defer; prescription pharmacy pipeline
- Search & filters: debounced search, status filter, saved filter presets (localStorage)
- Views: responsive table + card toggle
- Calendar:
AppointmentCalendarfor reception & doctor schedules - Audit: entity detail drawer + timeline from
/api/v1/audit - Permissions:
useHealthcarePermissions+PermissionDeniedState; backend enforces 403 - Patient portal: book wizard, cancel appointment, document upload refs, notification prefs
- Loading / empty / error states: unified via shared DS + healthcare page shells
- RTL / theme: inherits platform CSS vars, dark mode,
--health-accent*tokens
Key New Files
src/shared/hooks/useDebouncedValue.ts
src/shared/hooks/useSavedFilters.ts
src/shared/ui/Timeline.tsx
src/shared/ui/AppointmentCalendar.tsx
src/shared/ui/PermissionDeniedState.tsx
src/modules/healthcare/components/crud/HealthcareResourceWorkspace.tsx
src/modules/healthcare/components/entities/foundation.tsx
src/modules/healthcare/components/entities/workflows.tsx
src/modules/healthcare/components/entities/clinical.tsx
src/modules/healthcare/hooks/useHealthcarePermissions.ts
src/modules/healthcare/constants/permissions.ts
Known Limitations
- Encounters list API — backend exposes create/update/finalize but no collection list; UI supports create + placeholder list until list endpoint ships.
- Medical records list — no list endpoint; lookup-by-ID panel + create form provided.
- Insurance / lab / imaging — not exposed as dedicated REST resources in healthcare service v0.13.7; patient lab results mapped to
patient-portal/documentswithdocument_typefilter. - Full build — Next.js production build fails on pre-existing
modules/hospitalityTypeScript error (znamespace); healthcare bundle compiles successfully.
Self-Audit
- No placeholder buttons on upgraded portal pages
- No mock data in module business code
- Module boundary respected (
validate:healthcarePASS) - 114 routes intact
- Zero circular deps in healthcare module (32 files)