Create a ppt on acute leukemia for 3rd year bds students explaining Introduction Pathology Etiology Clinical features Histopathology Treatment Ppt should be diagram based Please create the presentation
ls /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace/
mkdir -p /home/daytona/workspace/acute-leukemia-bds
Where is the ppt
~/acute-leukemia-bds/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Acute Leukemia";
pres.author = "BDS 3rd Year Oral Pathology";
// ─── THEME ───────────────────────────────────────────────────────────────────
const C = {
navy: "0D1B4B",
red: "C0392B",
gold: "F4A300",
teal: "1A7A8A",
light: "EBF4F7",
white: "FFFFFF",
dark: "1A1A2E",
grey: "5D6D7E",
lgrey: "D5D8DC",
green: "1E8449",
orange: "E67E22",
purple: "7D3C98",
};
// ─── HELPERS ─────────────────────────────────────────────────────────────────
function addHeader(slide, title, sub) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.75, fill: { color: C.navy } });
slide.addText(title, { x: 0.3, y: 0, w: 9.4, h: 0.75, fontSize: 24, bold: true, color: C.white, valign: "middle" });
if (sub) slide.addText(sub, { x: 0.3, y: 0.75, w: 9.4, h: 0.35, fontSize: 12, color: C.grey, italic: true });
}
function addFooter(slide, num) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.35, w: 10, h: 0.275, fill: { color: C.navy } });
slide.addText("Acute Leukemia | 3rd Year BDS", { x: 0.2, y: 5.35, w: 7, h: 0.275, fontSize: 8, color: C.lgrey, valign: "middle" });
slide.addText(`${num}`, { x: 9.5, y: 5.35, w: 0.4, h: 0.275, fontSize: 8, color: C.lgrey, align: "right", valign: "middle" });
}
function box(slide, x, y, w, h, bg, label, value, labelColor, valueColor) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: bg }, rectRadius: 0.08, line: { color: C.lgrey, width: 0.5 } });
if (label) slide.addText(label, { x: x + 0.08, y: y + 0.05, w: w - 0.16, h: 0.3, fontSize: 9, bold: true, color: labelColor || C.white, align: "center" });
if (value) slide.addText(value, { x: x + 0.08, y: y + 0.32, w: w - 0.16, h: h - 0.4, fontSize: 10, color: valueColor || C.dark, align: "center", valign: "middle", wrap: true });
}
function arrow(slide, x1, y1, x2, y2) {
slide.addShape(pres.ShapeType.line, {
x: x1, y: y1, w: x2 - x1, h: y2 - y1,
line: { color: C.grey, width: 1.2, endArrowType: "arrow" }
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
// dark full background
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } });
// accent bar left
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.red } });
// large circle decoration
s.addShape(pres.ShapeType.ellipse, { x: 6.5, y: -0.8, w: 4.5, h: 4.5, fill: { color: "1B2A5A" }, line: { color: "253570", width: 1 } });
s.addShape(pres.ShapeType.ellipse, { x: 7.2, y: 2.8, w: 3.2, h: 3.2, fill: { color: "162047" }, line: { color: "1E2F5C", width: 1 } });
s.addText("ACUTE LEUKEMIA", { x: 0.5, y: 1.3, w: 6.5, h: 1.0, fontSize: 40, bold: true, color: C.white, charSpacing: 2 });
s.addText("A Comprehensive Review for BDS Students", { x: 0.5, y: 2.35, w: 6.5, h: 0.4, fontSize: 15, color: C.gold, italic: true });
// topic chips
const topics = ["Introduction", "Pathology", "Etiology", "Clinical Features", "Histopathology", "Treatment"];
topics.forEach((t, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
s.addShape(pres.ShapeType.roundRect, { x: 0.5 + col * 3.0, y: 2.95 + row * 0.42, w: 2.7, h: 0.34, fill: { color: C.navy }, rectRadius: 0.05 });
s.addText(`${i + 1}. ${t}`, { x: 0.5 + col * 3.0, y: 2.95 + row * 0.42, w: 2.7, h: 0.34, fontSize: 10, color: C.gold, bold: true, align: "center", valign: "middle" });
});
s.addText("Oral Pathology & Medicine | 3rd Year BDS", { x: 0.5, y: 5.1, w: 6, h: 0.3, fontSize: 9, color: C.lgrey, italic: true });
addFooter(s, 1);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW / OUTLINE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Lecture Outline");
const items = [
{ n: "01", title: "Introduction", desc: "Definition, classification, epidemiology", color: C.navy },
{ n: "02", title: "Pathology", desc: "Pathogenesis, genetic mutations, blast biology", color: C.teal },
{ n: "03", title: "Etiology", desc: "Risk factors, environmental & genetic causes", color: C.green },
{ n: "04", title: "Clinical Features", desc: "Systemic & oral manifestations", color: C.orange },
{ n: "05", title: "Histopathology", desc: "Morphology, cytochemistry, immunophenotyping", color: C.purple },
{ n: "06", title: "Treatment", desc: "Induction, consolidation, transplant", color: C.red },
];
items.forEach((item, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const x = 0.3 + col * 5.0;
const y = 1.25 + row * 1.3;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.5, h: 1.1, fill: { color: C.white }, rectRadius: 0.1, line: { color: item.color, width: 2 } });
s.addShape(pres.ShapeType.ellipse, { x: x + 0.1, y: y + 0.2, w: 0.65, h: 0.65, fill: { color: item.color } });
s.addText(item.n, { x: x + 0.1, y: y + 0.2, w: 0.65, h: 0.65, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(item.title, { x: x + 0.85, y: y + 0.08, w: 3.5, h: 0.38, fontSize: 13, bold: true, color: item.color });
s.addText(item.desc, { x: x + 0.85, y: y + 0.48, w: 3.5, h: 0.45, fontSize: 10, color: C.grey, wrap: true });
});
addFooter(s, 2);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — INTRODUCTION: DEFINITION
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Introduction", "What is Acute Leukemia?");
// definition box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.15, w: 9.4, h: 0.95, fill: { color: C.navy } });
s.addText("Acute leukemia is a diverse group of neoplastic proliferations of immature hematopoietic cells (blasts) that replace normal marrow elements, causing marrow failure.", {
x: 0.4, y: 1.18, w: 9.2, h: 0.88, fontSize: 12.5, color: C.white, valign: "middle", wrap: true, bold: false
});
// three column classification
const cols = [
{ title: "B-ALL", sub: "B-cell Acute Lymphoblastic Leukemia", color: C.teal, pts: ["Most common childhood leukemia", "Peak age: 2-10 years", "Arises in bone marrow", "t(9;22) Philadelphia chromosome in adults"] },
{ title: "T-ALL", sub: "T-cell Acute Lymphoblastic Leukemia", color: C.purple, pts: ["Common in adolescents", "Often involves thymus", "Mediastinal mass in >50%", "T-cell receptor translocations"] },
{ title: "AML", sub: "Acute Myeloid Leukemia", color: C.red, pts: ["Most common in adults >60 yrs", "May arise from prior MDS/MPN", "Auer rods pathognomonic", "DIC risk in APL subtype"] },
];
cols.forEach((c, i) => {
const x = 0.25 + i * 3.18;
s.addShape(pres.ShapeType.roundRect, { x, y: 2.25, w: 3.0, h: 2.9, fill: { color: C.light }, rectRadius: 0.1, line: { color: c.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y: 2.25, w: 3.0, h: 0.5, fill: { color: c.color } });
s.addText(c.title, { x, y: 2.25, w: 3.0, h: 0.5, fontSize: 16, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(c.sub, { x: x + 0.1, y: 2.77, w: 2.8, h: 0.35, fontSize: 8.5, color: c.color, bold: true, align: "center" });
c.pts.forEach((p, j) => {
s.addText([{ text: "• ", options: { color: c.color, bold: true } }, { text: p, options: { color: C.dark } }],
{ x: x + 0.12, y: 3.15 + j * 0.44, w: 2.76, h: 0.4, fontSize: 9.5, wrap: true });
});
});
addFooter(s, 3);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — EPIDEMIOLOGY + CLASSIFICATION TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Epidemiology & Classification");
// stat boxes
const stats = [
{ val: "~185,000", lbl: "New hematologic\nmalignancies/yr (USA)", color: C.navy },
{ val: "60 yrs", lbl: "Median age\nfor AML", color: C.red },
{ val: "2-10 yrs", lbl: "Peak age\nfor B-ALL", color: C.teal },
{ val: "~20%", lbl: "Blasts required\nfor diagnosis", color: C.green },
];
stats.forEach((st, i) => {
const x = 0.2 + i * 2.42;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.1, w: 2.22, h: 1.2, fill: { color: st.color }, rectRadius: 0.1 });
s.addText(st.val, { x, y: 1.12, w: 2.22, h: 0.6, fontSize: 22, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(st.lbl, { x, y: 1.72, w: 2.22, h: 0.55, fontSize: 9, color: C.white, align: "center", valign: "top" });
});
// WHO Classification table
s.addText("WHO Classification (Simplified)", { x: 0.2, y: 2.5, w: 9.6, h: 0.35, fontSize: 13, bold: true, color: C.navy });
const tblData = [
[
{ text: "Category", options: { bold: true, color: C.white, fill: C.navy } },
{ text: "Subtype", options: { bold: true, color: C.white, fill: C.navy } },
{ text: "Key Feature", options: { bold: true, color: C.white, fill: C.navy } },
{ text: "Prognosis", options: { bold: true, color: C.white, fill: C.navy } },
],
["B-ALL", "B-cell precursor ALL", "CD19+, TdT+, CD10+", "Favorable in children"],
["T-ALL", "T-cell precursor ALL", "CD3+, CD7+, TdT+", "Intermediate"],
["AML – APL", "M3: Acute Promyelocytic", "t(15;17), Auer rods, PML-RARA", "Favorable with ATRA"],
["AML – CBF", "M2: t(8;21) or inv(16)", "CD13+, CD33+, MPO+", "Favorable"],
["AML – NOS", "Other AML subtypes", "20%+ blasts, varied genetics", "Variable"],
];
s.addTable(tblData, {
x: 0.2, y: 2.88, w: 9.6, h: 2.4,
fontSize: 9.5,
color: C.dark,
border: { type: "solid", color: C.lgrey, pt: 0.5 },
align: "left",
rowH: 0.38,
autoPage: false,
});
addFooter(s, 4);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — PATHOLOGY: NORMAL HAEMOPOIESIS → LEUKEMIA
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Pathology", "Normal Haemopoiesis vs Leukemic Transformation");
// Flow diagram: HSC → normal vs leukemia
// Row 1: HSC
s.addShape(pres.ShapeType.ellipse, { x: 4.0, y: 1.1, w: 2.0, h: 0.65, fill: { color: C.navy } });
s.addText("Hematopoietic\nStem Cell (HSC)", { x: 4.0, y: 1.1, w: 2.0, h: 0.65, fontSize: 8.5, bold: true, color: C.white, align: "center", valign: "middle" });
// Arrows split
s.addShape(pres.ShapeType.line, { x: 3.0, y: 1.75, w: 2.0, h: 0, line: { color: C.green, width: 1.5, endArrowType: "arrow" } });
s.addShape(pres.ShapeType.line, { x: 5.0, y: 1.75, w: 2.0, h: 0, line: { color: C.red, width: 1.5, endArrowType: "arrow" } });
s.addText("Normal", { x: 2.5, y: 1.62, w: 1.2, h: 0.24, fontSize: 8, color: C.green, bold: true, align: "center" });
s.addText("Mutation", { x: 6.0, y: 1.62, w: 1.2, h: 0.24, fontSize: 8, color: C.red, bold: true, align: "center" });
// Normal side
s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 2.0, w: 2.6, h: 3.1, fill: { color: "E8F5E9" }, rectRadius: 0.1, line: { color: C.green, width: 1.5 } });
s.addText("NORMAL DIFFERENTIATION", { x: 0.2, y: 2.05, w: 2.6, h: 0.35, fontSize: 8, bold: true, color: C.green, align: "center" });
const normalCells = ["Myeloid Progenitor", "Lymphoid Progenitor", "RBCs", "Platelets", "Granulocytes", "Lymphocytes"];
normalCells.forEach((c, i) => {
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 2.43 + i * 0.44, w: 2.4, h: 0.36, fill: { color: C.green }, rectRadius: 0.05 });
s.addText(c, { x: 0.3, y: 2.43 + i * 0.44, w: 2.4, h: 0.36, fontSize: 9, color: C.white, align: "center", valign: "middle" });
});
// Leukemia side
s.addShape(pres.ShapeType.roundRect, { x: 7.2, y: 2.0, w: 2.6, h: 3.1, fill: { color: "FDEDEC" }, rectRadius: 0.1, line: { color: C.red, width: 1.5 } });
s.addText("LEUKEMIC TRANSFORMATION", { x: 7.2, y: 2.05, w: 2.6, h: 0.35, fontSize: 8, bold: true, color: C.red, align: "center" });
const lukemia = ["Maturation Arrest", "Blast Accumulation", "Marrow Replaced", "Normal Cells ↓", "Pancytopenia", "Organ Infiltration"];
lukemia.forEach((c, i) => {
s.addShape(pres.ShapeType.roundRect, { x: 7.3, y: 2.43 + i * 0.44, w: 2.4, h: 0.36, fill: { color: C.red }, rectRadius: 0.05 });
s.addText(c, { x: 7.3, y: 2.43 + i * 0.44, w: 2.4, h: 0.36, fontSize: 9, color: C.white, align: "center", valign: "middle" });
});
// Centre: key mutations
s.addShape(pres.ShapeType.roundRect, { x: 3.5, y: 2.1, w: 3.0, h: 2.9, fill: { color: C.light }, rectRadius: 0.1, line: { color: C.teal, width: 1 } });
s.addText("KEY DRIVER MUTATIONS", { x: 3.5, y: 2.15, w: 3.0, h: 0.3, fontSize: 8.5, bold: true, color: C.teal, align: "center" });
const muts = ["t(9;22) BCR-ABL – B-ALL", "t(15;17) PML-RARA – APL", "t(8;21) RUNX1-RUNX1T1", "FLT3 / RAS mutations", "PAX5 mutations – B-ALL", "IDH1/IDH2 – AML"];
muts.forEach((m, i) => {
s.addText([{ text: "◆ ", options: { color: C.teal, bold: true } }, { text: m, options: { color: C.dark } }],
{ x: 3.55, y: 2.5 + i * 0.42, w: 2.9, h: 0.38, fontSize: 9, wrap: true });
});
addFooter(s, 5);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — PATHOLOGY: MARROW FAILURE CONSEQUENCES
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Pathology", "Consequences of Marrow Failure");
// Central "Marrow Failure" hub
s.addShape(pres.ShapeType.ellipse, { x: 3.75, y: 2.2, w: 2.5, h: 1.3, fill: { color: C.navy } });
s.addText("MARROW\nFAILURE", { x: 3.75, y: 2.2, w: 2.5, h: 1.3, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle" });
// Spokes
const spokes = [
{ x: 0.2, y: 1.05, w: 2.7, h: 0.9, color: C.red, title: "Anemia (↓RBC)", body: "Weakness, fatigue,\npallor, dyspnoea" },
{ x: 7.1, y: 1.05, w: 2.7, h: 0.9, color: C.orange, title: "Thrombocytopenia", body: "Petechiae, purpura,\nprolonged bleeding" },
{ x: 0.2, y: 2.35, w: 2.7, h: 0.9, color: C.purple, title: "Neutropenia", body: "Recurrent infections,\nfever, ulcers" },
{ x: 7.1, y: 2.35, w: 2.7, h: 0.9, color: C.teal, title: "Blast Infiltration", body: "Lymphadenopathy,\nhepatosplenomegaly" },
{ x: 0.2, y: 3.65, w: 2.7, h: 0.9, color: C.green, title: "Gingival Changes", body: "Gingival hyperplasia,\nulceration, bleeding" },
{ x: 7.1, y: 3.65, w: 2.7, h: 0.9, color: C.gold, title: "Metabolic", body: "Hyperuricemia,\ntumor lysis syndrome" },
];
spokes.forEach(sp => {
s.addShape(pres.ShapeType.roundRect, { x: sp.x, y: sp.y, w: sp.w, h: sp.h, fill: { color: C.white }, rectRadius: 0.1, line: { color: sp.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x: sp.x, y: sp.y, w: sp.w, h: 0.3, fill: { color: sp.color } });
s.addText(sp.title, { x: sp.x, y: sp.y, w: sp.w, h: 0.3, fontSize: 9.5, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(sp.body, { x: sp.x + 0.1, y: sp.y + 0.33, w: sp.w - 0.2, h: 0.55, fontSize: 9, color: C.dark, align: "center", wrap: true });
});
// Connecting lines
[[3.75, 2.75, 2.9, 1.5], [6.25, 2.75, 7.1, 1.5], [3.75, 2.75, 2.9, 2.8], [6.25, 2.75, 7.1, 2.8],
[3.75, 3.5, 2.9, 4.1], [6.25, 3.5, 7.1, 4.1]].forEach(([x1, y1, x2, y2]) => {
s.addShape(pres.ShapeType.line, { x: x1, y: y1, w: x2 - x1, h: y2 - y1, line: { color: C.lgrey, width: 1.0 } });
});
addFooter(s, 6);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — ETIOLOGY
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Etiology", "Risk Factors for Acute Leukemia");
const cats = [
{
title: "Genetic / Chromosomal", icon: "🧬", color: C.navy,
items: ["Down syndrome (trisomy 21) – 20× risk AML", "Bloom syndrome", "Fanconi anemia", "Ataxia telangiectasia", "Neurofibromatosis type 1"]
},
{
title: "Radiation Exposure", icon: "☢", color: C.red,
items: ["Atomic bomb survivors", "Therapeutic radiation", "Diagnostic X-rays (high dose)", "Nuclear fallout", "Occupational exposure"]
},
{
title: "Chemical / Drug", icon: "⚗", color: C.orange,
items: ["Benzene (occupational)", "Prior cytotoxic chemotherapy", "Alkylating agents → AML", "Topoisomerase II inhibitors", "Smoking (weak association)"]
},
{
title: "Viral", icon: "🦠", color: C.teal,
items: ["HTLV-1 → Adult T-cell leukemia", "Epstein-Barr virus (EBV)", "HIV (indirect)", "No direct virus for AML", "Immunosuppression ↑ risk"]
},
];
cats.forEach((c, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.2 + col * 5.0;
const y = 1.1 + row * 2.2;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.6, h: 2.0, fill: { color: C.light }, rectRadius: 0.1, line: { color: c.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 4.6, h: 0.45, fill: { color: c.color } });
s.addText(`${c.icon} ${c.title}`, { x: x + 0.1, y, w: 4.4, h: 0.45, fontSize: 11, bold: true, color: C.white, valign: "middle" });
c.items.forEach((item, j) => {
s.addText([{ text: "▸ ", options: { color: c.color, bold: true } }, { text: item, options: { color: C.dark } }],
{ x: x + 0.15, y: y + 0.5 + j * 0.29, w: 4.3, h: 0.27, fontSize: 9.5, wrap: true });
});
});
addFooter(s, 7);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — CLINICAL FEATURES: SYSTEMIC
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Clinical Features", "Systemic Manifestations");
// Human figure silhouette using shapes
// Body
s.addShape(pres.ShapeType.ellipse, { x: 4.55, y: 1.05, w: 0.9, h: 0.9, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // head
s.addShape(pres.ShapeType.rect, { x: 4.65, y: 1.95, w: 0.7, h: 1.4, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // torso
s.addShape(pres.ShapeType.rect, { x: 4.1, y: 2.05, w: 0.55, h: 1.1, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // L arm
s.addShape(pres.ShapeType.rect, { x: 5.35, y: 2.05, w: 0.55, h: 1.1, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // R arm
s.addShape(pres.ShapeType.rect, { x: 4.62, y: 3.35, w: 0.35, h: 1.1, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // L leg
s.addShape(pres.ShapeType.rect, { x: 5.03, y: 3.35, w: 0.35, h: 1.1, fill: { color: C.lgrey }, line: { color: C.grey, width: 1 } }); // R leg
// Labels left side
const left = [
{ y: 1.15, lbl: "Pallor / Anaemia", color: C.red, cx: 4.55, cy: 1.5 },
{ y: 1.75, lbl: "Fever, Infections", color: C.orange, cx: 4.55, cy: 2.2 },
{ y: 2.35, lbl: "Hepatosplenomegaly", color: C.purple, cx: 4.65, cy: 2.8 },
{ y: 2.95, lbl: "Bone Pain", color: C.teal, cx: 4.62, cy: 3.5 },
];
left.forEach(l => {
s.addShape(pres.ShapeType.roundRect, { x: 0.15, y: l.y, w: 3.8, h: 0.48, fill: { color: l.color }, rectRadius: 0.07 });
s.addText(l.lbl, { x: 0.15, y: l.y, w: 3.8, h: 0.48, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
s.addShape(pres.ShapeType.line, { x: 3.95, y: l.y + 0.24, w: l.cx - 3.95, h: l.cy - l.y - 0.24, line: { color: l.color, width: 1, dashType: "dash" } });
});
const right = [
{ y: 1.15, lbl: "Lymphadenopathy", color: C.navy, cx: 5.55, cy: 1.6 },
{ y: 1.75, lbl: "Petechiae / Bruising", color: C.orange, cx: 5.55, cy: 2.2 },
{ y: 2.35, lbl: "CNS Involvement", color: C.teal, cx: 5.0, cy: 1.1 },
{ y: 2.95, lbl: "Weight Loss, Fatigue", color: C.green, cx: 5.03, cy: 3.5 },
];
right.forEach(r => {
s.addShape(pres.ShapeType.roundRect, { x: 6.05, y: r.y, w: 3.8, h: 0.48, fill: { color: r.color }, rectRadius: 0.07 });
s.addText(r.lbl, { x: 6.05, y: r.y, w: 3.8, h: 0.48, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
s.addShape(pres.ShapeType.line, { x: r.cx, y: r.cy, w: 6.05 - r.cx, h: r.y + 0.24 - r.cy, line: { color: r.color, width: 1, dashType: "dash" } });
});
// Lab findings bar at bottom
s.addShape(pres.ShapeType.rect, { x: 0.15, y: 4.5, w: 9.7, h: 0.8, fill: { color: C.navy } });
s.addText("Lab Findings:", { x: 0.25, y: 4.52, w: 1.4, h: 0.35, fontSize: 9.5, bold: true, color: C.gold });
const labs = ["Anaemia (↓Hb)", "Thrombocytopenia", "WBC variable (↑ or ↓)", "Blasts in peripheral blood", "↑ LDH & Uric Acid"];
labs.forEach((l, i) => {
s.addText(`• ${l}`, { x: 1.6 + i * 1.7, y: 4.5, w: 1.65, h: 0.8, fontSize: 8.5, color: C.white, valign: "middle", wrap: true });
});
addFooter(s, 8);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — ORAL MANIFESTATIONS (KEY FOR BDS)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Clinical Features", "Oral Manifestations — Important for Dentistry");
// Highlight box
s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 0.9, w: 9.6, h: 0.55, fill: { color: "FFF3CD" }, rectRadius: 0.08, line: { color: C.gold, width: 1.5 } });
s.addText("⚠ Oral manifestations may be the FIRST presenting sign of acute leukemia — the dentist plays a critical diagnostic role!", {
x: 0.3, y: 0.9, w: 9.4, h: 0.55, fontSize: 11, bold: true, color: C.dark, valign: "middle"
});
const oralFeatures = [
{ title: "Gingival Enlargement", color: C.red, icon: "🦷",
desc: "Diffuse hyperplasia due to blast infiltration. Most common in AML with monocytic differentiation (M4/M5). Spongy, reddish, bleeds easily." },
{ title: "Gingival Bleeding", color: C.orange, icon: "🩸",
desc: "Spontaneous bleeding due to thrombocytopenia. Prolonged bleeding after extraction. May be the first complaint." },
{ title: "Oral Ulcerations", color: C.purple, icon: "🔴",
desc: "Painful ulcers due to neutropenia and poor healing. Located on mucosa, gingiva, palate. May mimic ANUG or aphthous ulcers." },
{ title: "Mucosal Pallor", color: C.teal, icon: "⬜",
desc: "Pallor of gingiva and oral mucosa reflects systemic anemia. Look for pale gingival color on examination." },
{ title: "Petechiae & Ecchymosis", color: C.navy, icon: "🟣",
desc: "Small pinpoint bleeds (petechiae) or larger bruises on palate, buccal mucosa due to platelet dysfunction." },
{ title: "Infections / Candidiasis", color: C.green, icon: "🟡",
desc: "Opportunistic infections due to neutropenia. Oral candidiasis, herpetic lesions, necrotizing stomatitis." },
];
oralFeatures.forEach((f, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.2 + col * 3.23;
const y = 1.58 + row * 1.9;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 3.08, h: 1.75, fill: { color: C.light }, rectRadius: 0.1, line: { color: f.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 3.08, h: 0.38, fill: { color: f.color } });
s.addText(`${f.icon} ${f.title}`, { x: x + 0.05, y, w: 2.98, h: 0.38, fontSize: 9.5, bold: true, color: C.white, valign: "middle" });
s.addText(f.desc, { x: x + 0.1, y: y + 0.42, w: 2.88, h: 1.28, fontSize: 8.5, color: C.dark, wrap: true, valign: "top" });
});
addFooter(s, 9);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — HISTOPATHOLOGY
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Histopathology", "Morphology, Cytochemistry & Immunophenotyping");
// Left: ALL vs AML morphology comparison
// ALL box
s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 1.05, w: 4.5, h: 3.2, fill: { color: C.white }, rectRadius: 0.1, line: { color: C.teal, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 0.2, y: 1.05, w: 4.5, h: 0.42, fill: { color: C.teal } });
s.addText("ALL – Lymphoblast Morphology", { x: 0.2, y: 1.05, w: 4.5, h: 0.42, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
const allFeats = [
["Cell size", "Small to medium"],
["Nucleus", "Round, condensed chromatin"],
["Nucleoli", "Inconspicuous or small"],
["Cytoplasm", "Scant, basophilic"],
["Auer Rods", "ABSENT"],
["TdT", "POSITIVE"],
["MPO stain", "Negative"],
];
allFeats.forEach(([k, v], i) => {
const y = 1.55 + i * 0.38;
const bg = i % 2 === 0 ? "F0F8FF" : C.white;
s.addShape(pres.ShapeType.rect, { x: 0.2, y, w: 4.5, h: 0.36, fill: { color: bg } });
s.addText(k, { x: 0.28, y, w: 1.5, h: 0.36, fontSize: 9, bold: true, color: C.teal, valign: "middle" });
s.addText(v, { x: 1.9, y, w: 2.7, h: 0.36, fontSize: 9, color: v === "ABSENT" ? C.green : v === "POSITIVE" ? C.teal : C.dark, bold: ["ABSENT","POSITIVE"].includes(v), valign: "middle" });
});
// AML box
s.addShape(pres.ShapeType.roundRect, { x: 5.3, y: 1.05, w: 4.5, h: 3.2, fill: { color: C.white }, rectRadius: 0.1, line: { color: C.red, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x: 5.3, y: 1.05, w: 4.5, h: 0.42, fill: { color: C.red } });
s.addText("AML – Myeloblast Morphology", { x: 5.3, y: 1.05, w: 4.5, h: 0.42, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
const amlFeats = [
["Cell size", "Large"],
["Nucleus", "Fine chromatin, prominent nucleoli"],
["Nucleoli", "3-5 prominent nucleoli"],
["Cytoplasm", "Moderate, azurophilic granules"],
["Auer Rods", "PRESENT (pathognomonic)"],
["TdT", "Usually negative"],
["MPO stain", "POSITIVE"],
];
amlFeats.forEach(([k, v], i) => {
const y = 1.55 + i * 0.38;
const bg = i % 2 === 0 ? "FFF5F5" : C.white;
s.addShape(pres.ShapeType.rect, { x: 5.3, y, w: 4.5, h: 0.36, fill: { color: bg } });
s.addText(k, { x: 5.38, y, w: 1.5, h: 0.36, fontSize: 9, bold: true, color: C.red, valign: "middle" });
s.addText(v, { x: 6.9, y, w: 2.8, h: 0.36, fontSize: 9, color: v.includes("PRESENT") ? C.red : v.includes("POSITIVE") ? C.red : C.dark, bold: v.includes("PRESENT") || v.includes("POSITIVE"), valign: "middle", wrap: true });
});
// Bottom immunophenotyping strip
s.addShape(pres.ShapeType.rect, { x: 0.2, y: 4.35, w: 9.6, h: 0.95, fill: { color: C.navy } });
s.addText("Immunophenotyping (Flow Cytometry):", { x: 0.3, y: 4.37, w: 3.0, h: 0.3, fontSize: 9.5, bold: true, color: C.gold });
const markers = [
{ lbl: "B-ALL", val: "CD19, CD10, CD22, TdT+" },
{ lbl: "T-ALL", val: "CD3, CD7, CD5, TdT+" },
{ lbl: "AML", val: "CD13, CD33, CD117, MPO+" },
{ lbl: "APL", val: "CD13+, CD33+, CD34−" },
];
markers.forEach((m, i) => {
s.addText(`${m.lbl}: `, { x: 0.3 + i * 2.4, y: 4.7, w: 0.6, h: 0.28, fontSize: 8.5, bold: true, color: C.gold });
s.addText(m.val, { x: 0.9 + i * 2.4, y: 4.7, w: 1.6, h: 0.28, fontSize: 8, color: C.white, wrap: true });
});
addFooter(s, 10);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — FAB CLASSIFICATION DIAGRAM
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Histopathology", "FAB Classification of AML");
const fab = [
{ type: "M0", name: "Undifferentiated AML", key: "No differentiation, MPO−", color: C.grey },
{ type: "M1", name: "AML minimal maturation", key: "Some blasts show MPO+", color: C.teal },
{ type: "M2", name: "AML with maturation", key: "t(8;21), Auer rods common", color: C.navy },
{ type: "M3", name: "Acute Promyelocytic (APL)", key: "t(15;17) PML-RARA, Auer bundles (faggots)", color: C.red },
{ type: "M4", name: "Acute Myelomonocytic", key: "Monocytic + granulocytic; ORAL LESIONS", color: C.orange },
{ type: "M5", name: "Acute Monocytic", key: "Gingival hyperplasia most common", color: C.purple },
{ type: "M6", name: "Acute Erythroid", key: "Erythroid precursors >50%", color: C.green },
{ type: "M7", name: "Acute Megakaryoblastic", key: "CD41/CD61+, marrow fibrosis", color: C.gold },
];
fab.forEach((f, i) => {
const col = i % 4;
const row = Math.floor(i / 4);
const x = 0.18 + col * 2.43;
const y = 1.05 + row * 2.0;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.28, h: 1.8, fill: { color: C.light }, rectRadius: 0.1, line: { color: f.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 2.28, h: 0.42, fill: { color: f.color } });
s.addText(f.type, { x, y, w: 0.55, h: 0.42, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(f.name, { x: x + 0.58, y, w: 1.68, h: 0.42, fontSize: 8.5, bold: true, color: C.white, valign: "middle", wrap: true });
s.addText(f.key, { x: x + 0.1, y: y + 0.48, w: 2.08, h: 1.28, fontSize: 9, color: C.dark, wrap: true, valign: "top" });
// highlight oral relevant
if (f.type === "M4" || f.type === "M5") {
s.addShape(pres.ShapeType.roundRect, { x: x + 0.08, y: y + 1.45, w: 2.12, h: 0.28, fill: { color: f.color }, rectRadius: 0.05 });
s.addText("★ Dental relevance", { x: x + 0.08, y: y + 1.45, w: 2.12, h: 0.28, fontSize: 7.5, bold: true, color: C.white, align: "center", valign: "middle" });
}
});
addFooter(s, 11);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — DIAGNOSIS FLOWCHART
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Diagnosis", "Investigative Approach");
const steps = [
{ label: "Clinical Suspicion\n(pallor, bleeding, fever, gingival swelling)", color: C.navy },
{ label: "CBC & Peripheral Blood Film\n(anaemia, thrombocytopenia, blasts)", color: C.teal },
{ label: "Bone Marrow Aspiration / Biopsy\n(≥20% blasts confirms leukemia)", color: C.orange },
{ label: "Cytochemistry\n(MPO, SBB, Esterase stains)", color: C.purple },
{ label: "Immunophenotyping\n(Flow cytometry — lineage assignment)", color: C.red },
{ label: "Cytogenetics / Molecular\n(FISH, PCR, karyotype — prognosis & treatment)", color: C.green },
];
steps.forEach((step, i) => {
const y = 1.1 + i * 0.72;
s.addShape(pres.ShapeType.roundRect, { x: 1.2, y, w: 7.6, h: 0.58, fill: { color: step.color }, rectRadius: 0.08 });
s.addText(`Step ${i + 1}: ${step.label}`, { x: 1.3, y, w: 7.4, h: 0.58, fontSize: 10.5, bold: i < 3, color: C.white, valign: "middle", wrap: true });
if (i < steps.length - 1) {
s.addShape(pres.ShapeType.line, { x: 5.0, y: y + 0.58, w: 0, h: 0.14, line: { color: C.grey, width: 1.5, endArrowType: "arrow" } });
}
});
// Side note
s.addShape(pres.ShapeType.roundRect, { x: 0.15, y: 1.1, w: 0.9, h: 4.3, fill: { color: C.navy }, rectRadius: 0.1 });
s.addText("D\nI\nA\nG\nN\nO\nS\nI\nS", { x: 0.15, y: 1.1, w: 0.9, h: 4.3, fontSize: 11, bold: true, color: C.gold, align: "center", valign: "middle" });
addFooter(s, 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — TREATMENT: OVERVIEW
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Treatment", "Overview of Treatment Strategy");
// 3-phase horizontal flow
const phases = [
{
n: "Phase 1", title: "INDUCTION", color: C.red,
goal: "Achieve Complete Remission",
drugs: ["ALL: Vincristine + Prednisone\n+ L-Asparaginase ± Daunorubicin", "AML: Cytarabine (7 days)\n+ Anthracycline (3 days)\n(\"7+3\" regimen)", "APL: ATRA + Arsenic trioxide\n(>90% cure rate)"],
result: "≥20% blasts → <5% blasts"
},
{
n: "Phase 2", title: "CONSOLIDATION", color: C.navy,
goal: "Eliminate Residual Disease",
drugs: ["High-dose Methotrexate", "High-dose Cytarabine", "Cyclophosphamide", "Rotating drug combinations", "6–8 intensive courses"],
result: "Prevent relapse"
},
{
n: "Phase 3", title: "MAINTENANCE", color: C.green,
goal: "Sustain Remission (ALL)",
drugs: ["6-Mercaptopurine (daily)", "Methotrexate (weekly)", "Duration: 2–3 years", "Outpatient basis", "CNS prophylaxis: IT MTX"],
result: "Long-term disease-free survival"
},
];
phases.forEach((ph, i) => {
const x = 0.2 + i * 3.27;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.05, w: 3.1, h: 4.25, fill: { color: C.light }, rectRadius: 0.1, line: { color: ph.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y: 1.05, w: 3.1, h: 0.52, fill: { color: ph.color } });
s.addText(ph.n, { x, y: 1.05, w: 3.1, h: 0.24, fontSize: 8.5, color: C.white, align: "center", valign: "middle", bold: false });
s.addText(ph.title, { x, y: 1.29, w: 3.1, h: 0.28, fontSize: 13, bold: true, color: C.white, align: "center" });
s.addShape(pres.ShapeType.roundRect, { x: x + 0.1, y: 1.63, w: 2.9, h: 0.32, fill: { color: ph.color }, rectRadius: 0.05 });
s.addText(`Goal: ${ph.goal}`, { x: x + 0.1, y: 1.63, w: 2.9, h: 0.32, fontSize: 8.5, bold: true, color: C.white, align: "center", valign: "middle" });
ph.drugs.forEach((d, j) => {
s.addText([{ text: "▸ ", options: { color: ph.color, bold: true } }, { text: d, options: { color: C.dark } }],
{ x: x + 0.15, y: 2.02 + j * 0.54, w: 2.8, h: 0.5, fontSize: 9, wrap: true });
});
s.addShape(pres.ShapeType.roundRect, { x: x + 0.1, y: 4.88, w: 2.9, h: 0.3, fill: { color: "E8F5E9" }, rectRadius: 0.05, line: { color: ph.color, width: 0.5 } });
s.addText(`✓ ${ph.result}`, { x: x + 0.1, y: 4.88, w: 2.9, h: 0.3, fontSize: 8, color: C.green, bold: true, align: "center", valign: "middle" });
if (i < 2) {
s.addShape(pres.ShapeType.line, { x: x + 3.1, y: 3.15, w: 0.17, h: 0, line: { color: ph.color, width: 2, endArrowType: "arrow" } });
}
});
addFooter(s, 13);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — TARGETED & TRANSPLANT TREATMENT
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.light } });
addHeader(s, "Treatment", "Targeted Therapy & Stem Cell Transplantation");
// Targeted therapies
s.addText("Targeted Therapies", { x: 0.2, y: 0.95, w: 4.5, h: 0.35, fontSize: 13, bold: true, color: C.navy });
const targeted = [
{ drug: "Imatinib / Dasatinib", target: "BCR-ABL tyrosine kinase", indication: "Ph+ B-ALL (t9;22)", color: C.teal },
{ drug: "ATRA + Arsenic Trioxide", target: "PML-RARA degradation", indication: "APL (M3 AML)", color: C.red },
{ drug: "Midostaurin / Gilteritinib", target: "FLT3 kinase", indication: "FLT3-mutated AML", color: C.orange },
{ drug: "Venetoclax", target: "BCL-2 anti-apoptotic", indication: "Older/unfit AML patients", color: C.purple },
{ drug: "Enasidenib / Ivosidenib", target: "IDH1/IDH2 mutations", indication: "IDH-mutated AML", color: C.green },
{ drug: "Rituximab", target: "CD20 B-cell antigen", indication: "CD20+ Ph-neg B-ALL", color: C.navy },
];
targeted.forEach((t, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.2 + col * 4.6;
const y = 1.38 + row * 0.78;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.4, h: 0.68, fill: { color: C.white }, rectRadius: 0.08, line: { color: t.color, width: 1.5 } });
s.addShape(pres.ShapeType.rect, { x, y, w: 0.08, h: 0.68, fill: { color: t.color } });
s.addText(t.drug, { x: x + 0.18, y: y + 0.03, w: 4.1, h: 0.28, fontSize: 10, bold: true, color: t.color });
s.addText(`Target: ${t.target} | Use: ${t.indication}`, { x: x + 0.18, y: y + 0.33, w: 4.1, h: 0.3, fontSize: 8.5, color: C.grey, wrap: true });
});
// SCT box
s.addShape(pres.ShapeType.roundRect, { x: 0.2, y: 3.75, w: 9.6, h: 1.55, fill: { color: C.navy }, rectRadius: 0.1 });
s.addText("🔬 Hematopoietic Stem Cell Transplantation (HSCT)", { x: 0.35, y: 3.8, w: 9.3, h: 0.38, fontSize: 12, bold: true, color: C.gold });
const sctPts = [
"Allogeneic SCT: donor marrow replaces patient's leukemic marrow — only curative option for high-risk AML",
"Autologous SCT: patient's own cells collected in remission and reinfused — used for some ALL patients",
"Indications: high-risk cytogenetics, relapsed/refractory disease, failure of first-line therapy",
"Complications: Graft-vs-Host Disease (GvHD), infections, organ toxicity"
];
sctPts.forEach((pt, i) => {
s.addText(`• ${pt}`, { x: 0.35, y: 4.22 + i * 0.27, w: 9.3, h: 0.25, fontSize: 8.5, color: C.white, wrap: true });
});
addFooter(s, 14);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 15 — DENTAL MANAGEMENT OF LEUKEMIA PATIENTS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.white } });
addHeader(s, "Dental Considerations", "Management of Leukemia Patients in Dental Practice");
const sections = [
{
title: "Before Treatment (Pre-chemo)", color: C.navy, icon: "📋",
items: ["Complete oral prophylaxis & scaling", "Extract non-restorable teeth", "Remove sharp/fractured restorations", "Treat active infections urgently", "Patient/parent education on oral hygiene"]
},
{
title: "During Treatment", color: C.red, icon: "⚕",
items: ["Avoid elective procedures", "Emergency only — consult physician", "Platelet count >50,000 before procedures", "Antibiotic cover for invasive procedures", "Manage mucositis: chlorhexidine rinses"]
},
{
title: "After Treatment (Remission)", color: C.green, icon: "✅",
items: ["Regular 3-monthly recall visits", "Monitor for drug side effects on teeth", "Fluoride therapy for xerostomia", "Screen for secondary oral cancers", "Psychological support and follow-up"]
},
];
sections.forEach((sec, i) => {
const x = 0.2 + i * 3.27;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.05, w: 3.1, h: 4.25, fill: { color: C.light }, rectRadius: 0.1, line: { color: sec.color, width: 2 } });
s.addShape(pres.ShapeType.rect, { x, y: 1.05, w: 3.1, h: 0.5, fill: { color: sec.color } });
s.addText(`${sec.icon} ${sec.title}`, { x: x + 0.05, y: 1.05, w: 3.0, h: 0.5, fontSize: 9.5, bold: true, color: C.white, valign: "middle", wrap: true });
sec.items.forEach((item, j) => {
s.addShape(pres.ShapeType.roundRect, { x: x + 0.12, y: 1.65 + j * 0.7, w: 2.86, h: 0.58, fill: { color: C.white }, rectRadius: 0.07, line: { color: sec.color, width: 0.5 } });
s.addText(item, { x: x + 0.2, y: 1.65 + j * 0.7, w: 2.7, h: 0.58, fontSize: 9, color: C.dark, wrap: true, valign: "middle" });
});
});
addFooter(s, 15);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 16 — SUMMARY
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.dark } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.gold } });
s.addShape(pres.ShapeType.ellipse, { x: 6.8, y: -0.5, w: 4.0, h: 4.0, fill: { color: "1B2A5A" }, line: { color: "253570", width: 1 } });
s.addText("KEY TAKEAWAYS", { x: 0.4, y: 0.4, w: 6, h: 0.5, fontSize: 22, bold: true, color: C.gold, charSpacing: 2 });
const takeaways = [
{ n: "1", txt: "Acute leukemia = clonal proliferation of immature hematopoietic blasts with maturation arrest" },
{ n: "2", txt: "B-ALL is most common in children; AML is most common in adults over 60 years" },
{ n: "3", txt: "Diagnosis requires ≥20% blasts in marrow, confirmed by morphology + immunophenotyping" },
{ n: "4", txt: "Oral signs (gingival hyperplasia, bleeding, ulcers) may be the FIRST presentation — dentist must recognize!" },
{ n: "5", txt: "M4/M5 AML subtypes most commonly produce oral/gingival manifestations" },
{ n: "6", txt: "Treatment: Induction → Consolidation → Maintenance ± HSCT for high-risk cases" },
{ n: "7", txt: "APL (M3) is treated with ATRA + arsenic trioxide — >90% cure rate" },
];
takeaways.forEach((t, i) => {
s.addShape(pres.ShapeType.ellipse, { x: 0.4, y: 1.05 + i * 0.62, w: 0.38, h: 0.38, fill: { color: C.gold } });
s.addText(t.n, { x: 0.4, y: 1.05 + i * 0.62, w: 0.38, h: 0.38, fontSize: 11, bold: true, color: C.dark, align: "center", valign: "middle" });
s.addText(t.txt, { x: 0.9, y: 1.07 + i * 0.62, w: 8.8, h: 0.5, fontSize: 10, color: C.white, wrap: true, valign: "middle" });
});
s.addText("Oral Pathology & Medicine | 3rd Year BDS | Acute Leukemia", { x: 0.4, y: 5.28, w: 9.2, h: 0.25, fontSize: 8, color: C.lgrey, italic: true });
addFooter(s, 16);
}
// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/acute-leukemia-bds/Acute_Leukemia_BDS.pptx" })
.then(() => console.log("✅ Presentation saved successfully."))
.catch(e => { console.error("Error:", e); process.exit(1); });
cd /home/daytona/workspace/acute-leukemia-bds && node build.js 2>&1
ls -lh /home/daytona/workspace/acute-leukemia-bds/Acute_Leukemia_BDS.pptx
Acute Leukemia BDS
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide with topic chips |
| 2 | Visual lecture outline (6 color-coded cards) |
| 3 | Introduction - Definition + ALL vs AML vs B-ALL comparison columns |
| 4 | Epidemiology stat boxes + simplified WHO classification table |
| 5 | Pathology - Normal haemopoiesis vs leukemic transformation flowchart |
| 6 | Marrow failure hub-and-spoke diagram (6 consequences) |
| 7 | Etiology - 4-category grid (Genetic, Radiation, Chemical, Viral) |
| 8 | Clinical features - body silhouette with labeled pointers + lab findings bar |
| 9 | Oral manifestations - 6 cards (gingival hyperplasia, bleeding, ulcers, pallor, petechiae, candidiasis) with dental relevance warning |
| 10 | Histopathology - ALL vs AML comparison table + immunophenotyping strip |
| 11 | FAB classification M0-M7 with M4/M5 highlighted as dentally relevant |
| 12 | Diagnosis flowchart (6-step ladder) |
| 13 | Treatment - 3-phase flow (Induction → Consolidation → Maintenance) |
| 14 | Targeted therapies + HSCT overview |
| 15 | Dental management (pre/during/post chemotherapy columns) |
| 16 | Key takeaways summary |