Tb treatment guidelines
TB tuberculosis treatment guidelines 2025 WHO
"tuberculosis"[MeSH Terms] AND "drug therapy"[MeSH Terms]
PMID: 40693952
| Phase | Duration | Drugs | Frequency |
|---|---|---|---|
| Intensive | 8 weeks | HRZE (INH + RIF + PZA + EMB) | Daily (7 days/week) |
| Continuation | 18 weeks | HR (INH + RIF) | Daily (7 days/week) |
| Option | Intensive Phase | Continuation Phase | Notes |
|---|---|---|---|
| 1 (Preferred) | HRZE daily x 8 wks | HR daily x 18 wks | Best |
| 2 | HRZE daily x 8 wks | HR 3x/week DOT x 18 wks | If less frequent DOT needed |
| 3 | HRZE 3x/week DOT x 8 wks | HR 3x/week DOT x 18 wks | Caution with HIV or cavitary disease |
| 4 | HRZE daily x 2 wks, then 2x/week x 6 wks | HR 2x/week DOT x 18 wks | Avoid in HIV or smear-positive/cavitary disease |
- Katzung's Basic & Clinical Pharmacology, 16th Ed.
- Tintinalli's Emergency Medicine, Comprehensive Study Guide
| Phase | Duration | Drugs |
|---|---|---|
| Intensive | 8 weeks | Rifapentine (RPT) + Moxifloxacin (MOX) + INH + PZA daily |
| Continuation | 9 weeks | RPT + MOX + INH daily |
| Regimen | Duration | Frequency | Notes |
|---|---|---|---|
| INH (isoniazid) | 9 months | Daily (5 mg/kg; max 300 mg) | Preferred in pregnancy (high-risk) |
| INH | 9 months | Twice weekly (DOT) (15 mg/kg; max 900 mg) | Must use DOT |
| INH | 6 months | Daily | Not for HIV+ or children |
| Rifampin (RIF) | 4 months | Daily (10 mg/kg; max 600 mg) | Good alternative, shorter |
| INH + Rifapentine (RPT) | 3 months | Once weekly (DOT or SAT) | Preferred short course |
| INH + RPT (1HP) | 1 month | Daily | HIV+ adults ≥13 yrs only |
- Murray & Nadel's Textbook of Respiratory Medicine, 2-Volume, p. 938
- Tintinalli's Emergency Medicine
- Murray & Nadel's Textbook of Respiratory Medicine
- Katzung's Basic & Clinical Pharmacology, 16th Ed.
| Drug | Key Adverse Effects | Monitoring |
|---|---|---|
| INH | Hepatotoxicity (5-33%), peripheral neuropathy, SLE-like | LFTs in high-risk patients; give pyridoxine (B6) to prevent neuropathy |
| Rifampin | Hepatotoxicity, orange discoloration of body fluids, drug interactions (CYP inducer) | LFTs |
| Pyrazinamide (PZA) | Hepatotoxicity, hyperuricemia, gout | LFTs, uric acid |
| Ethambutol (EMB) | Optic neuritis (dose-related) - visual acuity and color vision changes | Monthly vision testing |
| Bedaquiline | QT prolongation, hepatotoxicity | ECG at baseline, monthly |
| Linezolid | Peripheral neuropathy, myelosuppression, serotonin syndrome | CBC, neurological assessment |
Make a ppt on this
mkdir -p /home/daytona/workspace/tb-treatment-ppt && ls /home/daytona/workspace/tb-treatment-ppt
~/tb-treatment-ppt/tb_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Tuberculosis Treatment Guidelines";
pres.author = "Orris Medical";
// ─── Color Palette ───────────────────────────────────────────
const C = {
darkBg: "0D2137", // Deep navy - title/section slides
midBg: "103354", // Mid navy - content slides
accent: "E8A020", // Amber - headings, accents
accent2: "3AACCC", // Teal - secondary accent
white: "FFFFFF",
lightGray: "D6E4EE",
textDark: "0D2137",
red: "C0392B",
green: "27AE60",
orange: "E67E22",
};
// ─── Helper: slide label strip ───────────────────────────────
function addSlideLabel(slide, text) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 5.25, w: 10, h: 0.375,
fill: { color: C.accent },
line: { type: "none" },
});
slide.addText(text, {
x: 0.3, y: 5.26, w: 9.4, h: 0.35,
fontSize: 9, color: C.darkBg, bold: true, align: "right", valign: "middle", margin: 0,
});
}
function addSectionBadge(slide, text) {
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 0.18, h: 5.625,
fill: { color: C.accent }, line: { type: "none" },
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 1: Title
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
// Top accent bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.08,
fill: { color: C.accent }, line: { type: "none" },
});
// Bottom accent bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 5.545, w: 10, h: 0.08,
fill: { color: C.accent2 }, line: { type: "none" },
});
// Large TB icon area (stylized circle)
s.addShape(pres.ShapeType.ellipse, {
x: 7.2, y: 0.6, w: 2.5, h: 2.5,
fill: { color: "1A3A55" }, line: { color: C.accent, width: 3 },
});
s.addText("🫁", { x: 7.2, y: 0.7, w: 2.5, h: 2.3, fontSize: 54, align: "center", valign: "middle" });
s.addText("TUBERCULOSIS", {
x: 0.5, y: 1.0, w: 6.5, h: 0.7,
fontSize: 38, bold: true, color: C.accent, charSpacing: 5, align: "left", margin: 0,
});
s.addText("TREATMENT GUIDELINES", {
x: 0.5, y: 1.65, w: 6.5, h: 0.6,
fontSize: 22, bold: false, color: C.white, charSpacing: 2, align: "left", margin: 0,
});
// Divider line
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 2.45, w: 6.0, h: 0,
line: { color: C.accent2, width: 1.5 },
});
s.addText("Based on ATS/CDC/ERS/IDSA 2025 Practice Guidelines\nand WHO Recommendations", {
x: 0.5, y: 2.6, w: 6.5, h: 0.8,
fontSize: 12, color: C.lightGray, align: "left", italic: true,
});
// Tags
const tags = ["Drug-Susceptible TB", "LTBI", "MDR/XDR-TB", "HIV Co-infection"];
tags.forEach((t, i) => {
s.addShape(pres.ShapeType.rect, {
x: 0.5 + i * 2.35, y: 4.55, w: 2.1, h: 0.38,
fill: { color: "1E4A6E" }, line: { color: C.accent2, width: 1 }, rectRadius: 0.1,
});
s.addText(t, {
x: 0.5 + i * 2.35, y: 4.55, w: 2.1, h: 0.38,
fontSize: 9, color: C.lightGray, align: "center", valign: "middle", margin: 0,
});
});
}
// ══════════════════════════════════════════════════════════════
// SLIDE 2: Overview / Classification
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: "F4F8FB" };
addSectionBadge(s);
s.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0, w: 9.82, h: 0.75,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText("TB CLASSIFICATION & APPROACH", {
x: 0.4, y: 0, w: 9.4, h: 0.75,
fontSize: 18, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const boxes = [
{ title: "Drug-Susceptible TB", sub: "Susceptible to INH + RIF", icon: "💊", col: C.accent2 },
{ title: "Latent TB (LTBI)", sub: "Infected, not active disease", icon: "🔍", col: C.accent },
{ title: "Drug-Resistant TB", sub: "MDR / pre-XDR / XDR", icon: "⚠️", col: C.red },
{ title: "Special Populations", sub: "HIV, Pregnancy, Pediatric, CNS", icon: "👥", col: C.green },
];
boxes.forEach((b, i) => {
const x = 0.28 + (i % 2) * 4.8;
const y = 0.95 + Math.floor(i / 2) * 2.1;
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.5, h: 1.85,
fill: { color: C.white },
line: { color: b.col, width: 2.5 },
shadow: { type: "outer", color: "AABBCC", blur: 8, offset: 3, angle: 45, opacity: 0.2 },
});
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.5, h: 0.42,
fill: { color: b.col }, line: { type: "none" },
});
s.addText(b.title, {
x: x + 0.1, y, w: 4.3, h: 0.42,
fontSize: 12, bold: true, color: C.white, valign: "middle", margin: 4,
});
s.addText(b.icon, { x: x + 3.8, y: y + 0.45, w: 0.6, h: 0.6, fontSize: 22, align: "center" });
s.addText(b.sub, {
x: x + 0.2, y: y + 0.52, w: 3.7, h: 1.0,
fontSize: 12, color: C.textDark, valign: "middle",
});
});
addSlideLabel(s, "TB Treatment Guidelines");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 3: DS-TB Standard 6-month Regimen
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: "0A1C2E" }, line: { type: "none" },
});
s.addText("DRUG-SUSCEPTIBLE TB | Standard 6-Month Regimen", {
x: 0.3, y: 0, w: 9.4, h: 0.75,
fontSize: 16, bold: true, color: C.accent, valign: "middle", margin: 0,
});
// Phase labels
s.addText("INTENSIVE PHASE", {
x: 1.0, y: 0.95, w: 3.5, h: 0.4,
fontSize: 13, bold: true, color: C.accent2, align: "center", charSpacing: 2,
});
s.addText("CONTINUATION PHASE", {
x: 5.5, y: 0.95, w: 3.8, h: 0.4,
fontSize: 13, bold: true, color: C.accent, align: "center", charSpacing: 2,
});
// Phase boxes
s.addShape(pres.ShapeType.rect, {
x: 0.5, y: 1.4, w: 4.0, h: 2.1,
fill: { color: "1E4A6E" }, line: { color: C.accent2, width: 2 },
});
s.addText("8 Weeks\nINH + RIF + PZA + EMB\n(4 drugs daily)", {
x: 0.5, y: 1.4, w: 4.0, h: 2.1,
fontSize: 15, color: C.white, align: "center", valign: "middle", bold: false,
});
// Arrow
s.addShape(pres.ShapeType.line, {
x: 4.5, y: 2.45, w: 0.9, h: 0,
line: { color: C.white, width: 2 },
});
s.addText("▶", { x: 5.1, y: 2.22, w: 0.4, h: 0.45, fontSize: 16, color: C.white });
s.addShape(pres.ShapeType.rect, {
x: 5.5, y: 1.4, w: 4.0, h: 2.1,
fill: { color: "1E3A1A" }, line: { color: C.accent, width: 2 },
});
s.addText("18 Weeks\nINH + RIF\n(2 drugs daily)", {
x: 5.5, y: 1.4, w: 4.0, h: 2.1,
fontSize: 15, color: C.white, align: "center", valign: "middle",
});
// Duration badges
s.addShape(pres.ShapeType.rect, {
x: 1.5, y: 3.7, w: 2.0, h: 0.45,
fill: { color: C.accent2 }, line: { type: "none" },
});
s.addText("2 MONTHS", { x: 1.5, y: 3.7, w: 2.0, h: 0.45, fontSize: 11, bold: true, color: C.darkBg, align: "center", valign: "middle", margin: 0 });
s.addShape(pres.ShapeType.rect, {
x: 6.3, y: 3.7, w: 2.0, h: 0.45,
fill: { color: C.accent }, line: { type: "none" },
});
s.addText("4 MONTHS", { x: 6.3, y: 3.7, w: 2.0, h: 0.45, fontSize: 11, bold: true, color: C.darkBg, align: "center", valign: "middle", margin: 0 });
// Total
s.addShape(pres.ShapeType.rect, {
x: 2.5, y: 4.3, w: 5.0, h: 0.5,
fill: { color: "1A1A1A" }, line: { color: C.accent, width: 1.5 },
});
s.addText("TOTAL DURATION: 6 MONTHS", {
x: 2.5, y: 4.3, w: 5.0, h: 0.5,
fontSize: 13, bold: true, color: C.accent, align: "center", valign: "middle", margin: 0, charSpacing: 2,
});
addSlideLabel(s, "Drug-Susceptible TB");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 4: DS-TB Regimen Options (table)
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: "F4F8FB" };
addSectionBadge(s);
s.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0, w: 9.82, h: 0.75,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText("DS-TB | Alternative Regimen Options", {
x: 0.4, y: 0, w: 9.4, h: 0.75,
fontSize: 17, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const headers = ["Option", "Intensive Phase", "Continuation Phase", "Notes"];
const colW = [0.6, 3.0, 3.0, 2.8];
const colX = [0.25, 0.85, 3.85, 6.85];
const rows = [
["1★", "HRZE daily × 8 wks", "HR daily × 18 wks", "Preferred regimen"],
["2", "HRZE daily × 8 wks", "HR 3×/wk DOT × 18 wks", "If less frequent DOT needed"],
["3", "HRZE 3×/wk DOT × 8 wks", "HR 3×/wk DOT × 18 wks", "Caution: HIV or cavitary disease"],
["4", "HRZE daily × 2 wks,\nthen 2×/wk × 6 wks", "HR 2×/wk DOT × 18 wks", "Avoid in HIV or smear+/cavitary"],
];
// Header row
const hY = 0.85;
headers.forEach((h, i) => {
s.addShape(pres.ShapeType.rect, {
x: colX[i], y: hY, w: colW[i], h: 0.4,
fill: { color: C.midBg }, line: { type: "none" },
});
s.addText(h, {
x: colX[i], y: hY, w: colW[i], h: 0.4,
fontSize: 10, bold: true, color: C.accent, align: "center", valign: "middle", margin: 2,
});
});
rows.forEach((row, ri) => {
const y = 1.3 + ri * 0.92;
const bg = ri % 2 === 0 ? C.white : "EBF3FA";
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, {
x: colX[ci], y, w: colW[ci], h: 0.85,
fill: { color: ci === 0 ? (ri === 0 ? C.accent2 : C.lightGray) : bg },
line: { color: "C8D8E8", width: 0.5 },
});
s.addText(cell, {
x: colX[ci] + 0.05, y, w: colW[ci] - 0.1, h: 0.85,
fontSize: ci === 0 ? 13 : 9.5,
bold: ci === 0,
color: ci === 0 ? C.darkBg : (row[3].includes("Avoid") && ci === 3 ? C.red : C.textDark),
align: ci === 0 ? "center" : "left",
valign: "middle", margin: 3,
});
});
});
s.addText("H = Isoniazid (INH) R = Rifampicin (RIF) Z = Pyrazinamide (PZA) E = Ethambutol (EMB) ★ = Preferred", {
x: 0.25, y: 5.05, w: 9.5, h: 0.3,
fontSize: 8, color: "667788", italic: true, align: "center",
});
addSlideLabel(s, "Drug-Susceptible TB");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 5: NEW 4-month Regimen
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: "0A1C2E" }, line: { type: "none" },
});
s.addText("NEW 4-MONTH REGIMEN | ATS/CDC/ERS/IDSA 2025", {
x: 0.3, y: 0, w: 9.4, h: 0.75,
fontSize: 16, bold: true, color: C.accent, valign: "middle", margin: 0,
});
// Badge
s.addShape(pres.ShapeType.rect, {
x: 7.2, y: 0.85, w: 2.4, h: 0.5,
fill: { color: C.green }, line: { type: "none" },
});
s.addText("NEW 2025 UPDATE", {
x: 7.2, y: 0.85, w: 2.4, h: 0.5,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", margin: 0,
});
// Regimen flow
s.addShape(pres.ShapeType.rect, {
x: 0.4, y: 0.9, w: 6.5, h: 0.5,
fill: { color: "1A3A55" }, line: { type: "none" },
});
s.addText("Rifapentine (RPT) + Moxifloxacin (MOX) + INH + PZA — ALL ORAL, DAILY", {
x: 0.4, y: 0.9, w: 6.5, h: 0.5,
fontSize: 11, color: C.lightGray, valign: "middle", margin: 5,
});
const phases = [
{ label: "INTENSIVE", dur: "8 Weeks", drugs: "RPT + MOX\n+ INH + PZA", col: C.accent2 },
{ label: "CONTINUATION", dur: "9 Weeks", drugs: "RPT + MOX + INH", col: C.accent },
];
phases.forEach((p, i) => {
const x = 0.5 + i * 4.8;
s.addShape(pres.ShapeType.rect, {
x, y: 1.6, w: 4.3, h: 0.4,
fill: { color: p.col }, line: { type: "none" },
});
s.addText(p.label, { x, y: 1.6, w: 4.3, h: 0.4, fontSize: 11, bold: true, color: C.darkBg, align: "center", valign: "middle", margin: 0 });
s.addShape(pres.ShapeType.rect, {
x, y: 2.0, w: 4.3, h: 1.5,
fill: { color: "1A3A55" }, line: { color: p.col, width: 1.5 },
});
s.addText(`${p.dur}\n${p.drugs}`, {
x, y: 2.0, w: 4.3, h: 1.5,
fontSize: 14, color: C.white, align: "center", valign: "middle",
});
});
// Arrow between phases
s.addText("▶", { x: 4.7, y: 2.55, w: 0.5, h: 0.5, fontSize: 18, color: C.white, align: "center" });
// Key points
const kp = [
"Non-inferior to 6-month regimen for drug-susceptible pulmonary TB",
"For adults & adolescents (age ≥12 yrs, weight ≥40 kg)",
"All-oral, shorter duration — improves adherence",
"TOTAL DURATION: 4 MONTHS (vs. 6 months standard)",
];
kp.forEach((pt, i) => {
const isLast = i === kp.length - 1;
s.addShape(pres.ShapeType.rect, {
x: 0.3, y: 3.7 + i * 0.37, w: 9.4, h: 0.33,
fill: { color: isLast ? C.accent : "1A3A55" }, line: { type: "none" },
});
s.addText((isLast ? "★ " : "✓ ") + pt, {
x: 0.3, y: 3.7 + i * 0.37, w: 9.4, h: 0.33,
fontSize: 10, color: isLast ? C.darkBg : C.lightGray, valign: "middle", margin: 6, bold: isLast,
});
});
addSlideLabel(s, "Drug-Susceptible TB");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 6: Latent TB (LTBI) Treatment
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: "F4F8FB" };
addSectionBadge(s);
s.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0, w: 9.82, h: 0.75,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText("LATENT TB INFECTION (LTBI) | Treatment Regimens", {
x: 0.4, y: 0, w: 9.4, h: 0.75,
fontSize: 17, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const regimens = [
{ name: "3HP ★ PREFERRED", detail: "INH + Rifapentine weekly × 3 months", dur: "3 mo", col: C.accent2, note: "DOT or self-administered" },
{ name: "4R", detail: "Rifampin daily × 4 months", dur: "4 mo", col: C.green, note: "Good alternative; good tolerability" },
{ name: "3HR", detail: "INH + Rifampin daily × 3 months", dur: "3 mo", col: C.accent, note: "Short course option" },
{ name: "6H", detail: "Isoniazid daily × 6 months", dur: "6 mo", col: C.orange, note: "Not for HIV+ or children" },
{ name: "9H", detail: "Isoniazid daily × 9 months", dur: "9 mo", col: "9B59B6", note: "Preferred in pregnancy (high risk)" },
{ name: "1HP", detail: "INH + Rifapentine daily × 1 month", dur: "1 mo", col: C.accent2, note: "HIV+ adults ≥13 yrs only" },
];
regimens.forEach((r, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.28 + col * 3.2;
const y = 0.9 + row * 1.85;
s.addShape(pres.ShapeType.rect, {
x, y, w: 3.0, h: 1.6,
fill: { color: C.white }, line: { color: r.col, width: 2 },
});
s.addShape(pres.ShapeType.rect, {
x, y, w: 3.0, h: 0.38,
fill: { color: r.col }, line: { type: "none" },
});
s.addText(r.name, {
x: x + 0.08, y, w: 2.6, h: 0.38,
fontSize: 10, bold: true, color: C.white, valign: "middle", margin: 2,
});
s.addText(r.dur, {
x: x + 2.5, y, w: 0.5, h: 0.38,
fontSize: 10, bold: true, color: C.white, align: "right", valign: "middle", margin: 2,
});
s.addText(r.detail, {
x: x + 0.1, y: y + 0.42, w: 2.8, h: 0.65,
fontSize: 9.5, color: C.textDark,
});
s.addText(r.note, {
x: x + 0.1, y: y + 1.1, w: 2.8, h: 0.4,
fontSize: 8.5, color: "667788", italic: true,
});
});
s.addText("★ Shorter regimens (3HP, 4R) preferred for improved adherence and completion rates", {
x: 0.25, y: 5.1, w: 9.5, h: 0.25,
fontSize: 8, color: C.accent2, italic: true, align: "center",
});
addSlideLabel(s, "Latent TB Infection (LTBI)");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 7: Drug-Resistant TB
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: "200A0A" }, line: { type: "none" },
});
s.addText("DRUG-RESISTANT TB | Classification & Regimens", {
x: 0.3, y: 0, w: 9.4, h: 0.75,
fontSize: 16, bold: true, color: C.red, valign: "middle", margin: 0,
});
// DR types
const types = [
{ label: "INH Monoresistance", info: "~8% globally\nRIF + EMB + PZA + Fluoroquinolone\n× 6 months", col: C.orange },
{ label: "MDR-TB", info: "Resistant to INH + RIF\nBPaL or BPaLM regimen\nAll-oral × 6 months", col: C.red },
{ label: "XDR-TB / pre-XDR", info: "MDR + fluoroquinolone/injectable\nBPaL regimen (FDA-approved)\nBedaquiline + Pretomanid + Linezolid", col: "8E1A1A" },
];
types.forEach((t, i) => {
const x = 0.3 + i * 3.2;
s.addShape(pres.ShapeType.rect, {
x, y: 0.9, w: 3.0, h: 0.4,
fill: { color: t.col }, line: { type: "none" },
});
s.addText(t.label, {
x, y: 0.9, w: 3.0, h: 0.4,
fontSize: 10, bold: true, color: C.white, align: "center", valign: "middle", margin: 0,
});
s.addShape(pres.ShapeType.rect, {
x, y: 1.3, w: 3.0, h: 1.6,
fill: { color: "1A0A0A" }, line: { color: t.col, width: 1.5 },
});
s.addText(t.info, {
x: x + 0.1, y: 1.3, w: 2.8, h: 1.6,
fontSize: 10, color: C.lightGray, valign: "middle",
});
});
// BPaL box
s.addShape(pres.ShapeType.rect, {
x: 0.3, y: 3.1, w: 9.4, h: 0.38,
fill: { color: C.red }, line: { type: "none" },
});
s.addText("BPaL REGIMEN (FDA-approved 2019) | BPaLM = BPaL + Moxifloxacin (2025 guideline)", {
x: 0.3, y: 3.1, w: 9.4, h: 0.38,
fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", margin: 0,
});
const drugs = [
{ name: "Bedaquiline", info: "Blocks ATP synthase\nQT prolongation — ECG monitoring required" },
{ name: "Pretomanid", info: "Nitroimidazooxazine\nQT prolongation — ECG required; liver enzyme monitoring" },
{ name: "Linezolid", info: "Protein synthesis inhibition\nPeripheral neuropathy (>60% had interruptions), myelosuppression" },
];
drugs.forEach((d, i) => {
const x = 0.3 + i * 3.2;
s.addShape(pres.ShapeType.rect, {
x, y: 3.55, w: 3.0, h: 1.6,
fill: { color: "1A0A0A" }, line: { color: "884444", width: 1 },
});
s.addText(d.name, {
x: x + 0.1, y: 3.6, w: 2.8, h: 0.35,
fontSize: 11, bold: true, color: C.red,
});
s.addText(d.info, {
x: x + 0.1, y: 3.95, w: 2.8, h: 1.1,
fontSize: 9, color: C.lightGray,
});
});
addSlideLabel(s, "Drug-Resistant TB");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 8: Key Drug Adverse Effects
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: "F4F8FB" };
addSectionBadge(s);
s.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0, w: 9.82, h: 0.75,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText("KEY DRUG ADVERSE EFFECTS & MONITORING", {
x: 0.4, y: 0, w: 9.4, h: 0.75,
fontSize: 17, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const drugs = [
{ name: "Isoniazid (INH)", ae: "Hepatotoxicity (5-33%)\nPeripheral neuropathy\nDrug-induced lupus", mon: "LFTs in high-risk\nPyridoxine (B6) to prevent neuropathy", col: C.orange },
{ name: "Rifampicin (RIF)", ae: "Hepatotoxicity\nOrange body fluids\nDrug interactions (CYP inducer)", mon: "LFTs\nReview concomitant medications", col: C.accent },
{ name: "Pyrazinamide (PZA)", ae: "Hepatotoxicity\nHyperuricemia\nGout", mon: "LFTs\nUric acid levels", col: C.green },
{ name: "Ethambutol (EMB)", ae: "Optic neuritis\n(dose-related)\nColor vision loss", mon: "Monthly visual acuity\nand color vision tests", col: C.accent2 },
{ name: "Bedaquiline", ae: "QT prolongation\nHepatotoxicity\nNausea", mon: "Baseline + monthly ECG\nLFTs", col: C.red },
{ name: "Linezolid", ae: "Peripheral neuropathy\nMyelosuppression\nSerotonin syndrome", mon: "CBC regularly\nNeurological assessment", col: "8E44AD" },
];
drugs.forEach((d, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.28 + col * 3.2;
const y = 0.85 + row * 1.95;
s.addShape(pres.ShapeType.rect, {
x, y, w: 3.0, h: 1.75,
fill: { color: C.white }, line: { color: d.col, width: 2 },
});
s.addShape(pres.ShapeType.rect, {
x, y, w: 3.0, h: 0.38,
fill: { color: d.col }, line: { type: "none" },
});
s.addText(d.name, {
x: x + 0.08, y, w: 2.9, h: 0.38,
fontSize: 10, bold: true, color: C.white, valign: "middle", margin: 3,
});
s.addText("⚠ AE:", {
x: x + 0.08, y: y + 0.42, w: 0.5, h: 0.28,
fontSize: 8, bold: true, color: C.red,
});
s.addText(d.ae, {
x: x + 0.08, y: y + 0.42, w: 2.85, h: 0.7,
fontSize: 8.5, color: C.textDark, margin: [0, 0, 0, 30],
});
s.addText("● Monitor:", {
x: x + 0.08, y: y + 1.13, w: 0.9, h: 0.22,
fontSize: 7.5, bold: true, color: "556B8A",
});
s.addText(d.mon, {
x: x + 0.08, y: y + 1.13, w: 2.85, h: 0.55,
fontSize: 8, color: "556B8A", margin: [0, 0, 0, 55], italic: true,
});
});
s.addText("STOP ALL ANTI-TB DRUGS if: AST > 5× ULN OR Bilirubin > 3 mg/dL", {
x: 0.25, y: 5.08, w: 9.5, h: 0.28,
fontSize: 9, bold: true, color: C.red, align: "center",
});
addSlideLabel(s, "Adverse Effects");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 9: Special Populations — HIV
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: "0A1C2E" }, line: { type: "none" },
});
s.addText("SPECIAL POPULATIONS | HIV Co-Infection", {
x: 0.3, y: 0, w: 9.4, h: 0.75,
fontSize: 16, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const pts = [
{ icon: "📊", title: "Epidemiology", body: "HIV is the strongest known risk factor for TB.\nHIV+ patients are 20-30× more likely to develop TB.\nAlways test for HIV in new TB diagnosis." },
{ icon: "💊", title: "Treatment Regimen", body: "Same HRZE 2-month + HR 4-month regimen.\nDrug interactions: Rifampin (CYP inducer) — prefer efavirenz-based ART.\nMay need regimen adjustment based on ART choice." },
{ icon: "⏱", title: "ART Timing", body: "Start ART within 2-8 weeks of TB treatment.\nException: TB meningitis — delay ART to 8 weeks.\nEarlier ART reduces AIDS progression but may increase IRIS." },
{ icon: "⚠️", title: "IRIS (Immune Reconstitution)", body: "Paradoxical worsening after ART initiation.\nMore common in HIV patients.\nUsually self-limiting; NSAIDs/steroids for severe cases." },
];
pts.forEach((pt, i) => {
const x = 0.3 + (i % 2) * 4.8;
const y = 0.9 + Math.floor(i / 2) * 2.15;
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.5, h: 1.95,
fill: { color: "1E4A6E" }, line: { color: C.accent2, width: 1.5 },
});
s.addText(pt.icon + " " + pt.title, {
x: x + 0.15, y: y + 0.1, w: 4.2, h: 0.4,
fontSize: 12, bold: true, color: C.accent2,
});
s.addText(pt.body, {
x: x + 0.15, y: y + 0.52, w: 4.2, h: 1.35,
fontSize: 9.5, color: C.lightGray,
});
});
addSlideLabel(s, "Special Populations");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 10: Core Principles
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: "F4F8FB" };
addSectionBadge(s);
s.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0, w: 9.82, h: 0.75,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText("CORE PRINCIPLES OF TB TREATMENT", {
x: 0.4, y: 0, w: 9.4, h: 0.75,
fontSize: 17, bold: true, color: C.accent, valign: "middle", margin: 0,
});
const principles = [
{ num: "1", title: "Combination Therapy Always", body: "Never give monotherapy. Resistant mutants exist at ~1/10⁵. Two-drug resistance probability: ~1/10¹⁰." },
{ num: "2", title: "Direct Observed Therapy (DOT)", body: "Mandatory for twice/thrice weekly regimens. Critical for adherence and preventing resistance." },
{ num: "3", title: "Drug Susceptibility Testing (DST)", body: "Modify therapy as soon as DST results available. Tailors treatment to resistance profile." },
{ num: "4", title: "Reportable Disease", body: "Notify public health within 24 hours (US and most countries). Enables contact tracing." },
{ num: "5", title: "Negative Pressure Isolation", body: "Required for hospitalized patients with suspected active pulmonary TB. Prevents airborne transmission." },
{ num: "6", title: "Fixed-Dose Combinations", body: "Use FDC tablets when available. Optimizes adherence, prevents inadvertent monotherapy." },
];
principles.forEach((p, i) => {
const x = 0.28 + (i % 2) * 4.85;
const y = 0.85 + Math.floor(i / 2) * 1.48;
s.addShape(pres.ShapeType.rect, {
x, y, w: 4.5, h: 1.3,
fill: { color: C.white }, line: { color: C.lightGray, width: 1 },
shadow: { type: "outer", color: "AABBCC", blur: 5, offset: 2, angle: 45, opacity: 0.15 },
});
// Number circle
s.addShape(pres.ShapeType.ellipse, {
x, y: y + 0.2, w: 0.55, h: 0.55,
fill: { color: C.darkBg }, line: { type: "none" },
});
s.addText(p.num, {
x, y: y + 0.2, w: 0.55, h: 0.55,
fontSize: 13, bold: true, color: C.accent, align: "center", valign: "middle", margin: 0,
});
s.addText(p.title, {
x: x + 0.65, y: y + 0.1, w: 3.75, h: 0.38,
fontSize: 11, bold: true, color: C.darkBg,
});
s.addText(p.body, {
x: x + 0.65, y: y + 0.5, w: 3.75, h: 0.7,
fontSize: 8.5, color: "445566",
});
});
addSlideLabel(s, "Core Principles");
}
// ══════════════════════════════════════════════════════════════
// SLIDE 11: Key Takeaways / Summary
// ══════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.background = { color: C.darkBg };
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.08,
fill: { color: C.accent }, line: { type: "none" },
});
s.addShape(pres.ShapeType.rect, {
x: 0, y: 5.545, w: 10, h: 0.08,
fill: { color: C.accent2 }, line: { type: "none" },
});
s.addText("KEY TAKEAWAYS", {
x: 0.5, y: 0.15, w: 9, h: 0.6,
fontSize: 24, bold: true, color: C.accent, charSpacing: 4, align: "center",
});
const takeaways = [
{ col: C.accent2, text: "Standard DS-TB: HRZE × 2 months → HR × 4 months (6 months total)" },
{ col: C.accent, text: "New 4-month regimen (RPT+MOX+INH+PZA) now recommended for eligible adults (2025)" },
{ col: C.green, text: "LTBI: Prefer short courses — 3HP (3 months weekly INH+RPT) or 4R (4 months rifampin)" },
{ col: C.red, text: "MDR/XDR-TB: All-oral BPaL (Bedaquiline+Pretomanid+Linezolid) × 6 months" },
{ col: C.orange, text: "HIV+TB: Same TB regimen; start ART within 2-8 weeks; watch for IRIS" },
{ col: "9B59B6", text: "ALWAYS use combination therapy. DOT is key. Report within 24 hours." },
];
takeaways.forEach((t, i) => {
s.addShape(pres.ShapeType.rect, {
x: 0.35, y: 0.9 + i * 0.71, w: 0.08, h: 0.45,
fill: { color: t.col }, line: { type: "none" },
});
s.addText(t.text, {
x: 0.55, y: 0.9 + i * 0.71, w: 9.1, h: 0.5,
fontSize: 11.5, color: C.lightGray, valign: "middle",
});
});
s.addText("Source: ATS/CDC/ERS/IDSA 2025 Guidelines (PMID: 40693952) | WHO TB Guidelines | Katzung 16th Ed | Murray & Nadel | Tintinalli", {
x: 0.3, y: 5.2, w: 9.4, h: 0.3,
fontSize: 7, color: "667788", italic: true, align: "center",
});
}
// ── Write file ──────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/tb-treatment-ppt/TB_Treatment_Guidelines.pptx" })
.then(() => console.log("DONE: TB_Treatment_Guidelines.pptx"))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/tb-treatment-ppt && node tb_ppt.js
ls -lh /home/daytona/workspace/tb-treatment-ppt/TB_Treatment_Guidelines.pptx
TB Treatment Guidelines
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - dark navy with amber accents |
| 2 | TB Classification & Approach (4 categories) |
| 3 | Standard 6-Month DS-TB Regimen (visual flow diagram) |
| 4 | Alternative Regimen Options (comparison table) |
| 5 | New 4-Month Regimen - 2025 ATS/CDC/ERS/IDSA update |
| 6 | LTBI Treatment - all 6 regimens with duration cards |
| 7 | Drug-Resistant TB (MDR/XDR) + BPaL regimen details |
| 8 | Key Drug Adverse Effects & Monitoring (all 6 drugs) |
| 9 | HIV Co-infection (epidemiology, regimen, ART timing, IRIS) |
| 10 | 6 Core Principles of TB Treatment |
| 11 | Key Takeaways + References |