Reports
Version: v3.0.0 Status: Normative (text), Illustrative (diagrams only) Scope: Analytical and statistical report generation, viewing, and export for PCR run data Domain: REPORTS
Statement
The system shall generate, display, and export analytical and statistical reports from PCR run data, including Levey Jennings quality control charts, outcome trends analysis, and detailed outcomes reporting.
Reports provide quality control monitoring through Westgard-tracked control performance visualization, trend analysis with configurable alerting, and detailed outcome data for runs and wells. Users can create datasets through filter selection, navigate to related data, export to multiple formats, and receive notifications when alert thresholds are exceeded. Multi-site managers can view and filter data across sites, while role-based access controls feature availability.
Behavior Overview (Illustrative)
This diagram illustrates the high-level report generation behavior. It does not specify UI layout, styling, or interaction details.
Definitions
| Term | Definition |
|---|---|
| Levey Jennings (LJ) Chart | A quality control chart that displays control measurements over time with statistical limits |
| Westgard Rules | Statistical rules for evaluating quality control data, typically using mean and standard deviation bands |
| Standard Deviation (SD) | A measure of the amount of variation in a set of values |
| Coefficient of Variation (CV) | The ratio of the standard deviation to the mean, expressed as a percentage |
| Range | A named time period with associated Mean, SD, and CV values for Westgard tracking |
| Crossover Well | A well that appears in multiple contexts (e.g., repeated across runs) |
| Extraction Date | The date when sample extraction was performed on the instrument |
| Control | A sample with known expected outcome used for quality assurance |
| Outcome | The final result classification for a well (e.g., Positive, Negative, Invalid) |
| Aggregation | Combining data across multiple categories into summary statistics |
Assumptions
SME confirmed 2026-01-20.
- Users accessing report features have at minimum Junior User role permissions
- Run data exists in the system before reports can be generated
- At least one mix with Westgard-tracked controls is configured for Levey Jennings reporting
- Multi-site features are only visible to Manager role users when multi-site mode is enabled
- Archived runs are always excluded from reports and cannot be included unless unarchived first
Functional Requirements
Levey Jennings Reporting (REQ-REPORTS-001 through REQ-REPORTS-007)
FR-REPORTS-001 Generate Levey Jennings Report
The system shall generate a Levey Jennings report displaying Westgard-tracked control performance over time through chart visualization and tabular data.
Acceptance Criteria:
Chart Display:
- Display a Levey Jennings chart with control data points plotted against time
- Display statistical bands (Mean, +/-1SD, +/-2SD, +/-3SD) on the chart
- Y-axis range shall be +/- 4 standard deviations from mean
- Chart background colors shall indicate zones: Green (within 1SD), Yellow (1-2SD), Red (2-3SD), Grey (beyond 3SD)
- When multiple extraction instruments are selected, mean/SD lines shall be hidden and background colors disabled by default
Data Table:
- Display a data table with control measurements
- Table shall include: Date, Control Name, Range Name, Thermocycler, Extraction Instrument, CT/Quantity, Mean, SD, CV, Event
- Sort data by Extraction Date
- Provide page navigation for large datasets
Data Representation:
- Display controls based on error status: normal, resolved error, unresolved error
- Round CT values to nearest integer on display
- When Westgard settings have been updated, display a notification banner
Trace: Source: 3.0.0-Levey Jennings report (Rows 1, 2, 34-50, 51-58) | Tests: See scenarios
FR-REPORTS-002 Create Levey Jennings Dataset
The system shall allow users to create a filtered dataset for the Levey Jennings report by selecting criteria from filter controls.
Acceptance Criteria:
Filter Options:
- Provide filters for: Date Range, Mixes, Target, Control, Control Type, Thermocycler, Extraction Instrument, Range Name
- Control Type, Thermocycler, and Extraction Instrument shall support multi-select
Dynamic Behavior:
- Filter options shall update dynamically based on previous selections
- Filters with no available options shall be disabled
- Filters with only one option shall auto-select that option
- Generate the dataset upon user confirmation
Trace: Source: 3.0.0-Levey Jennings report (Rows 3-8, 69) | Tests: See scenarios
FR-REPORTS-003 Navigate from Levey Jennings Report
The system shall allow users to navigate from the Levey Jennings report to related data for detailed information.
Acceptance Criteria:
- Selecting a data point shall display detailed information for that point
- Selecting a table row shall navigate to the associated runfile
- Provide a control to clear all filter selections
- Support standard page navigation (back, breadcrumbs)
Trace: Source: 3.0.0-Levey Jennings report (Rows 59-62) | Tests: See scenarios
FR-REPORTS-004 Export Levey Jennings Report
The system shall allow users to export Levey Jennings report data to a file format.
Acceptance Criteria:
- Export shall include column headers matching displayed table columns
- Event column shall include Westgard configuration events
- Export shall include newly created ranges not yet visible in table
- Export shall include Site column when multi-site is enabled
Trace: Source: 3.0.0-Levey Jennings report (Rows 9-12, 66, 83) | Tests: See scenarios
FR-REPORTS-005 Manage Westgard Ranges
The system shall allow users to view, create, and edit Westgard statistical ranges for controls.
Acceptance Criteria:
Range Creation:
- Allow creation of new ranges with: Name, Start Date, CT/Quantity type, Mean, Standard Deviation
- Range names shall be unique within the control
- End date of a range shall be automatically set to the start date of the next range
Range Values:
- Mean shall be a positive number
- Standard Deviation shall be greater than zero
- CV shall be calculated and displayed as a percentage
- Benchmark CV shall be enterable manually
- Each range shall have single Mean/SD/CV values
Editing:
- Calculate Mean/SD based on visible graph data upon user request
- Existing ranges with associated controls shall have date range editing restricted
- Changes shall require user confirmation before saving
- Edit settings shall be disabled until all required filters are filled
Error Handling:
- Standard Deviation is zero or negative: Display validation error and prevent save
- Mean is negative: Display validation error and prevent save
- Duplicate range name: Display "Range name must be unique within this control"
Trace: Source: 3.0.0-Levey Jennings report (Rows 13-33, 64-65, 67-68, 70), 3.0.0-Settings - Validate SD | Tests: See scenarios
FR-REPORTS-006 Bulk Edit Westgard Limits
The system shall allow Senior and Super-Admin users to update Westgard limits for multiple controls simultaneously.
Acceptance Criteria:
- Updates shall apply to all Westgard limits matching the current selection
- Future unused Westgard limits shall be ignored during bulk updates
- Display warnings for invalid date ranges
- Require confirmation before applying changes to multiple extraction instruments
Trace: Source: 3.0.0-Levey Jennings report (Rows 71-76), 3.0.0-Enable edit westgard button, 3.0.0-Add create ranges form | Tests: [Pending]
FR-REPORTS-007 Configure Westgard Display Options
The system shall allow users to configure display options for the Levey Jennings chart.
Acceptance Criteria:
- Provide toggles for: Show Mean, Show SD Lines, Show Bands
- Provide a legend showing symbol meanings
- When multiple extraction instruments are selected, optionally display Westgard bands
- Provide secondary priority ordering configuration for Westgard-tracked controls
Trace: Source: 3.0.0-Levey Jennings report (Rows 52-58, 63), 3.0.0-Show westgard bands in LJ Report for multiple e-instruments, 3.0.0-Select Second Priority of ordering Westgards | Tests: [Pending]
Trends Reporting (REQ-REPORTS-008 through REQ-REPORTS-015)
FR-REPORTS-008 Generate Trends Report
The system shall generate a Trends report displaying outcome trends over time through chart visualization and tabular data.
Acceptance Criteria:
Chart Display:
- Display a trends chart with outcomes plotted over time
- X-axis shall display date/time based on selected interval (Day/Week/Month)
- Y-axis shall display count or percentage
- Outcome colors shall be consistent with system color scheme
Data Table:
- Display a data table with: Date, Outcome, Count, Percentage
- Control outcomes shall be included and distinguished from patient well outcomes
Trace: Source: 3.0.0-Trends Report (Rows 2-4, 27-29, 32-42) | Tests: See scenarios
FR-REPORTS-009 Create Trends Dataset
The system shall allow users to create a filtered dataset for the Trends report by selecting criteria from filter controls.
Acceptance Criteria:
Filter Options:
- Provide filters for: Date Range, Mix, Target, Outcome, Interval
- Outcome options shall be populated based on mix/target selection
Dynamic Behavior:
- Filter options shall update dynamically based on previous selections
- Filter selections shall be remembered during the session
- Extraction date shall be used for date filtering
- Generate the dataset upon user confirmation
Trace: Source: 3.0.0-Trends Report (Rows 14-23, 63-64), 3.0.0-Use Extraction Date Instead of Runfile Created At | Tests: See scenarios
FR-REPORTS-010 Navigate from Trends Report
The system shall allow users to navigate from the Trends report to related data for detailed information.
Acceptance Criteria:
- Selecting a data point or row shall navigate to the Outcomes Report with matching filters
- Support standard page navigation (back, breadcrumbs)
Trace: Source: 3.0.0-Trends Report (Rows 1, 47) | Tests: [Pending]
FR-REPORTS-011 Export and Print Trends Report
The system shall allow users to export and print the Trends report data.
Acceptance Criteria:
Export:
- Export to Excel shall be supported
- Export to CSV shall be supported
- Export shall include all displayed columns
Print:
- Print shall include headers, footers, and full table contents
- File names shall include report identifiers
Trace: Source: 3.0.0-Trends Report (Rows 5-13, 69) | Tests: [Pending]
FR-REPORTS-012 Aggregate Trends Data
The system shall allow users to view aggregated trends data across multiple dimensions.
Acceptance Criteria:
- Support aggregation per filter type
- Aggregated errors shall be displayable on the graph
- Y-axis range shall adjust to aggregated data
- Support splitting data by thermocycler
- Support splitting data by extraction instrument
- Provide an aggregated thermocycler option
Trace: Source: 3.0.0-Trends Report (Rows 24-25, 50-51, 55-62) | Tests: [Pending]
FR-REPORTS-013 Manage Trends Alerts
The system shall allow users to create, configure, and manage alerts based on trends data thresholds.
Acceptance Criteria:
Alert Configuration:
- Allow creation of alerts with: name, condition, threshold
- Alerts shall be configurable to target specific mixes, targets, and outcomes
- Alerts shall be enableable/disableable
- Alert threshold values shall be displayable on the trends chart
Scheduling:
- Alerts shall support scheduled evaluation (daily, weekly, monthly)
- Alerts shall support rolling time period evaluation
- Default view mode shall be changeable to rolling period
- Schedule frequency options shall include: daily, weekly, monthly
Trace: Source: 3.0.0-Alerts (Rows 1-26), 3.0.0-Trends Report Alert Form, 3.0.0-Show Alert Threshold Value in Alert Chart, 3.0.0-Scheduled Alerts, 3.0.0-On Rolling Period | Tests: See scenarios
FR-REPORTS-014 Trigger and Deliver Alert Notifications
The system shall evaluate alert conditions and notify users when thresholds are exceeded.
Acceptance Criteria:
Alert Evaluation:
- Evaluate alerts based on configured conditions
- Send notifications when alerts trigger
Notification Delivery:
- Notifications shall include relevant alert details
- Email notifications shall be sent to configured recipients
- Notifications shall be displayed in the system notification area
- Notifications shall include which alert triggered and timestamp
- Notifications shall be dismissible
Trace: Source: 3.0.0-Alerts (Rows 14-15, 24, 27-46) | Tests: See scenarios
FR-REPORTS-015 Handle Special Trends Data
The system shall handle special data conditions in the Trends report including wildcard placeholders and combined outcome statuses.
Acceptance Criteria:
- When outcomes contain wildcards or placeholders, display a generalized explanatory message
- Support displaying both exported and non-exported outcomes together
- Export status shall be indicated when relevant
Trace: Source: 3.0.0-Show Generalized Message for Outcomes, 3.0.0-Combine Exported and Non-Exported Outcomes | Tests: [Pending]
Outcomes Reporting (REQ-REPORTS-016 through REQ-REPORTS-020)
FR-REPORTS-016 Generate Outcomes Report
The system shall generate an Outcomes report displaying detailed outcome data for run files.
Acceptance Criteria:
Data Display:
- Display a table with: Run Name, Date, Mix, Target, Well, Patient ID, Outcome, Quantification
- Table shall be sortable by configurable column
- Dataset parameters shall be displayed
- Quantification column shall be shown dynamically when relevant
Detail Expansion:
- Rows shall be expandable to show additional well details
- Multiple rows shall be expandable simultaneously
Trace: Source: 3.0.0-Outcomes Report (Rows 18-19, 27-29), 3.0.0-Outcomes Report - Added Rows, 3.0.0-Dynamically Show Quant Column | Tests: See scenarios
FR-REPORTS-017 Create Outcomes Dataset
The system shall allow users to create a filtered dataset for the Outcomes report by selecting criteria from filter controls.
Acceptance Criteria:
Filter Options:
- Provide filters for: Date Range, Mix, Target, Outcome, Patient ID
- Filters shall be combinable
Dynamic Behavior:
- Filter options shall update dynamically based on previous selections
- Provide a control to clear all filter selections
- Extraction date shall be used for date filtering
- Generate the dataset upon user confirmation
Trace: Source: 3.0.0-Outcomes Report (Rows 14-17, 20-26), 3.0.0-Outcome Report - Use Extraction Date | Tests: [Pending]
FR-REPORTS-018 Navigate from Outcomes Report
The system shall allow users to navigate from the Outcomes report to related data for detailed information.
Acceptance Criteria:
- Selecting a table row shall navigate to the associated runfile
- Provide page navigation controls (next, previous, page numbers)
- Support standard page navigation (back, breadcrumbs)
Trace: Source: 3.0.0-Outcomes Report (Rows 34-37) | Tests: [Pending]
FR-REPORTS-019 Export and Print Outcomes Report
The system shall allow users to export and print the Outcomes report data.
Acceptance Criteria:
Export:
- Export to CSV shall be supported
- Export shall include all displayed columns
- Well comments shall be included in export
Print:
- Print shall include headers, footers, and full table contents
- Landscape orientation shall be supported for print
- File names shall include report identifiers
Trace: Source: 3.0.0-Outcomes Report (Rows 1-13), 3.0.0-Well Comments on Export, 3.0.0-Remove Portrait | Tests: [Pending]
FR-REPORTS-020 Configure Combined Outcomes
The system shall allow users to configure how combined outcomes are displayed and managed.
Acceptance Criteria:
- Sample type selection shall be available in combined outcome configuration
- Groups shall be normalizable for combined outcomes
- Combined outcomes shall support displaying both exported and non-exported outcomes together
Trace: Source: 3.0.0-Improve combined outcome section UI, 3.0.0-Show sample type drop down in combined outcome edit widget, 3.0.0-Import - Normalize Groups, 3.0.0-Combine Exported and Non-Exported Outcomes | Tests: [Pending]
Cross-Cutting Report Capabilities (REQ-REPORTS-021 through REQ-REPORTS-024)
FR-REPORTS-021 Multi-Site Report Access
The system shall allow Manager users to view and filter report data across multiple sites.
Acceptance Criteria:
Access and Filtering:
- Manager users shall have access to a Site filter (multi-select)
- Manager users shall see a Site column in report tables
- Charts shall differentiate data points by site
- Exports shall include Site column when multi-site is enabled
Data Handling:
- Multi-site data shall be aggregated when multiple sites are selected
- Alerts shall support site-specific or global scope
- Alert notifications shall indicate source site
- Super-admin shall not be able to modify Westgard settings across sites
Trace: Source: 3.0.0-Levey Jennings report (Rows 77-86), 3.0.0-Trends Report (Rows 65-68), 3.0.0-Alerts (Rows 47-51), 3.0.0-Multisite with Sorting Order Selector | Tests: See scenarios
FR-REPORTS-022 Exclude Archived Runs from Reports
The system shall exclude runs marked with archive tags from report datasets by default.
Acceptance Criteria:
- Archived runs shall not be included in Levey Jennings report datasets
- Archived runs shall not be included in Trends report datasets
- Archived runs shall not be included in Outcomes report datasets
- Exclusion behavior shall be consistent with archive mode settings
Trace: Source: 3.0.0-LJ Reports - Consider Archive Runs, 3.0.0-Trends Report - Consider Archive Runs, 3.0.0-Outcomes Report - Consider Archive Runs | Tests: See scenarios
FR-REPORTS-023 Display Crossover Wells in Reports
The system shall identify and distinctly display crossover wells in all report types.
Acceptance Criteria:
Levey Jennings:
- Crossover wells shall display a distinct indicator in Levey Jennings reports
- Crossover wells shall display an "R" tag indicator
Trends and Outcomes:
- Crossover wells shall be indicated in Trends report data
- Crossover wells shall display appropriate indicator in Outcomes reports
- Crossover wells shall be filterable or highlightable in Trends
General:
- Crossover wells shall be distinguishable from standard wells in both charts and tables
Trace: Source: 3.0.0-Crossover Wells, 3.0.0-Crossover Wells - Trends Report, 3.0.0-Outcomes Report - Crossover Wells | Tests: See scenarios
FR-REPORTS-024 Role-Based Report Access
The system shall control access to report features based on user role.
Acceptance Criteria:
- All authenticated users shall be able to view reports
- Role-based restrictions shall apply to specific features (e.g., Westgard editing)
- Feature access shall be consistent with system role definitions
- Senior and Super-Admin roles shall have access to bulk Westgard editing
- Manager role shall have access to multi-site features
Trace: Source: 3.0.0-Trends Report (Rows 43-46), 3.0.0-Outcomes Report (Rows 30-33) | Tests: See scenarios
Performance Requirements (REQ-REPORTS-025)
FR-REPORTS-025 Report Performance
The system shall optimize report generation and display for acceptable performance with large datasets.
Acceptance Criteria:
- Reports shall initially populate within acceptable time for typical datasets
- Reports shall repopulate within acceptable time after filter changes
- Large datasets shall use progressive loading or pagination
- Reports shall resize responsively when browser window is resized
Trace: Source: 3.0.0-Trends Report - Performance Problem Solutions, 3.0.0-Infinity / Lazy Loading | Tests: See scenarios
Configuration Options
| Option | Default | Description | Affects |
|---|---|---|---|
default_lj_unit | CT | Default unit for Levey Jennings Y-axis (CT or Quantity) | FR-REPORTS-001 |
lj_show_mean | true | Default visibility of mean line on chart | FR-REPORTS-007 |
lj_show_sd_lines | true | Default visibility of SD lines on chart | FR-REPORTS-007 |
lj_show_bands | true | Default visibility of color bands on chart | FR-REPORTS-007 |
trends_default_interval | Week | Default time interval for trends aggregation | FR-REPORTS-008 |
alert_email_enabled | true | Whether email notifications are sent for alerts | FR-REPORTS-014 |
archive_exclusion_default | true | Default behavior for excluding archived runs | FR-REPORTS-022 |
progressive_loading_threshold | 1000 | Row count threshold for enabling progressive loading | FR-REPORTS-025 |
Open Questions
| ID | Question | Owner | Status | Resolution |
|---|---|---|---|---|
| OQ-01 | Can Benchmark CV be manually overridden or is it always calculated? | - | Resolved | See FR-REPORTS-005 - Benchmark CV is configurable via Westgard range settings |
| OQ-02 | What is the full scope of combined outcome configuration options? | - | Deferred | Scope is defined in Combined Outcome Configuration (KITCFG). Requires RULES domain extraction review - TBD |
| OQ-03 | What are the specific performance thresholds (e.g., load time in seconds)? | - | Resolved | Use global NFRs (REQ-NFR-001: 3 seconds page load, REQ-NFR-002: 10 seconds for reanalysis) |
| OQ-04 | What is the definition of "large dataset" for progressive loading trigger? | - | Resolved | 10,000 records triggers progressive loading |
UI Notes (Illustrative)
FR-REPORTS-001 UI Specifications
- Page header displays "Levey Jennings"
- Top section: Title, view options
- Middle section: LJ chart/plot area
- Bottom section: Data table with controls
- Footer: Page navigation
FR-REPORTS-002 UI Specifications
- Dropdown options displayed in alphabetical order
- "Create Report" button generates the dataset
- Range Name filter replaces previous "Lot" terminology
FR-REPORTS-003 UI Specifications
- Hovering over a data point shows a graph popup with details
- Reset filters button clears all selections
FR-REPORTS-005 UI Specifications
- Settings panel/modal design for Westgard range editing
- Form layout with input fields for Name, Start Date, Mean, SD
- Calculate button to populate Mean/SD from visible data
- Save/Cancel buttons with Save enabled only when changes made
- Helper text explains editing restrictions for ranges with controls
FR-REPORTS-007 UI Specifications
- Legend widget showing symbol meanings
- Settings widget provides visibility toggles
FR-REPORTS-008 UI Specifications
- Report displayed in Reports menu as "Trends"
- Chart area above table area
- Menu bar displays action buttons
FR-REPORTS-013 UI Specifications
- Alert creation form with name, condition, threshold fields
- Alerts list showing all configured alerts
- Threshold line displayed on chart when alert selected
FR-REPORTS-016 UI Specifications
- Report displayed in Reports menu as "Outcomes"
- Expand button on each row for details
- Dataset parameters displayed above table
General UI Patterns
- Chart Presentation: LJ charts use color-coded bands for Westgard limits (red for out-of-range, yellow for warning)
- Table Layout: Results displayed in tabular format with sortable columns
- Navigation: Click-through to underlying run data
- Alert Indicators: Visual markers for triggered alerts
- Report Naming: Consistent naming convention across reports
- Export Options: Selection controls for export format
Implementation (Illustrative)
Backend Components
| Component | Type | Location | Requirements |
|---|---|---|---|
| LJReportController | Controller | code/app/Http/Controllers/LJReportController.php | FR-REPORTS-001, 002, 003, 005, 007, 023 |
| LJReportDownloadController | Controller | code/app/Http/Controllers/LJReportDownloadController.php | FR-REPORTS-004 |
| LJReportLotsController | Controller | code/app/Http/Controllers/LJReportLotsController.php | FR-REPORTS-002, 005 |
| RunLJReportsController | Controller | code/app/Http/Controllers/RunLJReportsController.php | FR-REPORTS-002, 003 |
| LjReportExport | Export | code/app/Exports/LjReportExport.php | FR-REPORTS-004 |
| TrendsReportController | Controller | code/app/Http/Controllers/TrendsReport/TrendsReportController.php | FR-REPORTS-008, 009, 010, 012, 015 |
| TrendsReportExportController | Controller | code/app/Http/Controllers/TrendsReportExportController.php | FR-REPORTS-011 |
| TrendsReportPrintController | Controller | code/app/Http/Controllers/TrendsReportPrintController.php | FR-REPORTS-011 |
| TrendsReportExport | Export | code/app/Exports/TrendsReportExport.php | FR-REPORTS-011 |
| TrendsReportAlertsController | Controller | code/app/Http/Controllers/TrendsReportAlertsController.php | FR-REPORTS-013, 014 |
| TrendsReportAlertController | Controller | code/app/Http/Controllers/TrendsReport/TrendsReportAlertController.php | FR-REPORTS-013, 014 |
| TrendsReportAlertEnableController | Controller | code/app/Http/Controllers/TrendsReportAlertEnableController.php | FR-REPORTS-013 |
| TrendsReportAlertDisableController | Controller | code/app/Http/Controllers/TrendsReportAlertDisableController.php | FR-REPORTS-013 |
| OutcomesReportController | Controller | code/app/Http/Controllers/OutcomesReportController.php | FR-REPORTS-016, 017, 018 |
| OutcomesReportExportController | Controller | code/app/Http/Controllers/OutcomesReportExportController.php | FR-REPORTS-019 |
| OutcomesReportPrintController | Controller | code/app/Http/Controllers/OutcomesReportPrintController.php | FR-REPORTS-019 |
| ReportingsController | Controller | code/app/Http/Controllers/ReportingsController.php | FR-REPORTS-016 |
Frontend Components
| Component Type | Location |
|---|---|
| View | views/LjReport.vue |
| View | views/TrendsReport.vue |
| View | views/OutcomesReport.vue |
| View | views/guided-trends-report/GuidedTrendsReportView.vue |
| View | views/guided-trends-report/GuidedTrendsReportFilterView.vue |
| View | views/guided-trends-report/GuidedTrendsReportWizardView.vue |
| Components | components/reports/ |
| Components | components/lj-report/ |
| Components | components/outcome-report/ |
| Components | components/trends-report/ |
Traceability Matrix
| Requirement | Title | Verification | Implementation | Test Cases | Status |
|---|---|---|---|---|---|
| REQ-REPORTS-001 | Generate Levey Jennings Report | Test | LJReportController | See scenarios | Draft |
| REQ-REPORTS-002 | Create Levey Jennings Dataset | Test | LJReportController, LJReportLotsController, RunLJReportsController | See scenarios | Draft |
| REQ-REPORTS-003 | Navigate from Levey Jennings Report | Test | LJReportController, RunLJReportsController | See scenarios | Draft |
| REQ-REPORTS-004 | Export Levey Jennings Report | Test | LJReportDownloadController, LjReportExport | See scenarios | Draft |
| REQ-REPORTS-005 | Manage Westgard Ranges | Test | LJReportController, LJReportLotsController | See scenarios | Draft |
| REQ-REPORTS-006 | Bulk Edit Westgard Limits | Test | [TBD] | [Pending] | Draft |
| REQ-REPORTS-007 | Configure Westgard Display Options | Test | LJReportController | [Pending] | Draft |
| REQ-REPORTS-008 | Generate Trends Report | Test | TrendsReportController | See scenarios | Draft |
| REQ-REPORTS-009 | Create Trends Dataset | Test | TrendsReportController | See scenarios | Draft |
| REQ-REPORTS-010 | Navigate from Trends Report | Test | TrendsReportController | [Pending] | Draft |
| REQ-REPORTS-011 | Export and Print Trends Report | Test | TrendsReportExportController, TrendsReportPrintController, TrendsReportExport | [Pending] | Draft |
| REQ-REPORTS-012 | Aggregate Trends Data | Test | TrendsReportController | [Pending] | Draft |
| REQ-REPORTS-013 | Manage Trends Alerts | Test | TrendsReportAlertsController, TrendsReportAlertEnableController, TrendsReportAlertDisableController | See scenarios | Draft |
| REQ-REPORTS-014 | Trigger and Deliver Alert Notifications | Test | TrendsReportAlertsController, TrendsReportAlertController | See scenarios | Draft |
| REQ-REPORTS-015 | Handle Special Trends Data | Test | TrendsReportController | [Pending] | Draft |
| REQ-REPORTS-016 | Generate Outcomes Report | Test | OutcomesReportController, ReportingsController | See scenarios | Draft |
| REQ-REPORTS-017 | Create Outcomes Dataset | Test | OutcomesReportController | [Pending] | Draft |
| REQ-REPORTS-018 | Navigate from Outcomes Report | Test | OutcomesReportController | [Pending] | Draft |
| REQ-REPORTS-019 | Export and Print Outcomes Report | Test | OutcomesReportExportController, OutcomesReportPrintController | [Pending] | Draft |
| REQ-REPORTS-020 | Configure Combined Outcomes | Test | [TBD] | [Pending] | Draft |
| REQ-REPORTS-021 | Multi-Site Report Access | Test | (Cross-cutting - site filtering in all controllers) | See scenarios | Draft |
| REQ-REPORTS-022 | Exclude Archived Runs from Reports | Test | (Cross-cutting - run filters in all controllers) | See scenarios | Draft |
| REQ-REPORTS-023 | Display Crossover Wells in Reports | Test | LJReportController | See scenarios | Draft |
| REQ-REPORTS-024 | Role-Based Report Access | Test | (Cross-cutting - middleware) | See scenarios | Draft |
| REQ-REPORTS-025 | Report Performance | Test | (Cross-cutting - pagination in all controllers) | See scenarios | Draft |
Notes
- Report naming has been updated from legacy conventions
- The "Range Name" terminology replaces previous "Lot" nomenclature
- Performance optimization for large datasets is tracked separately as non-functional requirement
Acceptance Tests
Test: REQ-REPORTS-001
Test: Verify Levey Jennings report generation
Given: User has at minimum Junior User role
And: Westgard-tracked controls exist in the system
When: User navigates to Reports > Levey Jennings
And: User selects filter criteria and generates report
Then: The system shall display a Levey Jennings chart
And: The system shall display control data points plotted against time
And: The system shall display statistical bands on the chart
And: The system shall display a data table with control measurements
Test: Verify chart statistical bands
Given: User on Levey Jennings page with data displayed
When: Observe the chart
Then: Mean line shall be displayed
And: +/- 1, 2, 3 SD lines shall be displayed
And: Background colors shall indicate zones (Green within 1SD, Yellow 1-2SD, Red 2-3SD, Grey beyond 3SD)
Test: Verify table columns
Given: User on Levey Jennings page with data displayed
When: Check the data table
Then: Table shall include columns: Date, Control Name, Range Name, Thermocycler, Extraction Instrument, CT/Quantity, Mean, SD, CV, Event
And: Data shall be sorted by Extraction Date
Test: REQ-REPORTS-002
Test: Create dataset with dynamic filter updates
Given: User on Levey Jennings page
When: User selects a Mix from dropdown
Then: Target dropdown shall update to show only targets in selected mix
And: Other downstream dropdowns shall update accordingly
And: Dropdowns with no options shall be disabled
Test: Auto-select single option
Given: User on Levey Jennings page
When: A dropdown has only one available option
Then: That option shall be automatically selected
Test: REQ-REPORTS-003
Test: Verify navigation to runfile
Given: User on Levey Jennings page with data displayed
When: User selects a table row
Then: User shall be navigated to the associated runfile
Test: Verify data point details
Given: User on Levey Jennings page with data displayed
When: User selects a data point on the chart
Then: Detailed information for that data point shall be displayed
Test: REQ-REPORTS-004
Test: Verify export includes all columns
Given: User on Levey Jennings page with data displayed
When: User exports the report
Then: Export file shall include column headers matching displayed table columns
And: Export shall include Event column with Westgard configuration events
Test: REQ-REPORTS-005
Test: Add new Westgard range
Given: User on Levey Jennings page with edit permissions
When: User creates new Westgard range with Name, Start Date, Mean, SD
And: User saves the range
Then: New range shall be created
And: Range shall be visible in the system
Test: Validation - SD must be positive
Given: User creating new Westgard range
When: User enters SD value of 0 or negative
Then: Validation error shall be displayed
And: Save shall be disabled
Test: Calculate Mean/SD from data
Given: User on Levey Jennings page with data displayed
When: User requests calculation of Mean/SD
Then: Mean and SD shall be populated based on visible graph data
Test: REQ-REPORTS-008
Test: Verify Trends report generation
Given: User has at minimum Junior User role
And: Run data exists in the system
When: User navigates to Reports > Trends
And: User selects filter criteria and generates report
Then: The system shall display a trends chart
And: The system shall display outcome trends plotted over time
And: The system shall display a data table with Date, Outcome, Count, Percentage
Test: REQ-REPORTS-009
Test: Verify filter options update dynamically
Given: User on Trends page
When: User selects a Mix from the filter
Then: Outcome options shall be populated based on the selected mix/target
And: Filter selections shall be remembered during the session
Test: REQ-REPORTS-013
Test: Create alert
Given: User on Trends alerts configuration
When: User creates new alert with name, condition, threshold
And: User saves alert
Then: Alert shall be created
And: Alert shall be visible in alerts list
Test: Alert threshold on chart
Given: Alert configured with threshold
When: User views Trends chart
Then: Threshold line shall be displayed on chart
Test: REQ-REPORTS-014
Test: Alert triggers notification
Given: Alert configured with threshold of 10
When: Trends data exceeds threshold
Then: Alert shall be triggered
And: Notification shall be sent to configured users
And: Notification shall include alert name and timestamp
Test: REQ-REPORTS-016
Test: Verify Outcomes report generation
Given: User has at minimum Junior User role
And: Run data exists in the system
When: User navigates to Reports > Outcomes
And: User selects filter criteria and generates report
Then: The system shall display a table with Run Name, Date, Mix, Target, Well, Patient ID, Outcome, Quantification
And: Table shall be sortable
Test: Expand row for details
Given: User on Outcomes page with data displayed
When: User expands a row
Then: Additional well details shall be displayed
And: User shall be able to collapse the row
Test: REQ-REPORTS-021
Test: Manager sees site filter
Given: User logged in as Manager
And: Multi-site mode is enabled
When: User navigates to any report page
Then: Site filter shall be visible
And: Site column shall be visible in table
Test: Non-manager no site filter
Given: User logged in as Junior or Senior
When: User navigates to any report page
Then: Site filter shall not be visible
And: Site column shall not be visible
Test: REQ-REPORTS-022
Test: Archived runs excluded
Given: Some runs are marked with archive tags
When: User generates any report (LJ, Trends, or Outcomes)
Then: Archived runs shall not be included in report data
Test: REQ-REPORTS-023
Test: Crossover well indicator in LJ
Given: Run contains crossover wells
When: User views Levey Jennings report
Then: Crossover wells shall display "R" tag indicator
And: Crossover wells shall be distinguishable from standard wells
Test: REQ-REPORTS-024
Test: All users can view reports
Given: User logged in with any authenticated role
When: User navigates to Reports menu
Then: User shall be able to view Levey Jennings, Trends, and Outcomes reports
Test: Role restrictions for Westgard editing
Given: User logged in as Junior User
When: User views Levey Jennings report
Then: Westgard editing controls shall not be available
Test: REQ-REPORTS-025
Test: Large dataset loading
Given: Dataset with 10,000+ records
When: User generates report
Then: Report shall load with progressive loading
And: Initial display shall complete within acceptable time
Related Design Documents
| Design Document | Relevant Sections |
|---|---|
| SDD Architecture | Database Schema, API Layer |
| SDD Algorithms | Statistical Calculations |
Appendix: Process Artifacts
Completion Checklist
- All requirements are capability-level (describe behavior, not UI)
- Requirement variants consolidated (no requirement explosion)
- UI details are fully demoted to Illustrative section
- Configuration options are not encoded as requirements
- Acceptance criteria describe behavior, not UI mechanics
- Every requirement has acceptance criteria and source traceability
- Error handling addressed for I/O, validation, and external system requirements
- Open questions documented with owners assigned
- Consolidations documented in Reviewer Notes with reversibility info
- Module can survive a full UI redesign unchanged
- Refinements folded into Acceptance Criteria
- Traceability matrix is complete
- Implementation section documents code locations
Reviewer Notes
Consolidation Summary
The following items from the original source were consolidated during the initial SRS creation (not during this readability conversion):
| Original Item | Source Reference | Disposition |
|---|---|---|
| REQ-REPORTS-001 (Display LJ report) | 3.0.0-LJ Rows 1-2, 34-38, 51 | Merged -> REQ-REPORTS-001 |
| REQ-REPORTS-003 (Display LJ chart) | 3.0.0-LJ Rows 39-50, 52-58 | Merged -> REQ-REPORTS-001 |
| REQ-REPORTS-009 (Westgard ordering) | 3.0.0-Select Second Priority | Demoted -> REQ-REPORTS-007 AC |
| REQ-REPORTS-011 (Multi-instrument bands) | 3.0.0-Show westgard bands | Demoted -> REQ-REPORTS-007 AC |
Rationale: Displaying the LJ report and displaying the LJ chart are not separate capabilities - they are the same report interface. Chart display options and ordering priorities are configuration/refinements of the core display capability.
Requirement Count Summary
| Category | Source Count | SRS Count | Disposition |
|---|---|---|---|
| Levey Jennings | 12 | 7 | 5 consolidated |
| Trends | 23 | 8 | 15 consolidated (many were variants) |
| Outcomes | 10 | 5 | 5 consolidated |
| Cross-Cutting | - | 5 | Extracted from report-specific requirements |
| Total | 45 | 25 | 20 consolidated |
Reversibility: Source: output/pilot/restructured/reports.md
Readability Conversion Notes
This file was converted to the new SRS readability format on 2026-01-24. Changes made:
- Added Statement section (2 paragraphs describing core behavior)
- Added Behavior Overview mermaid flowchart marked "(Illustrative)"
- Grouped Acceptance Criteria by concern where applicable
- Moved all tests to end of document with back-links
- Changed "Non-Normative" to "Illustrative" throughout
- Added blank lines after
**Acceptance Criteria:**and*italic headers:* - Consolidated Open Questions into single table
- Reorganized Implementation section with Backend/Frontend sub-sections
Normative data preserved:
- All 25 REQ-REPORTS-* identifiers (as FR-REPORTS-*)
- All acceptance criteria (131 total ACs + 3 error handling rules)
- All traceability references
- All configuration options
- All test scenarios