Skip to main content
Version: 3.0.1

STD: Combined Outcomes Control Rule (COMBOUTCTRL)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/rules/rule-combined-outcomes-control.md Rule Name: COMBINED_OUTCOME_CONTROL Domain: RULES-COMBOUTCTRL


Overview

This document specifies tests for the Combined Outcomes Control rule using decision tables and test vectors. The rule extends the base COMBINED_OUTCOME rule with additional control conditions: role verification as a gate, error outcome handling with separate well and target error codes, and special result matching conditions including wildcards and classification discrepancy detection.

Rule Characteristics:

  • Pure business logic (no UI)
  • Role-based gating (role must match before other criteria)
  • Error-typed outcomes set error codes without LIMS status
  • Special result matching: Any (wildcard), Classification/Discrepancy, exact CLS
  • CT and quantity range boundaries (nullable = unbounded)
  • All targets within a Combined Outcome must match (AND logic)

Test Method: TM-API (per Test Plan - 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 IDTitleConditionsTest VectorsCoverageGaps
REQ-RULES-COMBOUTCTRL-001Combined Outcome Control Matching2248100%None

Totals: 1 REQ, 22 Conditions, 48 Test Vectors, 100% Coverage


REQ-RULES-COMBOUTCTRL-001: Combined Outcome Control Matching

Input Variables

VariableTypeValid ValuesDescription
config.rolestringNEC, PEC, Patient, ...Combined outcome control role (required)
obs.rolestringNEC, PEC, Patient, ...Observation role
config.resultstringAny, Classification/Discrepancy, Pos, Neg, AmbResult matching condition per target
obs.final_clsstringPos, Neg, AmbObservation final classification
obs.problemsarray[], [CLASSIFICATION]Observation problem flags
config.min_ctfloat?null, numericCT lower bound (null = unbounded)
config.max_ctfloat?null, numericCT upper bound (null = unbounded)
obs.ctfloatnumericObservation CT value
config.min_quantfloat?null, numericQuantity lower bound (null = unbounded)
config.max_quantfloat?null, numericQuantity upper bound (null = unbounded)
obs.quantityfloatnumericObservation quantity value
config.typestringNormal, ErrorOutcome type
config.well_error_codestring?null, Error_A, ...Well error code (conditional on Error type)
config.target_errorstring?null, Error_B, ...Run Target error code (optional)
targets[]arrayTarget configurationsArray of target result conditions

Output Variables

VariableTypeDescription
well.limsstring?LIMS outcome code (null if Error type)
well.error_codestring?Well error code (set if Error type)
target.error_codestring?Run Target error code (set if configured)
matchedboolWhether the combined outcome was assigned

Decision Table: Role Verification (Gate)

Role verification is the first gate condition. If role does not match, no other criteria are evaluated.

TVconfig.roleobs.rolematchedevaluation_continuesCovers
TV-COMBOUTCTRL-001PECPECtrueyesAC: Role match allows evaluation
TV-COMBOUTCTRL-002NECNECtrueyesAC: Role match allows evaluation
TV-COMBOUTCTRL-003NECPECfalsenoAC: Role mismatch skips outcome
TV-COMBOUTCTRL-004PECPatientfalsenoAC: Role mismatch skips outcome
TV-COMBOUTCTRL-005PatientNECfalsenoAC: Role mismatch prevents evaluation

Decision Table: Result Matching - Any (Wildcard)

When result == Any, the condition matches any observation regardless of classification.

TVconfig.resultobs.final_clsobs.problemsmatchedCovers
TV-COMBOUTCTRL-006AnyPos[]trueAC: "Any" matches Pos
TV-COMBOUTCTRL-007AnyNeg[]trueAC: "Any" matches Neg
TV-COMBOUTCTRL-008AnyAmb[]trueAC: "Any" matches Amb
TV-COMBOUTCTRL-009AnyPos[CLASSIFICATION]trueAC: "Any" matches with problem

Decision Table: Result Matching - Classification/Discrepancy

When result == Classification/Discrepancy, matches observations with CLASSIFICATION problem flag.

TVconfig.resultobs.final_clsobs.problemsmatchedCovers
TV-COMBOUTCTRL-010Classification/DiscrepancyAmb[CLASSIFICATION]trueAC: Discrepancy with problem flag
TV-COMBOUTCTRL-011Classification/DiscrepancyPos[CLASSIFICATION]trueAC: Discrepancy with problem flag
TV-COMBOUTCTRL-012Classification/DiscrepancyPos[]falseAC: No CLASSIFICATION problem
TV-COMBOUTCTRL-013Classification/DiscrepancyNeg[]falseAC: No CLASSIFICATION problem

Decision Table: Result Matching - Exact Classification

When result is a specific CLS value, matches observations with exact final classification.

TVconfig.resultobs.final_clsmatchedCovers
TV-COMBOUTCTRL-014PosPostrueAC: Exact CLS match
TV-COMBOUTCTRL-015PosNegfalseAC: CLS mismatch
TV-COMBOUTCTRL-016NegNegtrueAC: Exact CLS match
TV-COMBOUTCTRL-017AmbPosfalseAC: CLS mismatch

Decision Table: CT Range Matching

CT boundaries are inclusive. Null boundaries are unbounded.

TVconfig.min_ctconfig.max_ctobs.ctmatchedCovers
TV-COMBOUTCTRL-018nullnull35trueAC: No bounds = match any
TV-COMBOUTCTRL-019404241trueAC: Within bounds (inclusive)
TV-COMBOUTCTRL-020404240trueAC: At min boundary (inclusive)
TV-COMBOUTCTRL-021404242trueAC: At max boundary (inclusive)
TV-COMBOUTCTRL-022404239falseAC: Below min
TV-COMBOUTCTRL-023404243falseAC: Exceeds max
TV-COMBOUTCTRL-02440null50trueAC: Above min, no max
TV-COMBOUTCTRL-025null4230trueAC: No min, below max

Decision Table: Quantity Range Matching

Quantity boundaries follow same logic as CT. Null boundaries are unbounded.

TVconfig.min_quantconfig.max_quantobs.quantitymatchedCovers
TV-COMBOUTCTRL-026nullnull1000trueAC: No bounds = match any
TV-COMBOUTCTRL-02750015001000trueAC: Within bounds
TV-COMBOUTCTRL-0285001500500trueAC: At min boundary
TV-COMBOUTCTRL-02950015001500trueAC: At max boundary
TV-COMBOUTCTRL-0305001500499falseAC: Below min
TV-COMBOUTCTRL-03150015001501falseAC: Exceeds max
TV-COMBOUTCTRL-032500null2000trueAC: Above min, no max
TV-COMBOUTCTRL-033null1500100trueAC: No min, below max

Decision Table: Combined Criteria (AND Logic)

All criteria (role, result, CT, quantity) must match for outcome assignment.

TVrole_matchresult_matchct_in_rangeqty_in_rangematchedCovers
TV-COMBOUTCTRL-034truetruetruetruetrueAC: All criteria satisfied
TV-COMBOUTCTRL-035truetruetruefalsefalseAC: Quantity out of range
TV-COMBOUTCTRL-036truetruefalsetruefalseAC: CT out of range
TV-COMBOUTCTRL-037truefalsetruetruefalseAC: Result mismatch
TV-COMBOUTCTRL-038falsetruetruetruefalseAC: Role mismatch gates

Decision Table: Target Results AND Logic

All target result conditions within a Combined Outcome must be satisfied.

TVTarget A resultTarget A matchTarget B resultTarget B matchoutcome_assignedCovers
TV-COMBOUTCTRL-039PostrueAnytruetrueAC: All targets match
TV-COMBOUTCTRL-040PostrueNegfalsefalseAC: One target fails
TV-COMBOUTCTRL-041Classification/DiscrepancytrueAnytruetrueAC: Mixed conditions
TV-COMBOUTCTRL-042PosfalseAnytruefalseAC: First target fails

Decision Table: Error Outcome Assignment

Error-typed outcomes set error codes without setting LIMS status.

TVconfig.typeconfig.well_error_codeconfig.target_errorwell.limswell.error_codetarget.error_codeCovers
TV-COMBOUTCTRL-043NormalnullnullOUTCOME_AnullnullAC: Normal sets LIMS
TV-COMBOUTCTRL-044ErrorError_AnullnullError_AnullAC: Error sets well error only
TV-COMBOUTCTRL-045ErrorError_AError_BnullError_AError_BAC: Error sets both well and target error
TV-COMBOUTCTRL-046ErrorError_AError_AnullError_AError_AAC: Same error code for both

Decision Table: Error Handling

TVScenariobehaviorCovers
TV-COMBOUTCTRL-047No matching combined outcomeWell falls through to subsequent rulesAC: Error handling - no match
TV-COMBOUTCTRL-048Role mismatchSkip evaluation of remaining criteriaAC: Error handling - role mismatch

Traceability to Existing Tests

RequirementJira TestsStatus
REQ-RULES-COMBOUTCTRL-001BT-3661, BT-3879Existing

Gap Analysis

Identified Gaps

GapRequirementDescriptionPriorityOwner
None-All acceptance criteria covered by test vectors--

Remediation Plan

No gaps identified. All acceptance criteria from REQ-RULES-COMBOUTCTRL-001 are covered by the decision tables above.


Automation Status

Decision TableAutomation StatusNotes
Role VerificationAutomatedBT-3586
Result Matching - AnyAutomatedBT-3661
Result Matching - Classification/DiscrepancyAutomatedBT-3850, BT-3879
Result Matching - ExactAutomatedBT-3661
CT Range MatchingAutomatedBT-3661
Quantity Range MatchingAutomatedBT-3661
Combined CriteriaAutomatedBT-3661
Target Results AND LogicAutomatedBT-3661
Error Outcome AssignmentAutomatedBT-3661
Error HandlingAutomatedBT-3661