Plot QC on a Levey-Jennings chart and flag runs that break Westgard rules.
Why it matters
How do you know today's results are right? Every analytical run in a clinical, pharmaceutical or environmental lab includes quality control (QC) samples: materials with a known, stable expected value that are tested exactly like real samples. If the QC results behave, the run is accepted. If they do not, the patient or batch results from that run are held. Medical laboratory technologists make this call many times a shift, and getting it wrong in either direction is costly: releasing bad results harms patients, and rejecting good runs wastes time and samples.
The Levey-Jennings chart
A Levey-Jennings chart plots each QC result over time against lines for the expected mean and for ±1, ±2 and ±3 standard deviations (SD). The mean and SD come from the lab's own repeated measurements of that QC lot (often at least 20 results over several days), not just the manufacturer's insert.
To compare results on the same scale, convert each one to a z-score:
z = (result - mean) / SD
Worked example. A glucose control has mean 100 mg/dL and SD 2.5 mg/dL. A result of 106 mg/dL has z = (106 - 100) / 2.5 = 2.4: between 2 and 3 SD above the mean.
If results follow a normal distribution, about 95 percent fall within ±2 SD and about 99.7 percent within ±3 SD. So one result beyond 2 SD happens by chance about 1 time in 20, which is why a single 2 SD result is treated only as a warning.
Westgard rules
James Westgard's multirule QC combines several rules, each sensitive to a different kind of error. The names read as "number of results, and limit": 2_2s means two results beyond 2 SD.
| Rule | Violated when | Usually points to |
|---|---|---|
| 1_2s (warning) | One result beyond ±2 SD | Triggers inspection with the other rules |
| 1_3s (reject) | One result beyond ±3 SD | Random error or a large systematic error |
| 2_2s (reject) | Two consecutive results beyond 2 SD on the same side | Systematic error (shift) |
| R_4s (reject) | One result above +2 SD and the other below -2 SD (range over 4 SD) | Random error |
| 4_1s (reject) | Four consecutive results beyond 1 SD on the same side | Systematic error (gradual shift) |
| 10_x (reject) | Ten consecutive results on the same side of the mean | Systematic error (bias, drift) |
Strictly, R_4s is applied to two control levels within the same run, while 2_2s, 4_1s and 10_x can be applied within a run and across consecutive runs. In this lesson's activity we apply every rule to a single control's sequence of results, to keep it simple.
Rules for your lab are chosen when the method is validated, based on how good the method is compared with its allowed error. Some labs use fewer rules for very precise methods. Westgard's site explains the full approach: https://www.westgard.com/mltirule.htm (Checked on 2026-10-23.)
Worked example: judging a run
The last five results (as z-scores, oldest first) for a control are:
0.4, 1.1, -0.3, 2.3, 2.6
- The last result (2.6) is beyond 2 SD: 1_2s warning, so check the other rules.
- 1_3s? No, 2.6 is below 3.
- 2_2s? The last two results, 2.3 and 2.6, are both above +2 SD. Yes: reject.
- This pattern suggests a systematic shift: perhaps a new reagent lot, a calibration problem or a deteriorating control.
What to do when a rule fails
- Do not report patient or batch results from the run.
- Do not simply repeat the control until it passes. That hides real problems.
- Investigate: reagents and lots, calibration, instrument maintenance, the control material itself (stored correctly, in date), recent changes.
- Fix the cause, recalibrate if needed, rerun controls, then rerun the affected samples.
- Document the failure, the investigation and the corrective action.
In clinical labs, QC rules and records are required under CLIA (42 CFR Part 493: https://www.ecfr.gov/current/title-42/chapter-IV/subchapter-G/part-493, checked on 2026-10-23) and checked by accrediting bodies such as CAP.
Common mistakes
- Treating a 1_2s warning alone as a rejection, or ignoring it entirely.
- Rerunning a failed control until it passes.
- Using the manufacturer's range instead of the lab's own mean and SD.
- Ignoring slow trends because no single result looks bad (the 4_1s and 10_x rules catch these).
Quick recap
- z = (result - mean) / SD puts every QC result on the same scale.
- 1_2s warns; 1_3s, 2_2s, R_4s, 4_1s and 10_x reject.
- Random-error rules: 1_3s, R_4s. Systematic-error rules: 2_2s, 4_1s, 10_x.
- On rejection: hold results, investigate, fix, rerun, document.
Try it
Open the Do tab. A Python Westgard checker already handles most rules; you write the 2_2s rule.