I want 7 pages ppt about Microbiology diagnosis of Intestinal and urogenital protozoa (Entamoeba histolytica (Amebae), Balantidium coli (Ciliates), Giardia lamblia, Trichomonas vaginalis (Flagellates), Cryptosporidium parvum and Isospora belli (Sporozoa)
Entamoeba histolytica trophozoite cyst microscopy diagnosis
Giardia lamblia trophozoite cyst microscopy Cryptosporidium oocyst Trichomonas vaginalis
Cryptosporidium parvum oocyst acid-fast stain Isospora belli Balantidium coli diagnosis
Trichomonas vaginalis wet mount diagnosis laboratory
ls -la /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/protozoa-ppt
~/protozoa-ppt/build.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Microbiology Diagnosis of Intestinal & Urogenital Protozoa";
// ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
const DARK_BG = "0D1B2A"; // deep navy
const MID_BG = "1B2E45"; // medium navy
const ACCENT = "00C9A7"; // teal-green
const ACCENT2 = "4FC3F7"; // sky-blue
const YELLOW = "FFD166"; // warm yellow
const WHITE = "FFFFFF";
const LIGHT_GRY = "D0E4F0";
const PARA_TEXT = "B8D4E8";
// ─── HELPER ──────────────────────────────────────────────────────────────────
function addSlide() { return pres.addSlide(); }
function darkBg(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
}
function sideBar(slide, color) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.12, h: 5.625, fill: { color: color || ACCENT } });
}
function slideTitle(slide, text, sub) {
slide.addText(text, {
x: 0.25, y: 0.15, w: 9.5, h: 0.6,
fontSize: 22, bold: true, color: ACCENT, fontFace: "Calibri",
margin: 0
});
if (sub) {
slide.addText(sub, {
x: 0.25, y: 0.72, w: 9.5, h: 0.3,
fontSize: 11, color: ACCENT2, fontFace: "Calibri", italic: true, margin: 0
});
}
// divider
slide.addShape(pres.ShapeType.line, {
x: 0.25, y: 1.0, w: 9.5, h: 0,
line: { color: ACCENT, width: 1.5 }
});
}
function bullet(text, indent) {
return { text, options: { bullet: { code: "2022" }, indentLevel: indent || 0, breakLine: true, color: PARA_TEXT, fontSize: 11, fontFace: "Calibri" } };
}
function bulletBold(text) {
return { text, options: { bullet: { code: "25B6" }, color: ACCENT, bold: true, breakLine: true, fontSize: 12, fontFace: "Calibri" } };
}
function subBullet(text) {
return { text, options: { bullet: { code: "2013" }, indentLevel: 1, breakLine: true, color: PARA_TEXT, fontSize: 10, fontFace: "Calibri" } };
}
function tag(text, color) {
return { text, options: { color: WHITE, bold: true, fontSize: 9, fontFace: "Calibri",
highlight: color || "1B5E20", breakLine: false } };
}
// ─── FETCH IMAGES ────────────────────────────────────────────────────────────
const imageUrls = [
"https://cdn.orris.care/cdss_images/HARRISON_1763034414452_8dc59e08-0dc6-49d5-9b36-0859d14ba4b6.png", // 0 E. histo life cycle
"https://cdn.orris.care/cdss_images/Pathology_1760053338475_64df7eb3-612d-4e22-9257-26fb2ae47c7e.jpg", // 1 E. histo PAS colitis
"https://cdn.orris.care/cdss_images/HARRISON_1763036086992_877d723d-1227-431d-9cf7-73120f745a8d.png", // 2 Diagnosis table Harrison
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5d03438ae31d69771eadbc504620e76d4620d8a9e7fd333ae25992b83ff7b1b3.jpg", // 3 T. vaginalis diagram
"https://cdn.orris.care/cdss_images/e89ba3f6788f362ed9cb20eff515297f89db1d709a15653ed79ccedb9b592b5f.png", // 4 Balantidium coli life cycle (72.7)
"https://cdn.orris.care/cdss_images/38af6412050cc16b646b047267583daf789094a803b5ea9fcfaad9794aec4c29.png", // 5 Isospora life cycle (72.8)
"https://cdn.orris.care/cdss_images/639918593b06264594cfdc99321d289735a642ebb2474f34bfae72257a0ccd84.png", // 6 Isospora/Cryptosporidium (72.9)
];
console.log("Fetching images...");
const imgs = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`
).toString());
function img(i) { return imgs[i] && !imgs[i].error ? imgs[i].base64 : null; }
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 ─ TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
// full-slide gradient panel
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
// accent bar left
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: ACCENT } });
// bottom strip
s.addShape(pres.ShapeType.rect, { x: 0, y: 5.1, w: 10, h: 0.525, fill: { color: MID_BG } });
s.addText("MICROBIOLOGY DIAGNOSIS", {
x: 0.4, y: 1.05, w: 9.2, h: 0.7,
fontSize: 34, bold: true, color: WHITE, fontFace: "Calibri",
charSpacing: 3, align: "left", margin: 0
});
s.addText("of Intestinal & Urogenital Protozoa", {
x: 0.4, y: 1.75, w: 9.2, h: 0.5,
fontSize: 22, color: ACCENT, fontFace: "Calibri", italic: false, align: "left", margin: 0
});
s.addShape(pres.ShapeType.line, { x: 0.4, y: 2.3, w: 5.0, h: 0, line: { color: ACCENT, width: 2 } });
// organism pills
const orgs = [
"Entamoeba histolytica", "Balantidium coli", "Giardia lamblia",
"Trichomonas vaginalis", "Cryptosporidium parvum", "Isospora belli"
];
const colors = [ACCENT, "2196F3", "E91E63", "FF9800", "9C27B0", "4CAF50"];
orgs.forEach((o, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
s.addShape(pres.ShapeType.roundRect, {
x: 0.4 + col * 3.1, y: 2.5 + row * 0.65, w: 2.9, h: 0.52,
fill: { color: colors[i] }, rectRadius: 0.08
});
s.addText(o, {
x: 0.4 + col * 3.1, y: 2.5 + row * 0.65, w: 2.9, h: 0.52,
fontSize: 9.5, color: WHITE, bold: true, align: "center", valign: "middle",
fontFace: "Calibri", italic: true, margin: 0
});
});
s.addText("Medical Microbiology | Parasitology Unit", {
x: 0.4, y: 5.15, w: 9.2, h: 0.35,
fontSize: 10, color: LIGHT_GRY, fontFace: "Calibri", align: "left", margin: 0
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 ─ OVERVIEW + CLASSIFICATION
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, ACCENT);
slideTitle(s, "Overview & Classification", "Protozoa as human pathogens");
// left column — classification card
s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 4.55, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("CLASSIFICATION", { x: 0.35, y: 1.15, w: 4.35, h: 0.38,
fontSize: 12, bold: true, color: ACCENT, fontFace: "Calibri", margin: 4 });
const groups = [
{ g: "AMEBAE", sp: "Entamoeba histolytica", c: ACCENT },
{ g: "CILIATES", sp: "Balantidium coli (Neobalanidium)", c: "2196F3" },
{ g: "FLAGELLATES", sp: "Giardia lamblia • Trichomonas vaginalis", c: "E91E63" },
{ g: "SPOROZOA", sp: "Cryptosporidium parvum • Isospora belli", c: "FF9800" },
];
groups.forEach((g, i) => {
s.addShape(pres.ShapeType.roundRect, {
x: 0.35, y: 1.6 + i * 0.85, w: 1.2, h: 0.5,
fill: { color: g.c }, rectRadius: 0.05
});
s.addText(g.g, { x: 0.35, y: 1.6 + i * 0.85, w: 1.2, h: 0.5,
fontSize: 8, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
s.addText(g.sp, { x: 1.6, y: 1.6 + i * 0.85, w: 3.1, h: 0.5,
fontSize: 9.5, color: LIGHT_GRY, fontFace: "Calibri", italic: true, valign: "middle", margin: 0 });
});
// right column — diagnostic overview
s.addShape(pres.ShapeType.roundRect, { x: 4.95, y: 1.1, w: 4.8, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("KEY DIAGNOSTIC METHODS", { x: 5.05, y: 1.15, w: 4.6, h: 0.38,
fontSize: 12, bold: true, color: ACCENT2, fontFace: "Calibri", margin: 4 });
const methods = [
["Microscopy", "Wet mount, trichrome stain, iodine stain — detect trophozoites & cysts in stool or vaginal secretions"],
["Acid-Fast Stain", "Modified Kinyoun/Ziehl-Neelsen — for oocysts (Cryptosporidium, Isospora)"],
["Antigen Detection", "EIA / RIA / DFA for Giardia, Cryptosporidium, E. histolytica"],
["Serology", "Serum antibody detection — useful for extra-intestinal amoebiasis"],
["Molecular (PCR)", "Highest sensitivity/specificity; multi-pathogen panels now available"],
["Culture / Biopsy", "Rarely used; biopsy for refractory cases (Giardia, Isospora)"],
];
methods.forEach(([m, d], i) => {
s.addText(`● ${m}`, { x: 5.05, y: 1.6 + i * 0.58, w: 4.6, h: 0.22,
fontSize: 10, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
s.addText(d, { x: 5.25, y: 1.82 + i * 0.58, w: 4.4, h: 0.28,
fontSize: 8.5, color: PARA_TEXT, fontFace: "Calibri", margin: 0 });
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 ─ ENTAMOEBA HISTOLYTICA (AMEBAE)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, ACCENT);
slideTitle(s, "Entamoeba histolytica — Amebae", "Intestinal & extra-intestinal amebiasis");
// left panel — content
s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 5.4, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText([
bulletBold("Specimen"),
bullet("Fresh stool (trophozoites in loose stool; cysts in formed stool)", 0),
bullet("Liver aspirate for extra-intestinal abscess", 0),
bulletBold("Microscopy (O&P)"),
bullet("Trophozoite: 12–50 μm, fine peripheral chromatin, central karyosome", 0),
bullet("Cysts: 10–20 μm, 1–4 nuclei, chromatoidal bars with rounded ends", 0),
bullet("Pathognomonic: ingested RBCs in trophozoite cytoplasm", 0),
bullet("Distinguish from E. coli (8 nuclei, splintered chromatoidal bars)", 0),
bulletBold("Antigen Tests (EIA)"),
bullet("Detect Gal/GalNAc lectin — differentiates E. histolytica from E. dispar", 0),
bullet("Higher sensitivity than microscopy alone", 0),
bulletBold("Serology"),
bullet("Indirect haemagglutination or ELISA — positive in >90% of hepatic abscess", 0),
bulletBold("Molecular (PCR)"),
bullet("Most sensitive; differentiates E. histolytica / E. dispar / E. moshkovskii", 0),
], { x: 0.35, y: 1.15, w: 5.2, h: 3.9, valign: "top", margin: 4 });
// right panel — image
if (img(1)) {
s.addImage({ data: img(1), x: 5.8, y: 1.1, w: 3.95, h: 2.55, sizing: { type: "contain", w: 3.95, h: 2.55 } });
s.addText("PAS-stained colonic biopsy — E. histolytica trophozoites (magenta) invading mucosa", {
x: 5.8, y: 3.68, w: 3.95, h: 0.45, fontSize: 8, color: PARA_TEXT, italic: true, fontFace: "Calibri",
align: "center", margin: 0
});
}
// key morphology table box
s.addShape(pres.ShapeType.roundRect, { x: 5.8, y: 4.15, w: 3.95, h: 1.0, fill: { color: "132238" }, rectRadius: 0.08 });
s.addText("⚠ Morphologically identical to E. dispar — use antigen test or PCR to confirm pathogenic species", {
x: 5.9, y: 4.2, w: 3.75, h: 0.9, fontSize: 9.5, color: YELLOW, fontFace: "Calibri", bold: false, margin: 4
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 ─ BALANTIDIUM COLI + GIARDIA LAMBLIA
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, "2196F3");
slideTitle(s, "Balantidium coli & Giardia lamblia", "Ciliate | Intestinal Flagellate");
// ── B. coli (left) ────────────────────────────────────────────────────────
s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 4.6, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("BALANTIDIUM COLI (Neobalanidium coli)", {
x: 0.35, y: 1.15, w: 4.4, h: 0.35, fontSize: 10.5, bold: true, color: "4FC3F7", fontFace: "Calibri", margin: 0
});
s.addText([
bullet("Largest protozoan to infect humans; covered with cilia", 0),
bulletBold("Specimen"),
bullet("Fresh stool — wet preparation (saline or iodine)", 0),
bulletBold("Trophozoite morphology"),
bullet("50–200 μm × 40–70 μm; surface cilia; prominent bean-shaped macronucleus + micronucleus", 0),
bullet("Two pulsating contractile vacuoles visible in fresh prep", 0),
bulletBold("Cyst morphology"),
bullet("40–60 μm; clear refractive wall; single nucleus", 0),
bulletBold("Key point"),
bullet("Largest intestinal protozoan — readily detected in wet prep without special stains", 0),
bullet("Reservoir: swine; risk factor = pig contact & poor sanitation", 0),
bulletBold("Treatment"),
bullet("Tetracycline (drug of choice); iodoquinol or metronidazole as alternatives", 0),
], { x: 0.35, y: 1.52, w: 4.4, h: 3.55, valign: "top", margin: 2 });
// ── Giardia (right) ───────────────────────────────────────────────────────
s.addShape(pres.ShapeType.roundRect, { x: 5.0, y: 1.1, w: 4.75, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("GIARDIA LAMBLIA (G. duodenalis / G. intestinalis)", {
x: 5.1, y: 1.15, w: 4.55, h: 0.35, fontSize: 10.5, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0
});
s.addText([
bullet("Most common intestinal protozoan worldwide; waterborne transmission", 0),
bulletBold("Specimen"),
bullet("Stool (cysts + trophozoites), duodenal aspirate / string test, small bowel biopsy", 0),
bulletBold("Microscopy — Trophozoite"),
bullet("Pear-shaped, 12–15 μm × 6–8 μm; 2 nuclei (owl-eye appearance); prominent ventral sucking disk; 4 pairs of flagella", 0),
bulletBold("Microscopy — Cyst"),
bullet("Oval, 8–12 μm; 2–4 nuclei; fibrillar remnants of axonemes", 0),
bullet("Trichrome or iodine stain recommended", 0),
bulletBold("Antigen Detection"),
bullet("EIA and DFA (direct fluorescent antibody) — sensitivity >90%, preferred over microscopy", 0),
bulletBold("Molecular (PCR/NAAT)"),
bullet("Multi-pathogen panels; FDA-cleared platforms available", 0),
bulletBold("Treatment"),
bullet("Metronidazole or tinidazole; nitazoxanide for resistant cases", 0),
], { x: 5.1, y: 1.52, w: 4.55, h: 3.55, valign: "top", margin: 2 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 ─ TRICHOMONAS VAGINALIS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, "E91E63");
slideTitle(s, "Trichomonas vaginalis — Urogenital Flagellate", "Sexually transmitted protozoan infection");
// left info panel
s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 5.4, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText([
bulletBold("Unique features"),
bullet("ONLY trophozoite form (no cyst stage)", 0),
bullet("4 anterior flagella + 1 recurrent flagellum forming undulating membrane", 0),
bullet("Rod-like axostyle runs through cell body; hydrogenosomes (anaerobic metabolism)", 0),
bulletBold("Specimen of Choice"),
bullet("Vaginal secretions (women) — highest yield; urethral swab, urine (men)", 0),
bullet("Must be processed immediately — trophozoites die rapidly at ambient temp", 0),
bulletBold("Wet Mount (Gold Standard — rapid)"),
bullet("Motile, pear-shaped trophozoites, 10–30 μm with tumbling motility", 0),
bullet("Sensitivity 50–70%; specificity near 100%", 0),
bulletBold("Culture — InPouch TV System"),
bullet("Most sensitive traditional method (~95%); requires 5–7 day incubation", 0),
bulletBold("Antigen / Immunoassay"),
bullet("OSOM Trichomonas Rapid Test (CLIA-waived), Affirm VPIII — sensitivity ~80–90%", 0),
bulletBold("NAAT / PCR"),
bullet("Highest sensitivity >95%; FDA-cleared assays (e.g. Aptima TV) — method of choice", 0),
bulletBold("Treatment"),
bullet("Metronidazole or tinidazole (single dose); treat sexual partners concurrently", 0),
], { x: 0.35, y: 1.15, w: 5.2, h: 3.9, valign: "top", margin: 2 });
// right — structure diagram
if (img(3)) {
s.addImage({ data: img(3), x: 5.85, y: 1.1, w: 3.9, h: 2.7, sizing: { type: "contain", w: 3.9, h: 2.7 } });
s.addText("Structural diagram of T. vaginalis trophozoite\n(4 anterior flagella, undulating membrane, axostyle, hydrogenosomes)", {
x: 5.85, y: 3.82, w: 3.9, h: 0.55, fontSize: 8, color: PARA_TEXT, italic: true, fontFace: "Calibri", align: "center", margin: 0
});
}
s.addShape(pres.ShapeType.roundRect, { x: 5.85, y: 4.4, w: 3.9, h: 0.75, fill: { color: "3D0020" }, rectRadius: 0.08 });
s.addText("Prevalence 5–20% women, 2–10% men worldwide. NAAT (Aptima) is the recommended diagnostic method.", {
x: 5.95, y: 4.43, w: 3.7, h: 0.7, fontSize: 9, color: YELLOW, fontFace: "Calibri", margin: 3
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 ─ CRYPTOSPORIDIUM PARVUM + ISOSPORA BELLI (SPOROZOA)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, "FF9800");
slideTitle(s, "Cryptosporidium parvum & Isospora belli — Sporozoa", "Coccidian intestinal parasites | acid-fast positive oocysts");
// Cryptosporidium left
s.addShape(pres.ShapeType.roundRect, { x: 0.25, y: 1.1, w: 4.6, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("CRYPTOSPORIDIUM PARVUM", {
x: 0.35, y: 1.15, w: 4.4, h: 0.32, fontSize: 11, bold: true, color: "FF9800", fontFace: "Calibri", margin: 0
});
s.addText([
bullet("Infects intestinal epithelial brush border; self-limiting in immunocompetent hosts; life-threatening in AIDS", 0),
bulletBold("Specimen"),
bullet("Stool (fresh or preserved — SAF, PVA, formalin)", 0),
bulletBold("Modified Acid-Fast Stain (KEY test)"),
bullet("Oocysts: 4–6 μm (tiny), pink/red against green/blue background", 0),
bullet("Must differentiate from Cyclospora (8–10 μm, variable AF staining)", 0),
bulletBold("DFA (Direct Fluorescent Antibody)"),
bullet("Most sensitive microscopic method — apple-green fluorescent oocysts", 0),
bulletBold("Antigen Detection (EIA)"),
bullet("High sensitivity/specificity; widely used in clinical labs", 0),
bulletBold("NAAT / PCR"),
bullet("Multi-panel molecular assays — gold standard sensitivity", 0),
bulletBold("Special note"),
bullet("Oocysts NOT visible on routine O&P trichrome stain — must specifically request acid-fast", 0),
bulletBold("Treatment"),
bullet("Nitazoxanide (immunocompetent); no curative therapy for immunocompromised — antiretrovirals help", 0),
], { x: 0.35, y: 1.5, w: 4.4, h: 3.55, valign: "top", margin: 2 });
// Isospora right
s.addShape(pres.ShapeType.roundRect, { x: 5.0, y: 1.1, w: 4.75, h: 4.1, fill: { color: MID_BG }, rectRadius: 0.1 });
s.addText("ISOSPORA BELLI (Cystoisospora belli)", {
x: 5.1, y: 1.15, w: 4.55, h: 0.32, fontSize: 11, bold: true, color: "4CAF50", fontFace: "Calibri", margin: 0
});
s.addText([
bullet("Coccidian; both asexual (schizogony) & sexual (gametogony) stages in intestinal epithelium", 0),
bullet("Fecal-oral route; oral-anal sexual contact; particularly severe in AIDS patients", 0),
bulletBold("Specimen"),
bullet("Fresh stool (concentrated sediment); duodenal biopsy if stool negative", 0),
bulletBold("Modified Acid-Fast Stain"),
bullet("Oocysts: large, 20–33 μm × 10–19 μm (elongated/elliptical)", 0),
bullet("Immature (unsporulated) oocysts typically passed in stool", 0),
bullet("Pink-red against green/blue background on Kinyoun stain", 0),
bulletBold("Iodine Stain"),
bullet("Can reveal oocysts in concentrated sediment", 0),
bulletBold("Autofluorescence"),
bullet("Oocysts fluoresce under UV light — useful screening tool", 0),
bulletBold("Biopsy"),
bullet("Small bowel biopsy — all stages visible; used when stool tests negative", 0),
bulletBold("Treatment"),
bullet("TMP-SMX (drug of choice); pyrimethamine + sulfadiazine as alternative", 0),
], { x: 5.1, y: 1.5, w: 4.55, h: 3.55, valign: "top", margin: 2 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 ─ SUMMARY COMPARISON TABLE + DIAGNOSTIC ALGORITHMS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = addSlide();
darkBg(s);
sideBar(s, YELLOW);
slideTitle(s, "Comparative Summary — Laboratory Diagnosis", "Specimen · Method · Diagnostic Stage · Treatment");
// Harrison's diagnostic table image
if (img(2)) {
s.addImage({ data: img(2), x: 5.85, y: 1.08, w: 3.9, h: 1.55, sizing: { type: "contain", w: 3.9, h: 1.55 } });
s.addText("Diagnosis of Intestinal Protozoal Infections\n(Harrison's Principles of Internal Medicine)", {
x: 5.85, y: 2.65, w: 3.9, h: 0.35, fontSize: 7.5, color: PARA_TEXT, italic: true, fontFace: "Calibri", align: "center", margin: 0
});
}
// table header
const hdrY = 1.12;
const cols = [0.22, 1.6, 3.3, 4.95, 6.45];
const colW = [1.35, 1.65, 1.6, 1.45, 1.5];
const hdrs = ["ORGANISM", "DIAGNOSTIC STAGE", "KEY TEST", "SPECIAL STAIN", "Rx"];
hdrs.forEach((h, i) => {
s.addShape(pres.ShapeType.rect, { x: cols[i], y: hdrY, w: colW[i], h: 0.32, fill: { color: ACCENT } });
s.addText(h, { x: cols[i], y: hdrY, w: colW[i], h: 0.32, fontSize: 8, bold: true, color: DARK_BG,
align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
});
const rows = [
["E. histolytica", "Cyst / Trophozoite (stool)", "Microscopy + EIA antigen", "Trichrome", "Metronidazole + Paromomycin"],
["Balantidium coli", "Cyst / Trophozoite (stool)", "Wet mount microscopy", "None needed (large size)", "Tetracycline"],
["Giardia lamblia", "Cyst / Trophozoite (stool)", "EIA antigen / DFA", "Trichrome / iodine", "Metronidazole / Tinidazole"],
["T. vaginalis", "Trophozoite (vaginal/urethral)", "NAAT (Aptima TV)", "None (wet mount)", "Metronidazole / Tinidazole"],
["Cryptosporidium", "Oocyst (stool)", "Acid-fast stain / EIA", "Modified Kinyoun / DFA", "Nitazoxanide"],
["Isospora belli", "Oocyst (stool)", "Acid-fast stain / UV autofluorescence", "Modified Kinyoun", "TMP-SMX"],
];
const rowColors = [DARK_BG, MID_BG, DARK_BG, MID_BG, DARK_BG, MID_BG];
rows.forEach((row, ri) => {
row.forEach((cell, ci) => {
s.addShape(pres.ShapeType.rect, {
x: cols[ci], y: hdrY + 0.32 + ri * 0.42, w: colW[ci], h: 0.42,
fill: { color: rowColors[ri] }, line: { color: "1a3050", width: 0.5 }
});
s.addText(cell, {
x: cols[ci], y: hdrY + 0.32 + ri * 0.42, w: colW[ci], h: 0.42,
fontSize: 7.5, color: ci === 0 ? ACCENT : LIGHT_GRY, fontFace: "Calibri",
bold: ci === 0, align: "center", valign: "middle", margin: 2
});
});
});
// Key take-aways box
s.addShape(pres.ShapeType.roundRect, { x: 0.22, y: 4.68, w: 5.5, h: 0.82, fill: { color: MID_BG }, rectRadius: 0.08 });
s.addText([
{ text: "Key Points: ", options: { bold: true, color: YELLOW, fontSize: 9.5, fontFace: "Calibri" } },
{ text: "Acid-fast stain required for Cryptosporidium & Isospora oocysts • E. histolytica needs antigen test to differentiate from E. dispar • NAAT is gold-standard for T. vaginalis • Balantidium is detected on simple wet mount due to large size", options: { color: PARA_TEXT, fontSize: 9, fontFace: "Calibri" } },
], { x: 0.32, y: 4.7, w: 5.3, h: 0.78, margin: 4 });
// source note
s.addText("Sources: Murray Medical Microbiology 9e | Tietz Laboratory Medicine 7e | Harrison's Principles 21e", {
x: 5.85, y: 5.22, w: 3.9, h: 0.3, fontSize: 7, color: "607890", italic: true, fontFace: "Calibri",
align: "center", margin: 0
});
}
// ─── WRITE FILE ──────────────────────────────────────────────────────────────
const outPath = "/home/daytona/workspace/protozoa-ppt/Intestinal_Urogenital_Protozoa_Diagnosis.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("DONE:", outPath);
}).catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/protozoa-ppt && node build.js 2>&1
~/protozoa-ppt/build.js
Error: String not found in file: '// ─── FETCH IMAGES ────────────────────────────────────────────────────────────
const imageUrls = [
"https://cdn.orris.care/cdss_images/HARRISON_1763034414452_8dc59e08-0dc6-49d5-9b36-0859d14ab4b6.png", // 0 E. histo life cycle
"https://cdn.orris.care/cdss_images/Pathology_1760053338475_64df7eb3-612d-4e22-9257-26fb2ae47c7e.jpg", // 1 E. histo PAS colitis
"https://cdn.orris.care/cdss_images/HARRISON_1763036086992_877d723d-1227-431d-9cf7-73120f745a8d.png", // 2 Diagnosis table Harrison
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5d03438ae31d69771eadbc504620e76d4620d8a9e7fd333ae25992b83ff7b1b3.jpg", // 3 T. vaginalis diagram
"https://cdn.orris.care/cdss_images/e89ba3f6788f362ed9cb20eff515297f89db1d709a15653ed79ccedb9b592b5f.png", // 4 Balantidium coli life cycle (72.7)
"https://cdn.orris.care/cdss_images/38af6412050cc16b646b047267583daf789094a803b5ea9fcfaad9794aec4c29.png", // 5 Isospora life cycle (72.8)
"https://cdn.orris.care/cdss_images/639918593b06264594cfdc99321d289735a642ebb2474f34bfae72257a0ccd84.png", // 6 Isospora/Cryptosporidium (72.9)
];
console.log("Fetching images...");
const imgs = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`
).toString());
function img(i) { return imgs[i] && !imgs[i].error ? imgs[i].base64 : null; }'~/protozoa-ppt/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/protozoa-ppt/build.js'
cd /home/daytona/workspace/protozoa-ppt && node build.js 2>&1
Intestinal Urogenital Protozoa Diagnosis
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 — Title | Full dark-navy cover with organism name pills color-coded by group |
| 2 — Overview & Classification | 4-group taxonomy (Amebae, Ciliates, Flagellates, Sporozoa) + 6 diagnostic methods with descriptions |
| 3 — Entamoeba histolytica | Specimen types, trophozoite/cyst morphology (size, karyosome, RBC ingestion), antigen EIA, serology, PCR — with PAS-stained biopsy image |
| 4 — Balantidium coli + Giardia lamblia | Side-by-side: B. coli wet prep features (macronucleus, cilia, size) vs. Giardia owl-eye trophozoites, cysts, DFA/EIA, NAAT |
| 5 — Trichomonas vaginalis | Unique trophozoite-only form, wet mount sensitivity, culture (InPouch), rapid antigen tests, NAAT (Aptima) as gold standard — with structural diagram |
| 6 — Cryptosporidium + Isospora | Side-by-side Sporozoa: acid-fast stain details, oocyst sizes (4–6 μm vs 20–33 μm), DFA, EIA, NAAT, biopsy for Isospora |
| 7 — Comparative Summary Table | Full comparison table (organism, diagnostic stage, key test, special stain, treatment) + Harrison's diagnostic methods table image + key take-away points |
Canu generate with pictures and simple words
Entamoeba histolytica cyst trophozoite stool microscopy
Giardia lamblia cyst trophozoite owl eye microscopy stool
Cryptosporidium parvum oocyst acid fast stain red pink
Trichomonas vaginalis trophozoite wet mount microscopy flagella
Isospora belli Cystoisospora oocyst stool modified acid fast
Balantidium coli trophozoite cyst large ciliate intestine
~/protozoa-ppt/build2.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Microbiology Diagnosis of Intestinal and Urogenital Protozoa";
// ── PALETTE ──────────────────────────────────────────────────────────────────
const NAVY = "0D1B2A";
const CARD = "162840";
const TEAL = "00C9A7";
const BLUE = "4FC3F7";
const YELLOW = "FFD166";
const PINK = "FF6B9D";
const ORANGE = "FF9F43";
const GREEN = "26DE81";
const PURPLE = "A55EEA";
const WHITE = "FFFFFF";
const LTGRY = "C8DFF0";
const DGRY = "607890";
// ── HELPERS ───────────────────────────────────────────────────────────────────
function bg(s, color) {
s.addShape(pres.ShapeType.rect, { x:0,y:0,w:10,h:5.625, fill:{color: color||NAVY} });
}
function topBar(s, color) {
s.addShape(pres.ShapeType.rect, { x:0,y:0,w:10,h:0.55, fill:{color: color||TEAL} });
}
function badge(s, txt, x, y, w, color) {
s.addShape(pres.ShapeType.roundRect, { x,y,w, h:0.38, fill:{color}, rectRadius:0.08 });
s.addText(txt, { x,y,w, h:0.38, fontSize:9, bold:true, color:WHITE,
align:"center", valign:"middle", fontFace:"Calibri", margin:0 });
}
function heading(s, txt, color) {
s.addText(txt, { x:0.28,y:0.07,w:9.4,h:0.42,
fontSize:20, bold:true, color:WHITE, fontFace:"Calibri",
align:"left", valign:"middle", margin:0, shadow:{type:"outer",color:"000000",blur:4,offset:2,angle:135,opacity:0.5} });
s.addText(color ? "" : "", {}); // no-op placeholder
}
function card(s, x, y, w, h, color) {
s.addShape(pres.ShapeType.roundRect, { x,y,w,h, fill:{color: color||CARD}, rectRadius:0.12,
shadow:{type:"outer",color:"000000",blur:6,offset:3,angle:135,opacity:0.35} });
}
// Fetch one image at a time
function fetchImg(url) {
try {
const r = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js "${url}"`,
{ maxBuffer: 20*1024*1024 }
).toString());
return r[0] && !r[0].error ? r[0].base64 : null;
} catch(e) { return null; }
}
// ── PRE-FETCH ALL IMAGES ─────────────────────────────────────────────────────
console.log("Fetching images...");
const URLS = {
ehisto_lifecycle: "https://cdn.orris.care/cdss_images/HARRISON_1763034414452_8dc59e08-0dc6-49d5-9b36-0859d14ba4b6.png",
ehisto_micro: "https://cdn.orris.care/cdss_images/Pathology_1760053339435_ade1bfe9-8e94-4515-8110-2a1831717479.jpg",
ehisto_tissue: "https://cdn.orris.care/cdss_images/Pathology_1760053338475_64df7eb3-612d-4e22-9257-26fb2ae47c7e.jpg",
balant_lifecycle:"https://cdn.orris.care/cdss_images/e89ba3f6788f362ed9cb20eff515297f89db1d709a15653ed79ccedb9b592b5f.png",
giardia_sem: "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_3fcefadc458a13ce6b7e25c0e1211c1cb4a50236008ff4c30df25efabaa24de5.jpg",
tvag_diagram: "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5d03438ae31d69771eadbc504620e76d4620d8a9e7fd333ae25992b83ff7b1b3.jpg",
tvag_lifecycle: "https://cdn.orris.care/cdss_images/e0dcd2a0140e9136d4c5b0dfb69c1979ddbf1f02810b08cb65c6ea16676b9679.png",
crypto_fluor: "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_96383d5fd044ba6c6a24865c738b7dc0d7cd9430f66e046f661874c592b45614.jpg",
isospora_lc: "https://cdn.orris.care/cdss_images/38af6412050cc16b646b047267583daf789094a803b5ea9fcfaad9794aec4c29.png",
isospora_micro: "https://cdn.orris.care/cdss_images/639918593b06264594cfdc99321d289735a642ebb2474f34bfae72257a0ccd84.png",
harrison_table: "https://cdn.orris.care/cdss_images/HARRISON_1763036086992_877d723d-1227-431d-9cf7-73120f745a8d.png",
};
const I = {};
for (const [k,url] of Object.entries(URLS)) {
I[k] = fetchImg(url);
console.log(` ${k}: ${I[k] ? "ok" : "failed"}`);
}
function addImg(s, key, x, y, w, h, caption) {
if (!I[key]) return;
s.addImage({ data: I[key], x, y, w, h, sizing:{type:"contain",w,h} });
if (caption) {
s.addText(caption, { x, y:y+h+0.04, w, h:0.28,
fontSize:8, color:DGRY, italic:true, fontFace:"Calibri", align:"center", margin:0 });
}
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s, NAVY);
// large teal top band
s.addShape(pres.ShapeType.rect, { x:0,y:0,w:10,h:1.4, fill:{color:TEAL} });
s.addShape(pres.ShapeType.rect, { x:0,y:1.4,w:10,h:0.06, fill:{color:YELLOW} });
s.addText("Microbiology Diagnosis of", {
x:0.4,y:0.1,w:9.2,h:0.55,
fontSize:26, bold:true, color:NAVY, fontFace:"Calibri", align:"left", margin:0 });
s.addText("Intestinal & Urogenital Protozoa", {
x:0.4,y:0.65,w:9.2,h:0.55,
fontSize:22, bold:true, color:NAVY, fontFace:"Calibri", align:"left", margin:0 });
// Organism tiles — 2 rows × 3
const tiles = [
{ name:"Entamoeba histolytica", sub:"Amebae", color:"00897B" },
{ name:"Balantidium coli", sub:"Ciliates", color:"1E88E5" },
{ name:"Giardia lamblia", sub:"Flagellates",color:"E91E63" },
{ name:"Trichomonas vaginalis", sub:"Flagellates",color:"FF9800" },
{ name:"Cryptosporidium parvum", sub:"Sporozoa", color:"7B1FA2" },
{ name:"Isospora belli", sub:"Sporozoa", color:"558B2F" },
];
tiles.forEach((t, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.3 + col * 3.15;
const y = 1.6 + row * 1.05;
s.addShape(pres.ShapeType.roundRect, { x,y,w:3.0,h:0.9, fill:{color:t.color}, rectRadius:0.1,
shadow:{type:"outer",color:"000000",blur:5,offset:2,angle:135,opacity:0.4} });
s.addText(t.sub.toUpperCase(), { x,y:y+0.04,w:3.0,h:0.25,
fontSize:8, bold:true, color:"FFFFFF", align:"center", fontFace:"Calibri",
charSpacing:2, transparency:30, margin:0 });
s.addText(t.name, { x,y:y+0.28,w:3.0,h:0.48,
fontSize:11.5, bold:true, color:WHITE, align:"center", italic:true, fontFace:"Calibri", margin:0 });
});
s.addText("Medical Microbiology · Parasitology", {
x:0.3,y:5.3,w:9.4,h:0.28,
fontSize:10, color:DGRY, fontFace:"Calibri", align:"right", margin:0 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — ENTAMOEBA HISTOLYTICA
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, "00897B");
s.addText("Entamoeba histolytica — AMEBAE", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:18, bold:true, color:WHITE,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Life cycle image (large, left)
card(s, 0.2, 0.62, 4.5, 3.5);
addImg(s,"ehisto_lifecycle", 0.25, 0.67, 4.4, 3.35, "Life cycle of E. histolytica (Harrison's)");
// Microscopy image (top right)
card(s, 4.85, 0.62, 5.0, 1.85);
addImg(s,"ehisto_tissue", 4.9, 0.67, 4.9, 1.7, "H&E — trophozoites invading colonic mucosa (note RBC ingestion)");
// Key facts (bottom right)
card(s, 4.85, 2.58, 5.0, 2.72);
s.addText("🔬 How do we diagnose it?", {
x:5.0,y:2.65,w:4.7,h:0.32, fontSize:12, bold:true, color:TEAL, fontFace:"Calibri", margin:0 });
const facts = [
["Stool exam (O&P)", "See trophozoites (12–50 µm) with ingested RBCs; cysts 10–20 µm with 1–4 nuclei"],
["Antigen test (EIA)", "Detects Gal/GalNAc lectin — tells E. histolytica apart from harmless E. dispar"],
["Blood antibody test", "Positive in >90% of liver abscess cases (serology)"],
["PCR (most accurate)", "Best method — confirms the exact species"],
["⚠️ Key tip", "E. histolytica looks identical to E. dispar under the microscope — always do antigen/PCR"],
];
let fy = 3.02;
facts.forEach(([label, detail]) => {
s.addText([
{ text: `● ${label}: `, options:{bold:true, color:YELLOW, fontSize:9.5, fontFace:"Calibri"} },
{ text: detail, options:{color:LTGRY, fontSize:9, fontFace:"Calibri"} },
], { x:5.0, y:fy, w:4.7, h:0.38, margin:1 });
fy += 0.38;
});
// treatment pill
s.addShape(pres.ShapeType.roundRect, { x:0.2,y:4.22,w:4.5,h:0.4, fill:{color:"00897B"}, rectRadius:0.07 });
s.addText("💊 Treatment: Metronidazole + Paromomycin", {
x:0.2,y:4.22,w:4.5,h:0.4, fontSize:10.5, bold:true, color:WHITE,
align:"center", valign:"middle", fontFace:"Calibri", margin:0 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — BALANTIDIUM COLI
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, "1565C0");
s.addText("Balantidium coli (Neobalanidium coli) — CILIATE", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:18, bold:true, color:WHITE,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Large life cycle image
card(s, 0.2, 0.62, 5.2, 3.6);
addImg(s,"balant_lifecycle", 0.28, 0.7, 5.05, 3.4, "Life cycle of Neobalanidium coli (Murray Medical Microbiology 9e)");
// Facts panel
card(s, 5.55, 0.62, 4.22, 3.6);
s.addText("🔬 Diagnosis at a Glance", {
x:5.7,y:0.72,w:4.0,h:0.32, fontSize:13, bold:true, color:BLUE, fontFace:"Calibri", margin:0 });
const items = [
["Specimen", "Fresh stool — look for trophozoites and cysts"],
["Trophozoite", "HUGE — 50–200 µm × 40–70 µm. Covered in cilia. Has a bean-shaped big nucleus (macronucleus)"],
["Cyst", "40–60 µm; round, with a clear wall; 1 nucleus inside"],
["Test used", "Simple wet mount (saline) — no special stain needed (it's so large you can't miss it!)"],
["Reservoir", "🐷 Pigs — most common source of infection"],
["Treatment", "Tetracycline (first choice); alternatives: iodoquinol, metronidazole"],
];
let iy = 1.1;
items.forEach(([lbl, txt]) => {
s.addText([
{ text:`● ${lbl}: `, options:{bold:true, color:YELLOW, fontSize:10, fontFace:"Calibri"} },
{ text:txt, options:{color:LTGRY, fontSize:9.5, fontFace:"Calibri"} },
], { x:5.7,y:iy,w:3.95,h:0.46, margin:1 });
iy += 0.46;
});
// Fun fact box
s.addShape(pres.ShapeType.roundRect, {
x:0.2,y:4.3,w:9.57,h:0.62, fill:{color:"0D2E5A"}, rectRadius:0.1 });
s.addText([
{ text:"⭐ Largest protozoan that infects humans! ", options:{bold:true,color:YELLOW,fontSize:11,fontFace:"Calibri"} },
{ text:"So large it is easily seen in a plain wet mount — no acid-fast or trichrome stain required.", options:{color:LTGRY,fontSize:10,fontFace:"Calibri"} },
], { x:0.4,y:4.35,w:9.2,h:0.52, margin:4 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — GIARDIA LAMBLIA
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, "C62828");
s.addText("Giardia lamblia — INTESTINAL FLAGELLATE", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:18, bold:true, color:WHITE,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// SEM image left
card(s, 0.2, 0.62, 4.8, 3.3);
addImg(s,"giardia_sem", 0.28, 0.7, 4.64, 3.1, "SEM: Giardia trophozoites — pear-shaped with 8 flagella (normal vs drug-treated)");
// Diagnosis steps — right side
card(s, 5.15, 0.62, 4.62, 3.3);
s.addText("🔬 Step-by-Step Diagnosis", {
x:5.3,y:0.7,w:4.35,h:0.32, fontSize:13, bold:true, color:PINK, fontFace:"Calibri", margin:0 });
const steps = [
["1. Collect stool", "Fresh or preserved (SAF, PVA)"],
["2. Microscopy", "Trophozoite: pear-shaped, 12–15 µm, 2 nuclei\n= 'owl eye' appearance. Cyst: oval, 8–12 µm, 2–4 nuclei"],
["3. Antigen test (EIA/DFA)", "⭐ Best routine method — sensitivity >90%.\nDFA shows bright green cysts under UV light"],
["4. PCR / NAAT", "Highest accuracy; multi-panel assays available"],
["5. Duodenal biopsy", "Only if stool tests keep coming back negative"],
];
let sy = 1.07;
steps.forEach(([lbl, txt]) => {
s.addText([
{ text:`${lbl}\n`, options:{bold:true, color:YELLOW, fontSize:10, fontFace:"Calibri", breakLine:false} },
{ text:txt, options:{color:LTGRY, fontSize:9, fontFace:"Calibri"} },
], { x:5.3,y:sy,w:4.35,h:0.55, margin:1 });
sy += 0.56;
});
// Bottom bar
s.addShape(pres.ShapeType.rect, { x:0,y:4.0,w:10,h:0.06, fill:{color:"C62828"} });
card(s, 0.2, 4.1, 4.55, 0.95, "0D2E5A");
s.addText("💊 Treatment", { x:0.4,y:4.17,w:4.1,h:0.25, fontSize:10, bold:true, color:YELLOW, fontFace:"Calibri", margin:0 });
s.addText("Metronidazole or Tinidazole · Nitazoxanide for resistant cases", {
x:0.4,y:4.42,w:4.1,h:0.5, fontSize:9.5, color:LTGRY, fontFace:"Calibri", margin:0 });
card(s, 4.9, 4.1, 4.87, 0.95, "0D2E5A");
s.addText("⚠️ Key Fact", { x:5.1,y:4.17,w:4.5,h:0.25, fontSize:10, bold:true, color:ORANGE, fontFace:"Calibri", margin:0 });
s.addText("Transmission: contaminated water (common in hikers/travellers) — cysts resist chlorine!", {
x:5.1,y:4.42,w:4.5,h:0.5, fontSize:9.5, color:LTGRY, fontFace:"Calibri", margin:0 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — TRICHOMONAS VAGINALIS
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, "AD1457");
s.addText("Trichomonas vaginalis — UROGENITAL FLAGELLATE", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:18, bold:true, color:WHITE,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Life cycle image (left)
card(s, 0.2, 0.62, 3.5, 2.6);
addImg(s,"tvag_lifecycle", 0.28, 0.7, 3.35, 2.45, "Life cycle — sexual transmission only");
// Structural diagram (right of lifecycle)
card(s, 3.85, 0.62, 3.3, 2.6);
addImg(s,"tvag_diagram", 3.93, 0.7, 3.14, 2.38, "T. vaginalis structure: 4 flagella + undulating membrane");
// Diagnosis steps far right
card(s, 7.3, 0.62, 2.48, 2.6);
s.addText("Unique Features", {
x:7.45,y:0.68,w:2.2,h:0.3, fontSize:10, bold:true, color:PINK, fontFace:"Calibri", margin:0 });
const uniq = [
"NO cyst stage — only trophozoites",
"Lives in vagina / urethra / prostate",
"Transmitted ONLY by sex",
"Flagella cause tumbling motility",
"Prevalence: 5–20% in women",
];
let uy = 1.02;
uniq.forEach(u => {
s.addText(`• ${u}`, {x:7.45,y:uy,w:2.2,h:0.4, fontSize:8.5, color:LTGRY, fontFace:"Calibri", margin:1});
uy += 0.37;
});
// Methods cards bottom row
const methods = [
{ title:"1. Wet Mount", body:"Add vaginal fluid to slide + saline → see motile trophozoites spinning.\nSensitivity: 50–70% — fast but misses some cases.", color:"880E4F" },
{ title:"2. Culture\n(InPouch TV)", body:"Most sensitive traditional method (~95%).\nTakes 5–7 days.", color:"4A148C" },
{ title:"3. Antigen Test\n(OSOM Rapid)", body:"10-minute bedside test.\nSensitivity ~80–90%.", color:"1A237E" },
{ title:"4. NAAT / PCR ⭐", body:"BEST method — >95% sensitivity.\nAptima TV assay — FDA cleared.", color:"004D40" },
];
methods.forEach((m, i) => {
const x = 0.2 + i * 2.43;
card(s, x, 3.3, 2.33, 2.22, m.color);
s.addText(m.title, {x:x+0.1,y:3.38,w:2.13,h:0.44, fontSize:9.5, bold:true, color:WHITE, fontFace:"Calibri", margin:2});
s.addText(m.body, {x:x+0.1,y:3.82,w:2.13,h:1.5, fontSize:8.5, color:LTGRY, fontFace:"Calibri", margin:2});
});
// Treatment
s.addShape(pres.ShapeType.roundRect, {x:0.2,y:5.26,w:9.57,h:0.3, fill:{color:"880E4F"}, rectRadius:0.06});
s.addText("💊 Treatment: Metronidazole or Tinidazole — treat BOTH partners at the same time!", {
x:0.4,y:5.27,w:9.2,h:0.28, fontSize:10, bold:true, color:WHITE, align:"center", fontFace:"Calibri", margin:0 });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — CRYPTOSPORIDIUM + ISOSPORA (SPOROZOA)
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, "6A0DAD");
s.addText("Cryptosporidium parvum & Isospora belli — SPOROZOA (Coccidia)", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:17, bold:true, color:WHITE,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// ── Cryptosporidium (left half) ─────────────────────────────────────────────
s.addShape(pres.ShapeType.roundRect, {x:0.15,y:0.62,w:4.7,h:4.95, fill:{color:CARD}, rectRadius:0.1});
s.addText("Cryptosporidium parvum", {
x:0.3,y:0.68,w:4.4,h:0.3, fontSize:13, bold:true, color:PURPLE, fontFace:"Calibri", margin:0 });
// Fluorescence microscopy image
if(I.crypto_fluor) {
s.addImage({data:I.crypto_fluor,x:0.28,y:1.02,w:4.44,h:2.1, sizing:{type:"contain",w:4.44,h:2.1}});
s.addText("Immunofluorescence: Cryptosporidium oocysts glowing green", {
x:0.28,y:3.14,w:4.44,h:0.28, fontSize:7.5, color:DGRY, italic:true, fontFace:"Calibri", align:"center", margin:0 });
}
const cfacts = [
["Oocyst size", "Very small — only 4–6 µm (hard to see in plain microscopy!)"],
["KEY test", "Modified acid-fast stain → oocysts appear PINK/RED"],
["Other tests", "DFA (bright green under UV) · EIA antigen · PCR"],
["⚠️ Warning", "INVISIBLE on routine O&P trichrome stain — must specifically order acid-fast"],
["Treatment", "Nitazoxanide (immunocompetent); antiretrovirals help in AIDS"],
];
let cy = 3.44;
cfacts.forEach(([l,d]) => {
s.addText([
{text:`● ${l}: `,options:{bold:true,color:YELLOW,fontSize:9,fontFace:"Calibri"}},
{text:d,options:{color:LTGRY,fontSize:8.5,fontFace:"Calibri"}},
], {x:0.3,y:cy,w:4.45,h:0.38, margin:1});
cy += 0.38;
});
// ── Isospora belli (right half) ─────────────────────────────────────────────
s.addShape(pres.ShapeType.roundRect, {x:5.1,y:0.62,w:4.7,h:4.95, fill:{color:CARD}, rectRadius:0.1});
s.addText("Isospora belli (Cystoisospora belli)", {
x:5.25,y:0.68,w:4.4,h:0.3, fontSize:13, bold:true, color:GREEN, fontFace:"Calibri", margin:0 });
// life cycle + micro images stacked
if(I.isospora_lc) {
s.addImage({data:I.isospora_lc,x:5.22,y:1.02,w:2.1,h:2.1, sizing:{type:"contain",w:2.1,h:2.1}});
s.addText("Life cycle", {x:5.22,y:3.14,w:2.1,h:0.22, fontSize:7.5, color:DGRY,italic:true,fontFace:"Calibri",align:"center",margin:0});
}
if(I.isospora_micro) {
s.addImage({data:I.isospora_micro,x:7.4,y:1.02,w:2.3,h:2.1, sizing:{type:"contain",w:2.3,h:2.1}});
s.addText("Oocysts (A) unsporulated, (B) sporulated", {x:7.4,y:3.14,w:2.3,h:0.22, fontSize:7.5, color:DGRY,italic:true,fontFace:"Calibri",align:"center",margin:0});
}
const ifacts = [
["Oocyst size", "LARGE — 20–33 µm × 10–19 µm (elongated/elliptical — easy to spot!)"],
["KEY test", "Modified acid-fast stain → pink-red oocysts; autofluorescence under UV"],
["Also useful", "Iodine stain on concentrated stool sediment"],
["If stool negative", "Small bowel biopsy — all life stages visible"],
["Treatment", "TMP-SMX (drug of choice); pyrimethamine + sulfadiazine as alternative"],
];
let iy2 = 3.44;
ifacts.forEach(([l,d]) => {
s.addText([
{text:`● ${l}: `,options:{bold:true,color:YELLOW,fontSize:9,fontFace:"Calibri"}},
{text:d,options:{color:LTGRY,fontSize:8.5,fontFace:"Calibri"}},
], {x:5.25,y:iy2,w:4.45,h:0.38, margin:1});
iy2 += 0.38;
});
// comparison bar at top inside cards
badge(s, "Oocyst: 4–6 µm (tiny)", 0.3, 0.97, 2.0, "6A0DAD");
badge(s, "Acid-fast: PINK", 2.4, 0.97, 1.65, "7B1FA2");
badge(s, "Oocyst: 20–33 µm (large)", 5.25, 0.97, 2.3, "2E7D32");
badge(s, "Acid-fast: PINK-RED", 7.65, 0.97, 1.9, "388E3C");
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — SUMMARY TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s);
topBar(s, YELLOW);
s.addText("Quick Summary — All 6 Parasites at a Glance", {
x:0.28,y:0.07,w:9.4,h:0.42, fontSize:18, bold:true, color:NAVY,
fontFace:"Calibri", align:"left", valign:"middle", margin:0 });
// Harrison table image top right
if(I.harrison_table) {
card(s, 6.8, 0.6, 3.0, 1.45);
s.addImage({data:I.harrison_table,x:6.88,y:0.65,w:2.84,h:1.3, sizing:{type:"contain",w:2.84,h:1.3}});
s.addText("Diagnostic methods by organism (Harrison's 21e)", {
x:6.8,y:1.96,w:3.0,h:0.22, fontSize:7, color:DGRY, italic:true, fontFace:"Calibri", align:"center", margin:0 });
}
// Table
const colX = [0.18, 1.75, 3.3, 4.8, 6.3, 8.0];
const colW = [1.52, 1.5, 1.45, 1.45, 1.65, 1.78];
const hdrs = ["ORGANISM", "CLASS", "LOOK FOR", "BEST TEST", "SPECIAL STAIN", "TREATMENT"];
const hdrH = 0.4;
const hdrY = 0.6;
hdrs.forEach((h, i) => {
s.addShape(pres.ShapeType.rect, {x:colX[i],y:hdrY,w:colW[i],h:hdrH, fill:{color:TEAL}});
s.addText(h, {x:colX[i],y:hdrY,w:colW[i],h:hdrH,
fontSize:9, bold:true, color:NAVY, align:"center", valign:"middle", fontFace:"Calibri", margin:0});
});
const rows = [
{ cells:["Entamoeba histolytica","Amebae","Trophozoite + Cyst (stool)","Antigen EIA / PCR","Trichrome","Metronidazole + Paromomycin"], color:"00897B" },
{ cells:["Balantidium coli","Ciliate","Trophozoite + Cyst (stool)","Wet mount (plain)","None needed","Tetracycline"], color:"1565C0" },
{ cells:["Giardia lamblia","Flagellate","Cyst + Trophozoite (stool)","EIA antigen / DFA","Trichrome / Iodine","Metronidazole / Tinidazole"], color:"B71C1C" },
{ cells:["Trichomonas vaginalis","Flagellate","Trophozoite only (vaginal)","NAAT (Aptima TV) ⭐","Wet mount (only)","Metronidazole / Tinidazole"], color:"880E4F" },
{ cells:["Cryptosporidium parvum","Sporozoa","Oocyst 4–6 µm (stool)","Acid-fast stain / EIA","Modified Kinyoun","Nitazoxanide"], color:"6A0DAD" },
{ cells:["Isospora belli","Sporozoa","Oocyst 20–33 µm (stool)","Acid-fast stain / UV fluor.","Modified Kinyoun","TMP-SMX"], color:"2E7D32" },
];
const rowH = 0.55;
rows.forEach((row, ri) => {
const ry = hdrY + hdrH + ri * rowH;
// colour stripe on first cell
s.addShape(pres.ShapeType.rect, {x:colX[0],y:ry,w:colW[0],h:rowH, fill:{color:row.color}});
row.cells.forEach((cell, ci) => {
if (ci > 0) {
s.addShape(pres.ShapeType.rect, {x:colX[ci],y:ry,w:colW[ci],h:rowH,
fill:{color: ri%2===0 ? CARD : "1A2F45"}, line:{color:"1e3a55",width:0.5}});
}
s.addText(cell, {x:colX[ci],y:ry,w:colW[ci],h:rowH,
fontSize:ci===0 ? 8.5 : 8, color:ci===0 ? WHITE : LTGRY,
bold:ci===0, italic:ci===0, align:"center", valign:"middle",
fontFace:"Calibri", margin:2});
});
});
// Bottom key tips
card(s, 0.18, 4.73, 9.6, 0.82, "0A1E30");
const tips = [
"🔴 Acid-fast stain = essential for Cryptosporidium & Isospora",
"🟡 Use antigen test / PCR to distinguish E. histolytica from harmless E. dispar",
"🟢 Balantidium: just use a plain wet mount — it's the biggest parasite you'll ever see!",
"🔵 T. vaginalis: NAAT is the gold standard — do not rely on wet mount alone",
];
s.addText(tips.join(" "), {
x:0.35,y:4.78,w:9.25,h:0.72, fontSize:8.5, color:LTGRY, fontFace:"Calibri", margin:4, wrap:true });
}
// ── WRITE ────────────────────────────────────────────────────────────────────
const out = "/home/daytona/workspace/protozoa-ppt/Protozoa_Diagnosis_Simple.pptx";
pres.writeFile({ fileName: out }).then(() => {
console.log("DONE:", out);
}).catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/protozoa-ppt && node build2.js 2>&1
Protozoa Diagnosis Simple
Presentation · PPTX
| Slide | What you'll see |
|---|---|
| 1 — Title | 6 colour-coded organism tiles with group name labels |
| 2 — E. histolytica | Large life cycle diagram + H&E biopsy photo + simple bullet points using plain language |
| 3 — Balantidium coli | Large life cycle image + "no special stain needed — it's huge!" fact box |
| 4 — Giardia lamblia | SEM microscopy photo + numbered step-by-step diagnosis (1→5) |
| 5 — Trichomonas vaginalis | Life cycle + structural diagram side by side + 4 method cards (Wet Mount → NAAT) |
| 6 — Cryptosporidium + Isospora | Split panel — fluorescence microscopy image for Crypto + life cycle & oocyst photos for Isospora + size badges |
| 7 — Summary Table | Full comparison table (colour-coded by organism) + Harrison's reference table image + 4 key tips at the bottom |