Inhibition CT Rule (INH)
Version: v3.0.0 Status: Normative (text), Illustrative (diagrams only) Scope: INH rule for detecting potential inhibition via IC CT deviation from negative control baseline Domain: RULES-INHCT Precedence: Part of IC combined outcomes feature set
Statement
The system shall detect potential inhibition in PCR reactions by comparing Internal Control (IC) CT values against negative control baselines and flagging observations that exceed configured thresholds.
The INH rule evaluates IC-type observations against the average CT of valid negative controls for the same mix. When the CT delta exceeds the configured ct_inhibition_delta, the observation receives IC_FAILED. The rule supports fallback mixes when no negative controls exist for the original mix, respects role exclusion flags, and assigns IC_RULE_NO_NC_IN_RUN when no valid baseline can be established.
Quick Reference
| ID | Core Behavior | Priority | Status |
|---|---|---|---|
| REQ-RULES-INHCT-001 | Flags IC observation when CT exceeds threshold | HIGH | Draft |
| REQ-RULES-INHCT-002 | Calculates NC IC CT baseline with exclusions | HIGH | Draft |
| REQ-RULES-INHCT-003 | Uses fallback mixes when original has no NC | MEDIUM | Draft |
| REQ-RULES-INHCT-004 | Excludes marked roles from IC delta check | MEDIUM | Draft |
| REQ-RULES-INHCT-005 | Assigns NO NC IN RUN error when no baseline exists | HIGH | Draft |
Key Integration Points: Target Configuration, Control Label Mapping, Run Import, Problem Code System
Rule Summary
| Property | Value |
|---|---|
| Name | INH (Inhibition CT) |
| Feature Set | QUEST new IC combined outcomes (Epic BT-3865) |
| Triggers | When evaluating IC-type observations |
| Output | IC_FAILED problem or IC_RULE_NO_NC_IN_RUN error |
Rule Flowchart (Illustrative)
This diagram illustrates the INH rule evaluation logic. NC selection, fallback resolution, and baseline calculation follow the paths shown.
Definitions
| Term | Definition |
|---|---|
| IC (Internal Control) | A control target type used to verify PCR reaction integrity |
| CT (Cycle Threshold) | The cycle number at which fluorescence crosses the detection threshold |
| ct_inhibition_delta | Configured threshold for maximum allowed CT deviation from baseline |
| NC (Negative Control) | Control wells used to establish baseline CT values |
| NTC (No Template Control) | A type of negative control without template DNA |
| Fallback Control | Backup mix controls used when primary mix lacks negative controls |
| IC_FAILED | Problem code indicating IC observation CT exceeds inhibition threshold |
| IC_RULE_NO_NC_IN_RUN | Error code indicating no usable negative controls for INH evaluation |
Assumptions
- Target configurations include ct_inhibition_delta values for IC-type targets
- Control label mapping is configured with role definitions and exclusion flags
- Run data includes well observations with CT values and target type assignments
- Negative control wells are identifiable by role assignment
Requirements
Core INH Rule Evaluation (REQ-RULES-INHCT-001)
FR-INHCT-001: Flag IC Observation When CT Exceeds Inhibition Threshold
The system shall flag an IC observation with IC_FAILED problem when the observation CT exceeds the configured CT inhibition delta from the negative control IC CT average.
Acceptance Criteria
Core Threshold Logic:
- Apply the formula: ABS([IC observation CT] - [NC IC CT average for same Mix]) > ct_inhibition_delta
- Given a well with IC observation CT=20, negative control IC CT=25, and ct_inhibition_delta=4, the observation shall receive IC_FAILED problem (delta=5 > threshold=4)
- Given an IC observation where the CT delta is within the threshold, no problem shall be assigned
Target Type Filtering:
- Evaluate only observations associated with IC-type targets
- Non-IC target observations shall not be evaluated by this rule
- Given a well with non-IC target type observation, the observation shall not receive IC_FAILED problem regardless of CT values
Configuration Source:
- The ct_inhibition_delta value shall be obtained from the target configuration
Trace: Source: 3.0.0-Inhibition_CT rule (Row 1, Row 4) | Jira: BT-3876, BT-3898 | Tests: See scenarios
Baseline Calculation (REQ-RULES-INHCT-002)
FR-INHCT-002: Calculate Negative Control IC CT Baseline
The system shall calculate the negative control IC CT baseline as the average of valid negative control IC CT values, excluding controls with errors or resolutions.
Acceptance Criteria
Average Calculation:
- When multiple negative controls exist for a mix, their IC CT values shall be averaged
- Given two negative controls with CT=25 and CT=23 for the same mix, the average CT=24 shall be used for comparison
Exclusion Rules:
- Exclude controls with error status from the average calculation
- Exclude controls with resolution status from the average calculation
- Given negative controls where one has an error status, only non-error controls shall be included in the average
- Given negative controls where one has a resolution status, only non-resolved controls shall be included in the average
Threshold Boundary:
- Given a well with IC CT=20 and two valid negative controls with CT=25 and CT=23 (average=24), with ct_inhibition_delta=4, no problem shall be assigned (delta=4 equals threshold, not greater than)
Trace: Source: 3.0.0-Inhibition_CT rule (Row 2, Row 3) | Jira: - | Tests: See scenarios
Fallback Controls (REQ-RULES-INHCT-003)
FR-INHCT-003: Use Fallback Control Mixes for IC CT Baseline
The system shall use fallback control mixes for IC CT baseline calculation when no negative controls are available for the original mix.
Acceptance Criteria
Fallback Activation:
- Fallback controls shall only be used when zero negative controls exist for the original mix
- Given a control label mapping with backup mixes configured and no negative controls for the original mix, fallback mix controls shall be used for IC CT baseline calculation
- The system shall obtain fallback mix definitions from the control label mapping configuration
Fallback Evaluation:
- Given a well in Mix B with no Mix B negative controls but Mix A configured as backup with NC CT=30, and well observation IC CT=25 with ct_inhibition_delta=4, IC_FAILED shall be assigned (delta=5 > threshold=4)
Original Mix Priority:
- When at least one negative control is available for the original mix, the system shall not use fallback controls
- Given at least one negative control available for the original mix and fallback mixes configured, only original mix controls shall be used for baseline calculation
- Given a well in Mix B with one Mix B negative control available, the result shall be based on original mix controls only (problem is null when within threshold)
Trace: Source: 3.0.0-INH Rule - Consider Fallback Controls (Row 1, Row 2) | Jira: BT-4458 | Tests: See scenarios
Role Exclusion (REQ-RULES-INHCT-004)
FR-INHCT-004: Exclude Roles from IC Delta Check
The system shall exclude roles marked with "Exclude from IC delta check" from INH rule evaluation.
Acceptance Criteria
Exclusion Behavior:
- Given a role with "Exclude from IC delta check: true" and wells assigned that role, those wells shall not be used as negative controls for baseline calculation
- Given Role A with "Exclude from IC delta check: true" as the only NC role, when a patient well is evaluated, the patient well shall not receive IC_FAILED (no valid baseline exists)
- The system shall treat roles with "Exclude from IC delta check" set to true as if they do not exist for INH rule purposes
Inclusion Behavior:
- Given a role with "Exclude from IC delta check: false" and wells assigned that role, those wells shall be included as negative controls for baseline calculation
- Given Role A with "Exclude from IC delta check: false" as NC role with CT=30, and patient well IC CT=25 with ct_inhibition_delta=4, the patient well shall receive IC_FAILED (delta=5 > threshold=4)
Configuration:
- The exclusion flag shall be configured per role in the control label mapping
- Roles with "Exclude from IC delta check" not set shall be treated as false (included in evaluation)
Trace: Source: 3.0.0-INH Rule - Exclude marked roles for excluding CT delta check (Row 1, Row 2) | Jira: BT-5287 | Tests: See scenarios
Error Handling (REQ-RULES-INHCT-005)
FR-INHCT-005: Assign NO NC IN RUN Error When No Valid Negative Control Exists
The system shall assign IC_RULE_NO_NC_IN_RUN error when no valid negative control can be found for INH rule evaluation.
Acceptance Criteria
Error Trigger Conditions:
- Given all negative control roles (NC, NTC) are configured with "Exclude from IC delta check: true", patient wells shall receive IC_RULE_NO_NC_IN_RUN error
- Given role NC with "excluded from ic check: true" and role NTC with "excluded from ic check: true", when importing a run with Well A1 (Patient), Well A2 (NTC), Well A3 (NC), Well A1 shall receive IC_RULE_NO_NC_IN_RUN error
Error Scope:
- The IC_RULE_NO_NC_IN_RUN error shall be applied to patient/sample wells that cannot be evaluated
Non-Error Case:
- Given role NC with "excluded from ic check: false" and role NTC with "excluded from ic check: true", when importing a run with Well A1 (Patient), Well A2 (NTC), Well A3 (NC), Well A1 shall not receive IC_RULE_NO_NC_IN_RUN error (NC is valid)
Error Handling
| Condition | Response |
|---|---|
| All NC roles excluded from IC check | Apply IC_RULE_NO_NC_IN_RUN to affected patient wells |
| No negative controls in run | Apply IC_RULE_NO_NC_IN_RUN to affected patient wells |
| Fallback controls also unavailable | Apply IC_RULE_NO_NC_IN_RUN to affected patient wells |
Trace: Source: 3.0.0-INH Rule - Set NO NC IN RUN error if no neg control found (Row 1, Row 2) | Jira: BT-5287 | Tests: See scenarios
Configuration Options
| Option | Default | Description | Affects |
|---|---|---|---|
ct_inhibition_delta | (per target) | Threshold for CT deviation from NC average | REQ-RULES-INHCT-001 |
exclude_from_ic_delta_check | false | Flag to exclude role from INH rule evaluation | REQ-RULES-INHCT-004 |
backup_mixes | [] | List of fallback mixes for control lookup | REQ-RULES-INHCT-003 |
UI Notes (Illustrative)
REQ-RULES-INHCT-001 Display
- CT value is displayed in red when IC_FAILED is applied
- Tooltip displays "Inhibited" on hover over the flagged CT value
Implementation (Illustrative)
| Component | Location | Purpose |
|---|---|---|
| InhRule | Analyzer/Rules/InhRule.php | Inhibition CT detection - NC baseline calculation, fallback controls, role exclusion |
Traceability Matrix
| Requirement | Title | Verification | Implementation | Test Cases | Status |
|---|---|---|---|---|---|
| REQ-RULES-INHCT-001 | Flag IC Observation When CT Exceeds Threshold | Test | InhRule.php | See scenarios | Draft |
| REQ-RULES-INHCT-002 | Calculate Negative Control IC CT Baseline | Test | InhRule.php | See scenarios | Draft |
| REQ-RULES-INHCT-003 | Use Fallback Control Mixes | Test | InhRule.php | See scenarios | Draft |
| REQ-RULES-INHCT-004 | Exclude Roles from IC Delta Check | Test | InhRule.php | See scenarios | Draft |
| REQ-RULES-INHCT-005 | Assign NO NC IN RUN Error | Test | InhRule.php | See scenarios | Draft |
Notes
- The INH rule is part of the QUEST new IC combined outcomes feature set (Epic BT-3865)
- This rule helps identify potential inhibition in PCR reactions that could affect result reliability
- The rule determines if the IC is in the range of the NEC IC (Negative Control Internal Control)
Acceptance Tests
Test: REQ-RULES-INHCT-001
Test: Core INH Rule Trigger
Given: Mix A with Target A (type: IC, ct_inhibition_delta: 4)
And: Well A1 with observation CT = 20
And: Negative Control A2 with observation CT = 25
When: Well A1 observation runs through INH Rule
Then: Observation gets problem: IC_FAILED
And: CT value is marked as red
And: Hover over CT shows message: "Inhibited"
Test: Non-IC Target Exclusion
Given: Well A1 with observation CT = 20, target type = null (non-IC)
And: Negative Control A2 with observation CT = 25, target type = null (non-IC)
When: Well A1 observation runs through INH Rule
Then: Observation does NOT get IC_FAILED problem
Test: REQ-RULES-INHCT-002
Test: Average Comparison
Given: Mix A with Target A (ct_inhibition_delta: 4)
And: Well A1 with observation CT = 20
And: Negative Control A2 with observation CT = 25
And: Negative Control A3 with observation CT = 23
And: Average NC CT = (25 + 23) / 2 = 24
And: Delta = |20 - 24| = 4 (NOT > 4)
When: Well A1 observation runs through INH Rule
Then: Observation does NOT get a problem
Test: Error/Resolved Control Exclusion
Given: Mix A with Target A (ct_inhibition_delta: 4)
And: Well A1 with observation CT = 20
And: Negative Control A2 with observation CT = 25 (valid)
And: Negative Control A3 with observation CT = 23, error: "Example Error" (excluded)
And: Negative Control A4 with observation CT = 22, resolution: "Example Resolution" (excluded)
And: Effective NC CT = 25 (only A2 used)
And: Delta = |20 - 25| = 5 > 4
When: Well A1 observation runs through INH Rule
Then: Observation gets problem: IC_FAILED
Test: REQ-RULES-INHCT-003
Test: Fallback Controls Used
Given: Mix A with Target A (dye: IC, ct_inhibition_delta: 4)
And: Control label mapping: Role A, Mix A, backup mixes: Mix B
And: Well A1 with Role = Patient, Mix = Mix B, IC CT = 25
And: Well A2 with Role = Role A, Mix = Mix A, IC CT = 30
When: Well A1 is executed through INH Rule
Then: Well A1 observation gets problem: IC_FAILED
Test: Fallback Not Used When Original Mix Has Controls
Given: Mix A with Target A (dye: IC, ct_inhibition_delta: 4)
And: Control label mapping: Role A, Mix A, backup mixes: Mix B
And: Well A1 with Role = Patient, Mix = Mix B, IC CT = 25
And: Well A2 with Role = Role A, Mix = Mix A, IC CT = 30
And: Well A3 with Role = Role A, Mix = Mix B, IC CT = 29
When: Well A1 is executed through INH Rule
Then: Well A1 observation problem = null (no problem)
Test: REQ-RULES-INHCT-004
Test: Role Exclusion
Given: Mix A with Target A (dye: IC, ct_inhibition_delta: 4)
And: Control label mapping: Role A, Exclude from IC delta check = true
And: Well A1 with Role = Patient, Mix = Mix B, IC CT = 25
And: Well A2 with Role = Role A, Mix = Mix A, IC CT = 30
When: Run is imported
Then: Well A1 observation does NOT get IC_FAILED problem
Test: Role Not Excluded
Given: Mix A with Target A (dye: IC, ct_inhibition_delta: 4)
And: Control label mapping: Role A, Exclude from IC delta check = false
And: Well A1 with Role = Patient, Mix = Mix B, IC CT = 25
And: Well A2 with Role = Role A, Mix = Mix A, IC CT = 30
When: Run is imported
Then: Well A1 observation gets IC_FAILED problem
Test: REQ-RULES-INHCT-005
Test: NO NC IN RUN Error Triggered
Given: Role NC with name = NC, excluded from IC check = true
And: Role NTC with name = NTC, excluded from IC check = true
And: Well A1 with Patient role
And: Well A2 with NTC role
And: Well A3 with NC role
When: Run is imported
Then: Well A1 gets IC_RULE_NO_NC_IN_RUN error
Test: NO NC IN RUN Not Triggered When NC Available
Given: Role NC with name = NC, excluded from IC check = false
And: Role NTC with name = NTC, excluded from IC check = true
And: Well A1 with Patient role
And: Well A2 with NTC role
And: Well A3 with NC role
When: Run is imported
Then: Well A1 does NOT get IC_RULE_NO_NC_IN_RUN error
Related Design Documents
| Design Document | Relevant Sections |
|---|---|
| SDD Algorithms | INH Rule Algorithm |
Appendix: Process Artifacts
Completion Checklist
- All requirements are capability-level (describe behavior, not UI)
- Requirement variants consolidated (no requirement explosion - N/A, no consolidation needed)
- 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 (none identified)
- Consolidations documented in Reviewer Notes with reversibility info
- Module can survive a full UI redesign unchanged
- Refinements do not introduce new capabilities
- Traceability matrix is complete
Reviewer Notes
No Consolidation Required
All 5 requirements in this domain represent distinct system capabilities:
| Requirement | Capability | Justification |
|---|---|---|
| REQ-RULES-INHCT-001 | Core threshold comparison logic | Primary rule trigger condition |
| REQ-RULES-INHCT-002 | Baseline calculation with exclusions | Distinct averaging algorithm |
| REQ-RULES-INHCT-003 | Fallback control behavior | Separate fallback resolution path |
| REQ-RULES-INHCT-004 | Role exclusion configuration | Independent configuration mechanism |
| REQ-RULES-INHCT-005 | Error condition handling | Distinct error state management |
Rationale: Each requirement addresses a different aspect of the INH rule evaluation process. Consolidation would obscure the distinct behaviors and reduce testability. Conservative approach applied per RULES domain guidance.
Reversibility: Source requirements preserved 1:1.
- Source:
output/pilot/rules/rule-inhibition-ct/rule-inhibition-ct-restructured.md - Original SRS:
output/srs/rules/rule-inhibition-ct.md