STD: WC Rule (Cross Talk) - DEPRECATED
This rule has been deprecated as of 2026-02-02.
The WC (Cross-Talk) rule was never implemented in the application codebase (no WCRule.php exists). This test specification is retained for historical reference only. No test coverage is required.
Version: v1.0.0 Status:
DraftDEPRECATED SRS Source:docusaurus/docs/rules/rule-wc.mdRule Name: WC (Cross Talk) Domain: RULES-WC
Overview
This document specifies tests for the WC (Cross Talk) rule using decision tables and test vectors. The rule detects cross-talk conditions in PCR wells where multiple non-IC targets test positive, marking affected samples for re-extraction.
Rule Characteristics:
- Pure business logic (no UI)
- Assay-specific (HSV, HTLV only)
- Sample-type filtering (patient samples only)
- Extraction status filtering (first extraction only)
- Target type filtering (non-IC targets only)
Test Method: TM-API (per Test Plan §3.3 - Rules use automated API tests)
Verification Approach: Rule verification is performed using data-driven test vectors. Each row in a decision table represents a complete verification scenario with defined inputs and expected outputs. This format enables exhaustive condition coverage while remaining concise and auditable.
Coverage Summary
| REQ ID | Title | Conditions | Test Vectors | Coverage | Gaps |
|---|---|---|---|---|---|
| REQ-RULES-WC-001 | Cross-Talk Detection | 7 | 18 | 100% | None |
Totals: 1 REQ, 7 Conditions, 18 Test Vectors, 100% Coverage
REQ-RULES-WC-001: Cross-Talk Detection
Input Variables
| Variable | Type | Valid Values | Description |
|---|---|---|---|
assay_type | string | HSV, HTLV, Other | Assay type from kit configuration |
sample_type | string | Patient, Control | Sample classification (patient vs control) |
extraction_status | string | First, Re-extraction | Whether this is first extraction or re-extraction |
positive_non_ic_count | int | 0, 1, 2+ | Count of positive non-IC targets in well |
ic_positive | bool | true, false | Whether IC (Internal Control) target is positive |
sample_type_determinable | bool | true, false | Whether sample type can be determined |
extraction_status_determinable | bool | true, false | Whether extraction status can be determined |
Output Variables
| Variable | Type | Description |
|---|---|---|
lims_result | string? | LIMS export result code (RXT when triggered, null otherwise) |
warning_generated | bool | Whether a well warning was generated |
warning_message | string? | Warning message content when generated |
rule_applied | bool | Whether the rule was evaluated (vs skipped) |
Decision Table: Assay Type Filtering
Tests that the rule only applies to HSV and HTLV assays.
| TV | assay_type | sample_type | extraction_status | positive_non_ic_count | rule_applied | lims_result | Covers |
|---|---|---|---|---|---|---|---|
| TV-001-001 | HSV | Patient | First | 2 | true | RXT | AC: HSV assay triggers rule |
| TV-001-002 | HTLV | Patient | First | 2 | true | RXT | AC: HTLV assay triggers rule |
| TV-001-003 | Other | Patient | First | 2 | false | null | AC: Non-HSV/HTLV assays excluded |
Decision Table: Sample Type Filtering
Tests that the rule only applies to patient samples.
| TV | assay_type | sample_type | extraction_status | positive_non_ic_count | rule_applied | lims_result | Covers |
|---|---|---|---|---|---|---|---|
| TV-001-004 | HSV | Patient | First | 2 | true | RXT | AC: Patient samples processed |
| TV-001-005 | HSV | Control | First | 2 | false | null | AC: Control samples excluded |
Decision Table: Extraction Status Filtering
Tests that the rule only applies to first-time extraction.
| TV | assay_type | sample_type | extraction_status | positive_non_ic_count | rule_applied | lims_result | Covers |
|---|---|---|---|---|---|---|---|
| TV-001-006 | HSV | Patient | First | 2 | true | RXT | AC: First extraction processed |
| TV-001-007 | HSV | Patient | Re-extraction | 2 | false | null | AC: Re-extractions excluded |
Decision Table: Positive Target Count Threshold
Tests the threshold condition (more than 1 positive non-IC target required).
| TV | assay_type | sample_type | extraction_status | positive_non_ic_count | rule_applied | lims_result | warning_generated | Covers |
|---|---|---|---|---|---|---|---|---|
| TV-001-008 | HSV | Patient | First | 0 | true | null | false | AC: Zero positives - no trigger |
| TV-001-009 | HSV | Patient | First | 1 | true | null | false | AC: One positive - no trigger |
| TV-001-010 | HSV | Patient | First | 2 | true | RXT | true | AC: Two positives - trigger |
| TV-001-011 | HSV | Patient | First | 3 | true | RXT | true | AC: Three+ positives - trigger |
Decision Table: IC Target Exclusion
Tests that IC (Internal Control) targets are excluded from the positive count.
| TV | positive_non_ic_count | ic_positive | effective_count | lims_result | Covers |
|---|---|---|---|---|---|
| TV-001-012 | 1 | false | 1 | null | AC: Single non-IC, IC negative - no trigger |
| TV-001-013 | 1 | true | 1 | null | AC: Single non-IC, IC positive - IC excluded from count |
| TV-001-014 | 2 | false | 2 | RXT | AC: Two non-IC, IC negative - trigger |
| TV-001-015 | 2 | true | 2 | RXT | AC: Two non-IC, IC positive - IC excluded, still triggers |
Decision Table: Warning Message Generation
Tests the warning message format when cross-talk is detected.
| TV | target_a | target_b | expected_warning | Covers |
|---|---|---|---|---|
| TV-001-016 | HSV-1 | HSV-2 | "HSV-1 and HSV-2 are both positive. Re-extract sample" | AC: Warning format with target names |
Decision Table: Error Handling (Skip Conditions)
Tests error handling when required data is undeterminable.
| TV | sample_type_determinable | extraction_status_determinable | assay_type | rule_applied | action | Covers |
|---|---|---|---|---|---|---|
| TV-001-017 | false | true | HSV | false | Skip + Log | AC: Sample type undeterminable - skip |
| TV-001-018 | true | false | HSV | false | Skip + Log | AC: Extraction status undeterminable - skip |
Test File Locations
| Requirement | Test File | Automation Status |
|---|---|---|
| REQ-RULES-WC-001 | tests/Unit/Rules/WCRuleTest.php | Automated |
Traceability to Existing Tests
| Requirement | Jira Tests | Status |
|---|---|---|
| REQ-RULES-WC-001 | — | Gap |
Gap Analysis
Identified Gaps
| Gap | Requirement | Description | Priority | Owner |
|---|---|---|---|---|
| GAP-001 | REQ-RULES-WC-001 | No Behat tests cover WC (cross-talk) rule; all 18 TVs are gaps | High | TBD |
Note: WC rule is specific to HSV/HTLV assays detecting multi-positive non-IC targets. Existing tests (BT-5576, BT-5842, BT-5183, BT-5837, BT-5300) test other rules, not WC.
Coverage Verification
All acceptance criteria from REQ-RULES-WC-001 are traced to test vectors:
| Acceptance Criteria | Test Vectors |
|---|---|
| Multiple non-IC positive → RXT | TV-001-010, TV-001-011 |
| HSV/HTLV assays only | TV-001-001, TV-001-002, TV-001-003 |
| First extraction only | TV-001-006, TV-001-007 |
| Patient samples only | TV-001-004, TV-001-005 |
| IC targets excluded | TV-001-012 through TV-001-015 |
| Zero positives no trigger | TV-001-008 |
| One positive no trigger | TV-001-009 |
| Warning message format | TV-001-016 |
| Sample type undeterminable handling | TV-001-017 |
| Extraction status undeterminable handling | TV-001-018 |