Make a ppt on proptosis for ent post graduates

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/proptosis-ppt && ls /home/daytona/workspace/proptosis-ppt/

Writing File

~/proptosis-ppt/proptosis.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Proptosis - ENT Postgraduate Seminar";
pres.author = "ENT Department";

// ─── COLOR PALETTE ───────────────────────────────────────────────
const C = {
  bg_dark:   "0D1B2A",  // deep navy
  bg_mid:    "1B2E45",  // mid navy
  bg_light:  "F5F7FA",  // near white
  accent1:   "2EC4B6",  // teal
  accent2:   "F4A261",  // amber
  accent3:   "E63946",  // red
  white:     "FFFFFF",
  text_dark: "1A1A2E",
  text_gray: "455A64",
  sep_line:  "2EC4B6",
};

// ─── HELPER: dark slide background ───────────────────────────────
function darkBg(slide) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.bg_dark }, line: { color: C.bg_dark } });
}
function lightBg(slide) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.bg_light }, line: { color: C.bg_light } });
}
function midBg(slide) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.bg_mid }, line: { color: C.bg_mid } });
}

// ─── SLIDE TITLE BAR (dark slides) ───────────────────────────────
function darkTitleBar(slide, text) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: C.accent1 }, line: { color: C.accent1 } });
  slide.addText(text, { x: 0.3, y: 0, w: 9.4, h: 0.85, fontSize: 22, bold: true, color: C.bg_dark, valign: "middle", margin: 0 });
}

// ─── SLIDE TITLE BAR (light slides) ──────────────────────────────
function lightTitleBar(slide, text) {
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.85, fill: { color: C.bg_dark }, line: { color: C.bg_dark } });
  slide.addText(text, { x: 0.3, y: 0, w: 9.4, h: 0.85, fontSize: 22, bold: true, color: C.accent1, valign: "middle", margin: 0 });
  // teal underline
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: 10, h: 0.06, fill: { color: C.accent1 }, line: { color: C.accent1 } });
}

// ─── bullet helper ────────────────────────────────────────────────
function mkBullets(items, opts = {}) {
  return items.map((item, i) => ({
    text: item,
    options: { bullet: { code: "2022" }, breakLine: i < items.length - 1, ...opts }
  }));
}

// =================================================================
// SLIDE 1 – TITLE SLIDE
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  // Large dark block left
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 5.625, fill: { color: C.accent1 }, line: { color: C.accent1 } });
  // Orbital eye circle graphic placeholder
  s.addShape(pres.ShapeType.ellipse, { x: 6.5, y: 0.6, w: 3.1, h: 3.1, fill: { color: C.bg_mid }, line: { color: C.accent1, width: 4 } });
  s.addShape(pres.ShapeType.ellipse, { x: 7.3, y: 1.4, w: 1.5, h: 1.5, fill: { color: C.accent1 }, line: { color: C.accent1 } });
  s.addShape(pres.ShapeType.ellipse, { x: 7.75, y: 1.85, w: 0.6, h: 0.6, fill: { color: C.bg_dark }, line: { color: C.bg_dark } });

  s.addText("PROPTOSIS", { x: 0.4, y: 1.0, w: 6, h: 1.1, fontSize: 48, bold: true, color: C.white, charSpacing: 4 });
  s.addText("Exophthalmos & Orbital Disease", { x: 0.4, y: 2.15, w: 6, h: 0.55, fontSize: 20, color: C.accent1, italic: true });
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 2.75, w: 5.5, h: 0.05, fill: { color: C.accent2 }, line: { color: C.accent2 } });
  s.addText("ENT Postgraduate Seminar", { x: 0.4, y: 2.9, w: 6, h: 0.4, fontSize: 15, color: C.text_gray });
  s.addText("Based on KJ Lee's Essential Otolaryngology &\nKanski's Clinical Ophthalmology", { x: 0.4, y: 4.6, w: 6, h: 0.7, fontSize: 10, color: "607D8B", italic: true });
}

