Give me classification of microbiology bacteriology with gpc gnc gnb gnc with separate flow chart with example and biochemical test
| Group | Abbreviation | Cell Wall | Color After Gram Stain |
|---|---|---|---|
| Gram-Positive Cocci | GPC | Thick peptidoglycan, teichoic acid | Purple/Violet |
| Gram-Negative Cocci | GNC | Thin peptidoglycan + outer membrane | Pink/Red |
| Gram-Positive Bacilli | GPB | Thick peptidoglycan | Purple/Violet |
| Gram-Negative Bacilli | GNB | Thin peptidoglycan + outer membrane (LPS) | Pink/Red |
GRAM-POSITIVE COCCI (GPC)
│
▼
[CATALASE TEST]
/ \
+ -
(Catalase +) (Catalase -)
│ │
▼ ▼
STAPHYLOCOCCUS STREPTOCOCCUS / ENTEROCOCCUS
│ │
▼ ▼
[COAGULASE] [HEMOLYSIS ON BLOOD AGAR]
/ \ / | \
+ - α β γ
│ │ (Green) (Complete) (None)
▼ ▼ │ │ │
S. aureus CoNS │ [LANCEFIELD] │
│ │ / \ │
│ │ Group A Group B │
│ ▼ (S.pyogenes)(S.agalactiae)
│ [OPTOCHIN/BILE SOLUBILITY]
│ / \
│ + -
▼ S.pneumoniae Viridans streptococci
[NOVOBIOCIN] (S.mutans, S.mitis, etc.)
/ \
+ - (γ-hemolysis: ENTEROCOCCUS)
│ │ [GROWTH IN 6.5% NaCl]
▼ ▼ / \
S.epidermidis S.saprophyticus + -
E.faecalis Non-Enterococcus
| Organism | Catalase | Coagulase | Hemolysis | Optochin | Novobiocin | Key Feature |
|---|---|---|---|---|---|---|
| S. aureus | + | + | β | - | - | Golden colonies, mannitol fermenter |
| S. epidermidis | + | - | None | - | Sensitive | Novobiocin sensitive, slime layer |
| S. saprophyticus | + | - | None | - | Resistant | UTI in young women |
| S. pyogenes | - | - | β | - | - | Bacitracin sensitive, PYR+ |
| S. agalactiae | - | - | β | - | - | CAMP test+, hippurate+ |
| S. pneumoniae | - | - | α | Sensitive | - | Bile soluble, quellung reaction |
| Viridans strep | - | - | α | Resistant | - | No bile solubility |
| E. faecalis | - | - | γ/β | - | - | 6.5% NaCl growth, PYR+ |
GRAM-NEGATIVE COCCI (GNC)
│
▼
[OXIDASE TEST]
+
│
▼
NEISSERIA spp.
/ \
+ -
[GLUCOSE FERMENTER] [ACID from sugars]
│
[MALTOSE TEST]
/ \
+ -
│ │
▼ ▼
N. meningitidis N. gonorrhoeae
(glucose+ (glucose only)
maltose+)
Other GNC:
Moraxella catarrhalis - Oxidase+, DNase+, Butyrate+
| Organism | Oxidase | Glucose | Maltose | Lactose | Sucrose | DNase | Key Feature |
|---|---|---|---|---|---|---|---|
| N. meningitidis | + | + | + | - | - | - | Polysaccharide capsule, CSF meningitis |
| N. gonorrhoeae | + | + | - | - | - | - | Thayer-Martin medium, STI |
| M. catarrhalis | + | - | - | - | - | + | ONPG-, causes otitis media/LRTI |
GRAM-NEGATIVE BACILLI (GNB)
│
▼
[OXIDASE TEST]
/ \
- +
│ │
▼ ▼
ENTEROBACTERIACEAE NON-ENTEROBACTERIACEAE
│ (Pseudomonas, Vibrio,
│ Campylobacter, H.pylori,
│ Haemophilus, Brucella)
│
▼
[LACTOSE FERMENTATION - MacConkey Agar]
/ \
LACTOSE+ LACTOSE-
(Pink colonies) (Colorless colonies)
│ │
▼ [H2S PRODUCTION]
[IMViC Tests] / \
│ + -
E. coli (++--) Salmonella [INDOLE TEST]
Klebsiella (--++) Proteus / \
Enterobacter (--++) │ + -
│ Shigella [UREASE TEST]
[UREASE TEST] / \
/ \ + -
+ - Y.ent. Others
Proteus Salmonella
| Test | Meaning | E. coli | Klebsiella | Enterobacter | Salmonella | Shigella |
|---|---|---|---|---|---|---|
| I - Indole | Tryptophan→Indole | + | - | - | - | + |
| M - Methyl Red | Mixed acid ferm. | + | - | - | + | + |
| V - VP (Voges-Proskauer) | 2,3-butanediol | - | + | + | - | - |
| C - Citrate | Citrate as C source | - | + | + | + | - |
| Organism | Oxidase | Lactose | H₂S | Indole | MR | VP | Citrate | Urease | Motility |
|---|---|---|---|---|---|---|---|---|---|
| E. coli | - | + | - | + | + | - | - | - | + |
| Klebsiella | - | + | - | - | - | + | + | + | - |
| Enterobacter | - | + | - | - | - | + | + | - | + |
| Salmonella typhi | - | - | + | - | + | - | - | - | + |
| Salmonella non-typhi | - | - | + | - | + | - | + | - | + |
| Shigella | - | - | - | -/+ | + | - | - | - | - |
| Proteus mirabilis | - | - | + | - | + | - | - | + | + (swarming) |
| Yersinia enterocolitica | - | - | - | + | + | - | - | + | - (37°C) |
| Vibrio cholerae | + | - | - | + | - | + | + | - | + |
| Pseudomonas aeruginosa | + | - | - | - | - | - | + | - | + |
GRAM-POSITIVE BACILLI (GPB)
│
▼
[SPORE FORMING?]
/ \
YES NO
│ │
▼ ▼
[AEROBIC/ [AEROBIC/ANAEROBIC]
ANAEROBIC?] / \
/ \ Aerobic Anaerobic
Aerobic Anaerobic │ │
│ │ [Catalase/ Actinomyces,
▼ ▼ Motility] Propionibacterium
Bacillus Clostridium
anthracis perfringens [Motility + β-hemolysis]
cereus tetani / \
subtilis botulinum + -
difficile Listeria Corynebacterium
monocytogenes diphtheriae
(tumbling) (Chinese-letter pattern)
│
[ELEK TEST]
Toxin production
| Organism | Spore | Aerobe | Catalase | Motility | Hemolysis | Key Test |
|---|---|---|---|---|---|---|
| B. anthracis | + | Aerobic | + | - | Non-hemolytic | String of pearls (penicillin), India ink |
| B. cereus | + | Aerobic | + | + | β | Motile, food poisoning |
| C. perfringens | + | Anaerobic | - | - | Double zone β | Lecithinase+ (Nagler's), stormy clot |
| C. tetani | + (terminal) | Anaerobic | - | + | - | Drumstick appearance |
| C. botulinum | + | Anaerobic | - | + | - | Neurotoxin, honey in infants |
| C. difficile | + | Anaerobic | - | - | - | Toxin A+B, horse-shoe pattern |
| L. monocytogenes | - | Aerobic | + | + | β | Tumbling motility (4°C), CAMP+ |
| C. diphtheriae | - | Aerobic | + | - | - | Elek test, tellurite agar (black) |
UNKNOWN BACTERIUM
│
▼
[GRAM STAIN]
/ \
Purple(+) Pink(-)
│ │
▼ ▼
SHAPE? SHAPE?
/ \ / \
Cocci Bacilli Cocci Bacilli
│ │ │ │
▼ ▼ ▼ ▼
GPC GPB GNC GNB
│ │ │
CATALASE OXIDASE OXIDASE
│ │ │
COAGULASE GLUCOSE LACTOSE
│ MALTOSE H₂S
S.aureus/ IMViC
CoNS/Strep/
Enterococcus
| Test | Principle | Positive Result | Examples |
|---|---|---|---|
| Catalase | H₂O₂ → H₂O + O₂ | Bubbles | Staphylococcus (+) vs Streptococcus (-) |
| Coagulase | Clots plasma | Clot formation | S. aureus (+) vs CoNS (-) |
| Oxidase | Cytochrome c oxidase | Blue-purple color | Pseudomonas, Neisseria (+) |
| Optochin | Inhibits S. pneumoniae | Zone of inhibition | S. pneumoniae (+) |
| Bacitracin | Inhibits S. pyogenes | Zone of inhibition | Group A Strep (+) |
| CAMP test | Enhanced hemolysis | Arrow-head β-hemolysis | S. agalactiae (+) |
| Bile solubility | Lyses S. pneumoniae | Colony disappears | S. pneumoniae (+) |
| PYR test | Pyrrolidonyl aminopeptidase | Red color | S. pyogenes, E. faecalis (+) |
| Urease | Urea → NH₃ + CO₂ | Pink/Red (Christensen's) | Proteus, Klebsiella, H. pylori (+) |
| Indole | Tryptophanase activity | Red ring (Kovac's) | E. coli (+), Klebsiella (-) |
| Methyl Red (MR) | Mixed acid fermentation | Red color | E. coli (+), Klebsiella (-) |
| VP (Voges-Proskauer) | 2,3-butanediol production | Red color | Klebsiella, Enterobacter (+) |
| Citrate | Citrate as sole C source | Blue (Simmon's) | Klebsiella, Enterobacter (+) |
| H₂S production | Sulfur reduction | Black precipitate | Salmonella, Proteus (+) |
| Novobiocin | Inhibits CoNS | Inhibition zone | S. epidermidis (S), S. saprophyticus (R) |
| Elek test | Immunodiffusion for toxin | Precipitin line | C. diphtheriae toxin (+) |
| Nagler's reaction | Lecithinase activity | Turbidity inhibited | C. perfringens (+) |
| Group | Organism | Disease | Key Clue |
|---|---|---|---|
| GPC | S. aureus | Boils, MRSA, food poisoning, toxic shock | Coagulase+, clusters |
| GPC | S. pyogenes | Strep throat, rheumatic fever, cellulitis | Bacitracin+, chains |
| GPC | S. pneumoniae | Pneumonia, meningitis, otitis | Lancet-shaped diplococci, optochin+ |
| GPC | E. faecalis | UTI, endocarditis | 6.5% NaCl growth |
| GNC | N. meningitidis | Bacterial meningitis, septicemia | Coffee bean diplococci in CSF |
| GNC | N. gonorrhoeae | Gonorrhea, PID, ophthalmia neonatorum | Intracellular diplococci in PMNs |
| GNB | E. coli | UTI, diarrhea, meningitis (neonates) | IMViC: ++--, lactose+ |
| GNB | Salmonella typhi | Typhoid fever | H₂S+, rose spots, Widal test |
| GNB | Shigella | Bloody dysentery | Non-motile, non-lactose, H₂S- |
| GNB | Klebsiella | Lobar pneumonia, UTI | Mucoid colonies, IMViC: --++ |
| GNB | P. aeruginosa | Burns, cystic fibrosis, nosocomial | Oxidase+, blue-green pyocyanin |
| GNB | Vibrio cholerae | Cholera (rice water stool) | Oxidase+, string test+, comma shape |
| GPB | C. tetani | Tetanus (spastic paralysis) | Drumstick spore, terminal spore |
| GPB | C. perfringens | Gas gangrene, food poisoning | Stormy clot, double-zone hemolysis |
| GPB | C. diphtheriae | Diphtheria (pseudomembrane) | Elek test, metachromatic granules |
| GPB | L. monocytogenes | Meningitis (neonates/elderly) | Tumbling motility, CAMP+ |
Create a diagnostic PowerPoint flowchart I can present to students
ls -la /home/daytona/workspace/ 2>/dev/null | head -20
mkdir -p /home/daytona/workspace/bacteriology-pptx
~/bacteriology-pptx/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "Diagnostic Bacteriology - Gram Stain Classification";
pres.author = "Microbiology Teaching";
// ─── Color palette ───────────────────────────────────────────────────────────
const C = {
navy: "0D1B2A", // dominant dark bg
midBlue: "1B3A5C",
teal: "1B6CA8",
accent: "F0A500", // amber accent
white: "FFFFFF",
offWhite:"F5F7FA",
gpcBlue: "1565C0", // GPC node
gncOrange:"E65100", // GNC node
gnbGreen:"2E7D32", // GNB node
gpbPurp: "6A1B9A", // GPB node
posGreen:"2E7D32",
negRed: "C62828",
arrowGray:"AAAAAA",
boxLight:"EBF3FB",
lineGray:"CBD5E0",
};
// ─── Helper: rounded rect node ───────────────────────────────────────────────
function addNode(slide, txt, x, y, w, h, fillColor, textColor, fontSize) {
slide.addShape(pres.ShapeType.roundRect, {
x, y, w, h,
fill: { color: fillColor },
line: { color: "FFFFFF", width: 0.5 },
rectRadius: 0.08,
});
slide.addText(txt, {
x, y, w, h,
fontSize: fontSize || 11,
color: textColor || "FFFFFF",
bold: true,
align: "center",
valign: "middle",
fontFace: "Calibri",
margin: 2,
});
}
// ─── Helper: diamond decision node ───────────────────────────────────────────
function addDiamond(slide, txt, x, y, w, h, fillColor) {
slide.addShape(pres.ShapeType.diamond, {
x, y, w, h,
fill: { color: fillColor },
line: { color: "FFFFFF", width: 0.6 },
});
slide.addText(txt, {
x, y, w, h,
fontSize: 9.5,
color: "FFFFFF",
bold: true,
align: "center",
valign: "middle",
fontFace: "Calibri",
margin: 2,
});
}
// ─── Helper: connector line ──────────────────────────────────────────────────
function addLine(slide, x1, y1, x2, y2, color) {
slide.addShape(pres.ShapeType.line, {
x: x1, y: y1, w: x2 - x1, h: y2 - y1,
line: { color: color || C.arrowGray, width: 1.2, endArrowType: "arrow" },
});
}
function addVLine(slide, x, y1, y2, color) {
slide.addShape(pres.ShapeType.line, {
x: x, y: y1, w: 0, h: y2 - y1,
line: { color: color || C.arrowGray, width: 1.2, endArrowType: "arrow" },
});
}
function addHLine(slide, x1, x2, y, color) {
slide.addShape(pres.ShapeType.line, {
x: x1, y: y, w: x2 - x1, h: 0,
line: { color: color || C.arrowGray, width: 1.2, endArrowType: "arrow" },
});
}
function labelText(slide, txt, x, y, w, color, fontSize, bold) {
slide.addText(txt, {
x, y, w, h: 0.25,
fontSize: fontSize || 8.5,
color: color || C.navy,
bold: bold !== undefined ? bold : false,
align: "center",
fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
// Full bg
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navy } });
// Decorative horizontal band
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.1, w: 13.3, h: 0.06, fill: { color: C.accent } });
// Title
s.addText("Diagnostic Bacteriology", {
x: 1, y: 1.0, w: 11.3, h: 1.2,
fontSize: 44, color: C.white, bold: true, align: "center",
fontFace: "Calibri", charSpacing: 2,
});
s.addText("Gram Stain Classification & Identification Flowcharts", {
x: 1, y: 2.4, w: 11.3, h: 0.7,
fontSize: 22, color: C.accent, bold: false, align: "center", fontFace: "Calibri",
});
// Four group badges
const badges = [
{ label: "GPC", sub: "Gram-Positive Cocci", color: C.gpcBlue, x: 1.3 },
{ label: "GNC", sub: "Gram-Negative Cocci", color: C.gncOrange, x: 4.3 },
{ label: "GNB", sub: "Gram-Negative Bacilli", color: C.gnbGreen, x: 7.3 },
{ label: "GPB", sub: "Gram-Positive Bacilli", color: C.gpbPurp, x: 10.3 },
];
badges.forEach(b => {
s.addShape(pres.ShapeType.roundRect, {
x: b.x, y: 3.5, w: 2.4, h: 1.4,
fill: { color: b.color }, line: { color: C.accent, width: 1 }, rectRadius: 0.1,
});
s.addText(b.label, { x: b.x, y: 3.55, w: 2.4, h: 0.7, fontSize: 26, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
s.addText(b.sub, { x: b.x, y: 4.2, w: 2.4, h: 0.6, fontSize: 10, color: C.offWhite, align: "center", fontFace: "Calibri" });
});
s.addText("Biochemical Tests • Key Organisms • Clinical Examples", {
x: 1, y: 5.3, w: 11.3, h: 0.4,
fontSize: 13, color: "#8AA8C8", align: "center", fontFace: "Calibri",
});
s.addText("Microbiology — Teaching Resource", {
x: 1, y: 6.9, w: 11.3, h: 0.3,
fontSize: 10, color: "#5A7A9A", align: "center", fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — MASTER ALGORITHM (Gram Stain → 4 groups)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.navy } });
s.addText("MASTER DIAGNOSTIC ALGORITHM", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45,
fontSize: 18, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 3,
});
// UNKNOWN BACTERIUM box
addNode(s, "UNKNOWN BACTERIUM\n(Clinical Isolate)", 4.9, 0.85, 3.5, 0.75, C.navy, C.white, 12);
// Arrow down to GRAM STAIN
addVLine(s, 6.65, 1.6, 2.1, C.teal);
// GRAM STAIN diamond
addDiamond(s, "GRAM STAIN", 5.4, 2.1, 2.5, 0.9, C.teal);
// Left branch — GRAM POSITIVE
addHLine(s, 3.5, 5.4, 2.55, C.gpcBlue);
addVLine(s, 3.5, 2.55, 3.25, C.gpcBlue);
labelText(s, "PURPLE (+)", 2.0, 2.35, 2.2, C.gpcBlue, 9, true);
// Right branch — GRAM NEGATIVE
addHLine(s, 7.9, 10.2, 2.55, C.gnbGreen);
addVLine(s, 10.2, 2.55, 3.25, C.gnbGreen);
labelText(s, "PINK (−)", 9.5, 2.35, 2.0, C.gnbGreen, 9, true);
// GP: SHAPE decision
addDiamond(s, "CELL\nSHAPE?", 2.55, 3.25, 1.9, 0.9, C.midBlue);
// GN: SHAPE decision
addDiamond(s, "CELL\nSHAPE?", 9.35, 3.25, 1.9, 0.9, C.midBlue);
// GPC box
addVLine(s, 3.0, 4.15, 4.65, C.gpcBlue);
addHLine(s, 2.0, 3.0, 4.15, C.gpcBlue);
labelText(s, "Cocci", 1.3, 3.95, 1.2, C.gpcBlue, 9, true);
addNode(s, "GPC\nGram-Positive Cocci", 1.2, 4.65, 2.5, 0.85, C.gpcBlue, C.white, 11);
// GPB box
addVLine(s, 3.8, 4.15, 4.65, C.gpbPurp);
addHLine(s, 3.5, 4.5, 4.15, C.gpbPurp);
labelText(s, "Bacilli", 4.0, 3.95, 1.2, C.gpbPurp, 9, true);
addNode(s, "GPB\nGram-Positive Bacilli", 3.6, 4.65, 2.5, 0.85, C.gpbPurp, C.white, 11);
// GNC box
addVLine(s, 9.9, 4.15, 4.65, C.gncOrange);
addHLine(s, 9.0, 9.9, 4.15, C.gncOrange);
labelText(s, "Cocci", 8.3, 3.95, 1.2, C.gncOrange, 9, true);
addNode(s, "GNC\nGram-Negative Cocci", 8.7, 4.65, 2.5, 0.85, C.gncOrange, C.white, 11);
// GNB box
addVLine(s, 10.7, 4.15, 4.65, C.gnbGreen);
addHLine(s, 10.3, 11.2, 4.15, C.gnbGreen);
labelText(s, "Bacilli", 10.6, 3.95, 1.2, C.gnbGreen, 9, true);
addNode(s, "GNB\nGram-Negative Bacilli", 9.8, 4.65, 2.5, 0.85, C.gnbGreen, C.white, 11);
// Next steps — arrows down from each box
const nextLabels = [
{ x: 1.2, color: C.gpcBlue, next: "→ Slide 3" },
{ x: 3.6, color: C.gpbPurp, next: "→ Slide 6" },
{ x: 8.7, color: C.gncOrange, next: "→ Slide 5" },
{ x: 9.8, color: C.gnbGreen, next: "→ Slide 4" },
];
nextLabels.forEach(n => {
addVLine(s, n.x + 1.25, 5.5, 5.9, n.color);
s.addShape(pres.ShapeType.roundRect, {
x: n.x, y: 5.9, w: 2.5, h: 0.45,
fill: { color: n.color }, line: { color: n.color, width: 0 }, rectRadius: 0.07,
});
s.addText(n.next, { x: n.x, y: 5.9, w: 2.5, h: 0.45, fontSize: 10, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
});
// Legend bottom
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.1, w: 13.3, h: 0.4, fill: { color: C.navy } });
s.addText("KEY: Start with Gram Stain → Determine cell shape → Apply organism-specific biochemical tests on each branch", {
x: 0.3, y: 7.12, w: 12.7, h: 0.35, fontSize: 9.5, color: C.accent, fontFace: "Calibri", align: "center",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — GPC FLOWCHART
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.gpcBlue } });
s.addText("GPC — GRAM-POSITIVE COCCI | Diagnostic Flowchart", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 16, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 2,
});
// GPC node
addNode(s, "Gram-Positive Cocci", 5.0, 0.8, 3.3, 0.65, C.gpcBlue, C.white, 13);
addVLine(s, 6.65, 1.45, 1.9, C.gpcBlue);
// CATALASE diamond
addDiamond(s, "CATALASE\nTEST", 5.4, 1.9, 2.5, 0.85, C.teal);
// Left (catalase +) → Staphylococcus
addHLine(s, 2.8, 5.4, 2.32, C.gpcBlue);
labelText(s, "(+) Bubbles", 3.2, 2.12, 1.8, C.posGreen, 8.5, true);
addNode(s, "STAPHYLOCOCCUS", 1.5, 2.7, 2.6, 0.6, C.gpcBlue, C.white, 11);
addVLine(s, 2.8, 2.55, 2.7, C.gpcBlue);
// Coagulase under Staphylococcus
addVLine(s, 2.8, 3.3, 3.7, C.gpcBlue);
addDiamond(s, "COAGULASE\nTEST", 1.6, 3.7, 2.4, 0.85, C.teal);
// S. aureus
addHLine(s, 0.3, 1.6, 4.12, C.negRed);
labelText(s, "(+)", 0.4, 3.95, 0.7, C.posGreen, 8.5, true);
addNode(s, "S. aureus\n(Coagulase +)", 0.05, 4.65, 1.9, 0.75, C.negRed, C.white, 9.5);
addVLine(s, 0.95, 4.55, 4.65, C.negRed);
// CoNS
addHLine(s, 4.0, 5.4, 4.12, C.gpcBlue);
labelText(s, "(−)", 4.5, 3.95, 0.6, C.negRed, 8.5, true);
addNode(s, "CoNS\n(Coagulase −)", 4.05, 4.65, 1.85, 0.75, C.midBlue, C.white, 9.5);
addVLine(s, 4.98, 4.55, 4.65, C.midBlue);
// Novobiocin under CoNS
addVLine(s, 4.98, 5.4, 5.75, C.midBlue);
addDiamond(s, "NOVOBIOCIN", 3.85, 5.75, 2.2, 0.75, C.teal);
addHLine(s, 2.9, 3.85, 6.12);
labelText(s, "Sensitive", 2.15, 5.95, 1.3, C.posGreen, 8.5, true);
addNode(s, "S. epidermidis", 1.6, 6.55, 1.8, 0.55, C.midBlue, C.white, 9);
addVLine(s, 2.5, 6.5, 6.55, C.midBlue);
addHLine(s, 6.05, 6.7, 6.12);
labelText(s, "Resistant", 6.1, 5.95, 1.2, C.negRed, 8.5, true);
addNode(s, "S. saprophyticus", 6.05, 6.55, 1.9, 0.55, C.midBlue, C.white, 9);
// Right (catalase −) → Streptococcus / Enterococcus
addHLine(s, 7.9, 10.3, 2.32, C.gpcBlue);
labelText(s, "(−) No bubbles", 8.3, 2.12, 1.8, C.negRed, 8.5, true);
addNode(s, "STREPTOCOCCUS /\nENTEROCOCCUS", 9.5, 2.7, 2.7, 0.65, C.gpcBlue, C.white, 11);
addVLine(s, 10.85, 2.55, 2.7, C.gpcBlue);
// Hemolysis
addVLine(s, 10.85, 3.35, 3.75, C.gpcBlue);
addDiamond(s, "HEMOLYSIS\n(Blood Agar)", 9.65, 3.75, 2.4, 0.85, C.teal);
// Alpha hemolysis
addHLine(s, 8.5, 9.65, 4.17);
labelText(s, "α (green)", 7.8, 3.95, 1.3, C.posGreen, 8.5, true);
addNode(s, "α-Hemolysis", 7.6, 4.65, 1.8, 0.55, C.midBlue, C.white, 9.5);
addVLine(s, 8.5, 4.55, 4.65, C.midBlue);
addVLine(s, 8.5, 5.2, 5.5, C.midBlue);
addDiamond(s, "OPTOCHIN\nTEST", 7.5, 5.5, 2.0, 0.75, C.teal);
addHLine(s, 6.8, 7.5, 5.87);
labelText(s, "Sensitive", 6.0, 5.7, 1.4, C.posGreen, 8.5, true);
addNode(s, "S. pneumoniae", 5.5, 6.55, 1.8, 0.55, C.gpcBlue, C.white, 9);
addVLine(s, 6.4, 6.5, 6.55, C.gpcBlue);
addHLine(s, 9.5, 10.0, 5.87);
labelText(s, "Resistant", 9.7, 5.7, 1.3, C.negRed, 8.5, true);
addNode(s, "Viridans Strep", 9.5, 6.55, 1.8, 0.55, C.midBlue, C.white, 9);
// Beta hemolysis
addVLine(s, 10.85, 4.6, 4.85, C.gpcBlue);
addNode(s, "β-Hemolysis", 10.0, 4.85, 1.7, 0.55, C.midBlue, C.white, 9.5);
addVLine(s, 10.85, 5.4, 5.6, C.gpcBlue);
addDiamond(s, "BACITRACIN\nLANCEFIELD", 10.0, 5.6, 1.7, 0.75, C.teal);
addHLine(s, 9.3, 10.0, 5.97);
labelText(s, "Grp A", 8.6, 5.8, 1.1, C.posGreen, 8.5, true);
addNode(s, "S. pyogenes\n(Group A)", 7.8, 6.55, 1.8, 0.55, C.gpcBlue, C.white, 9);
addVLine(s, 8.7, 6.5, 6.55, C.gpcBlue);
addHLine(s, 11.7, 12.2, 5.97);
labelText(s, "Grp B", 11.7, 5.8, 1.1, C.posGreen, 8.5, true);
addNode(s, "S. agalactiae\n(Group B)", 11.2, 6.55, 1.8, 0.55, C.gpcBlue, C.white, 9);
// Gamma hemolysis
addHLine(s, 12.3, 12.9, 4.17);
labelText(s, "γ (none)", 12.4, 3.95, 1.2, C.arrowGray, 8.5, true);
addNode(s, "ENTEROCOCCUS\n(6.5% NaCl +)", 11.5, 4.65, 1.8, 0.65, C.gncOrange, C.white, 9);
addVLine(s, 12.4, 4.55, 4.65, C.gncOrange);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — GNB FLOWCHART
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.gnbGreen } });
s.addText("GNB — GRAM-NEGATIVE BACILLI | Diagnostic Flowchart", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 16, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 2,
});
// Start
addNode(s, "Gram-Negative Bacilli", 5.0, 0.8, 3.3, 0.6, C.gnbGreen, C.white, 13);
addVLine(s, 6.65, 1.4, 1.85, C.gnbGreen);
// Oxidase
addDiamond(s, "OXIDASE\nTEST", 5.4, 1.85, 2.5, 0.85, C.teal);
// Oxidase negative → Enterobacteriaceae
addHLine(s, 2.8, 5.4, 2.27);
labelText(s, "(−) Enterobacteriaceae", 2.0, 2.07, 2.5, C.negRed, 8.5, true);
addNode(s, "ENTEROBACTERIACEAE\n(Oxidase −)", 1.2, 2.7, 2.9, 0.65, C.gnbGreen, C.white, 11);
addVLine(s, 2.65, 2.55, 2.7, C.gnbGreen);
// Lactose on MacConkey
addVLine(s, 2.65, 3.35, 3.7, C.gnbGreen);
addDiamond(s, "LACTOSE\nMacConkey", 1.5, 3.7, 2.3, 0.85, C.teal);
// Lactose positive
addHLine(s, 0.3, 1.5, 4.12);
labelText(s, "PINK (+)", 0.3, 3.95, 0.85, C.posGreen, 8.5, true);
addNode(s, "E. coli\nKlebsiella\nEnterobacter", 0.05, 4.65, 1.8, 0.9, C.gnbGreen, C.white, 9);
addVLine(s, 0.95, 4.55, 4.65, C.gnbGreen);
addVLine(s, 0.95, 5.55, 5.75, C.gnbGreen);
addNode(s, "IMViC Tests\n(see Slide 7)", 0.2, 5.75, 1.5, 0.65, C.midBlue, C.white, 9);
// Lactose negative
addHLine(s, 3.8, 5.2, 4.12);
labelText(s, "COLORLESS (−)", 3.5, 3.95, 1.4, C.negRed, 8.5, true);
addVLine(s, 3.8, 4.12, 4.4);
addNode(s, "Salmonella\nShigella\nProteus", 3.2, 4.4, 1.8, 0.85, C.gnbGreen, C.white, 9);
addVLine(s, 4.1, 5.25, 5.5);
addDiamond(s, "H₂S\nPROD.", 3.3, 5.5, 1.6, 0.75, C.teal);
addHLine(s, 2.5, 3.3, 5.87);
labelText(s, "(+)", 2.6, 5.7, 0.6, C.posGreen, 8.5, true);
addNode(s, "Salmonella\nProteus", 1.75, 6.55, 1.6, 0.55, C.gnbGreen, C.white, 9);
addVLine(s, 2.55, 6.5, 6.55, C.gnbGreen);
addHLine(s, 4.9, 5.5, 5.87);
labelText(s, "(−)", 5.0, 5.7, 0.6, C.negRed, 8.5, true);
addNode(s, "Shigella\nYersinia", 4.95, 6.55, 1.6, 0.55, C.gnbGreen, C.white, 9);
// Oxidase positive → Non-enterobacteriaceae
addHLine(s, 7.9, 10.6, 2.27);
labelText(s, "(+) Non-Enterobacteriaceae", 8.3, 2.07, 2.8, C.posGreen, 8.5, true);
addNode(s, "NON-ENTEROBACTERIACEAE\n(Oxidase +)", 9.5, 2.7, 3.0, 0.65, C.gnbGreen, C.white, 11);
addVLine(s, 11.0, 2.55, 2.7, C.gnbGreen);
addVLine(s, 11.0, 3.35, 3.6, C.gnbGreen);
addDiamond(s, "GLUCOSE\nFERM.", 9.9, 3.6, 2.2, 0.8, C.teal);
addHLine(s, 8.5, 9.9, 4.0);
labelText(s, "(−) Oxidative", 8.2, 3.82, 1.6, C.negRed, 8.5, true);
addNode(s, "Pseudomonas\naeruginsoa\n(Pyocyanin+)", 7.6, 4.65, 2.0, 0.85, C.gnbGreen, C.white, 9);
addVLine(s, 8.6, 4.55, 4.65, C.gnbGreen);
addHLine(s, 12.1, 12.5, 4.0);
labelText(s, "(+) Ferment.", 12.0, 3.82, 1.5, C.posGreen, 8.5, true);
addNode(s, "Vibrio cholerae\nAeromonas", 11.7, 4.65, 1.8, 0.65, C.gnbGreen, C.white, 9);
addVLine(s, 12.6, 4.55, 4.65, C.gnbGreen);
// Curved path — fastidious
addVLine(s, 11.0, 4.4, 4.65, C.gnbGreen);
addNode(s, "Fastidious GNB\nHaemophilus\nBrucella\nCampylobacter", 9.8, 4.65, 2.3, 1.0, C.midBlue, C.white, 9);
// Legend box
s.addShape(pres.ShapeType.roundRect, {
x: 5.8, y: 5.0, w: 3.3, h: 2.2,
fill: { color: C.navy }, line: { color: C.accent, width: 1 }, rectRadius: 0.1,
});
s.addText("KEY TESTS — GNB", { x: 5.9, y: 5.05, w: 3.1, h: 0.4, fontSize: 10, color: C.accent, bold: true, align: "center", fontFace: "Calibri" });
s.addText([
{ text: "• Oxidase: ", options: { bold: true } }, { text: "Divides Enterobact. vs Non\n" },
{ text: "• MacConkey: ", options: { bold: true } }, { text: "Lactose fermenters (pink)\n" },
{ text: "• H₂S: ", options: { bold: true } }, { text: "Salmonella / Proteus (black ppt)\n" },
{ text: "• IMViC: ", options: { bold: true } }, { text: "Indole, MR, VP, Citrate\n" },
{ text: "• Urease: ", options: { bold: true } }, { text: "Proteus, Klebsiella, H. pylori" },
], { x: 5.9, y: 5.5, w: 3.1, h: 1.65, fontSize: 9, color: C.offWhite, fontFace: "Calibri" });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — GNC FLOWCHART
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.gncOrange } });
s.addText("GNC — GRAM-NEGATIVE COCCI | Diagnostic Flowchart", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 16, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 2,
});
addNode(s, "Gram-Negative Cocci\n(Diplococci / Coffee bean shape)", 4.6, 0.9, 4.1, 0.65, C.gncOrange, C.white, 13);
addVLine(s, 6.65, 1.55, 2.0, C.gncOrange);
addDiamond(s, "OXIDASE\nTEST", 5.4, 2.0, 2.5, 0.85, C.teal);
// All GNC are oxidase positive
addVLine(s, 6.65, 2.85, 3.1, C.gncOrange);
labelText(s, "(+) ALL clinically significant GNC are Oxidase Positive", 3.0, 2.87, 7.3, C.posGreen, 9, true);
addNode(s, "NEISSERIA spp.", 5.1, 3.1, 3.1, 0.6, C.gncOrange, C.white, 13);
addVLine(s, 6.65, 3.7, 4.05, C.gncOrange);
addDiamond(s, "ACID FROM\nSUGARS", 5.4, 4.05, 2.5, 0.85, C.teal);
// N. meningitidis branch
addHLine(s, 3.3, 5.4, 4.47);
labelText(s, "Glucose + Maltose", 2.3, 4.27, 2.5, C.posGreen, 8.5, true);
addNode(s, "N. meningitidis", 2.0, 4.95, 2.5, 0.65, C.gncOrange, C.white, 12);
addVLine(s, 3.25, 4.82, 4.95, C.gncOrange);
addVLine(s, 3.25, 5.6, 5.85, C.gncOrange);
s.addShape(pres.ShapeType.roundRect, {
x: 1.2, y: 5.85, w: 4.1, h: 1.3,
fill: { color: C.navy }, line: { color: C.gncOrange, width: 1 }, rectRadius: 0.08,
});
s.addText([
{ text: "KEY FEATURES\n", options: { bold: true, color: C.accent } },
{ text: "• Glucose + Maltose acid\n• Polysaccharide capsule\n• Causes: MENINGITIS, Septicaemia\n• Medium: Chocolate / Thayer-Martin\n• Droplet spread" },
], { x: 1.25, y: 5.9, w: 4.0, h: 1.2, fontSize: 9, color: C.offWhite, fontFace: "Calibri" });
// N. gonorrhoeae branch
addHLine(s, 7.9, 9.0, 4.47);
labelText(s, "Glucose only", 8.3, 4.27, 1.8, C.negRed, 8.5, true);
addNode(s, "N. gonorrhoeae", 8.5, 4.95, 2.5, 0.65, C.gncOrange, C.white, 12);
addVLine(s, 9.75, 4.82, 4.95, C.gncOrange);
addVLine(s, 9.75, 5.6, 5.85, C.gncOrange);
s.addShape(pres.ShapeType.roundRect, {
x: 7.7, y: 5.85, w: 4.1, h: 1.3,
fill: { color: C.navy }, line: { color: C.gncOrange, width: 1 }, rectRadius: 0.08,
});
s.addText([
{ text: "KEY FEATURES\n", options: { bold: true, color: C.accent } },
{ text: "• Glucose acid only (NOT maltose)\n• No capsule, pili for attachment\n• Causes: GONORRHEA, PID, Ophthalmia neonatorum\n• Intracellular diplococci in PMNs\n• Medium: Thayer-Martin (VCNT agar)" },
], { x: 7.75, y: 5.9, w: 4.0, h: 1.2, fontSize: 9, color: C.offWhite, fontFace: "Calibri" });
// Moraxella catarrhalis
addVLine(s, 6.65, 4.9, 5.1, C.arrowGray);
s.addShape(pres.ShapeType.roundRect, {
x: 5.4, y: 5.1, w: 2.5, h: 0.65,
fill: { color: "#78909C" }, line: { color: C.arrowGray, width: 0.5 }, rectRadius: 0.08,
});
s.addText("Moraxella catarrhalis", { x: 5.4, y: 5.1, w: 2.5, h: 0.65, fontSize: 10, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
addVLine(s, 6.65, 5.75, 5.95, C.arrowGray);
s.addText("DNase (+), Butyrate (+), No acid from sugars\nOtitis media, LRTI, Elderly patients", {
x: 5.3, y: 5.95, w: 2.7, h: 0.7, fontSize: 8.5, color: C.navy, align: "center", fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — GPB FLOWCHART
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.gpbPurp } });
s.addText("GPB — GRAM-POSITIVE BACILLI | Diagnostic Flowchart", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 16, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 2,
});
addNode(s, "Gram-Positive Bacilli", 5.0, 0.85, 3.3, 0.6, C.gpbPurp, C.white, 13);
addVLine(s, 6.65, 1.45, 1.9, C.gpbPurp);
addDiamond(s, "SPORE\nFORMING?", 5.4, 1.9, 2.5, 0.85, C.teal);
// Spore forming - YES
addHLine(s, 3.1, 5.4, 2.32);
labelText(s, "YES", 3.4, 2.12, 1.0, C.posGreen, 9, true);
addNode(s, "SPORE-FORMING\nBACILLI", 2.0, 2.75, 2.2, 0.65, C.gpbPurp, C.white, 11);
addVLine(s, 3.1, 2.62, 2.75, C.gpbPurp);
addVLine(s, 3.1, 3.4, 3.7, C.gpbPurp);
addDiamond(s, "AEROBIC /\nANAEROBIC?", 2.0, 3.7, 2.2, 0.8, C.teal);
// Aerobic spore forming
addHLine(s, 0.3, 2.0, 4.1);
labelText(s, "Aerobic", 0.3, 3.9, 1.0, C.posGreen, 8.5, true);
addNode(s, "Bacillus spp.\n(Aerobic)", 0.1, 4.65, 1.8, 0.65, C.gpbPurp, C.white, 10);
addVLine(s, 1.0, 4.55, 4.65, C.gpbPurp);
addVLine(s, 1.0, 5.3, 5.5, C.gpbPurp);
s.addShape(pres.ShapeType.roundRect, { x: 0.1, y: 5.5, w: 1.8, h: 1.55, fill: { color: C.navy }, line: { color: C.gpbPurp, width: 1 }, rectRadius: 0.08 });
s.addText("B. anthracis\n(No hemolysis,\nString of pearls)\nB. cereus\n(Food poisoning)", { x: 0.15, y: 5.55, w: 1.7, h: 1.45, fontSize: 8.5, color: C.offWhite, fontFace: "Calibri" });
// Anaerobic spore forming
addHLine(s, 4.2, 5.2, 4.1);
labelText(s, "Anaerobic", 4.0, 3.9, 1.4, C.negRed, 8.5, true);
addNode(s, "Clostridium spp.\n(Anaerobic)", 4.0, 4.65, 2.0, 0.65, C.gpbPurp, C.white, 10);
addVLine(s, 5.0, 4.55, 4.65, C.gpbPurp);
// Clostridium branches
addVLine(s, 5.0, 5.3, 5.5, C.gpbPurp);
s.addShape(pres.ShapeType.roundRect, { x: 3.6, y: 5.5, w: 2.8, h: 1.55, fill: { color: C.navy }, line: { color: C.gpbPurp, width: 1 }, rectRadius: 0.08 });
s.addText([
{ text: "C. perfringens ", options: { bold: true } }, { text: "— Double β-hemolysis, Stormy clot, Lecithinase+\n" },
{ text: "C. tetani ", options: { bold: true } }, { text: "— Drumstick spore, Spastic paralysis\n" },
{ text: "C. botulinum ", options: { bold: true } }, { text: "— Flaccid paralysis, Honey in infants\n" },
{ text: "C. difficile ", options: { bold: true } }, { text: "— Toxin A+B, Pseudomembranous colitis" },
], { x: 3.65, y: 5.55, w: 2.7, h: 1.45, fontSize: 8.5, color: C.offWhite, fontFace: "Calibri" });
// Non-spore forming - NO
addHLine(s, 7.9, 9.5, 2.32);
labelText(s, "NO", 8.5, 2.12, 1.0, C.negRed, 9, true);
addNode(s, "NON-SPORE\nFORMING", 8.8, 2.75, 2.2, 0.65, C.gpbPurp, C.white, 11);
addVLine(s, 9.9, 2.62, 2.75, C.gpbPurp);
addVLine(s, 9.9, 3.4, 3.7, C.gpbPurp);
addDiamond(s, "MOTILITY &\nHEMOLYSIS", 8.8, 3.7, 2.2, 0.8, C.teal);
// Listeria branch
addHLine(s, 7.5, 8.8, 4.1);
labelText(s, "β-hemolytic\nMotile (tumbling)", 6.6, 3.8, 2.2, C.posGreen, 8.5, true);
addNode(s, "Listeria\nmonocytogenes", 6.5, 4.65, 2.0, 0.65, C.gpbPurp, C.white, 10);
addVLine(s, 7.5, 4.55, 4.65, C.gpbPurp);
addVLine(s, 7.5, 5.3, 5.5, C.gpbPurp);
s.addShape(pres.ShapeType.roundRect, { x: 6.2, y: 5.5, w: 2.5, h: 1.55, fill: { color: C.navy }, line: { color: C.gpbPurp, width: 1 }, rectRadius: 0.08 });
s.addText("• Tumbling motility at 4°C\n• CAMP test (+)\n• Cold enrichment\n• Meningitis: neonates/elderly\n• Unpasteurized dairy", { x: 6.25, y: 5.55, w: 2.4, h: 1.45, fontSize: 8.5, color: C.offWhite, fontFace: "Calibri" });
// Corynebacterium branch
addHLine(s, 11.0, 11.5, 4.1);
labelText(s, "Non-hemolytic\nNon-motile", 10.8, 3.8, 1.8, C.negRed, 8.5, true);
addNode(s, "Corynebacterium\ndiphtheriae", 10.5, 4.65, 2.2, 0.65, C.gpbPurp, C.white, 10);
addVLine(s, 11.6, 4.55, 4.65, C.gpbPurp);
addVLine(s, 11.6, 5.3, 5.5, C.gpbPurp);
s.addShape(pres.ShapeType.roundRect, { x: 10.2, y: 5.5, w: 2.7, h: 1.55, fill: { color: C.navy }, line: { color: C.gpbPurp, width: 1 }, rectRadius: 0.08 });
s.addText("• Metachromatic granules\n• Chinese-letter pattern\n• Elek test (toxin)\n• Tellurite agar (black)\n• Diphtheria — pseudomembrane", { x: 10.25, y: 5.55, w: 2.6, h: 1.45, fontSize: 8.5, color: C.offWhite, fontFace: "Calibri" });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — BIOCHEMICAL TESTS REFERENCE TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.accent } });
s.addText("KEY BIOCHEMICAL TESTS — Quick Reference", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 18, color: C.navy, bold: true, fontFace: "Calibri", charSpacing: 2,
});
const rows = [
["TEST", "PRINCIPLE", "(+) RESULT", "KEY ORGANISMS", "GROUP"],
["Catalase", "H₂O₂ → H₂O + O₂", "Bubbles", "Staphylococcus (+) vs Streptococcus (−)", "GPC"],
["Coagulase", "Clots plasma fibrinogen", "Clot forms", "S. aureus (+) vs CoNS (−)", "GPC"],
["Oxidase", "Cytochrome c oxidase", "Blue-purple colour", "Pseudomonas, Neisseria (+)", "GNC/GNB"],
["Optochin", "Inhibits S. pneumoniae", "Zone of inhibition", "S. pneumoniae (S) vs Viridans (R)", "GPC"],
["Bacitracin", "Inhibits Group A Strep", "Zone ≥ 10 mm", "S. pyogenes (S) vs others (R)", "GPC"],
["CAMP Test", "Enhanced hemolysis", "Arrowhead β-hemolysis", "S. agalactiae Group B (+)", "GPC"],
["PYR Test", "Pyrrolidonyl peptidase", "Red colour", "S. pyogenes, E. faecalis (+)", "GPC"],
["Novobiocin", "Inhibits CoNS", "Zone of inhibition", "S. epidermidis (S) vs S. saprophyticus (R)", "GPC"],
["Indole (I)", "Tryptophanase + Kovac's", "Red ring", "E. coli (+), Klebsiella (−)", "GNB"],
["Methyl Red (M)", "Mixed acid fermentation", "Red colour", "E. coli, Salmonella (+)", "GNB"],
["Voges-Proskauer (V)", "2,3-butanediol prod.", "Red colour (VP reagent)", "Klebsiella, Enterobacter (+)", "GNB"],
["Citrate (C)", "Citrate as C-source", "Blue (Simmon's agar)", "Klebsiella, Enterobacter (+)", "GNB"],
["Urease", "Urea → NH₃ + CO₂", "Pink (Christensen's)", "Proteus, Klebsiella, H. pylori (+)", "GNB"],
["H₂S Production", "Sulfur reduction → FeS", "Black precipitate", "Salmonella, Proteus (+)", "GNB"],
["Elek Test", "Immunodiffusion toxin", "Precipitin line", "C. diphtheriae toxin (+)", "GPB"],
["Nagler's Reaction", "Lecithinase activity", "Turbidity halved", "C. perfringens (+)", "GPB"],
];
const groupColors = { GPC: C.gpcBlue, GNC: C.gncOrange, GNB: C.gnbGreen, GPB: C.gpbPurp };
const colW = [1.6, 2.4, 2.1, 4.2, 0.85];
const colX = [0.15, 1.8, 4.25, 6.4, 10.65];
const rowH = 0.36;
const startY = 0.75;
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
const y = startY + ri * rowH;
const isHeader = ri === 0;
const grp = row[4];
let bg = isHeader ? C.teal : (ri % 2 === 0 ? "#1A3050" : C.midBlue);
if (!isHeader && ci === 4) bg = groupColors[grp] || C.midBlue;
s.addShape(pres.ShapeType.rect, {
x: colX[ci], y, w: colW[ci], h: rowH,
fill: { color: bg }, line: { color: C.navy, width: 0.3 },
});
s.addText(cell, {
x: colX[ci] + 0.05, y, w: colW[ci] - 0.1, h: rowH,
fontSize: isHeader ? 9 : 7.8,
color: C.white, bold: isHeader, fontFace: "Calibri",
align: ci === 0 ? "left" : "left", valign: "middle", margin: 1,
});
});
});
// Footer
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.15, w: 13.3, h: 0.35, fill: { color: C.accent } });
s.addText("I = Indole • M = Methyl Red • V = Voges-Proskauer • C = Citrate → IMViC pattern distinguishes E. coli (++-−) from Klebsiella (−−++) from Enterobacter (−−++)", {
x: 0.3, y: 7.17, w: 12.7, h: 0.3, fontSize: 9, color: C.navy, bold: true, align: "center", fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — IMViC PATTERN TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.offWhite } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.gnbGreen } });
s.addText("IMViC TESTS — Differentiating Gram-Negative Bacilli", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 17, color: C.white, bold: true, fontFace: "Calibri", charSpacing: 2,
});
// IMViC explanation boxes
const tests = [
{ letter: "I", name: "INDOLE", principle: "Tryptophanase breaks down tryptophan\n→ Indole detected by Kovac's reagent", pos: "Red ring at surface", neg: "No colour change", color: "#1565C0" },
{ letter: "M", name: "METHYL RED", principle: "Mixed acid fermentation\n→ Lowers pH below 4.4", pos: "RED colour", neg: "Yellow/orange (VP+)", color: "#2E7D32" },
{ letter: "V", name: "VOGES-PROSKAUER", principle: "2,3-butanediol production\nBarritt's reagent A+B", pos: "RED colour", neg: "No colour change", color: "#6A1B9A" },
{ letter: "C", name: "CITRATE", principle: "Citrate as sole carbon source\nAlkaline shift (Simmon's agar)", pos: "BLUE (Prussian blue)", neg: "Green (no change)", color: "#E65100" },
];
tests.forEach((t, i) => {
const x = 0.3 + i * 3.2;
s.addShape(pres.ShapeType.roundRect, { x, y: 0.8, w: 3.0, h: 2.6, fill: { color: t.color }, line: { color: C.white, width: 0.5 }, rectRadius: 0.1 });
s.addText(t.letter, { x, y: 0.85, w: 3.0, h: 0.8, fontSize: 32, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
s.addText(t.name, { x, y: 1.6, w: 3.0, h: 0.4, fontSize: 10, color: C.accent, bold: true, align: "center", fontFace: "Calibri" });
s.addText(t.principle, { x: x+0.1, y: 2.0, w: 2.8, h: 0.8, fontSize: 8.5, color: C.offWhite, align: "center", fontFace: "Calibri" });
s.addShape(pres.ShapeType.roundRect, { x: x+0.15, y: 2.85, w: 1.25, h: 0.4, fill: { color: C.posGreen }, line: { color: C.posGreen }, rectRadius: 0.05 });
s.addText("(+) " + t.pos, { x: x+0.15, y: 2.85, w: 1.25, h: 0.4, fontSize: 7.5, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
s.addShape(pres.ShapeType.roundRect, { x: x+1.5, y: 2.85, w: 1.25, h: 0.4, fill: { color: C.negRed }, line: { color: C.negRed }, rectRadius: 0.05 });
s.addText("(−) " + t.neg, { x: x+1.5, y: 2.85, w: 1.25, h: 0.4, fontSize: 7.5, color: C.white, bold: true, align: "center", fontFace: "Calibri" });
});
// IMViC result table
s.addText("IMViC PATTERN COMPARISON TABLE", {
x: 0.3, y: 3.5, w: 12.7, h: 0.4, fontSize: 13, color: C.navy, bold: true, fontFace: "Calibri",
});
const imvicData = [
["Organism", "Indole (I)", "Methyl Red (M)", "VP (V)", "Citrate (C)", "Lactose", "H₂S", "Urease"],
["E. coli", "+", "+", "−", "−", "+", "−", "−"],
["Klebsiella pneumoniae", "−", "−", "+", "+", "+", "−", "+"],
["Enterobacter cloacae", "−", "−", "+", "+", "+", "−", "−"],
["Salmonella typhi", "−", "+", "−", "−", "−", "+", "−"],
["Salmonella (non-typhi)", "−", "+", "−", "+", "−", "+", "−"],
["Shigella spp.", "−/+", "+", "−", "−", "−", "−", "−"],
["Proteus mirabilis", "−", "+", "−", "+", "−", "+", "+"],
["Yersinia enterocolitica", "+", "+", "−", "−", "−", "−", "+"],
["Vibrio cholerae", "+", "−", "+", "+", "−", "−", "−"],
];
const imCols = [2.8, 1.0, 1.3, 1.0, 1.0, 0.9, 0.8, 0.9];
const imX = [0.15, 3.0, 4.05, 5.4, 6.45, 7.5, 8.45, 9.3];
const imRowH = 0.38;
const imStartY = 3.95;
imvicData.forEach((row, ri) => {
row.forEach((cell, ci) => {
const y = imStartY + ri * imRowH;
let bg = ri === 0 ? C.navy : (ri % 2 === 0 ? "#E8F4E8" : C.white);
if (ri > 0 && ci > 0) {
if (cell === "+") bg = "#C8E6C9";
else if (cell === "−") bg = "#FFCDD2";
else bg = "#FFF9C4";
}
s.addShape(pres.ShapeType.rect, {
x: imX[ci], y, w: imCols[ci], h: imRowH,
fill: { color: bg }, line: { color: "#CCCCCC", width: 0.3 },
});
s.addText(cell, {
x: imX[ci]+0.05, y, w: imCols[ci]-0.1, h: imRowH,
fontSize: ri === 0 ? 8.5 : 9, color: ri === 0 ? C.white : C.navy,
bold: ri === 0 || ci === 0, fontFace: "Calibri",
align: ci === 0 ? "left" : "center", valign: "middle", margin: 1,
});
});
});
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.15, w: 13.3, h: 0.35, fill: { color: C.gnbGreen } });
s.addText("GREEN = Positive | RED = Negative | YELLOW = Variable • Mnemonic: IMViC = I is Indole, M is Methyl Red, V is Voges-Proskauer, C is Citrate", {
x: 0.3, y: 7.18, w: 12.7, h: 0.28, fontSize: 8.5, color: C.white, bold: true, align: "center", fontFace: "Calibri",
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — CLINICAL EXAMPLES SUMMARY
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.65, fill: { color: C.accent } });
s.addText("CLINICAL CORRELATES — Organism → Disease", {
x: 0.3, y: 0.1, w: 12.7, h: 0.45, fontSize: 18, color: C.navy, bold: true, fontFace: "Calibri", charSpacing: 2,
});
const groups = [
{
title: "GPC — Gram-Positive Cocci", color: C.gpcBlue, x: 0.15, y: 0.75, w: 3.1,
items: [
"S. aureus → MRSA, Boils, Food poisoning, TSS",
"S. pyogenes → Strep throat, Rheumatic fever",
"S. pneumoniae → Pneumonia, Meningitis, Otitis",
"S. agalactiae → Neonatal meningitis/sepsis",
"S. epidermidis → Catheter biofilm, Prosthetic valve",
"S. saprophyticus → UTI (young women)",
"E. faecalis → Endocarditis, UTI",
],
},
{
title: "GNC — Gram-Negative Cocci", color: C.gncOrange, x: 3.4, y: 0.75, w: 3.1,
items: [
"N. meningitidis → Bacterial meningitis, Septicaemia",
"N. gonorrhoeae → Gonorrhea, PID, Ophthalmia neon.",
"M. catarrhalis → Otitis media, Sinusitis, LRTI",
"",
"BOTH: Oxidase (+), diplococcal morphology",
"DIFF: Maltose (+) → Meningitidis",
"DIFF: Maltose (−) → Gonorrhoeae",
],
},
{
title: "GNB — Gram-Negative Bacilli", color: C.gnbGreen, x: 6.65, y: 0.75, w: 3.1,
items: [
"E. coli → UTI, Neonatal meningitis, Traveller's diarrhea",
"Klebsiella → Lobar pneumonia, UTI, Liver abscess",
"Salmonella typhi → Typhoid, Rose spots, Widal+",
"Shigella → Bloody dysentery (non-motile, H₂S−)",
"Pseudomonas → Burns, CF, Nosocomial (pyocyanin)",
"Vibrio cholerae → Rice-water stool, dehydration",
"Proteus → UTI, swarming on agar, urease+",
],
},
{
title: "GPB — Gram-Positive Bacilli", color: C.gpbPurp, x: 9.9, y: 0.75, w: 3.25,
items: [
"B. anthracis → Anthrax (no spore in vivo, antiphagocytic)",
"C. perfringens → Gas gangrene, Food poisoning",
"C. tetani → Tetanus (spastic, drumstick spore)",
"C. botulinum → Flaccid paralysis, Honey→infants",
"C. difficile → Pseudomembranous colitis, Toxin A+B",
"L. monocytogenes → Neonatal/elderly meningitis",
"C. diphtheriae → Diphtheria, Pseudomembrane, Elek+",
],
},
];
groups.forEach(g => {
s.addShape(pres.ShapeType.roundRect, { x: g.x, y: g.y, w: g.w, h: 6.45, fill: { color: "#0F2740" }, line: { color: g.color, width: 1.5 }, rectRadius: 0.1 });
s.addShape(pres.ShapeType.roundRect, { x: g.x, y: g.y, w: g.w, h: 0.5, fill: { color: g.color }, line: { color: g.color }, rectRadius: 0.1 });
s.addText(g.title, { x: g.x+0.05, y: g.y, w: g.w-0.1, h: 0.5, fontSize: 9.5, color: C.white, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });
g.items.forEach((item, ii) => {
if (!item) return;
const iy = g.y + 0.6 + ii * 0.83;
const parts = item.split("→");
s.addText([
{ text: parts[0] + "→", options: { bold: true, color: g.color } },
{ text: parts[1] || "", options: { color: C.offWhite } },
], { x: g.x+0.12, y: iy, w: g.w-0.24, h: 0.78, fontSize: 8.8, fontFace: "Calibri", valign: "top" });
});
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — END / SUMMARY
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.navy } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 0.06, fill: { color: C.accent } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 7.44, w: 13.3, h: 0.06, fill: { color: C.accent } });
s.addText("DIAGNOSTIC ALGORITHM SUMMARY", {
x: 1, y: 0.5, w: 11.3, h: 0.8, fontSize: 28, color: C.white, bold: true, align: "center", fontFace: "Calibri", charSpacing: 3,
});
const steps = [
{ n: "1", title: "GRAM STAIN", body: "Purple (Gram+) or Pink (Gram−)\nCell shape: Cocci vs Bacilli", color: C.teal },
{ n: "2", title: "CATALASE / OXIDASE", body: "GPC: Catalase → Staphylococcus vs Streptococcus\nGNC/GNB: Oxidase → Neisseria / Pseudomonas", color: C.gpcBlue },
{ n: "3", title: "PRIMARY TESTS", body: "Coagulase / Hemolysis / Lactose (MacConkey)\nSugar fermentation / Motility / Spore stain", color: C.gnbGreen },
{ n: "4", title: "CONFIRMATORY TESTS", body: "IMViC / Novobiocin / Optochin / CAMP / Elek\nMass spec (MALDI-TOF) / Molecular probes", color: C.gpbPurp },
{ n: "5", title: "FINAL ID + SENSITIVITIES", body: "Species identification + Antibiogram (MIC)\nReport to clinician — guide targeted therapy", color: C.gncOrange },
];
steps.forEach((st, i) => {
const y = 1.5 + i * 1.05;
s.addShape(pres.ShapeType.roundRect, { x: 1.0, y, w: 11.3, h: 0.9, fill: { color: "#132235" }, line: { color: st.color, width: 1.5 }, rectRadius: 0.08 });
s.addShape(pres.ShapeType.roundRect, { x: 1.0, y, w: 0.7, h: 0.9, fill: { color: st.color }, line: { color: st.color }, rectRadius: 0.08 });
s.addText(st.n, { x: 1.0, y, w: 0.7, h: 0.9, fontSize: 22, color: C.white, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });
s.addText(st.title, { x: 1.8, y: y+0.05, w: 3.0, h: 0.4, fontSize: 11, color: st.color, bold: true, fontFace: "Calibri" });
s.addText(st.body, { x: 1.8, y: y+0.44, w: 10.3, h: 0.42, fontSize: 8.8, color: C.offWhite, fontFace: "Calibri" });
if (i < steps.length - 1) {
s.addShape(pres.ShapeType.line, { x: 6.4, y: y+0.9, w: 0, h: 0.15, line: { color: C.accent, width: 1.5, endArrowType: "arrow" } });
}
});
s.addText("Source: Medical Microbiology 9e (Murray) • Jawetz Medical Microbiology 28e • Sherris & Ryan's Medical Microbiology 8e", {
x: 1, y: 7.1, w: 11.3, h: 0.3, fontSize: 8.5, color: "#5A7A9A", align: "center", fontFace: "Calibri",
});
}
// ── Write file ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/bacteriology-pptx/Bacteriology_Diagnostic_Flowcharts.pptx" })
.then(() => console.log("SUCCESS: File written."))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
cd /home/daytona/workspace/bacteriology-pptx && node build.js 2>&1
ls -lh /home/daytona/workspace/bacteriology-pptx/Bacteriology_Diagnostic_Flowcharts.pptx
Bacteriology Diagnostic Flowcharts
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 - Title | Bold dark-navy opener with 4 color-coded group badges (GPC/GNC/GNB/GPB) |
| 2 - Master Algorithm | Single-page overview: Gram Stain → Shape → 4 branches with navigation arrows |
| 3 - GPC Flowchart | Catalase → Coagulase → Hemolysis → Optochin/Bacitracin → specific species |
| 4 - GNB Flowchart | Oxidase → Lactose (MacConkey) → H₂S → Enterobacteriaceae vs Non-Enterobact. |
| 5 - GNC Flowchart | Oxidase (+) → Sugar fermentation → N. meningitidis vs N. gonorrhoeae + Moraxella |
| 6 - GPB Flowchart | Spore-forming → Aerobic/Anaerobic → Bacillus/Clostridium/Listeria/Corynebacterium |
| 7 - Biochemical Tests | 16-row reference table: test, principle, (+) result, key organisms, group |
| 8 - IMViC Table | Explanation boxes + color-coded comparison table (green=+, red=−) for 10 organisms |
| 9 - Clinical Correlates | 4-column layout: every group → organism → disease clue |
| 10 - Summary Algorithm | 5-step diagnostic workflow for presenting to students |