Skip to main content
Version: Next

STD: Mixes Missing Rule (MIXMISS)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/rules/rule-mixes-missing.md Rule Name: MISSING_MIXES Domain: RULES-MIXMISS


Overview

This document specifies tests for the Mixes Missing rule using decision tables and test vectors. The rule identifies when wells are missing required mixes for combined outcome evaluation, assigns appropriate error codes, and manages re-analysis workflows when missing mixes become available.

Rule Characteristics:

  • Pure business logic (no UI)
  • Toggle-gated execution (mixes_missing toggle)
  • Cross-run resolution capability
  • Success criteria with multiple qualifying states
  • Status update precedence rules

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-MIXMISS-001Missing Mixes Detection1622100%None
REQ-RULES-MIXMISS-002Missing Mixes Information33100%None
REQ-RULES-MIXMISS-003Re-analysis Status55100%None
REQ-RULES-MIXMISS-004Rule Execution Ordering22100%None

Totals: 4 REQs, 26 Conditions, 32 Test Vectors, 100% Coverage


REQ-RULES-MIXMISS-001: Missing Mixes Detection

Input Variables

VariableTypeValid ValuesDescription
config.mixes_missingbooltrue, falseToggle to enable missing mixes check
config.allow_other_runsbooltrue, falseEnable cross-run resolution
config.mix_resultsarrayMix identifiersRequired mixes for combined outcome
well.mixstringMix identifierWell's mix assignment
well.accessionstringPatient identifierPatient accession number
well.error_typestring?null, Label Error, Error, Warning, InformationWell error type
well.lims_typestring?null, Information, Warning, ExcludeLIMS status type
well.error_codestring?null, COMBINED_MIXES_WELLS_MISSING, otherExisting error code
run_wellsarrayWell objectsWells in current run
history_wellsarrayWell objectsWells from previous runs

Output Variables

VariableTypeDescription
well.error_codestring?COMBINED_MIXES_WELLS_MISSING if mixes missing
well.missing_mixesarrayList of missing mix names
triggeredboolWhether rule was triggered

Decision Table: Toggle Behavior

TVconfig.mixes_missingmixes_completeerror_assignedCovers
TV-001-001truefalsetrueAC: Toggle enabled, mixes missing
TV-001-002truetruefalseAC: Toggle enabled, all mixes present
TV-001-003falsefalsefalseAC: Toggle disabled, no error regardless
TV-001-004falsetruefalseAC: Toggle disabled, no error

Decision Table: Successful Well Definition (Error Type)

TVwell.error_typewell.lims_typeis_successfulCovers
TV-001-005nullnulltrueAC: No errors = successful
TV-001-006nullInformationtrueAC: Information LIMS = successful
TV-001-007nullWarningfalseAC: Warning LIMS = not successful
TV-001-008nullExcludefalseAC: Exclude LIMS = not successful
TV-001-009Label ErrornullfalseAC: Label Error = not successful
TV-001-010ErrornullfalseAC: Error = not successful
TV-001-011WarningnullfalseAC: Warning = not successful
TV-001-012InformationnullfalseAC: Information error (non-LIMS) = not successful

Decision Table: Mixes Missing Error Exception

TVwell.error_codeis_successfulCovers
TV-001-013COMBINED_MIXES_WELLS_MISSINGtrueAC: Mixes missing error = successful
TV-001-014OTHER_ERRORfalseAC: Other error = not successful

Decision Table: Mix Presence Determination

TVconfig.mix_resultsrun_wells_mixessuccessful_wellsmixes_missingCovers
TV-001-015[A, B, C][A, B][A, B][C]AC: Missing mix identified
TV-001-016[A, B, C][A, B, C][A, B, C][]AC: All mixes present
TV-001-017[A, B][A, B][A][B]AC: Unsuccessful well = mix missing

Decision Table: Cross-Run Resolution Toggle

TVconfig.allow_other_runshistory_wellscurrent_wellssatisfiedCovers
TV-001-018true[Mix_B with COMBINED_MIXES_WELLS_MISSING][Mix_A]trueAC: History well satisfies
TV-001-019false[Mix_B with COMBINED_MIXES_WELLS_MISSING][Mix_A]falseAC: History disabled

Decision Table: Cross-Run Eligibility

TVhistory_well.error_codehistory_well.mixeligible_for_resolutionCovers
TV-001-020COMBINED_MIXES_WELLS_MISSINGBtrueAC: Has mixes missing error = eligible
TV-001-021nullBfalseAC: No error = not eligible
TV-001-022OTHER_ERRORBfalseAC: Other error = not eligible

REQ-RULES-MIXMISS-002: Missing Mixes Information

