| name | theme-healthcare |
| description | Healthcare application palette: variants, pages, entities, and flows for building a varied health app. Use when theme_preset is healthcare.
|
Healthcare theme
Domain
Apps where patients and providers manage appointments, records, prescriptions,
and messages. The sensitivity of PHI (protected health info) and the
patientโprovider access boundary are what make the exploits feel consequential.
Application variants โ pick ONE per lab
Honor any hint in theme_free_text / custom_prompt; otherwise pick one.
- Patient portal โ appointments, records, messages, billing for the patient.
- Clinic admin โ staff schedule patients, manage charts, billing.
- Telehealth โ video visits, intake forms, e-prescriptions.
- Pharmacy โ prescriptions, refills, pickup, insurance.
- Lab-results portal โ orders, results delivery, provider notes.
- Mental-health / therapy โ therapists, session booking, private notes, mood journals.
- Wellness / fitness coaching โ programs, check-ins, plans, coach messaging, progress.
Roles โ choose the set that fits the variant
- user (patient) โ own records, appointments, messages, invoices.
- provider (clinician) โ patients assigned to them, charts, prescriptions.
- admin (front desk / billing) โ scheduling, all patients, billing.
Most exploits run as user (patient).
Candidate pages โ select a coherent subset
Size the subset to endpoint_count. Candidates: dashboard, appointments
list/booking, appointment detail, medical records, record/document viewer,
prescriptions & refills, secure messages, lab results, billing/invoices,
insurance, profile/settings, notifications, provider patient list, provider
chart, admin scheduling, video visit room / intake forms (telehealth), refill
queue / pickup / insurance claims (pharmacy), lab orders / results delivery /
provider notes (lab-results).
Candidate entities (seed tables) โ select what the variant needs
- users โ id, email, password_hash, role
- patients โ id, user_id, dob, mrn, primary_provider_id
- providers โ id, user_id, specialty
- appointments โ id, patient_id, provider_id, starts_at, status
- records โ id, patient_id, kind, body, document_path?
- prescriptions โ id, patient_id, provider_id, drug, dosage, refills_left
- messages โ id, from_user_id, to_user_id, body, thread_id
- invoices โ id, patient_id, amount_cents, status
- insurance_policies โ id, patient_id, payer, member_id, group_number
Telehealth (variant):
- video_visits (variant) โ id, appointment_id, room_token, started_at, ended_at
- intake_forms (variant) โ id, patient_id, appointment_id, answers_json, status
Pharmacy (variant):
- refills (variant) โ id, prescription_id, patient_id, status, requested_at, filled_at
- pickups (variant) โ id, refill_id, location_id, ready_at, picked_up_at
- insurance_claims (variant) โ id, patient_id, prescription_id, payer, amount_cents, status
Lab-results (variant):
- lab_orders (variant) โ id, patient_id, provider_id, panel, status, ordered_at
- results (variant) โ id, lab_order_id, patient_id, value, reference_range, released_at
- provider_notes (variant) โ id, result_id, provider_id, body
Seed several patients across โฅ2 providers so cross-patient access is testable.
Candidate user flows โ select the ones matching chosen pages/features
- Dashboard โ book an appointment โ confirmation.
- View own medical records โ open/download a document.
- Message a provider โ read replies in a thread.
- Request a prescription refill โ status updates.
- View & pay an invoice โ receipt.
- (provider) Open a patient's chart โ add a note / prescription.
- (provider) Triage assigned patient list โ open the next chart.
- (telehealth) Complete an intake form โ join the video visit room.
- (pharmacy) Submit a refill โ track it to the pickup queue โ mark picked up.
- (lab-results) Open a lab order โ view released results โ read the provider note.
Candidate endpoints โ a feature may span several
Endpoints are a shared surface, not owned 1:1 by a feature (a single feature
often spans several, and an endpoint can back multiple features). Pick a coherent
subset alongside the pages above. Grouped by area:
- records / documents โ
GET /api/patients/{id}/records, GET /api/records/{id}, GET /api/records/{id}/document?file=
- appointments โ
GET/POST /api/appointments, GET /api/appointments/{id}
- messages โ
GET/POST /api/messages, GET /api/messages/{id}
- prescriptions โ
GET /api/prescriptions, POST /api/prescriptions/{id}/refill
- billing / insurance โ
GET /api/invoices/{id}, POST /api/invoices/{id}/pay, GET/POST /api/insurance
- telehealth (variant) โ
GET /api/video-visits/{id}, GET/POST /api/intake-forms
- pharmacy (variant) โ
GET/POST /api/refills, GET /api/pickups/{id}, GET/POST /api/insurance-claims
- lab-results (variant) โ
GET/POST /api/lab-orders, GET /api/results/{id}, GET/POST /api/results/{id}/notes
- provider / admin โ
GET /api/providers/{id}/patients, /api/admin/...
Where vulnerabilities fit naturally
- idor โ
GET /api/patients/{id}/records, /api/records/{id}, /api/messages/{id} โ read another patient's PHI.
- privilege_escalation โ patient acquiring provider/admin role to see all charts.
- path_traversal โ record/document download via a
file= parameter (?file=../../etc/passwd).
- business_logic โ request refills beyond
refills_left, book/cancel another patient's appointment.
- auth_bypass โ reach a record viewer without an active session (where the spec gates it).
- xss โ free-text message body or visit notes rendered to a provider.
Diversity guidance
Pick ONE variant and a coherent subset โ a pharmacy and a telehealth app
diverge sharply. Size to endpoint_count; let theme_free_text /
custom_prompt bias the variant and naming. Vary specialties, record types, and
provider counts so two healthcare labs feel like different organizations.