Skip to main content

Desktop Electron EHR — unified user stories

Source of truth: EHEALTH_DESKTOP_PLATFORM_REQUIREMENTS.md + SPEC.md + TECHNICAL_REQUIREMENTS.md.

Story IDUser StoryContextAcceptance CriteriaParent Epic IDFR/NFR / REQTrackLabelJira Key
DESK-US-001As a user, I want OIDC/OAuth2 login with PKCE and token refresh in the main process so that desktop auth matches platform IAM.IAM + KongTokens stored with OS secure storage; refresh on 401 follows policy; logout clears vault; no secrets in renderer bundle.DESK-EPIC-01REQ-DESK-INT-002; TR-DSK-040–042baselineehr-desktopGEHR-483
DESK-US-002As a developer, I want a minimal typed preload contextBridge API so that the renderer is untrusted and has no Node integration.Electron securitynodeIntegration: false, contextIsolation: true; IPC payloads validated (Zod); surface documented in shared types.DESK-EPIC-01TR-DSK-001–004; REQ-DESK-NFR-011baselineehr-desktopGEHR-484
DESK-US-003As a user, I want the client to consume an entitlement bootstrap (config-resolver / IAM aggregate) so that capabilities are server-authoritative.REQ-DESK-INT-008Bootstrap response documented; maps to capability map shape; refresh on policy change; 403 remains backstop.DESK-EPIC-01REQ-DESK-INT-008; REQ-DESK-FR-090baselineehr-desktopGEHR-485
DESK-US-004As a user, I want router registration and feature flags driven by the capability map so that unlicensed routes are not active.Modular shellRoutes for disabled modules not registered; deep links to forbidden routes show safe messaging; aligns with REQ-DESK-FR-091–092.DESK-EPIC-01REQ-DESK-FR-090–093baselineehr-desktopGEHR-486
DESK-US-005As a user, I want a data-driven sidebar and module hub so that navigation matches my entitlements and site profile.Lab/pharm/imagingNav items from capability map; licensed-but-forbidden uses read-only or disabled pattern per product choice; documented in UX spec.DESK-EPIC-01REQ-DESK-FR-091–094baselineehr-desktopGEHR-487
DESK-US-006As a site admin, I want default landing modules and pinned items by site type (clinic vs lab vs pharmacy vs imaging) without code forks.PersonaConfig-driven defaults; user can override pins where product allows; persists per user/tenant rules.DESK-EPIC-01REQ-DESK-FR-008baselineehr-desktopGEHR-488
DESK-US-007As a power user, I want command palette / quick-open targets filtered by the same capability map so that I cannot discover hidden admin URLs.Quick navPalette lists only permitted targets; server still enforces on API.DESK-EPIC-01REQ-DESK-FR-095baselineehr-desktopGEHR-489
DESK-US-008As a multi-tenant user, I want tenant switch to reset local cache, outbox scope, and module visibility without cross-tenant leakage.Tenant isolationSQLite rows and queue scoped per tenant; switch clears or rekeys per policy; no merge across tenants.DESK-EPIC-01REQ-DESK-FR-097; TR-DSK-013baselineehr-desktopGEHR-490
DESK-US-009As finance, I want no background sync jobs for modules that are not licensed so that hidden API usage does not occur.LicensingSchedulers register only for licensed modules; verified with integration test or config matrix.DESK-EPIC-01REQ-DESK-FR-009baselineehr-desktopGEHR-491
DESK-US-010As a user, I want SQLite in main with tenant-scoped queries and migrations so that offline PHI is structured and versioned.Local DBtenantId on persisted rows; FK + indexes; migrations run on upgrade; matches TR-DSK-010–013.DESK-EPIC-02REQ-DESK-FR-001; TR-DSK-010–013baselineehr-desktopGEHR-492
DESK-US-011As a user, I want an outbox with clientMutationId / Idempotency-Key so that sync retries are safe.OutboxOutbox schema per TR-DSK-020–022; causal ordering documented for same aggregate.DESK-EPIC-02REQ-DESK-FR-002; TR-DSK-020–022baselineehr-desktopGEHR-493
DESK-US-012As a user, I want sync with exponential backoff and jitter on 429 and no infinite retry on 401/403.HTTPMatches FR-DSK-003 / TR-DSK-030–032; integration tests with mock Kong.DESK-EPIC-02FR-DSK-003; TR-DSK-030–032baselineehr-desktopGEHR-494
DESK-US-013As a clinician, I want conflict UI for 409 and version conflicts so that silent overwrite never happens.ConflictsUser-visible resolution; audit trail; aligns with FR-DSK-004.DESK-EPIC-02REQ-DESK-FR-003; FR-DSK-004baselineehr-desktopGEHR-495
DESK-US-014As a user, I want global connectivity and per-area sync indicators so that I see pending work.UXFR-DSK-005; E2E states for pending/syncing/failed.DESK-EPIC-02FR-DSK-005baselineehr-desktopGEHR-496
DESK-US-015As support, I want X-Correlation-Id (or equivalent) on sync traffic so that we can correlate logs.ObservabilityTR-DSK-034; verified in integration test.DESK-EPIC-02REQ-DESK-FR-006; TR-DSK-034baselineehr-desktopGEHR-497
DESK-US-016As a security officer, I want PHI encrypted at rest in SQLite per policy so that lost devices are mitigated.EncryptionMatches REQ-DESK-NFR-010 / TR-DSK-011; key derivation documented.DESK-EPIC-02REQ-DESK-NFR-010; TR-DSK-011baselineehr-desktopGEHR-498
DESK-US-017As a user, I want online-only flows clearly labeled and degraded offline so that I do not mistake cached data for live submission.DegradationFR-DSK-006; representative flows covered in E2E.DESK-EPIC-02REQ-DESK-FR-003; FR-DSK-006baselineehr-desktopGEHR-499
DESK-US-018As registration staff, I want patient intake with offline draft or queue per registration module policy.RegistrationDuplicate search behavior documented; queue uses idempotency when API supports; see specs/modules/registration/.DESK-EPIC-03REQ-DESK-FR-010baselineehr-desktopGEHR-500
DESK-US-019As a clinician, I want encounter notes with offline draft and optimistic lock on sync.Notes409 handling; versioning per service; specs/modules/clinical-notes/ as applicable.DESK-EPIC-03REQ-DESK-FR-011baselineehr-desktopGEHR-501
DESK-US-020As a clinician, I want CPOE orders to distinguish unsigned draft vs signed committed orders.OrdersUI state machine; online-only checks where required; specs/modules/orders-cpoe/.DESK-EPIC-03REQ-DESK-FR-012baselineehr-desktopGEHR-502
DESK-US-021As a clinician, I want problems, allergies, and medications with cached terminology and critical allergy warnings when offline.SafetyWarnings per jurisdiction; server authoritative on save; specs/modules/problem-list/, allergies/, medication-management/.DESK-EPIC-03REQ-DESK-FR-013baselineehr-desktopGEHR-503
DESK-US-022As a nurse, I want vitals and immunizations queued offline when APIs support idempotent POST.Vitals/immunizationsMatches TR-OFF patterns; module specs for vitals/immunizations.DESK-EPIC-03REQ-DESK-FR-014baselineehr-desktopGEHR-504
DESK-US-023As a scheduler, I want cached calendars and queued booking intents per scheduling spec.SchedulingLive slot search may be disabled offline with clear copy; specs/modules/scheduling/.DESK-EPIC-03REQ-DESK-FR-015; FR-DSK-015baselineehr-desktopGEHR-505
DESK-US-024As a user, I want secure messaging with read-only cache when policy permits.MessagingOnline-first live threads; specs/modules/digital-communication/ or messaging module.DESK-EPIC-03REQ-DESK-FR-030baselineehr-desktopGEHR-506
DESK-US-025As a user, I want OS notifications and in-app notification center with sync-pending awareness.NotificationsFR-DSK-016; no silent loss of reminders.DESK-EPIC-03REQ-DESK-FR-031; FR-DSK-016baselineehr-desktopGEHR-507
DESK-US-026As a clinician, I want virtual care join flows marked online-only with clear UX.Virtual carespecs/modules/virtual-care/; Meet embed security if applicable.DESK-EPIC-03REQ-DESK-FR-032baselineehr-desktopGEHR-508
DESK-US-027As a clinician, I want care plans, med reconciliation with stale-as-of offline, and eRx draft with online submission.Med/careREQ-DESK-FR-040–042; e-prescribing gateway specs; no controlled submit offline.DESK-EPIC-03REQ-DESK-FR-040–042baselineehr-desktopGEHR-509
DESK-US-028As a lab tech, I want an incoming lab worklist with filters for priority, status, location, and panel.LIS UIConsumes LIS list APIs; specs/modules/laboratory-lis/; REQ-DESK-FR-100.DESK-EPIC-04REQ-DESK-FR-100baselineehr-desktopGEHR-510
DESK-US-029As a collector, I want collection workflow with stat vs routine, labels, barcode capture, and collector attribution.CollectionScanner via main or wedge; REQ-DESK-FR-101.DESK-EPIC-04REQ-DESK-FR-101baselineehr-desktopGEHR-511
DESK-US-030As a lab tech, I want accessioning with match, reject, and partial receive reason codes.AccessioningREQ-DESK-FR-102; chain-of-custody per LIS spec.DESK-EPIC-04REQ-DESK-FR-102baselineehr-desktopGEHR-512
DESK-US-031As a tech, I want result entry/review UI with abnormal flags and critical escalation paths online-first.ResultsREQ-DESK-FR-103; server rules for reflex/critical.DESK-EPIC-04REQ-DESK-FR-103baselineehr-desktopGEHR-513
DESK-US-032As a tech, I want panels with components, reference ranges, and units per regional profile.PanelsREQ-DESK-FR-104; locale-aware display.DESK-EPIC-04REQ-DESK-FR-104baselineehr-desktopGEHR-514
DESK-US-033As QA, I want QC / instrument flows to be online-first with explicit offline messaging.QCREQ-DESK-FR-105; no silent QC submit offline.DESK-EPIC-04REQ-DESK-FR-105baselineehr-desktopGEHR-515
DESK-US-034As a lab manager, I want offline rules that only queue idempotent lab actions and role-gated screens for collection vs auth.Offline + rolesREQ-DESK-FR-106–107; aligns with LIS backlog stories for server truth.DESK-EPIC-04REQ-DESK-FR-106–107baselineehr-desktopGEHR-516
DESK-US-035As a pharmacist, I want prescription queues (new/refill/pending verification) with verification gated by permission.Pharmacy queueREQ-DESK-FR-110; specs/modules/pharmacy/DESK-EPIC-05REQ-DESK-FR-110baselineehr-desktopGEHR-517
DESK-US-036As a tech, I want dispensing fill → check → label → deliver with barcode verification for NDC/package.DispensingREQ-DESK-FR-111DESK-EPIC-05REQ-DESK-FR-111baselineehr-desktopGEHR-518
DESK-US-037As inventory staff, I want stock, receiving, and adjustments online-first per inventory service.InventoryREQ-DESK-FR-112; offline read-only or explicit queue per policy.DESK-EPIC-05REQ-DESK-FR-112baselineehr-desktopGEHR-519
DESK-US-038As a pharmacist, I want compounding behind a dedicated feature flag with batch and beyond-use fields.CompoundingREQ-DESK-FR-113DESK-EPIC-05REQ-DESK-FR-113baselineehr-desktopGEHR-520
DESK-US-039As a pharmacist, I want controlled substance flows to use server validation and never bypass EPCS from desktop.ControlledREQ-DESK-FR-114; specs/modules/ghasi-e-prescribing-gateway/ as applicable.DESK-EPIC-05REQ-DESK-FR-114baselineehr-desktopGEHR-521
DESK-US-040As a pharmacist, I want counseling documentation and print/handouts via safe OS print paths.CounselingREQ-DESK-FR-115; main print integration.DESK-EPIC-05REQ-DESK-FR-115baselineehr-desktopGEHR-522
DESK-US-041As pharmacy leadership, I want offline policy for dispense/inventory with stale interaction/formulary data and SoD enforced with 403.Offline + SoDREQ-DESK-FR-116–117DESK-EPIC-05REQ-DESK-FR-116–117baselineehr-desktopGEHR-523
DESK-US-042As a technologist, I want imaging modality worklists with status, priority, and contrast flags.RIS worklistREQ-DESK-FR-120; specs/modules/radiology-pacs/DESK-EPIC-06REQ-DESK-FR-120baselineehr-desktopGEHR-524
DESK-US-043As a scheduler, I want imaging orders aligned with slots/resources with server-side conflict surfacing.Scheduling linkREQ-DESK-FR-121DESK-EPIC-06REQ-DESK-FR-121baselineehr-desktopGEHR-525
DESK-US-044As a radiologist, I want prior studies listed with metadata; full prior fetch when online.PriorsREQ-DESK-FR-122DESK-EPIC-06REQ-DESK-FR-122baselineehr-desktopGEHR-526
DESK-US-045As a radiologist, I want viewer launch only through allowlisted BrowserView or external deep link per tenant config.ViewerREQ-DESK-FR-123; security review documented.DESK-EPIC-06REQ-DESK-FR-123baselineehr-desktopGEHR-527
DESK-US-046As a radiologist, I want report states draft/prelim/final/addendum with signing online-only.ReportingREQ-DESK-FR-124; local draft marked not released.DESK-EPIC-06REQ-DESK-FR-124baselineehr-desktopGEHR-528
DESK-US-047As a radiologist, I want peer review / distribution flows online-first with no silent publish offline.Peer reviewREQ-DESK-FR-125DESK-EPIC-06REQ-DESK-FR-125baselineehr-desktopGEHR-529
DESK-US-048As PACS admin, I want DICOM/WADO with progress, cancel, and disk cache limits for local artifacts.Large payloadsREQ-DESK-FR-126DESK-EPIC-06REQ-DESK-FR-126baselineehr-desktopGEHR-530
DESK-US-049As security, I want imaging role separation (tech vs radiologist vs clerk) with signing gated by license + role.RBACREQ-DESK-FR-127; REQ-DESK-FR-020–021 summaryDESK-EPIC-06REQ-DESK-FR-127baselineehr-desktopGEHR-531
DESK-US-050As a user, I want document upload/download via main-process file APIs and server policy enforcement.DocumentsREQ-DESK-FR-050; specs/modules/document-management/DESK-EPIC-07REQ-DESK-FR-050baselineehr-desktopGEHR-532
DESK-US-051As a user, I want OCR via cloud ai-orchestrator or local ONNX IPC per tenant policy.OCRREQ-DESK-FR-051; TR-DSK-080–083; AI_PLATFORMDESK-EPIC-07REQ-DESK-FR-051; TR-DSK-081baselineehr-desktopGEHR-533
DESK-US-052As a clinician, I must confirm OCR-extracted text before it is committed to the legal record.SafetyREQ-DESK-FR-051; explicit accept action; audit.DESK-EPIC-07REQ-DESK-FR-051baselineehr-desktopGEHR-534
DESK-US-053As a biller, I want draft charges locally and payer submission online-only per billing module.BillingREQ-DESK-FR-062; specs/modules/billing/DESK-EPIC-08REQ-DESK-FR-062baselineehr-desktopGEHR-535
DESK-US-054As finance, I want billing sync retries to show server errors and avoid duplicate charges on replay.IdempotencyREQ-DESK-FR-062; aligns with claims/billing idempotency docs.DESK-EPIC-08REQ-DESK-FR-062baselineehr-desktopGEHR-536
DESK-US-055As an analyst, I want population health dashboards online-first with optional cached snapshot and as-of time.Pop healthREQ-DESK-FR-070; specs/modules/health-population/DESK-EPIC-09REQ-DESK-FR-070baselineehr-desktopGEHR-537
DESK-US-056As a manager, I want operational/clinical reports via server execution with export/pagination on desktop.ReportingREQ-DESK-FR-071DESK-EPIC-09REQ-DESK-FR-071baselineehr-desktopGEHR-538
DESK-US-057As an admin, I want read-only cached labels for org structure when offline for navigation.AdminREQ-DESK-FR-072DESK-EPIC-09REQ-DESK-FR-072baselineehr-desktopGEHR-539
DESK-US-058As platform ops, I want admin mutations to require explicit idempotent APIs — never silent queue for dangerous admin writes.Admin safetyREQ-DESK-FR-072; explicit design per admin module.DESK-EPIC-09REQ-DESK-FR-072baselineehr-desktopGEHR-540
DESK-US-059As a user, I want cloud AI features to call only Kong → ai-orchestrator with JWT and tenant policy.Cloud AIREQ-DESK-FR-080; FR-DSK-012; specs/modules/ai-orchestrator/DESK-EPIC-10REQ-DESK-FR-080; FR-DSK-012baselineehr-desktopGEHR-541
DESK-US-060As a user, I want optional local ONNX inference in main/worker with IPC timeouts and redaction.Local AIREQ-DESK-FR-081; TR-DSK-081–083DESK-EPIC-10REQ-DESK-FR-081; TR-DSK-081baselineehr-desktopGEHR-542
DESK-US-061As a user, I want semantic search (if offered) to respect tenant access-policy and licensing.SearchREQ-DESK-FR-082DESK-EPIC-10REQ-DESK-FR-082baselineehr-desktopGEHR-543
DESK-US-062As compliance, I want order/diagnosis suggestions to be non-authoritative with explicit accept and audit.CDS AIREQ-DESK-FR-083DESK-EPIC-10REQ-DESK-FR-083baselineehr-desktopGEHR-544
DESK-US-063As a user, I want long clinical tables virtualized to maintain UI performance.PerfREQ-DESK-NFR-001DESK-EPIC-11REQ-DESK-NFR-001baselineehr-desktopGEHR-545
DESK-US-064As a user, I want heavy SQLite operations off the UI thread where appropriate.PerfREQ-DESK-NFR-002DESK-EPIC-11REQ-DESK-NFR-002baselineehr-desktopGEHR-546
DESK-US-065As a regional user, I want RTL/LTR, keyboard navigation, and compact density per EHR desktop TR/FR.A11yREQ-DESK-NFR-040; TR-DSK-070–076; E2E RTLDESK-EPIC-11REQ-DESK-NFR-040; TR-DSK-075baselineehr-desktopGEHR-547
DESK-US-066As privacy, I want optional crash reporting opt-in with no PHI in payloads.TelemetryREQ-DESK-NFR-050DESK-EPIC-11REQ-DESK-NFR-050baselineehr-desktopGEHR-548
DESK-US-067As a user, I want lazy-loaded route bundles and entitlement refresh without full restart when feasible.Lazy + entitlementsREQ-DESK-NFR-052; REQ-DESK-FR-096DESK-EPIC-11REQ-DESK-NFR-052baselineehr-desktopGEHR-549
DESK-US-068As release engineering, I want CI smoke on Win/macOS/Linux and documented corporate proxy behavior for Kong.Cross-platformREQ-DESK-NFR-030–031DESK-EPIC-11REQ-DESK-NFR-030–031baselineehr-desktopGEHR-550