Create a ppt on acute lymphocytic leukaemia including histological features and clinical features add images of the same make a presentation for 3rd bds students
acute lymphoblastic leukemia histology microscopy images ALL pathology
acute lymphoblastic leukemia clinical features child petechiae lymphadenopathy image site:wikipedia.org OR site:wikimedia.org
mkdir -p /home/daytona/workspace/ALL-presentation && ls /home/daytona/workspace/…
~/ALL-presentation/create_ppt.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// ── colour palette (deep navy + crimson accent + white) ──────────────────────
const NAVY = "0D2B55";
const NAVY_MID = "16407A";
const CRIMSON = "C0392B";
const GOLD = "E8A838";
const LIGHT_BG = "EBF2FA";
const WHITE = "FFFFFF";
const DARK_TXT = "1A1A2E";
const GREY_TXT = "4A4A6A";
// ── download images as base64 ────────────────────────────────────────────────
const imgUrls = [
"https://www.rarediseaseadvisor.com/wp-content/uploads/sites/25/2024/03/Acute-lymphoblastic-leukemia-histology_G_1394232965.jpg",
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang12.jpg",
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang02.jpg",
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang10.jpg",
"https://cdn.orris.care/cdss_images/fdb5c8fe71e065c39b004c65cbed67f5cf283716771ad3ff5c3803b9d3115fb5.png"
];
console.log("Fetching images...");
const imgs = JSON.parse(
execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imgUrls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString()
);
console.log("Image fetch results:", imgs.map(i => ({ url: i.url.slice(-40), error: i.error, hasData: !!i.base64 })));
const [imgBloodSmearColor, imgHistoHE, imgHistoLN, imgBloodSmearMono, imgDiagram] = imgs;
// ── helpers ──────────────────────────────────────────────────────────────────
function navBar(slide, title) {
// top accent bar
slide.addShape("rect", { x: 0, y: 0, w: 10, h: 0.12, fill: { color: CRIMSON }, line: { color: CRIMSON } });
// navy header band
slide.addShape("rect", { x: 0, y: 0.12, w: 10, h: 0.72, fill: { color: NAVY }, line: { color: NAVY } });
slide.addText(title, {
x: 0.3, y: 0.12, w: 9.4, h: 0.72,
fontSize: 18, bold: true, color: WHITE,
fontFace: "Calibri", valign: "middle", margin: 0
});
}
function footerBar(slide, tag) {
slide.addShape("rect", { x: 0, y: 5.37, w: 10, h: 0.25, fill: { color: NAVY }, line: { color: NAVY } });
slide.addText(`Acute Lymphocytic Leukaemia | 3rd BDS | ${tag}`, {
x: 0.2, y: 5.37, w: 9.6, h: 0.25,
fontSize: 7.5, color: "AABBDD", fontFace: "Calibri", valign: "middle", margin: 0
});
}
function sectionCard(slide, x, y, w, h, titleText, bullets, accentColor = CRIMSON) {
slide.addShape("rect", { x, y, w, h, fill: { color: WHITE }, line: { color: accentColor, pt: 1.5 },
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.1 }
});
slide.addShape("rect", { x, y, w, h: 0.34, fill: { color: accentColor }, line: { color: accentColor } });
slide.addText(titleText, {
x: x + 0.1, y, w: w - 0.2, h: 0.34,
fontSize: 9.5, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0
});
const bulletItems = bullets.map((b, i) => ({
text: b,
options: { bullet: { type: "bullet" }, breakLine: i < bullets.length - 1, fontSize: 8.5, color: DARK_TXT, fontFace: "Calibri" }
}));
slide.addText(bulletItems, { x: x + 0.12, y: y + 0.38, w: w - 0.24, h: h - 0.44, valign: "top" });
}
// ── presentation ─────────────────────────────────────────────────────────────
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "3rd BDS Oral Pathology";
pres.title = "Acute Lymphocytic Leukaemia";
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — Title slide
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:NAVY }, line:{ color:NAVY } });
// diagonal crimson accent
s.addShape("rect", { x:6.8, y:0, w:3.2, h:5.625, fill:{ color:NAVY_MID }, line:{ color:NAVY_MID } });
// gold top bar
s.addShape("rect", { x:0, y:0, w:10, h:0.1, fill:{ color:GOLD }, line:{ color:GOLD } });
// crimson vertical accent
s.addShape("rect", { x:6.75, y:0.1, w:0.06, h:5.525, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
// blood smear image on the right half
if (imgBloodSmearColor.base64) {
s.addImage({ data: imgBloodSmearColor.base64, x:6.85, y:0.15, w:3.05, h:5.45, transparency:25 });
}
// main text block
s.addText("ACUTE LYMPHOCYTIC", {
x:0.5, y:1.1, w:6.0, h:0.75,
fontSize:30, bold:true, color:WHITE, fontFace:"Calibri", charSpacing:2
});
s.addText("LEUKAEMIA", {
x:0.5, y:1.85, w:6.0, h:0.75,
fontSize:36, bold:true, color:GOLD, fontFace:"Calibri", charSpacing:3
});
s.addShape("rect", { x:0.5, y:2.65, w:3.5, h:0.05, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("(ALL / Acute Lymphoblastic Leukemia)", {
x:0.5, y:2.75, w:6.0, h:0.4,
fontSize:12, italic:true, color:"AABBDD", fontFace:"Calibri"
});
s.addText([
{ text:"Presented for: ", options:{ bold:false } },
{ text:"3rd BDS Students", options:{ bold:true } }
], { x:0.5, y:3.3, w:6.0, h:0.35, fontSize:12, color:WHITE, fontFace:"Calibri" });
s.addText("Oral & General Pathology", {
x:0.5, y:3.7, w:6.0, h:0.35,
fontSize:11, italic:true, color:"88AACC", fontFace:"Calibri"
});
// badge
s.addShape("rect", { x:0.5, y:4.6, w:2.2, h:0.6, fill:{ color:CRIMSON }, line:{ color:CRIMSON },
shadow:{ type:"outer", color:"000000", blur:6, offset:2, angle:135, opacity:0.3 }
});
s.addText("ORAL PATHOLOGY", { x:0.5, y:4.6, w:2.2, h:0.6,
fontSize:9, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — Overview / Introduction
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Overview & Introduction");
footerBar(s, "Introduction");
// left big text block
s.addShape("rect", { x:0.3, y:1.0, w:5.6, h:4.1, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 },
shadow:{ type:"outer", color:"000000", blur:5, offset:2, angle:135, opacity:0.08 }
});
s.addShape("rect", { x:0.3, y:1.0, w:5.6, h:0.4, fill:{ color:NAVY }, line:{ color:NAVY } });
s.addText("What is ALL?", { x:0.4, y:1.0, w:5.4, h:0.4,
fontSize:13, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const defBullets = [
"Neoplasm of immature B (pre-B) or T (pre-T) lymphoid cells called LYMPHOBLASTS",
"Most common cancer of children — ~2500 new cases/year in USA",
"85% are B-ALL; 15% are T-ALL",
"B-ALL peaks at ~3 years of age; T-ALL peaks in adolescence",
"Slightly more frequent in boys; highest incidence in Hispanic/Latino children",
"Diagnosis requires ≥20% blasts of lymphoid origin in bone marrow",
"Classified as Acute Lymphoblastic Leukemia/Lymphoma (ALL/LBL)"
];
const defItems = defBullets.map((b,i) => ({
text: b,
options: { bullet:{ type:"bullet" }, breakLine: i < defBullets.length-1,
fontSize:9, color:DARK_TXT, fontFace:"Calibri" }
}));
s.addText(defItems, { x:0.45, y:1.45, w:5.35, h:3.5, valign:"top" });
// right: 3 stat cards
const cards = [
{ label:"Most Common\nChildhood Cancer", val:"#1", col:CRIMSON },
{ label:"5-year Survival\n(Children)", val:"~90%", col:NAVY },
{ label:"B-ALL\nProportion", val:"85%", col:"1E7A4C" }
];
cards.forEach((c,i) => {
const cx = 6.2, cy = 1.0 + i*1.35;
s.addShape("rect", { x:cx, y:cy, w:3.5, h:1.2, fill:{ color:c.col }, line:{ color:c.col },
shadow:{ type:"outer", color:"000000", blur:6, offset:2, angle:135, opacity:0.2 }
});
s.addText(c.val, { x:cx, y:cy+0.05, w:3.5, h:0.65,
fontSize:26, bold:true, color:GOLD, fontFace:"Calibri", align:"center", valign:"bottom"
});
s.addText(c.label, { x:cx, y:cy+0.7, w:3.5, h:0.45,
fontSize:9, color:WHITE, fontFace:"Calibri", align:"center", valign:"top"
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — Classification (FAB + Immunophenotypic)
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:"F5F8FC" }, line:{ color:"F5F8FC" } });
navBar(s, "Classification of ALL");
footerBar(s, "Classification");
// FAB table card
s.addShape("rect", { x:0.3, y:1.0, w:4.5, h:4.1, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:0.3, y:1.0, w:4.5, h:0.38, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("FAB Morphological Classification", { x:0.4, y:1.0, w:4.3, h:0.38,
fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const fabRows = [
["Type","Cell Size","Nucleus","Nucleoli","Cytoplasm"],
["L1","Small","Regular","Indistinct","Scant"],
["L2","Large","Irregular","Prominent","Moderate"],
["L3\n(Burkitt)","Large","Oval","Prominent","Vacuolated"]
];
const colW = [0.6, 0.9, 0.9, 0.9, 0.9];
fabRows.forEach((row, ri) => {
const ry = 1.42 + ri * 0.7;
const isHeader = ri === 0;
row.forEach((cell, ci) => {
const cx = 0.35 + colW.slice(0,ci).reduce((a,b)=>a+b,0);
if(isHeader){
s.addShape("rect", { x:cx, y:ry-0.04, w:colW[ci]-0.02, h:0.36,
fill:{ color:NAVY }, line:{ color:NAVY }
});
}
s.addText(cell, { x:cx+0.02, y:ry, w:colW[ci]-0.06, h:0.28,
fontSize: isHeader ? 7.5 : 8, bold: isHeader, color: isHeader ? WHITE : DARK_TXT,
fontFace:"Calibri", align:"center", valign:"middle"
});
});
});
s.addText("* L1 is most common in children\n* L2 is most common in adults\n* L3 is Burkitt-type (rare)", {
x:0.35, y:4.3, w:4.3, h:0.7,
fontSize:7.5, italic:true, color:GREY_TXT, fontFace:"Calibri"
});
// Immunophenotypic card
s.addShape("rect", { x:5.1, y:1.0, w:4.6, h:4.1, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:5.1, y:1.0, w:4.6, h:0.38, fill:{ color:NAVY }, line:{ color:NAVY } });
s.addText("Immunophenotypic Classification", { x:5.2, y:1.0, w:4.4, h:0.38,
fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const immunoBlocks = [
{ type:"Pre-B ALL (B-ALL)", color:CRIMSON, markers:"TdT+, HLA-DR+, CD19+, CD10+/-, CD34+\nSurface Ig absent" },
{ type:"T-ALL", color:"1E6B8C", markers:"TdT+, CD7+, CD3+\nHLA-DR-, CD19-, CD10-" },
{ type:"Common ALL", color:"1E7A4C", markers:"CD10+ (CALLA)\nMost favorable prognosis in children" }
];
immunoBlocks.forEach((blk, i) => {
const by = 1.48 + i * 1.2;
s.addShape("rect", { x:5.2, y:by, w:4.3, h:1.1, fill:{ color:blk.color+"22" }, line:{ color:blk.color, pt:1.5 } });
s.addShape("rect", { x:5.2, y:by, w:0.08, h:1.1, fill:{ color:blk.color }, line:{ color:blk.color } });
s.addText(blk.type, { x:5.35, y:by+0.05, w:4.0, h:0.28,
fontSize:9.5, bold:true, color:blk.color, fontFace:"Calibri"
});
s.addText(blk.markers, { x:5.35, y:by+0.35, w:4.0, h:0.68,
fontSize:8, color:DARK_TXT, fontFace:"Calibri"
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — Etiology & Pathogenesis
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Etiology & Pathogenesis");
footerBar(s, "Etiology & Pathogenesis");
// Diagram image on right
if (imgDiagram.base64) {
s.addShape("rect", { x:5.7, y:0.95, w:4.0, h:3.8, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data: imgDiagram.base64, x:5.75, y:1.0, w:3.9, h:3.7 });
s.addText("Origin of lymphoid neoplasms (Robbins, 2024)", {
x:5.7, y:4.75, w:4.0, h:0.28,
fontSize:6.5, italic:true, color:GREY_TXT, fontFace:"Calibri", align:"center"
});
}
sectionCard(s, 0.3, 1.0, 5.1, 1.65, "Predisposing Factors", [
"Ionizing radiation (prenatal X-ray exposure, nuclear fallout)",
"Chemical exposure — benzene, alkylating agents",
"Viral association — HTLV-1 (T-ALL)",
"Immunodeficiency syndromes (Wiskott-Aldrich, ataxia-telangiectasia)",
"Down syndrome — 20x increased risk"
], CRIMSON);
sectionCard(s, 0.3, 2.75, 5.1, 1.65, "Key Molecular Mechanisms", [
"B-ALL: mutations in PAX5, TCF3, ETV6, RUNX1 (transcription factors)",
"T-ALL: NOTCH1 mutations (50-70% of cases)",
"t(9;22) Philadelphia chromosome → BCR-ABL fusion (25% adults, 3% children)",
"t(12;21) ETV6-RUNX1 — most common translocation in children (25%), GOOD prognosis",
"Hyperdiploidy (>50 chr) — good prognosis; Hypodiploidy — poor prognosis",
"Mutations cause maturation arrest + increased self-renewal of blast cells"
], NAVY);
s.addShape("rect", { x:0.3, y:4.5, w:5.1, h:0.7, fill:{ color:GOLD+"33" }, line:{ color:GOLD, pt:1 } });
s.addText("Key concept: <10 mutations are sufficient to produce full-blown ALL (deep sequencing data)", {
x:0.4, y:4.5, w:4.9, h:0.7,
fontSize:8.5, italic:true, color:"6A4000", fontFace:"Calibri", valign:"middle"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — Clinical Features
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:"F5F8FC" }, line:{ color:"F5F8FC" } });
navBar(s, "Clinical Features");
footerBar(s, "Clinical Features");
// Blood smear image on left
if (imgBloodSmearMono.base64) {
s.addShape("rect", { x:0.3, y:1.0, w:3.2, h:2.6,
fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 },
shadow:{ type:"outer", color:"000000", blur:5, offset:2, angle:135, opacity:0.1 }
});
s.addImage({ data: imgBloodSmearMono.base64, x:0.35, y:1.05, w:3.1, h:2.3 });
s.addText("Peripheral blood smear — lymphoblasts (Giemsa)", {
x:0.3, y:3.32, w:3.2, h:0.28, fontSize:6.5, italic:true, color:GREY_TXT,
fontFace:"Calibri", align:"center"
});
}
// Feature cards
const features = [
{
title:"Due to Bone Marrow Failure",
items:["Anaemia → pallor, fatigue, exertional dyspnoea","Thrombocytopenia → petechiae, purpura, bleeding","Neutropenia → recurrent infections, fever","Pancytopenia on CBC"]
},
{
title:"Organ Infiltration Signs",
items:["Lymphadenopathy (generalised, non-tender)","Hepatosplenomegaly","Bone pain & tenderness (expansion of marrow)","Thymic enlargement/mediastinal mass (T-ALL)"]
},
{
title:"CNS Involvement",
items:["Headache, nausea, vomiting","Cranial nerve palsies","CNS is a sanctuary site — needs prophylaxis","Meningeal infiltration on CSF exam"]
},
{
title:"Other Features",
items:["Testicular enlargement (boys) — another sanctuary site","Weight loss, malaise, night sweats","Oral manifestations: gingival bleeding, mucosal pallor","Hyperleukocytosis → leucostasis in severe cases"]
}
];
const startX = [3.7, 6.85, 3.7, 6.85];
const startY = [1.0, 1.0, 3.05, 3.05];
const colors = [CRIMSON, NAVY, "1E7A4C", "7B3FA0"];
features.forEach((f, i) => {
sectionCard(s, startX[i], startY[i], 2.9, 1.95, f.title, f.items, colors[i]);
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — Histological Features (MAIN SLIDE)
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Histological & Morphological Features");
footerBar(s, "Histology");
// Left: histology images stacked
if (imgHistoHE.base64) {
s.addShape("rect", { x:0.25, y:1.0, w:3.2, h:2.5, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data: imgHistoHE.base64, x:0.3, y:1.05, w:3.1, h:2.2 });
s.addText("H&E: Bone marrow — sheets of lymphoblasts (small, uniform)", {
x:0.25, y:3.25, w:3.2, h:0.28, fontSize:6.5, italic:true, color:GREY_TXT,
fontFace:"Calibri", align:"center"
});
}
if (imgHistoLN.base64) {
s.addShape("rect", { x:0.25, y:3.6, w:3.2, h:1.7, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data: imgHistoLN.base64, x:0.3, y:3.65, w:3.1, h:1.4 });
s.addText("H&E: Lymph node — diffuse infiltration by blasts", {
x:0.25, y:5.07, w:3.2, h:0.25, fontSize:6.5, italic:true, color:GREY_TXT,
fontFace:"Calibri", align:"center"
});
}
// Right: histological features text blocks
const histo1 = [
"Small to medium-sized cells (10-20 μm)",
"HIGH nuclear-to-cytoplasmic (N:C) ratio",
"Round to slightly irregular nuclear contour",
"Finely stippled (salt-and-pepper) chromatin",
"Nucleoli: absent/indistinct (L1) or prominent (L2/L3)",
"Scant pale cytoplasm — NO granules",
"Delicate nuclear membrane"
];
const histo2 = [
"Bone marrow: hypercellular — blasts >20% nucleated cells",
"Diffuse effacement of normal marrow architecture",
"Starry-sky pattern may occur (like Burkitt lymphoma in L3)",
"Lymph nodes: diffuse paracortical/cortical obliteration",
"Spleen: diffuse white pulp expansion",
"Thymus: cortical infiltration (T-ALL)",
"Mitotic figures frequently seen"
];
sectionCard(s, 3.7, 1.0, 2.95, 2.6, "Lymphoblast Cytology", histo1, CRIMSON);
sectionCard(s, 6.75, 1.0, 2.95, 2.6, "Tissue Architecture", histo2, NAVY);
// Special stains bar
s.addShape("rect", { x:3.7, y:3.7, w:6.0, h:1.6, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:3.7, y:3.7, w:6.0, h:0.36, fill:{ color:"7B3FA0" }, line:{ color:"7B3FA0" } });
s.addText("Special Stains & Immunohistochemistry", { x:3.8, y:3.7, w:5.8, h:0.36,
fontSize:10, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const stainRows = [
["PAS (Periodic Acid-Schiff)", "Coarse block positivity (CHARACTERISTIC of ALL)"],
["Sudan Black B / MPO", "NEGATIVE (distinguishes from AML)"],
["TdT (Terminal Deoxynucleotidyl Transferase)", "Nuclear positivity — hallmark marker"],
["CD10 (CALLA)", "Positive in most B-ALL — good prognostic marker"],
["CD19, CD22 (B-ALL) | CD7, CD3 (T-ALL)", "Lineage-specific markers on flow cytometry"]
];
stainRows.forEach((row, i) => {
const ry = 4.1 + i * 0.22;
s.addText("• " + row[0], { x:3.8, y:ry, w:3.1, h:0.2, fontSize:7.5, bold:true, color:DARK_TXT, fontFace:"Calibri" });
s.addText(row[1], { x:6.95, y:ry, w:2.7, h:0.2, fontSize:7.5, color:GREY_TXT, fontFace:"Calibri" });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — Peripheral Blood Smear (dedicated image slide)
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:DARK_TXT }, line:{ color:DARK_TXT } });
navBar(s, "Peripheral Blood Smear — Microscopic Appearance");
footerBar(s, "Peripheral Blood Smear");
if (imgBloodSmearColor.base64) {
s.addImage({ data: imgBloodSmearColor.base64, x:0.3, y:0.95, w:5.5, h:4.3,
shadow:{ type:"outer", color:"000000", blur:8, offset:3, angle:135, opacity:0.5 }
});
}
// annotation callouts
const callouts = [
{ label:"Large lymphoblast", desc:"High N:C ratio, irregular nucleus", y:1.15 },
{ label:"Small lymphoblast", desc:"Round nucleus, scant cytoplasm", y:1.95 },
{ label:"Normal neutrophil", desc:"For size comparison — multilobed", y:2.75 },
{ label:"Erythrocytes", desc:"Normal red cells — anemia evident", y:3.55 },
{ label:"PAS positivity", desc:"Not shown here — see bone marrow", y:4.35 }
];
callouts.forEach(c => {
s.addShape("rect", { x:6.0, y:c.y, w:3.7, h:0.68, fill:{ color:WHITE+"22" }, line:{ color:WHITE+"55", pt:0.5 } });
s.addText(c.label, { x:6.1, y:c.y+0.04, w:3.5, h:0.24,
fontSize:9.5, bold:true, color:GOLD, fontFace:"Calibri"
});
s.addText(c.desc, { x:6.1, y:c.y+0.3, w:3.5, h:0.32,
fontSize:8, color:WHITE, fontFace:"Calibri"
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — Investigations & Diagnosis
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:"F5F8FC" }, line:{ color:"F5F8FC" } });
navBar(s, "Investigations & Diagnosis");
footerBar(s, "Investigations");
const invGroups = [
{
title:"Complete Blood Count (CBC)",
col:CRIMSON,
items:["WBC: variable (may be very high, normal or low)","Anaemia (normocytic, normochromic)","Thrombocytopenia (<100,000/μL in most)","Peripheral smear: lymphoblasts present"]
},
{
title:"Bone Marrow Aspiration & Biopsy",
col:NAVY,
items:["GOLD STANDARD for diagnosis","Blasts ≥20% of nucleated cells (WHO 2022)","Hypercellular marrow with sheets of blasts","Trephine biopsy for architecture"]
},
{
title:"Immunophenotyping (Flow Cytometry)",
col:"1E7A4C",
items:["Distinguishes B-ALL from T-ALL","Panel: TdT, CD19, CD10, CD7, CD3","Essential for lineage assignment","Identifies aberrant antigen expression"]
},
{
title:"Cytogenetics & Molecular Studies",
col:"7B3FA0",
items:["Karyotype: hyperdiploidy / hypodiploidy / translocations","FISH / PCR: detect t(9;22), t(12;21), KMT2A","Minimal residual disease (MRD) monitoring","Next generation sequencing in select cases"]
},
{
title:"CSF Analysis (Lumbar Puncture)",
col:"B05A00",
items:["CNS involvement in ~5% at diagnosis","Blasts in CSF = CNS leukemia","Performed after platelet correction","Intrathecal chemotherapy given prophylactically"]
},
{
title:"Imaging Studies",
col:"1E5E7A",
items:["CXR / CT chest: mediastinal widening (T-ALL)","Ultrasound abdomen: hepatosplenomegaly","Skeletal survey: osteopenia, lytic lesions","MRI: CNS / spinal cord involvement"]
}
];
const colX = [0.25, 3.45, 6.65];
const rowY = [1.0, 3.1];
invGroups.forEach((g, i) => {
const xi = i % 3, yi = Math.floor(i / 3);
sectionCard(s, colX[xi], rowY[yi], 2.95, 1.95, g.title, g.items, g.col);
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — Treatment & Prognosis
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Treatment & Prognosis");
footerBar(s, "Treatment & Prognosis");
sectionCard(s, 0.25, 1.0, 3.0, 2.7, "Chemotherapy Phases", [
"1. INDUCTION (4-6 weeks): VCR + Pred + Asparaginase ± Daunorubicin → CR in >95% children",
"2. CNS PROPHYLAXIS: Intrathecal MTX / CNS irradiation",
"3. CONSOLIDATION: High-dose MTX, 6-MP",
"4. MAINTENANCE (2-3 years): Daily 6-MP + weekly MTX",
"Total duration: ~2-3 years"
], NAVY);
sectionCard(s, 0.25, 3.8, 3.0, 1.5, "Targeted Therapy", [
"Imatinib / Dasatinib: BCR-ABL+ (Ph+ ALL)",
"CD19-directed CAR-T cell therapy (Tisagenlecleucel)",
"Blinatumomab: bispecific T-cell engager (anti-CD3/CD19)"
], CRIMSON);
// Prognostic factors table
s.addShape("rect", { x:3.5, y:1.0, w:6.2, h:4.3, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:3.5, y:1.0, w:6.2, h:0.38, fill:{ color:"1E7A4C" }, line:{ color:"1E7A4C" } });
s.addText("Prognostic Factors", { x:3.6, y:1.0, w:6.0, h:0.38,
fontSize:12, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const progTable = [
["Factor","Favorable","Unfavorable"],
["Age","1-10 years","<1 yr or >10 yrs"],
["WBC at diagnosis","<50,000/μL",">50,000/μL"],
["Cytogenetics","Hyperdiploidy, t(12;21)","Hypodiploidy, t(9;22)"],
["Response to Rx","Early CR","Slow/no response"],
["MRD at end induction","MRD negative","MRD positive"],
["Immunophenotype","B-ALL (common)","T-ALL, Pro-B ALL"],
["5-yr survival (children)","~90%","~40-60%"]
];
progTable.forEach((row, ri) => {
const ry = 1.43 + ri * 0.43;
const isH = ri === 0;
const fills = ["F0F8FF","E8F5E9","FFF3E0"];
const bgCol = isH ? "E8F0FB" : fills[(ri-1)%3];
s.addShape("rect", { x:3.55, y:ry-0.02, w:6.0, h:0.42, fill:{ color:bgCol }, line:{ color:"DDDDDD", pt:0.5 } });
const cws = [1.8, 2.0, 2.1];
const cxs = [3.6, 5.45, 7.5];
row.forEach((cell, ci) => {
s.addText(cell, { x:cxs[ci], y:ry, w:cws[ci], h:0.38,
fontSize: isH ? 8.5 : 8,
bold: isH || ci===0,
color: isH ? NAVY : (ci===1 ? "1E7A4C" : (ci===2 ? CRIMSON : DARK_TXT)),
fontFace:"Calibri", valign:"middle"
});
});
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — Dental / Oral Significance for BDS Students
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:"F5F8FC" }, line:{ color:"F5F8FC" } });
navBar(s, "Oral & Dental Significance — BDS Perspective");
footerBar(s, "Dental Significance");
// Left column
sectionCard(s, 0.25, 1.0, 4.7, 2.0, "Oral Manifestations of ALL", [
"Gingival bleeding — due to thrombocytopenia",
"Mucosal pallor — due to anaemia",
"Oral ulceration / mucositis — post-chemotherapy",
"Gingival hypertrophy / infiltration by leukemic cells",
"Petechiae on oral mucosa and soft palate",
"Opportunistic infections: candidiasis, HSV, CMV",
"Toothache / bone pain — marrow infiltration"
], CRIMSON);
sectionCard(s, 0.25, 3.1, 4.7, 2.2, "Dental Management Considerations", [
"Medical clearance BEFORE any dental procedure",
"Check CBC: delay if platelets <50,000/μL or ANC <1000/μL",
"Avoid elective extractions during active leukemia",
"Antibiotic prophylaxis for invasive procedures if immunocompromised",
"Fluoride supplements — prevent rampant caries during chemo",
"Coordinate with haematologist for timing of dental work",
"Patient/parent counselling on oral hygiene during chemotherapy"
], NAVY);
// Right: high yield facts for exam
s.addShape("rect", { x:5.2, y:1.0, w:4.5, h:4.3, fill:{ color:NAVY }, line:{ color:NAVY },
shadow:{ type:"outer", color:"000000", blur:6, offset:2, angle:135, opacity:0.3 }
});
s.addShape("rect", { x:5.2, y:1.0, w:4.5, h:0.42, fill:{ color:GOLD }, line:{ color:GOLD } });
s.addText("HIGH YIELD EXAM POINTS", { x:5.3, y:1.0, w:4.3, h:0.42,
fontSize:11, bold:true, color:NAVY, fontFace:"Calibri", valign:"middle", align:"center", margin:0
});
const examPoints = [
"ALL = most common childhood cancer",
"85% B-ALL | 15% T-ALL",
"PAS: coarse block positivity (ALL)",
"TdT: nuclear+, hallmark of ALL",
"MPO / Sudan Black B: NEGATIVE (vs AML)",
"t(12;21) = best prognosis in children",
"t(9;22) = Ph chromosome, worst prognosis",
"Diagnosis: ≥20% blasts in bone marrow",
"Starry-sky pattern: ALL-L3 (Burkitt type)",
"CR rate in children: >95%",
"CNS + testes = sanctuary sites",
"CAR-T (Tisagenlecleucel) approved for B-ALL"
];
const examItems = examPoints.map((p,i) => ({
text: p,
options: { bullet:{ type:"bullet" }, breakLine: i < examPoints.length-1,
fontSize:8.5, color:i%2===0 ? WHITE : GOLD, fontFace:"Calibri" }
}));
s.addText(examItems, { x:5.3, y:1.48, w:4.2, h:3.7, valign:"top" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — Summary & Thank You
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:NAVY }, line:{ color:NAVY } });
s.addShape("rect", { x:0, y:0, w:10, h:0.12, fill:{ color:GOLD }, line:{ color:GOLD } });
s.addShape("rect", { x:0, y:5.5, w:10, h:0.125, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
// Big summary grid
const summaryItems = [
{ icon:"🔬", head:"Definition", body:"Neoplasm of immature B/T lymphoblasts\n#1 childhood cancer" },
{ icon:"🧬", head:"Pathogenesis", body:"Transcription factor mutations\nChromosomal translocations" },
{ icon:"🩺", head:"Clinical", body:"Pallor, petechiae, lymphadenopathy\nHepatosplenomegaly, bone pain" },
{ icon:"🔎", head:"Histology", body:"High N:C ratio, scant cytoplasm\nFine chromatin, PAS+ blocks" },
{ icon:"💉", head:"Diagnosis", body:"BM biopsy ≥20% blasts\nTdT+, flow cytometry" },
{ icon:"💊", head:"Treatment", body:"Induction → CNS prophylaxis\n→ Consolidation → Maintenance" }
];
summaryItems.forEach((item, i) => {
const xi = (i % 3) * 3.2 + 0.2;
const yi = Math.floor(i / 3) * 2.1 + 0.7;
s.addShape("rect", { x:xi, y:yi, w:3.0, h:1.9, fill:{ color:NAVY_MID }, line:{ color:WHITE+"44", pt:1 } });
s.addShape("rect", { x:xi, y:yi, w:3.0, h:0.45, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText(item.icon + " " + item.head, { x:xi+0.05, y:yi, w:2.9, h:0.45,
fontSize:11, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
s.addText(item.body, { x:xi+0.1, y:yi+0.5, w:2.8, h:1.3,
fontSize:9, color:"CCDDFF", fontFace:"Calibri"
});
});
s.addShape("rect", { x:1.5, y:5.1, w:7.0, h:0.38, fill:{ color:GOLD+"44" }, line:{ color:GOLD, pt:1 } });
s.addText("Thank You — Questions Welcome", {
x:1.5, y:5.1, w:7.0, h:0.38,
fontSize:12, bold:true, color:GOLD, fontFace:"Calibri", align:"center", valign:"middle"
});
}
// ── write file ──────────────────────────────────────────────────────────────
const outPath = "/home/daytona/workspace/ALL-presentation/Acute_Lymphocytic_Leukaemia_3BDS.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("✅ PPTX written to:", outPath);
}).catch(err => {
console.error("❌ Error:", err);
process.exit(1);
});
cd /home/daytona/workspace/ALL-presentation && node create_ppt.js 2>&1
sed -i \ 's/"C0392B22"/"FDECEA"/g; s/"1E6B8C22"/"E3F2FD"/g; s/"1E7A4C22"/"E8F5…
ls -lh /home/daytona/workspace/ALL-presentation/Acute_Lymphocytic_Leukaemia_3BDS…
Acute Lymphocytic Leukaemia 3BDS
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - with blood smear image as background |
| 2 | Overview & Introduction - definition, epidemiology, stat cards |
| 3 | Classification - FAB (L1/L2/L3) table + Immunophenotypic (Pre-B, T-ALL, Common ALL) |
| 4 | Etiology & Pathogenesis - predisposing factors, molecular mechanisms, B/T-cell origin diagram from Robbins |
| 5 | Clinical Features - bone marrow failure, organ infiltration, CNS involvement, other features (4 cards) |
| 6 | Histological Features (MAIN) - lymphoblast cytology, tissue architecture, special stains table (PAS, Sudan Black, TdT, CD10, etc.) with H&E images |
| 7 | Peripheral Blood Smear - full-screen microscopy image with annotated callouts |
| 8 | Investigations & Diagnosis - CBC, BM biopsy, flow cytometry, cytogenetics, CSF, imaging |
| 9 | Treatment & Prognosis - chemotherapy phases, targeted therapy, prognostic factors table |
| 10 | Oral & Dental Significance - oral manifestations, dental management, high-yield exam points |
| 11 | Summary & Thank You - 6-point summary grid |
Crest the ppt in 4 slides
~/ALL-presentation/create_ppt_4slides.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
const NAVY = "0D2B55";
const NAVY_MID = "16407A";
const CRIMSON = "C0392B";
const GOLD = "E8A838";
const LIGHT_BG = "EBF2FA";
const WHITE = "FFFFFF";
const DARK_TXT = "1A1A2E";
const GREY_TXT = "4A4A6A";
// Fetch images
const imgUrls = [
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang12.jpg",
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang02.jpg",
"https://www.pathologyoutlines.com/imgau/lymphnodesALLTsang10.jpg",
"https://cdn.orris.care/cdss_images/fdb5c8fe71e065c39b004c65cbed67f5cf283716771ad3ff5c3803b9d3115fb5.png"
];
console.log("Fetching images...");
const imgs = JSON.parse(
execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imgUrls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString()
);
console.log("Images:", imgs.map(i => ({ ok: !!i.base64, err: i.error })));
const [imgHistoHE, imgHistoLN, imgBloodSmear, imgDiagram] = imgs;
// ── helpers ──────────────────────────────────────────────────────────────────
function navBar(slide, title) {
slide.addShape("rect", { x:0, y:0, w:10, h:0.1, fill:{ color:GOLD }, line:{ color:GOLD } });
slide.addShape("rect", { x:0, y:0.1, w:10, h:0.68, fill:{ color:NAVY }, line:{ color:NAVY } });
slide.addShape("rect", { x:0, y:0.1, w:0.06, h:0.68, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
slide.addText(title, {
x:0.18, y:0.1, w:9.6, h:0.68,
fontSize:18, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
}
function footer(slide, pg) {
slide.addShape("rect", { x:0, y:5.38, w:10, h:0.245, fill:{ color:NAVY }, line:{ color:NAVY } });
slide.addText(`Acute Lymphocytic Leukaemia | 3rd BDS | ${pg} | Oral Pathology`, {
x:0.2, y:5.38, w:9.6, h:0.245,
fontSize:7, color:"AABBDD", fontFace:"Calibri", valign:"middle", margin:0
});
}
function card(slide, x, y, w, h, title, bullets, accentCol) {
slide.addShape("rect", { x, y, w, h, fill:{ color:WHITE }, line:{ color:accentCol, pt:1.5 },
shadow:{ type:"outer", color:"888888", blur:5, offset:2, angle:135, opacity:0.12 }
});
slide.addShape("rect", { x, y, w, h:0.33, fill:{ color:accentCol }, line:{ color:accentCol } });
slide.addText(title, { x:x+0.1, y, w:w-0.2, h:0.33,
fontSize:9, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0
});
const items = bullets.map((b,i) => ({
text: b,
options:{ bullet:{ type:"bullet" }, breakLine: i < bullets.length-1,
fontSize:8, color:DARK_TXT, fontFace:"Calibri" }
}));
slide.addText(items, { x:x+0.12, y:y+0.36, w:w-0.24, h:h-0.42, valign:"top" });
}
// ── build presentation ────────────────────────────────────────────────────────
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Acute Lymphocytic Leukaemia — 3rd BDS";
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — Title + Overview
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
// Full navy bg
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:NAVY }, line:{ color:NAVY } });
// Right panel lighter
s.addShape("rect", { x:5.8, y:0, w:4.2, h:5.625, fill:{ color:NAVY_MID }, line:{ color:NAVY_MID } });
// Gold top bar
s.addShape("rect", { x:0, y:0, w:10, h:0.09, fill:{ color:GOLD }, line:{ color:GOLD } });
// Crimson divider
s.addShape("rect", { x:5.75, y:0, w:0.06, h:5.625, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
// Bottom bar
s.addShape("rect", { x:0, y:5.53, w:10, h:0.095, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
// Image on right
if (imgHistoHE.base64) {
s.addImage({ data:imgHistoHE.base64, x:5.85, y:0.12, w:4.05, h:5.35, transparency:20 });
}
// Left: Title text
s.addText("ACUTE", { x:0.5, y:0.7, w:5.1, h:0.65, fontSize:34, bold:true, color:WHITE, fontFace:"Calibri", charSpacing:5 });
s.addText("LYMPHOCYTIC", { x:0.5, y:1.35, w:5.1, h:0.65, fontSize:34, bold:true, color:GOLD, fontFace:"Calibri", charSpacing:3 });
s.addText("LEUKAEMIA", { x:0.5, y:2.0, w:5.1, h:0.65, fontSize:34, bold:true, color:WHITE, fontFace:"Calibri", charSpacing:3 });
s.addShape("rect", { x:0.5, y:2.72, w:4.0, h:0.05, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("(ALL / Acute Lymphoblastic Leukemia)", { x:0.5, y:2.82, w:5.0, h:0.35, fontSize:11, italic:true, color:"AABBDD", fontFace:"Calibri" });
// Quick facts
const facts = ["Most common childhood cancer", "85% B-ALL | 15% T-ALL", "Peak age: 3 years (B-ALL)", "5-yr survival: ~90% in children"];
facts.forEach((f, i) => {
s.addShape("rect", { x:0.5, y:3.35+i*0.47, w:0.06, h:0.28, fill:{ color:GOLD }, line:{ color:GOLD } });
s.addText(f, { x:0.68, y:3.35+i*0.47, w:4.8, h:0.3, fontSize:10, color:WHITE, fontFace:"Calibri", valign:"middle" });
});
// Presented for badge
s.addShape("rect", { x:0.5, y:5.1, w:3.5, h:0.38, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("Presented for: 3rd BDS | Oral Pathology", { x:0.5, y:5.1, w:3.5, h:0.38,
fontSize:9, bold:true, color:WHITE, fontFace:"Calibri", align:"center", valign:"middle"
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — Clinical Features + Etiology
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Etiology & Clinical Features");
footer(s, "Slide 2/4");
// Image (diagram) top right
if (imgDiagram.base64) {
s.addShape("rect", { x:6.9, y:0.9, w:2.85, h:2.5, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data:imgDiagram.base64, x:6.95, y:0.95, w:2.75, h:2.25 });
s.addText("Origin of lymphoid neoplasms (Robbins, 2024)", { x:6.9, y:3.22, w:2.85, h:0.22, fontSize:5.5, italic:true, color:GREY_TXT, fontFace:"Calibri", align:"center" });
}
// Etiology card — left top
card(s, 0.25, 0.9, 3.3, 2.0, "Etiology / Predisposing Factors", [
"Ionizing radiation (prenatal X-rays, fallout)",
"Chemical exposure: benzene, alkylating agents",
"HTLV-1 virus (T-ALL association)",
"Down syndrome — 20x increased risk",
"Immunodeficiency: Wiskott-Aldrich, AT",
"t(9;22) Ph chromosome — 25% adults, 3% children"
], CRIMSON);
// Pathogenesis card — left bottom
card(s, 0.25, 2.98, 3.3, 2.0, "Pathogenesis (Key Mutations)", [
"B-ALL: PAX5, TCF3, ETV6, RUNX1 mutations",
"T-ALL: NOTCH1 mutations (50-70%)",
"t(12;21) ETV6-RUNX1: best prognosis (25% children)",
"Hyperdiploidy (>50 chr): good prognosis",
"Hypodiploidy: poor prognosis",
"Maturation arrest + increased self-renewal"
], NAVY);
// Clinical features — middle
card(s, 3.75, 0.9, 2.9, 2.0, "Due to Bone Marrow Failure", [
"Anaemia → pallor, fatigue, dyspnoea",
"Thrombocytopenia → petechiae, purpura",
"Neutropenia → infections, fever",
"Pancytopenia on CBC"
], "1E7A4C");
card(s, 3.75, 2.98, 2.9, 2.0, "Organ Infiltration Signs", [
"Generalised lymphadenopathy",
"Hepatosplenomegaly",
"Bone pain & tenderness",
"Mediastinal mass (T-ALL)",
"CNS: headache, cranial nerve palsies",
"Testicular enlargement (boys)"
], "7B3FA0");
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — Histological Features (with images)
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:"F5F8FC" }, line:{ color:"F5F8FC" } });
navBar(s, "Histological Features");
footer(s, "Slide 3/4");
// Image 1: bone marrow H&E
if (imgHistoHE.base64) {
s.addShape("rect", { x:0.25, y:0.9, w:3.0, h:2.2, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data:imgHistoHE.base64, x:0.3, y:0.95, w:2.9, h:1.95 });
s.addShape("rect", { x:0.25, y:2.9, w:3.0, h:0.3, fill:{ color:NAVY }, line:{ color:NAVY } });
s.addText("H&E — Bone marrow: sheets of lymphoblasts", { x:0.3, y:2.91, w:2.9, h:0.28, fontSize:6.5, color:WHITE, fontFace:"Calibri", valign:"middle" });
}
// Image 2: lymph node
if (imgHistoLN.base64) {
s.addShape("rect", { x:0.25, y:3.28, w:3.0, h:1.85, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data:imgHistoLN.base64, x:0.3, y:3.33, w:2.9, h:1.6 });
s.addShape("rect", { x:0.25, y:4.93, w:3.0, h:0.3, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("H&E — Lymph node: diffuse blast infiltration", { x:0.3, y:4.94, w:2.9, h:0.28, fontSize:6.5, color:WHITE, fontFace:"Calibri", valign:"middle" });
}
// Image 3: blood smear
if (imgBloodSmear.base64) {
s.addShape("rect", { x:3.45, y:0.9, w:2.8, h:2.2, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addImage({ data:imgBloodSmear.base64, x:3.5, y:0.95, w:2.7, h:1.95 });
s.addShape("rect", { x:3.45, y:2.9, w:2.8, h:0.3, fill:{ color:"1E7A4C" }, line:{ color:"1E7A4C" } });
s.addText("Peripheral smear — lymphoblasts circulating", { x:3.5, y:2.91, w:2.7, h:0.28, fontSize:6.5, color:WHITE, fontFace:"Calibri", valign:"middle" });
}
// Histological features text — right
s.addShape("rect", { x:3.45, y:3.28, w:6.3, h:1.95, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:3.45, y:3.28, w:6.3, h:0.33, fill:{ color:"7B3FA0" }, line:{ color:"7B3FA0" } });
s.addText("Special Stains & Markers", { x:3.55, y:3.28, w:6.1, h:0.33, fontSize:9.5, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0 });
const stains = [
["PAS stain","Coarse block positivity — CHARACTERISTIC of ALL"],
["Sudan Black B / MPO","NEGATIVE — distinguishes ALL from AML"],
["TdT (nuclear)","POSITIVE — hallmark marker of ALL (immature lymphoblasts)"],
["CD10 / CALLA","Positive in B-ALL — favourable prognostic marker"],
["CD19, CD22","B-ALL lineage | CD7, CD3 — T-ALL lineage (flow cytometry)"]
];
stains.forEach((row, i) => {
const ry = 3.65 + i * 0.3;
s.addShape("rect", { x:3.55, y:ry, w:1.5, h:0.27, fill:{ color:"7B3FA022" }, line:{ color:"7B3FA0", pt:0.5 } });
s.addText(row[0], { x:3.58, y:ry+0.03, w:1.44, h:0.22, fontSize:7.5, bold:true, color:"7B3FA0", fontFace:"Calibri", valign:"middle" });
s.addText(row[1], { x:5.1, y:ry+0.03, w:4.55, h:0.22, fontSize:7.5, color:DARK_TXT, fontFace:"Calibri", valign:"middle" });
});
// Cytology features card — top right
s.addShape("rect", { x:6.45, y:0.9, w:3.3, h:2.2, fill:{ color:WHITE }, line:{ color:CRIMSON, pt:1.5 } });
s.addShape("rect", { x:6.45, y:0.9, w:3.3, h:0.33, fill:{ color:CRIMSON }, line:{ color:CRIMSON } });
s.addText("Lymphoblast Cytology", { x:6.55, y:0.9, w:3.1, h:0.33, fontSize:9.5, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0 });
const cytoItems = [
"Small–medium cells (10–20 μm)",
"HIGH nuclear-to-cytoplasmic ratio",
"Round/irregular nuclear contour",
"Finely stippled (salt-and-pepper) chromatin",
"Nucleoli: indistinct (L1) / prominent (L2)",
"Scant pale cytoplasm — NO granules",
"Frequent mitotic figures"
].map((b,i) => ({ text:b, options:{ bullet:{ type:"bullet" }, breakLine: i<6, fontSize:7.5, color:DARK_TXT, fontFace:"Calibri" } }));
s.addText(cytoItems, { x:6.58, y:1.27, w:3.1, h:1.78, valign:"top" });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — Investigations, Treatment & Dental Significance
// ════════════════════════════════════════════════════════════════════════════
{
let s = pres.addSlide();
s.addShape("rect", { x:0, y:0, w:10, h:5.625, fill:{ color:LIGHT_BG }, line:{ color:LIGHT_BG } });
navBar(s, "Diagnosis, Treatment & Dental Significance");
footer(s, "Slide 4/4");
// Investigations
card(s, 0.25, 0.9, 3.0, 2.35, "Investigations", [
"CBC: anaemia, thrombocytopenia, variable WBC",
"Peripheral smear: circulating blasts",
"Bone marrow biopsy: GOLD STANDARD (≥20% blasts)",
"Flow cytometry: TdT+, lineage markers",
"Cytogenetics: t(9;22), t(12;21), hyperdiploidy",
"CSF analysis: CNS involvement",
"CXR/CT: mediastinal mass (T-ALL)"
], NAVY);
// Treatment
card(s, 0.25, 3.33, 3.0, 1.95, "Treatment", [
"Induction: VCR + Pred + Asparaginase (CR >95%)",
"CNS prophylaxis: intrathecal methotrexate",
"Consolidation: high-dose MTX, 6-MP",
"Maintenance: 2–3 years (6-MP + MTX)",
"Ph+ ALL: imatinib/dasatinib added",
"CAR-T (CD19): relapsed/refractory B-ALL"
], CRIMSON);
// Prognosis table
s.addShape("rect", { x:3.45, y:0.9, w:3.3, h:2.35, fill:{ color:WHITE }, line:{ color:"CCDDEE", pt:1 } });
s.addShape("rect", { x:3.45, y:0.9, w:3.3, h:0.33, fill:{ color:"1E7A4C" }, line:{ color:"1E7A4C" } });
s.addText("Prognostic Factors", { x:3.55, y:0.9, w:3.1, h:0.33, fontSize:9.5, bold:true, color:WHITE, fontFace:"Calibri", valign:"middle", margin:0 });
const progRows = [
["Factor","Favorable","Unfavorable"],
["Age","1–10 yrs","<1 or >10 yrs"],
["WBC","<50,000","≥50,000/μL"],
["Cytogenetics","Hyperdiploidy\nt(12;21)","Hypodiploidy\nt(9;22)"],
["5-yr survival","~90% (child)","~40–60%"]
];
progRows.forEach((row, ri) => {
const ry = 1.27 + ri * 0.38;
const isH = ri === 0;
const bg = isH ? "E8F0FB" : (ri%2===0 ? "F7FBFF" : "FFFFFF");
s.addShape("rect", { x:3.5, y:ry-0.02, w:3.2, h:0.38, fill:{ color:bg }, line:{ color:"DDDDDD", pt:0.5 } });
const cws = [0.95, 1.0, 1.0]; const cxs = [3.55, 4.55, 5.6];
row.forEach((cell, ci) => {
s.addText(cell, { x:cxs[ci], y:ry, w:cws[ci], h:0.34,
fontSize: isH ? 7.5 : 7, bold: isH || ci===0,
color: isH ? NAVY : (ci===1 ? "1E7A4C" : (ci===2 ? CRIMSON : DARK_TXT)),
fontFace:"Calibri", valign:"middle"
});
});
});
// Dental significance — high yield card (right)
s.addShape("rect", { x:6.95, y:0.9, w:2.8, h:4.38, fill:{ color:NAVY }, line:{ color:NAVY },
shadow:{ type:"outer", color:"333333", blur:6, offset:2, angle:135, opacity:0.3 }
});
s.addShape("rect", { x:6.95, y:0.9, w:2.8, h:0.38, fill:{ color:GOLD }, line:{ color:GOLD } });
s.addText("HIGH YIELD — BDS", { x:6.95, y:0.9, w:2.8, h:0.38, fontSize:10, bold:true, color:NAVY, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
const hySections = [
{ head:"Oral Manifestations", col:CRIMSON, pts:["Gingival bleeding (thrombocytopenia)","Mucosal pallor (anaemia)","Petechiae on soft palate","Gingival infiltration by blasts","Oral candidiasis (immunosuppressed)"] },
{ head:"Dental Management", col:GOLD, pts:["Check CBC before any procedure","Delay if plt <50,000 or ANC <1000","Antibiotic prophylaxis if neutropenic","Coordinate with haematologist","Fluoride for caries prevention"] }
];
let ty = 1.35;
hySections.forEach(sec => {
s.addShape("rect", { x:7.05, y:ty, w:2.6, h:0.26, fill:{ color:sec.col }, line:{ color:sec.col } });
s.addText(sec.head, { x:7.05, y:ty, w:2.6, h:0.26, fontSize:8, bold:true, color:NAVY, fontFace:"Calibri", align:"center", valign:"middle", margin:0 });
ty += 0.28;
sec.pts.forEach(p => {
s.addText("• " + p, { x:7.08, y:ty, w:2.55, h:0.28, fontSize:7, color:WHITE, fontFace:"Calibri", valign:"middle" });
ty += 0.28;
});
ty += 0.1;
});
// Oral significance card below prognosis
card(s, 3.45, 3.33, 3.3, 1.95, "Classification (FAB)", [
"L1 — Small uniform blasts; most common in children",
"L2 — Large irregular blasts; most common in adults",
"L3 — Large vacuolated blasts; Burkitt-type (rare)",
"WHO 2022: classification by immunophenotype preferred",
"TdT+ (nuclear) differentiates ALL from mature NHL"
], "7B3FA0");
}
// ── write ─────────────────────────────────────────────────────────────────────
const out = "/home/daytona/workspace/ALL-presentation/ALL_4Slides_3BDS.pptx";
pres.writeFile({ fileName: out }).then(() => {
console.log("✅ Written:", out);
}).catch(err => {
console.error("❌", err); process.exit(1);
});
cd /home/daytona/workspace/ALL-presentation && node create_ppt_4slides.js 2>&1
ls -lh /home/daytona/workspace/ALL-presentation/ALL_4Slides_3BDS.pptx
ALL 4Slides 3BDS
Presentation · PPTX
| Slide | Title | Content |
|---|---|---|
| 1 | Title + Overview | Definition, quick facts (most common childhood cancer, 85% B-ALL, peak age, survival), bold navy/gold title design with histology image |
| 2 | Etiology & Clinical Features | Predisposing factors, key mutations (PAX5, NOTCH1, translocations), bone marrow failure signs, organ infiltration signs — with Robbins lymphoid origin diagram |
| 3 | Histological Features | 3 embedded images (H&E bone marrow, H&E lymph node, peripheral smear) + lymphoblast cytology table + special stains (PAS, Sudan Black, TdT, CD10, CD19/CD7) |
| 4 | Diagnosis, Treatment & Dental Significance | Investigations, FAB classification, prognostic factors table, treatment phases (induction → maintenance), BDS High-Yield panel (oral manifestations + dental management) |