Superapp / Product requirements / clinic

Larkspur Health — product requirements

Version 1.19 features36 requirements13 Must Open appJSONMarkdown

Larkspur Health is a patient portal for a regional health system. Patients sign in to see a Home summary, book visits through a five-step wizard, reschedule or cancel them (with a 24-hour online lock), request medication refills, read lab results with high/low flags, exchange secure messages with attachments and keep their profile current. The portal clock is fixed at Monday 19 Oct 2026, 10:30 Pacific Time.

Problem. Patients want to manage routine care without phoning the clinic, and must be able to trust that what the portal shows (flags, refills, unread counts, open slots) is accurate and safe to act on.

Users

Goals

Out of scope

Contents

Sign-in

Username and password sign-in for two seeded patients.

FR-AUT-01
Must
Valid credentials open Home with a time-of-day greeting; the navigation lists Home, Appointments, Medications, Lab results, Messages (with an unread badge) and Profile.
  • Greeting "Good morning, Maya"
  • Messages badge shows 3 for the seeded record
FR-AUT-02
Must
Wrong credentials are refused and protected pages redirect to Sign in.
  • Alert "The username or password is incorrect." and the Sign in screen stays open
  • Opening /clinic/appointments signed out returns to Sign in

Home

Tiles, next visit, alerts and medications needing attention.

FR-HOM-01
Should
Home summarises the record in four tiles, a Next visit card and Medications needing attention.
  • Tiles: Upcoming visits 3, Unread messages 3, Active medications 7, "Results to review since Oct 14" 4
  • Next visit: Tue, Oct 20 at 9:00 AM with Dr. Priya Raman, Primary Care, Annual checkup, Larkspur Central
  • Needing attention: Lisinopril 10 mg "1 refill left" and Metformin 500 mg "0 refills left"
FR-HOM-02
Could
Each alert has an Open link and a dismiss button; dismissing removes only that alert and persists for the session.
  • Three alerts at start; two after dismissing the first, also after a reload
FR-HOM-03
Should
A patient with almost no history sees helpful empty states.
  • Home: "Good morning, Sam" and "No upcoming visits."
  • Appointments: "You have no upcoming visits." with a Book a visit button; Past shows one visit
  • Medications: "No medications on file."; Messages: "No messages yet. Write to your care team any time." with New message; Lab results: "No lab results yet."

Appointments

Upcoming and past visits.

FR-APT-01
Should
Appointments shows Upcoming and Past tabs with counts; each visit shows date, provider and status.
  • Tabs "Upcoming (3)" and "Past (4)"
  • APT-20481: Tue, Oct 20, 2026 at 9:00 AM, Dr. Priya Raman, Confirmed
  • APT-20482 and APT-20483 have enabled Reschedule and Cancel buttons
FR-APT-02
Could
Past visits list their status without action buttons; a cancelled visit shows its reason.
  • APT-19990 Cancelled "Reason: Schedule conflict"; APT-19907, APT-19211 and APT-18650 Completed

Book a visit

Five steps: specialty, provider, time, details, review.

FR-BKG-01
Must
A patient can book a visit end to end and it then appears under Upcoming.
  • Step 1 offers seven specialties; Primary Care lists Dr. Priya Raman, Hannah Voss and Dr. Marcus Ellery
  • Slots are 15 minutes; the review shows provider, time with time zone, visit type, reason and notes
  • "You are booked." with a confirmation number starting "APT-"; Upcoming count increases to 4
FR-BKG-02
Should
Providers can be sorted by "Top rated" (rating, highest first) or "Soonest" (next opening, earliest first).
  • Cardiology Top rated: Dr. Tomas Beaulieu (4.8) then Dr. Aiyana Whitecloud (4.5)
  • Cardiology Soonest: Dr. Aiyana Whitecloud (Mon, Oct 19, 11:30 AM) then Dr. Tomas Beaulieu (Wed, Oct 21, 9:45 AM)
  • Dermatology Soonest: Dr. Rafael Duarte (Mon, Oct 19, 11:30 AM) before Dr. Lena Koistinen (Tue, Oct 20, 9:00 AM)
