Test Catalog Management v2.5 — Delivery Plan (20 epics)
Test Catalog Management v2.5 — Delivery Plan
Updated: 2026-06-08
Author: Casey Iiams-Hauser
Status: Restructured to 1-mockup-per-epic shape (was 2 umbrella epics). Gallery PR merged. All 72 child stories filed (49 v1 + 23 v2).
TL;DR
The unified Test Catalog Management editor (v2.4 vision) is being delivered as 20 mockup-scoped epics + 1 sibling cross-feature story + 1 unified umbrella epic for tracking. Each epic owns one UI mockup. Sprint-sized work happens at the story level within each epic.
v1 wave (12 epics, 49 child stories): core editor + 9 functional sections + foundation work. Direct replacement for the legacy Test / Test Section / Panel / Method admin pages.
v2 wave (8 epics, 23 child stories): Labels, Reagents, Alerts, Reflex & Calc, Compliance + Sample Storage audit + Localization Hardening.
Sibling (1): Sample Storage info display propagation to Order Entry / Results / Validation screens (touches 3 non-catalog screens).
Umbrella for Mozzy: OGC-949 links to all 20 epics + sibling.
The 2 original umbrella epics (OGC-746 v1, OGC-759 v2) have been closed as superseded by this per-mockup shape.
v1 wave — 12 epics
When v1 ships, admins open Admin → Test Catalog Management and see a new list view with click-to-open rows, no Actions column, a collapsible filter bar (Section / Sample Type / Result Type / Status / Domain / AMR), URL-reflected state. Clicking any test opens a SideNav-routed editor with 9 sections (v2 entries are hidden until v2 ships). Legacy Test / Section / Panel / Method admin pages are decommissioned at v1 release. No feature flag.
Epic | Mockup | Children |
|---|---|---|
Schema Migrations + Backend Foundation + Legacy Decommission | 4 | |
Editor Scaffold + Permissions + States (SideNav, breadcrumb, header with Save / Save as new test / Cancel) | 5 | |
Test List View + Filters + Pagination | 4 | |
Basic Info section (Domain + AMR + status flags) | 4 | |
Sample & Results section (multi-component + per-component accordion + Result Interpretations + inline-add Unit) | 8 | |
Methods section (link + inline create + shortcodes) | 3 | |
Ranges section (Structured + Table + Visual views + Coverage Validation + Activation Acknowledgment modal) | 8 | |
Sample Storage section | 3 | |
Display Order section (drag-drop within sample type) | 3 | |
Panels section (typeahead picker + expandable rows + drag-drop position) | 3 | |
Terminology Mappings section | 2 | |
Analyzers section (read-only display) | 2 |
v1 total: 49 child stories. JQL: all v1 children
v1 sequencing
OGC-747 (schema migrations) must land first — everything else depends on it.
OGC-927 (editor scaffold) lands second — every section's UI mounts inside it.
OGC-928 (Test List View) is the entry surface for partners; lands alongside OGC-927.
OGC-749 (Sample & Results) unblocks OGC-751 (Ranges, via
component_id) — best handled as a pair.OGC-748 (Basic Info) is loosely coupled with OGC-751 (Ranges) via the Activation Acknowledgment modal — stub the gate, wire when OGC-751 lands.
OGC-750 / OGC-752 / OGC-753 / OGC-754 / OGC-755 / OGC-756 can all run in parallel after the foundation lands.
v2 wave — 8 epics, 23 child stories
Builds entirely on the v1 foundation; no schema rework beyond the v2 additions on OGC-760. The SideNav grows from 9 entries to 14 at v2 release.
Epic | Mockup | Child stories |
|---|---|---|
Test-Reagent linkage (backend — must land first within v2) | OGC-986 schema + entity / OGC-987 REST endpoints + permission gating | |
Labels section (4 fixed system presets) | OGC-988 linked presets table / OGC-989 global override toggle + preview / OGC-990 Order Entry aggregation rules | |
Reagents section (blocked by OGC-760) | OGC-991 linked reagents table + stock / OGC-992 Link Reagent modal / OGC-993 per-link inline edit + unlink | |
Alerts section (authoring here; delivery via Test Notification system) | OGC-994 rules DataTable + inline-expansion add / OGC-995 trigger condition (5 types) + adaptive value field / OGC-996 channels + recipients (5 types) / OGC-997 per-rule ack_required toggle | |
Reflex & Calc section (read-only cross-links) | OGC-998 Reflex Tests sub-section / OGC-999 Calculated Results sub-section | |
Compliance section (blocked by OGC-528; ENV/VECTOR only) | OGC-1000 DataTable + Group By + domain visibility / OGC-1001 Standard ComboBox + adaptive fields / OGC-1002 inline add/edit + value/operator/severity / OGC-1003 breach flag emission + Alerts integration | |
Sample Storage audit history (activates audit-write triggers) | OGC-1004 audit write triggers / OGC-1005 View change history modal | |
Localization Hardening | OGC-1006 get_localized_test_field() + API contract / OGC-1007 UI fallback indicators / OGC-1008 Bulk translation CSV export/import |
v2 total: 23 child stories. JQL: all v2 children
v2 sequencing
OGC-986 (test_reagent_link table) is the first OGC-760 ticket; OGC-987 can run in parallel once the entity is committed.
OGC-991/992/993 (Reagents) all depend on OGC-987 being merged.
OGC-996 (Alerts channels/recipients) is the dependency for OGC-1003 (Compliance breach → Alerts integration). Land Alerts before wiring Compliance's downstream alerting.
OGC-1000-1003 (Compliance) blocked by OGC-528 landing the compliance schema.
OGC-1006 (localization function + API) is the dependency for OGC-1007 (UI fallback indicators).
OGC-997 (per-rule acknowledgment) is no-op-until-built — the global Critical Result Acknowledgment workflow is a separate future feature, and the toggle exists as a hook.
Sibling cross-feature story
OGC-757 — Sample Storage info display propagation — Order Entry / Results entry / Validation screens (L)
Inherits the gap from closed OGC-48 (Sample Storage admin). Touches three non-catalog screens — Order Entry, Results entry, Validation — so it lives outside the Test Catalog Management editor epics. Spec'd as a shared "Sample Handling" card pattern with a snapshot-at-order-time data flow so historical orders don't change retroactively when admin updates a test's storage config.
Umbrella tracking epic
OGC-949 — Unified umbrella for Test Catalog Management v2.5. Assigned to Mozzy. Links to all 20 mockup epics + OGC-757 sibling. Use this for cross-wave reporting.
Closed during this work (with cross-reference comments)
Closed ticket | Why | Pointer |
|---|---|---|
OGC-746 | Old v1 umbrella epic — superseded by the 12-per-mockup v1 epics | List of new epics in closing comment |
OGC-759 | Old v2 umbrella epic — superseded by the 8 v2 per-mockup epics | List of new epics in closing comment |
OGC-929 | Over-split during restructure — not a separate mockup | Merged back into OGC-747 |
OGC-930 | Over-split — Result Interpretations is part of Sample & Results mockup | Merged back into OGC-749 |
OGC-931 | Over-split — Activation Ack modal is part of Ranges mockup | Merged back into OGC-751 |
OGC-758 | Over-split — Table + Visual views are alternative renderings of the Ranges mockup | Merged back into OGC-751 |
OGC-173 | Old vertical-tab redesign epic (pre-v2.2) | Superseded by OGC-746 (now also closed → OGC-747 et al.) |
OGC-174 | Old vertical-tab editor shell | Superseded by OGC-927 |
OGC-206 | Select List Results Management standalone | Folded into OGC-749 |
OGC-48 | Old Sample Storage admin spec | Folded into OGC-752 + display gap → OGC-757 |
Design artifacts (gallery — PR merged 2026-06-08)
All artifacts are now registered in the design gallery. Each of the 20 active epics + sibling has a "Design artifacts" comment in Jira pointing to the relevant files + section reference.
Source-of-truth FRS files:
test-catalog-requirements-v2.4.md— full vision FRS (~3,275 lines)test-catalog-requirements-v2.5.md— staging companion with v1/v2 tags + 11 health-check fixes (D-01 through D-11)test-catalog-v2.5-design-critique.md— 18-item critique with all resolutions appliedtest-catalog-v2.5-epic-restructure.md— the restructure plan that drove the current 20-epic shape
Mockup / visual preview:
test-catalog-preview-v2.5-v1.html— v1 visual preview; 9 sections functional; opens standalone in any browser. v2 sections will get their own previews when those epics enter sprint planning.
Historical references (kept for context):
test-catalog-v2.5-staging-review.md— original v1/v2 staging proposaltest-catalog-v2.5-v1-jira.md+test-catalog-v2.5-v2-jira.md— story breakdowns as initially filed under the old umbrella shape (now superseded by Jira itself)
Key design decisions worth remembering
No feature flag for v1. Direct replacement of legacy admin pages. Rollback is a release revert, not a runtime toggle.
v2 SideNav entries hidden in v1 (not "Coming Soon" stubs).
Coverage Validation: warn-and-acknowledge, not block. Activation Acknowledgment modal logs to
test_activation_acknowledgment. Patient-safety preserved by required acknowledgment; clinics that don't see every demographic (e.g., senior center, no infants) can proceed consciously.Alerts: authoring lives in Test Catalog, delivery via the shipped Test Notification system. No template/channel columns on
test_alert_rule.Analyzers tab is read-only — list derived from analyzer test-code mappings; edited at the analyzer's record.
Result Components FHIR mapping is locked — one Observation per component (not
Observation.component[]).Typeahead pickers everywhere (sample types, panels, units); drag-drop with keyboard alternatives everywhere reorder happens.
Save as new test… modal in the editor header handles the Duplicate workflow.
What's not in this delivery
Configurable Label Preset Management (custom dimensions, content fields, drag-drop reordering) — separate not-yet-written FRS. v2 Labels uses the 4 fixed system presets only.
Critical Result Acknowledgment workflow — separate global feature. Per-rule
acknowledgment_requiredtoggle exists in v2 Alerts (OGC-763 / OGC-997) but no-ops until the global workflow is built.Cross-test analytics, recall workflows, batch reagent-QC integration — future epics that consume the new linkage table from OGC-760.
Standalone Master Lists admin for select-list groups / presets / favorites — deferred to a future Master Lists FRS (was in scope of closed OGC-206).