Pertussis

Reading File
Finding Sources
Searching PubMed

pertussis whooping cough

Reading File
Reading File
Finding Sources
Reading File
Reading File
Reading File
Reading File
Loading Image
Reading File
I now have comprehensive material across pathogenesis, clinical features, diagnosis, treatment, and vaccination. I have everything needed for a thorough answer.

Pertussis (Whooping Cough)

Causative organism: Bordetella pertussis - a fastidious, gram-negative coccobacillus. B. parapertussis and B. bronchiseptica cause milder, pertussis-like illness.

Epidemiology

Pertussis remains a major global public health problem despite decades of vaccination. In unimmunized populations, incidence peaks in preschool years. In highly immunized populations (North America, Europe), peak incidence has shifted to:
  • Infants <1 year who have not completed the 3-dose primary series
  • Adolescents and adults with waning immunity
The U.S. saw >200,000 cases/year before vaccination; this fell to <2,000 by 1980 with whole-cell DTP. After the switch to acellular pertussis vaccines, cases rebounded to ~20,000/year. Large outbreaks occurred in 2010, 2012, 2014, and 2015. Adults may account for ~1 million cases/year in the U.S. alone, though most are undiagnosed.
Asymptomatic infection is estimated at 56% among household contacts - meaning silent transmission is a major driver of spread.
Reported cases of pertussis in the U.S., 1922-2021, marking introduction of DTP, DTaP, and Tdap vaccines
Reported pertussis cases in the U.S., 1922-2021. The dramatic fall after DTP introduction, and the resurgence after the switch to acellular vaccines, are clearly shown. - Harrison's Principles of Internal Medicine, 22nd Ed.

Pathogenesis

Pertussis is not a tissue-invasive disease. Its pathogenesis is mediated through toxins acting locally and systemically.
Step 1 - Attachment:
  • B. pertussis attaches to ciliated nasopharyngeal epithelium via surface adhesins: filamentous hemagglutinin (FHA), pertactin (PRN), and fimbriae
  • These bind integrin cell-surface proteins, often in conjunction with pertussis toxin
Step 2 - Toxin-mediated damage:
ToxinAction
Pertussis toxin (PT)Systemic effects; leukocyte-lymphocytosis; enhances glucose-stimulated insulin secretion; immunomodulatory (downregulates early immune responses, inhibits macrophages and neutrophil recruitment, perpetuating infection)
Adenylate cyclase-hemolysin toxin (ACT)Binds CR3 on host cells; produces supraphysiologic cAMP levels; inhibits antibacterial function of macrophages and neutrophils
Tracheal cytotoxinLocal mucosal damage to respiratory epithelium
Dermonecrotic toxinLocal damage at the site of infection
Bacteria adherent to cilia cause epithelial cell loss and prominent mucus secretion. Systemic dissemination does not occur, but systemic manifestations (lymphocytosis) result from toxin effects.
The exact cause of the paroxysmal cough remains unknown - bradykinin-induced inflammation and PT-mediated interference with sphingosine-1-phosphate anti-inflammatory effects are contributing factors.

Clinical Stages

Classic pertussis has three stages, total illness lasting 6-10 weeks in complicated cases:

1. Catarrhal Stage (1-2 weeks)

  • Rhinorrhea, increased lacrimation, conjunctival injection, mild cough, low-grade fever
  • Most infectious stage - organisms shed heavily
  • Clinically indistinguishable from a common cold
  • Asymptomatic and subclinical infection common, especially in adults

2. Paroxysmal Stage (2-4 weeks)

  • Staccato bursts of repeated forceful coughs in a single expiration
  • Classic "whoop" - a high-pitched inspiratory sound as the child gasps for air after the paroxysm
    • Present in only ~6% of patients overall; mainly children >2-3 years old
  • Post-tussive emesis very common
  • Cyanosis and apnea in infants <6 months - life-threatening
  • Fever often absent; examination findings remarkably normal between paroxysms

3. Convalescent Stage (weeks to months)

  • Gradual waning of symptoms
  • Cough may recur with subsequent respiratory infections for months

Age-dependent presentation:

FeatureInfants & ChildrenAdolescents & Adults
WhoopPresent (classic)Often absent
Post-tussive emesisCommonLess common
ApneaCommon, life-threateningRare
Cough durationWeeksWeeks to months
FeverUsually absentUsually absent
LymphocytosisMarkedMild
In adolescents and adults, the illness is mild but prolonged - dry cough persisting 3+ weeks, without the classic stages.

Complications

In infants (highest morbidity and mortality):
  • Apneic episodes (most feared)
  • Secondary bacterial pneumonia (diffuse bilateral B. pertussis pneumonia in up to 22% of infants)
  • Seizures
  • Encephalopathy
  • Death - infants <2 months account for 84% of pertussis deaths in the U.S.
  • Pulmonary hypertension with extreme leukocytosis (most ominous sign)
In older children and adults:
  • Pneumonia from secondary infection (streptococci, staphylococci)
  • Rib fractures from coughing
  • Urinary incontinence
  • Subconjunctival hemorrhage
  • Syncope
A 2025 meta-analysis (Cousin et al., Crit Care 2025, PMID 39930478) validated a mortality score for critically ill infants with pertussis - highlighting that leukocytosis, pulmonary hypertension, and age <3 months are key mortality predictors.

Immunity

  • Both humoral and cell-mediated immunity are important
  • Natural infection immunity was thought to be lifelong but is not - subsequent clinical disease prevented only by intermittent subclinical boosting
  • Acellular vaccine immunity wanes within 2-4 years after the 5th or 6th dose
  • Whole-cell vaccine immunity lasts ~10-12 years
  • Mechanism: natural infection and whole-cell vaccine elicit TH1/TH17 response; acellular vaccines elicit a TH2-biased response - this difference likely explains the shorter duration of protection with acellular vaccines