Input Variables

VariableTypeDescription
missing_mixesarrayList of missing mix names
error_message_templatestringMessage with wildcard placeholder

Output Variables

VariableTypeDescription
well.missing_mixesarrayPersisted list of missing mix names
well.outcome_messagestringPopulated message with mix names

Decision Table: Data Persistence and Display

TVmissing_mixesmessage_templatestored_mixesdisplayed_messageCovers
TV-002-001[Mix_B, Mix_C]"Missing: {mixes}"[Mix_B, Mix_C]"Missing: Mix_B, Mix_C"AC: Persisted and populated
TV-002-002[Mix_A]"Missing: {mixes}"[Mix_A]"Missing: Mix_A"AC: Single mix
TV-002-003[]"Missing: {mixes}"[](no error)AC: No missing = no message

REQ-RULES-MIXMISS-003: Re-analysis Status

Input Variables

VariableTypeValid ValuesDescription
run.statusstringNo Resolution, Reanalysis required (Westgard), ...Current run status
run.missing_mixesarrayMix identifiersPreviously missing mixes
new_run_wellsarrayWell objectsWells from newly imported run
config.allow_other_runsbooltrue, falseCross-run enabled

Output Variables

VariableTypeDescription
run.statusstringUpdated status if conditions met

Decision Table: Status Update Conditions

TVrun.statusmissing_mixesnew_run_providesnew_statusCovers
TV-003-001No Resolution[B][B]Reanalysis required (Missing mixes uploaded)AC: All mixes now available
TV-003-002No Resolution[B, C][B]No ResolutionAC: Partial mixes = no change
TV-003-003Reanalysis required (Westgard)[B][B]Reanalysis required (Westgard)AC: Existing status preserved
TV-003-004Resolved[B][B]ResolvedAC: Existing resolution preserved
TV-003-005No Resolution[][B]No ResolutionAC: No missing mixes = no change

REQ-RULES-MIXMISS-004: Rule Execution Ordering

Input Variables

VariableTypeDescription
rule_sequencearrayOrder of rule execution

Output Variables

VariableTypeDescription
execution_validboolWhether ordering constraint is satisfied

Decision Table: Execution Order Verification

TVmulti_mix_combined_check_ordermulti_mix_missing_check_ordervalidCovers
TV-004-00112trueAC: Combined before Missing
TV-004-00221falseAC: Incorrect order = invalid

Boundary Value Analysis

REQ-RULES-MIXMISS-001 Boundaries

BoundaryTest VectorsNotes
Mix count = 0TV-001-002No mixes required = no error
Mix count = 1TV-002-002Single mix missing
Mix count = NTV-001-015Multiple mixes, one missing
All mixes presentTV-001-016Boundary: complete set
All mixes missing(implicit in TV-001-015)Maximum missing scenario

REQ-RULES-MIXMISS-003 Boundaries

BoundaryTest VectorsNotes
Partial = 1 of NTV-003-002Not all mixes provided
Complete = N of NTV-003-001All mixes provided
Zero missing mixesTV-003-005Run had no missing mixes

Error Scenarios

ScenarioInput StateExpected BehaviorTest Vector
Toggle disabledmixes_missing=falseNo error assignedTV-001-003
All mixes presentcomplete setNo error assignedTV-001-002
Cross-run disabledallow_other_runs=falseHistory not usedTV-001-019
History well ineligibleerror_code != COMBINED_MIXES_WELLS_MISSINGNot used for resolutionTV-001-021, TV-001-022
Existing resolutionrun.status != No ResolutionStatus unchangedTV-003-003, TV-003-004

Automation Status

REQ IDTest VectorsAutomation Status
REQ-RULES-MIXMISS-001TV-001-001 to TV-001-022Automated
REQ-RULES-MIXMISS-002TV-002-001 to TV-002-003Automated
REQ-RULES-MIXMISS-003TV-003-001 to TV-003-005Automated
REQ-RULES-MIXMISS-004TV-004-001 to TV-004-002Automated

Traceability to Existing Tests

RequirementJira TestsStatus
REQ-RULES-MIXMISS-001BT-4396, BT-4215Existing
REQ-RULES-MIXMISS-002BT-4215Existing
REQ-RULES-MIXMISS-003(Pending)Gap
REQ-RULES-MIXMISS-004BT-5159Existing

Gap Analysis

Identified Gaps

GapRequirementDescriptionPriorityOwner
GAP-001REQ-RULES-MIXMISS-003No Jira test ticket for re-analysis status updateHighTBD

Remediation Plan

  1. GAP-001: Create test ticket covering TV-003-001 through TV-003-005 for re-analysis status scenarios