FR-BKG-03
Could
The Language filter narrows the provider list.
  • Primary Care + Spanish: only Dr. Marcus Ellery
  • Primary Care + German: only Hannah Voss with the badge "Existing patients only"
FR-BKG-04
Should
The visit type follows what the provider offers: in-person-only providers cannot be booked for video.
  • Dr. Kwame Asante (Orthopedics): "In person" selected and "Video" disabled
FR-BKG-05
Should
The slot picker covers 14 days, skips Saturdays and Sundays, hides slots already booked and never offers a time less than 60 minutes from now.
  • Day strip starts Mon, Oct 19; Oct 24 and 25 show no open times
  • Mon Oct 19: earliest slot 11:30 AM
  • Dr. Priya Raman: 13 open slots on Oct 20 (9:00 AM already booked) and 14 on Oct 21
FR-BKG-06
Should
Reason-dependent fields are required: "New symptom" needs a duration and "Other" needs notes.
  • "Tell us how long you have had this symptom"; with "Less than 1 week" the review lists "Symptom duration: Less than 1 week"
  • "Describe the reason for your visit" under Notes for Other
FR-BKG-07
Must
Cardiology bookings require the chest pain question; answering Yes shows an emergency warning.
  • "Are you having chest pain right now?" with No and Yes; continuing unanswered shows "Answer the chest pain question"
  • Yes shows "If this is an emergency, call 911 now. Do not wait for an appointment."
  • No leads to a review listing "Chest pain: No"
FR-BKG-08
Could
Notes accept up to 300 characters with a live counter.
  • Counter "0 / 300", "300 / 300"; 301 characters shows "Notes can be at most 300 characters"
FR-BKG-09
Must
A provider and time can be booked only once: after a booking the slot is shown as taken and a second booking for it is refused.
  • The booked time is no longer offered for that provider
  • A forced second attempt shows "That time was just taken. Choose another slot." and Upcoming never lists two visits at the same time

Reschedule and cancel

Change or cancel upcoming visits, subject to a 24-hour lock.

FR-RSC-01
Must
A visit more than 24 hours away can be rescheduled to another open slot with the same provider.
  • Dialog "Reschedule appointment"; picking Wed, Oct 21 at 10:30 AM shows "New time: Wed, Oct 21 at 10:30 AM"
  • After "Confirm new time" APT-20482 reads Wed, Oct 21, 2026 at 10:30 AM with Dr. Tomas Beaulieu; Upcoming stays 3
FR-RSC-02
Must
A visit more than 24 hours away can be cancelled with a reason; it then moves to Past as Cancelled with that reason.
  • Dialog "Cancel this appointment?" with a Reason list
  • Cancelling APT-20483 with "Feeling better": Upcoming (2), Past (5), "Reason: Feeling better"; Home tile shows 2
FR-RSC-03
Must
A visit that starts within 24 hours cannot be rescheduled or cancelled online.
  • APT-20481 (Tue Oct 20, 9:00 AM, 22.5 hours away): Reschedule and Cancel disabled with "Visits within 24 hours can't be changed online. Call (503) 555-0100."

Medications and refills

Medication list with refill rules.

FR-MED-01
Should
Medications lists active items with refills left and, when a refill is unavailable, the reason; discontinued items are hidden behind "Show discontinued".
  • Seven active: Atorvastatin 3, Lisinopril 1, Metformin 0, Levothyroxine 5, Albuterol inhaler 2, Vitamin D3 0, Sertraline 2 refills
  • Vitamin D3: badge "Over the counter", "Over-the-counter item — no refill needed"
  • Sertraline: status "Refill requested", "Refill already requested"
  • Amoxicillin 500 mg appears with the badge "Discontinued"
FR-MED-02
Must
Requesting a refill with refills remaining decrements the count and marks the medication as requested.
  • Dialog "Request a refill" shows "3 refills left" and a pharmacy list
  • After "Send request" Atorvastatin shows "Refill requested", "2 refills left" and Request refill disabled
FR-MED-03
Could
The refill count uses the singular label for one ("1 refill left") and reaches "0 refills left" after the last refill is requested.
FR-MED-04
Must
A medication with zero refills left, an over-the-counter item or an already-requested refill cannot be requested.
  • Metformin 500 mg: Request refill disabled with "No refills left — message your provider to renew"
  • The count never goes below 0