Diagnosis

Clinical Criteria (WHO)

Cough lasting ≥2 weeks with at least one of: paroxysms, whoop, or post-tussive vomiting, in the absence of another diagnosis.

Laboratory

TestNotes
PCR (nasopharyngeal swab)Most sensitive; preferred test; rapid turnaround. Best in catarrhal or early paroxysmal stage
CultureGold standard but fastidious; requires special media (Bordet-Gengou or Regan-Lowe); most positive in catarrhal/early paroxysmal stages; negative after week 4 or after antibiotics
Serology (anti-PT IgG)Useful in later disease; single high titer or 2-fold rise diagnostic
WBC/lymphocyte countMarked lymphocytosis (often 20,000-100,000/µL) is a key diagnostic clue
Chest X-rayMay show "shaggy right heart border" or be clear; not diagnostic
  • B. pertussis is most easily recovered in the catarrhal or early paroxysmal stage
  • Cultures and PCR may be negative after week 4, in immunized patients, or after antibiotic treatment

Treatment

Antibiotics

  • Antibiotics eradicate the organism and limit transmission but do not alter disease course once the paroxysmal stage is established
  • Treatment is most effective if started in the catarrhal stage
DrugRegimenNotes
Azithromycin500 mg day 1, then 250 mg days 2-5 (or 10 mg/kg/day x5 in infants)First-line; best tolerated; preferred in infants <1 month (avoids pyloric stenosis risk of erythromycin)
Erythromycin500 mg QID x 14 daysAlternative; risk of infantile hypertrophic pyloric stenosis in neonates
Clarithromycin500 mg BID x 7 daysAlternative
Trimethoprim-sulfamethoxazoleFor macrolide-intolerant patients

Supportive Care

  • Infants <3-6 months: hospitalization for monitoring of apnea, oxygenation, and feeding
  • Supplemental oxygen; suctioning of secretions
  • Avoid stimuli that trigger paroxysms

Chemoprophylaxis

Post-exposure prophylaxis with azithromycin (5-day course) is recommended for:
  • Close contacts within 3 weeks of exposure
  • High-risk individuals (infants, immunocompromised, those with underlying pulmonary disease)
  • Unimmunized or incompletely immunized individuals
  • Healthcare workers with close contact with susceptible patients
Most effective when started before symptom onset; much less effective if started >14 days after symptom onset in the index case.

Vaccination

Childhood Schedule (U.S.)

  • DTaP: 3-dose primary series at 2, 4, 6 months + reinforcing dose at 15-18 months + booster at 4-6 years
  • Tdap: Single booster at 11-12 years

Adults and Special Groups

  • All unvaccinated adults: single Tdap dose
  • Pregnant women: Tdap at 27-36 weeks of every pregnancy (preferably earlier in this window) - 90-93% effective at preventing pertussis in infants <2 months old; provides passive IgG to fetus
  • Healthcare workers: Tdap recommended
  • "Cocooning" (vaccinating household contacts) is less effective with acellular vaccines because recipients can still be colonized and transmit

Vaccine Composition

VaccineComponentsNotes
DTaPPT toxoid, FHA, pertactin (± fimbriae)Childhood; 5 doses
Tdap (Boostrix)PT, FHA, PRNAdults/adolescents ≥10 yr
Tdap (Adacel)PT, FHA, PRN, two fimbriaeAdults 10-64 yr
Whole-cell DTPKilled whole bacteriaStill used in developing regions; more reactogenic but longer-lasting and blocks transmission

Emerging Issue: Pertactin-deficient strains

A recent systematic review (Heininger et al., 2024, PMID 39686838) found that pertactin-deficient B. pertussis strains are spreading globally - a likely evolutionary adaptation to acellular vaccines that include pertactin as an antigen. This may be contributing to vaccine failure and resurgent outbreaks.

Next-Generation Vaccines

  • Live-attenuated nasal vaccine (to optimize mucosal TH1/TH17 immunity)
  • Polysaccharide-protein conjugate vaccines
  • Goal: sterilizing mucosal immunity that blocks person-to-person transmission

Prognosis

  • Most patients clear infection eventually, even without treatment
  • 80% of adults have illness lasting ≥3 weeks
  • Severity and mortality concentrated in infants <3 months
  • Pertussis does not confer lifelong immunity; reinfection is common

Risk in Chronic Lung Disease

A 2026 meta-analysis (Liu et al., Respir Med 2026, PMID 42309234) confirmed that asthma and COPD significantly increase pertussis risk - reinforcing the importance of Tdap vaccination in these populations.

Sources: Harrison's Principles of Internal Medicine 22E (2025) | Goldman-Cecil Medicine | Rosen's Emergency Medicine | Goldman-Cecil Medicine (Immunization chapter)

Make a presentation on acellular vs whole-cell pertussis vaccines

Reading File
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/pertussis-vaccines && ls /home/daytona/workspac…

Writing File

~/pertussis-vaccines/build.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Acellular vs Whole-Cell Pertussis Vaccines";
pres.author = "Orris";

// ─── Color Palette ───────────────────────────────────────────────────────────
// Deep navy dominant, teal accent, warm amber highlight, off-white text
const C = {
  navy:      "0D1B3E",  // dominant bg
  navyMid:   "152550",  // card bg
  teal:      "1A8C8C",  // whole-cell accent
  amber:     "E8A020",  // acellular accent
  green:     "2EAF7D",  // positive
  red:       "D64045",  // negative / warning
  white:     "F5F7FA",
  offWhite:  "C8D4E8",
  lightGray: "8A9BB8",
};

// ─── Helper: slide background ────────────────────────────────────────────────
function darkBg(slide) {
  slide.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 5.625,
    fill: { color: C.navy }, line: { color: C.navy }
  });
}