// =================================================================
// SLIDE 2 – OVERVIEW / AGENDA
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  darkTitleBar(s, "Lecture Overview");

  const topics = [
    ["01", "Definition & Anatomy"],
    ["02", "Clinical Assessment & Measurement"],
    ["03", "Classification of Causes"],
    ["04", "Inflammatory / Thyroid Eye Disease"],
    ["05", "Infectious Causes - Orbital Cellulitis"],
    ["06", "Neoplastic Causes"],
    ["07", "Vascular & Traumatic Causes"],
    ["08", "Investigation & Workup"],
    ["09", "Management Principles"],
    ["10", "Surgical Decompression"],
  ];

  topics.forEach(([num, title], i) => {
    const col = i < 5 ? 0 : 1;
    const row = i < 5 ? i : i - 5;
    const x = 0.4 + col * 4.9;
    const y = 1.05 + row * 0.82;
    s.addShape(pres.ShapeType.rect, { x, y, w: 0.5, h: 0.45, fill: { color: C.accent1 }, line: { color: C.accent1 }, rectRadius: 0.06 });
    s.addText(num, { x, y, w: 0.5, h: 0.45, fontSize: 11, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(title, { x: x + 0.58, y: y + 0.02, w: 4.1, h: 0.42, fontSize: 13, color: C.white, valign: "middle" });
  });
}

// =================================================================
// SLIDE 3 – DEFINITION & ANATOMY
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Definition & Orbital Anatomy");

  // Two-column layout
  // LEFT column – definitions
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.1, w: 4.5, h: 4.0, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.1 });
  s.addText("Definitions", { x: 0.4, y: 1.15, w: 4.3, h: 0.45, fontSize: 15, bold: true, color: C.accent1 });
  s.addText([
    { text: "Proptosis", options: { bold: true, color: C.accent2, breakLine: true } },
    { text: "Abnormal anterior protrusion of the eyeball beyond the orbital rim. Broadly applied to any organ protrusion.\n", options: { color: C.white, fontSize: 11, breakLine: true } },
    { text: "Exophthalmos", options: { bold: true, color: C.accent2, breakLine: true } },
    { text: "Specifically refers to protrusion of the eyeball only (Greek: ex = out, ophthalmos = eye).\n", options: { color: C.white, fontSize: 11, breakLine: true } },
    { text: "Normal values", options: { bold: true, color: C.accent1, breakLine: true } },
    { text: "> 20 mm = proptosis\n2-3 mm asymmetry = significant\n(Hertel exophthalmometer)", options: { color: C.white, fontSize: 11 } },
  ], { x: 0.4, y: 1.65, w: 4.3, h: 3.3, valign: "top" });

  // RIGHT column – anatomy bullets
  s.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.1, w: 4.55, h: 4.0, fill: { color: "E8F0F5" }, line: { color: C.accent1, width: 1 }, rectRadius: 0.1 });
  s.addText("Orbital Anatomy (Relevant)", { x: 5.2, y: 1.15, w: 4.3, h: 0.45, fontSize: 15, bold: true, color: C.bg_dark });
  s.addText([
    { text: "Volume: ~30 mL; 4-walled bony cone", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Roof: Orbital plate of frontal bone + lesser wing of sphenoid", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Medial wall: Lamina papyracea (ethmoid) - thinnest wall; route for sinus spread", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Floor: Maxillary + zygomatic bone", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Lateral wall: Zygomatic + greater sphenoid wing (strongest)", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Optic nerve: 25 mm intraorbital length vs 18 mm orbital depth → allows protrusion without stretching", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Orbital septum: Key landmark - preseptal vs postseptal disease distinction", options: { bullet: { code: "25B8" }, color: C.text_dark, fontSize: 11 } },
  ], { x: 5.2, y: 1.65, w: 4.3, h: 3.35, valign: "top" });
}

// =================================================================
// SLIDE 4 – CLINICAL ASSESSMENT
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Clinical Assessment of Proptosis");

  // History box
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 4.5, h: 2.1, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.08 });
  s.addText("History", { x: 0.45, y: 1.1, w: 4.2, h: 0.4, fontSize: 14, bold: true, color: C.accent1 });
  s.addText([
    { text: "Onset: Acute (infection/trauma) vs chronic (tumor)", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Unilateral vs bilateral (bilateral suggests systemic cause)", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Associated pain, diplopia, visual loss, epiphora", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Thyroid disease, malignancy, sinus disease, trauma history", options: { bullet: true, color: C.white, fontSize: 11 } },
  ], { x: 0.45, y: 1.52, w: 4.2, h: 1.55, valign: "top" });

  // Examination box
  s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.05, w: 4.5, h: 2.1, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.08 });
  s.addText("Examination", { x: 5.35, y: 1.1, w: 4.2, h: 0.4, fontSize: 14, bold: true, color: C.accent1 });
  s.addText([
    { text: "Exophthalmometry (Hertel): > 20 mm or > 2 mm asymmetry", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Direction: Axial (intraconal) vs dystopic (extraconal)", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Pulsation (bruit) → carotid-cavernous fistula or roof defect", options: { bullet: true, color: C.white, fontSize: 11, breakLine: true } },
    { text: "Valsalva manoeuvre: varices or capillary haemangioma", options: { bullet: true, color: C.white, fontSize: 11 } },
  ], { x: 5.35, y: 1.52, w: 4.2, h: 1.55, valign: "top" });

  // Measurement box
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.3, w: 9.4, h: 2.05, fill: { color: "E3F6F5" }, line: { color: C.accent1, width: 1 }, rectRadius: 0.08 });
  s.addText("Pseudoproptosis - Must Exclude!", { x: 0.45, y: 3.35, w: 9, h: 0.4, fontSize: 14, bold: true, color: C.accent3 });
  s.addText([
    { text: "Facial asymmetry / shallow orbit", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Enlarged globe: high myopia, buphthalmos", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Eyelid retraction (lid lag, thyroid without true proptosis)", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Contralateral enophthalmos (e.g., post-orbital floor fracture on opposite side)", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11 } },
  ], { x: 0.45, y: 3.78, w: 4.6, h: 1.5, valign: "top" });
  s.addText([
    { text: "Axial proptosis: intraconal lesion (e.g., cavernous haemangioma, optic nerve tumour)", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Dystopia: extraconal lesion displaces globe in coronal plane", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Lacrimal gland tumour → inferiomedial dystopia", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11, breakLine: true } },
    { text: "Forced duction test: restricts = myopathy; no resistance = neurological", options: { bullet: { code: "25CF" }, color: C.text_dark, fontSize: 11 } },
  ], { x: 5.1, y: 3.78, w: 4.55, h: 1.5, valign: "top" });
}

