🦠 Viral vs Bacterial Pharyngitis Differential Simulator
This interactive differential diagnosis tool helps distinguish viral (rhinovirus) from bacterial pharyngitis based on clinical signs such as cough, sore throat, conjunctivitis versus exudate and lymphadenopathy.
Patient Presents With Sore Throat
Common complaint, mostly self-limited, occasionally bacterial.
- ~12M: Annual US visits (primary care encounters/yr)
- 85–90%: Viral cause share (of all sore throat cases)
- 5–15%: Group A strep share (bacterial cases, adults)
- 5–15 yrs: Peak strep age (school-age incidence peak)
Why differentiate viral from bacterial
Guides testing, antibiotic use, and complication risk.
Typical presentation
Sore throat, odynophagia, variable fever and malaise.
Symptom Checklist — Six Clinical Signs
Toggle signs on or off to update the model live.
- 4: Centor criteria items (classic prediction rule)
- ~50–60%: Exudate sensitivity (for GAS pharyngitis)
- 3: Viral coryza signs tracked (cough, rhinorrhea, conjunctivitis)
- +1 pt: Node tenderness weight (bacterial-favoring feature)
Viral-favoring signs
Cough, rhinorrhea, conjunctivitis suggest a viral cause.
Bacterial-favoring signs
Exudate, tender nodes, fever without cough suggest strep.
Weighted Differential Score Computed Live
Each active sign adds one weighted point to its side.
- 0–6: Score range (total weighted points)
- +1: Weight per sign (each feature, either category)
- Instant: Recalculation (on every toggle change)
- Visual only: Severity influence (does not change the score)
Weighted scoring model
Each toggled sign adds one point to its category.
Live recalculation
Score updates instantly as signs are toggled.
Likely Etiology — Viral, Bacterial, or Indeterminate
Lean percentage sorts the case into three bands.
- ≥65%: Viral-leaning cutoff (lean toward viral)
- ≤35%: Bacterial-leaning cutoff (lean toward bacterial)
- 35–65%: Indeterminate band (needs further testing)
- ~85–90%: RADT sensitivity (rapid antigen detection test)
Classification bands
Viral-leaning, bacterial-leaning, or indeterminate by lean percent.
Clinical correlation
Etiology estimate still needs confirmatory testing.
Management Implication — Supportive Care vs Antibiotics
Viral gets rest and fluids; bacterial gets testing.
- 10 days: Antibiotic course (penicillin/amoxicillin standard)
- ~4000: NNT for rheumatic fever (number needed to treat)
- 5–7 days: Supportive care duration (typical viral course)
- ~60%: Overtreatment estimate (sore throats given antibiotics needlessly)
Viral management
Supportive care only — fluids, rest, analgesia.
Bacterial management
Consider rapid strep testing, then targeted antibiotics.
This interactive differential diagnosis tool helps distinguish viral (rhinovirus) from bacterial pharyngitis based on clinical signs such as cough, sore throat, conjunctivitis versus exudate and lymphadenopathy.
2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install