// ─── Helper: section label pill ──────────────────────────────────────────────
function pill(slide, text, color, x, y, w = 2.5) {
  slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
    x, y, w, h: 0.3, fill: { color }, line: { color }, rectRadius: 0.15
  });
  slide.addText(text, {
    x, y, w, h: 0.3, fontSize: 9, bold: true, color: C.navy,
    align: "center", valign: "middle", margin: 0
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 1 — TITLE
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);

  // Top accent bar
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  // Germ icon hint — decorative circles
  for (const [cx, cy, r, op] of [
    [8.6, 1.2, 1.4, 8], [9.1, 2.4, 0.9, 6], [8.0, 2.8, 0.6, 5]
  ]) {
    s.addShape(pres.shapes.OVAL, {
      x: cx - r/2, y: cy - r/2, w: r, h: r,
      fill: { color: C.teal, transparency: 100 - op },
      line: { color: C.teal, transparency: 100 - op - 20, width: 1.5 }
    });
  }

  // Subtitle tag
  pill(s, "IMMUNOLOGY  |  VACCINOLOGY", C.teal, 0.55, 1.4, 3.2);

  s.addText("Acellular vs\nWhole-Cell\nPertussis Vaccines", {
    x: 0.55, y: 1.75, w: 7.5, h: 2.6,
    fontSize: 40, bold: true, color: C.white,
    align: "left", valign: "top",
    charSpacing: 0.5
  });

  s.addText("A comparative analysis of composition, immunogenicity,\nefficacy, safety, and public health impact", {
    x: 0.55, y: 4.25, w: 7.8, h: 0.85,
    fontSize: 14, color: C.offWhite, align: "left"
  });

  // Bottom bar
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 5.45, w: 10, h: 0.175, fill: { color: C.amber }, line: { color: C.amber }
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 2 — BACKGROUND: THE PERTUSSIS PROBLEM
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);

  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  s.addText("Background: The Pertussis Problem", {
    x: 0.5, y: 0.2, w: 9, h: 0.6, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // 4 stat cards
  const stats = [
    ["16M", "estimated cases\nper year globally"],
    ["200K+", "deaths/year in\npre-vaccine era"],
    ["84%", "of US deaths in\ninfants <2 months"],
    ["~1M", "adult cases/year\nin the US alone"],
  ];
  stats.forEach(([num, label], i) => {
    const x = 0.3 + i * 2.38;
    s.addShape(pres.shapes.RECTANGLE, {
      x, y: 0.95, w: 2.15, h: 1.55,
      fill: { color: C.navyMid }, line: { color: C.teal, width: 1.5 }
    });
    s.addText(num, {
      x, y: 1.05, w: 2.15, h: 0.65,
      fontSize: 28, bold: true, color: C.amber, align: "center", margin: 0
    });
    s.addText(label, {
      x, y: 1.72, w: 2.15, h: 0.72,
      fontSize: 11, color: C.offWhite, align: "center", margin: 4
    });
  });

  // Key points
  const pts = [
    "Bordetella pertussis — gram-negative coccobacillus; transmission via aerosol droplets",
    "Whole-cell (wP) vaccines introduced in 1940s → dramatic case reduction, but reactogenicity concerns arose",
    "Acellular (aP) vaccines replaced wP in developed nations in the 1990s — fewer side effects, but waning immunity",
    "Resurgence since 2000s linked to: waning aP immunity, pertactin-deficient strains, cocooning failure",
    "WHO (2019): countries using wP should continue; aP countries need additional boosters + maternal vaccination",
  ];
  s.addText(pts.map((t, i) => ({
    text: t,
    options: { bullet: { type: "bullet", indent: 15 }, breakLine: i < pts.length - 1, color: i === 4 ? C.amber : C.offWhite, fontSize: 12.5 }
  })), { x: 0.4, y: 2.65, w: 9.2, h: 2.7, valign: "top" });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 3 — COMPOSITION
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  s.addText("Vaccine Composition", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // Left panel — wP
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 0.9, w: 4.3, h: 4.55,
    fill: { color: C.navyMid }, line: { color: C.teal, width: 2 }
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 0.9, w: 4.3, h: 0.42,
    fill: { color: C.teal }, line: { color: C.teal }
  });
  s.addText("Whole-Cell Pertussis (wP)", {
    x: 0.3, y: 0.9, w: 4.3, h: 0.42,
    fontSize: 13, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const wpPts = [
    "Killed, intact B. pertussis bacteria",
    "Contains ALL antigens: ~3,000+ proteins",
    "Preserves native LPS (lipopolysaccharide)",
    "Elicits TH1 + TH17 immune response",
    "Induces mucosal IgA → blocks colonization",
    "Reduces nasopharyngeal bacterial load",
    "Used in: DTP, DTwP combinations",
    "Still standard in LMICs (WHO recommendation)",
  ];
  s.addText(wpPts.map((t, i) => ({
    text: t,
    options: { bullet: { type: "bullet", indent: 12 }, breakLine: i < wpPts.length - 1, fontSize: 12, color: C.offWhite }
  })), { x: 0.4, y: 1.4, w: 4.1, h: 3.9, valign: "top" });

  // Right panel — aP
  s.addShape(pres.shapes.RECTANGLE, {
    x: 5.4, y: 0.9, w: 4.3, h: 4.55,
    fill: { color: C.navyMid }, line: { color: C.amber, width: 2 }
  });
  s.addShape(pres.shapes.RECTANGLE, {
    x: 5.4, y: 0.9, w: 4.3, h: 0.42,
    fill: { color: C.amber }, line: { color: C.amber }
  });
  s.addText("Acellular Pertussis (aP)", {
    x: 5.4, y: 0.9, w: 4.3, h: 0.42,
    fontSize: 13, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const apAntigens = [
    ["Pertussis Toxoid (PT)", "all formulations"],
    ["Filamentous Hemagglutinin (FHA)", "all formulations"],
    ["Pertactin (PRN)", "most formulations"],
    ["Fimbriae types 2 & 3", "some (e.g. Adacel)"],
  ];
  s.addText("Purified subunit antigens only:", {
    x: 5.5, y: 1.42, w: 4.1, h: 0.3,
    fontSize: 12, bold: true, color: C.amber, align: "left", margin: 4
  });
  apAntigens.forEach(([name, note], i) => {
    const y = 1.78 + i * 0.52;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 5.5, y, w: 4.05, h: 0.44,
      fill: { color: "1C2E52" }, line: { color: C.amber, transparency: 60 }
    });
    s.addText(name, { x: 5.55, y: y + 0.03, w: 2.8, h: 0.22, fontSize: 11.5, bold: true, color: C.white, margin: 2 });
    s.addText(note, { x: 5.55, y: y + 0.23, w: 3.9, h: 0.18, fontSize: 9.5, color: C.lightGray, margin: 2, italic: true });
  });

  s.addText([
    { text: "Elicits TH2-biased response  ", options: { bullet: { type: "bullet", indent: 10 }, breakLine: true, fontSize: 12, color: C.offWhite } },
    { text: "No mucosal IgA induction → colonization possible", options: { bullet: { type: "bullet", indent: 10 }, breakLine: true, fontSize: 12, color: C.offWhite } },
    { text: "Used in: DTaP (children), Tdap (adolescents/adults)", options: { bullet: { type: "bullet", indent: 10 }, fontSize: 12, color: C.offWhite } },
  ], { x: 5.5, y: 4.0, w: 4.0, h: 1.3, valign: "top" });

  // VS badge
  s.addShape(pres.shapes.OVAL, {
    x: 4.62, y: 2.7, w: 0.76, h: 0.76,
    fill: { color: C.amber }, line: { color: C.amber }
  });
  s.addText("VS", {
    x: 4.62, y: 2.7, w: 0.76, h: 0.76,
    fontSize: 13, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 4 — IMMUNOGENICITY & MECHANISM
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.amber }, line: { color: C.amber }
  });

  s.addText("Immunogenicity & Immune Mechanisms", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // Two column comparison table
  const headers = ["Parameter", "Whole-Cell (wP)", "Acellular (aP)"];
  const rows = [
    ["T-helper response", "TH1 + TH17 (balanced)", "TH2-biased"],
    ["Mucosal immunity (IgA)", "Yes — blocks colonization", "No — colonization persists"],
    ["Serum antibodies", "Broad (all antigens)", "Narrow (2–5 antigens)"],
    ["Duration of protection", "~10–12 years", "2–4 years (rapid waning)"],
    ["Memory B cells", "Broad repertoire", "Limited repertoire"],
    ["Blocks transmission", "Yes", "No"],
    ["Matches natural infection", "Closer match", "Divergent response"],
  ];

  const colW = [2.8, 3.1, 3.1];
  const colX = [0.3, 3.15, 6.3];
  const rowH = 0.52;
  const tableY = 0.9;

  // Header row
  headers.forEach((h, ci) => {
    s.addShape(pres.shapes.RECTANGLE, {
      x: colX[ci], y: tableY, w: colW[ci] - 0.04, h: 0.42,
      fill: { color: ci === 1 ? C.teal : ci === 2 ? C.amber : "1C2D55" },
      line: { color: C.navy }
    });
    s.addText(h, {
      x: colX[ci], y: tableY, w: colW[ci] - 0.04, h: 0.42,
      fontSize: 12, bold: true,
      color: ci === 0 ? C.offWhite : C.navy,
      align: "center", valign: "middle", margin: 0
    });
  });

  // Data rows
  rows.forEach((row, ri) => {
    const y = tableY + 0.42 + ri * rowH;
    const bgRow = ri % 2 === 0 ? "131F3C" : C.navyMid;
    row.forEach((cell, ci) => {
      s.addShape(pres.shapes.RECTANGLE, {
        x: colX[ci], y, w: colW[ci] - 0.04, h: rowH - 0.03,
        fill: { color: bgRow }, line: { color: "1E2D50" }
      });
      // Color code good/bad for wP vs aP
      let textColor = C.offWhite;
      if (ci === 1 && ["TH1 + TH17 (balanced)", "Yes — blocks colonization", "~10–12 years", "Yes", "Closer match"].includes(cell))
        textColor = C.green;
      if (ci === 2 && ["TH2-biased", "No — colonization persists", "2–4 years (rapid waning)", "No", "Divergent response"].includes(cell))
        textColor = C.red;

      s.addText(cell, {
        x: colX[ci] + 0.08, y, w: colW[ci] - 0.2, h: rowH - 0.03,
        fontSize: 11.5, color: textColor, valign: "middle", margin: 0,
        align: ci === 0 ? "left" : "center", bold: ci === 0
      });
    });
  });

  s.addText("Green = immunological advantage  |  Red = immunological limitation", {
    x: 0.3, y: 5.28, w: 9.4, h: 0.25,
    fontSize: 9.5, italic: true, color: C.lightGray, align: "left"
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 5 — EFFICACY & EFFECTIVENESS
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  s.addText("Efficacy & Real-World Effectiveness", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // Efficacy bars — wP
  s.addText("WHOLE-CELL (wP)", {
    x: 0.4, y: 0.88, w: 4.2, h: 0.32, fontSize: 11, bold: true, color: C.teal, align: "left", margin: 0
  });
  const wpBars = [
    ["Initial efficacy (3 doses)", 0.94],
    ["After 10 years", 0.55],
    ["Nasopharyngeal clearance", 0.80],
    ["Transmission blocking", 0.75],
  ];
  wpBars.forEach(([label, pct], i) => {
    const y = 1.25 + i * 0.72;
    s.addText(label, { x: 0.4, y, w: 4.1, h: 0.22, fontSize: 11, color: C.offWhite, margin: 0 });
    const barW = 4.0 * pct;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.4, y: y + 0.24, w: 4.0, h: 0.28,
      fill: { color: "1C2D50" }, line: { color: "1C2D50" }
    });
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.4, y: y + 0.24, w: barW, h: 0.28,
      fill: { color: C.teal }, line: { color: C.teal }
    });
    s.addText(`${Math.round(pct * 100)}%`, {
      x: 0.4 + barW + 0.1, y: y + 0.24, w: 0.55, h: 0.28,
      fontSize: 11, bold: true, color: C.teal, valign: "middle", margin: 0
    });
  });

  // Efficacy bars — aP
  s.addText("ACELLULAR (aP)", {
    x: 5.4, y: 0.88, w: 4.2, h: 0.32, fontSize: 11, bold: true, color: C.amber, align: "left", margin: 0
  });
  const apBars = [
    ["Initial efficacy (3 doses)", 0.85],
    ["After 4 years", 0.40],
    ["Nasopharyngeal clearance", 0.10],
    ["Transmission blocking", 0.05],
  ];
  apBars.forEach(([label, pct], i) => {
    const y = 1.25 + i * 0.72;
    s.addText(label, { x: 5.4, y, w: 4.1, h: 0.22, fontSize: 11, color: C.offWhite, margin: 0 });
    const barW = 4.0 * pct;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 5.4, y: y + 0.24, w: 4.0, h: 0.28,
      fill: { color: "1C2D50" }, line: { color: "1C2D50" }
    });
    s.addShape(pres.shapes.RECTANGLE, {
      x: 5.4, y: y + 0.24, w: barW, h: 0.28,
      fill: { color: C.amber }, line: { color: C.amber }
    });
    s.addText(`${Math.round(pct * 100)}%`, {
      x: 5.4 + barW + 0.1, y: y + 0.24, w: 0.55, h: 0.28,
      fontSize: 11, bold: true, color: C.amber, valign: "middle", margin: 0
    });
  });

  // Divider
  s.addShape(pres.shapes.RECTANGLE, {
    x: 4.9, y: 0.88, w: 0.04, h: 4.2,
    fill: { color: C.lightGray, transparency: 60 }, line: { color: C.lightGray, transparency: 60 }
  });

  s.addText("Note: aP vaccines prevent clinical disease but do NOT reduce nasopharyngeal colonization, enabling silent transmission (\"cocooning\" failure).", {
    x: 0.4, y: 5.22, w: 9.2, h: 0.3,
    fontSize: 10, italic: true, color: C.amber, align: "left"
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 6 — SAFETY PROFILE
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.amber }, line: { color: C.amber }
  });

  s.addText("Safety Profile", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // wP safety
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 0.88, w: 4.3, h: 0.38,
    fill: { color: C.teal }, line: { color: C.teal }
  });
  s.addText("Whole-Cell (wP) — Adverse Events", {
    x: 0.3, y: 0.88, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const wpSafety = [
    ["Local reactions", "Very common (>50%): redness, swelling, pain at injection site", C.red],
    ["Fever", "Common; often high-grade (>40°C in some cases)", C.red],
    ["Prolonged crying", "Up to 3% of doses; self-limiting", C.red],
    ["Febrile seizures", "Rare but reported (1–9 per 100,000 doses)", C.red],
    ["Hypotonic-hyporesponsive episode (HHE)", "Rare; generally self-resolving", C.red],
    ["Encephalopathy (claimed)", "Alleged but NOT causally proven (IOM 1994 review)", "#8A9BB8"],
  ];
  wpSafety.forEach(([ae, desc], i) => {
    const y = 1.34 + i * 0.6;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 4.3, h: 0.55,
      fill: { color: i % 2 === 0 ? "131F3C" : C.navyMid }, line: { color: "1E2D50" }
    });
    s.addText(ae, { x: 0.38, y: y + 0.02, w: 4.1, h: 0.22, fontSize: 11, bold: true, color: C.red, margin: 0 });
    s.addText(desc, { x: 0.38, y: y + 0.23, w: 4.1, h: 0.22, fontSize: 9.5, color: C.offWhite, margin: 0 });
  });

  // aP safety
  s.addShape(pres.shapes.RECTANGLE, {
    x: 5.4, y: 0.88, w: 4.3, h: 0.38,
    fill: { color: C.amber }, line: { color: C.amber }
  });
  s.addText("Acellular (aP) — Adverse Events", {
    x: 5.4, y: 0.88, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const apSafety = [
    ["Local reactions", "Less common, milder than wP", C.green],
    ["Fever", "Less frequent; usually low-grade", C.green],
    ["Systemic reactions", "Significantly reduced vs wP", C.green],
    ["Large local reactions (LLR)", "Increased risk after multiple doses (4th–5th)", C.red],
    ["No neurological concerns", "No causal link to encephalopathy", C.green],
    ["Injection site nodule", "Rare; especially with aluminium adjuvant", "#8A9BB8"],
  ];
  apSafety.forEach(([ae, desc, color], i) => {
    const y = 1.34 + i * 0.6;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 5.4, y, w: 4.3, h: 0.55,
      fill: { color: i % 2 === 0 ? "131F3C" : C.navyMid }, line: { color: "1E2D50" }
    });
    s.addText(ae, { x: 5.48, y: y + 0.02, w: 4.1, h: 0.22, fontSize: 11, bold: true, color, margin: 0 });
    s.addText(desc, { x: 5.48, y: y + 0.23, w: 4.1, h: 0.22, fontSize: 9.5, color: C.offWhite, margin: 0 });
  });

  s.addText("The switch to aP vaccines was largely driven by safety concerns about wP — but subsequent analysis showed most serious events were not causally linked.", {
    x: 0.4, y: 5.22, w: 9.2, h: 0.3,
    fontSize: 10, italic: true, color: C.lightGray
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 7 — WANING IMMUNITY & RESURGENCE
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.red }, line: { color: C.red }
  });

  s.addText("Waning Immunity & Pertussis Resurgence", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // Timeline visual
  const timelineY = 1.4;
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.5, y: timelineY + 0.12, w: 9.0, h: 0.06,
    fill: { color: C.lightGray }, line: { color: C.lightGray }
  });

  const events = [
    [0.5, "1940s", "wP introduced\nCases fall\n>99%"],
    [2.2, "1990s", "aP replaces wP\n(US, EU, Japan)\nFewer side effects"],
    [4.2, "2000s", "Waning immunity\nCases rebound\n~20,000/yr US"],
    [6.1, "2010–12", "Major outbreaks\n48,000 US cases\nin 2012"],
    [8.0, "2024–26", "Pertactin-\ndeficient strains\nSpreading globally"],
  ];

  events.forEach(([x, year, text], i) => {
    const isTop = i % 2 === 0;
    const dotY = timelineY + 0.09;
    s.addShape(pres.shapes.OVAL, {
      x: x - 0.1, y: dotY, w: 0.22, h: 0.22,
      fill: { color: i < 2 ? C.teal : i < 4 ? C.amber : C.red },
      line: { color: C.navy }
    });
    s.addText(year, {
      x: x - 0.3, y: isTop ? dotY - 0.3 : dotY + 0.24,
      w: 0.9, h: 0.25, fontSize: 9, bold: true,
      color: i < 2 ? C.teal : i < 4 ? C.amber : C.red,
      align: "center", margin: 0
    });
    s.addText(text, {
      x: x - 0.45, y: isTop ? timelineY - 1.15 : timelineY + 0.55,
      w: 1.2, h: 0.85, fontSize: 9.5, color: C.offWhite,
      align: "center", margin: 0
    });
  });

  // Key reasons box
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 2.7, w: 9.4, h: 0.35,
    fill: { color: "1C2D55" }, line: { color: C.red, width: 1.5 }
  });
  s.addText("Why did pertussis resurge after aP vaccine introduction?", {
    x: 0.4, y: 2.7, w: 9.2, h: 0.35,
    fontSize: 13, bold: true, color: C.amber, valign: "middle", margin: 4
  });

  const reasons = [
    ["1. Rapid waning immunity", "aP protection wanes within 2–4 years after 5th/6th dose vs 10–12 years for wP"],
    ["2. TH2 vs TH1/TH17 bias", "aP does not elicit TH17 responses needed for mucosal immunity; natural infection and wP do"],
    ["3. Colonization not blocked", "aP recipients can carry and transmit B. pertussis silently — 'cocooning' fails"],
    ["4. Pertactin-deficient strains", "Vaccine-driven evolution: strains losing PRN (a key aP antigen) have spread globally (2024 systematic review)"],
    ["5. Underimmunization in adults", "Adult Tdap coverage was only 30.1% in US (2019) — large susceptible reservoir"],
  ];
  reasons.forEach(([title, desc], i) => {
    const y = 3.14 + i * 0.46;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 9.4, h: 0.43,
      fill: { color: i % 2 === 0 ? "131F3C" : C.navyMid }, line: { color: "1E2D50" }
    });
    s.addText(title, { x: 0.42, y: y + 0.03, w: 2.3, h: 0.38, fontSize: 10.5, bold: true, color: C.red, valign: "middle", margin: 0 });
    s.addText(desc, { x: 2.78, y: y + 0.03, w: 6.8, h: 0.38, fontSize: 10.5, color: C.offWhite, valign: "middle", margin: 0 });
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 8 — VACCINATION SCHEDULES & GLOBAL USE
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  s.addText("Vaccination Schedules & Global Use", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  // Left: Developed nations (aP)
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0.3, y: 0.88, w: 4.3, h: 0.38,
    fill: { color: C.amber }, line: { color: C.amber }
  });
  s.addText("High-Income Countries (aP-based)", {
    x: 0.3, y: 0.88, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const hiRows = [
    ["Vaccine", "DTaP"],
    ["Primary series", "2, 4, 6 months (3 doses)"],
    ["Booster 1", "15–18 months"],
    ["Booster 2", "4–6 years"],
    ["Adolescent", "Tdap at 11–12 years"],
    ["Adults", "Single Tdap (unvaccinated)"],
    ["Pregnancy", "Tdap at 27–36 wks (every pregnancy)"],
    ["HCW", "Tdap recommended"],
    ["Coverage (US)", "89.9% adolescents, 30.1% adults (2019)"],
  ];
  hiRows.forEach(([label, val], i) => {
    const y = 1.35 + i * 0.43;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 4.3, h: 0.40,
      fill: { color: i % 2 === 0 ? "131F3C" : C.navyMid }, line: { color: "1E2D50" }
    });
    s.addText(label, { x: 0.38, y, w: 1.6, h: 0.40, fontSize: 10.5, bold: true, color: C.amber, valign: "middle", margin: 4 });
    s.addText(val, { x: 2.0, y, w: 2.5, h: 0.40, fontSize: 10.5, color: C.offWhite, valign: "middle", margin: 4 });
  });

  // Right: LMICs (wP)
  s.addShape(pres.shapes.RECTANGLE, {
    x: 5.4, y: 0.88, w: 4.3, h: 0.38,
    fill: { color: C.teal }, line: { color: C.teal }
  });
  s.addText("Low/Middle-Income Countries (wP-based)", {
    x: 5.4, y: 0.88, w: 4.3, h: 0.38, fontSize: 12, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
  });

  const lmicRows = [
    ["Vaccine", "DTwP or Pentavalent"],
    ["Primary series", "6, 10, 14 weeks (3 doses)"],
    ["Combination", "Often with HBV, Hib, IPV"],
    ["Global coverage", "~84% DTP3 globally (WHO 2022)"],
    ["Cost", "Significantly lower than aP"],
    ["WHO SAGE", "Countries using wP should continue"],
    ["Advantage", "Blocks transmission + colonization"],
    ["Limitation", "More reactogenic; cold-chain needed"],
    ["", ""],
  ];
  lmicRows.forEach(([label, val], i) => {
    const y = 1.35 + i * 0.43;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 5.4, y, w: 4.3, h: 0.40,
      fill: { color: i % 2 === 0 ? "131F3C" : C.navyMid }, line: { color: "1E2D50" }
    });
    if (label) {
      s.addText(label, { x: 5.48, y, w: 1.6, h: 0.40, fontSize: 10.5, bold: true, color: C.teal, valign: "middle", margin: 4 });
      s.addText(val, { x: 7.1, y, w: 2.5, h: 0.40, fontSize: 10.5, color: C.offWhite, valign: "middle", margin: 4 });
    }
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 9 — NEXT-GENERATION VACCINES
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.green }, line: { color: C.green }
  });

  s.addText("Next-Generation Pertussis Vaccines", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  s.addText("Current acellular vaccines prevent disease but fail to block transmission. The next generation must achieve sterilizing mucosal immunity.", {
    x: 0.4, y: 0.85, w: 9.2, h: 0.45,
    fontSize: 12.5, color: C.offWhite, italic: true
  });

  const candidates = [
    {
      title: "Live Attenuated Nasal Vaccine (BPZE1)",
      stage: "Phase II trials",
      stageColor: C.amber,
      pts: [
        "Delivered intranasally → optimizes mucosal TH1/TH17 response",
        "Mimics natural infection immunity profile",
        "Reduces nasopharyngeal colonization in animal models",
        "Potentially single dose; no cold chain dependency",
      ]
    },
    {
      title: "Outer Membrane Vesicle (OMV) Vaccines",
      stage: "Preclinical / Phase I",
      stageColor: C.lightGray,
      pts: [
        "Contains native LPS and surface proteins similar to whole-cell",
        "Retains TH1/TH17 stimulating capacity",
        "Better safety profile than whole-cell (no live bacteria)",
        "Could bridge wP immunogenicity with aP safety",
      ]
    },
    {
      title: "Polysaccharide-Protein Conjugate Vaccine",
      stage: "Early development",
      stageColor: C.lightGray,
      pts: [
        "Links B. pertussis capsule polysaccharide to pertussis toxin",
        "Novel antigen target not included in current vaccines",
        "May address pertactin-deficient strain evasion",
      ]
    },
  ];

  candidates.forEach((c, i) => {
    const y = 1.4 + i * 1.38;
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 9.4, h: 1.28,
      fill: { color: C.navyMid }, line: { color: C.green, width: 1.5 }
    });
    s.addShape(pres.shapes.RECTANGLE, {
      x: 0.3, y, w: 0.22, h: 1.28,
      fill: { color: C.green }, line: { color: C.green }
    });
    // Stage pill
    s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
      x: 8.3, y: y + 0.08, w: 1.3, h: 0.26,
      fill: { color: c.stageColor }, line: { color: c.stageColor }, rectRadius: 0.13
    });
    s.addText(c.stage, {
      x: 8.3, y: y + 0.08, w: 1.3, h: 0.26,
      fontSize: 8.5, bold: true, color: C.navy, align: "center", valign: "middle", margin: 0
    });
    s.addText(c.title, {
      x: 0.62, y: y + 0.05, w: 7.5, h: 0.3,
      fontSize: 13, bold: true, color: C.green, margin: 0
    });
    s.addText(c.pts.map((p, pi) => ({
      text: p,
      options: { bullet: { type: "bullet", indent: 10 }, breakLine: pi < c.pts.length - 1, fontSize: 11, color: C.offWhite }
    })), { x: 0.62, y: y + 0.38, w: 9.0, h: 0.85, valign: "top" });
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 10 — HEAD-TO-HEAD SUMMARY
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal }, line: { color: C.teal }
  });

  s.addText("Head-to-Head Summary", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  const cols = ["Characteristic", "Whole-Cell (wP)", "Acellular (aP)"];
  const colX2 = [0.25, 3.42, 6.72];
  const colW2 = [3.1, 3.22, 3.0];

  // Header
  cols.forEach((h, ci) => {
    s.addShape(pres.shapes.RECTANGLE, {
      x: colX2[ci], y: 0.88, w: colW2[ci] - 0.04, h: 0.38,
      fill: { color: ci === 1 ? C.teal : ci === 2 ? C.amber : "1C2D55" },
      line: { color: C.navy }
    });
    s.addText(h, {
      x: colX2[ci], y: 0.88, w: colW2[ci] - 0.04, h: 0.38,
      fontSize: 12, bold: true, color: ci === 0 ? C.offWhite : C.navy,
      align: "center", valign: "middle", margin: 0
    });
  });

  const summaryRows = [
    ["Composition", "Killed whole bacteria", "Purified subunit proteins"],
    ["Antigens", "Thousands (all native)", "2–5 selected antigens"],
    ["Immune response", "TH1 + TH17", "TH2-biased"],
    ["Mucosal IgA", "Yes", "No"],
    ["Duration of protection", "~10–12 years", "2–4 years"],
    ["Blocks transmission", "Yes", "No"],
    ["Reactogenicity", "High", "Low"],
    ["Serious adverse events", "Rare but reported", "Very rare"],
    ["Cost", "Low (LMICs)", "Higher"],
    ["WHO recommendation", "Continue in wP countries", "Add boosters + maternal Tdap"],
    ["Resurgence risk", "Lower", "Higher (proven)"],
  ];

  summaryRows.forEach((row, ri) => {
    const y = 1.33 + ri * 0.38;
    const bg = ri % 2 === 0 ? "131F3C" : C.navyMid;
    row.forEach((cell, ci) => {
      s.addShape(pres.shapes.RECTANGLE, {
        x: colX2[ci], y, w: colW2[ci] - 0.04, h: 0.36,
        fill: { color: bg }, line: { color: "1E2D50" }
      });
      let color = C.offWhite;
      if (ci === 1 && ["Yes", "~10–12 years", "TH1 + TH17", "Lower"].includes(cell)) color = C.green;
      if (ci === 2 && ["No", "2–4 years", "TH2-biased", "Higher (proven)"].includes(cell)) color = C.red;
      if (ci === 1 && ["High"].includes(cell)) color = C.red;
      if (ci === 2 && ["Low", "Very rare"].includes(cell)) color = C.green;
      s.addText(cell, {
        x: colX2[ci] + 0.08, y, w: colW2[ci] - 0.2, h: 0.36,
        fontSize: 10.5, color, valign: "middle", margin: 0,
        align: ci === 0 ? "left" : "center", bold: ci === 0
      });
    });
  });
}

