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>
93 lines
4.3 KiB
Markdown
93 lines
4.3 KiB
Markdown
# 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:** `AppointmentCalendar` for 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
|
|
|
|
1. **Encounters list API** — backend exposes create/update/finalize but no collection list; UI supports create + placeholder list until list endpoint ships.
|
|
2. **Medical records list** — no list endpoint; lookup-by-ID panel + create form provided.
|
|
3. **Insurance / lab / imaging** — not exposed as dedicated REST resources in healthcare service v0.13.7; patient lab results mapped to `patient-portal/documents` with `document_type` filter.
|
|
4. **Full build** — Next.js production build fails on pre-existing `modules/hospitality` TypeScript error (`z` namespace); healthcare bundle compiles successfully.
|
|
|
|
---
|
|
|
|
## Self-Audit
|
|
|
|
- [x] No placeholder buttons on upgraded portal pages
|
|
- [x] No mock data in module business code
|
|
- [x] Module boundary respected (`validate:healthcare` PASS)
|
|
- [x] 114 routes intact
|
|
- [x] Zero circular deps in healthcare module (32 files)
|