Create a ppt for seminar presentation on topic of disease modifying therapy in CKD for MD medicine seminar with references
"chronic kidney disease"[MeSH Terms] AND "disease progression"[MeSH Terms]
finerenone chronic kidney disease diabetes
semaglutide chronic kidney disease type 2 diabetes
dapagliflozin OR empagliflozin chronic kidney disease renal outcomes
KDIGO 2024 clinical practice guideline CKD evaluation management disease modifying therapy summary
"DAPA-CKD" OR "EMPA-KIDNEY" dapagliflozin empagliflozin chronic kidney disease
mkdir -p /tmp/workspace/ckd-dmt-ppt && ls -la /tmp/workspace/
~/ckd-dmt-ppt/build_ppt.py
"""
Disease Modifying Therapy in CKD - MD Medicine Seminar PPT
"""
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
from pptx.oxml.ns import qn
# ---------- Palette ----------
NAVY = RGBColor(0x0B, 0x2E, 0x4E)
TEAL = RGBColor(0x0E, 0x7C, 0x86)
LIGHT_TEAL = RGBColor(0xE4, 0xF3, 0xF3)
ACCENT = RGBColor(0xD9, 0x6C, 0x2A)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK = RGBColor(0x22, 0x22, 0x22)
GREY = RGBColor(0x6E, 0x6E, 0x6E)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
SW, SH = prs.slide_width, prs.slide_height
def add_slide():
return prs.slides.add_slide(BLANK)
def set_bg(slide, color=WHITE):
bg = slide.background
bg.fill.solid()
bg.fill.fore_color.rgb = color
def add_rect(slide, x, y, w, h, color, line=False):
shp = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
shp.fill.solid()
shp.fill.fore_color.rgb = color
if not line:
shp.line.fill.background()
else:
shp.line.color.rgb = color
shp.shadow.inherit = False
return shp
def add_text(slide, x, y, w, h, text, size=18, color=DARK, bold=False, italic=False,
align=PP_ALIGN.LEFT, font="Calibri", anchor=MSO_ANCHOR.TOP, line_spacing=1.0):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = anchor
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom = 0
p = tf.paragraphs[0]
p.text = text
p.alignment = align
p.line_spacing = line_spacing
r = p.runs[0]
r.font.size = Pt(size)
r.font.color.rgb = color
r.font.bold = bold
r.font.italic = italic
r.font.name = font
return tb
def add_bullets(slide, x, y, w, h, items, size=16, color=DARK, font="Calibri",
line_spacing=1.12, space_after=8, bullet_color=TEAL):
"""items: list of (text, level, bold_prefix_or_None)"""
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom = 0
first = True
for item in items:
text, level = item[0], item[1]
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.level = 0
p.line_spacing = line_spacing
p.space_after = Pt(space_after)
indent = level * Inches(0.32)
p.alignment = PP_ALIGN.LEFT
pf = p._pPr if p._pPr is not None else p.get_or_add_pPr()
pf.set('marL', str(int(Inches(0.28) + indent)))
pf.set('indent', str(-int(Inches(0.28))))
# bullet char
buChar = pf.makeelement(qn('a:buChar'), {'char': '\u25B8' if level == 0 else '\u2013'})
buFont = pf.makeelement(qn('a:buFont'), {'typeface': 'Arial'})
buClr = pf.makeelement(qn('a:buClr'), {})
srgb = pf.makeelement(qn('a:srgbClr'), {'val': '0E7C86' if level == 0 else '9B9B9B'})
buClr.append(srgb)
pf.append(buClr)
pf.append(buFont)
pf.append(buChar)
run = p.add_run()
run.text = text
run.font.size = Pt(size - level * 2)
run.font.color.rgb = color if level == 0 else GREY
run.font.name = font
run.font.bold = (level == 0 and size >= 17)
return tb
def header(slide, kicker, title, num=None):
set_bg(slide, WHITE)
add_rect(slide, 0, 0, SW, Inches(1.15), NAVY)
add_rect(slide, 0, Inches(1.15), SW, Pt(3), ACCENT)
add_text(slide, Inches(0.55), Inches(0.12), Inches(11), Inches(0.32), kicker.upper(),
size=13, color=RGBColor(0x9F, 0xC9, 0xCF), bold=True, font="Calibri")
add_text(slide, Inches(0.55), Inches(0.42), Inches(12), Inches(0.65), title,
size=28, color=WHITE, bold=True, font="Calibri")
if num is not None:
add_text(slide, SW - Inches(0.9), SH - Inches(0.45), Inches(0.6), Inches(0.3), str(num),
size=12, color=GREY, align=PP_ALIGN.RIGHT)
add_text(slide, Inches(0.55), SH - Inches(0.45), Inches(6), Inches(0.3),
"Disease Modifying Therapy in CKD", size=10, color=GREY)
def two_col_bullets(slide, left_items, right_items, y=Inches(1.55), h=Inches(5.5), title_l=None, title_r=None):
lw = Inches(5.9)
rx = Inches(6.85)
if title_l:
add_text(slide, Inches(0.55), y, lw, Inches(0.4), title_l, size=17, color=TEAL, bold=True)
y2 = y + Inches(0.5)
else:
y2 = y
add_bullets(slide, Inches(0.55), y2, lw, h, left_items)
if title_r:
add_text(slide, rx, y, Inches(5.9), Inches(0.4), title_r, size=17, color=TEAL, bold=True)
add_bullets(slide, rx, y2, Inches(5.9), h, right_items)
slide_num = 0
def N():
global slide_num
slide_num += 1
return slide_num
# ================= SLIDE 1: TITLE =================
s = add_slide()
set_bg(s, NAVY)
add_rect(s, 0, Inches(6.65), SW, Inches(0.85), TEAL)
add_rect(s, 0, Inches(6.55), SW, Pt(3), ACCENT)
add_text(s, Inches(0.8), Inches(2.0), Inches(11.7), Inches(0.5), "MD MEDICINE SEMINAR",
size=18, color=RGBColor(0x9F, 0xC9, 0xCF), bold=True, align=PP_ALIGN.CENTER)
add_text(s, Inches(0.8), Inches(2.6), Inches(11.7), Inches(1.6),
"Disease Modifying Therapy\nin Chronic Kidney Disease",
size=42, color=WHITE, bold=True, align=PP_ALIGN.CENTER, line_spacing=1.1)
add_text(s, Inches(0.8), Inches(4.35), Inches(11.7), Inches(0.5),
"Slowing progression, reducing cardio-renal risk: from RAAS blockade to SGLT2i, nonsteroidal MRA and GLP-1 RA",
size=15, color=RGBColor(0xD8, 0xE8, 0xEC), italic=True, align=PP_ALIGN.CENTER)
add_text(s, Inches(0.8), Inches(6.78), Inches(11.7), Inches(0.5),
"Postgraduate Seminar | Department of Medicine", size=14, color=WHITE, align=PP_ALIGN.CENTER)
# ================= SLIDE 2: OUTLINE =================
s = add_slide(); header(s, "Roadmap", "Outline", N())
items = [
("Burden and definition of CKD", 0),
("Concept and goals of disease-modifying therapy (DMT)", 0),
("Pathophysiology of CKD progression", 0),
("Foundational therapy: BP, glycemic and lifestyle control", 0),
("RAAS blockade (ACEi / ARB)", 0),
("SGLT2 inhibitors", 0),
("Nonsteroidal mineralocorticoid receptor antagonists (finerenone)", 0),
("GLP-1 receptor agonists", 0),
("The multi-pillar / combination approach", 0),
("KDIGO 2024 treatment algorithm and practical approach", 0),
("Summary and take-home messages", 0),
("References", 0),
]
add_bullets(s, Inches(0.8), Inches(1.7), Inches(11.5), Inches(5.3), items, size=19, space_after=14)
# ================= SLIDE 3: BURDEN =================
s = add_slide(); header(s, "Introduction", "Burden of Chronic Kidney Disease", N())
left = [
("CKD affects approximately 700-850 million people worldwide - roughly 1 in 10 adults", 0),
("Leading cause of cardiovascular mortality risk amplification, not merely a pathway to dialysis", 0),
("Majority of CKD deaths occur before kidney failure - largely from cardiovascular events", 0),
("Diabetic kidney disease is the single most common cause of CKD and kidney failure globally", 0),
]
right = [
("Traditional management (BP + glycemic control + RAAS blockade) leaves substantial residual risk", 0),
("Last decade: paradigm shift from purely symptomatic/supportive care to agents that directly modify the biological drivers of progression", 0),
("This seminar focuses on evidence-based Disease Modifying Therapy (DMT) - agents proven to slow eGFR decline and reduce kidney failure/CV events", 0),
]
two_col_bullets(s, left, right, title_l="Epidemiology", title_r="Why \"disease-modifying\" therapy?")
# ================= SLIDE 4: DEFINITION & STAGING =================
s = add_slide(); header(s, "Introduction", "KDIGO Definition and Staging of CKD", N())
add_text(s, Inches(0.55), Inches(1.55), Inches(12.2), Inches(0.6),
"CKD: abnormalities of kidney structure or function, present for >3 months, with implications for health.",
size=17, color=DARK, italic=True)
add_text(s, Inches(0.55), Inches(2.25), Inches(6), Inches(0.35), "GFR categories (mL/min/1.73m\u00b2)", size=15, bold=True, color=TEAL)
gfr = [
("G1 \u2265 90 (normal/high)", 0),
("G2 60-89 (mildly decreased)", 0),
("G3a 45-59 (mild-moderate)", 0),
("G3b 30-44 (moderate-severe)", 0),
("G4 15-29 (severely decreased)", 0),
("G5 <15 (kidney failure)", 0),
]
add_bullets(s, Inches(0.55), Inches(2.7), Inches(6), Inches(3.0), gfr, size=15, space_after=6)
add_text(s, Inches(6.9), Inches(2.25), Inches(6), Inches(0.35), "Albuminuria categories (ACR, mg/g)", size=15, bold=True, color=TEAL)
acr = [
("A1 <30 (normal to mildly increased)", 0),
("A2 30-300 (moderately increased)", 0),
("A3 >300 (severely increased)", 0),
]
add_bullets(s, Inches(6.9), Inches(2.7), Inches(6), Inches(2.0), acr, size=15, space_after=6)
add_rect(s, Inches(6.9), Inches(4.5), Inches(5.9), Inches(1.9), LIGHT_TEAL)
add_text(s, Inches(7.1), Inches(4.65), Inches(5.5), Inches(1.6),
"CKD is staged by GFR x ACR grid (\"heat map\"). Risk of progression, CV events and mortality rises with lower GFR AND higher albuminuria - both are independent, multiplicative risk markers and both are targets of disease-modifying therapy.",
size=13.5, color=DARK, line_spacing=1.2)
add_text(s, Inches(0.55), SH-Inches(0.9), Inches(11.5), Inches(0.35),
"Ref: KDIGO 2024 Clinical Practice Guideline for Evaluation and Management of CKD - Kidney Int. 2024;105(4S):S117-S314.",
size=11, color=GREY, italic=True)
# ================= SLIDE 5: CONCEPT OF DMT =================
s = add_slide(); header(s, "Concept", "What Is \"Disease-Modifying\" Therapy?", N())
left = [
("Goes beyond symptom control (diuretics, phosphate binders, ESAs) to target the biological mechanisms that drive nephron loss and fibrosis", 0),
("Defined by hard, kidney-specific endpoints in RCTs:", 0),
("Sustained \u226540-57% decline in eGFR", 1),
("Onset of kidney failure (dialysis/transplant)", 1),
("Renal or cardiovascular death", 1),
]
right = [
("Contrast with older \"renoprotective\" strategies that only reduced surrogate markers (BP, proteinuria) without confirmed hard outcome benefit", 0),
("Current disease-modifying agents in CKD:", 0),
("RAAS inhibitors (ACEi/ARB) - foundational", 1),
("SGLT2 inhibitors", 1),
("Nonsteroidal MRA - finerenone", 1),
("GLP-1 receptor agonists (semaglutide)", 1),
]
two_col_bullets(s, left, right, title_l="Definition", title_r="Current evidence-based agents")
# ================= SLIDE 6: PATHOPHYSIOLOGY =================
s = add_slide(); header(s, "Mechanism", "Pathophysiology of CKD Progression", N())
items = [
("Initial insult (diabetes, hypertension, glomerulonephritis) \u2192 nephron loss", 0),
("Adaptive hyperfiltration in surviving nephrons \u2192 glomerular hypertension \u2192 podocyte injury \u2192 proteinuria", 0),
("Intrarenal RAAS activation \u2192 efferent arteriolar constriction, aldosterone-mediated fibrosis and inflammation", 0),
("Tubuloglomerular feedback dysregulation: increased proximal tubular sodium-glucose reabsorption \u2192 reduced macula densa signalling \u2192 further hyperfiltration (key SGLT2i target)", 0),
("Chronic hypoxia, oxidative stress, and myofibroblast activation \u2192 interstitial fibrosis and tubular atrophy - the final common pathway (\"unified hypothesis\" of CKD progression)", 0),
("Each disease-modifying drug class interrupts a distinct node in this cascade - rationale for combination therapy", 0),
]
add_bullets(s, Inches(0.7), Inches(1.6), Inches(11.9), Inches(5.2), items, size=17, space_after=14)
add_text(s, Inches(0.55), SH-Inches(0.9), Inches(11.5), Inches(0.35),
"Ref: Brenner & Rector's The Kidney, 11th ed - \"A Unified Hypothesis of Chronic Kidney Disease Progression\"; Comprehensive Clinical Nephrology, 7th ed.",
size=11, color=GREY, italic=True)
# ================= SLIDE 7: GOALS OF DMT =================
s = add_slide(); header(s, "Concept", "Goals of Disease-Modifying Therapy", N())
items = [
("Slow the rate of eGFR decline (target: reduce annual decline toward the normal aging rate of ~1 mL/min/1.73m\u00b2/yr)", 0),
("Reduce albuminuria/proteinuria - itself an independent therapeutic target, not just a marker", 0),
("Delay onset of kidney failure (need for dialysis or transplantation)", 0),
("Reduce cardiovascular morbidity and mortality (CKD is a coronary-risk-equivalent state)", 0),
("Reduce heart failure hospitalizations - major overlap between cardiac and renal disease-modifying pathways", 0),
("Minimize treatment-related harm (hyperkalemia, AKI, hypoglycemia) while maximizing nephron protection", 0),
]
add_bullets(s, Inches(0.7), Inches(1.6), Inches(11.9), Inches(5.2), items, size=17, space_after=14)
# ================= SLIDE 8: FOUNDATIONAL THERAPY =================
s = add_slide(); header(s, "Foundation", "Foundational (Background) Therapy", N())
left = [
("Blood pressure control", 0),
("Target <120 mmHg systolic (standardized office BP) if tolerated, per KDIGO 2024, using SPRINT-informed evidence", 1),
("Lifestyle measures", 0),
("Sodium restriction (<2 g/day), weight management, exercise, smoking cessation", 1),
("Avoid nephrotoxins - NSAIDs, contrast when avoidable", 1),
]
right = [
("Glycemic control in diabetic CKD", 0),
("Individualized HbA1c target (~7% typically, less stringent in advanced CKD/frailty)", 1),
("Dietary protein moderation (~0.8 g/kg/day) in non-dialysis CKD", 0),
("These measures create the platform on which disease-modifying pharmacotherapy is layered - none replace it", 0),
]
two_col_bullets(s, left, right)
# ================= SLIDE 9: RAAS BLOCKADE =================
s = add_slide(); header(s, "Pillar 1", "RAAS Blockade: ACE Inhibitors / ARBs", N())
left = [
("Mechanism: dilate efferent arteriole \u2192 reduce intraglomerular pressure and hyperfiltration; reduce aldosterone-driven fibrosis; lower proteinuria independent of systemic BP effect", 0),
("Foundational, first-line disease-modifying therapy for CKD with albuminuria (A2/A3), with or without diabetes/hypertension", 0),
("Landmark evidence: RENAAL, IDNT, AASK, and REIN trials established renoprotection with ARB/ACEi in proteinuric CKD", 0),
]
right = [
("Practice points", 0),
("Titrate to maximum tolerated/labelled dose, not just BP target", 1),
("Do NOT combine ACEi + ARB (higher AKI/hyperkalemia risk, no added benefit - ONTARGET)", 1),
("Monitor creatinine/potassium 2-4 weeks after initiation or dose change", 1),
("An acceptable initial eGFR dip (\u226430%) reflects reduced hyperfiltration and should not prompt discontinuation", 1),
]
two_col_bullets(s, left, right, title_l="Mechanism and evidence base", title_r="Clinical use")
# ================= SLIDE 10: SGLT2 INHIBITORS - mechanism =================
s = add_slide(); header(s, "Pillar 2", "SGLT2 Inhibitors: Mechanism", N())
items = [
("Block sodium-glucose cotransporter-2 in the proximal tubule \u2192 natriuresis and glycosuria", 0),
("Restore tubuloglomerular feedback: increased distal sodium delivery to macula densa \u2192 afferent arteriolar constriction \u2192 reduces intraglomerular pressure and hyperfiltration (independent of glycemic effect)", 0),
("Additional benefits: reduce body weight, blood pressure, uric acid; improve tubular oxygen efficiency; reduce albuminuria", 0),
("Renoprotective effect occurs in diabetic AND non-diabetic CKD, and even at low eGFR - a genuinely disease-modifying (not merely glucose-lowering) action", 0),
]
add_bullets(s, Inches(0.7), Inches(1.6), Inches(11.9), Inches(4.6), items, size=17, space_after=16)
add_text(s, Inches(0.55), SH-Inches(0.9), Inches(11.7), Inches(0.35),
"Ref: Brenner & Rector's The Kidney, 11th ed; Goldman-Cecil Medicine, Int'l ed - \"SGLT2 Inhibitors\".",
size=11, color=GREY, italic=True)
# ================= SLIDE 11: SGLT2 INHIBITORS - trials =================
s = add_slide(); header(s, "Pillar 2", "SGLT2 Inhibitors: Landmark Trial Evidence", N())
trials = [
("CREDENCE (canagliflozin, 2019)", 0),
("T2DM + CKD (eGFR 30-<90, UACR >300); 30% reduction in composite renal endpoint", 1),
("DAPA-CKD (dapagliflozin, 2020)", 0),
("CKD \u00b1 diabetes, eGFR 25-75; 39% reduction in \u226550% eGFR decline / kidney failure / renal-CV death; stopped early for efficacy", 1),
("EMPA-KIDNEY (empagliflozin, 2023)", 0),
("Broadest population - eGFR as low as 20, including non-albuminuric CKD; 28% reduction in kidney disease progression or CV death", 1),
]
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(4.6), trials, size=17, space_after=10)
add_rect(s, Inches(0.7), Inches(6.15), Inches(11.9), Inches(0.75), LIGHT_TEAL)
add_text(s, Inches(0.9), Inches(6.28), Inches(11.5), Inches(0.5),
"KDIGO 2024: SGLT2 inhibitor recommended for all CKD patients with eGFR \u226520 with or without diabetes, once stable on RAAS blockade.",
size=14.5, color=NAVY, bold=True)
# ================= SLIDE 12: SGLT2 practical =================
s = add_slide(); header(s, "Pillar 2", "SGLT2 Inhibitors: Practical Points", N())
left = [
("Adverse effects", 0),
("Genital mycotic infections (most common)", 1),
("Euglycemic DKA (rare, avoid in T1DM, peri-op, acute illness - \"sick day\" rules)", 1),
("Volume depletion in elderly/diuretic-treated patients", 1),
]
right = [
("Cautions and contraindications", 0),
("Not for dialysis-dependent kidney failure or after transplant (evidence limited)", 1),
("No dose adjustment needed for renal indication; expected small initial eGFR dip is reversible", 1),
("Avoid initiating in recurrent UTIs/urologic instrumentation in transplant recipients", 1),
]
two_col_bullets(s, left, right)
# ================= SLIDE 13: FINERENONE =================
s = add_slide(); header(s, "Pillar 3", "Nonsteroidal MRA: Finerenone", N())
left = [
("Mechanism: selective, nonsteroidal mineralocorticoid receptor antagonist \u2192 blocks aldosterone-driven inflammation and fibrosis in kidney and heart, with a lower hyperkalemia risk than spironolactone/eplerenone", 0),
("FIDELIO-DKD (2020): T2DM + CKD (albuminuric) \u2192 18% reduction in kidney failure/eGFR decline/renal death", 0),
("FIGARO-DKD (2021): earlier-stage albuminuric T2DM-CKD \u2192 significant reduction in CV composite outcome", 0),
]
right = [
("FIDELITY pooled analysis (2022, n=13,026): consistent CV and kidney benefit across the CKD/diabetes spectrum", 0),
("CONFIDENCE trial (2025): finerenone + empagliflozin combination \u2192 greater albuminuria reduction than either agent alone, with acceptable safety", 0),
("Indicated in T2DM + CKD with albuminuria, added to maximal RAAS blockade \u00b1 SGLT2i; monitor potassium", 0),
]
two_col_bullets(s, left, right, title_l="Mechanism and key diabetic-CKD trials", title_r="Combination data and use")
# ================= SLIDE 14: GLP-1 RA =================
s = add_slide(); header(s, "Pillar 4", "GLP-1 Receptor Agonists", N())
items = [
("Mechanism: incretin-based effects plus proposed direct anti-inflammatory/anti-fibrotic action on the kidney, natriuresis, weight loss, and improved glycemic and cardiovascular risk profile", 0),
("FLOW trial (semaglutide, NEJM 2024): T2DM + CKD (eGFR 50-75 with UACR >300, or eGFR 25-<50 with UACR >100)", 0),
("Stopped early for efficacy - 24% reduction in composite of major kidney disease events, kidney failure, \u226550% eGFR decline, or renal/CV death", 0),
("First GLP-1 RA to demonstrate kidney disease-modifying benefit in a dedicated CKD outcome trial - establishes GLP-1 RA as the newest pillar of cardio-renal protection in diabetic CKD", 0),
("Added benefit: weight loss and reduced major adverse CV events, complementing SGLT2i/finerenone", 0),
]
add_bullets(s, Inches(0.7), Inches(1.55), Inches(11.9), Inches(5.3), items, size=16.5, space_after=14)
# ================= SLIDE 15: MULTI-PILLAR APPROACH =================
s = add_slide(); header(s, "Integration", "The Multi-Pillar Approach to Cardio-Renal Protection", N())
pillars = [
("1. RAAS blockade", "Reduce hyperfiltration & proteinuria (foundation)"),
("2. SGLT2 inhibitor", "Restore TG feedback; add in nearly all CKD, eGFR \u226520"),
("3. Nonsteroidal MRA", "Anti-fibrotic/anti-inflammatory; albuminuric diabetic CKD"),
("4. GLP-1 receptor agonist", "Metabolic + emerging direct renal protection"),
]
x0 = Inches(0.6)
w = Inches(2.95)
gap = Inches(0.15)
y0 = Inches(1.8)
h = Inches(3.6)
for i, (t, d) in enumerate(pillars):
x = x0 + i * (w + gap)
add_rect(s, x, y0, w, h, NAVY if i % 2 == 0 else TEAL)
add_text(s, x + Inches(0.15), y0 + Inches(0.25), w - Inches(0.3), Inches(0.9), t,
size=19, color=WHITE, bold=True, align=PP_ALIGN.CENTER, line_spacing=1.05)
add_text(s, x + Inches(0.15), y0 + Inches(1.35), w - Inches(0.3), Inches(2.1), d,
size=13.5, color=RGBColor(0xE8,0xF3,0xF3), align=PP_ALIGN.CENTER, line_spacing=1.2)
add_rect(s, Inches(0.6), Inches(5.65), Inches(12.1), Inches(1.15), LIGHT_TEAL)
add_text(s, Inches(0.85), Inches(5.78), Inches(11.6), Inches(0.95),
"Each pillar acts on a distinct pathway - effects are additive/synergistic, not redundant. Sequential add-on (RAASi \u2192 SGLT2i \u2192 MRA/GLP-1RA) is now standard of care in albuminuric diabetic CKD, provided potassium and volume status are monitored.",
size=14, color=NAVY, line_spacing=1.2)
# ================= SLIDE 16: KDIGO ALGORITHM =================
s = add_slide(); header(s, "Guidelines", "KDIGO 2024 Practical Algorithm", N())
items = [
("Step 1: Confirm CKD diagnosis and stage (GFR x ACR); identify and treat the underlying cause", 0),
("Step 2: Lifestyle optimization + BP control (target <120 mmHg systolic if tolerated) + first-line ACEi/ARB titrated to max tolerated dose if albuminuria present", 0),
("Step 3: Add SGLT2 inhibitor once eGFR and potassium are stable (eGFR \u226520 mL/min/1.73m\u00b2, diabetic or non-diabetic CKD)", 0),
("Step 4: In T2DM with persistent albuminuria (UACR \u226530) despite RAASi + SGLT2i \u2192 add finerenone (nonsteroidal MRA)", 0),
("Step 5: Consider GLP-1 receptor agonist for additional glycemic, weight, cardiovascular and kidney benefit", 0),
("Step 6: Statin therapy for all adults with CKD (independent CV risk reduction); low-dose aspirin if established atherosclerotic disease", 0),
("Throughout: monitor eGFR, UACR, potassium; adjust for AKI risk during intercurrent illness (\"sick day\" guidance)", 0),
]
add_bullets(s, Inches(0.7), Inches(1.5), Inches(11.9), Inches(5.3), items, size=15.5, space_after=10)
# ================= SLIDE 17: CASE-BASED APPROACH =================
s = add_slide(); header(s, "Application", "Illustrative Approach for the MD Clinic", N())
left = [
("Patient: 55-year-old with T2DM, eGFR 42 mL/min/1.73m\u00b2, UACR 450 mg/g, BP 148/86", 0),
("Step 1: Start/optimize ARB, titrate to maximum tolerated dose; target BP <120 mmHg systolic", 0),
("Step 2: Add SGLT2 inhibitor once eGFR/potassium stable", 0),
("Step 3: If UACR remains \u226530 mg/g after 4 weeks on stable RAASi + SGLT2i \u2192 add finerenone", 0),
]
right = [
("Step 4: Consider GLP-1 RA for additional cardio-metabolic-renal benefit, especially if obesity or high CV risk", 0),
("Add statin for CV risk reduction regardless of lipid level in most CKD patients", 0),
("Monitor: eGFR and potassium at 2-4 weeks after each new drug/dose change; UACR every 3-6 months", 0),
("Reassess for referral to nephrology if rapid progression, eGFR <30, or diagnostic uncertainty", 0),
]
two_col_bullets(s, left, right, title_l="Clinical scenario", title_r="Sequential management")
# ================= SLIDE 18: SUMMARY =================
s = add_slide(); header(s, "Summary", "Take-Home Messages", N())
items = [
("CKD progression is driven by hyperfiltration, RAAS/aldosterone activation, and fibrosis - disease-modifying therapy targets these mechanisms, not just symptoms", 0),
("Four pillars now define evidence-based disease-modifying therapy: RAAS blockade, SGLT2 inhibitors, nonsteroidal MRA (finerenone), and GLP-1 receptor agonists", 0),
("Benefits are additive - combination therapy is now the standard of care in albuminuric (and increasingly non-albuminuric) CKD", 0),
("KDIGO 2024 provides a stepwise, evidence-graded algorithm; BP control and lifestyle remain the foundation", 0),
("Early diagnosis, risk stratification by GFR x ACR, and timely initiation of these therapies can meaningfully delay kidney failure and reduce cardiovascular mortality", 0),
]
add_bullets(s, Inches(0.7), Inches(1.6), Inches(11.9), Inches(5.2), items, size=17.5, space_after=16)
# ================= SLIDE 19: REFERENCES =================
s = add_slide(); header(s, "References", "Key References", N())
refs = [
("Kidney Disease: Improving Global Outcomes (KDIGO) CKD Work Group. KDIGO 2024 Clinical Practice Guideline for the Evaluation and Management of Chronic Kidney Disease. Kidney Int. 2024;105(4S):S117-S314. PMID: 38490803.", 0),
("Bakris GL, Agarwal R, Anker SD, et al. Effect of Finerenone on Chronic Kidney Disease Outcomes in Type 2 Diabetes (FIDELIO-DKD). N Engl J Med. 2020;383:2219-2229. PMID: 33264825.", 0),
("Pitt B, Filippatos G, Agarwal R, et al. Cardiovascular Events with Finerenone in Kidney Disease and Type 2 Diabetes (FIGARO-DKD). N Engl J Med. 2021;385:2252-2263. PMID: 34449181.", 0),
("Agarwal R, Filippatos G, Pitt B, et al. Cardiovascular and kidney outcomes with finerenone: the FIDELITY pooled analysis. Eur Heart J. 2022;43:474-484. PMID: 35023547.", 0),
("Agarwal R, Green JB, Heerspink HJL, et al. Finerenone with Empagliflozin in CKD and Type 2 Diabetes (CONFIDENCE). N Engl J Med. 2025. PMID: 40470996.", 0),
("Heerspink HJL, Stefansson BV, Correa-Rotter R, et al. Dapagliflozin in Patients with Chronic Kidney Disease (DAPA-CKD). N Engl J Med. 2020;383:1436-1446.", 0),
("The EMPA-KIDNEY Collaborative Group. Empagliflozin in Patients with Chronic Kidney Disease. N Engl J Med. 2023;388:117-127.", 0),
("Perkovic V, Tuttle KR, Rossing P, et al. Effects of Semaglutide on Chronic Kidney Disease in Patients with Type 2 Diabetes (FLOW). N Engl J Med. 2024;391:109-121. PMID: 38785209.", 0),
("Perazella MA, ed. Comprehensive Clinical Nephrology, 7th ed. Elsevier; 2023 - Chapters on Slowing Progression of CKD; SGLT2 Inhibitor Treatment; Mineralocorticoid Receptor Antagonism.", 0),
("Yu ASL, Chertow GM, Luyckx V, et al, eds. Brenner and Rector's The Kidney, 11th ed. Elsevier; 2020 - Mechanisms of Progression in CKD; A Unified Hypothesis of CKD Progression.", 0),
("National Kidney Foundation. Primer on Kidney Diseases, 8th ed. Elsevier; 2023 - Development and Progression of CKD; Treatment and Prevention of CKD Progression.", 0),
]
add_bullets(s, Inches(0.6), Inches(1.45), Inches(12.1), Inches(5.6), refs, size=12.5, space_after=8, color=DARK)
# ================= SLIDE 20: THANK YOU =================
s = add_slide()
set_bg(s, NAVY)
add_rect(s, 0, Inches(3.4), SW, Pt(3), ACCENT)
add_text(s, Inches(0.8), Inches(2.9), Inches(11.7), Inches(1.0), "Thank You",
size=44, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, Inches(0.8), Inches(3.75), Inches(11.7), Inches(0.6), "Questions and Discussion",
size=20, color=RGBColor(0x9F, 0xC9, 0xCF), align=PP_ALIGN.CENTER)
prs.save("/tmp/workspace/ckd-dmt-ppt/Disease_Modifying_Therapy_in_CKD.pptx")
print("Saved. Slides:", len(prs.slides.__iter__.__self__._sldIdLst))
cd /tmp/workspace/ckd-dmt-ppt && python build_ppt.py
cd /tmp/workspace/ckd-dmt-ppt && python3 -c " from pptx import Presentation prs = Presentation('Disease_Modifying_Therapy_in_CKD.pptx') print('Total slides:', len(prs.slides)) for i, slide in enumerate(prs.slides, 1): texts = [sh.text_frame.text.split(chr(10))[0] for sh in slide.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(i, '-', texts[0] if texts else '(no text)') " && ls -la /tmp/workspace/ckd-dmt-ppt/
Disease Modifying Therapy in CKD
Presentation · PPTX