// ─────────────────────────────────────────────────────────────────────────────
// SLIDE 11 — CONCLUSION & KEY TAKEAWAYS
// ─────────────────────────────────────────────────────────────────────────────
{
  const s = pres.addSlide();
  darkBg(s);
  s.addShape(pres.shapes.RECTANGLE, {
    x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.amber }, line: { color: C.amber }
  });

  s.addText("Key Takeaways", {
    x: 0.5, y: 0.2, w: 9, h: 0.55, fontSize: 22, bold: true, color: C.white, align: "left", margin: 0
  });

  const takeaways = [
    [C.teal, "wP > aP for population immunity", "Whole-cell vaccines block transmission and provide longer-lasting TH1/TH17 immunity. WHO recommends countries using wP continue to do so."],
    [C.amber, "aP wins on safety & tolerability", "Far fewer local and systemic reactions. Enabled high uptake globally. Reduced parent vaccine hesitancy."],
    [C.red, "Pertussis has resurged with aP", "Waning immunity + no transmission blocking = epidemics every 3–5 years. Pertactin-deficient strains are spreading (2024 systematic review, PMID 39686838)."],
    [C.green, "Maternal Tdap is the best bridge", "Tdap at 27–36 weeks is 90–93% effective at protecting infants <2 months — the highest-risk group. Recommended in every pregnancy."],
    [C.teal, "Next-gen vaccines must block transmission", "Live nasal (BPZE1) and OMV vaccines in trials aim to restore mucosal immunity. Sterilizing immunity is the ultimate goal."],
    [C.lightGray, "Adults & HCWs are a key reservoir", "Adult Tdap coverage only 30% in the US. Improving adult vaccination would reduce infant exposure significantly."],
  ];

  takeaways.forEach(([color, title, body], i) => {
    const x = i < 3 ? 0.3 : 5.2;
    const y = 0.88 + (i % 3) * 1.52;
    s.addShape(pres.shapes.RECTANGLE, {
      x, y, w: 4.6, h: 1.42,
      fill: { color: C.navyMid }, line: { color }
    });
    s.addShape(pres.shapes.RECTANGLE, {
      x, y, w: 4.6, h: 0.06, fill: { color }, line: { color }
    });
    s.addText(title, {
      x: x + 0.15, y: y + 0.1, w: 4.3, h: 0.32,
      fontSize: 12, bold: true, color, margin: 0
    });
    s.addText(body, {
      x: x + 0.15, y: y + 0.45, w: 4.3, h: 0.92,
      fontSize: 10.5, color: C.offWhite, margin: 0
    });
  });
}