// =================================================================
// SLIDE 5 – CLASSIFICATION
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  darkTitleBar(s, "Classification of Causes");

  const cats = [
    { label: "Inflammatory", color: C.accent1, items: ["Thyroid Eye Disease (most common)", "Idiopathic Orbital Inflammatory Syndrome (IOIS)", "Sarcoidosis", "Wegener's (GPA)", "IgG4-related disease"] },
    { label: "Infectious", color: C.accent3, items: ["Orbital cellulitis", "Subperiosteal abscess", "Mucormycosis (emergency!)", "Aspergillosis"] },
    { label: "Neoplastic", color: C.accent2, items: ["Primary: cavernous haemangioma, optic nerve glioma/meningioma, lacrimal gland tumour", "Secondary: sinus/intracranial extension", "Metastatic: breast, prostate, lung, melanoma"] },
    { label: "Vascular", color: "A29BFE", items: ["Carotid-cavernous fistula (pulsatile + bruit)", "Orbital varices (positional)", "Capillary haemangioma (children)"] },
    { label: "Traumatic", color: "FD79A8", items: ["Retrobulbar haemorrhage (emergency)", "Orbital fracture with emphysema", "Foreign body", "Carotid-cavernous fistula (post-trauma)"] },
    { label: "Structural", color: "55EFC4", items: ["Mucocele (fronto-ethmoidal most common)", "Sinus tumour extension", "Fibrous dysplasia", "Dermoid cyst"] },
  ];

  cats.forEach((cat, i) => {
    const col = i % 3;
    const row = Math.floor(i / 3);
    const x = 0.25 + col * 3.22;
    const y = 1.0 + row * 2.25;
    s.addShape(pres.ShapeType.rect, { x, y, w: 3.1, h: 2.1, fill: { color: C.bg_mid }, line: { color: cat.color, width: 2 }, rectRadius: 0.08 });
    s.addShape(pres.ShapeType.rect, { x, y, w: 3.1, h: 0.38, fill: { color: cat.color }, line: { color: cat.color }, rectRadius: 0.06 });
    s.addText(cat.label, { x, y, w: 3.1, h: 0.38, fontSize: 12, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(cat.items.map((it, idx) => ({
      text: it,
      options: { bullet: { code: "2022" }, color: C.white, fontSize: 9.5, breakLine: idx < cat.items.length - 1 }
    })), { x: x + 0.12, y: y + 0.42, w: 2.9, h: 1.65, valign: "top" });
  });
}

// =================================================================
// SLIDE 6 – THYROID EYE DISEASE (Graves Orbitopathy)
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Thyroid Eye Disease (Graves Orbitopathy)");

  // Pathophysiology strip
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.0, w: 9.4, h: 0.7, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.06 });
  s.addText("Pathophysiology: Autoimmune disorder → TSH receptor (TSHR) auto-antigen → Orbitofibroblasts activated → Excessive adipogenesis + extraocular muscle volume ↑ (collagen / ECM overproduction)", {
    x: 0.4, y: 1.0, w: 9.2, h: 0.7, fontSize: 11, color: C.white, valign: "middle"
  });

  // Two phases
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.82, w: 4.5, h: 1.65, fill: { color: "FFF3E0" }, line: { color: C.accent2, width: 1.5 }, rectRadius: 0.08 });
  s.addText("Active Inflammatory Phase (1.5-3 years)", { x: 0.42, y: 1.87, w: 4.25, h: 0.4, fontSize: 12, bold: true, color: C.accent3 });
  s.addText([
    { text: "Conjunctival injection & chemosis, lid redness/oedema", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Retrobulbar pain at rest / with gaze", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Immunosuppressive Rx effective in this phase", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Surgery CONTRAINDICATED in active phase", options: { bullet: true, color: C.accent3, bold: true, fontSize: 10.5 } },
  ], { x: 0.42, y: 2.3, w: 4.25, h: 1.12, valign: "top" });

  s.addShape(pres.ShapeType.rect, { x: 5.2, y: 1.82, w: 4.5, h: 1.65, fill: { color: "E8F5E9" }, line: { color: C.accent1, width: 1.5 }, rectRadius: 0.08 });
  s.addText("Cicatrizing/Inactive Phase", { x: 5.32, y: 1.87, w: 4.25, h: 0.4, fontSize: 12, bold: true, color: C.bg_dark });
  s.addText([
    { text: "Structural changes stabilized", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Sequence of surgery: 1) Orbital decompression → 2) Strabismus surgery → 3) Lid surgery", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "DO NOT operate while active", options: { bullet: true, color: C.text_dark, fontSize: 10.5 } },
  ], { x: 5.32, y: 2.3, w: 4.25, h: 1.12, valign: "top" });

  // EUGOGO / VISA grading + complications
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 3.6, w: 9.4, h: 1.75, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.08 });
  s.addText("Clinical Features & Grading", { x: 0.45, y: 3.65, w: 4, h: 0.38, fontSize: 13, bold: true, color: C.accent1 });
  s.addText("Grading Systems", { x: 5.0, y: 3.65, w: 4.5, h: 0.38, fontSize: 13, bold: true, color: C.accent1 });
  s.addText([
    { text: "Upper lid retraction + scleral show (earliest sign)", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "Proptosis: globe decompresses anteriorly", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "Corneal exposure → keratopathy / ulcer", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "Restrictive myopathy: earliest ↓ in upgaze", options: { bullet: true, color: C.white, fontSize: 10.5 } },
  ], { x: 0.45, y: 4.05, w: 4.4, h: 1.2, valign: "top" });
  s.addText([
    { text: "VISA (N. America): Vision, Inflammation, Strabismus, Appearance", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "EUGOGO (Europe): mild / moderate-severe / sight-threatening", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "NO SPEC (Werner) - obsolete, no longer used", options: { bullet: true, color: "B2DFDB", fontSize: 10.5, italic: true } },
  ], { x: 5.0, y: 4.05, w: 4.6, h: 1.2, valign: "top" });
}