Lab results

Reports with reference ranges and H/L flags.

FR-LAB-01
Must
Lab results list every panel with values, ranges and a total of out-of-range results.
  • "8 of 18 results out of range"; Lipid panel and Basic metabolic panel marked "New"
  • Lipid: Total cholesterol 214 (< 200), LDL cholesterol 138 (< 100), HDL cholesterol 52 (≥ 40), Triglycerides 118 (< 150)
  • Basic metabolic: Glucose, fasting 104 (70–99), Potassium 3.4 (3.5–5.1); Sodium, Creatinine, BUN and Calcium normal
FR-LAB-02
Must
A value above its reference range is flagged H and a value below is flagged L; values in range have no flag.
  • Total cholesterol 214 H, Glucose 104 H, TSH 4.9 (0.4–4.0) H, Hemoglobin A1c 6.9 (4.0–5.6) H
  • Potassium 3.4 L, Hemoglobin 11.8 (12.0–15.5) L, Vitamin D, 25-hydroxy 28 (30–100) L
FR-LAB-03
Should
A panel selector and an "Out of range only" checkbox narrow the reports without changing the summary.
  • "Out of range only" keeps only flagged rows; summary still "8 of 18 results out of range"
  • Panel "Thyroid panel" shows only TSH and Free T4; "All panels" restores all

Secure messages

Threads with the care team and attachments.

FR-MSG-01
Must
Opening an unread thread marks it read and lowers every unread count (heading, navigation badge and Home tile) by one.
  • Six threads, "3 unread", badge 3
  • After opening "Lipid results and next steps": "2 unread", badge 2, Home tile 2
FR-MSG-02
Should
A new message to the care team with a small attachment is delivered and listed first.
  • Dialog "New message" with To, Subject, Message (counter out of 1000) and an attachment picker
  • Toast "Message sent"; the thread opens with chip "referral.pdf · 200 KB"
FR-MSG-03
Should
Messages are validated: recipient, subject up to 80 characters, attachments PDF/JPG/PNG up to 5 MB.
  • "Choose who to message"
  • "Enter a subject"
  • "Subject can be at most 80 characters"
  • "Attach a PDF, JPG or PNG file"
  • "Attachments can be at most 5 MB"

Profile

Contact details, emergency contact and pharmacy.

FR-PRF-01
Should
Profile fields reject malformed values with specific messages.
  • Phone: "Enter a 10-digit phone number, for example (503) 555-0147"
  • Email: "Enter a valid email address"
  • ZIP: "ZIP code must be 5 digits"
  • Emergency contact: "Enter a contact name"
FR-PRF-02
Should
A valid change is saved, the phone is reformatted and the values persist after a reload.
  • "All changes saved."
  • Entering 5035550199 shows "(503) 555-0199" after reload; the chosen pharmacy is kept

Non-functional requirements

NFR-01
Could
Home is usable at 390 px and 768 px with no horizontal scroll: 16 px gutters and a bottom tab bar on phone and tablet, a left sidebar with six links at 1280 px.
  • At 390 px the four tiles wrap two per row
NFR-02
Could
On a phone, lab results become stacked rows that keep value and flag visible; at desktop width they are a table with Test, Result, Reference range, Position and Flag columns.
NFR-03
Could
The booking wizard fits 390 px: progress list, a day strip that scrolls in its own box, slot buttons at least 44 px tall and a reachable footer bar with Back and Continue.
NFR-04
Could
The sign-in screen shows the Larkspur Health brand panel (headline "Your health record, at your pace.") and follows the system colour scheme; in dark mode text stays readable, and on a phone the brand panel stacks above the sign-in card.
NFR-05
Should
Data is kept per browser tab: a reload keeps changes, a new tab starts from the seeded record.

Glossary and rules

H / L flagH = result above the reference range, L = result below it.
24-hour lockVisits starting less than 24 hours from the portal clock cannot be changed online.
Lead timeSlots are offered only if they start at least 60 minutes from the portal clock.