Based on the content in these images, make ppt on the topic 'Acute Leukemia'. The slides should contain images as well related to this topic make the presentation as per ak tripathi book should contain image's
acute leukemia AML blast cells bone marrow microscopy image free use medical
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace/acute-leukemia-ppt && echo "created"
mkdir -p /tmp/workspace/acute-leukemia-ppt && python /tmp/skills/shared/scripts/fetch_images.py \ "https://upload.wikimedia.org/wikipedia/commons/2/21/Acute_Myeloid_Leukemia_%28M2_type%29.jpg" \ "https://www.researchgate.net/publication/270885974/figure/fig5/AS:295208525811712@1447394605136/Sheets-of-blasts-in-a-case-of-AML-Bone-marrow-biopsy-H-E-400X.png" \ "https://stjude.scene7.com/is/image/stjude/aml-leukemia-bm-m4?fit=crop,1&wid=600" 2>/dev/null | python3 -c " import sys, json data = json.load(sys.stdin) for i, item in enumerate(data): if item.get('base64'): print(f'Image {i}: OK - {item[\"url\"][:60]}') else: print(f'Image {i}: FAILED - {item.get(\"error\",\"unknown\")}') "
python /tmp/skills/shared/scripts/fetch_images.py \ "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000231836-1784477120666-bby7yr.jpg" \ "https://imagebank.hematology.org/getimagebyid/62449?size=3" \ "https://media.istockphoto.com/id/2210327371/photo/acute-myeloid-leukemia-type-of-blood-cancer-in-which-the-bone-marrow-makes-abnormal-myeloblast.jpg?s=612x612&w=0&k=20&c=Q5z2EWrcOsy8ECK3pYx7IlqAJSzDwGsX7tXaT43C6eM=" 2>/dev/null | python3 -c " import sys, json data = json.load(sys.stdin) for i, item in enumerate(data): if item.get('base64'): print(f'Image {i}: OK') else: print(f'Image {i}: FAILED - {item.get(\"error\",\"unknown\")}') "
~/acute-leukemia-ppt/create_ppt.py
import json
import subprocess
import base64
from io import BytesIO
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.util import Inches, Pt
from pptx.oxml.ns import qn
from lxml import etree
# ──────────────────── helpers ────────────────────
DARK_RED = RGBColor(0x8B, 0x00, 0x00) # deep maroon
DARK_BG = RGBColor(0x1A, 0x1A, 0x2E) # dark navy
ACCENT = RGBColor(0xC0, 0x39, 0x2B) # red accent
LIGHT_GRAY = RGBColor(0xF5, 0xF5, 0xF5)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GRAY = RGBColor(0x2C, 0x2C, 0x54)
GOLD = RGBColor(0xD4, 0xAC, 0x0D)
MID_RED = RGBColor(0xA9, 0x3B, 0x26)
LIGHT_RED = RGBColor(0xE8, 0x4C, 0x3C)
PALE_PINK = RGBColor(0xFD, 0xED, 0xEC)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ──────────────────── fetch images ────────────────────
URLS = [
"https://upload.wikimedia.org/wikipedia/commons/2/21/Acute_Myeloid_Leukemia_%28M2_type%29.jpg", # idx 0 – AML blood smear wiki
"https://stjude.scene7.com/is/image/stjude/aml-leukemia-bm-m4?fit=crop,1&wid=600", # idx 1 – St Jude BM M4
"https://d361swluvexzqs.cloudfront.net/chats-attachments/1000231836-1784477120666-bby7yr.jpg", # idx 2 – book page (gum+BM)
"https://imagebank.hematology.org/getimagebyid/62449?size=3", # idx 3 – ASH image bank
"https://media.istockphoto.com/id/2210327371/photo/acute-myeloid-leukemia-type-of-blood-cancer-in-which-the-bone-marrow-makes-abnormal-myeloblast.jpg?s=612x612&w=0&k=20&c=Q5z2EWrcOsy8ECK3pYx7IlqAJSzDwGsX7tXaT43C6eM=", # idx 4 – istock AML
]
print("Fetching images...")
raw = subprocess.check_output(["python", "/tmp/skills/shared/scripts/fetch_images.py"] + URLS)
imgs_data = json.loads(raw)
def get_image(idx):
d = imgs_data[idx]
if d.get("base64"):
mime, b64 = d["base64"].split(";base64,", 1)
return BytesIO(base64.b64decode(b64))
return None
# ──────────────────── utility functions ────────────────────
def add_rect(slide, x, y, w, h, fill_color=None, line_color=None, line_width=None, alpha=None):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
if fill_color:
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
else:
shape.fill.background()
if line_color:
shape.line.color.rgb = line_color
if line_width:
shape.line.width = Pt(line_width)
else:
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h, size=18, bold=False, color=WHITE,
align=PP_ALIGN.LEFT, italic=False, wrap=True, v_anchor=None):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
if v_anchor:
tf.vertical_anchor = v_anchor
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom= Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_para(tf, text, size=13, bold=False, color=WHITE,
align=PP_ALIGN.LEFT, space_before=0, bullet=False, italic=False):
p = tf.add_paragraph()
p.alignment = align
if space_before:
p.space_before = Pt(space_before)
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
if bullet:
pPr = p._p.get_or_add_pPr()
buChar = etree.SubElement(pPr, qn("a:buChar"))
buChar.set("char", "•")
return p
def add_image_safe(slide, img_io, x, y, w, h):
if img_io is None:
return None
img_io.seek(0)
try:
pic = slide.shapes.add_picture(img_io, Inches(x), Inches(y), Inches(w), Inches(h))
return pic
except Exception as e:
print(f" Image add failed: {e}")
return None
def add_header_bar(slide, title, subtitle=None):
"""Dark header banner across top."""
add_rect(slide, 0, 0, 13.333, 1.3, fill_color=DARK_BG)
add_rect(slide, 0, 1.3, 13.333, 0.07, fill_color=ACCENT)
add_text(slide, title, 0.3, 0.05, 10, 0.75, size=30, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
if subtitle:
add_text(slide, subtitle, 0.3, 0.8, 10, 0.45, size=14, color=GOLD, italic=True)
# Red corner accent
add_rect(slide, 12.5, 0, 0.833, 1.3, fill_color=ACCENT)
def slide_bg(slide):
add_rect(slide, 0, 0, 13.333, 7.5, fill_color=LIGHT_GRAY)
# ═══════════════════════════════════════════════════════════
# SLIDE 1 – TITLE SLIDE
# ═══════════════════════════════════════════════════════════
s1 = prs.slides.add_slide(blank)
add_rect(s1, 0, 0, 13.333, 7.5, fill_color=DARK_BG)
# diagonal accent
add_rect(s1, 0, 5.8, 13.333, 0.12, fill_color=ACCENT)
add_rect(s1, 0, 5.92, 13.333, 1.58, fill_color=DARK_GRAY)
# Left image strip
img0 = get_image(0)
add_image_safe(s1, img0, 0.3, 1.0, 3.6, 4.5)
# Red overlay band
add_rect(s1, 3.9, 1.0, 0.15, 4.5, fill_color=ACCENT)
# Title text
add_text(s1, "ACUTE LEUKEMIA", 4.3, 1.4, 8.5, 1.3, size=44, bold=True, color=WHITE)
add_text(s1, "A Comprehensive Overview", 4.3, 2.75, 8.5, 0.6, size=22, italic=True, color=GOLD)
add_rect(s1, 4.3, 3.45, 7.5, 0.07, fill_color=ACCENT)
add_text(s1, "Based on AK Tripathi's Medicine – Chapter 4: Hematological System",
4.3, 3.6, 8.5, 0.5, size=14, color=RGBColor(0xBB, 0xBB, 0xCC), italic=True)
add_text(s1, "Topics Covered:", 4.3, 4.2, 8.5, 0.45, size=15, bold=True, color=GOLD)
topics_tf_box = s1.shapes.add_textbox(Inches(4.3), Inches(4.65), Inches(8.5), Inches(1.0))
ttf = topics_tf_box.text_frame
ttf.word_wrap = True
for t in ["Definition & Classification | Pathophysiology | AML Clinical Features",
"Diagnosis & Risk Stratification | Treatment of AML & ALL"]:
add_para(ttf, t, size=12, color=RGBColor(0xCC, 0xCC, 0xEE))
add_text(s1, "Hematology | Internal Medicine", 4.3, 6.1, 8.5, 0.4, size=12,
color=RGBColor(0x99, 0x99, 0xBB), italic=True)
print("Slide 1 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 2 – DEFINITION & OVERVIEW
# ═══════════════════════════════════════════════════════════
s2 = prs.slides.add_slide(blank)
slide_bg(s2)
add_header_bar(s2, "Definition & Overview", "What is Acute Leukemia?")
# Main content box
add_rect(s2, 0.3, 1.5, 7.8, 5.6, fill_color=WHITE)
add_rect(s2, 0.3, 1.5, 7.8, 0.05, fill_color=ACCENT)
tb = s2.shapes.add_textbox(Inches(0.5), Inches(1.6), Inches(7.5), Inches(5.0))
tf = tb.text_frame
tf.word_wrap = True
add_para(tf, "Definition", size=16, bold=True, color=DARK_RED, space_before=4)
add_para(tf, "Acute leukemia is a life-threatening hematological malignancy characterized by >20% blasts "
"in either peripheral blood or bone marrow.", size=13, color=DARK_GRAY, bullet=False)
add_para(tf, "", size=6)
add_para(tf, "Classification", size=16, bold=True, color=DARK_RED, space_before=4)
add_para(tf, "Acute leukemias are broadly classified into two categories:", size=13, color=DARK_GRAY)
add_para(tf, "• Acute Lymphoblastic Leukemia (ALL)", size=13, color=DARK_GRAY, bold=True)
add_para(tf, "• Acute Myeloblastic Leukemia (AML)", size=13, color=DARK_GRAY, bold=True)
add_para(tf, "", size=6)
add_para(tf, "Epidemiology", size=16, bold=True, color=DARK_RED, space_before=4)
add_para(tf, "• 80% of pediatric leukemias are ALL (in contrast to adult preponderance of AML)", size=13, color=DARK_GRAY)
add_para(tf, "• AML median age of onset: 70 years", size=13, color=DARK_GRAY)
add_para(tf, "• Classification based on morphology: WHO 2016 revision (Table 4.13)", size=13, color=DARK_GRAY)
# Right side image
img4 = get_image(4)
add_image_safe(s2, img4, 8.4, 1.5, 4.5, 3.5)
# Caption
add_rect(s2, 8.4, 5.05, 4.5, 0.9, fill_color=DARK_GRAY)
add_text(s2, "AML – Abnormal myeloblasts in bone marrow (microscopy)",
8.5, 5.1, 4.3, 0.8, size=11, color=WHITE, italic=True, wrap=True)
# Quote box at bottom right
add_rect(s2, 8.4, 6.05, 4.5, 0.95, fill_color=PALE_PINK)
add_rect(s2, 8.4, 6.05, 0.08, 0.95, fill_color=ACCENT)
add_text(s2, "Recently AML and ALL have been further subclassified based on WHO 2016 revision.",
8.55, 6.1, 4.25, 0.85, size=10.5, color=DARK_GRAY, italic=True, wrap=True)
print("Slide 2 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 3 – CLASSIFICATION TABLE
# ═══════════════════════════════════════════════════════════
s3 = prs.slides.add_slide(blank)
slide_bg(s3)
add_header_bar(s3, "Classification of Acute Leukemia", "WHO & FAB Classification (Table 4.13)")
# Two column boxes
def classification_box(slide, x, title, items, col_color):
add_rect(slide, x, 1.45, 4.0, 5.7, fill_color=WHITE)
add_rect(slide, x, 1.45, 4.0, 0.55, fill_color=col_color)
add_text(slide, title, x+0.15, 1.48, 3.7, 0.5, size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb = slide.shapes.add_textbox(Inches(x+0.1), Inches(2.1), Inches(3.8), Inches(4.8))
tf = tb.text_frame
tf.word_wrap = True
for item in items:
add_para(tf, item, size=12.5, color=DARK_GRAY, bullet=("•" in item))
return tf
aml_items = [
"FAB Classification:",
"• M0 – Undifferentiated",
"• M1 – Myeloblastic",
"• M2 – Myeloblastic with differentiation",
"• M3 – Promyelocytic",
"• M4 – Myelomonocytic",
"• M5 – Monoblastic",
"• M6 – Erythroleukemia",
"• M7 – Megakaryoblastic",
"",
"WHO Types:",
"• AML with recurrent genetic abnormalities",
"• AML with myelodysplasia-related changes",
"• Therapy-related AML",
"• AML not otherwise specified",
"• Myeloid sarcoma",
"• Myeloid proliferations related to Down syndrome",
]
all_items = [
"FAB Classification:",
"• ALL-L1: small uniform cells",
"• ALL-L2: large varied cells",
"• ALL-L3: mature medium size cells",
"",
"WHO Types:",
"• B lymphoblastic leukemia/lymphoma",
"• T-lymphoblastic leukemia/lymphoma",
"• Mature B cell leukemia",
"• Early T-cell precursor ALL",
"",
"Key Facts:",
"• B-ALL: 80% of all ALLs",
"• Pre-B ALL: most common type (80%)",
"• >80% long-term survival in pediatric ALL",
"• Adults: only ~40% survival",
]
classification_box(s3, 0.3, "ACUTE MYELOID LEUKEMIA (AML)", aml_items, ACCENT)
classification_box(s3, 4.7, "ACUTE LYMPHOBLASTIC LEUKEMIA (ALL)", all_items, RGBColor(0x14, 0x6E, 0xBE))
# Middle divider
add_rect(s3, 4.5, 1.45, 0.06, 5.7, fill_color=ACCENT)
# Bottom note
add_rect(s3, 0.3, 7.1, 12.73, 0.32, fill_color=DARK_GRAY)
add_text(s3, "Reference: Table 4.13 – AK Tripathi's Medicine | Chapter 4: Hematological System",
0.5, 7.12, 12.5, 0.28, size=10, color=WHITE, italic=True)
print("Slide 3 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 4 – PATHOPHYSIOLOGY
# ═══════════════════════════════════════════════════════════
s4 = prs.slides.add_slide(blank)
slide_bg(s4)
add_header_bar(s4, "Pathophysiology", "Mechanism of Leukemogenesis")
# Left panel
add_rect(s4, 0.3, 1.45, 7.3, 5.75, fill_color=WHITE)
add_rect(s4, 0.3, 1.45, 7.3, 0.05, fill_color=ACCENT)
tb = s4.shapes.add_textbox(Inches(0.45), Inches(1.55), Inches(7.0), Inches(5.5))
tf = tb.text_frame
tf.word_wrap = True
add_para(tf, "Core Mechanism", size=15, bold=True, color=DARK_RED, space_before=2)
add_para(tf, "Various cytogenetic and molecular abnormalities lead to uncontrolled proliferation "
"of immature precursors and their defective maturation and differentiation.", size=12.5, color=DARK_GRAY)
add_para(tf, "", size=5)
add_para(tf, "Key Cellular Events", size=15, bold=True, color=DARK_RED, space_before=2)
add_para(tf, "• Immature cells (Blasts) fail to function normally", size=12.5, color=DARK_GRAY)
add_para(tf, "• Blasts replace the normal hematopoietic system in bone marrow", size=12.5, color=DARK_GRAY)
add_para(tf, "• Result: Cytopenias (low blood counts) and bone pains", size=12.5, color=DARK_GRAY)
add_para(tf, "", size=5)
add_para(tf, "Clinical Consequences of Cytopenias", size=15, bold=True, color=DARK_RED, space_before=2)
cytopenias = [
("Anemia (↓ RBCs)", "Weakness, pallor, fatigue, breathlessness"),
("Neutropenia (↓ WBCs)", "Infections – bacterial and fungal"),
("Thrombocytopenia (↓ Platelets)", "Bleeding manifestations, bruising"),
]
for cell, effect in cytopenias:
add_para(tf, f"• {cell}: {effect}", size=12.5, color=DARK_GRAY)
add_para(tf, "", size=5)
add_para(tf, "• Immunocompromised state further increases risk of infections", size=12, color=DARK_GRAY, italic=True)
# Right panel – image + info boxes
img1 = get_image(1)
add_image_safe(s4, img1, 7.8, 1.45, 5.2, 3.3)
add_rect(s4, 7.8, 4.75, 5.2, 0.55, fill_color=DARK_GRAY)
add_text(s4, "Bone marrow: sheets of leukemic blasts replacing normal cells (AML-M4)",
7.9, 4.78, 5.0, 0.5, size=10.5, color=WHITE, italic=True)
# Info box
add_rect(s4, 7.8, 5.45, 5.2, 1.7, fill_color=PALE_PINK)
add_rect(s4, 7.8, 5.45, 0.1, 1.7, fill_color=ACCENT)
tb2 = s4.shapes.add_textbox(Inches(8.0), Inches(5.5), Inches(4.9), Inches(1.6))
tf2 = tb2.text_frame
tf2.word_wrap = True
add_para(tf2, "Blast Cell Characteristics in AML:", size=13, bold=True, color=DARK_RED)
add_para(tf2, "• 3-5x larger than mature lymphocyte", size=12, color=DARK_GRAY)
add_para(tf2, "• Scant to moderate eosinophilic cytoplasm", size=12, color=DARK_GRAY)
add_para(tf2, "• Multiple prominent nucleoli", size=12, color=DARK_GRAY)
add_para(tf2, "• Auer rods present in ~45% of AML cases", size=12, color=DARK_GRAY, bold=True)
print("Slide 4 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 5 – AML CLINICAL FEATURES
# ═══════════════════════════════════════════════════════════
s5 = prs.slides.add_slide(blank)
slide_bg(s5)
add_header_bar(s5, "Acute Myeloid Leukemia – Clinical Features", "Median Age: 70 years | Acute Onset")
# 3-column card layout
def feature_card(slide, x, y, w, h, icon, heading, text, header_col=ACCENT):
add_rect(slide, x, y, w, h, fill_color=WHITE)
add_rect(slide, x, y, w, 0.5, fill_color=header_col)
add_text(slide, f"{icon} {heading}", x+0.08, y+0.04, w-0.15, 0.42, size=13, bold=True,
color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb = slide.shapes.add_textbox(Inches(x+0.1), Inches(y+0.56), Inches(w-0.2), Inches(h-0.65))
tf = tb.text_frame
tf.word_wrap = True
for line in text:
add_para(tf, line, size=11.5, color=DARK_GRAY)
return tf
cards = [
("🌡", "Fever", [
"Very common in acute leukemia.",
"Manifestation of disease itself",
"OR due to opportunistic infection",
"from functional neutropenia and",
"compromised immune status.",
"Bacterial & fungal infections",
"are common in AML.",
], ACCENT),
("💪", "Weakness / Lethargy", [
"Due to anemia and disease itself.",
"Rapid onset weakness,",
"exertional breathlessness,",
"and loss of stamina.",
], RGBColor(0x6C, 0x35, 0x82)),
("🩸", "Bleeding Symptoms", [
"Due to thrombocytopenia.",
"Severe thrombocytopenia",
"not rare in AML.",
"APML – diffuse bleeding due",
"to DIC (disseminated intravascular",
"coagulopathy).",
], RGBColor(0x17, 0x6B, 0x87)),
("🦴", "Bone Pains", [
"Due to expansion of bone",
"marrow by rapidly proliferative",
"leukemic cells.",
"Rib pain, joint pain & pain in",
"extremities is quite common.",
], RGBColor(0x0D, 0x7A, 0x5F)),
("🔬", "Hyperviscosity", [
"Blast count >1,00,000/cmm OR",
"myelocytic variant >50,000.",
"Visual symptoms, giddiness,",
"breathlessness, confusion &",
"altered mentation.",
], RGBColor(0xC0, 0x7B, 0x1E)),
("🫀", "Other Features", [
"Hepatosplenomegaly",
"Lymphadenopathy",
"Mass lesions & proptosis",
"Myeloid sarcoma",
"Gum hyperplasia (AML M4, M5)",
"due to monocytic infiltration.",
], RGBColor(0x7B, 0x24, 0x1C)),
]
cols = [0.3, 4.55, 8.8]
rows = [1.45, 4.35]
for i, (icon, heading, text, hcol) in enumerate(cards):
cx = cols[i % 3]
cy = rows[i // 3]
feature_card(s5, cx, cy, 4.0, 2.78, icon, heading, text, header_col=hcol)
print("Slide 5 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 6 – AML IMAGES (GUM HYPERPLASIA + BLAST CELLS)
# ═══════════════════════════════════════════════════════════
s6 = prs.slides.add_slide(blank)
slide_bg(s6)
add_header_bar(s6, "AML – Morphological Features & Images", "Fig. 4.12 & 4.13 from AK Tripathi")
# Left: textbook page image (gum + AML microscopy)
img2 = get_image(2) # book page with gum hyperplasia + AML blast image
add_image_safe(s6, img2, 0.3, 1.45, 5.2, 5.75)
# Right content
add_rect(s6, 5.75, 1.45, 7.28, 2.7, fill_color=WHITE)
add_rect(s6, 5.75, 1.45, 7.28, 0.06, fill_color=ACCENT)
tb = s6.shapes.add_textbox(Inches(5.9), Inches(1.55), Inches(7.0), Inches(2.55))
tf = tb.text_frame
tf.word_wrap = True
add_para(tf, "Fig 4.12: Gum Hyperplasia (AML-M5)", size=14, bold=True, color=DARK_RED)
add_para(tf, "• Feature of monocytic leukemia (AML M4 & M5)", size=12, color=DARK_GRAY)
add_para(tf, "• Occurs due to gum infiltration by monocytic cells", size=12, color=DARK_GRAY)
add_para(tf, "• Tender, swollen, red, hypertrophied gingiva", size=12, color=DARK_GRAY)
add_para(tf, "", size=6)
add_para(tf, "Fig 4.13: Acute Myeloid Leukemia (BM)", size=14, bold=True, color=DARK_RED)
add_para(tf, "• Blasts are 3-5x larger than mature lymphocytes", size=12, color=DARK_GRAY)
add_para(tf, "• Scant to moderate eosinophilic cytoplasm", size=12, color=DARK_GRAY)
add_para(tf, "• Multiple prominent nucleoli", size=12, color=DARK_GRAY)
add_para(tf, "• Auer rods present in ~45% AML cases (PATHOGNOMONIC)", size=12, bold=True, color=ACCENT)
add_para(tf, "• Flowcytometry using acute leukemia panel confirms AML", size=12, color=DARK_GRAY)
# Right bottom – AML blood smear image
img0 = get_image(0)
add_image_safe(s6, img0, 5.75, 4.25, 3.8, 2.85)
add_rect(s6, 5.75, 7.1, 3.8, 0.35, fill_color=DARK_GRAY)
add_text(s6, "AML (M2 type) – peripheral blood smear (Wikimedia Commons)",
5.8, 7.12, 3.7, 0.3, size=9.5, color=WHITE, italic=True)
# ASH image bank
img3 = get_image(3)
add_image_safe(s6, img3, 9.75, 4.25, 3.28, 2.85)
add_rect(s6, 9.75, 7.1, 3.28, 0.35, fill_color=DARK_GRAY)
add_text(s6, "AML blast cells – ASH Image Bank",
9.8, 7.12, 3.2, 0.3, size=9.5, color=WHITE, italic=True)
print("Slide 6 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 7 – DIAGNOSIS & WORKUP (Table 4.14)
# ═══════════════════════════════════════════════════════════
s7 = prs.slides.add_slide(blank)
slide_bg(s7)
add_header_bar(s7, "Diagnostic Workup in Acute Leukemia", "Table 4.14 – AK Tripathi")
def col_box(slide, x, title, items, col=ACCENT):
add_rect(slide, x, 1.45, 4.15, 5.85, fill_color=WHITE)
add_rect(slide, x, 1.45, 4.15, 0.5, fill_color=col)
add_text(slide, title, x+0.1, 1.47, 3.95, 0.46, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb = slide.shapes.add_textbox(Inches(x+0.1), Inches(2.02), Inches(3.95), Inches(5.2))
tf = tb.text_frame
tf.word_wrap = True
for item in items:
add_para(tf, item, size=12, color=DARK_GRAY)
return tf
diag_items = [
"Diagnostic & Prognostic:",
"• Complete blood counts + peripheral smear",
"• Bone marrow aspiration and biopsy",
"• Flowcytometry (acute leukemia panel)",
"• Karyotyping",
"• Molecular studies",
"• CSF examination",
"",
"Biochemical Parameters:",
"• Serum LDH",
"• Serum uric acid",
"• Serum electrolytes: Na, K, Ca, PO4",
"• Serum urea/creatinine",
"• Liver function tests",
]
coag_items = [
"Coagulation Parameters:",
"• Prothrombin time (PT)",
"• Activated partial thromboplastin time (aPTT)",
"• FDP, D-Dimer",
"",
"Microbiology:",
"• HbsAg, HCV, HIV",
"",
"Key Investigations:",
"• Flowcytometry is INVESTIGATION OF CHOICE",
" to confirm AML diagnosis",
"• Baseline CSF evaluation important – 5%",
" patients have CNS involvement",
"• TLC >1,00,000/cmm – high risk for",
" Tumor Lysis Syndrome (TLS)",
]
col_box(s7, 0.3, "DIAGNOSTIC WORKUP", diag_items, ACCENT)
col_box(s7, 4.6, "ADDITIONAL TESTS & KEY POINTS", coag_items, RGBColor(0x14, 0x6E, 0xBE))
# Right info box
add_rect(s7, 9.1, 1.45, 4.0, 2.5, fill_color=RGBColor(0x2C, 0x3E, 0x50))
add_rect(s7, 9.1, 1.45, 4.0, 0.5, fill_color=RGBColor(0x0D, 0x7A, 0x5F))
add_text(s7, "Why Flowcytometry?", 9.2, 1.47, 3.8, 0.46, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER)
tb7 = s7.shapes.add_textbox(Inches(9.2), Inches(2.02), Inches(3.8), Inches(1.85))
tf7 = tb7.text_frame
tf7.word_wrap = True
for txt in [
"Identifies surface markers on",
"blast cells (CD markers)",
"Differentiates AML from ALL",
"Determines lineage & subtype",
"Essential for treatment planning",
]:
add_para(tf7, f"• {txt}", size=12, color=WHITE)
# CSF note
add_rect(s7, 9.1, 4.1, 4.0, 3.2, fill_color=PALE_PINK)
add_rect(s7, 9.1, 4.1, 4.0, 0.5, fill_color=DARK_RED)
add_text(s7, "CSF & TLS Notes", 9.2, 4.12, 3.8, 0.46, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER)
tb7b = s7.shapes.add_textbox(Inches(9.2), Inches(4.67), Inches(3.8), Inches(2.55))
tf7b = tb7b.text_frame
tf7b.word_wrap = True
for txt in [
"Baseline CSF evaluation is important:",
"5% patients have CNS involvement",
"requiring CNS-directed therapy",
"",
"Tumor Lysis Syndrome (TLS):",
"High risk if TLC >1,00,000/cmm",
"or with Burkitt leukemia",
"Baseline evaluation recommended",
"for ALL patients",
]:
add_para(tf7b, txt, size=11.5, color=DARK_GRAY)
print("Slide 7 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 8 – RISK STRATIFICATION (Tables 4.15 & 4.17)
# ═══════════════════════════════════════════════════════════
s8 = prs.slides.add_slide(blank)
slide_bg(s8)
add_header_bar(s8, "Risk Stratification", "Tables 4.15 & 4.17 – AML & ALL Cytogenetic Abnormalities")
# AML table
def draw_table_header(slide, x, y, headers, widths, col=ACCENT):
curr_x = x
for h, w in zip(headers, widths):
add_rect(slide, curr_x, y, w, 0.38, fill_color=col)
add_text(slide, h, curr_x+0.03, y+0.03, w-0.06, 0.32, size=10, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
curr_x += w
def draw_table_row(slide, x, y, vals, widths, even=True):
bg = RGBColor(0xF8, 0xF8, 0xF8) if even else WHITE
curr_x = x
for v, w in zip(vals, widths):
add_rect(slide, curr_x, y, w, 0.32, fill_color=bg)
col = ACCENT if v in ["Good", "Very Good"] else (DARK_RED if v in ["Poor", "Very Poor"] else DARK_GRAY)
if v == "Intermediate Risk":
col = RGBColor(0xD4, 0x7B, 0x0D)
add_text(slide, v, curr_x+0.03, y+0.02, w-0.06, 0.28, size=10, color=col,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE,
bold=(v in ["Good", "Very Good", "Poor", "Very Poor", "Intermediate Risk"]))
curr_x += w
# AML risk section
add_rect(s8, 0.3, 1.45, 6.0, 0.45, fill_color=ACCENT)
add_text(s8, "Table 4.15: Risk Stratification – Acute Myeloid Leukemia",
0.35, 1.47, 5.9, 0.41, size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
hdrs = ["Cytogenetics", "Incidence", "Prognosis"]
ws = [2.6, 1.5, 1.7]
draw_table_header(s8, 0.3, 1.9, hdrs, ws, col=DARK_GRAY)
aml_rows = [
("t(8;21)", "8-12%", "Good"),
("t(15;17)", "6-13%", "Very Good"),
("t(16;16)", "-", "Good"),
("Inv 16", "5-12%", "Good"),
("-5, del 5q", "7-10%", "Poor"),
("-7, del 7q", "10-12%", "Very Poor"),
("Normal cytogenetics", "50%", "Intermediate Risk"),
("Complex karyotype", "10-20%", "Very Poor"),
]
for i, row in enumerate(aml_rows):
draw_table_row(s8, 0.3, 2.22 + i*0.32, row, ws, even=(i%2==0))
# Molecular
add_rect(s8, 0.3, 4.82, 6.0, 0.35, fill_color=DARK_GRAY)
add_text(s8, "Molecular Abnormalities", 0.35, 4.84, 5.9, 0.31, size=11, bold=True, color=WHITE)
mol_rows = [
("FLT-3 Mutation", "20-30%", "Poor"),
("NPM-1 Mutation", "20-40%", "Good"),
("CEBPA Biallelic", "5-10%", "Good"),
("C-KIT", "3-5%", "Poor"),
]
for i, row in enumerate(mol_rows):
draw_table_row(s8, 0.3, 5.17 + i*0.32, row, ws, even=(i%2==0))
# ALL risk section
add_rect(s8, 6.6, 1.45, 6.43, 0.45, fill_color=RGBColor(0x14, 0x6E, 0xBE))
add_text(s8, "Table 4.17: Cytogenetic Abnormalities – Acute Lymphoblastic Leukemia",
6.65, 1.47, 6.33, 0.41, size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
all_hdrs = ["Cytogenetic", "Mol. Transcript", "Incidence (Ped.)", "Prognosis"]
all_ws = [1.8, 1.6, 1.5, 1.33]
draw_table_header(s8, 6.6, 1.9, all_hdrs, all_ws, col=DARK_GRAY)
all_rows = [
("t(12;21)", "TEL-AML1", "20-25%", "Good"),
("t(9;22)", "BCR-ABL", "4%", "Very poor"),
("t(4;11)", "MLL-AF4", "8%", "Very poor"),
("t(8;14)", "IgH/MYC", "2%", "Good"),
("Hyperdiploidy", "-", "20-25%", "Good"),
("Hypodiploidy", "-", "6%", "Poor"),
]
for i, row in enumerate(all_rows):
draw_table_row(s8, 6.6, 2.22 + i*0.32, row, all_ws, even=(i%2==0))
# Prognostic note
add_rect(s8, 6.6, 4.3, 6.43, 2.9, fill_color=PALE_PINK)
add_rect(s8, 6.6, 4.3, 0.1, 2.9, fill_color=RGBColor(0x14, 0x6E, 0xBE))
tb8 = s8.shapes.add_textbox(Inches(6.8), Inches(4.36), Inches(6.1), Inches(2.75))
tf8 = tb8.text_frame
tf8.word_wrap = True
add_para(tf8, "Overall Survival (OS) in AML:", size=12, bold=True, color=DARK_RED)
add_para(tf8, "• Overall OS ranges from 30-40%", size=11.5, color=DARK_GRAY)
add_para(tf8, "• Good risk patients: OS 50-60%", size=11.5, color=DARK_GRAY)
add_para(tf8, "• Poor risk patients: survival 10-20%", size=11.5, color=DARK_GRAY)
add_para(tf8, "• Age, performance status & comorbidities also impact prognosis", size=11.5, color=DARK_GRAY)
add_para(tf8, "", size=5)
add_para(tf8, "Philadelphia Chromosome (Ph+) in ALL:", size=12, bold=True, color=DARK_RED)
add_para(tf8, "• t(9;22) BCR-ABL – very poor prognosis (4%)", size=11.5, color=DARK_GRAY)
add_para(tf8, "• Benefits from TKI addition (Imatinib, Nilotinib, Dasatinib)", size=11.5, color=DARK_GRAY)
print("Slide 8 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 9 – TREATMENT OF AML
# ═══════════════════════════════════════════════════════════
s9 = prs.slides.add_slide(blank)
slide_bg(s9)
add_header_bar(s9, "Treatment of Acute Myeloid Leukemia", "Counseling → Supportive Care → Specific Treatment")
# Supportive care box
add_rect(s9, 0.3, 1.45, 6.0, 5.85, fill_color=WHITE)
add_rect(s9, 0.3, 1.45, 6.0, 0.5, fill_color=DARK_GRAY)
add_text(s9, "SUPPORTIVE TREATMENT", 0.4, 1.47, 5.8, 0.46, size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb9a = s9.shapes.add_textbox(Inches(0.45), Inches(2.02), Inches(5.75), Inches(5.2))
tf9a = tb9a.text_frame
tf9a.word_wrap = True
add_para(tf9a, "Anemia Management:", size=13, bold=True, color=DARK_RED)
add_para(tf9a, "• Transfusion of packed RBCs – target Hb ≥8 g/dL", size=12, color=DARK_GRAY)
add_para(tf9a, "", size=4)
add_para(tf9a, "Thrombocytopenia:", size=13, bold=True, color=DARK_RED)
add_para(tf9a, "• Platelet transfusion if count <10,000/cmm", size=12, color=DARK_GRAY)
add_para(tf9a, " OR <20,000 with fever/bleeding", size=12, color=DARK_GRAY)
add_para(tf9a, "• Use SDP (1 unit) or RDP (4-6 units)", size=12, color=DARK_GRAY)
add_para(tf9a, "", size=4)
add_para(tf9a, "Infection Management:", size=13, bold=True, color=DARK_RED)
add_para(tf9a, "• Blood cultures before starting antibiotics", size=12, color=DARK_GRAY)
add_para(tf9a, "• Empirical broad-spectrum antibiotics immediately", size=12, color=DARK_GRAY)
add_para(tf9a, "• Prophylaxis: Allopurinol/Febuxostat, Rasburicase", size=12, color=DARK_GRAY)
add_para(tf9a, "• Antibiotic + Antiviral prophylaxis to be started", size=12, color=DARK_GRAY)
add_para(tf9a, "", size=4)
add_para(tf9a, "Tumor Lysis Prophylaxis:", size=13, bold=True, color=DARK_RED)
add_para(tf9a, "• Hydration, Allopurinol/Rasburicase", size=12, color=DARK_GRAY)
add_para(tf9a, "• Blood component support as indicated", size=12, color=DARK_GRAY)
# Specific treatment box
add_rect(s9, 6.6, 1.45, 6.43, 5.85, fill_color=WHITE)
add_rect(s9, 6.6, 1.45, 6.43, 0.5, fill_color=ACCENT)
add_text(s9, "SPECIFIC TREATMENT", 6.7, 1.47, 6.23, 0.46, size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb9b = s9.shapes.add_textbox(Inches(6.75), Inches(2.02), Inches(6.1), Inches(5.2))
tf9b = tb9b.text_frame
tf9b.word_wrap = True
add_para(tf9b, "Treatment depends on: Age, Performance Status,", size=12, color=DARK_GRAY, italic=True)
add_para(tf9b, "Cytogenetics & Molecular Abnormalities", size=12, color=DARK_GRAY, italic=True)
add_para(tf9b, "", size=5)
add_para(tf9b, "Induction Chemotherapy:", size=13, bold=True, color=DARK_RED)
add_para(tf9b, "• Standard: 3+7 Protocol", size=12, color=DARK_GRAY, bold=True)
add_para(tf9b, "• Daunorubicin + Cytarabine (7 days)", size=12, color=DARK_GRAY)
add_para(tf9b, "", size=4)
add_para(tf9b, "Consolidation:", size=13, bold=True, color=DARK_RED)
add_para(tf9b, "• 3-4 cycles with high-dose Cytosine Arabinoside", size=12, color=DARK_GRAY)
add_para(tf9b, "", size=4)
add_para(tf9b, "High-risk Patients:", size=13, bold=True, color=DARK_RED)
add_para(tf9b, "• Allogeneic stem cell transplant after induction", size=12, color=DARK_GRAY)
add_para(tf9b, "", size=4)
add_para(tf9b, "Targeted Therapies:", size=13, bold=True, color=DARK_RED)
add_para(tf9b, "• FLT-3 inhibitors, C-Kit inhibitors", size=12, color=DARK_GRAY)
add_para(tf9b, "• Demethylating agents: Azacitidine, Decitabine", size=12, color=DARK_GRAY)
add_para(tf9b, "• Low-dose Cytarabine (for elderly/comorbidities)", size=12, color=DARK_GRAY)
add_para(tf9b, "", size=4)
add_para(tf9b, "Drugs Used (Table 4.16):", size=13, bold=True, color=DARK_RED)
for d in ["Daunorubicin", "Cytosine arabinoside", "Etoposide", "All-trans retinoic acid (AML-M3)"]:
add_para(tf9b, f"• {d}", size=12, color=DARK_GRAY)
print("Slide 9 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 10 – ALL CLINICAL FEATURES & DIAGNOSIS
# ═══════════════════════════════════════════════════════════
s10 = prs.slides.add_slide(blank)
slide_bg(s10)
add_header_bar(s10, "Acute Lymphoblastic Leukemia (ALL)", "Clinical Presentation & Diagnosis")
# Left col: clinical features
add_rect(s10, 0.3, 1.45, 6.0, 5.85, fill_color=WHITE)
add_rect(s10, 0.3, 1.45, 6.0, 0.5, fill_color=RGBColor(0x14, 0x6E, 0xBE))
add_text(s10, "CLINICAL PRESENTATION", 0.4, 1.47, 5.8, 0.46, size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb10a = s10.shapes.add_textbox(Inches(0.45), Inches(2.02), Inches(5.75), Inches(5.2))
tf10a = tb10a.text_frame
tf10a.word_wrap = True
add_para(tf10a, "Most Common Pediatric Leukemia", size=13, bold=True, color=DARK_RED)
add_para(tf10a, "Two types: B-ALL (80%) and T-ALL", size=12, color=DARK_GRAY)
add_para(tf10a, "", size=5)
add_para(tf10a, "Symptoms:", size=13, bold=True, color=DARK_RED)
for sym in [
"Weakness & lethargy",
"Fever",
"Bleeding manifestations",
"Swellings in neck and armpits",
"Bone and joint pain (common in pediatric patients)",
]:
add_para(tf10a, f"• {sym}", size=12, color=DARK_GRAY)
add_para(tf10a, "", size=5)
add_para(tf10a, "Clinical Examination Findings:", size=13, bold=True, color=DARK_RED)
for finding in [
"Pallor",
"Lymphadenopathy",
"Variable hepatosplenomegaly",
"Bone tenderness",
]:
add_para(tf10a, f"• {finding}", size=12, color=DARK_GRAY)
add_para(tf10a, "", size=5)
add_para(tf10a, "Lymphoblast Characteristics:", size=13, bold=True, color=DARK_RED)
add_para(tf10a, "• 2-3x larger than mature lymphocytes", size=12, color=DARK_GRAY)
add_para(tf10a, "• Very high N:C ratio", size=12, color=DARK_GRAY)
add_para(tf10a, "• Scant basophilic agranular cytoplasm", size=12, color=DARK_GRAY)
add_para(tf10a, "• Inconspicuous nucleoli", size=12, color=DARK_GRAY)
# Right col: diagnosis
add_rect(s10, 6.6, 1.45, 6.43, 5.85, fill_color=WHITE)
add_rect(s10, 6.6, 1.45, 6.43, 0.5, fill_color=DARK_GRAY)
add_text(s10, "DIAGNOSIS & RISK STRATIFICATION", 6.7, 1.47, 6.23, 0.46, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb10b = s10.shapes.add_textbox(Inches(6.75), Inches(2.02), Inches(6.1), Inches(5.2))
tf10b = tb10b.text_frame
tf10b.word_wrap = True
add_para(tf10b, "Diagnostic Workup:", size=13, bold=True, color=DARK_RED)
add_para(tf10b, "Similar to AML including:", size=12, color=DARK_GRAY, italic=True)
for d in ["CBC & peripheral smear", "Bone marrow evaluation", "Flowcytometry",
"CSF analysis", "Cytogenetics & molecular studies"]:
add_para(tf10b, f"• {d}", size=12, color=DARK_GRAY)
add_para(tf10b, "", size=5)
add_para(tf10b, "Key Investigation Points:", size=13, bold=True, color=DARK_RED)
add_para(tf10b, "• Flowcytometry helps diagnose ALL and subtype it", size=12, color=DARK_GRAY)
add_para(tf10b, "• Baseline TLC evaluation – risk of TLS", size=12, color=DARK_GRAY)
add_para(tf10b, " (High TLC >1,00,000/cmm)", size=12, color=DARK_GRAY)
add_para(tf10b, "• Burkitt leukemia: high TLS risk", size=12, color=DARK_GRAY)
add_para(tf10b, "• Baseline CSF: 5% have CNS involvement", size=12, color=DARK_GRAY)
add_para(tf10b, "", size=5)
add_para(tf10b, "Prognosis:", size=13, bold=True, color=DARK_RED)
add_para(tf10b, "• Pediatric ALL: >80% long-term survival (cure)", size=12, bold=True, color=RGBColor(0x0D, 0x7A, 0x5F))
add_para(tf10b, "• Adults: poor – only ~40% survival", size=12, bold=True, color=DARK_RED)
add_para(tf10b, "", size=5)
add_para(tf10b, "High-Risk Features:", size=13, bold=True, color=DARK_RED)
for hr in [
"Age <1 yr or >10 yrs",
"WBC >50,000/cmm at presentation",
"CNS or testicular involvement",
"Philadelphia chromosome t(9;22)",
"Hypodiploidy",
"Poor response to induction",
]:
add_para(tf10b, f"• {hr}", size=12, color=DARK_GRAY)
print("Slide 10 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 11 – TREATMENT OF ALL
# ═══════════════════════════════════════════════════════════
s11 = prs.slides.add_slide(blank)
slide_bg(s11)
add_header_bar(s11, "Treatment of Acute Lymphoblastic Leukemia", "Pediatric & Adult Protocols")
# Three phase boxes
def phase_box(slide, x, title, items, col):
add_rect(slide, x, 1.45, 3.85, 5.85, fill_color=WHITE)
add_rect(slide, x, 1.45, 3.85, 0.5, fill_color=col)
add_text(slide, title, x+0.1, 1.47, 3.65, 0.46, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb = slide.shapes.add_textbox(Inches(x+0.1), Inches(2.02), Inches(3.65), Inches(5.2))
tf = tb.text_frame
tf.word_wrap = True
for item in items:
is_heading = item.endswith(":")
add_para(tf, item, size=12 if not is_heading else 13,
bold=is_heading, color=DARK_RED if is_heading else DARK_GRAY)
return tf
phase_box(s11, 0.3, "INDUCTION", [
"Protocols:",
"MCP-841, BFM-95, BFM 2002, UKALL",
"",
"Duration: ~2.5 years total",
"",
"Drugs include:",
"• Dexamethasone/Prednisolone",
"• Anthracycline (Daunorubicin)",
"• Vincristine",
"• L-Asparaginase",
"",
"Goal:",
"Reduce disease burden to minimum",
"Achieve complete remission",
], RGBColor(0x14, 0x6E, 0xBE))
phase_box(s11, 4.45, "CONSOLIDATION", [
"Purpose:",
"Further boost response achieved",
"by induction chemotherapy",
"Eradicate resistant clones",
"",
"Drugs:",
"• High-dose Methotrexate",
"• High-dose Cytarabine",
"",
"High-risk patients:",
"Allogeneic stem cell transplant",
"(2nd complete remission)",
"",
"Philadelphia+ patients:",
"Add TKIs (Imatinib/Nilotinib/",
"Dasatinib)",
], RGBColor(0x0D, 0x7A, 0x5F))
phase_box(s11, 8.6, "MAINTENANCE &\nCNS THERAPY", [
"Long-term Maintenance:",
"• 6-Mercaptopurine (6-MP)",
"• Oral Methotrexate",
"Prevents relapse at sanctuary sites",
"",
"CNS-Directed Therapy:",
"Intrathecal therapy to prevent",
"CNS relapse",
"",
"Options:",
"• Single agent: Methotrexate",
"• Triple agent: Methotrexate +",
" Cytarabine + Hydrocortisone",
"",
"Cranial Radiotherapy:",
"12-18 Gy – planned per protocol",
"to prevent CNS relapse",
], RGBColor(0x6C, 0x35, 0x82))
print("Slide 11 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 12 – DRUGS TABLE (Table 4.16)
# ═══════════════════════════════════════════════════════════
s12 = prs.slides.add_slide(blank)
slide_bg(s12)
add_header_bar(s12, "Drugs Commonly Used to Treat Acute Leukemias", "Table 4.16 – AK Tripathi")
# AML drugs box
add_rect(s12, 0.3, 1.45, 5.9, 5.85, fill_color=WHITE)
add_rect(s12, 0.3, 1.45, 5.9, 0.5, fill_color=ACCENT)
add_text(s12, "ACUTE MYELOID LEUKEMIA (AML)", 0.4, 1.47, 5.7, 0.46, size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
aml_drugs = [
("Daunorubicin", "Anthracycline antibiotic – DNA intercalator", "Induction (3+7 protocol)"),
("Cytosine Arabinoside\n(Cytarabine, Ara-C)", "Pyrimidine antimetabolite – inhibits DNA synthesis", "Induction & Consolidation"),
("Etoposide", "Topoisomerase II inhibitor", "Salvage therapy"),
("All-trans Retinoic Acid\n(ATRA)*", "Vitamin A analog – induces differentiation of promyelocytes", "AML-M3 (APML) specific"),
]
y_pos = 2.05
for drug, mech, use in aml_drugs:
add_rect(s12, 0.35, y_pos, 5.8, 0.38, fill_color=RGBColor(0xFD, 0xED, 0xEC))
add_text(s12, drug, 0.45, y_pos+0.02, 1.6, 0.34, size=11.5, bold=True, color=DARK_RED,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s12, mech, 2.1, y_pos+0.02, 2.5, 0.34, size=10, color=DARK_GRAY,
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
add_text(s12, use, 4.65, y_pos+0.02, 1.45, 0.34, size=10, color=RGBColor(0x14, 0x6E, 0xBE),
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
y_pos += 0.42
add_text(s12, "*ATRA is a Vitamin A analog used specifically in treatment of AML-M3 (APML)",
0.45, 3.8, 5.7, 0.45, size=10, color=DARK_GRAY, italic=True, wrap=True)
# ALL drugs box
add_rect(s12, 6.5, 1.45, 6.53, 5.85, fill_color=WHITE)
add_rect(s12, 6.5, 1.45, 6.53, 0.5, fill_color=RGBColor(0x14, 0x6E, 0xBE))
add_text(s12, "ACUTE LYMPHOBLASTIC LEUKEMIA (ALL)", 6.6, 1.47, 6.33, 0.46, size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
all_drugs = [
("Vincristine", "Vinca alkaloid – inhibits microtubule formation", "Induction backbone"),
("Prednisolone", "Corticosteroid – lympholytic", "Induction backbone"),
("Daunorubicin", "Anthracycline antibiotic", "Induction"),
("L-Asparaginase", "Enzyme – depletes asparagine (lymphoblasts cannot synthesize it)", "Induction (specific to ALL)"),
("Methotrexate", "DHFR inhibitor – antifolate", "Induction + CNS + Maintenance"),
("Etoposide", "Topoisomerase II inhibitor", "Intensification"),
("Cytosine Arabinoside", "Pyrimidine antimetabolite", "Consolidation + CNS"),
("6-Mercaptopurine\n(6-MP)", "Purine analog – antimetabolite", "Maintenance (long-term)"),
]
y_pos = 2.05
for drug, mech, use in all_drugs:
add_rect(s12, 6.55, y_pos, 6.43, 0.38, fill_color=RGBColor(0xEB, 0xF5, 0xFB))
add_text(s12, drug, 6.65, y_pos+0.02, 1.8, 0.34, size=11, bold=True, color=RGBColor(0x14, 0x6E, 0xBE),
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s12, mech, 8.5, y_pos+0.02, 2.9, 0.34, size=9.5, color=DARK_GRAY,
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
add_text(s12, use, 11.45, y_pos+0.02, 1.45, 0.34, size=9.5, color=RGBColor(0x0D, 0x7A, 0x5F),
v_anchor=MSO_ANCHOR.MIDDLE, wrap=True)
y_pos += 0.42
print("Slide 12 done")
# ═══════════════════════════════════════════════════════════
# SLIDE 13 – SUMMARY / KEY POINTS
# ═══════════════════════════════════════════════════════════
s13 = prs.slides.add_slide(blank)
add_rect(s13, 0, 0, 13.333, 7.5, fill_color=DARK_BG)
add_rect(s13, 0, 0, 13.333, 1.35, fill_color=DARK_GRAY)
add_rect(s13, 0, 1.35, 13.333, 0.07, fill_color=ACCENT)
add_text(s13, "KEY TAKEAWAYS – ACUTE LEUKEMIA", 0.3, 0.1, 12.0, 0.8, size=30, bold=True, color=WHITE)
add_text(s13, "AK Tripathi's Medicine Summary", 0.3, 0.85, 12.0, 0.45, size=14, italic=True, color=GOLD)
key_points = [
("Definition", "Acute leukemia = >20% blasts in blood/bone marrow. AML commonest in adults (median age 70); ALL in children (80% of pediatric leukemias)."),
("Pathophysiology", "Cytogenetic/molecular abnormalities → uncontrolled blast proliferation → cytopenias (anemia, infections, bleeding) + bone pain."),
("AML Diagnosis", "Flowcytometry (investigation of choice). Auer rods in ~45% AML. Baseline CBC, BMA, karyotyping, molecular studies essential."),
("AML Treatment", "Induction: 3+7 (Daunorubicin + Cytarabine). Consolidation: High-dose AraC. High-risk: Allogeneic SCT. Ph+: TKIs."),
("ALL Features", "Weakness, fever, lymphadenopathy, hepatosplenomegaly, bone tenderness. B-ALL 80%; T-ALL 20%. Lymphoblasts 2-3x lymphocyte size."),
("ALL Treatment", "Protocols: MCP-841, BFM-95/2002, UKALL. Three phases: Induction → Consolidation → Maintenance (~2.5 years). CNS: IT Methotrexate ± RT 12-18 Gy."),
]
col_positions = [0.3, 6.8]
for i, (heading, content) in enumerate(key_points):
col = i % 2
row = i // 2
x = col_positions[col]
y = 1.55 + row * 1.85
add_rect(s13, x, y, 6.1, 1.7, fill_color=RGBColor(0x2C, 0x2C, 0x54))
add_rect(s13, x, y, 6.1, 0.42, fill_color=ACCENT if col == 0 else RGBColor(0x14, 0x6E, 0xBE))
add_text(s13, heading, x+0.1, y+0.04, 5.9, 0.34, size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb = s13.shapes.add_textbox(Inches(x+0.1), Inches(y+0.48), Inches(5.9), Inches(1.18))
tf = tb.text_frame
tf.word_wrap = True
add_para(tf, content, size=11.5, color=RGBColor(0xCC, 0xCC, 0xEE))
add_rect(s13, 0, 7.25, 13.333, 0.25, fill_color=RGBColor(0x11, 0x11, 0x22))
add_text(s13, "Source: AK Tripathi's Medicine – Chapter 4: Hematological System",
0.3, 7.27, 12.0, 0.21, size=10, color=RGBColor(0x88, 0x88, 0xAA), italic=True)
print("Slide 13 done")
# ═══════════════════════════════════════════════════════════
# SAVE
# ═══════════════════════════════════════════════════════════
out_path = "/tmp/workspace/acute-leukemia-ppt/Acute_Leukemia_AK_Tripathi.pptx"
prs.save(out_path)
print(f"\nPresentation saved: {out_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/acute-leukemia-ppt && python create_ppt.py 2>&1
ls -lh /tmp/workspace/acute-leukemia-ppt/Acute_Leukemia_AK_Tripathi.pptx
Acute Leukemia AK Tripathi
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title Slide - with AML blood smear image |
| 2 | Definition & Overview - with AML microscopy image |
| 3 | Classification (Table 4.13) - FAB (M0-M7) & WHO types for AML & ALL |
| 4 | Pathophysiology - with bone marrow blast image (St. Jude) |
| 5 | AML Clinical Features - 6 feature cards (Fever, Weakness, Bleeding, Bone Pain, Hyperviscosity, Others) |
| 6 | AML Morphological Images - Gum hyperplasia (Fig 4.12) + AML blast cells (Fig 4.13) from your book page |
| 7 | Diagnostic Workup (Table 4.14) - all investigations + flowcytometry/CSF/TLS notes |
| 8 | Risk Stratification (Tables 4.15 & 4.17) - AML & ALL cytogenetic tables with prognosis |
| 9 | AML Treatment - Supportive care + 3+7 protocol + targeted therapies |
| 10 | ALL Clinical Features & Diagnosis - B-ALL vs T-ALL, lymphoblast characteristics |
| 11 | ALL Treatment - Induction, Consolidation, Maintenance & CNS-directed therapy |
| 12 | Drugs Table (Table 4.16) - AML & ALL drugs with mechanisms and clinical use |
| 13 | Key Takeaways Summary slide |