// =================================================================
// SLIDE 7 – ORBITAL CELLULITIS
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  darkTitleBar(s, "Infectious Causes - Orbital Cellulitis");

  // Chandler classification
  s.addText("Chandler Classification (Post-septal / orbital complications of rhinosinusitis)", { x: 0.3, y: 0.95, w: 9.4, h: 0.38, fontSize: 13, bold: true, color: C.accent2 });

  const stages = [
    { n: "I", label: "Preseptal (Periorbital) Cellulitis", desc: "Infection ANTERIOR to orbital septum. No proptosis. No restriction of EOM. IV antibiotics; no surgery." },
    { n: "II", label: "Orbital Cellulitis", desc: "Infection POSTERIOR to orbital septum. Chemosis + mild proptosis WITHOUT ophthalmoplegia." },
    { n: "III", label: "Subperiosteal Abscess", desc: "Pus between periorbita & bony wall. Proptosis + restricted EOM. CT scan essential. Surgical drainage ± IV antibiotics." },
    { n: "IV", label: "Orbital Abscess", desc: "Pus within orbital fat. Significant proptosis + ophthalmoplegia. HIGH risk of blindness. Urgent surgical drainage." },
    { n: "V", label: "Cavernous Sinus Thrombosis", desc: "Bilateral signs, high fever, meningism, sepsis. Life-threatening emergency. Systemic anticoagulation debated." },
  ];

  stages.forEach((st, i) => {
    const y = 1.4 + i * 0.79;
    s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 0.55, h: 0.55, fill: { color: i < 2 ? C.accent1 : i < 4 ? C.accent2 : C.accent3 }, line: { color: "transparent" }, rectRadius: 0.08 });
    s.addText(st.n, { x: 0.3, y, w: 0.55, h: 0.55, fontSize: 14, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addShape(pres.ShapeType.rect, { x: 1.0, y, w: 8.7, h: 0.55, fill: { color: C.bg_mid }, line: { color: i < 2 ? C.accent1 : i < 4 ? C.accent2 : C.accent3, width: 1 }, rectRadius: 0.06 });
    s.addText([
      { text: st.label + ": ", options: { bold: true, color: i < 2 ? C.accent1 : i < 4 ? C.accent2 : C.accent3, fontSize: 11 } },
      { text: st.desc, options: { color: C.white, fontSize: 11 } },
    ], { x: 1.1, y, w: 8.5, h: 0.55, valign: "middle" });
  });

  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 5.3, w: 9.4, h: 0.2, fill: { color: C.bg_mid }, line: { color: C.bg_mid } });
  s.addText("Key point: 80% of orbital cellulitis originates from paranasal sinuses (ethmoid most common). Fungal infection (mucormycosis/aspergillosis) = surgical emergency, especially in immunocompromised.", {
    x: 0.35, y: 5.2, w: 9.3, h: 0.35, fontSize: 9.5, color: C.accent1, italic: true
  });
}

