Skip to main content
Back to module
Clinical Laboratory Practice · Results and Quality

Daily QC in the clinical lab

Reading36mLesson 2 of 3 in this module

Apply Westgard multirules across two control levels to accept or reject a run, and know what to do after a rejection.

Why it matters

Before any patient result leaves the lab, the lab must show that the method was working when that result was produced. Quality control (QC) does this by running control materials with known target values alongside patient samples. In the US, the CLIA regulations require QC for nonwaived tests, typically at least two levels of control each day of testing for most quantitative chemistry tests, unless the lab uses an approved alternative such as an Individualized Quality Control Plan (IQCP) (CMS CLIA, checked on 2026-10-23). Statistical QC basics were covered in lab-data-quality; this lesson applies them to the daily clinical decision: accept the run or reject it.

Scope. All data here are fictional. QC limits, rules and frequency are set by each lab's director and procedures.

The setup

  • Each control level has a target mean and SD, established by the lab from repeated measurements of that lot of control material.
  • Each result is converted to a z-score: z = (result - mean) / SD.
  • Results are plotted on a Levey-Jennings chart with lines at the mean and at +/-1, 2 and 3 SD.
  • Two levels are chosen near clinical decision points, for example a normal potassium and a high one.

Westgard multirules, across levels

Using two levels lets the lab apply rules across levels within a run and across runs within a level:

RuleMeaningError it suggestsAction
1_2sOne result beyond 2 SD(warning)Check the other rules
1_3sOne result beyond 3 SDRandomReject
2_2sTwo results beyond 2 SD on the same side (both levels in one run, or one level in two runs)SystematicReject
R_4sIn one run, one level above +2 SD and the other below -2 SDRandomReject
4_1sFour consecutive results beyond 1 SD on the same sideSystematicReject
10xTen consecutive results on the same side of the meanSystematicReject

Random error (1_3s, R_4s) looks like scatter: a bubble in a pipette, a clot, an air leak. Systematic error (2_2s, 4_1s, 10x) is a shift or trend: a new reagent lot, calibration drift, a deteriorating lamp.

Worked example: this morning's potassium run

Level 1 (mean 4.00, SD 0.10) reads 4.23: z = +2.3. Level 2 (mean 6.50, SD 0.15) reads 6.17: z = -2.2.

  • 1_2s: yes (both beyond 2 SD), so check the rest.
  • 1_3s: no. 2_2s: no (they are on opposite sides).
  • R_4s: yes. The spread between the two levels is 2.3 + 2.2 = 4.5 SD in a single run.

Decision: reject. Random error is likely. Patient results from this run are not released.

What to do when a run is rejected

  1. Do not report patient results from the run.
  2. Do not simply rerun the control until it falls inside the limits. That hides the problem.
  3. Troubleshoot according to the error type: for random error, look at sampling, bubbles, clots and the specific control vial; for systematic error, look at reagent lots, calibration and maintenance.
  4. Fix the cause, recalibrate if needed, and rerun both control levels. Accept only when the run passes.
  5. Re-test patient samples run since the last acceptable QC if they may be affected, and issue corrected reports for any released results that change.
  6. Document the rule broken, the cause, the corrective action and the patients affected.

Common mistakes

  • Rejecting runs on a 1_2s warning alone, which with two levels rejects too many good runs, or ignoring 1_2s entirely.
  • Using the manufacturer's wide ranges instead of the lab's own mean and SD.
  • Repeating controls until they pass.
  • Forgetting to look back at patient results since the last good QC.

Quick recap

  • Run at least two control levels per day of testing (or follow an approved IQCP).
  • Convert to z-scores and apply 1_3s, 2_2s, R_4s, 4_1s and 10x; 1_2s is a warning.
  • Random-error rules: 1_3s, R_4s. Systematic: 2_2s, 4_1s, 10x.
  • On rejection: hold results, troubleshoot, fix, rerun QC, look back at patients, document.

Try it

Open the Do tab. A Python QC checker is written except for the R_4s rule.

Also in this lesson: