Make anemia 10 slide pot
Make anemia 20 slide ppt
peripheral blood smear iron deficiency anemia microcytic hypochromic red cells
sickle cell anemia peripheral blood smear
megaloblastic anemia hypersegmented neutrophil bone marrow
sickle cell red blood cells

A multi-panel medical illustration and data graphic comparing normal hemoglobin and sickle cell disease (SCD) hemoglobin. (a) A 3D schematic of a bifurcating blood vessel showing the movement of red blood cells. (b, c) Magnified views contrasting the flexible, biconcave disc morphology of normal hemoglobin with the rigid, elongated, crescent or sickle shape characteristic of SCD hemoglobin, illustrating the mechanism for vascular occlusion. (d, e) Ball-and-stick molecular models detailing Heme (with Fe2+) and Sickle Heme (associated with Fe3+), emphasizing structural differences at the molecular level. (f) A comparative fluorescence spectrum plot showing Protoporphyrin (black), Sickle-cell Disease Hemoglobin (red), and Normal Hemoglobin (blue) across wavelengths of 610–690 nm. The graph highlights diagnostic spectral shifts: Protoporphyrin peaks at ~628.1 nm, while hemoglobin variants show distinctive primary peaks at ~672.5 nm and secondary peaks showing shifts (629.5 nm for normal vs. 633.8 nm for sickle). This composite image serves to correlate clinical hematology, cellular morphology, and molecular spectroscopy in the study of Sickle Cell Anemia.

A comparison chart containing a series of multi-panel plots displaying Cell Tracking Velocimetry (CTV) data for red blood cells (RBCs). Panel A shows data from four healthy donors (M1, M2, F1, F2), while Panel B shows data from three Sickle Cell Disease (SCD) donors (SCD4, SCD5, SCD6). Each donor's sub-plot features a central scatter plot showing the relationship between magnetic velocity (um, x-axis) and settling velocity (us, y-axis), flanked by marginal histograms with overlaid cumulative distribution curves. Data are color-coded by paramagnetic preparation method: sodium nitrite (black), sodium dithionite (red), and Oxyrase (green). In healthy donors, the RBC populations exhibit tight, clustered distributions with minimal variability. In contrast, SCD donor plots show significantly wider scatter and broader histograms, indicating greater heterogeneity in cell size and hemoglobin content. The SCD scatter plots demonstrate a positive correlation between um and us, suggesting that smaller or less dense sickle cells possess lower magnetic mobility and reduced intracellular hemoglobin compared to larger, denser cells.

This clinical photograph displays a close-up view of a pediatric patient's hand demonstrating dactylitis, a hallmark clinical sign of sickle cell disease (SCD) often referred to as 'hand-foot syndrome.' The image shows marked, diffuse swelling of the second and third digits, characterized by a 'sausage-like' appearance. The fingers appear edematous and bulbous, particularly around the proximal interphalangeal (PIP) joints, with taut, shiny overlying skin indicating acute soft tissue inflammation. The nail beds exhibit slight pallor, consistent with the patient's associated severe anemia. Clinically, this presentation represents a vaso-occlusive crisis where sickle-shaped red blood cells obstruct small capillaries in the phalanges, leading to ischemia and painful infarction of the bone marrow and periosteum. This visual is a classic educational example of early-onset skeletal complications in toddlers with sickle cell anemia, illustrating the inflammatory response to microvascular occlusion in the extremities.
anemia pallor conjunctiva clinical photo
mkdir -p /tmp/workspace/anemia-ppt/output && ls -la /tmp/workspace
Quick answer
Make anemia 20 slide ppt
~/anemia-ppt
mkdir -p /tmp/workspace/anemia-ppt/output && mkdir -p /tmp/workspace/anemia-ppt/assets && python /tmp/skills/shared/scripts/fetch_images.py "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4611d6477c633cd420dba36af573ddbcefe3cb44fbf43ac678977089a4dda30e.jpg" "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_478fff5694e06eccc25fc038a64fe8d506be89b6aca140fdfc6fd76e486acaa2.jpg" > /tmp/workspace/anemia-ppt/assets/images.json && python3 -c " import json data = json.load(open('/tmp/workspace/anemia-ppt/assets/images.json')) for i, d in enumerate(data): print(i, d['url'][:60], 'OK' if d['base64'] else d['error']) "
~/anemia-ppt/build_ppt.py
#!/usr/bin/env python3
import json, base64, os
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.enum.shapes import MSO_SHAPE
ASSETS = "/tmp/workspace/anemia-ppt/assets"
OUT = "/tmp/workspace/anemia-ppt/output/Anemia_Overview.pptx"
# ---- decode images ----
imgs = json.load(open(os.path.join(ASSETS, "images.json")))
img_paths = []
for i, d in enumerate(imgs):
if d["base64"]:
raw = base64.b64decode(d["base64"].split(",", 1)[1])
p = os.path.join(ASSETS, f"img{i}.jpg")
with open(p, "wb") as f:
f.write(raw)
img_paths.append(p)
else:
img_paths.append(None)
HB_IMG, SICKLE_HAND_IMG = img_paths[0], img_paths[1]
# ---- palette ----
NAVY = RGBColor(0x1B, 0x2A, 0x4A)
RED = RGBColor(0xA8, 0x1D, 0x2B)
LIGHT = RGBColor(0xF4, 0xF2, 0xEC)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GRAY = RGBColor(0x55, 0x5A, 0x63)
ACCENT = RGBColor(0xC9, 0x8A, 0x2A)
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 bg(slide, color=WHITE):
slide.background.fill.solid()
slide.background.fill.fore_color.rgb = color
def rect(slide, x, y, w, h, color, line=False):
sh = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, y, w, h)
sh.fill.solid()
sh.fill.fore_color.rgb = color
if line:
sh.line.color.rgb = color
else:
sh.line.fill.background()
sh.shadow.inherit = False
return sh
def textbox(slide, x, y, w, h, text, size=18, color=NAVY, bold=False, italic=False,
align=PP_ALIGN.LEFT, font="Calibri", anchor=None, line_spacing=1.0):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
if anchor:
tf.vertical_anchor = anchor
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom = 0
lines = text.split("\n")
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = line
p.alignment = align
p.line_spacing = line_spacing
for r in p.runs:
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 bullets(slide, x, y, w, h, items, size=16, color=NAVY, bold_first=False,
font="Calibri", space_after=10, bullet_color=ACCENT):
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
for i, item in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(space_after)
p.line_spacing = 1.05
if isinstance(item, tuple):
head, rest = item
r1 = p.add_run()
r1.text = f"{head} "
r1.font.bold = True
r1.font.size = Pt(size)
r1.font.color.rgb = ACCENT if bold_first else color
r1.font.name = font
r2 = p.add_run()
r2.text = rest
r2.font.size = Pt(size)
r2.font.color.rgb = color
r2.font.name = font
else:
r = p.add_run()
r.text = "• " + item
r.font.size = Pt(size)
r.font.color.rgb = color
r.font.name = font
return tb
def header(slide, kicker, title, dark=False):
bg(slide, NAVY if dark else WHITE)
rect(slide, 0, 0, SW, Inches(0.12), ACCENT)
tcolor = WHITE if dark else NAVY
kcolor = ACCENT
textbox(slide, Inches(0.6), Inches(0.35), Inches(10), Inches(0.35),
kicker.upper(), size=13, color=kcolor, bold=True)
textbox(slide, Inches(0.6), Inches(0.68), Inches(11.8), Inches(0.9),
title, size=30, color=tcolor, bold=True)
rect(slide, Inches(0.6), Inches(1.5), Inches(1.3), Pt(3), ACCENT)
def footer(slide, num, dark=False):
color = RGBColor(0xB8, 0xBE, 0xC8) if dark else GRAY
textbox(slide, Inches(0.6), Inches(7.12), Inches(4), Inches(0.3),
"Anemia: Overview, Classification & Management", size=10, color=color)
textbox(slide, Inches(12.3), Inches(7.12), Inches(0.5), Inches(0.3),
str(num), size=10, color=color, align=PP_ALIGN.RIGHT)
def add_pic(slide, path, x, y, w=None, h=None):
if path and os.path.exists(path):
return slide.shapes.add_picture(path, x, y, width=w, height=h)
return None
def caption(slide, x, y, w, text):
textbox(slide, x, y, w, Inches(0.4), text, size=11, color=GRAY, italic=True,
align=PP_ALIGN.CENTER)
# =====================================================================
# SLIDE 1 — TITLE
# =====================================================================
s = add_slide()
bg(s, NAVY)
rect(s, 0, 0, SW, Inches(7.5), NAVY)
rect(s, 0, Inches(6.9), SW, Inches(0.6), RED)
rect(s, 0, Inches(6.85), SW, Pt(2), ACCENT)
textbox(s, Inches(1), Inches(2.3), Inches(11.3), Inches(0.5), "HEMATOLOGY",
size=18, color=ACCENT, bold=True, align=PP_ALIGN.CENTER)
textbox(s, Inches(1), Inches(2.85), Inches(11.3), Inches(1.3), "Anemia",
size=66, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
textbox(s, Inches(1), Inches(4.05), Inches(11.3), Inches(0.6),
"Definition, Classification, Diagnosis and Management",
size=22, color=RGBColor(0xE3, 0xE6, 0xEC), align=PP_ALIGN.CENTER)
rect(s, Inches(5.67), Inches(4.85), Inches(2), Pt(3), ACCENT)
textbox(s, Inches(1), Inches(6.95), Inches(11.3), Inches(0.4),
"Medical Education Series", size=13, color=RGBColor(0xB8, 0xBE, 0xC8),
align=PP_ALIGN.CENTER)
# =====================================================================
# SLIDE 2 — Agenda
# =====================================================================
s = add_slide()
header(s, "Overview", "What We'll Cover")
agenda = [
"Definition, epidemiology and burden of disease",
"Pathophysiology: 3 core mechanisms of anemia",
"Classification by mean corpuscular volume (MCV)",
"Clinical features, signs and complications",
"Diagnostic work-up: labs, smear, algorithm",
"Microcytic anemias — iron deficiency, thalassemia",
"Macrocytic anemias — B12/folate deficiency",
"Normocytic anemias — hemolytic & aplastic anemia",
"Hemoglobinopathies — sickle cell disease",
"Management summary and key takeaways",
]
left = agenda[:5]
right = agenda[5:]
bullets(s, Inches(0.7), Inches(1.9), Inches(5.8), Inches(4.8), left, size=17, space_after=18)
bullets(s, Inches(6.8), Inches(1.9), Inches(5.8), Inches(4.8), right, size=17, space_after=18)
footer(s, 2)
# =====================================================================
# SLIDE 3 — Definition
# =====================================================================
s = add_slide()
header(s, "Fundamentals", "What Is Anemia?")
textbox(s, Inches(0.6), Inches(1.8), Inches(7.3), Inches(1.3),
"A reduction in red blood cell mass, hemoglobin concentration, or "
"oxygen-carrying capacity of blood below normal for age and sex, "
"leading to impaired tissue oxygen delivery.",
size=18, color=NAVY, line_spacing=1.2)
rect(s, Inches(0.6), Inches(3.3), Inches(7.3), Pt(2), RGBColor(0xDD,0xDD,0xDD))
bullets(s, Inches(0.6), Inches(3.55), Inches(7.3), Inches(3), [
("WHO threshold (men):", "Hemoglobin < 13 g/dL"),
("WHO threshold (women):", "Hemoglobin < 12 g/dL"),
("WHO threshold (pregnancy):", "Hemoglobin < 11 g/dL"),
("Not a diagnosis:", "always a sign of an underlying disease process"),
], size=16, space_after=14)
rect(s, Inches(8.3), Inches(1.8), Inches(4.4), Inches(4.9), LIGHT)
textbox(s, Inches(8.6), Inches(2.0), Inches(3.8), Inches(0.4), "QUICK FACTS", size=13, color=ACCENT, bold=True)
bullets(s, Inches(8.6), Inches(2.5), Inches(3.9), Inches(4), [
"Most common blood disorder worldwide",
"Affects ~1/4 of the global population (WHO)",
"Iron deficiency is the leading cause globally",
"Highest burden in preschool children and women of reproductive age",
], size=14, space_after=14)
footer(s, 3)
# =====================================================================
# SLIDE 4 — Pathophysiology (3 mechanisms)
# =====================================================================
s = add_slide()
header(s, "Pathophysiology", "Three Core Mechanisms")
mechs = [
("Decreased Production", "Bone marrow failure, nutrient deficiency (iron, B12, folate), chronic disease, renal disease (low EPO), marrow infiltration", RED),
("Increased Destruction", "Hemolysis — intrinsic (membrane, enzyme, hemoglobin defects) or extrinsic (immune, mechanical, infectious)", ACCENT),
("Blood Loss", "Acute hemorrhage or chronic occult loss (GI, menstrual) — most common cause of iron deficiency anemia", NAVY),
]
x0 = Inches(0.6)
w = Inches(3.95)
gap = Inches(0.2)
for i, (t, d, c) in enumerate(mechs):
x = Inches(0.6) + i * (Inches(4.0) + Inches(0.15))
rect(s, x, Inches(1.85), Inches(3.95), Inches(0.15), c)
rect(s, x, Inches(2.0), Inches(3.95), Inches(3.6), LIGHT)
textbox(s, x + Inches(0.25), Inches(2.25), Inches(3.45), Inches(0.7), t, size=19, color=c, bold=True)
textbox(s, x + Inches(0.25), Inches(3.0), Inches(3.45), Inches(2.4), d, size=14.5, color=NAVY, line_spacing=1.25)
textbox(s, Inches(0.6), Inches(5.9), Inches(11.8), Inches(0.7),
"Clue: reticulocyte count differentiates underproduction (low) from destruction/loss (high, compensatory) anemias.",
size=14, color=GRAY, italic=True)
footer(s, 4)
# =====================================================================
# SLIDE 5 — Classification by MCV
# =====================================================================
s = add_slide()
header(s, "Classification", "Classification by Mean Corpuscular Volume (MCV)")
rect(s, Inches(0.6), Inches(2.0), Inches(11.8), Inches(0.55), NAVY)
textbox(s, Inches(0.6), Inches(2.05), Inches(11.8), Inches(0.45),
"MCV < 80 fL MCV 80-100 fL MCV > 100 fL",
size=16, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
cols = [
("MICROCYTIC", "Iron deficiency\nThalassemia\nSideroblastic anemia\nAnemia of chronic disease (some)", RED),
("NORMOCYTIC", "Acute blood loss\nHemolytic anemia\nAplastic anemia\nAnemia of chronic disease/kidney disease", ACCENT),
("MACROCYTIC", "Vitamin B12 deficiency\nFolate deficiency\nMyelodysplasia\nAlcohol use, liver disease, hypothyroidism", NAVY),
]
for i, (t, d, c) in enumerate(cols):
x = Inches(0.6) + i * (Inches(4.0) + Inches(0.13))
rect(s, x, Inches(2.75), Inches(3.95), Pt(4), c)
textbox(s, x, Inches(2.95), Inches(3.95), Inches(0.5), t, size=18, color=c, bold=True, align=PP_ALIGN.CENTER)
textbox(s, x + Inches(0.35), Inches(3.55), Inches(3.3), Inches(2.6), d, size=14.5, color=NAVY, line_spacing=1.5)
textbox(s, Inches(0.6), Inches(6.35), Inches(11.8), Inches(0.6),
"First diagnostic step in any anemia work-up: obtain the MCV to narrow the differential before ordering further tests.",
size=13.5, color=GRAY, italic=True)
footer(s, 5)
# =====================================================================
# SLIDE 6 — Clinical Features
# =====================================================================
s = add_slide()
header(s, "Clinical Presentation", "Symptoms")
textbox(s, Inches(0.6), Inches(1.8), Inches(11.8), Inches(0.5),
"Severity depends on the degree of anemia, chronicity, and rate of onset.", size=15, color=GRAY, italic=True)
bullets(s, Inches(0.6), Inches(2.4), Inches(5.8), Inches(4.3), [
("Fatigue & weakness", "reduced oxygen delivery to tissues"),
("Dyspnea", "on exertion, progressing to rest"),
("Dizziness / headache / tinnitus", "cerebral hypoperfusion"),
("Decreased cognitive ability", "in chronic, severe anemia"),
], size=16, space_after=18)
bullets(s, Inches(6.8), Inches(2.4), Inches(5.8), Inches(4.3), [
("Palpitations", "compensatory tachycardia"),
("Angina", "in patients with coronary disease"),
("Pica / cravings", "classic for iron deficiency"),
("Non-specific", "onset may be insidious, especially if chronic"),
], size=16, space_after=18)
footer(s, 6)
# =====================================================================
# SLIDE 7 — Physical Signs
# =====================================================================
s = add_slide()
header(s, "Clinical Presentation", "Physical Findings")
bullets(s, Inches(0.6), Inches(1.9), Inches(5.9), Inches(4.6), [
("Pallor", "skin, conjunctivae, nail beds"),
("Tachycardia & systolic flow murmur", "compensatory hyperdynamic circulation"),
("Wide pulse pressure, forceful heartbeat", "increased cardiac output"),
("Hypotension, orthostasis", "in acute or severe cases"),
], size=16, space_after=16)
bullets(s, Inches(6.9), Inches(1.9), Inches(5.9), Inches(4.6), [
("Atrophic glossitis, angular cheilosis", "chronic iron deficiency"),
("Koilonychia (spoon nails)", "brittle nails in severe, longstanding iron deficiency"),
("Jaundice", "suggests hemolysis"),
("Petechiae, bleeding, infection", "suggests marrow failure (aplastic anemia)"),
], size=16, space_after=16)
footer(s, 7)
# =====================================================================
# SLIDE 8 — Diagnostic Approach
# =====================================================================
s = add_slide()
header(s, "Work-Up", "Diagnostic Approach")
steps = [
("1", "CBC & MCV", "Confirm anemia; classify microcytic / normocytic / macrocytic"),
("2", "Reticulocyte Count", "Distinguishes underproduction (low) from hemolysis/loss (high)"),
("3", "Peripheral Smear", "RBC morphology — shape, size, inclusions (spherocytes, sickle cells, schistocytes)"),
("4", "Targeted Labs", "Ferritin/iron studies, B12/folate, LDH, bilirubin, haptoglobin, Coombs test as indicated"),
]
for i, (n, t, d) in enumerate(steps):
y = Inches(1.85) + i * Inches(1.28)
circ = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(0.6), y, Inches(0.75), Inches(0.75))
circ.fill.solid(); circ.fill.fore_color.rgb = ACCENT; circ.line.fill.background(); circ.shadow.inherit=False
tf = circ.text_frame; tf.word_wrap=True
p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
r = p.add_run(); r.text = n; r.font.size = Pt(22); r.font.bold=True; r.font.color.rgb = WHITE
textbox(s, Inches(1.6), y + Inches(0.02), Inches(3), Inches(0.5), t, size=17, color=NAVY, bold=True)
textbox(s, Inches(4.7), y + Inches(0.05), Inches(7.9), Inches(0.9), d, size=14.5, color=GRAY, line_spacing=1.15)
if i < 3:
rect(s, Inches(0.95), y + Inches(0.78), Pt(2), Inches(0.45), RGBColor(0xDD,0xDD,0xDD))
footer(s, 8)
# =====================================================================
# SLIDE 9 — Microcytic overview
# =====================================================================
s = add_slide()
header(s, "Microcytic Anemia (MCV < 80 fL)", "Causes of Microcytic Anemia")
bullets(s, Inches(0.6), Inches(1.95), Inches(6.0), Inches(4.5), [
("Iron deficiency anemia", "most common cause worldwide"),
("Thalassemia", "inherited globin chain synthesis defect"),
("Sideroblastic anemia", "impaired heme synthesis, e.g. lead poisoning"),
("Anemia of chronic disease", "some cases, usually mildly microcytic"),
], size=17, space_after=20)
rect(s, Inches(7.0), Inches(1.95), Inches(5.4), Inches(4.5), LIGHT)
textbox(s, Inches(7.3), Inches(2.15), Inches(4.8), Inches(0.4), "MENTAL MODEL", size=13, color=ACCENT, bold=True)
textbox(s, Inches(7.3), Inches(2.65), Inches(4.8), Inches(3.5),
"Iron deficiency and thalassemia are the two dominant microcytic anemias. "
"Ferritin is the key discriminating test:\n\n"
"• Low ferritin -> iron deficiency\n"
"• Normal/high ferritin + microcytosis + normal/high RBC count -> "
"consider thalassemia (confirm with hemoglobin electrophoresis)",
size=15, color=NAVY, line_spacing=1.3)
footer(s, 9)
# =====================================================================
# SLIDE 10 — Iron Deficiency Anemia: Etiology
# =====================================================================
s = add_slide()
header(s, "Microcytic Anemia", "Iron Deficiency Anemia — Etiology")
bullets(s, Inches(0.6), Inches(1.95), Inches(11.8), Inches(4.6), [
("Chronic blood loss", "GI bleeding (ulcers, malignancy, NSAIDs), heavy menstrual bleeding — the most common cause in adults"),
("Inadequate dietary intake", "infants, toddlers, adolescents, vegetarians/vegans"),
("Increased demand", "pregnancy, lactation, rapid growth in childhood"),
("Malabsorption", "celiac disease, atrophic gastritis, post-bariatric/gastrectomy surgery, H. pylori infection"),
], size=17, space_after=20)
footer(s, 10)
# =====================================================================
# SLIDE 11 — Iron Deficiency Anemia: Diagnosis
# =====================================================================
s = add_slide()
header(s, "Microcytic Anemia", "Iron Deficiency Anemia — Diagnosis")
headers_ = ["Test", "Finding in Iron Deficiency"]
rows = [
("Ferritin", "Low (most specific test; acute-phase reactant, may be falsely normal/high with inflammation)"),
("Serum iron", "Low"),
("TIBC / transferrin", "High"),
("Transferrin saturation", "Low (< 15-20%)"),
("Peripheral smear", "Microcytic, hypochromic red cells; anisocytosis, pencil cells"),
]
top = Inches(1.95)
rowh = Inches(0.85)
rect(s, Inches(0.6), top, Inches(11.8), Inches(0.55), NAVY)
textbox(s, Inches(0.9), top + Inches(0.08), Inches(3.5), Inches(0.4), headers_[0], size=15, color=WHITE, bold=True)
textbox(s, Inches(4.6), top + Inches(0.08), Inches(7.5), Inches(0.4), headers_[1], size=15, color=WHITE, bold=True)
for i, (a, b) in enumerate(rows):
y = top + Inches(0.55) + i * rowh
if i % 2 == 0:
rect(s, Inches(0.6), y, Inches(11.8), rowh, LIGHT)
textbox(s, Inches(0.9), y + Inches(0.18), Inches(3.5), rowh, a, size=14.5, color=NAVY, bold=True)
textbox(s, Inches(4.6), y + Inches(0.12), Inches(7.5), rowh, b, size=13.5, color=NAVY, line_spacing=1.15)
footer(s, 11)
# =====================================================================
# SLIDE 12 — Iron Deficiency Anemia: Treatment
# =====================================================================
s = add_slide()
header(s, "Microcytic Anemia", "Iron Deficiency Anemia — Treatment")
bullets(s, Inches(0.6), Inches(1.95), Inches(6.0), Inches(4.6), [
("First line — oral iron", "Ferrous sulfate, ferrous fumarate, or ferrous gluconate; inexpensive and effective"),
("Dosing tips", "Take on empty stomach with vitamin C for absorption; avoid enteric-coated/timed-release forms which bypass duodenal absorption"),
("Duration", "Continue 3-6 months after Hb normalizes to replete iron stores"),
], size=16, space_after=18)
bullets(s, Inches(6.9), Inches(1.95), Inches(5.9), Inches(4.6), [
("Common side effects", "Constipation, dark stools, nausea, GI upset"),
("Parenteral iron", "IV iron (iron dextran, ferric carboxymaltose, etc.) for malabsorption, intolerance, ongoing losses, or dialysis patients"),
("Always investigate the cause", "Especially GI evaluation in adult men and postmenopausal women to exclude malignancy"),
], size=16, space_after=18)
footer(s, 12)
# =====================================================================
# SLIDE 13 — Macrocytic / Megaloblastic Anemia
# =====================================================================
s = add_slide()
header(s, "Macrocytic Anemia (MCV > 100 fL)", "Megaloblastic Anemia")
textbox(s, Inches(0.6), Inches(1.85), Inches(11.8), Inches(0.6),
"Caused by impaired DNA synthesis in erythroid precursors — chiefly Vitamin B12 or folate deficiency.",
size=16, color=GRAY, italic=True)
bullets(s, Inches(0.6), Inches(2.5), Inches(5.9), Inches(4.0), [
("Vitamin B12 deficiency", "Pernicious anemia (autoimmune loss of intrinsic factor), poor intake (vegans), malabsorption (ileal disease, bariatric surgery)"),
("Folate deficiency", "Poor diet, alcoholism, increased demand (pregnancy, hemolysis), certain drugs (methotrexate, phenytoin)"),
], size=16, space_after=20)
bullets(s, Inches(6.9), Inches(2.5), Inches(5.9), Inches(4.0), [
("Peripheral smear", "Hypersegmented neutrophils (>5 lobes), oval macrocytes"),
("B12 deficiency only", "Neurologic findings — peripheral neuropathy, subacute combined degeneration, glossitis"),
], size=16, space_after=20)
footer(s, 13)
# =====================================================================
# SLIDE 14 — B12/Folate Treatment
# =====================================================================
s = add_slide()
header(s, "Macrocytic Anemia", "Pernicious Anemia & Treatment")
bullets(s, Inches(0.6), Inches(1.95), Inches(6.0), Inches(4.5), [
("Mechanism", "Autoimmune destruction of gastric parietal cells -> loss of intrinsic factor -> impaired B12 absorption in terminal ileum"),
("Diagnosis", "Low serum B12, elevated methylmalonic acid & homocysteine; anti-intrinsic factor / anti-parietal cell antibodies"),
], size=16, space_after=20)
rect(s, Inches(7.0), Inches(1.95), Inches(5.4), Inches(4.5), LIGHT)
textbox(s, Inches(7.3), Inches(2.15), Inches(4.8), Inches(0.4), "TREATMENT", size=13, color=ACCENT, bold=True)
bullets(s, Inches(7.3), Inches(2.65), Inches(4.8), Inches(3.6), [
"Vitamin B12: intramuscular injection (classic), or high-dose oral if malabsorption is not severe",
"Folate deficiency: oral folic acid replacement",
"Caution: replace B12 before/with folate to avoid masking B12 deficiency and precipitating neurologic injury",
], size=14.5, space_after=16)
footer(s, 14)
# =====================================================================
# SLIDE 15 — Normocytic / Hemolytic overview
# =====================================================================
s = add_slide()
header(s, "Normocytic Anemia (MCV 80-100 fL)", "Hemolytic Anemia — Overview")
textbox(s, Inches(0.6), Inches(1.85), Inches(11.8), Inches(0.6),
"Premature red cell destruction with compensatory marrow response (reticulocytosis).",
size=16, color=GRAY, italic=True)
bullets(s, Inches(0.6), Inches(2.5), Inches(11.8), Inches(4.0), [
("Elevated LDH & indirect bilirubin", "released from lysed red cells"),
("Decreased haptoglobin", "consumed binding free hemoglobin"),
("Elevated reticulocyte count", "compensatory marrow response"),
("Peripheral smear clues", "schistocytes (mechanical), spherocytes (membrane/immune), sickle cells (hemoglobinopathy)"),
], size=17, space_after=20)
footer(s, 15)
# =====================================================================
# SLIDE 16 — Hemolytic anemia types
# =====================================================================
s = add_slide()
header(s, "Normocytic Anemia", "Hemolytic Anemia — Intrinsic vs Extrinsic")
rect(s, Inches(0.6), Inches(1.9), Inches(5.8), Inches(4.6), LIGHT)
textbox(s, Inches(0.9), Inches(2.1), Inches(5.2), Inches(0.5), "INTRINSIC (Inherited)", size=17, color=RED, bold=True)
bullets(s, Inches(0.9), Inches(2.7), Inches(5.2), Inches(3.6), [
"Hereditary spherocytosis (membrane defect)",
"G6PD deficiency (enzyme defect)",
"Sickle cell disease (hemoglobinopathy)",
"Thalassemia",
], size=15.5, space_after=14)
rect(s, Inches(6.7), Inches(1.9), Inches(5.9), Inches(4.6), LIGHT)
textbox(s, Inches(7.0), Inches(2.1), Inches(5.3), Inches(0.5), "EXTRINSIC (Acquired)", size=17, color=NAVY, bold=True)
bullets(s, Inches(7.0), Inches(2.7), Inches(5.3), Inches(3.6), [
"Autoimmune hemolytic anemia (warm/cold antibodies)",
"Mechanical (prosthetic valves, TTP/HUS, DIC)",
"Infections (malaria)",
"Drug-induced hemolysis",
], size=15.5, space_after=14)
footer(s, 16)
# =====================================================================
# SLIDE 17 — Sickle Cell Disease
# =====================================================================
s = add_slide()
header(s, "Hemoglobinopathy", "Sickle Cell Disease")
bullets(s, Inches(0.6), Inches(1.95), Inches(6.1), Inches(4.6), [
("Genetics", "Autosomal recessive point mutation in beta-globin (HbS); homozygous HbSS causes disease"),
("Pathophysiology", "Deoxygenated HbS polymerizes -> rigid, sickle-shaped cells -> hemolysis and vaso-occlusion"),
("Complications", "Vaso-occlusive pain crises, dactylitis (hand-foot syndrome) in infants, acute chest syndrome, stroke, splenic autoinfarction, chronic hemolytic anemia"),
("Management", "Hydroxyurea, transfusions, pain control, vaccination, newer agents; hematopoietic transplant/gene therapy curative in select cases"),
], size=14.5, space_after=14)
if SICKLE_HAND_IMG:
pic = add_pic(s, SICKLE_HAND_IMG, Inches(7.1), Inches(1.95), h=Inches(3.9))
caption(s, Inches(7.1), Inches(5.9), Inches(5.6), "Dactylitis (hand-foot syndrome) in an infant with sickle cell disease")
footer(s, 17)
# =====================================================================
# SLIDE 18 — Aplastic Anemia
# =====================================================================
s = add_slide()
header(s, "Bone Marrow Failure", "Aplastic Anemia")
bullets(s, Inches(0.6), Inches(1.95), Inches(11.8), Inches(4.6), [
("Definition", "Bone marrow failure causing pancytopenia (anemia, leukopenia, thrombocytopenia) due to loss of hematopoietic stem cells"),
("Causes", "Idiopathic/autoimmune (most common), drugs, toxins (benzene), viral infection, radiation, inherited (Fanconi anemia)"),
("Clinical features", "Fatigue, pallor, weakness (anemia); petechiae, bruising, epistaxis, gum bleeding (thrombocytopenia); fever, infections (leukopenia)"),
("Diagnosis & treatment", "Bone marrow biopsy shows hypocellular marrow; treat with immunosuppression (ATG/cyclosporine) or allogeneic stem cell transplant"),
], size=16.5, space_after=18)
footer(s, 18)
# =====================================================================
# SLIDE 19 — Thalassemia
# =====================================================================
s = add_slide()
header(s, "Hemoglobinopathy", "Thalassemia")
bullets(s, Inches(0.6), Inches(1.95), Inches(11.8), Inches(4.6), [
("Mechanism", "Inherited defect in alpha- or beta-globin chain synthesis -> imbalanced hemoglobin production, ineffective erythropoiesis, hemolysis"),
("Alpha-thalassemia", "Common in Southeast Asian, African ancestry; severity ranges from silent carrier to hydrops fetalis (4-gene deletion)"),
("Beta-thalassemia", "Common in Mediterranean, Middle Eastern, South Asian ancestry; minor (carrier) to major (transfusion-dependent)"),
("Key features", "Microcytic anemia often out of proportion to mild anemia; target cells on smear; risk of transfusion-related iron overload"),
("Management", "Mild forms — monitoring; major forms — chronic transfusion + iron chelation, splenectomy, curative stem cell transplant"),
], size=15.5, space_after=14)
footer(s, 19)
# =====================================================================
# SLIDE 20 — Summary
# =====================================================================
s = add_slide()
bg(s, NAVY)
rect(s, 0, 0, SW, Inches(0.12), ACCENT)
textbox(s, Inches(0.6), Inches(0.5), Inches(10), Inches(0.6), "SUMMARY", size=13, color=ACCENT, bold=True)
textbox(s, Inches(0.6), Inches(0.85), Inches(11.8), Inches(0.8), "Key Takeaways", size=32, color=WHITE, bold=True)
bullets(s, Inches(0.6), Inches(1.9), Inches(11.9), Inches(4.9), [
("Anemia is a sign, not a diagnosis", "always investigate the underlying cause"),
("Start with MCV", "microcytic, normocytic, or macrocytic frames the differential"),
("Reticulocyte count separates mechanisms", "low = underproduction; high = hemolysis or blood loss"),
("Iron deficiency", "most common cause worldwide; treat with oral iron and find the bleeding/nutritional source"),
("B12/folate deficiency", "macrocytic; check for neurologic signs; replace B12 before folate"),
("Hemolytic, aplastic, and hemoglobinopathies", "require targeted work-up (smear, Coombs, marrow biopsy, hemoglobin electrophoresis)"),
], size=16.5, color=WHITE, space_after=16)
footer(s, 20, dark=True)
os.makedirs(os.path.dirname(OUT), exist_ok=True)
prs.save(OUT)
print("Saved:", OUT)
print("Slides:", len(prs.slides.__iter__.__self__._sldIdLst))
cd /tmp/workspace/anemia-ppt && python3 build_ppt.py
Anemia Overview
Presentation · PPTX