// =================================================================
// SLIDE 8 – NEOPLASTIC CAUSES
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Neoplastic Causes of Proptosis");

  // Three categories
  const cols = [
    {
      title: "Primary Orbital Tumours",
      color: C.accent1,
      items: [
        "Cavernous haemangioma (most common benign adult orbital tumour) — intraconal, well-encapsulated",
        "Hemangiopericytoma",
        "Lymphoproliferative lesions",
        "Optic nerve glioma (children) — NF1 association",
        "Optic nerve sheath meningioma — optociliary shunts",
        "Schwannoma / Neurofibroma",
        "Lacrimal gland: Pleomorphic adenoma (benign) vs Adenoid cystic carcinoma (malignant, painful, perineural invasion)",
        "Melanoma, Rhabdomyosarcoma (children)",
      ]
    },
    {
      title: "Secondary / Invasive",
      color: C.accent2,
      items: [
        "Sinus tumours: SCC, adenocarcinoma extending into orbit",
        "Frontal sinus osteoma — superomedial displacement",
        "Mucocele: fronto-ethmoidal, cystic expansion",
        "Polypoid sinus disease",
        "Intracranial meningioma — sphenoid wing extension",
        "Nasopharyngeal carcinoma",
      ]
    },
    {
      title: "Metastatic (order of frequency)",
      color: C.accent3,
      items: [
        "1. Breast cancer (most common metastasis to orbit)",
        "2. Prostate cancer",
        "3. Melanoma",
        "4. Lung cancer",
        "Any Hx of malignancy → assume metastasis until proven otherwise",
        "Treatment: chemotherapy + radiation (orbital exenteration usually not performed)",
      ]
    },
  ];

  cols.forEach((col, i) => {
    const x = 0.3 + i * 3.22;
    s.addShape(pres.ShapeType.rect, { x, y: 1.0, w: 3.1, h: 4.45, fill: { color: C.bg_dark }, line: { color: col.color, width: 2 }, rectRadius: 0.08 });
    s.addShape(pres.ShapeType.rect, { x, y: 1.0, w: 3.1, h: 0.4, fill: { color: col.color }, line: { color: col.color }, rectRadius: 0.06 });
    s.addText(col.title, { x: x + 0.1, y: 1.0, w: 2.9, h: 0.4, fontSize: 11, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(col.items.map((it, idx) => ({
      text: it,
      options: { bullet: { code: "2022" }, color: C.white, fontSize: 9.5, breakLine: idx < col.items.length - 1 }
    })), { x: x + 0.1, y: 1.45, w: 2.95, h: 3.9, valign: "top" });
  });
}

// =================================================================
// SLIDE 9 – VASCULAR & STRUCTURAL CAUSES
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  darkTitleBar(s, "Vascular, Traumatic & Structural Causes");

  // 3 boxes top row
  const topBoxes = [
    {
      title: "Carotid-Cavernous Fistula",
      color: "A29BFE",
      content: [
        "Direct: High-flow (trauma, aneurysm rupture)",
        "Indirect (dural): Low-flow (spontaneous, middle-aged women)",
        "CLASSIC TRIAD: Pulsatile proptosis + Bruit + Chemosis (red eye)",
        "Bruit abolished by carotid compression",
        "Diagnosis: Angiography (gold standard)",
        "Treatment: Endovascular occlusion",
      ]
    },
    {
      title: "Retrobulbar Haemorrhage",
      color: C.accent3,
      content: [
        "SURGICAL EMERGENCY - causes compartment syndrome",
        "After trauma or retrobulbar block",
        "Rapid proptosis + visual loss + firm orbit",
        "Afferent pupillary defect = optic nerve compromise",
        "Tx: Lateral canthotomy + cantholysis IMMEDIATELY",
        "Target IOP relief before permanent vision loss",
      ]
    },
    {
      title: "Orbital Varices",
      color: "55EFC4",
      content: [
        "Venous malformation - intermittent proptosis",
        "Classic: positional proptosis (bending forward, Valsalva, dependency)",
        "No pulsation, no bruit",
        "Diagnosis: CT/MRI (phleboliths)",
        "Conservative management usually",
        "Excision if severe functional impairment",
      ]
    },
  ];

  topBoxes.forEach((b, i) => {
    const x = 0.25 + i * 3.22;
    s.addShape(pres.ShapeType.rect, { x, y: 0.98, w: 3.1, h: 2.55, fill: { color: C.bg_mid }, line: { color: b.color, width: 2 }, rectRadius: 0.08 });
    s.addShape(pres.ShapeType.rect, { x, y: 0.98, w: 3.1, h: 0.38, fill: { color: b.color }, line: { color: b.color }, rectRadius: 0.06 });
    s.addText(b.title, { x: x + 0.1, y: 0.98, w: 2.9, h: 0.38, fontSize: 11, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(b.content.map((it, idx) => ({
      text: it,
      options: { bullet: { code: "2022" }, color: C.white, fontSize: 9.5, breakLine: idx < b.content.length - 1 }
    })), { x: x + 0.1, y: 1.4, w: 2.95, h: 2.0, valign: "top" });
  });

  // Structural causes bottom strip
  s.addShape(pres.ShapeType.rect, { x: 0.25, y: 3.68, w: 9.5, h: 1.75, fill: { color: C.bg_mid }, line: { color: "55EFC4", width: 1 }, rectRadius: 0.08 });
  s.addText("Structural Causes", { x: 0.4, y: 3.73, w: 9, h: 0.38, fontSize: 13, bold: true, color: "55EFC4" });
  s.addText([
    { text: "Dermoid cyst: superolateral (most common benign lesion in children); CT shows bony remodelling", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "Mucocele: fronto-ethmoidal sinus cystic expansion; displaces globe inferolaterally; treatment = endoscopic sinus surgery", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "Fibrous dysplasia: bony expansion narrows orbital space; treat if vision threatened", options: { bullet: true, color: C.white, fontSize: 10.5, breakLine: true } },
    { text: "IOIS (Orbital Pseudotumour): idiopathic orbital inflammation; diagnosis of exclusion; exquisitely steroid-responsive", options: { bullet: true, color: C.white, fontSize: 10.5 } },
  ], { x: 0.4, y: 4.13, w: 9.2, h: 1.2, valign: "top" });
}

// =================================================================
// SLIDE 10 – INVESTIGATION
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Investigation & Workup");

  // Imaging
  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 6.0, h: 4.35, fill: { color: C.bg_dark }, line: { color: C.bg_dark }, rectRadius: 0.08 });
  s.addText("Imaging", { x: 0.45, y: 1.1, w: 5.7, h: 0.4, fontSize: 14, bold: true, color: C.accent1 });

  const imgData = [
    { mod: "CT Orbit", color: C.accent1, points: ["Best for bony details - fractures, foreign bodies, bony destruction", "Identifies location: intraconal vs extraconal", "Choice for trauma, orbital cellulitis (identify abscess)", "Demonstrate sinus disease (source of spread)", "Soft tissue windowing also helpful"] },
    { mod: "MRI Orbit", color: C.accent2, points: ["Superior soft tissue detail - optic nerve, orbital apex", "Best for optic nerve tumours (glioma, meningioma)", "Choice for cavernous sinus pathology, perineural invasion", "No radiation (preferred in children)", "Contrast useful for inflammatory vs neoplastic"] },
    { mod: "Angiography", color: "A29BFE", points: ["Gold standard for carotid-cavernous fistula", "Vascular tumours diagnosis", "Also therapeutic (endovascular occlusion)"] },
    { mod: "US (B-scan)", color: "55EFC4", points: ["Bedside, quick, no radiation", "Detect axial length (high myopia pseudoproptosis)", "Cystic vs solid lesions", "Varices (real-time Valsalva)"] },
  ];

  imgData.forEach((im, i) => {
    const y = 1.55 + i * 0.95;
    s.addShape(pres.ShapeType.rect, { x: 0.4, y, w: 1.0, h: 0.38, fill: { color: im.color }, line: { color: im.color }, rectRadius: 0.05 });
    s.addText(im.mod, { x: 0.4, y, w: 1.0, h: 0.38, fontSize: 9, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(im.points.map((p, idx) => ({
      text: p,
      options: { bullet: { code: "2022" }, color: C.white, fontSize: 9.5, breakLine: idx < im.points.length - 1 }
    })), { x: 1.5, y, w: 4.65, h: 0.9, valign: "top" });
  });

  // Lab investigations
  s.addShape(pres.ShapeType.rect, { x: 6.5, y: 1.05, w: 3.2, h: 4.35, fill: { color: "E3F6F5" }, line: { color: C.accent1, width: 1 }, rectRadius: 0.08 });
  s.addText("Laboratory / Other", { x: 6.62, y: 1.1, w: 3.0, h: 0.4, fontSize: 13, bold: true, color: C.bg_dark });
  s.addText([
    { text: "Thyroid function tests (T3, T4, TSH)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "TSH receptor antibodies (TRAb/TSI)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "cANCA/pANCA → GPA (Wegener's)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "ACE level → Sarcoidosis", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "IgG4 levels → IgG4-related disease", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Blood cultures (orbital cellulitis)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "FBC, CRP, ESR (inflammatory markers)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Biopsy: open / FNAC for neoplastic lesions (medial or lateral orbitotomy approach)", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Exophthalmometry (Hertel): baseline + serial", options: { bullet: true, color: C.text_dark, fontSize: 10.5, breakLine: true } },
    { text: "Visual acuity + colour vision (RAPD if optic nerve involved)", options: { bullet: true, color: C.text_dark, fontSize: 10.5 } },
  ], { x: 6.62, y: 1.55, w: 3.0, h: 3.75, valign: "top" });
}

// =================================================================
// SLIDE 11 – MANAGEMENT PRINCIPLES
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  darkTitleBar(s, "Management Principles");

  const mgmt = [
    {
      cond: "Thyroid Eye Disease",
      color: C.accent1,
      rx: "Active phase: IV methylprednisolone, Teprotumumab (anti-IGF-1R), selenium supplementation (mild). Avoid radioiodine (worsens GO). Smoking cessation. Inactive phase: orbital decompression → strabismus surgery → lid surgery."
    },
    {
      cond: "Orbital Cellulitis",
      color: C.accent3,
      rx: "Broad-spectrum IV antibiotics (e.g., co-amoxiclav / ceftriaxone + metronidazole). CT imaging essential. Chandler III-IV: surgical drainage via anterior orbitotomy. Mucormycosis: urgent debridement + IV amphotericin B + reverse immunosuppression."
    },
    {
      cond: "IOIS (Pseudotumour)",
      color: C.accent2,
      rx: "Systemic high-dose corticosteroids (diagnostic + therapeutic). Dramatic response confirms diagnosis. Refractory cases: immunosuppressants (methotrexate, mycophenolate), rituximab, low-dose radiotherapy."
    },
    {
      cond: "Orbital Tumours",
      color: "A29BFE",
      rx: "Benign: observation vs surgical excision (lateral orbitotomy for intraconal lesions). Lacrimal gland: complete excision (biopsy may seed). Malignant: combined surgery + radiotherapy ± chemotherapy. Metastatic: systemic Rx + palliative RT."
    },
    {
      cond: "Retrobulbar Haemorrhage",
      color: "FD79A8",
      rx: "EMERGENCY: Lateral canthotomy + inferior cantholysis within 2 hours. Reduce IOP (mannitol, acetazolamide). Surgical decompression if vision failing. This is a sight-saving procedure."
    },
    {
      cond: "Carotid-Cavernous Fistula",
      color: "55EFC4",
      rx: "Endovascular occlusion (transarterial / transvenous coil embolisation). Low-flow dural fistulae: intermittent carotid compression (self-treatment). High-flow direct fistulae: urgent intervention to prevent vision loss."
    },
  ];

  mgmt.forEach((m, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.25 + col * 4.88;
    const y = 1.0 + row * 1.5;
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.72, h: 1.38, fill: { color: C.bg_mid }, line: { color: m.color, width: 1.5 }, rectRadius: 0.07 });
    s.addText(m.cond, { x: x + 0.12, y: y + 0.04, w: 4.5, h: 0.35, fontSize: 12, bold: true, color: m.color });
    s.addText(m.rx, { x: x + 0.12, y: y + 0.4, w: 4.5, h: 0.9, fontSize: 9.5, color: C.white, valign: "top" });
  });
}