// ─── Write file ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/pertussis-vaccines/Pertussis_Vaccines_aP_vs_wP.pptx" })
  .then(() => console.log("DONE"))
  .catch(e => console.error("ERROR:", e));
Running Command

node /home/daytona/workspace/pertussis-vaccines/build.js

Running Command

ls -lh /home/daytona/workspace/pertussis-vaccines/

Your presentation is ready (316 KB, 11 slides):

Pertussis Vaccines aP vs wP

Presentation · PPTX


Here's what's in each slide:
#SlideHighlights
1TitleDeep navy design with teal/amber palette
2Background: The Pertussis Problem4 stat cards (16M cases/year, 200K deaths pre-vaccine, etc.), key epidemiology bullets
3Vaccine CompositionSide-by-side panels — wP (killed whole bacteria, all antigens, TH1/TH17) vs aP (PT, FHA, PRN, fimbriae, TH2-biased)
4Immunogenicity & MechanismColor-coded comparison table (green = advantage, red = limitation) across 7 parameters
5Efficacy & EffectivenessBar chart comparison — initial efficacy, waning, nasopharyngeal clearance, transmission blocking
6Safety ProfileAdverse event breakdown for both vaccines; addresses the wP encephalopathy controversy
7Waning Immunity & ResurgenceTimeline from 1940s to 2024-26, with 5 reasons why pertussis resurged after aP introduction
8Vaccination Schedules & Global UseUS/high-income (DTaP/Tdap) vs LMIC (DTwP/Pentavalent) schedules side by side
9Next-Generation VaccinesBPZE1 live nasal vaccine, OMV vaccines, polysaccharide-conjugate — stages and goals
10Head-to-Head SummaryFull 11-row comparison table
11Key Takeaways6 color-coded message cards with clinical and public health implications
This is a shared conversation. Sign in to Orris to start your own chat.