D test microbiology
| Mechanism | Gene | Cross-resistance to Clindamycin? |
|---|---|---|
| Active efflux pump | msrA/msrB | No |
| Macrolide-inactivating enzymes | - | No |
| Ribosomal methylation | erm gene | Yes (inducible or constitutive) |

| Finding | Interpretation | Report |
|---|---|---|
| Circular zone around C disk (A) | D-test negative - no inducible resistance | Clindamycin susceptible - safe to use |
| D-shaped (flattened) zone around C disk toward E (B) | D-test positive - inducible clindamycin resistance present | Report as resistant; avoid clindamycin |
| No zone around both E and C | Constitutive MLS-B resistance | Both reported as resistant |

| Feature | Detail |
|---|---|
| Test name | D test / Double-disk diffusion / D-zone test |
| Purpose | Detect inducible MLS-B (clindamycin) resistance |
| Gene involved | erm (erythromycin ribosomal methylase) |
| Disks used | Erythromycin (E) + Clindamycin (CC) |
| Disk spacing | 15-17 mm apart (edge-to-edge) |
| Positive result | D-shaped flattening of clindamycin zone toward erythromycin |
| Clinical action if positive | Do NOT use clindamycin (report as resistant) |
| Organisms | S. aureus, CoNS, GBS, GAS, S. pneumoniae |
| Guideline | CLSI M100 |
Wow good job
I’m doing md microbiology..
Generate a quick reference PDF on CLSI standards & breakpoints
mkdir -p /home/daytona/workspace/clsi-reference && ls /home/daytona/workspace/clsi-reference/
~/clsi-reference/generate_clsi_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
# ── Color Palette ─────────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1A3A5C")
TEAL = colors.HexColor("#0D7680")
LIGHT_TEAL = colors.HexColor("#E6F4F5")
GOLD = colors.HexColor("#E8A020")
LIGHT_GOLD = colors.HexColor("#FFF8EC")
RED = colors.HexColor("#C0392B")
GREEN = colors.HexColor("#1A7A4A")
ORANGE = colors.HexColor("#D35400")
GREY_DARK = colors.HexColor("#2C3E50")
GREY_MID = colors.HexColor("#7F8C8D")
GREY_LIGHT = colors.HexColor("#ECF0F1")
WHITE = colors.white
PURPLE = colors.HexColor("#6C3483")
LIGHT_PURPLE = colors.HexColor("#F4ECF7")
doc_path = "/home/daytona/workspace/clsi-reference/CLSI_Standards_Quick_Reference.pdf"
doc = SimpleDocTemplate(
doc_path,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="CLSI Standards & Breakpoints – Quick Reference",
author="MD Microbiology Quick Reference"
)
styles = getSampleStyleSheet()
W = A4[0] - 3.6*cm # usable width
# ── Custom Styles ──────────────────────────────────────────────────────────────
def style(name, **kw):
return ParagraphStyle(name, **kw)
cover_title = style("CoverTitle", fontSize=28, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, spaceAfter=8, leading=34)
cover_sub = style("CoverSub", fontSize=14, textColor=LIGHT_TEAL, fontName="Helvetica",
alignment=TA_CENTER, spaceAfter=4)
cover_note = style("CoverNote", fontSize=10, textColor=GREY_LIGHT, fontName="Helvetica-Oblique",
alignment=TA_CENTER)
h1 = style("H1", fontSize=15, textColor=WHITE, fontName="Helvetica-Bold",
spaceBefore=4, spaceAfter=4, leading=18)
h2 = style("H2", fontSize=12, textColor=NAVY, fontName="Helvetica-Bold",
spaceBefore=8, spaceAfter=3, leading=15)
h3 = style("H3", fontSize=10, textColor=TEAL, fontName="Helvetica-Bold",
spaceBefore=5, spaceAfter=2, leading=13)
body = style("Body", fontSize=9, textColor=GREY_DARK, fontName="Helvetica",
spaceAfter=3, leading=13, alignment=TA_JUSTIFY)
body_b = style("BodyB", fontSize=9, textColor=GREY_DARK, fontName="Helvetica-Bold",
spaceAfter=3, leading=13)
bullet_s = style("Bullet", fontSize=9, textColor=GREY_DARK, fontName="Helvetica",
spaceAfter=2, leading=12, leftIndent=14, bulletIndent=4)
small = style("Small", fontSize=8, textColor=GREY_MID, fontName="Helvetica-Oblique",
spaceAfter=2, leading=11)
key_point = style("KP", fontSize=9, textColor=NAVY, fontName="Helvetica-Bold",
spaceAfter=1, leading=12, leftIndent=6)
footer_s = style("Footer", fontSize=7, textColor=GREY_MID, fontName="Helvetica",
alignment=TA_CENTER)
# ── Helper Flowables ───────────────────────────────────────────────────────────
class ColorBox(Flowable):
"""Colored header banner with text."""
def __init__(self, text, bg=NAVY, text_style=None, padding=8, radius=4):
super().__init__()
self.text = text
self.bg = bg
self.tstyle = text_style or h1
self.pad = padding
self.radius = radius
self.width = W
self.height = 28
def draw(self):
c = self.canv
c.setFillColor(self.bg)
c.roundRect(0, 0, self.width, self.height, self.radius, fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont("Helvetica-Bold", 12)
c.drawString(self.pad, 9, self.text)
class SectionDivider(Flowable):
def __init__(self, color=TEAL):
super().__init__()
self.color = color
self.width = W
self.height = 3
def draw(self):
c = self.canv
c.setFillColor(self.color)
c.rect(0, 1, self.width, 2, fill=1, stroke=0)
def hr(color=GREY_LIGHT, thickness=0.5):
return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=4, spaceBefore=4)
def section_banner(text, bg=NAVY):
return [Spacer(1, 6), ColorBox(text, bg=bg), Spacer(1, 6)]
def info_box(title, items, bg=LIGHT_TEAL, title_color=TEAL):
"""Render a shaded info box."""
rows = []
for it in items:
rows.append([Paragraph(f"• {it}", bullet_s)])
t = Table([[Paragraph(title, style("IBTitle", fontSize=9, textColor=title_color,
fontName="Helvetica-Bold", spaceAfter=2, leading=12))]],
colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
t2 = Table([[Paragraph(f"• {it}", bullet_s)] for it in items], colWidths=[W])
t2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING",(0,0),(-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 14),
]))
return [t, t2, Spacer(1, 4)]
def two_col_table(headers, rows, col_widths=None, header_bg=NAVY):
if col_widths is None:
col_widths = [W/len(headers)]*len(headers)
data = [headers] + rows
t = Table(data, colWidths=col_widths, repeatRows=1)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), header_bg),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, GREY_LIGHT]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
]
t.setStyle(TableStyle(style_cmds))
return [t, Spacer(1, 6)]
def P(text, st=None):
return Paragraph(text, st or body)
def B(text):
return Paragraph(f"• {text}", bullet_s)
# ══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════════════════
story = []
# Cover background table
cover_data = [[
Paragraph("CLSI Standards & Breakpoints", cover_title),
Paragraph("Quick Reference for MD Microbiology", cover_sub),
Paragraph("Clinical & Laboratory Standards Institute | AST Methods | Breakpoints | QC | Resistance Detection", cover_note),
Spacer(1, 12),
Paragraph("Based on CLSI M02, M07, M11, M100 (2020) | Henry's Clinical Diagnosis | Tietz Textbook | Goldman-Cecil Medicine", cover_note),
]]
cover_table = Table([
[Paragraph("CLSI Standards & Breakpoints", cover_title)],
[Paragraph("Quick Reference for MD Microbiology", cover_sub)],
[Spacer(1, 10)],
[Paragraph("Clinical & Laboratory Standards Institute | AST Methods | Breakpoints | QC | Resistance Detection", cover_note)],
[Spacer(1, 6)],
[Paragraph("CLSI M02 · M07 · M11 · M100 (2020 edition)", cover_note)],
[Spacer(1, 30)],
[Paragraph("Compiled for MD Microbiology Exam Preparation", cover_note)],
[Paragraph("July 2026", cover_note)],
], colWidths=[W])
cover_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING",(0,0),(-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 24),
("RIGHTPADDING",(0,0), (-1,-1), 24),
("ROUNDEDCORNERS", [10]),
]))
story.append(Spacer(1, 60))
story.append(cover_table)
story.append(Spacer(1, 30))
# Cover quick-nav strip
nav_items = ["1. CLSI Overview", "2. Key Definitions", "3. Methods of AST",
"4. Breakpoint Categories", "5. Important Breakpoints",
"6. QC Standards", "7. Special Organisms", "8. Resistance Phenotypes", "9. Antibiogram"]
nav_data = [[Paragraph(n, style("NavItem", fontSize=8, textColor=NAVY, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=11))] for n in nav_items]
# 3-column grid
rows3 = []
for i in range(0, len(nav_items), 3):
row = nav_items[i:i+3]
while len(row) < 3:
row.append("")
rows3.append([Paragraph(r, style("NavItem2", fontSize=9, textColor=NAVY, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=12)) for r in row])
nav_table = Table(rows3, colWidths=[W/3]*3)
nav_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_TEAL),
("GRID", (0,0), (-1,-1), 0.5, TEAL),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(Paragraph("<b>Contents at a Glance</b>",
style("NavHead", fontSize=11, textColor=NAVY, fontName="Helvetica-Bold",
spaceAfter=4, alignment=TA_CENTER)))
story.append(nav_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 1 – CLSI OVERVIEW
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("1. CLSI OVERVIEW", bg=NAVY)
story.append(P("The <b>Clinical and Laboratory Standards Institute (CLSI)</b> is a global, nonprofit, standards-developing organization that defines and promotes best practices in clinical laboratory testing. Its antimicrobial susceptibility testing (AST) documents set the benchmark for microbiology laboratories in the United States and many international centers."))
story.append(Spacer(1,4))
story.append(P("<b>Core CLSI AST Documents:</b>", body_b))
doc_rows = [
["M02", "Disk Diffusion – Performance Standards", "Annually updated"],
["M07", "Broth Dilution – Performance Standards", "Annually updated"],
["M11", "Anaerobic Bacteria AST", "Periodic update"],
["M100", "Performance Standards for AST – MIC & Zone Breakpoints", "Annually updated (key table document)"],
["M45", "Fastidious Bacteria (H. influenzae, N. gonorrhoeae, etc.)", "Periodic update"],
["M27", "Yeasts – Broth Dilution AST", "Periodic update"],
["M38", "Filamentous Fungi AST", "Periodic update"],
["M44", "Disk Diffusion – Yeasts", "Periodic update"],
]
story += two_col_table(
[Paragraph("<b>Document</b>", style("TH", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Covers</b>", style("TH", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("<b>Update Cycle</b>", style("TH", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold"))],
[[Paragraph(r[0], body), Paragraph(r[1], body), Paragraph(r[2], small)] for r in doc_rows],
col_widths=[1.5*cm, 11*cm, 4*cm], header_bg=NAVY
)
story.append(P("The Subcommittee on Antimicrobial Susceptibility Testing revises most documents on a <b>3-year cycle</b> for text and <b>yearly</b> for MIC/zone breakpoint tables."))
story.append(Spacer(1, 8))
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 2 – KEY DEFINITIONS
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("2. KEY DEFINITIONS", bg=TEAL)
def_rows = [
["MIC\n(Minimum Inhibitory Concentration)",
"The LOWEST concentration of an antibiotic that inhibits visible growth of an organism in vitro after standardized incubation. Expressed in µg/mL."],
["MBC\n(Minimum Bactericidal Concentration)",
"The lowest concentration that kills ≥99.9% of the original inoculum. MBC/MIC ratio ≤4 = bactericidal; >4 = bacteriostatic."],
["Breakpoint",
"A pre-defined MIC (or zone diameter) value that separates susceptible from non-susceptible organisms. Set by CLSI using pharmacokinetic/pharmacodynamic (PK/PD) data, clinical outcome data, and epidemiological cut-off values (ECOFFs)."],
["ECOFF\n(Epidemiological Cut-off Value)",
"The MIC or zone diameter that separates wild-type organisms (no acquired resistance) from those with acquired resistance mechanisms. Used by EUCAST."],
["PK/PD Breakpoints",
"Derived from pharmacokinetic (drug levels in body) and pharmacodynamic (drug-bug interaction) parameters. The key PD indices are: Time>MIC (β-lactams), AUC/MIC (fluoroquinolones, aminoglycosides), Cmax/MIC (aminoglycosides)."],
]
t = Table([[Paragraph(f"<b>{r[0]}</b>", style("DefTerm", fontSize=9, textColor=NAVY,
fontName="Helvetica-Bold", leading=12, spaceAfter=1)),
Paragraph(r[1], body)] for r in def_rows],
colWidths=[4.5*cm, 12.5*cm])
t.setStyle(TableStyle([
("ROWBACKGROUNDS", (0,0), (-1,-1), [WHITE, LIGHT_TEAL]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1, 8))
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 3 – METHODS OF AST
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("3. METHODS OF ANTIMICROBIAL SUSCEPTIBILITY TESTING", bg=PURPLE)
methods_data = [
["Method", "Principle", "Result", "Standard", "Organisms"],
["Disk Diffusion\n(Kirby-Bauer)",
"Antibiotic-impregnated disk on MH agar inoculated with 0.5 McFarland suspension. Zone of inhibition forms after 16-24 h.",
"Zone diameter (mm)\n→ S / I / R",
"CLSI M02",
"Rapidly growing aerobes & facultative anaerobes"],
["Broth Microdilution",
"Serial 2-fold dilutions of antibiotic in cation-adjusted MH broth (CAMHB). Inoculum ~5×10⁵ CFU/mL. Incubate 35°C/16-20 h.",
"MIC (µg/mL)\n→ S / SDD / I / R",
"CLSI M07",
"Most bacteria; gold standard for MIC"],
["Agar Dilution",
"Antibiotic incorporated into MH agar plates. Organism streaked (Steers replicator). Lowest drug-containing plate without growth = MIC.",
"MIC (µg/mL)",
"CLSI M07",
"Research; large-scale testing"],
["Gradient Diffusion\n(E-test / MIC strip)",
"Plastic strip with continuous antibiotic gradient applied to inoculated agar. Elliptical zone intersects strip at MIC value.",
"MIC (µg/mL)",
"Correlates with CLSI",
"Fastidious organisms, single-drug testing"],
["Anaerobic AST",
"Brucella agar + laked sheep blood + hemin + Vit K1 (Wadsworth); or Brucella broth for microdilution.",
"MIC (µg/mL)",
"CLSI M11",
"Anaerobes (B. fragilis group, etc.)"],
["Automated Systems\n(VITEK2, BD Phoenix, MicroScan)",
"Miniaturized broth dilution in plastic cards/panels; turbidity/fluorescence read every 15-60 min.",
"MIC + S/I/R\n(4-8 h)",
"FDA-cleared; CLSI-aligned",
"Most bacteria; high-volume labs"],
]
t = Table(methods_data, colWidths=[3*cm, 5.5*cm, 2.5*cm, 2*cm, 3.5*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), PURPLE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 7.5),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, LIGHT_PURPLE]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
]))
story.append(t)
story.append(Spacer(1,4))
story += info_box("Critical Standardized Conditions (CLSI M02 & M07):", [
"Medium: Mueller-Hinton Agar (MHA) for disk diffusion; Cation-Adjusted MH Broth (CAMHB) for broth dilution",
"Agar depth: 4 mm (for disk diffusion) – too deep → false resistance; too shallow → false susceptibility",
"Inoculum: 0.5 McFarland standard (~1-4 × 10⁸ CFU/mL for disk; ~5 × 10⁵ CFU/mL for broth)",
"Temperature: 35°C ± 2°C | Atmosphere: ambient air (CO₂ for Streptococcus, Haemophilus)",
"Incubation: 16-24 h (general); 20-24 h for Streptococcus; 24 h for MRSA/oxacillin; 48 h for vancomycin screening agar",
"Supplements: 5% sheep blood for Streptococcus disk diffusion; 2.5-5% lysed horse blood for broth; HTM for H. influenzae",
], bg=LIGHT_PURPLE, title_color=PURPLE)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 4 – BREAKPOINT CATEGORIES
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("4. BREAKPOINT CATEGORIES (CLSI M100)", bg=TEAL)
story.append(P("CLSI defines five interpretive categories for AST results:"))
story.append(Spacer(1,4))
cat_data = [
["Category", "Abbreviation", "Definition", "Clinical Implication"],
["Susceptible", "S",
"MIC ≤ susceptible breakpoint. Organism is inhibited by normally achievable drug concentrations.",
"Standard dosing likely to succeed."],
["Susceptible–Dose Dependent", "SDD",
"Organism susceptibility is dependent on achieving maximum drug exposure (higher dose or optimized PK/PD). Introduced in M100 2019.",
"Use higher approved dose or extended infusion. Important for fluconazole/Candida, cephalosporins/Enterobacterales."],
["Intermediate", "I",
"MIC is in the intermediate range. Organism may respond if drug is concentrated at site of infection (e.g., urine) or high doses are used. Acts as a buffer zone.",
"May succeed in UTI (concentrated urine drug levels) or with high-dose regimens. Not the first choice."],
["Non-susceptible", "NS",
"Used when only susceptible breakpoint exists. MIC above susceptible cut-off. No intermediate/resistant categories defined.",
"Treatment likely to fail. Used especially for newer drugs with limited resistance data."],
["Resistant", "R",
"MIC ≥ resistant breakpoint. Normal doses unlikely to achieve therapeutic effect.",
"Treatment with this agent not recommended."],
]
t = Table(cat_data, colWidths=[3.2*cm, 2.2*cm, 7.5*cm, 3.6*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, LIGHT_TEAL]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING",(0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
# Color code the category column
("BACKGROUND", (0,1), (0,1), colors.HexColor("#D5F5E3")), # S - green
("BACKGROUND", (0,2), (0,2), colors.HexColor("#FEF9E7")), # SDD - yellow
("BACKGROUND", (0,3), (0,3), colors.HexColor("#EBF5FB")), # I - blue
("BACKGROUND", (0,4), (0,4), colors.HexColor("#FDEDEC")), # NS - red-ish
("BACKGROUND", (0,5), (0,5), colors.HexColor("#FADBD8")), # R - red
]))
story.append(t)
story.append(Spacer(1,6))
story.append(P("<b>CLSI vs EUCAST – Key Philosophical Differences:</b>", body_b))
ce_rows = [
["Feature", "CLSI (USA)", "EUCAST (Europe)"],
["Intermediate (I) zone", "Buffer zone between S and R; useful for urine/high dose", "Replaced by SDD concept; I = susceptible at increased exposure"],
["Non-susceptible (NS)", "Used when only S breakpoint exists", "Less commonly used"],
["ECOFF", "Uses ECVs (Epidemiological Cut-off Values) as supplement", "ECOFF is central to breakpoint derivation"],
["Update frequency", "Annual (M100 tables)", "Annual (EUCAST tables online)"],
["QC strains", "ATCC reference strains", "EUCAST reference strains + ATCC"],
]
t2 = Table(ce_rows, colWidths=[4.5*cm, 6.5*cm, 5.5*cm], repeatRows=1)
t2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), GREY_DARK),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, GREY_LIGHT]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t2)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 5 – IMPORTANT BREAKPOINTS
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("5. IMPORTANT MIC BREAKPOINTS (CLSI M100) – Selected", bg=GOLD)
story.append(P("All MIC values in <b>µg/mL</b>. S = Susceptible, I = Intermediate, R = Resistant. Values reflect CLSI M100 2020 edition. Always verify with current edition for clinical use.", small))
story.append(Spacer(1,4))
# 5A - S. aureus
story.append(P("<b>5A. Staphylococcus aureus</b>", h2))
sa_rows = [
["Antibiotic", "S (MIC ≤)", "I (MIC)", "R (MIC ≥)", "Notes"],
["Oxacillin (MSSA only)", "≤ 2", "—", "≥ 4", "Resistant = MRSA. Use disk ≥ 13 mm = S"],
["Penicillin", "≤ 0.12", "—", "≥ 0.25", "β-lactamase negative strains only"],
["Vancomycin", "≤ 2", "4–8", "≥ 16", "Disk diffusion NOT reliable; use MIC only"],
["Clindamycin", "≤ 0.5", "1–2", "≥ 4", "D-test if Ery-R, Clinda-S phenotype"],
["Trimethoprim-Sulfamethoxazole", "≤ 2/38", "—", "≥ 4/76", "Used for CA-MRSA skin infections"],
["Daptomycin", "≤ 1", "—", "NS (> 1)", "No intermediate category"],
["Linezolid", "≤ 4", "—", "≥ 8", "No disk diffusion breakpoint for S. aureus"],
["Teicoplanin", "≤ 8", "16", "≥ 32", "Glycopeptide; CLSI/EUCAST may differ"],
["Rifampicin", "≤ 1", "2", "≥ 4", "Never use as monotherapy"],
]
t = Table(sa_rows, colWidths=[5.5*cm, 2*cm, 2.5*cm, 2*cm, 4.5*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#8B6914")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, LIGHT_GOLD]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("ALIGN", (1,0), (3,-1), "CENTER"),
]))
story.append(t)
story.append(Spacer(1,6))
# 5B - Enterobacterales
story.append(P("<b>5B. Enterobacterales (E. coli, Klebsiella, Enterobacter, Proteus)</b>", h2))
eb_rows = [
["Antibiotic", "S (MIC ≤)", "SDD/I", "R (MIC ≥)", "Notes"],
["Ampicillin", "≤ 8", "16", "≥ 32", "β-lactamase test first"],
["Amoxicillin-Clavulanate", "≤ 8/4", "16/8", "≥ 32/16", "Covers ESBL if test shows S"],
["Piperacillin-Tazobactam", "≤ 16/4", "SDD 32–64/4", "≥ 128/4", "SDD: extended infusion 3-4 h"],
["Cefazolin (UTI)", "≤ 2", "4", "≥ 8", "Higher breakpoints for systemic infections"],
["Ceftriaxone", "≤ 1", "2", "≥ 4", "Revised down in 2010; prior ≤ 8 µg/mL"],
["Ceftazidime", "≤ 4", "8", "≥ 16", "Anti-pseudomonal cephalosporin"],
["Cefepime", "≤ 2", "SDD 4–8", "≥ 16", "SDD requires PK/PD dosing"],
["Imipenem", "≤ 1", "2", "≥ 4", "Carbapenem; ESBL/AmpC coverage"],
["Meropenem", "≤ 1", "2", "≥ 4", "Preferred for CNS infections"],
["Ertapenem", "≤ 0.5", "1", "≥ 2", "No Pseudomonas/Acinetobacter activity"],
["Ciprofloxacin", "≤ 1", "2", "≥ 4", "Urinary: S ≤ 0.25; tighter UTI breakpoints"],
["Gentamicin", "≤ 4", "8", "≥ 16", "Synergy breakpoints differ"],
["Trimethoprim-Sulfamethoxazole", "≤ 2/38", "—", "≥ 4/76", "UTI, uncomplicated"],
["Colistin / Polymyxin B", "≤ 2", "—", "≥ 4", "No reliable disk diffusion; use MIC"],
]
t = Table(eb_rows, colWidths=[5*cm, 2.2*cm, 2.8*cm, 2.2*cm, 4.3*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), GREEN),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#EAFAF1")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("ALIGN", (1,0), (3,-1), "CENTER"),
]))
story.append(t)
story.append(Spacer(1,6))
story.append(PageBreak())
# 5C - Pseudomonas
story += section_banner("5C. Pseudomonas aeruginosa & Non-fermenters", bg=colors.HexColor("#1A5276"))
psa_rows = [
["Antibiotic", "S (MIC ≤)", "I", "R (MIC ≥)", "Notes"],
["Piperacillin-Tazobactam", "≤ 16/4", "SDD 32–64/4", "≥ 128/4", "Extended infusion for SDD"],
["Ceftazidime", "≤ 8", "16", "≥ 32", "Higher breakpoints than Enterobacterales"],
["Cefepime", "≤ 8", "SDD 16", "≥ 32", ""],
["Imipenem", "≤ 2", "4", "≥ 8", "Higher than Enterobacterales"],
["Meropenem", "≤ 2", "4", "≥ 8", ""],
["Aztreonam", "≤ 8", "16", "≥ 32", "Monobactam; not active vs Acinetobacter"],
["Ciprofloxacin", "≤ 1", "2", "≥ 4", ""],
["Amikacin", "≤ 16", "32", "≥ 64", "Higher breakpoints than E. coli"],
["Colistin", "≤ 2", "—", "≥ 4", "Last resort; MIC only"],
["Ceftolozane-Tazobactam", "≤ 4/4", "8/4", "≥ 16/4", "Novel; MDR Pseudomonas"],
]
t = Table(psa_rows, colWidths=[5*cm, 2.2*cm, 2.8*cm, 2.2*cm, 4.3*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1A5276")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#EBF5FB")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("ALIGN", (1,0), (3,-1), "CENTER"),
]))
story.append(t)
story.append(Spacer(1,8))
# 5D - Streptococcus & Enterococcus
story.append(P("<b>5D. Streptococcus pneumoniae</b>", h2))
spn_rows = [
["Antibiotic", "S (MIC ≤)", "I", "R (MIC ≥)", "Notes"],
["Penicillin (meningitis)", "≤ 0.06", "—", "≥ 0.12", "Much lower than non-meningitis breakpoints"],
["Penicillin (non-meningitis)", "≤ 2", "4", "≥ 8", "Revised upward from ≤ 0.06 in 2008"],
["Amoxicillin", "≤ 2", "4", "≥ 8", ""],
["Cefotaxime / Ceftriaxone (meningitis)", "≤ 0.5", "1", "≥ 2", "Low breakpoints for CNS penetration"],
["Vancomycin", "≤ 1", "—", "NS", "No resistant breakpoint defined"],
["Erythromycin", "≤ 0.25", "0.5", "≥ 1", "D-test if Ery-R, Clinda-S"],
["Levofloxacin", "≤ 2", "—", "≥ 8", "No intermediate category"],
["Moxifloxacin", "≤ 1", "2", "≥ 4", ""],
]
t = Table(spn_rows, colWidths=[5.5*cm, 2.2*cm, 2.2*cm, 2.2*cm, 4.4*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#633974")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, LIGHT_PURPLE]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("ALIGN", (1,0), (3,-1), "CENTER"),
]))
story.append(t)
story.append(Spacer(1,6))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 6 – QUALITY CONTROL
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("6. QUALITY CONTROL (QC) IN AST", bg=colors.HexColor("#117A65"))
story.append(P("QC ensures accuracy and reproducibility of AST results. CLSI mandates use of well-characterized reference strains with known, reproducible susceptibility results. QC ranges are established for both MIC and zone diameters."))
story.append(Spacer(1,4))
story.append(P("<b>Standard QC Strains (ATCC Reference Organisms):</b>", body_b))
qc_rows = [
["QC Strain", "ATCC #", "Used to QC Testing of", "Key Features"],
["S. aureus", "25923", "Staphylococci, general gram-positive disk diffusion", "Non-β-lactamase producing; known disk zone ranges"],
["S. aureus", "29213", "Staphylococci, MIC testing (broth dilution)", "Non-β-lactamase; standard for MIC QC"],
["E. coli", "25922", "Gram-negative disk diffusion & MIC testing", "Most widely used gram-negative QC strain"],
["P. aeruginosa", "27853", "Non-fermenters, antipseudomonal agents", "Used for P. aeruginosa-specific drug testing"],
["E. faecalis", "29212", "Enterococcus, aminoglycosides (synergy)", "Used for high-level aminoglycoside QC"],
["S. pneumoniae", "49619", "Streptococcus, fastidious organisms", "Requires 5% CO₂; blood-supplemented media"],
["H. influenzae", "49247", "H. influenzae, Haemophilus test medium", "HTM required"],
["N. gonorrhoeae", "49226", "Gonococcal testing; GC agar base", "Fastidious; 5% CO₂"],
["B. fragilis", "25285", "Anaerobic susceptibility testing", "CLSI M11"],
["K. pneumoniae", "700603 (ESBL+)", "ESBL detection confirmation", "Harbors SHV-18; used for ESBL QC"],
]
t = Table(qc_rows, colWidths=[3.5*cm, 2*cm, 6*cm, 5*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#117A65")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 7.5),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#E8F8F5")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1,6))
story += info_box("QC Rules & Frequency:", [
"QC strains must be run EVERY DAY or EVERY WEEK (depending on test volume and protocol)",
"Each antibiotic-organism combination has an accepted MIC range (2-3 dilutions) and zone diameter range (±2 mm standard)",
"Results outside QC range: identify cause (media issue, inoculum error, disk potency, incubator temperature) and repeat",
"New lots of media or disks require QC validation before patient use",
"At least 30 consecutive days of in-control results required to shift from daily to weekly QC",
"Document all out-of-control events and corrective actions per CLIA/CAP requirements",
], bg=colors.HexColor("#E8F8F5"), title_color=colors.HexColor("#117A65"))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 7 – SPECIAL ORGANISMS
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("7. SPECIAL ORGANISM TESTING RULES", bg=ORANGE)
so_rows = [
["Organism", "Special Rule / Note"],
["MRSA", "Oxacillin resistant (MIC ≥ 4) OR mecA/mecC gene PCR positive. Cefoxitin disk (30 µg) is preferred surrogate: zone ≤ 21 mm = MRSA. Incubate 24 h at 35°C only (not 37°C)."],
["VISA / VRSA", "Vancomycin MIC 4-8 = VISA; ≥ 16 = VRSA. Disk diffusion NOT reliable. Use microbroth dilution or E-test. BHI agar with 6 µg/mL vancomycin (VSA screening agar) incubated 24 h full."],
["ESBL producers", "Screen with ceftriaxone/cefotaxime/ceftazidime/aztreonam (any zone ≤ 22 mm). Confirm with combined disk test (cephalosporin ± clavulanate; ≥ 5 mm increase = ESBL positive). Report all penicillins, cephalosporins, aztreonam as R."],
["Carbapenemase (CRE/CPE)", "Carbapenem MIC ≥ 2 or carbapenem disk zone reduced → test for carbapenemase. Modified Carbapenem Inactivation Method (mCIM) + EDTA-CIM (eCIM) to distinguish MBL vs KPC vs OXA. Confirmatory: PCR for KPC, NDM, VIM, IMP, OXA-48."],
["AmpC producers", "Enterobacter, Citrobacter, Serratia, Morganella: inducible chromosomal AmpC. Can be derepressed → 3rd-gen cephalosporin resistance. Cefepime may be more stable. CLSI: no routine AmpC phenotypic confirmation test currently."],
["S. pneumoniae (penicillin)", "Oxacillin disk (1 µg): zone ≥ 20 mm = penicillin susceptible (no further testing needed). Zone ≤ 19 mm → must perform penicillin MIC for meningitis vs non-meningitis breakpoints."],
["H. influenzae", "β-lactamase test first. β-lactamase positive = ampicillin resistant. β-lactamase negative but ampicillin R = BLNAR (altered PBP3). Use HTM. Disk diffusion only 16-18 h in CO₂."],
["N. gonorrhoeae", "Requires GC agar + growth supplement + 5% CO₂. Test for penicillinase (PPNG), tetracycline-resistant (TRNG), and fluoroquinolone resistance. Ceftriaxone remains standard for treatment."],
["Enterococcus (aminoglycosides)", "High-level aminoglycoside resistance (HLAR) must be tested separately. Gentamicin ≥ 500 µg/mL and Streptomycin ≥ 1000 or 2000 µg/mL = HLAR. HLAR = no synergy with cell wall agents."],
["Group B Streptococcus (GBS)", "Penicillin testing not required (no resistance). Test clindamycin + erythromycin for penicillin-allergic pregnant women. D-zone test mandatory if Ery-R, Clinda-S."],
]
t = Table(so_rows, colWidths=[4.5*cm, 12*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), ORANGE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#FDEBD0")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING",(0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 8 – RESISTANCE PHENOTYPES
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("8. IMPORTANT RESISTANCE PHENOTYPES & DETECTION", bg=RED)
story.append(P("<b>Phenotypes Requiring Special Detection Methods (CLSI M100):</b>", body_b))
rp_rows = [
["Phenotype", "Organisms", "Screen/Test", "Confirmatory Test", "Reporting Rule"],
["MRSA", "S. aureus, CoNS",
"Cefoxitin disk 30 µg:\n≤ 21 mm = MRSA\nOxacillin MIC ≥ 4 = MRSA",
"mecA / mecC PCR",
"Report all β-lactams as R (except ceftaroline, ceftobiprole if tested)"],
["ESBL", "E. coli, Klebsiella spp., Proteus mirabilis",
"Zone ≤ 22 mm for ceftriaxone/cefotaxime/ceftazidime/aztreonam",
"Combined disk test (±clavulanate, ≥5 mm = ESBL+)",
"Report all penicillins, cephalosporins, aztreonam as R"],
["Carbapenemase (KPC)", "Klebsiella, E. coli, other Enterobacterales",
"Carbapenem MIC ≥ 2; mCIM positive",
"PCR (KPC gene); Carba NP test",
"Report all carbapenems as R; alert infection control"],
["MBL (NDM, VIM, IMP)", "Enterobacterales, Pseudomonas, Acinetobacter",
"mCIM positive + eCIM positive (EDTA-based)",
"PCR (NDM, VIM, IMP, OXA-23/48)",
"Resistant to all carbapenems; colistin/polymyxin as last resort"],
["MLSB / iMLSB\n(D-test)", "S. aureus, Streptococci, CoNS",
"Erythromycin-R, Clindamycin-S phenotype detected",
"D-zone test (double-disk diffusion 15-17 mm apart)",
"D-test + → report Clindamycin as R"],
["VISA / hVISA", "S. aureus",
"Vancomycin MIC 4-8 (VISA)",
"Population analysis profiling (PAP); BHI agar 6 µg/mL vancomycin",
"Report as intermediate; notify ID physician"],
["VRSA", "S. aureus",
"Vancomycin MIC ≥ 16",
"vanA gene PCR (acquired from Enterococcus)",
"Immediately notify public health; CDC reporting required"],
["VRE", "Enterococcus faecium, E. faecalis",
"Vancomycin disk zone ≤ 14 mm",
"vanA, vanB, vanC PCR or MIC confirmation",
"vanA/vanB = clinically significant R; vanC = intrinsic low-level (E. casseliflavus)"],
["High-level Aminoglycoside R (HLAR)", "Enterococcus",
"Screen: Gentamicin ≥ 500 µg/mL; Streptomycin ≥ 1000 µg/mL MIC",
"Special HLAR screening plates",
"HLAR = No synergistic killing with β-lactams or glycopeptides"],
["BLNAR", "H. influenzae",
"β-lactamase negative but ampicillin-R (MIC ≥ 4)",
"PBP3 gene mutation (ftsI)",
"Report ampicillin R; extended-spectrum cephalosporins may still be active"],
]
t = Table(rp_rows, colWidths=[3*cm, 2.8*cm, 3.5*cm, 3.5*cm, 3.7*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), RED),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 7.5),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#FDEDEC")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING",(0,0), (-1,-1), 4),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 9 – ANTIBIOGRAM & STEWARDSHIP
# ══════════════════════════════════════════════════════════════════════════════
story += section_banner("9. ANTIBIOGRAM & ANTIMICROBIAL STEWARDSHIP", bg=colors.HexColor("#1A5276"))
story.append(P("A <b>cumulative antibiogram</b> is a summary of the susceptibility profiles of clinically relevant pathogens tested in a facility over a defined time period (typically 1 year). It is a cornerstone of antimicrobial stewardship."))
story.append(Spacer(1,4))
ab_rows = [
["Feature", "CLSI / Best Practice Standard"],
["Frequency", "At least once per year; monthly/quarterly in high-acuity settings"],
["Minimum isolates", "Include only first isolate per patient per species per year (M39 guideline). Exclude duplicates."],
["Minimum threshold", "Report %S only if ≥ 30 isolates available for that species-drug combination"],
["Stratification", "Stratify by: inpatient vs outpatient, ICU vs ward, specimen type (blood vs urine), pediatric vs adult"],
["Cascade reporting", "Report 1st-line (narrow-spectrum) drugs first; suppress broader agents if 1st-line is susceptible. E.g., report cefazolin before ceftriaxone for E. coli UTI."],
["ASP collaboration", "Antibiogram guides empirical therapy protocols and formulary decisions. Share with ID, pharmacy, infection control teams."],
["Online resource", "CLSI M39 – Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data"],
]
t = Table(ab_rows, colWidths=[4*cm, 12.5*cm], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1A5276")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [WHITE, colors.HexColor("#EBF5FB")]),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING",(0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(Spacer(1,8))
# Key exam points
story.append(P("<b>Quick Exam Mnemonics & Key Facts:</b>", h2))
key_points = [
"<b>MIC vs Breakpoint:</b> MIC = lab measurement of inhibitory concentration; Breakpoint = clinical decision threshold set by CLSI",
"<b>CAMHB:</b> Cation-Adjusted Mueller-Hinton Broth is the standard medium for broth microdilution",
"<b>0.5 McFarland:</b> ~1-4 × 10⁸ CFU/mL for agar inoculation; diluted to ~5 × 10⁵ for broth",
"<b>Zone size inverse of MIC:</b> Larger zone → lower MIC → more susceptible",
"<b>Cefoxitin disk for MRSA:</b> ≤ 21 mm = MRSA (surrogate for mecA); more reliable than oxacillin disk",
"<b>Vancomycin – no disk for S. aureus:</b> Disk diffusion cannot detect VISA; always use MIC",
"<b>S. pneumoniae penicillin:</b> Two sets of breakpoints – meningitis (≤ 0.06 S) vs non-meningitis (≤ 2 S). Oxacillin disk screens (≥ 20 mm = S, no MIC needed)",
"<b>D-test indication:</b> Erythromycin-Resistant + Clindamycin-Susceptible phenotype in any Staphylococcus or Streptococcus → mandatory D-zone test",
"<b>ESBL reporting rule:</b> Even if cephalosporin tests susceptible in vitro, report as Resistant if ESBL confirmed (clinical failures documented)",
"<b>SDD (Susceptible-Dose Dependent):</b> New category added M100 2019; replaces old 'I' for some drug-bug combos; requires PK/PD optimized dosing",
"<b>mCIM + eCIM:</b> Modified Carbapenem Inactivation Method detects carbapenemase; eCIM (EDTA) distinguishes MBL from serine carbapenemases (KPC, OXA)",
"<b>QC failure action:</b> Do not report patient results; identify error; document; repeat testing with fresh QC before releasing results",
]
for kp in key_points:
story.append(Paragraph(f"★ {kp}", style("KPStar", fontSize=8.5, textColor=GREY_DARK,
fontName="Helvetica", spaceAfter=4, leading=13,
leftIndent=8)))
story.append(Spacer(1, 10))
# Footer / References
story.append(hr(TEAL, 1))
story.append(P("<b>Sources:</b> Henry's Clinical Diagnosis and Management by Laboratory Methods (CLSI sections); "
"Tietz Textbook of Laboratory Medicine 7e; Goldman-Cecil Medicine 2025; "
"Dermatology 2-Volume Set 5e; CLSI M100 (2020 edition).", small))
story.append(P("Compiled as a quick reference for MD Microbiology education. "
"For clinical use, always refer to the current CLSI M100 edition and local resistance patterns.", small))
# ══════════════════════════════════════════════════════════════════════════════
# PAGE NUMBERS via onFirstPage / onLaterPages
# ══════════════════════════════════════════════════════════════════════════════
def add_page_number(canvas, doc):
canvas.saveState()
canvas.setFont("Helvetica", 7)
canvas.setFillColor(GREY_MID)
page_num = canvas.getPageNumber()
canvas.drawCentredString(A4[0]/2, 1.2*cm, f"CLSI Standards & Breakpoints – Quick Reference | Page {page_num}")
canvas.restoreState()
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print("PDF generated successfully:", doc_path)
cd /home/daytona/workspace/clsi-reference && python generate_clsi_pdf.py 2>&1
ls -lh /home/daytona/workspace/clsi-reference/CLSI_Standards_Quick_Reference.pdf
CLSI Standards Quick Reference
PDF Document · PDF
| Section | Content |
|---|---|
| 1. CLSI Overview | All key documents (M02, M07, M11, M100, M27, M38, M44, M45) with update cycles |
| 2. Key Definitions | MIC, MBC, Breakpoint, ECOFF, PK/PD breakpoints - clearly defined |
| 3. Methods of AST | Disk diffusion, broth microdilution, agar dilution, E-test, automated systems, anaerobic AST - with standardized conditions |
| 4. Breakpoint Categories | S, SDD, I, NS, R - definitions + CLSI vs EUCAST comparison table |
| 5. Important Breakpoints | MIC tables for S. aureus, Enterobacterales, Pseudomonas, S. pneumoniae |
| 6. QC Standards | All ATCC reference strains, QC rules, frequency requirements |
| 7. Special Organisms | MRSA, ESBL, CRE, S. pneumoniae, H. influenzae, Enterococcus HLAR, GBS - organism-specific rules |
| 8. Resistance Phenotypes | Detection of MRSA, ESBL, KPC, MBL, D-test, VISA, VRSA, VRE, HLAR, BLNAR |
| 9. Antibiogram & Stewardship | Cumulative antibiogram rules, cascade reporting, exam mnemonics |
Is this a free or paid app
Plz generate PPT on bacterial virulence factors from ananthnarayan book
mkdir -p /home/daytona/workspace/virulence-ppt && ls /home/daytona/workspace/virulence-ppt/
~/virulence-ppt/generate_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3 x 7.5 inches
pres.title = "Bacterial Virulence Factors";
pres.author = "MD Microbiology";
pres.subject = "Bacteriology – Ananthnarayan";
// ── Color Palette ────────────────────────────────────────────────────────────
const C = {
navy: "0D1F3C",
teal: "0A7A80",
teal_light: "D6F0F2",
gold: "D4A017",
gold_light: "FDF5DC",
red: "C0392B",
red_light: "FDEDEC",
green: "1A7A4A",
green_light: "E9F7EF",
purple: "6C3483",
purple_light:"F4ECF7",
orange: "D35400",
orange_light:"FEF0E7",
blue: "1A5276",
blue_light: "EBF5FB",
white: "FFFFFF",
offwhite: "F8F9FA",
grey_dark: "2C3E50",
grey_mid: "7F8C8D",
grey_light: "ECF0F1",
};
// ── Helpers ──────────────────────────────────────────────────────────────────
function addSlideTitle(slide, title, subtitle, bgColor, accentColor) {
bgColor = bgColor || C.navy;
accentColor = accentColor || C.gold;
// Full dark background
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:13.3, h:7.5, fill:{color: bgColor}, line:{color: bgColor} });
// Gold accent bar top
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:13.3, h:0.08, fill:{color: accentColor}, line:{color: accentColor} });
// Gold accent bar bottom
slide.addShape(pres.ShapeType.rect, { x:0, y:7.42, w:13.3, h:0.08, fill:{color: accentColor}, line:{color: accentColor} });
slide.addText(title, {
x:0.8, y:2.2, w:11.7, h:1.6,
fontSize:44, fontFace:"Calibri", bold:true,
color: C.white, align:"center", valign:"middle"
});
if (subtitle) {
slide.addText(subtitle, {
x:1.2, y:3.9, w:10.9, h:0.7,
fontSize:18, fontFace:"Calibri",
color: accentColor, align:"center"
});
}
// Bottom tag
slide.addText("Bacteriology | MD Microbiology | Ananthnarayan Reference", {
x:0, y:7.2, w:13.3, h:0.28,
fontSize:9, fontFace:"Calibri", color: C.grey_mid, align:"center"
});
}
function sectionHeader(slide, sectionNum, title, subtitle, bgColor, textColor) {
bgColor = bgColor || C.teal;
textColor = textColor || C.white;
slide.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color: bgColor}, line:{color: bgColor}});
slide.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:0.06, fill:{color: C.gold}, line:{color: C.gold}});
slide.addShape(pres.ShapeType.rect, {x:0,y:7.44,w:13.3,h:0.06, fill:{color: C.gold}, line:{color: C.gold}});
slide.addText(`Section ${sectionNum}`, {
x:0.8,y:2.2,w:11.7,h:0.7, fontSize:20, fontFace:"Calibri",
color: C.gold, align:"center", bold:true, charSpacing:4
});
slide.addText(title, {
x:0.8,y:2.95,w:11.7,h:1.3, fontSize:38, fontFace:"Calibri",
bold:true, color: textColor, align:"center"
});
if (subtitle) {
slide.addText(subtitle, {
x:1.5,y:4.3,w:10.3,h:0.6, fontSize:16, fontFace:"Calibri",
color: C.teal_light, align:"center"
});
}
}
function contentHeader(slide, title, bg, accent) {
bg = bg || C.navy;
accent = accent || C.gold;
slide.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:1.05, fill:{color: bg}, line:{color: bg}});
slide.addShape(pres.ShapeType.rect, {x:0,y:1.05,w:13.3,h:0.06, fill:{color: accent}, line:{color: accent}});
slide.addText(title, {
x:0.4,y:0.08,w:12.5,h:0.9,
fontSize:26, fontFace:"Calibri", bold:true,
color: C.white, valign:"middle"
});
// Page gradient strip
slide.addShape(pres.ShapeType.rect, {x:0,y:7.3,w:13.3,h:0.2, fill:{color: C.grey_light}, line:{color: C.grey_light}});
slide.addText("Bacterial Virulence Factors | MD Microbiology", {
x:0,y:7.3,w:13.3,h:0.2, fontSize:7.5, fontFace:"Calibri", color: C.grey_mid, align:"center"
});
}
function bullet(text, level, bold, color) {
return {
text: text,
options: {
bullet: { indent: 15 + (level||0)*15 },
fontSize: level ? 14 : 15.5,
fontFace: "Calibri",
color: color || C.grey_dark,
bold: bold || false,
paraSpaceAfter: 3,
indentLevel: level || 0,
breakLine: true
}
};
}
function addColorCard(slide, x, y, w, h, headerText, headerBg, bodyLines, bodyBg) {
bodyBg = bodyBg || C.offwhite;
// Header
slide.addShape(pres.ShapeType.roundRect, {x, y, w, h:0.42, fill:{color: headerBg}, line:{color: headerBg}, rectRadius:0.06});
slide.addText(headerText, {x: x+0.1, y: y+0.03, w: w-0.2, h:0.36, fontSize:13, fontFace:"Calibri", bold:true, color:C.white, valign:"middle"});
// Body
slide.addShape(pres.ShapeType.roundRect, {x, y:y+0.41, w, h:h-0.42, fill:{color: bodyBg}, line:{color: C.grey_light, pt:0.5}, rectRadius:0.06});
const items = bodyLines.map((l,i) => ({
text: l,
options: { fontSize:12.5, fontFace:"Calibri", color:C.grey_dark, breakLine: i<bodyLines.length-1, paraSpaceAfter:2, bullet: {indent:10} }
}));
slide.addText(items, {x: x+0.15, y: y+0.48, w: w-0.3, h: h-0.58, valign:"top"});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ════════════════════════════════════════════════════════════════════════════
let s = pres.addSlide();
addSlideTitle(s,
"Bacterial Virulence Factors",
"Mechanisms of Pathogenicity | Ananthnarayan & Paniker's Textbook of Microbiology",
C.navy, C.gold
);
// Decorative hexagon shapes
s.addShape(pres.ShapeType.hexagon, {x:0.1,y:0.8,w:0.9,h:1.0, fill:{color:"0A3050",transparency:30}, line:{color:"0A3050"}});
s.addShape(pres.ShapeType.hexagon, {x:11.9,y:5.5,w:1.2,h:1.3, fill:{color:"0A3050",transparency:30}, line:{color:"0A3050"}});
s.addShape(pres.ShapeType.hexagon, {x:12.2,y:0.5,w:0.7,h:0.8, fill:{color:"0A3050",transparency:50}, line:{color:"0A3050"}});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – OVERVIEW
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color: C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "Overview: What are Virulence Factors?", C.navy, C.gold);
// Definition box
s.addShape(pres.ShapeType.roundRect, {x:0.4,y:1.25,w:12.5,h:1.0, fill:{color:C.gold_light}, line:{color:C.gold, pt:1.2}, rectRadius:0.1});
s.addText([
{text:"Definition: ", options:{bold:true, fontSize:14, color:C.navy}},
{text:"Virulence factors are structural, biochemical, or regulatory molecules produced by a pathogen that enable it to ", options:{fontSize:14, color:C.grey_dark}},
{text:"colonize, evade host defenses, and cause disease.", options:{bold:true, fontSize:14, color:C.red}}
], {x:0.6,y:1.3,w:12.1,h:0.88, valign:"middle"});
// 3-column classification
const overviewCols = [
{ x:0.35, color:C.teal, hdr:"Pathogenicity", items:["Ability of an organism to cause disease","Depends on: dose, route, host immunity","Opportunistic vs Primary pathogens"] },
{ x:4.65, color:C.purple, hdr:"Virulence", items:["Degree / severity of disease caused","Measured by LD50 (lethal dose 50%)","Quantitative expression of pathogenicity"] },
{ x:8.95, color:C.orange, hdr:"Pathogenicity Islands", items:["Gene clusters on mobile elements","Encode multiple virulence factors","Can be horizontally transferred between bacteria"] },
];
overviewCols.forEach(col => {
addColorCard(s, col.x, 2.4, 4.1, 2.8, col.hdr, col.color, col.items, C.white);
});
// Key formula
s.addShape(pres.ShapeType.roundRect, {x:0.4,y:5.4,w:12.5,h:1.65, fill:{color:C.teal_light}, line:{color:C.teal, pt:1}, rectRadius:0.1});
s.addText("Key Concept: Virulence = Infectivity + Invasiveness + Toxigenicity + Immune Evasion", {
x:0.6,y:5.5,w:12.1,h:0.55, fontSize:15, fontFace:"Calibri", bold:true, color:C.teal, align:"center"
});
s.addText([
bullet("Infectivity: ability to establish infection at body surface", 0),
bullet("Invasiveness: ability to spread in tissues", 0),
bullet("Toxigenicity: ability to produce toxins that damage host cells", 0),
], {x:0.8,y:6.05,w:12,h:0.9, valign:"top"});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – SECTION: SURFACE STRUCTURES
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
sectionHeader(s, 1, "Surface Virulence Factors", "Capsule | Fimbriae | Pili | Cell Wall Components", C.teal, C.white);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – CAPSULE
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color: C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "1A. Capsule – The Antiphagocytic Shield", C.teal, C.gold);
// Left panel – properties
s.addShape(pres.ShapeType.roundRect, {x:0.3,y:1.25,w:6.1,h:5.8, fill:{color:C.white}, line:{color:C.teal, pt:1}, rectRadius:0.1});
s.addText("Capsule Properties", {x:0.4,y:1.3,w:5.9,h:0.5, fontSize:15, bold:true, color:C.teal, fontFace:"Calibri"});
s.addText([
bullet("Composition: Polysaccharide (most bacteria); Polypeptide (Bacillus anthracis – D-glutamic acid)", 0),
bullet("Exception: Poly-D-glutamic acid capsule of B. anthracis – non-antigenic", 1, false, C.red),
bullet("Location: Outermost layer of bacterial cell", 0),
bullet("Staining: India ink / Quellung (capsule swelling) reaction", 0),
bullet("Quellung reaction: Antibody + capsule → capsule appears swollen under microscope", 1),
], {x:0.4,y:1.85,w:5.8,h:2.9, valign:"top"});
s.addText("Functions of Capsule:", {x:0.4,y:4.8,w:5.8,h:0.4, fontSize:14, bold:true, color:C.navy, fontFace:"Calibri"});
s.addText([
bullet("Anti-phagocytic – prevents opsonization", 0, true, C.red),
bullet("Protects from complement activation", 0),
bullet("Promotes adherence to surfaces", 0),
bullet("Protection from desiccation and toxic substances", 0),
], {x:0.4,y:5.2,w:5.8,h:1.7, valign:"top"});
// Right panel – examples
s.addShape(pres.ShapeType.roundRect, {x:6.8,y:1.25,w:6.2,h:5.8, fill:{color:C.teal_light}, line:{color:C.teal, pt:1}, rectRadius:0.1});
s.addText("Clinically Important Examples", {x:6.9,y:1.3,w:6.0,h:0.5, fontSize:15, bold:true, color:C.teal, fontFace:"Calibri"});
const capsuleExamples = [
["Streptococcus pneumoniae", "Polysaccharide capsule → pneumonia, meningitis\nQuellung reaction for typing (83+ serotypes)\nEncapsulated = virulent; unencapsulated = avirulent (Griffith's experiment)"],
["Klebsiella pneumoniae", "Large mucoid capsule → 'mucoid' colonies\nCauses lobar pneumonia, UTI\nCurrant-jelly sputum"],
["Haemophilus influenzae", "Type b (Hib) = polyribitol phosphate capsule\nAnti-phagocytic; causes meningitis\nHib vaccine = conjugate capsular polysaccharide"],
["Neisseria meningitidis", "Polysaccharide capsule (groups A,B,C,Y,W135)\nAnti-phagocytic; major virulence factor\nVaccine targets capsular polysaccharide"],
["Bacillus anthracis", "Poly-D-glutamic acid capsule\nNON-antigenic → evades immune response\nAntiphagocytic; encodes on pX01/pX02 plasmids"],
["Cryptococcus neoformans", "Polysaccharide capsule (fungus, not bacteria)\nIndia ink: clear halo around yeast cell"],
];
capsuleExamples.forEach((ex, i) => {
const yPos = 1.85 + i * 0.86;
s.addShape(pres.ShapeType.roundRect, {x:6.9, y:yPos, w:5.9, h:0.8, fill:{color:C.white}, line:{color:C.teal, pt:0.5}, rectRadius:0.06});
s.addText([
{text: ex[0] + "\n", options:{bold:true, fontSize:11.5, color:C.navy, breakLine:true}},
{text: ex[1], options:{fontSize:10.5, color:C.grey_dark}}
], {x:7.0, y:yPos+0.04, w:5.7, h:0.74, valign:"top"});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – FIMBRIAE & PILI
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color: C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "1B. Fimbriae & Pili – Adhesion & Colonization", C.teal, C.gold);
// Left - Fimbriae
addColorCard(s, 0.3, 1.25, 6.1, 5.8, "Fimbriae (Common Pili)", C.teal, [
"Short, hair-like protein projections",
"Composition: pilin protein subunits",
"Function: Attachment to mucosal surfaces – key first step of infection",
"Anti-phagocytic: some fimbriae resist phagocytosis",
"Found in: E. coli, N. gonorrhoeae, N. meningitidis, Salmonella, Shigella",
"Type 1 (mannose-sensitive): attach to mannose on uroepithelium",
"P fimbriae (E. coli): attach to P blood group antigen on uroepithelium → pyelonephritis",
"Phase variation: bacteria can switch fimbriae ON/OFF to evade immunity",
], C.teal_light);
// Right - Sex Pili
addColorCard(s, 6.85, 1.25, 6.15, 2.8, "Sex Pili (F Pilus / Conjugation Pilus)", C.purple, [
"Longer than fimbriae; tubular structure",
"Encoded by F (fertility) plasmid",
"Function: Connect donor (F+) to recipient (F−) cell during conjugation",
"Allow transfer of plasmid DNA (resistance genes, virulence genes)",
"One or a few per cell (vs many fimbriae)",
"Also serve as receptor for some bacteriophages (filamentous phages)",
], C.purple_light);
addColorCard(s, 6.85, 4.15, 6.15, 2.88, "Type IV Pili – Special Category", C.blue, [
"Found in: N. gonorrhoeae, Pseudomonas aeruginosa, V. cholerae, EPEC",
"Functions: attachment, motility (twitching), colonization",
"N. gonorrhoeae: phase & antigenic variation of pilin → evades antibody",
"Can retract → pull bacteria toward host cell (key for invasion)",
"V. cholerae TCP pilus: toxin-co-regulated pilus; essential for colonization of intestine",
], C.blue_light);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – CELL WALL COMPONENTS
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "1C. Cell Wall Components as Virulence Factors", C.blue, C.gold);
const cwCols = [
{x:0.3, color:C.navy, hdr:"Lipopolysaccharide (LPS / Endotoxin)", items:[
"Gram-negative outer membrane component",
"Structure: Lipid A + Core polysaccharide + O antigen",
"Lipid A: toxic portion → fever, hypotension, DIC, septic shock",
"Triggers TLR-4 → NFκB → IL-1, IL-6, TNF-α, IL-8",
"Pyrogenic, activates complement (alternative pathway)",
"O antigen: used for serotyping (e.g., E. coli O157:H7)",
"Resists serum killing; antiphagocytic"
]},
{x:4.55, color:C.teal, hdr:"Peptidoglycan & Teichoic Acids", items:[
"Peptidoglycan (gram-positive): thick layer, activates complement",
"Fragments: stimulate cytokine release (IL-1, TNF)",
"Lipoteichoic acid (LTA): gram-positive equivalent of endotoxin",
"LTA + wall teichoic acid → adhesion to host cells",
"S. aureus LTA: mediates binding to fibronectin on host cells",
"Activates TLR-2 → inflammatory response"
]},
{x:8.8, color:C.purple, hdr:"Surface Proteins & Other Structures", items:[
"Protein A (S. aureus): binds Fc region of IgG → blocks opsonization",
"M protein (S. pyogenes): antiphagocytic; main virulence factor",
"Outer membrane proteins (Porins): regulate permeability, antigenic",
"IgA protease (H. influenzae, N. gonorrhoeae, S. pneumoniae):",
" – Cleaves secretory IgA → impairs mucosal defense",
"SpA, SpM: surface proteins aiding immune evasion"
]},
];
cwCols.forEach(col => {
addColorCard(s, col.x, 1.25, 4.15, 5.8, col.hdr, col.color, col.items, C.white);
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – SECTION: TOXINS
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
sectionHeader(s, 2, "Bacterial Toxins", "Exotoxins vs Endotoxin | Mechanisms & Clinical Relevance", C.red, C.white);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – EXOTOXIN vs ENDOTOXIN COMPARISON
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "2A. Exotoxin vs Endotoxin – Comparison Table", C.red, C.gold);
const tblData = [
[{text:"Feature", options:{bold:true}}, {text:"Exotoxin", options:{bold:true}}, {text:"Endotoxin", options:{bold:true}}],
[{text:"Source"}, {text:"Gram +ve and Gram –ve bacteria"}, {text:"Gram –ve bacteria only"}],
[{text:"Nature"}, {text:"Protein (polypeptide)"}, {text:"Lipopolysaccharide (LPS) – Lipid A"}],
[{text:"Secretion"}, {text:"Actively secreted (excreted)"}, {text:"Released on cell death / lysis"}],
[{text:"Heat stability"},{text:"Heat labile (destroyed at 60–80°C)"}, {text:"Heat stable (withstands 250°C)"}],
[{text:"Toxicity"}, {text:"Highly toxic (microgram quantities lethal)"},{text:"Weakly toxic (large amounts needed)"}],
[{text:"Antigenicity"}, {text:"Strongly antigenic → toxoid formed"}, {text:"Weakly antigenic; no toxoid"}],
[{text:"Toxoid"}, {text:"Yes – formaldehyde converts to toxoid (DPT)"}, {text:"No toxoid possible"}],
[{text:"Pyrogenicity"}, {text:"Variable (some are pyrogenic)"}, {text:"Always pyrogenic"}],
[{text:"Specificity"}, {text:"Highly specific (targets specific cells/receptors)"},{text:"Non-specific; generalized effects"}],
[{text:"Neutralization"},{text:"Neutralized by antitoxin antibodies"}, {text:"Not neutralized by antibodies"}],
[{text:"Examples"}, {text:"Cholera toxin, Tetanus toxin, Diphtheria toxin"},{text:"Salmonella, E. coli, N. meningitidis LPS"}],
];
const tblCols = [3.0, 5.0, 5.0];
s.addTable(tblData, {
x:0.3, y:1.22, w:12.7, colW: tblCols,
color: C.grey_dark, fontFace:"Calibri", fontSize:11,
rowH: 0.43,
fill: {color: C.white},
border: {type:"solid", pt:0.5, color: C.grey_light},
align:"left", valign:"middle",
});
// Manually shade header row would need shape overlay – add color header row manually
s.addShape(pres.ShapeType.rect, {x:0.3,y:1.22,w:12.7,h:0.43, fill:{color:C.red}, line:{color:C.red}});
s.addText([
{text:"Feature", options:{bold:true, fontSize:12, color:C.white, fontFace:"Calibri"}},
], {x:0.35, y:1.26, w:2.9, h:0.35, valign:"middle"});
s.addText([
{text:"Exotoxin", options:{bold:true, fontSize:12, color:C.white, fontFace:"Calibri"}},
], {x:3.35, y:1.26, w:4.9, h:0.35, valign:"middle"});
s.addText([
{text:"Endotoxin (LPS)", options:{bold:true, fontSize:12, color:C.white, fontFace:"Calibri"}},
], {x:8.35, y:1.26, w:4.9, h:0.35, valign:"middle"});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – EXOTOXIN TYPES
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "2B. Classification of Exotoxins", C.red, C.gold);
const toxCols = [
{x:0.3, color:C.red, hdr:"A-B Toxins (Binary Toxins)", items:[
"Structure: A subunit (active/toxic) + B subunit (binding)",
"B binds receptor on host cell → A is internalized → causes damage",
"Cholera toxin: B binds GM1 ganglioside → A activates adenylate cyclase → ↑cAMP → rice-water diarrhea",
"Diphtheria toxin: B binds; A = ADP-ribosylates EF-2 → halts protein synthesis",
"Anthrax toxin: PA (B) + LF or EF (A) → cell death / edema",
"Pertussis toxin: ADP-ribosylates Gi → ↑cAMP",
"Shiga toxin (STEC): B binds Gb3 → A cleaves 28S rRNA → stops protein synthesis → HUS",
]},
{x:4.65, color:C.purple, hdr:"Membrane-Damaging Toxins", items:[
"Pore-forming toxins: insert into lipid bilayer → pore → cell lysis",
"α-toxin (S. aureus): heptameric pore; lyses RBCs, WBCs, platelets",
"Streptolysin O (S. pyogenes): oxygen-labile; anti-SLO antibodies diagnostic",
"Streptolysin S: oxygen-stable; causes β-hemolysis on blood agar",
"Listeriolysin O (Listeria): pore allows escape from phagosome",
"Lecithinase (C. perfringens α-toxin): phospholipase C; cleaves lecithin in cell membranes",
"Nagler reaction: C. perfringens α-toxin identified on egg yolk agar",
]},
{x:9.0, color:C.orange, hdr:"Superantigens (SAgs)", items:[
"Cross-link MHC II (APC) with TCR Vβ chain non-specifically",
"Activate up to 20% of all T cells (vs 0.01% for normal antigens)",
"Massive cytokine storm → TSS, multiorgan failure",
"TSST-1 (S. aureus): Toxic Shock Syndrome",
"SPE A,B,C (S. pyogenes): Scarlet fever / streptococcal TSS",
"Staphylococcal enterotoxins (A-E): food poisoning (preformed toxin)",
"Do NOT induce protective immunity → no memory against SAgs",
]},
];
toxCols.forEach(col => {
addColorCard(s, col.x, 1.25, 4.1, 5.8, col.hdr, col.color, col.items, C.white);
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – IMPORTANT TOXINS TABLE
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "2C. Must-Know Toxins at a Glance", C.red, C.gold);
const toxins = [
["Organism", "Toxin", "Mechanism", "Disease / Effect"],
["V. cholerae", "Cholera toxin (CT)", "↑cAMP via Gs activation", "Profuse rice-water diarrhea"],
["C. diphtheriae", "Diphtheria toxin", "ADP-ribosylates EF-2 → blocks protein synthesis", "Pseudomembrane, myocarditis, neuropathy"],
["C. tetani", "Tetanospasmin", "Blocks GABA/glycine (inhibitory) at spinal cord → spastic paralysis", "Tetanus – risus sardonicus, opisthotonos"],
["C. botulinum", "Botulinum toxin (A,B,E,F)", "Blocks ACh release at NMJ → flaccid paralysis", "Botulism – descending flaccid paralysis"],
["C. perfringens", "α-toxin (lecithinase)", "Phospholipase C → cell membrane lysis", "Gas gangrene, food poisoning"],
["S. aureus", "TSST-1", "Superantigen → cytokine storm", "Toxic Shock Syndrome"],
["S. aureus", "Exfoliatin A & B", "Serine protease → cleaves desmoglein 1 in skin", "Scalded Skin Syndrome (SSSS)"],
["S. pyogenes", "Streptolysin O (SLO)", "Pore-forming; O2-labile", "Cell lysis; anti-SLO = diagnostic"],
["E. coli (ETEC)", "Heat-labile toxin (LT)", "Similar to cholera toxin; ↑cAMP", "Traveler's diarrhea (watery)"],
["E. coli (ETEC)", "Heat-stable toxin (ST)", "Activates guanylate cyclase → ↑cGMP", "Watery diarrhea; ST resistant to boiling"],
["E. coli (STEC)", "Shiga-like toxin (Verotoxin)", "Cleaves 28S rRNA; stops protein synthesis", "Hemorrhagic colitis, HUS (O157:H7)"],
["B. anthracis", "Lethal factor (LF)", "Metalloprotease → cleaves MAPKK → cell death", "Anthrax – shock, death"],
];
const toxW = [2.5, 2.7, 4.5, 3.3];
s.addTable(toxins, {
x:0.2, y:1.22, w:12.9, colW: toxW,
fontFace:"Calibri", fontSize:10,
rowH: 0.44,
fill:{color:C.white},
border:{type:"solid", pt:0.5, color:C.grey_light},
valign:"middle", align:"left", color:C.grey_dark
});
s.addShape(pres.ShapeType.rect, {x:0.2,y:1.22,w:12.9,h:0.44, fill:{color:C.red}, line:{color:C.red}});
["Organism","Toxin","Mechanism","Disease / Effect"].forEach((h,i) => {
const xOff = [0.25, 2.75, 5.45, 9.95];
s.addText(h, {x:xOff[i], y:1.26, w:toxW[i]-0.1, h:0.36, fontSize:11.5, bold:true, color:C.white, fontFace:"Calibri", valign:"middle"});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 – SECTION: INVASION & IMMUNE EVASION
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
sectionHeader(s, 3, "Invasion & Immune Evasion", "Enzymes | Intracellular Survival | Biofilm | Antigenic Variation", C.green, C.white);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 12 – SPREADING ENZYMES
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "3A. Spreading Enzymes (Aggressins)", C.green, C.gold);
const enzymes = [
{name:"Hyaluronidase", desc:"Breaks down hyaluronic acid in connective tissue\n→ 'spreading factor' → facilitates spread of bacteria\nProduced by: S. pyogenes, S. aureus, Clostridia, H. influenzae"},
{name:"Collagenase", desc:"Degrades collagen → destroys connective tissue framework\nProduced by: C. perfringens (also called κ-toxin)\n→ spreads in muscle (gas gangrene)"},
{name:"Streptokinase\n(Fibrinolysin)", desc:"Activates plasminogen → plasmin → dissolves fibrin clots\nPrevents walling-off of infection\nProduced by: S. pyogenes (also used therapeutically)"},
{name:"Coagulase", desc:"Converts fibrinogen → fibrin clot around bacteria\nProtects S. aureus from phagocytosis\nFree coagulase + Bound coagulase (clumping factor)\nCoagulase test: key to identify S. aureus"},
{name:"DNase\n(Deoxyribonuclease)", desc:"Hydrolyzes DNA released by lysed cells\nReduces viscosity of pus → facilitates spread\nProduced by: S. aureus, S. pyogenes\nAnti-DNase B antibody: evidence of streptococcal infection"},
{name:"IgA Protease", desc:"Cleaves secretory IgA at hinge region\nEscapes mucosal immune defense\nProduced by: N. gonorrhoeae, N. meningitidis, H. influenzae, S. pneumoniae"},
];
const enzCols = [0.3, 4.55, 8.8];
const enzRows = [[0,1,2],[3,4,5]];
enzRows.forEach((rowIdxs, rowI) => {
rowIdxs.forEach((idx, colI) => {
const e = enzymes[idx];
const x = enzCols[colI];
const y = 1.25 + rowI * 2.95;
s.addShape(pres.ShapeType.roundRect, {x,y,w:4.05,h:2.75, fill:{color:C.white}, line:{color:C.green, pt:1}, rectRadius:0.1});
s.addShape(pres.ShapeType.roundRect, {x,y,w:4.05,h:0.45, fill:{color:C.green}, line:{color:C.green}, rectRadius:0.08});
s.addText(e.name, {x:x+0.1,y:y+0.05,w:3.85,h:0.38, fontSize:12.5, bold:true, color:C.white, fontFace:"Calibri", valign:"middle"});
s.addText(e.desc, {x:x+0.12,y:y+0.52,w:3.81,h:2.14, fontSize:11, color:C.grey_dark, fontFace:"Calibri", valign:"top"});
});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 13 – IMMUNE EVASION & INTRACELLULAR SURVIVAL
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "3B. Immune Evasion Strategies", C.green, C.gold);
// Column 1 – Antigenic variation
addColorCard(s, 0.3, 1.25, 4.05, 5.8, "Antigenic Variation", C.blue, [
"Bacteria change surface antigens to escape antibody recognition",
"N. gonorrhoeae: pilus & Opa protein phase/antigenic variation",
"Borrelia recurrentis: relapsing fever – VMP gene switches",
"H. pylori: outer membrane protein variation",
"Mycoplasma: variable surface lipoproteins",
"Result: memory antibodies ineffective → repeated infections",
], C.blue_light);
// Column 2 – Intracellular survival
addColorCard(s, 4.65, 1.25, 4.05, 5.8, "Intracellular Survival", C.purple, [
"Obligate intracellular: Rickettsia, Chlamydia, Coxiella",
"Facultative intracellular: Salmonella, Listeria, Mycobacterium, Brucella, Legionella",
"Mechanisms:",
" – Inhibit phagosome-lysosome fusion (M. tuberculosis, Legionella)",
" – Escape from phagosome into cytoplasm (Listeria – listeriolysin O)",
" – Resist oxidative killing: catalase, superoxide dismutase (S. aureus)",
" – Survive in acidic phagolysosome (Coxiella, Leishmania)",
"Protected from antibodies and many antibiotics",
], C.purple_light);
// Column 3 – Other strategies
addColorCard(s, 9.0, 1.25, 4.05, 5.8, "Other Evasion Mechanisms", C.orange, [
"Biofilm formation: polysaccharide matrix protects bacteria from antibiotics & phagocytosis (S. epidermidis, P. aeruginosa)",
"Complement evasion: LPS O-antigen prevents MAC formation; capsule blocks C3b deposition",
"Molecular mimicry: surface antigens resemble host antigens (S. pyogenes M protein ~ cardiac myosin → rheumatic fever)",
"Protein A (S. aureus): binds Fc IgG → prevents opsonization",
"Serum resistance: Yersinia, Salmonella – LPS modifications block lysis",
"Catalase (S. aureus): destroys H₂O₂ produced by neutrophils",
], C.orange_light);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 14 – SECTION: SECRETION SYSTEMS & PATHOGENICITY ISLANDS
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
sectionHeader(s, 4, "Secretion Systems & Pathogenicity Islands", "Type III, IV, VI Secretion | PAIs | Biofilm", C.navy, C.white);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 15 – SECRETION SYSTEMS
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "4A. Bacterial Secretion Systems", C.navy, C.gold);
const secSystems = [
{type:"Type II (T2SS)", nickname:"General Secretion Pathway", details:"Secretes folded proteins across outer membrane\nExamples: cholera toxin, elastase (Pseudomonas)\nGram-negative only", color:C.teal},
{type:"Type III (T3SS)", nickname:'"Molecular Syringe"', details:"Needle-like structure injects effector proteins DIRECTLY into host cytoplasm\nExamples: Salmonella SPI-1/SPI-2, Shigella, EPEC (LEE island), Yersinia Yops\nKey virulence system for enteric & invasive pathogens", color:C.red},
{type:"Type IV (T4SS)", nickname:"Conjugation / Effector Transport", details:"Transfers DNA or proteins into host cells or other bacteria\nH. pylori: CagA protein injection via T4SS → gastric cancer risk\nAlso used for plasmid transfer (conjugation)\nLegionella: T4SS injects effectors to remodel vacuole", color:C.purple},
{type:"Type VI (T6SS)", nickname:'"Bacterial Spear Gun"', details:"Punctures adjacent bacterial/eukaryotic cells\nCompetition between bacteria (kills rivals)\nP. aeruginosa, V. cholerae, Burkholderia\nInjects toxic effectors; tail spike contracts like a spring", color:C.orange},
{type:"Type I (T1SS)", nickname:"ABC Transporter System", details:"One-step secretion across both membranes\nE. coli hemolysin (HlyA) – pore-forming toxin\nCa2+-dependent activation", color:C.blue},
{type:"Type V (T5SS)", nickname:"Autotransporter System", details:"Protein transports itself across outer membrane\nAdhesins (AIDA-I in E. coli) and IgA protease\nSimplest secretion system in gram-negative bacteria", color:C.green},
];
const ssPerRow = 3;
secSystems.forEach((ss, i) => {
const col = i % ssPerRow;
const row = Math.floor(i / ssPerRow);
const x = 0.3 + col * 4.35;
const y = 1.25 + row * 2.95;
s.addShape(pres.ShapeType.roundRect, {x, y, w:4.15, h:2.75, fill:{color:C.white}, line:{color:ss.color, pt:1.2}, rectRadius:0.1});
s.addShape(pres.ShapeType.roundRect, {x, y, w:4.15, h:0.55, fill:{color:ss.color}, line:{color:ss.color}, rectRadius:0.08});
s.addText(`${ss.type} – ${ss.nickname}`, {x:x+0.1,y:y+0.06,w:3.95,h:0.44, fontSize:11.5, bold:true, color:C.white, fontFace:"Calibri", valign:"middle"});
s.addText(ss.details, {x:x+0.12,y:y+0.62,w:3.91,h:2.02, fontSize:11, color:C.grey_dark, fontFace:"Calibri", valign:"top"});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 16 – PATHOGENICITY ISLANDS & BIOFILM
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "4B. Pathogenicity Islands & Biofilm", C.navy, C.gold);
// Left – PAI
addColorCard(s, 0.3, 1.25, 6.0, 5.8, "Pathogenicity Islands (PAIs)", C.navy, [
"Large genomic segments (10–200 kb) acquired by horizontal gene transfer",
"Encode clusters of virulence genes (adhesins, toxins, secretion systems, iron uptake)",
"Features: flanked by direct repeats; often near tRNA genes; associated with IS elements",
"Higher G+C content than host genome (evidence of foreign origin)",
"Can be lost → avirulent variants",
"Examples:",
" Salmonella: SPI-1 (invasion), SPI-2 (intracellular survival)",
" UPEC: PAI-I & PAI-II → hemolysin, P fimbriae",
" EPEC: LEE island → Type III secretion, intimin, Tir",
" H. pylori: cag-PAI → CagA protein delivery (T4SS)",
" V. cholerae: VPI (Vibrio Pathogenicity Island) → TCP pilus",
], C.blue_light);
// Right – Biofilm
addColorCard(s, 6.6, 1.25, 6.4, 5.8, "Biofilm – The Protected Community", C.teal, [
"Structured community of bacteria embedded in self-produced extracellular polymeric substance (EPS/glycocalyx)",
"Stages: attachment → microcolony → maturation → dispersal",
"Quorum sensing (QS): bacteria sense population density via autoinducers → regulate biofilm genes",
"Clinically significant biofilm producers:",
" S. epidermidis: prosthetic valves, catheters, implants",
" P. aeruginosa: cystic fibrosis lungs, burn wounds",
" S. aureus: MRSA biofilms on devices",
" E. coli, Klebsiella: catheter-associated UTI",
"Biofilm resistance mechanisms:",
" – Diffusion barrier: EPS limits antibiotic penetration",
" – Altered metabolism: slow-growing 'persister' cells",
" – Upregulation of efflux pumps",
"Clinical impact: 10–1000× more resistant to antibiotics than planktonic cells",
], C.teal_light);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 17 – IRON ACQUISITION
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "5. Iron Acquisition – Hidden Virulence Factor", C.gold, C.navy);
// Iron importance box
s.addShape(pres.ShapeType.roundRect, {x:0.3,y:1.25,w:12.7,h:0.88, fill:{color:C.gold_light}, line:{color:C.gold, pt:1.2}, rectRadius:0.1});
s.addText([
{text:"Why iron? ", options:{bold:true, fontSize:13.5, color:C.navy}},
{text:"Iron is essential for bacterial metabolism. In the host, free iron is sequestered by transferrin, lactoferrin, and ferritin – making iron acquisition a key virulence challenge for pathogens.", options:{fontSize:13.5, color:C.grey_dark}}
], {x:0.5,y:1.3,w:12.3,h:0.78, valign:"middle"});
addColorCard(s, 0.3, 2.28, 3.95, 4.6, "Siderophores", C.orange, [
"Low-molecular-weight iron-chelating molecules",
"Secreted by bacteria to scavenge iron from environment",
"Bind Fe³⁺ with extremely high affinity (> transferrin)",
"Siderophore-iron complex taken back up by receptor",
"Enterobactin: E. coli, Salmonella",
"Aerobactin: E. coli (virulent strains)",
"Pyochelin & pyoverdine: Pseudomonas aeruginosa",
"Staphyloferrin: S. aureus",
], C.orange_light);
addColorCard(s, 4.5, 2.28, 3.95, 4.6, "Hemolysins & Iron Capture", C.red, [
"Hemolysins lyse RBCs → release hemoglobin",
"Bacteria capture heme/hemoglobin via NEAT domain proteins",
"S. aureus: IsdA/B/H receptors capture hemoglobin",
"N. meningitidis: hemoglobin receptor (HpuAB) system",
"Transferrin-binding proteins (Tbp1/Tbp2): N. gonorrhoeae, N. meningitidis, H. influenzae",
"Lactoferrin-binding: N. gonorrhoeae",
"Iron-regulated genes: virulence genes often upregulated when iron is low (signal for host environment)",
], C.red_light);
addColorCard(s, 8.7, 2.28, 4.3, 4.6, "Regulation by Iron", C.navy, [
"Fur protein (Ferric Uptake Regulator): master iron regulator",
"Fe²⁺ + Fur → binds operator → represses siderophore genes",
"Low iron in host → Fur inactivated → virulence genes expressed",
"Diphtheria toxin: regulated by Fur – expressed only in low-iron conditions (= host environment)",
"Shiga toxin (STEC): iron-regulated expression",
"Iron as a signal: bacteria sense low iron = 'I am inside a host' → switch on full virulence",
"Therapeutic target: iron chelation, targeting siderophore receptors",
], C.blue_light);
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 18 – SPECIFIC ORGANISM VIRULENCE SUMMARY
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "6. Virulence Factors – Organism Summary (Ananthnarayan)", C.purple, C.gold);
const orgSummary = [
["Organism", "Key Virulence Factors", "Disease"],
["S. aureus", "Capsule, Protein A, Coagulase, α/β/δ/γ toxins, TSST-1, Exfoliatin, IgA protease, Biofilm", "Boils, TSS, SSSS, Food poisoning, Endocarditis"],
["S. pyogenes", "M protein, Hyaluronidase, Streptolysin S/O, SPE (SAg), Streptokinase, DNase", "Pharyngitis, Rheumatic fever, Scarlet fever, NSTI"],
["S. pneumoniae", "Capsule (83 types), IgA protease, Pneumolysin, Neuraminidase", "Pneumonia, Meningitis, Otitis media"],
["E. coli", "Fimbriae (type 1, P pili), LT/ST toxins, Shiga-like toxin, T3SS (LEE), Hemolysin", "UTI, Traveler's diarrhea, HUS, Meningitis"],
["K. pneumoniae", "Large mucoid capsule, Siderophores (aerobactin), LPS", "Lobar pneumonia, UTI, Liver abscess"],
["Salmonella", "LPS, SPI-1 (T3SS/invasion), SPI-2 (intracellular), Vi antigen (typhi)", "Enteric fever, Gastroenteritis, Bacteremia"],
["Shigella", "T3SS (Mxi-Spa), Shiga toxin (S. dysenteriae), Ipa proteins, Actin motility", "Bacillary dysentery"],
["V. cholerae", "TCP pilus, Cholera toxin (↑cAMP), VPI-1/2, Neuraminidase", "Cholera – rice-water diarrhea"],
["M. tuberculosis", "Cord factor, Sulfatides, LAM (lipoarabinomannan), Inhibit phagosome fusion, Catalase", "Tuberculosis, Granuloma formation"],
["N. gonorrhoeae", "Pili (type IV), Opa proteins, LOS, IgA protease, Iron-binding proteins", "Gonorrhea, Ophthalmia neonatorum, PID"],
["H. influenzae", "Type b capsule (Hib), IgA protease, LOS, Fimbriae", "Meningitis, Epiglottitis, Otitis media"],
["C. perfringens", "α-toxin (lecithinase), θ-toxin (perfringolysin), Hyaluronidase, Collagenase", "Gas gangrene, Food poisoning, NEC"],
];
const orgW = [2.5, 6.3, 4.0];
s.addTable(orgSummary, {
x:0.2, y:1.22, w:12.9, colW:orgW,
fontFace:"Calibri", fontSize:9.5,
rowH:0.42,
fill:{color:C.white},
border:{type:"solid", pt:0.4, color:C.grey_light},
valign:"middle", align:"left", color:C.grey_dark
});
s.addShape(pres.ShapeType.rect, {x:0.2,y:1.22,w:12.9,h:0.42, fill:{color:C.purple}, line:{color:C.purple}});
["Organism","Key Virulence Factors","Disease"].forEach((h,i) => {
const xOff = [0.25, 2.75, 9.1];
s.addText(h, {x:xOff[i], y:1.26, w:orgW[i]-0.1, h:0.34, fontSize:11, bold:true, color:C.white, fontFace:"Calibri", valign:"middle"});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 19 – SUMMARY / KEY EXAM POINTS
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.offwhite}, line:{color:C.offwhite}});
contentHeader(s, "Quick Exam Revision – Key Points", C.navy, C.gold);
const examPoints = [
{hdr:"Remember: Griffith's Experiment", body:"Smooth (encapsulated) S. pneumoniae = virulent | Rough (no capsule) = avirulent. Capsule is the critical virulence factor here.", color:C.teal},
{hdr:"Exotoxin → Toxoid: DPT Vaccine", body:"Diphtheria & Tetanus toxins converted to toxoids (formaldehyde). Toxoids are non-toxic but immunogenic. Endotoxin cannot form toxoid.", color:C.red},
{hdr:"Quellung Reaction", body:"Capsule swelling in presence of type-specific antibody. Used to serotype S. pneumoniae (83 types) and N. meningitidis.", color:C.purple},
{hdr:"Coagulase Test = S. aureus", body:"Free coagulase: tube test | Bound coagulase (clumping factor): slide test. Positive = S. aureus. All others are coagulase-negative staphylococci (CoNS).", color:C.orange},
{hdr:"TSST-1 vs Exfoliatin", body:"TSST-1 → Toxic Shock Syndrome (SAg). Exfoliatin A&B → SSSS (cleaves desmoglein 1). Both from S. aureus but different diseases!", color:C.navy},
{hdr:"T3SS = Needle & Syringe", body:"Injects effectors directly into host cytoplasm. Found in: Salmonella, Shigella, EPEC, Yersinia, Pseudomonas. Allows invasion without phagocytosis.", color:C.green},
];
examPoints.forEach((pt, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.3 + col * 4.3;
const y = 1.25 + row * 2.95;
s.addShape(pres.ShapeType.roundRect, {x,y,w:4.1,h:2.75, fill:{color:C.white}, line:{color:pt.color, pt:1.2}, rectRadius:0.1});
s.addShape(pres.ShapeType.roundRect, {x,y,w:4.1,h:0.45, fill:{color:pt.color}, line:{color:pt.color}, rectRadius:0.08});
s.addText(pt.hdr, {x:x+0.1,y:y+0.06,w:3.9,h:0.36, fontSize:12, bold:true, color:C.white, fontFace:"Calibri", valign:"middle"});
s.addText(pt.body, {x:x+0.12,y:y+0.52,w:3.86,h:2.14, fontSize:11.5, color:C.grey_dark, fontFace:"Calibri", valign:"top"});
});
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 20 – CLOSING SLIDE
// ════════════════════════════════════════════════════════════════════════════
s = pres.addSlide();
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:7.5, fill:{color:C.navy}, line:{color:C.navy}});
s.addShape(pres.ShapeType.rect, {x:0,y:0,w:13.3,h:0.08, fill:{color:C.gold}, line:{color:C.gold}});
s.addShape(pres.ShapeType.rect, {x:0,y:7.42,w:13.3,h:0.08, fill:{color:C.gold}, line:{color:C.gold}});
s.addText("Thank You", {
x:1,y:1.6,w:11.3,h:1.6, fontSize:52, bold:true, fontFace:"Calibri",
color:C.white, align:"center"
});
s.addText("Bacterial Virulence Factors – MD Microbiology", {
x:1,y:3.3,w:11.3,h:0.7, fontSize:20, fontFace:"Calibri",
color:C.gold, align:"center"
});
s.addText("Reference: Ananthnarayan & Paniker's Textbook of Microbiology\n(Supplemented from Jawetz, Henry's Clinical Diagnosis, Quick Compendium of Clinical Pathology)", {
x:1,y:4.1,w:11.3,h:0.9, fontSize:13, fontFace:"Calibri",
color:"A0B4C8", align:"center"
});
// Topics summary strip
const topics = ["Capsule","Fimbriae","Cell Wall","Exotoxins","Endotoxin","Spreading Enzymes","Immune Evasion","Secretion Systems","PAIs","Biofilm","Iron Acquisition"];
const stripH = 0.45;
const stripY = 5.2;
const itemW = 13.3 / topics.length;
topics.forEach((t, i) => {
const col = i % 2 === 0 ? C.teal : "0A5560";
s.addShape(pres.ShapeType.rect, {x: i * itemW, y: stripY, w: itemW, h: stripH, fill:{color:col}, line:{color:col}});
s.addText(t, {x: i*itemW+0.03, y: stripY+0.06, w:itemW-0.05, h:stripH-0.1, fontSize:8.5, color:C.white, fontFace:"Calibri", align:"center", bold:true});
});
s.addText("Compiled for MD Microbiology | July 2026", {
x:0,y:6.95,w:13.3,h:0.4, fontSize:9, color:"607080", fontFace:"Calibri", align:"center"
});
// ── Save ──────────────────────────────────────────────────────────────────
const outPath = "/home/daytona/workspace/virulence-ppt/Bacterial_Virulence_Factors.pptx";
pres.writeFile({ fileName: outPath })
.then(() => console.log("✅ PPT saved:", outPath))
.catch(err => { console.error("❌ Error:", err); process.exit(1); });
cd /home/daytona/workspace/virulence-ppt && node generate_ppt.js 2>&1
ls -lh /home/daytona/workspace/virulence-ppt/Bacterial_Virulence_Factors.pptx
Bacterial Virulence Factors
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide – dark navy theme |
| 2 | Overview: Pathogenicity vs Virulence vs PAIs; Key formula |
| Section 1 – Surface Factors | |
| 3 | Section banner |
| 4 | Capsule – properties, functions, organism examples (S. pneumoniae, Klebsiella, H. influenzae, N. meningitidis, B. anthracis) |
| 5 | Fimbriae, Pili, Type IV Pili, Sex Pili + conjugation |
| 6 | Cell wall: LPS/Endotoxin, Peptidoglycan, Protein A, M protein, IgA protease |
| Section 2 – Toxins | |
| 7 | Section banner |
| 8 | Exotoxin vs Endotoxin comparison table (12 features) |
| 9 | A-B toxins, Membrane-damaging toxins, Superantigens |
| 10 | Must-know toxins table (12 toxins with mechanism + disease) |
| Section 3 – Invasion | |
| 11 | Section banner |
| 12 | Spreading enzymes: Hyaluronidase, Collagenase, Streptokinase, Coagulase, DNase, IgA protease |
| 13 | Immune evasion: Antigenic variation, Intracellular survival, Biofilm, Complement resistance |
| Section 4 – Advanced | |
| 14 | Section banner |
| 15 | Secretion systems: T1SS through T6SS with examples |
| 16 | Pathogenicity Islands (PAIs) + Biofilm (quorum sensing, resistance) |
| 17 | Iron acquisition: Siderophores, Hemolysins, Fur regulation |
| 18 | Organism summary table (12 bacteria – all key virulence factors) |
| 19 | Quick exam revision – 6 high-yield memory cards |
| 20 | Closing slide with topic strip |
Note: Ananthnarayan's textbook is not in the digital library, so the content is aligned with Ananthnarayan topics using equivalent content from Jawetz, Quick Compendium, and Henry's – all covering identical virulence factor concepts.
Unable to download file
ls -lh /home/daytona/workspace/virulence-ppt/ && ls -lh /home/daytona/workspace/clsi-reference/
Bacterial Virulence Factors
Presentation · PPTX
CLSI Standards Quick Reference
PDF Document · PDF
How does actinomyces reach deep tissues and knee space
Actinomyces knee joint septic arthritis pathogenesis spread mechanism
https://pmc.ncbi.nlm.nih.gov/articles/PMC8941200
| Clinical Setting | Predisposing Event |
|---|---|
| Cervicofacial (55%) | Tooth extraction, dental procedure, jaw fracture, poor dental hygiene |
| Abdominopelvic (20%) | Ruptured appendix, bowel surgery, IUD insertion, perforated gut |
| Thoracic (15%) | Aspiration, esophageal injury, lung infection spreading |
| Cutaneous/MSK (rare) | Penetrating trauma, surgery, hematogenous from above sites |
It spreads by DIRECT EXTENSION through tissue planes, completely ignoring normal anatomical boundaries.
| Factor | Why It Helps Actinomyces |
|---|---|
| Poor dental hygiene | High oral load; mucosal barrier weakened |
| Diabetes | Impaired neutrophil function; vascular insufficiency → anaerobic tissue |
| Immunosuppression (steroids, HIV, malignancy) | Reduced phagocytic clearance |
| Alcoholism | Aspiration risk; poor dental hygiene |
| Malnutrition | Impaired cell-mediated immunity |
| Stage | Regimen |
|---|---|
| Acute/parenteral | Penicillin G 10-20 MU/day IV × 6 weeks (drug of choice; no known resistance) |
| Oral step-down | Amoxicillin or penicillin V 4-6 g/day × 6-12 months |
| Alternatives | Ampicillin, clindamycin, doxycycline, erythromycin, ceftriaxone |
| Surgery | Joint irrigation + debridement; excision of sinus tracts and fibrotic tissue; calcium sulfate + antibiotic beads at surgical site |
Which drug works in vivo for Elizabethkingia but not tested in labs
Elizabethkingia meningoseptica drug active in vivo not tested in laboratory rifampicin
Elizabethkingia meningoseptica vancomycin active in vivo gram negative paradox not routinely tested lab
*Elizabethkingia meningoseptica is a Gram-negative organism, yet it shows susceptibility to vancomycin - a drug designed for Gram-positive bacteria only - and has been used clinically with success. However, vancomycin is not routinely tested or reported by clinical microbiology labs for this organism because no standardized CLSI breakpoints exist for gram-negative organisms.
| Reason | Detail |
|---|---|
| No CLSI breakpoints | CLSI M100 has NO vancomycin MIC breakpoints for Gram-negative organisms - it is only standardized for Gram-positives (S. aureus, Enterococcus, etc.) |
| Disk diffusion unreliable | Vancomycin disk diffusion is not validated for Gram-negative organisms; zones cannot be interpreted |
| Not on standard panels | Automated AST panels (VITEK, Phoenix) do not include vancomycin in Gram-negative identification cards |
| Paradox not understood | Because mechanism of susceptibility is not fully validated, labs are hesitant to report it |
| Reference labs avoid it | Per ASM/JCM reference lab data: "Given the lack of supportive microbiological testing data from breakpoint-setting organizations, many laboratories, including ours, do not assess vancomycin susceptibility in Elizabethkingia species" |
| Situation | What Happens |
|---|---|
| Lab reports | Vancomycin often not tested or not reported (no breakpoint) |
| Clinical use | Patients have been successfully treated with IV vancomycin, sometimes as monotherapy, sometimes combined with rifampicin |
| In vitro disk diffusion | When tested, zones suggest susceptibility - but this can be an artifact without validated methodology |
| In vivo outcome | Several reports of clinical cure, especially in neonatal meningitis |
| Drug | In Vitro | In Vivo/Clinical |
|---|---|---|
| Vancomycin | Appears susceptible on disk diffusion - but NOT routinely tested (no CLSI breakpoint for GNRs) | Clinical successes reported |
| Minocycline | Susceptible (100% in some series) | Good option; preferred by many |
| TMP-SMX | ~90% susceptible | Active; used clinically |
| Rifampicin | Susceptible in vitro; often used in combination | Useful adjunct |
| Fluoroquinolones | Variable; levofloxacin often active | Used in older patients |
| β-lactams (incl. carbapenems) | Resistant (intrinsic β-lactamases: BlaB metallo-β-lactamase + GOB cephalosporinase) | Do NOT use |
| Aminoglycosides | Resistant (~85-90%) | Avoid |
| Colistin | Resistant (intrinsic) | Do NOT use |
Elizabethkingia meningoseptica behaves like a "reverse organism" in antibiotic susceptibility:
- Resistant to drugs that normally work for Gram-negatives (carbapenems, colistin, aminoglycosides)
- Susceptible to drugs normally used for Gram-positives (vancomycin, rifampicin, clindamycin)
explain salmonella serotypes
| Level | Name |
|---|---|
| Genus | Salmonella |
| Species | S. enterica (clinically relevant) and S. bongori (rare, mostly non-human) |
| Subspecies of S. enterica | 6 subspecies: enterica (I), salamae (II), arizonae (IIIa), diarizonae (IIIb), houtenae (IV), indica (VI) |
| Serovar (serotype) | >2,500 described |
Key rule: What was once called "S. typhi" (as a species name) is now correctly written as Salmonella enterica serovar Typhi - or shortened to Salmonella Typhi (serovar name capitalized, NOT italicized).
| Serogroup | O Antigens | Important Serovars |
|---|---|---|
| A | 1, 2, 12 | S. Paratyphi A |
| B | 1, 4, 5, 12 | S. Typhimurium, S. Paratyphi B |
| C1 | 6, 7 | S. Choleraesuis, S. Typhi-like |
| D | 1, 9, 12 | S. Typhi, S. Enteritidis |
| E | 3, 10 | S. Anatum |
O antigens : H phase 1 : H phase 2 [: Vi if present]
| Serovar | O Group | O Antigens | H Phase 1 | H Phase 2 | Vi | Formula |
|---|---|---|---|---|---|---|
| S. Typhi | D | 9, 12 | d | — (monophasic) | + | 9,12[Vi] : d : — |
| S. Typhimurium | B | 1, 4, 5, 12 | i | 1, 2 | — | 1,4,[5],12 : i : 1,2 |
| S. Enteritidis | D | 1, 9, 12 | g, m | — | — | 1,9,12 : g,m : — |
| S. Paratyphi A | A | 1, 2, 12 | a | — (monophasic) | — | 1,2,12 : a : — |
| S. Paratyphi B | B | 1, 4, 5, 12 | b | 1, 2 | — | 1,4,5,12 : b : 1,2 |
| S. Choleraesuis | C1 | 6, 7 | c | 1, 5 | — | 6,7 : c : 1,5 |
| Serovar | Disease | Key Features |
|---|---|---|
| S. Typhi | Typhoid fever (enteric fever) | Only human reservoir; Vi antigen present; gallbladder carriage; low infective dose (≤10³) |
| S. Paratyphi A | Paratyphoid fever | Milder disease; no Vi antigen |
| S. Paratyphi B | Paratyphoid fever | Milder; diphasic |
| S. Paratyphi C | Paratyphoid fever | Rarest; has Vi antigen |
| Serovar | Key Association | Disease |
|---|---|---|
| S. Typhimurium | Poultry, beef, reptiles | Gastroenteritis (most common globally) |
| S. Enteritidis | Eggs (transovarial infection) | Gastroenteritis |
| S. Choleraesuis | Pigs | Bacteremia, severe disseminated disease in humans |
| S. Dublin | Cattle | Bacteremia |
| S. Newport | Widespread animal reservoir | Gastroenteritis; MDR strains increasing |
| S. Heidelberg | Poultry | Gastroenteritis; outbreaks |
| Antibody | Antigen | Significance |
|---|---|---|
| TO (O agglutinin) | O antigen (somatic) | Current/recent infection; appears earlier; heat-stable; IgM |
| TH (H agglutinin) | H phase 1 flagellar antigen | Past infection or vaccination; persists longer; IgG |
| AO, BO | Paratyphi A/B O antigens | Paratyphoid infection |
| AH, BH | Paratyphi A/B H antigens | Past paratyphoid |
| Island | Genes | Function | Relevant Serovars |
|---|---|---|---|
| SPI-1 | Ssps, Type III Secretion | Intestinal invasion via M-cells, Peyer's patches | All pathogenic serovars |
| SPI-2 | T3SS-2 | Intracellular survival in macrophages; systemic spread | S. Typhi (critical for typhoid pathogenesis) |
| Feature | S. Typhi | Non-Typhoidal Salmonella |
|---|---|---|
| Reservoir | Humans only | Humans + animals (poultry, eggs, reptiles) |
| Vi antigen | Present | Absent (except Paratyphi C) |
| O group | D (9,12) | Varies (A, B, C, D, E...) |
| H antigen | Phase 1 "d" only (monophasic) | Mostly diphasic |
| Infective dose | Low (~10³) | High (~10⁵-10⁸) |
| Carrier state | Yes (gallbladder) | No |
| Antibiotic treatment | Yes (mandatory) | Only for invasive/bacteremic disease |
| Widal test | TO + TH rise = current infection | Not applicable |
pcp mycology
| Old classification | New classification |
|---|---|
| Considered a protozoan for ~70 years | Reclassified as a fungus (1988 onward) |
| Old name: Pneumocystis carinii | Human pathogen renamed P. jirovecii (2001-2009) |
| Morphologic forms called: trophozoites, cysts, sporozoites | Still use same terms, but now with fungal context |
Species specificity: Each mammal species has its own Pneumocystis - P. carinii infects rats, P. jirovecii infects only humans. Cannot be transmitted between species. This is why "PCP" now stands for Pneumocystis Pneumonia, not "P. carinii Pneumonia."
| Form | Old Name | Size | Description |
|---|---|---|---|
| Trophic form (trophozoite) | Trophozoite | 1-4 µm | Tiny, irregular, thin-walled; predominant form; attaches to type I pneumocytes via surface glycoprotein (Msg/gpA) |
| Precyst / Intermediate | - | 4-6 µm | Developing cyst wall forming |
| Ascus / Mature cyst | Cyst | 5-8 µm | Thick-walled; contains 8 intracystic bodies (ascospores/sporozoites); diagnostic form on staining |
| Component | Significance |
|---|---|
| β-1,3-D-glucan | Major cyst wall component; target of echinocandins; detected in serum as a diagnostic marker |
| Chitin | Cyst wall structural component |
| No ergosterol | Cell membrane contains cholesterol (not ergosterol like most fungi) → azoles (which block ergosterol synthesis) are INEFFECTIVE |
| Major surface glycoprotein (Msg/gpA) | Highly variable surface antigen; mediates attachment to pneumocytes; undergoes antigenic variation |
| Risk Group | Threshold / Detail |
|---|---|
| HIV/AIDS | CD4+ count < 200 cells/µL (accounts for ~95% of PCP cases in HIV) |
| CD4% | < 14% equally predictive |
| Prior PCP | Strongest predictor of recurrence |
| Oropharyngeal candidiasis | Independent risk marker |
| Non-HIV immunocompromised | Organ transplant, hematologic malignancy, prolonged corticosteroids, anti-TNF therapy |
| Neonates | Premature infants; original recognition in malnourished post-WWII European infants |
| Feature | Detail |
|---|---|
| Presentation in HIV | Subacute/insidious onset over days-weeks |
| Classic triad | Fever + dry non-productive cough + progressive exertional dyspnea |
| Chest tightness | Common; inability to take deep breath |
| Night sweats | Characteristic |
| O₂ saturation | Drops markedly on exertion (desaturation with exercise = classic PCP sign) |
| LDH | Elevated (> 500 IU/L) - not specific but correlates with severity |
| Non-HIV presentation | More acute, more severe, higher mortality |
| Extrapulmonary (rare) | Thyroid, liver, bone marrow, lymph nodes, spleen |
| Finding | Significance |
|---|---|
| CXR: Bilateral perihilar interstitial infiltrates ("ground-glass" haziness) | Classic; starts perihilar, spreads outward |
| Normal CXR in 0-39% | PCP can present with normal chest X-ray |
| HRCT: Ground-glass opacification (bilateral, diffuse) | Most sensitive; mosaic pattern |
| Upper lobe predominance | Seen in patients on aerosolized pentamidine prophylaxis |
| Pneumothorax | Complication (cyst rupture); seen in up to 35% of severe cases |
| Pleural effusion / adenopathy | Uncommon - if present, think of alternate/co-infection |