// =================================================================
// SLIDE 12 – SURGICAL DECOMPRESSION
// =================================================================
{
  const s = pres.addSlide();
  lightBg(s);
  lightTitleBar(s, "Orbital Decompression - The ENT Perspective");

  s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 9.4, h: 0.65, fill: { color: "FFF3E0" }, line: { color: C.accent2, width: 1 }, rectRadius: 0.06 });
  s.addText("Indications: Sight-threatening compressive optic neuropathy | Severe cosmetic/functional proptosis | Corneal exposure not controlled medically | Performed in INACTIVE phase of Graves orbitopathy", {
    x: 0.45, y: 1.05, w: 9.1, h: 0.65, fontSize: 10.5, color: C.text_dark, valign: "middle"
  });

  // Approaches
  const approaches = [
    { label: "Endoscopic (Transethmoidal)", color: C.accent1, details: ["CURRENT TREATMENT OF CHOICE for medial orbital wall", "Ethmoidectomy + removal of lamina papyracea + partial orbital floor resection", "Minimally invasive, excellent visualisation", "1-2 mm of proptosis reduction per wall decompressed", "Can be combined with open approach for lateral wall"] },
    { label: "Transantral (Caldwell-Luc)", color: C.accent2, details: ["Access to orbital floor via maxillary sinus", "Less commonly used now", "Risk: infraorbital nerve hypoesthesia", "May cause diplopia (inferior rectus herniation)"] },
    { label: "Lateral Orbitotomy (Krönlein)", color: "A29BFE", details: ["Removes lateral orbital wall (zygomatic-sphenoid)", "Best lateral decompression", "Used for intraconal tumour access", "Combined with medial for 2-wall decompression"] },
    { label: "Combined / Fat Removal", color: C.accent3, details: ["2-wall: medial + floor (most common for TED)", "3-wall: adds lateral (maximum decompression)", "Fat decompression alone: 2-4 mm reduction", "DOED (diplopia-oriented endoscopic decompression)"] },
  ];

  approaches.forEach((a, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.3 + col * 4.85;
    const y = 1.82 + row * 1.82;
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.65, h: 1.7, fill: { color: C.bg_dark }, line: { color: a.color, width: 2 }, rectRadius: 0.08 });
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.65, h: 0.38, fill: { color: a.color }, line: { color: a.color }, rectRadius: 0.06 });
    s.addText(a.label, { x: x + 0.1, y, w: 4.45, h: 0.38, fontSize: 11, bold: true, color: C.bg_dark, align: "center", valign: "middle", margin: 0 });
    s.addText(a.details.map((d, idx) => ({
      text: d,
      options: { bullet: { code: "2022" }, color: C.white, fontSize: 10, breakLine: idx < a.details.length - 1 }
    })), { x: x + 0.12, y: y + 0.42, w: 4.42, h: 1.2, valign: "top" });
  });
}

