As a practitioner, I can browse and open cases from the web UI #14

Open
opened 2026-04-14 20:42:15 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As a practitioner, I want a case list and case detail page in the web client, so that I can see my active teleexpertise work and open any case's workspace.

Acceptance criteria

Case list

  • /cases route with tabs: Requested by me, Assigned to me, All (admin).
  • Filters: status, specialty, urgency.
  • Sort by updated-at desc default.
  • Each row: case title (first line of question), patient identifier (pseudonymized for privacy — e.g. initials + DOB year), urgency badge, invitees count, last update time.
  • Empty-state with a New case CTA.

Case detail

  • /cases/{id} route with: header (state, urgency, requester, invitees), question, supporting docs list, chat panel (stub until #15), video panel (stub until #16), activity log.
  • Actions: invite colleague (local only), put on hold, reopen, close.
  • Accessibility: full keyboard navigation, ARIA landmarks, captions alt-text placeholder.

New case form

  • /cases/new route with structured form matching the backend POST /api/cases payload.
  • Patient picker (search) limited to patients the practitioner has a care relationship with.
  • Invitee picker from local practitioner directory.

Tests

  • Playwright: create a case, see it in the list, open it.
  • Playwright: state transition via UI.

Out of scope

  • Chat widget (#15), video (#16), document upload (#17).
  • Cross-instance invites (#19).

References

  • spec/04-functional/02-teleexpertise.md §3.
  • spec/08-roadmap-mvp.md — step #14.
## User story **As a practitioner**, I want a case list and case detail page in the web client, **so that** I can see my active teleexpertise work and open any case's workspace. ## Acceptance criteria ### Case list - [ ] `/cases` route with tabs: *Requested by me*, *Assigned to me*, *All (admin)*. - [ ] Filters: status, specialty, urgency. - [ ] Sort by updated-at desc default. - [ ] Each row: case title (first line of question), patient identifier (pseudonymized for privacy — e.g. initials + DOB year), urgency badge, invitees count, last update time. - [ ] Empty-state with a *New case* CTA. ### Case detail - [ ] `/cases/{id}` route with: header (state, urgency, requester, invitees), question, supporting docs list, chat panel (stub until #15), video panel (stub until #16), activity log. - [ ] Actions: invite colleague (local only), put on hold, reopen, close. - [ ] Accessibility: full keyboard navigation, ARIA landmarks, captions alt-text placeholder. ### New case form - [ ] `/cases/new` route with structured form matching the backend `POST /api/cases` payload. - [ ] Patient picker (search) limited to patients the practitioner has a care relationship with. - [ ] Invitee picker from local practitioner directory. ### Tests - [ ] Playwright: create a case, see it in the list, open it. - [ ] Playwright: state transition via UI. ## Out of scope - Chat widget (#15), video (#16), document upload (#17). - Cross-instance invites (#19). ## References - `spec/04-functional/02-teleexpertise.md` §3. - `spec/08-roadmap-mvp.md` — step #14.
claude-desktop added this to the v0.1 milestone 2026-04-14 20:42:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/koinos#14
No description provided.