Skip to main content
Version: 3.0.1

STD: IC Qualitative Serum Rule (PICQUAL_SERUM)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/rules/rule-ic-qual-serum.md Rule Name: PICQUAL_SERUM Domain: RULES-ICQUALSERUM


Overview

This document specifies tests for the IC Qualitative Serum rule (PICQUAL_SERUM) using decision tables and test vectors. The rule evaluates Internal Control (IC) validity for qualitative patient samples with Serum specimen type using a two-stage evaluation approach.

Rule Characteristics:

  • Pure business logic (no UI)
  • Two-stage evaluation: IC CT threshold check, then non-IC observation check
  • Fixed IC CT threshold of 35 cycles
  • Error code generation for suspected inhibition

Test Method: TM-API (per Test Plan section 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 IDTitleConditionsTest VectorsCoverageGaps
REQ-RULES-ICQUALSERUM-001Evaluate IC Validity for Qualitative Serum Samples812100%None

Totals: 1 REQ, 8 Conditions, 12 Test Vectors, 100% Coverage


REQ-RULES-ICQUALSERUM-001: Evaluate IC Validity for Qualitative Serum Samples

Input Variables

VariableTypeValid ValuesDescription
well.specimen_typestringSerumSpecimen type (rule only applies to Serum)
well.sample_typestringQualitativeSample type (rule only applies to Qualitative)
obs_ic.ctfloat0-50IC observation cycle threshold value
obs_nonic[].ctfloat0-50Non-IC observation CT values (array)
config.cutofffloatAssay-definedCT value above which observation is negative
config.ic_ct_thresholdfloat35Maximum acceptable IC CT for direct pass

Output Variables

VariableTypeDescription
well.statusstringPass or Fail
well.errorstring?Error code (null if Pass, ICQUAL_INHN if Fail)

Decision Table: IC CT Threshold Evaluation

Tests the primary IC CT check (Stage 1 of two-stage evaluation).

TVobs_ic.ctexpected_statusexpected_errorCovers
TV-001-00132PassnullAC: IC CT below threshold passes
TV-001-00235PassnullAC: IC CT at threshold boundary passes (inclusive)
TV-001-00334.99PassnullAC: IC CT just below threshold passes
TV-001-00435.01(proceed to Stage 2)(depends on non-IC)AC: IC CT above threshold triggers non-IC check

Decision Table: Non-IC Observation Evaluation (Stage 2)

Tests the secondary evaluation when IC CT > 35.

TVobs_ic.ctobs_nonic[].ctconfig.cutoffnonic_statusexpected_statusexpected_errorCovers
TV-001-00538[28]35[Pos]PassnullAC: IC CT > 35, one non-IC positive, passes
TV-001-00638[45, 42]35[Neg, Neg]FailICQUAL_INHNAC: IC CT > 35, all non-IC negative, error
TV-001-00738[28, 42]35[Pos, Neg]PassnullAC: IC CT > 35, some non-IC positive, passes
TV-001-00840[35]35[Pos]PassnullAC: Non-IC at cutoff boundary is positive
TV-001-00940[35.01]35[Neg]FailICQUAL_INHNAC: Non-IC above cutoff is negative

Decision Table: Non-IC Classification Logic

Tests the classification of non-IC observations against cutoff.

TVobs_nonic.ctconfig.cutoffclassificationCovers
TV-001-0102835PositiveAC: CT <= cutoff is positive
TV-001-0113535PositiveAC: CT at cutoff boundary is positive (inclusive)
TV-001-0123635NegativeAC: CT > cutoff is negative

Decision Table: Scope Validation

Tests that the rule only applies to qualitative serum samples.

TVspecimen_typesample_typerule_appliesCovers
TV-001-013SerumQualitativetrueAC: Rule applies to qualitative serum
TV-001-014PlasmaQualitativefalseAC: Rule does not apply to non-serum
TV-001-015SerumQuantitativefalseAC: Rule does not apply to non-qualitative

Decision Table: Complete Scenario Coverage

End-to-end test scenarios combining all conditions.

TVspecimen_typesample_typeobs_ic.ctobs_nonic[].ctcutoffexpected_statusexpected_errorCovers
TV-001-016SerumQualitative32[28, 42]35PassnullAC: IC valid, rule terminates early
TV-001-017SerumQualitative35[42, 45]35PassnullAC: IC at boundary, passes regardless of non-IC
TV-001-018SerumQualitative38[28, 42]35PassnullAC: IC high, positive non-IC overrides
TV-001-019SerumQualitative38[42, 45]35FailICQUAL_INHNAC: IC high, all non-IC negative, inhibition error

Test File Locations

RequirementTest FileMethodAutomation Status
REQ-RULES-ICQUALSERUM-001tests/Unit/Rules/PicqualSerumRuleTest.phpTM-APIAutomated

Traceability to Existing Tests

RequirementJira TestsStatus
REQ-RULES-ICQUALSERUM-001BT-5191Existing

Gap Analysis

Identified Gaps

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

Boundary Value Coverage

BoundaryTest VectorVerified
IC CT = 35 (threshold)TV-001-002Yes
IC CT = 35.01 (just above)TV-001-004, TV-001-009Yes
Non-IC CT = cutoff (boundary)TV-001-008, TV-001-011Yes
Non-IC CT = cutoff + 0.01TV-001-009, TV-001-012Yes

Error Condition Coverage

Error ConditionTest VectorVerified
ICQUAL_INHN (suspected inhibition)TV-001-006, TV-001-009, TV-001-019Yes