// =================================================================
// SLIDE 13 – SUMMARY / KEY POINTS
// =================================================================
{
  const s = pres.addSlide();
  darkBg(s);
  // large teal header
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.1, fill: { color: C.accent1 }, line: { color: C.accent1 } });
  s.addText("Summary & High-Yield Points", { x: 0.4, y: 0, w: 9.2, h: 1.1, fontSize: 26, bold: true, color: C.bg_dark, valign: "middle", charSpacing: 1 });

  const points = [
    ["Normal Hertel value", "> 20 mm = proptosis; > 2-3 mm asymmetry = significant"],
    ["Most common cause (adult)", "Thyroid Eye Disease (Graves orbitopathy)"],
    ["Most common cause (child)", "Orbital cellulitis (from ethmoid sinusitis); dermoid cyst (benign tumour)"],
    ["Axial proptosis", "Intraconal lesion (cavernous haemangioma, optic nerve tumour)"],
    ["Pulsatile proptosis + Bruit", "Carotid-cavernous fistula"],
    ["Positional (Valsalva) proptosis", "Orbital varices"],
    ["Surgical emergency", "Retrobulbar haemorrhage → lateral canthotomy/cantholysis"],
    ["GO surgery sequence", "Decompression → Strabismus surgery → Lid surgery (inactive phase only)"],
    ["Decompression of choice", "Endoscopic transethmoidal (medial wall + floor)"],
    ["Orbital cellulitis source", "80% from paranasal sinuses; ethmoid most common"],
    ["Chandler III-IV", "Requires surgical drainage via orbitotomy"],
    ["Metastatic orbit", "Breast > Prostate > Melanoma > Lung"],
  ];

  points.forEach((p, i) => {
    const col = i % 2;
    const row = Math.floor(i / 2);
    const x = 0.3 + col * 4.88;
    const y = 1.2 + row * 0.72;
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.72, h: 0.62, fill: { color: C.bg_mid }, line: { color: C.bg_mid }, rectRadius: 0.06 });
    s.addShape(pres.ShapeType.rect, { x, y, w: 2.0, h: 0.62, fill: { color: "1F3551" }, line: { color: "1F3551" }, rectRadius: 0.06 });
    s.addText(p[0], { x: x + 0.08, y, w: 1.9, h: 0.62, fontSize: 9.5, bold: true, color: C.accent1, valign: "middle" });
    s.addText(p[1], { x: x + 2.1, y, w: 2.5, h: 0.62, fontSize: 9.5, color: C.white, valign: "middle" });
  });
}

// =================================================================
// WRITE FILE
// =================================================================
pres.writeFile({ fileName: "/home/daytona/workspace/proptosis-ppt/Proptosis_ENT_PG.pptx" })
  .then(() => console.log("DONE: /home/daytona/workspace/proptosis-ppt/Proptosis_ENT_PG.pptx"))
  .catch(e => { console.error(e); process.exit(1); });
Running Command

cd /home/daytona/workspace/proptosis-ppt && node proptosis.js

Your credits are exhausted. Your daily credits reset tomorrow, or you can purchase a top-up for more.

Generate a quick reference PDF guide on proptosis differential diagnosis

Your credits are exhausted. Your daily credits reset tomorrow, or you can purchase a top-up for more.
This is a shared conversation. Sign in to Orris to start your own chat.