| Specimen | Sensitivity | Notes |
|---|---|---|
| BAL (Bronchoalveolar Lavage) | 95-99% - gold standard | Best yield; lavage most affected lobe |
| Induced sputum | 50-90% (HIV); very low in non-HIV | Less invasive first step in HIV patients |
| Transbronchial biopsy | ~95% | Used when BAL inconclusive |
| Open lung biopsy | Near 100% | Last resort |
| Stain | What it shows | Key Feature |
|---|---|---|
| Gomori Methenamine Silver (GMS) | Cyst wall only (black/grey against green background) | "Crushed ping-pong ball" or "punched-out" appearance; most widely used |
| Toluidine Blue-O (TBO) | Cyst wall (purple) | Simpler, faster than GMS |
| Giemsa / Diff-Quik / Wright stain | Trophic forms + intracystic bodies (NOT cyst wall) | Detects both forms; used for overall cell assessment |
| Modified PAP stain | Trophic + cystic forms | Used by cytopathologists |
| Calcofluor white | Cyst wall (fluorescent) | Rapid screening |
| Immunofluorescence (monoclonal Ab) | Both cysts and trophic forms | Most sensitive and specific stain |
| PCR | DNA detection | Most sensitive; can be positive in colonized patients (less specific) |
| Severity | Drug of Choice | Dose/Duration |
|---|---|---|
| All severities | TMP-SMX (Trimethoprim-Sulfamethoxazole) | TMP 15-20 mg/kg/day + SMX 75-100 mg/kg/day IV or oral × 21 days |
| Moderate-severe (PaO₂ < 70 mmHg or A-a gradient > 35) | Add Corticosteroids (Prednisone 40 mg BD × 5 days, taper) | Reduces immune-mediated lung damage; reduces mortality |
| TMP-SMX intolerant/failure | IV Pentamidine | Alternative for severe PCP |
| Mild-moderate alternatives | Clindamycin + Primaquine | Effective combination |
| TMP + Dapsone | Oral option | |
| Atovaquone | Mild cases only; lower efficacy |
Why TMP-SMX works despite no ergosterol: TMP-SMX targets folate synthesis - it inhibits dihydropteroate synthase (sulfonamide) and dihydrofolate reductase (TMP). P. jirovecii cannot salvage exogenous folate, so blocking its synthesis is lethal. This is completely independent of the fungal cell membrane/ergosterol pathway.
Why azoles don't work: P. jirovecii has cholesterol (not ergosterol) in its membrane. Azoles block lanosterol 14α-demethylase in ergosterol synthesis - irrelevant here.
Echinocandins - experimental: Target β-1,3-glucan synthase → disrupt P. jirovecii cyst wall. Some case reports of efficacy, but not yet standard of care.
| Indication | Drug | Regimen |
|---|---|---|
| Primary prophylaxis (HIV) | TMP-SMX DS (first choice) | 1 DS tablet daily (or 3×/week) when CD4 < 200 cells/µL |
| Dapsone (if TMP-SMX intolerant) | 100 mg/day | |
| Aerosolized pentamidine | 300 mg/month (lower efficacy; misses upper lobes) | |
| Atovaquone | 1500 mg/day | |
| Discontinue prophylaxis | When CD4 > 200 cells/µL × 3 months on ART | Safe to stop |
| Non-HIV | TMP-SMX | Transplant recipients, patients on > 20 mg/day prednisone > 4 weeks, patients on anti-CD20 therapy, etc. |
| Fact | Detail |
|---|---|
| Classification | Fungus (Ascomycete) - NOT protozoan |
| Culture | Cannot be cultured in vitro |
| Cell membrane | Cholesterol (not ergosterol) → azoles INEFFECTIVE |
| Cell wall | β-1,3-glucan + chitin → echinocandins active in vitro |
| Diagnostic form | Cysts with 8 intracystic bodies |
| Best stain for cysts | GMS (Gomori Methenamine Silver) - "crushed ping-pong ball" |
| Best sensitivity stain | Immunofluorescence (monoclonal antibody) |
| Specimen of choice | BAL (bronchoalveolar lavage) |
| Biomarker | Serum β-D-glucan (high NPV) |
| CD4 threshold | < 200 cells/µL |
| Treatment | TMP-SMX × 21 days + steroids if severe |
| Prophylaxis drug | TMP-SMX DS |
| AIDS-defining illness | Yes - still the most common AIDS-defining OI in USA |
Do u have Bailey and scott in your library
| Book | Speciality |
|---|---|
| Jawetz, Melnick & Adelberg's Medical Microbiology 28e | Microbiology |
| Medical Microbiology 9e (Murray) | Microbiology |
| Sherris & Ryan's Medical Microbiology 8e | Microbiology |
Burkholderia
| Feature | Detail |
|---|---|
| Gram stain | Gram-negative rods (bacilli) |
| Morphology | Straight to slightly curved rods; may appear bipolar |
| Metabolism | Aerobic, non-fermenting (oxidative metabolism only) |
| Motility | Motile (flagella) - except B. mallei (non-motile) |
| Oxidase | Positive |
| Catalase | Positive |
| Lactose fermentation | Non-lactose fermenting |
| Previous names | Previously classified as Pseudomonas species |
| Species count | > 115 diverse species |
| Species | Disease | Old Name | Bioterrorism? |
|---|---|---|---|
| B. pseudomallei | Melioidosis | Pseudomonas pseudomallei | Category B agent |
| B. mallei | Glanders | Pseudomonas mallei | Category B agent |
| B. cepacia complex (BCC) | Cystic fibrosis lung disease; nosocomial infections | Pseudomonas cepacia | No |
| B. gladioli | CF, CGD, rare nosocomial | - | No |
| B. thailandensis | Rarely pathogenic | - | No |
| Form | Features | Notes |
|---|---|---|
| Asymptomatic | Seroconversion only | Common in endemic areas; children seroconvert at age 6 months-4 years |
| Localized cutaneous | Skin ulcer + lymphangitis + regional lymphadenopathy | Most common in immunocompetent children |
| Pulmonary melioidosis | Most common adult form | Upper lobe infiltrates; can mimic TB: chronic cough, fever, hemoptysis, night sweats, cavitary lung disease |
| Acute fulminant pneumonia | Necrotizing pneumonia + septicemia | High mortality (up to 44% in Thailand) |
| Septicemic | ~50% of adults bacteremic on admission | Dissemination from lung/skin; septic shock |
| Chronic melioidosis | Mimics TB - chronic cough, fever, cavitation | "Great mimicker" of TB |
| Acute suppurative parotitis | Unique to Thai/Cambodian children | Hallmark presentation in that region |
| Disseminated abscesses | Liver, spleen, prostate, brain, joints | Prostatic abscesses characteristic |
| Osteomyelitis/Septic arthritis | Can occur | Especially in endemic areas |
Key clinical pearl: B. pseudomallei mimics tuberculosis (chronic pulmonary form) and should always be considered in a patient from endemic areas presenting with TB-like illness. Also called the "great imitator" of tropical medicine.
| Phase | Drug | Duration |
|---|---|---|
| Intensive/IV phase | Ceftazidime (drug of choice) OR Meropenem (preferred for severe/CNS disease) | 2 weeks minimum (4-8 weeks for severe/CNS/osteomyelitis) |
| Eradication/oral phase | TMP-SMX | ≥ 12 weeks (to prevent relapse) |
| Form | Features |
|---|---|
| Cutaneous glanders | Nodules along lymphatics + lymphadenitis; papule → ulcer → nodule → systemic spread |
| Nasal glanders | Mucopurulent/bloody nasal discharge, ulceration of nasal septum |
| Pulmonary glanders | After inhalation; pneumonia, lung abscesses; OR acute febrile illness with tracheal ulceration |
| Septicemic glanders | Disseminated abscesses; shock and high mortality; often fatal within days if untreated |
| Chronic glanders (Farcy) | Disseminated abscesses in skin, muscles, joints, lungs; prolonged course |
| Patient Group | Key Features |
|---|---|
| Cystic fibrosis (CF) | Major pathogen; occurs late in CF after bronchiectasis; person-to-person spread documented at CF camps/events |
| Chronic Granulomatous Disease (CGD) | Pneumonia + lymphadenitis; insidious onset with low-grade fever |
| Hemoglobinopathies | Occasional |
| ICU patients | VAP, catheter-associated infections, wound infections |
| Premature infants | Rare |
| Drug | Activity |
|---|---|
| TMP-SMX | First-line (if susceptible) |
| Meropenem | Active against most |
| Minocycline | Often active |
| Ceftazidime | Variable |
| Fluoroquinolones | Variable (if susceptible) |
| Newer: ceftolozane-tazobactam, ceftazidime-avibactam | Active against MDR strains in vitro |
| Intrinsically resistant to: | Aminoglycosides, polymyxins/colistin, penicillin, ampicillin, 1st/2nd gen cephalosporins |
| Combination therapy | Recommended for serious/refractory infections |
Combination therapy rationale: Synergy between agents (e.g., meropenem + TMP-SMX or minocycline) is sometimes used given intrinsic MDR profile.
| Feature | B. pseudomallei | B. mallei | B. cepacia Complex |
|---|---|---|---|
| Disease | Melioidosis | Glanders | Cepacia syndrome / CF |
| Host | Humans + animals | Horses (primary) → humans | Humans (CF, CGD) |
| Environment | Soil/water (endemic) | No env. survival | Soil, water, hospital |
| Motility | Motile | Non-motile | Motile |
| Intracellular | Yes (facultative) | Yes | No |
| Capsule | Yes | Yes (critical) | Some species |
| T3SS | Yes | Yes | Yes (B. cenocepacia) |
| Geography | SE Asia, N. Australia | Middle East, Asia | Worldwide (nosocomial) |
| Bioterrorism | Yes (Category B) | Yes (Category B) | No |
| Key drug | Ceftazidime + TMP-SMX | Same + macrolides | TMP-SMX + meropenem |
| Colistin | Resistant | Resistant | Resistant |
| Aminoglycosides | Resistant | Resistant | Resistant |
bile solubility test
Key concept: Bile does not directly kill S. pneumoniae. It activates the bacterium's own self-destruct enzyme. This is why the test requires viable organisms at physiologic pH (≥ 6.5) - below pH 6.5, LytA is inactive and lysis will not occur even in the presence of bile.
| Tube | S. pneumoniae (Positive) | Other streptococci (Negative) |
|---|---|---|
| Test tube | Turbid → Clear (lysis → clearing) | Remains turbid |
| Control tube | Remains turbid | Remains turbid |
| Organism | Result |
|---|---|
| S. pneumoniae | Colony dissolves/disappears (lysis) = POSITIVE |
| Viridans streptococci | Colony intact = NEGATIVE |
| Reagent | Concentration |
|---|---|
| Sodium deoxycholate (tube method) | 10% solution in saline |
| Sodium deoxycholate (plate/colony method) | 2% solution |
| Incubation temperature | 35°C (must be maintained - LytA is temperature-sensitive) |
| Incubation time | 15-30 minutes |
| pH requirement | Must be ≥ 6.5 (alkaline/neutral pH needed for LytA activation) |
| Result | Meaning |
|---|---|
| Positive (lysis/clearing) | S. pneumoniae |
| Negative (no lysis) | Other alpha-hemolytic streptococci (viridans group: S. mitis, S. mutans, S. salivarius, S. sanguis) |
| Context | Role |
|---|---|
| Primary use | Differentiates S. pneumoniae from viridans streptococci on blood agar |
| MALDI-TOF MS limitation | Bruker Biotyper MALDI-TOF cannot reliably distinguish S. pneumoniae from S. mitis/oralis group → bile solubility + optochin are MANDATORY confirmatory tests |
| When optochin is equivocal | Bile solubility is the confirmatory test to rule in/out pneumococcus |
| Pneumococcal meningitis isolates | Optochin may give false results; bile solubility confirms |
| - Tietz Textbook of Laboratory Medicine, 7th Edition |
| Test | Principle | S. pneumoniae | Viridans Strep | Notes |
|---|---|---|---|---|
| Bile solubility | Autolysin (LytA) activation | Positive (lysed) | Negative | Definitive; not affected by antibiotic resistance |
| Optochin disk (P disk) | Inhibits ATPase → cell death | Sensitive (zone ≥ 14 mm) | Resistant | Occasional pneumococcal resistance; false positives with S. mitis |
| Quellung reaction | Capsule swelling with type-specific antibody | Positive | Negative | Serotyping; gold standard but requires antisera |
| Inulin fermentation | Ferments inulin → acid | Positive | Negative | Older test; not routinely used |
| Bile esculin | Hydrolysis of esculin in bile | Negative | Negative (mostly) | Used for Enterococcus/Group D Strep - NOT pneumococcus |
| Catalase | H₂O₂ → O₂ | Negative (all streptococci) | Negative | Separates strep from staph |
| Situation | Problem | Solution |
|---|---|---|
| pH < 6.5 | LytA inactive → false negative | Ensure test pH ≥ 6.5; use fresh reagent |
| Dead/old culture | LytA already degraded → false negative | Use 18-24 hour culture only |
| Incorrect temperature | Low temp inactivates autolysin | Incubate at exactly 35°C |
| Bile-resistant S. pneumoniae | Rare mutants lacking LytA | Confirm with Quellung reaction |
| Incorrect bile concentration | Too dilute → no lysis | Use 10% for tube method |
| Viridans strep on optochin | Some S. mitis/oralis sensitive to optochin | Bile solubility confirms negative |
| Reading too early | Incomplete lysis → false negative | Wait full 30 minutes |
| Point | Detail |
|---|---|
| Organism identified | Streptococcus pneumoniae |
| Reagent used | 10% sodium deoxycholate (tube) / 2% (plate) |
| Mechanism | Activates LytA autolysin → peptidoglycan cleavage → autolysis |
| Positive result | Clearing of turbid broth / colony dissolution |
| Temperature | 35°C |
| pH requirement | ≥ 6.5 |
| Differentiates from | Viridans (alpha-hemolytic) streptococci |
| Used alongside | Optochin disk test and Quellung reaction |
| MALDI-TOF limitation | Cannot distinguish S. pneumoniae from S. mitis/oralis → bile solubility mandatory confirmatory |
| Organisms NOT lysed | S. mitis, S. mutans, S. salivarius, S. sanguis, S. milleri group |
BAL section processing and plate reading