Make a ppt or pics on ct nose and pns with detail with parts
mkdir -p /home/daytona/workspace/ct-nose-pns && ls /home/daytona/workspace/ct-no…
Where is the file I asked u to made
~/ct-nose-pns/make_ppt.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// ── fetch images as base64 ──────────────────────────────────────────────────
const imageUrls = [
"https://cdn.orris.care/cdss_images/7fef165dff6e0d50619d8df266ea25c202e9eb50dbf52fa2fd618e4f88de37e5.png", // nasal skeleton
"https://cdn.orris.care/cdss_images/8ae5d84583f79566ae2df73211989e39185bbe731f47668acde5cfc7b22db321.png", // nasal septum
"https://cdn.orris.care/cdss_images/03fd6e7916f788188cdaceba354720c53ea8ee572e5f6cc569ff6c8f8e782345.png", // lateral nasal wall turbinates
"https://cdn.orris.care/cdss_images/a6bd0d9670d16108da493bd4a34b6d98ab77b8a8a65d50f1e89b2ed0e5fdf6c3.png", // sinuses diagram
"https://cdn.orris.care/cdss_images/f7daab3d879969f1af3007893bfc152637674b7aaf1b2f423a42f77b43e7b75b.png", // normal PNS CT coronal/sagittal/axial
"https://cdn.orris.care/cdss_images/675683b45c6cd6c3fae9910e79fce7244b75f63663ae3f22ee3e1d2f67a02a5d.png", // sinusitis CT axial/coronal
"https://cdn.orris.care/cdss_images/5711030c692e59dac256b9748e424046a5b0870619a6ca2cf188a6879ea19b41.png", // paranasal surgical box
];
console.log("Fetching images...");
let images;
try {
const result = execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString();
images = JSON.parse(result);
console.log("Images fetched:", images.map((img, i) => `${i}: ${img.error ? "ERROR: " + img.error : "OK"}`));
} catch (e) {
console.error("Image fetch error:", e.message);
images = imageUrls.map(() => ({ base64: null, error: "fetch failed" }));
}
function img(index) {
return images[index] && !images[index].error ? images[index].base64 : null;
}
// ── Color palette ──────────────────────────────────────────────────────────
const C = {
darkBg: "0D1B2A", // deep navy
midBg: "1B2A3B", // medium navy
accent: "00B4D8", // cyan
accent2: "48CAE4", // light cyan
white: "FFFFFF",
offWhite: "E8F4F8",
gold: "F9C74F",
soft: "90E0EF",
gray: "B0C4D8",
darkText: "0D1B2A",
};
// ── Presentation ───────────────────────────────────────────────────────────
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "CT of Nose & Paranasal Sinuses";
pres.author = "Orris Medical";
// helper: add slide background
function bgSlide(color) {
const s = pres.addSlide();
s.background = { color };
return s;
}
// helper: add a section header bar
function sectionBar(slide, text) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.55, fill: { color: C.accent }, line: { color: C.accent } });
slide.addText(text, { x: 0.15, y: 0.05, w: 9.7, h: 0.45, fontSize: 14, bold: true, color: C.darkText, fontFace: "Calibri", margin: 0 });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
// gradient band
s.addShape(pres.ShapeType.rect, { x: 0, y: 2.0, w: 10, h: 1.7, fill: { color: C.midBg }, line: { color: C.midBg } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.7, w: 10, h: 0.08, fill: { color: C.accent }, line: { color: C.accent } });
s.addText("CT OF NOSE &", { x: 0.5, y: 0.5, w: 9, h: 0.8, fontSize: 38, bold: true, color: C.accent, fontFace: "Calibri", charSpacing: 4 });
s.addText("PARANASAL SINUSES (PNS)", { x: 0.5, y: 1.25, w: 9, h: 0.8, fontSize: 30, bold: true, color: C.white, fontFace: "Calibri" });
s.addText("Anatomy • CT Technique • Normal Findings • Variants • Pathology", {
x: 0.5, y: 2.1, w: 9, h: 0.5, fontSize: 14, color: C.soft, fontFace: "Calibri", italic: true
});
s.addText("Orris Medical Education | Based on Scott-Brown's, Cummings ORL, Grainger & Allison's Radiology", {
x: 0.5, y: 5.1, w: 9, h: 0.35, fontSize: 9, color: C.gray, fontFace: "Calibri"
});
if (img(0)) s.addImage({ data: img(0), x: 7.0, y: 0.3, w: 2.7, h: 2.0 });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "CONTENTS AT A GLANCE");
s.addText("Topics Covered", { x: 0.4, y: 0.65, w: 9, h: 0.5, fontSize: 20, bold: true, color: C.accent, fontFace: "Calibri" });
const topics = [
["1", "External Nose — Anatomy & Skeleton"],
["2", "Nasal Septum — Cartilaginous & Bony Parts"],
["3", "Lateral Nasal Wall — Turbinates & Meatuses"],
["4", "Paranasal Sinuses — Overview & Parts"],
["5", "Osteomeatal Complex (OMC)"],
["6", "CT Technique — Protocol, Windows, Planes"],
["7", "Normal CT Anatomy — Coronal, Axial, Sagittal"],
["8", "Anatomic Variants on CT"],
["9", "CT Pathology — Sinusitis, Polyps, Tumours"],
["10", "Surgical Box Concept & Clinical Relevance"],
];
topics.forEach(([num, text], i) => {
const col = i < 5 ? 0 : 1;
const row = i < 5 ? i : i - 5;
const x = col === 0 ? 0.4 : 5.2;
const y = 1.3 + row * 0.72;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 0.38, h: 0.38, fill: { color: C.accent }, line: { color: C.accent }, rectRadius: 0.05 });
s.addText(num, { x, y: y + 0.02, w: 0.38, h: 0.34, fontSize: 13, bold: true, color: C.darkText, align: "center", fontFace: "Calibri", margin: 0 });
s.addText(text, { x: x + 0.45, y: y + 0.04, w: 4.3, h: 0.35, fontSize: 12, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — EXTERNAL NOSE ANATOMY
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.midBg);
sectionBar(s, "SECTION 1 — EXTERNAL NOSE: ANATOMY & SKELETON");
s.addText("External Nose — Structural Parts", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
const points = [
{ h: "Bony Framework (Upper 1/3)", b: "Paired nasal bones + frontal processes of maxilla form the bony vault. Supported by the nasal process of the frontal bone superiorly." },
{ h: "Cartilaginous Framework (Lower 2/3)", b: "Upper lateral cartilages (ULC) fuse with the dorsal septum. Lower lateral cartilages (LLC/alar cartilages) form the nasal tip and alae. Sesamoid cartilages fill gaps laterally." },
{ h: "Key Surface Landmarks", b: "Root (nasion) → Dorsum → Tip (apex) → Alae → Columella → Soft tissue triangle. Glabella is the bony prominence between the orbits superior to the nose." },
{ h: "Clinical Relevance on CT", b: "CT clearly shows nasal bone fractures, septal deviation, ossification of cartilages, and relationship to the orbit and anterior cranial fossa." },
];
points.forEach((p, i) => {
const y = 1.25 + i * 1.0;
s.addShape(pres.ShapeType.rect, { x: 0.3, y: y, w: 0.06, h: 0.32, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(p.h, { x: 0.45, y: y, w: 6.0, h: 0.32, fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
s.addText(p.b, { x: 0.45, y: y + 0.33, w: 6.5, h: 0.55, fontSize: 10.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
if (img(0)) s.addImage({ data: img(0), x: 7.1, y: 0.65, w: 2.65, h: 4.5 });
s.addText("Fig: Nasal skeleton (Bailey & Love's)", { x: 7.1, y: 5.15, w: 2.65, h: 0.25, fontSize: 8, color: C.gray, fontFace: "Calibri", italic: true });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — NASAL SEPTUM
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "SECTION 2 — NASAL SEPTUM");
s.addText("Nasal Septum — Components", { x: 0.4, y: 0.65, w: 6.5, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
// table of components
const rows = [
[{ text: "Component", options: { bold: true, color: C.darkText } }, { text: "Location / Description", options: { bold: true, color: C.darkText } }],
[{ text: "Quadrilateral cartilage", options: {} }, { text: "Anterior portion — forms the mobile cartilaginous septum. Articulates with the ULCs superiorly.", options: {} }],
[{ text: "Perpendicular plate of ethmoid", options: {} }, { text: "Posterosuperior bony portion descending from the cribriform plate.", options: {} }],
[{ text: "Vomer", options: {} }, { text: "Posteroinferior bony portion. Articulates with the palatine bone, maxilla and sphenoid.", options: {} }],
[{ text: "Nasal crest of maxilla & palatine", options: {} }, { text: "Forms the floor of the nasal cavity.", options: {} }],
];
s.addTable(rows, {
x: 0.35, y: 1.25, w: 6.2, h: 3.5,
fontSize: 11, fontFace: "Calibri",
border: { pt: 0.5, color: C.accent },
color: C.offWhite,
fill: C.midBg,
rowH: 0.62,
colW: [2.2, 4.0],
align: "left", valign: "middle",
});
s.addText([
{ text: "CT Tip: ", options: { bold: true, color: C.gold } },
{ text: "On coronal CT, the septum appears as a midline bony/cartilaginous partition. Septal deviation is graded by degree of deviation toward one nasal fossa. Spurs at the cartilage-bone junction are common and often cause obstruction.", options: { color: C.offWhite } }
], { x: 0.35, y: 4.85, w: 6.2, h: 0.6, fontSize: 10.5, fontFace: "Calibri" });
if (img(1)) s.addImage({ data: img(1), x: 6.8, y: 0.65, w: 3.0, h: 4.0 });
s.addText("Fig: Left nasal septum (Bailey & Love's)", { x: 6.8, y: 4.65, w: 3.0, h: 0.25, fontSize: 8, color: C.gray, fontFace: "Calibri", italic: true });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — LATERAL NASAL WALL & TURBINATES
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.midBg);
sectionBar(s, "SECTION 3 — LATERAL NASAL WALL: TURBINATES & MEATUSES");
s.addText("Turbinates (Conchae) & Meatuses", { x: 0.4, y: 0.65, w: 6.3, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
const bullets = [
{ h: "Inferior Turbinate (Concha)", b: "Largest; an independent bone. Overlies the inferior meatus which receives the nasolacrimal duct." },
{ h: "Middle Turbinate", b: "Part of ethmoid bone. Most important surgical landmark. Overlies the middle meatus — the key drainage pathway for frontal, maxillary and anterior ethmoid sinuses via the osteomeatal complex." },
{ h: "Superior Turbinate", b: "Smallest; also part of ethmoid. Overlies the superior meatus — receives posterior ethmoid sinus drainage." },
{ h: "Supreme (4th) Turbinate", b: "Present in ~60% as a remnant; overlies the sphenoethmoidal recess." },
{ h: "Sphenoethmoidal Recess", b: "Between superior turbinate and nasal septum posterosuperiorly — drains the sphenoid sinus." },
{ h: "CT Significance", b: "Paradoxical middle turbinate curvature, concha bullosa (pneumatized middle turbinate) are common variants visible on CT that can obstruct the OMC." },
];
bullets.forEach((b, i) => {
const y = 1.22 + i * 0.68;
s.addShape(pres.ShapeType.rect, { x: 0.3, y: y + 0.05, w: 0.06, h: 0.25, fill: { color: C.accent2 }, line: { color: C.accent2 } });
s.addText(b.h + ": ", { x: 0.45, y: y + 0.03, w: 5.9, h: 0.28, fontSize: 11.5, bold: true, color: C.accent2, fontFace: "Calibri", margin: 0 });
s.addText(b.b, { x: 0.45, y: y + 0.31, w: 5.9, h: 0.33, fontSize: 10, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
if (img(2)) s.addImage({ data: img(2), x: 6.8, y: 0.65, w: 3.0, h: 4.5 });
s.addText("Fig: Right lateral nasal wall with turbinates (Bailey & Love's)", { x: 6.8, y: 5.15, w: 3.0, h: 0.3, fontSize: 8, color: C.gray, fontFace: "Calibri", italic: true });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — PARANASAL SINUSES OVERVIEW
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "SECTION 4 — PARANASAL SINUSES: OVERVIEW");
s.addText("Four Paired Paranasal Sinuses", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
const sinuses = [
{ name: "Maxillary Sinus\n(Antrum of Highmore)", details: ["Largest PNS; pyramidal shape", "Floor = alveolar process (root of 2nd premolar / 1st molar nearby)", "Roof = orbital floor; medial wall = lateral nasal wall", "Ostium opens into middle meatus via infundibulum", "On CT: best seen on coronal + axial cuts"] },
{ name: "Frontal Sinus", details: ["Paired but often asymmetric; absent in ~5%", "Drains via nasofrontal duct into frontal recess → middle meatus", "CT in coronal + sagittal planes shows frontal drainage pathway clearly", "Intersinus septum often deviated"] },
{ name: "Ethmoid Sinuses", details: ["Labyrinth of 3–18 air cells per side (avg ~9)", "Anterior ethmoid → middle meatus; posterior → superior meatus", "Lamina papyracea (medial orbital wall) is its lateral boundary", "Key cells: agger nasi, ethmoid bulla, Haller cells (infraorbital)"] },
{ name: "Sphenoid Sinus", details: ["Posterior-most and deepest sinus", "Drains via ostium into sphenoethmoidal recess", "Adjacent to optic nerve, ICA, cavernous sinus, pituitary fossa", "On CT: vital to assess pre-FESS (optic canal, ICA dehiscence)"] },
];
sinuses.forEach((sn, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.15;
const y = 1.25 + row * 2.05;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.6, h: 1.9, fill: { color: C.midBg }, line: { color: C.accent, pt: 1 }, rectRadius: 0.08 });
s.addText(sn.name, { x: x + 0.15, y: y + 0.1, w: 4.3, h: 0.45, fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
sn.details.forEach((d, di) => {
s.addText("• " + d, { x: x + 0.15, y: y + 0.55 + di * 0.26, w: 4.3, h: 0.26, fontSize: 9.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
});
if (img(3)) s.addImage({ data: img(3), x: 3.5, y: 5.1, w: 3.0, h: 0.45 });
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — OSTEOMEATAL COMPLEX (OMC)
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.midBg);
sectionBar(s, "SECTION 5 — OSTEOMEATAL COMPLEX (OMC)");
s.addText("The Osteomeatal Complex", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
s.addText("The OMC is the key functional unit of anterior sinus drainage. It is a region, not a single structure. Disease here produces the 'anterior sinus triad' (maxillary + frontal + anterior ethmoid sinusitis).", {
x: 0.4, y: 1.2, w: 9.2, h: 0.6, fontSize: 11.5, color: C.offWhite, fontFace: "Calibri", italic: true
});
const omcParts = [
["Uncinate Process", "Thin curved bony plate of ethmoid. Swings medially/laterally — determines whether frontal sinus drains medial or lateral to it. Key structure in FESS (uncinectomy is step 1)."],
["Ethmoid Bulla", "Largest, most constant anterior ethmoid cell. Lies directly superior to the infundibulum. Can obstruct drainage if hypertrophied."],
["Infundibulum", "Funnel-shaped space between uncinate process and lamina papyracea. Receives maxillary sinus ostium and anterior ethmoid drainage."],
["Hiatus Semilunaris", "Crescent-shaped gap between uncinate process and ethmoid bulla. Opens into the middle meatus."],
["Middle Meatus", "The main drainage corridor (frontal, maxillary, anterior ethmoid sinuses all drain here)."],
["Frontal Recess", "Narrow channel connecting frontal sinus to middle meatus. Most vulnerable area for obstruction by agger nasi cells or a high ethmoid bulla."],
];
omcParts.forEach((part, i) => {
const y = 1.85 + i * 0.62;
s.addShape(pres.ShapeType.rect, { x: 0.3, y: y + 0.06, w: 0.06, h: 0.22, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(part[0], { x: 0.44, y: y + 0.04, w: 2.3, h: 0.26, fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
s.addText(part[1], { x: 2.75, y: y + 0.04, w: 6.9, h: 0.5, fontSize: 10, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — CT TECHNIQUE
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "SECTION 6 — CT TECHNIQUE: PROTOCOL & WINDOWS");
s.addText("CT Nose & PNS — Standard Protocol", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
const cols = [
{
title: "Acquisition",
items: [
"Patient: Supine, gantry parallel to hard palate",
"Slice thickness: 0.6–1 mm (axial acquisition)",
"Field of view: Nose tip → posterior clinoid",
"Low-dose multidetector CT (MDCT) preferred",
"No IV contrast for routine sinusitis",
"IV contrast if orbital/intracranial complication suspected",
"Screening protocol: 5 mm cuts at 10 mm intervals",
]
},
{
title: "Reconstruction Planes",
items: [
"AXIAL: Base plane — overview of sinuses & orbits",
"CORONAL: Correlates best with endoscopic view; best for OMC",
"SAGITTAL: Best for frontal sinus drainage pathway",
"All three planes reconstructed from single axial acquisition",
"Reconstruction ≤ 3 mm thickness in each plane",
]
},
{
title: "Window Settings",
items: [
"BONE window: W 1500–2000 / L 300 HU",
"SOFT TISSUE window: W 450 / L 50 HU",
"Bone windows: essential for OMC & bony anatomy detail",
"Soft tissue windows: mucosal thickening, polyps, complications",
"Fungal disease: soft tissue windows show calcification / double density",
]
}
];
cols.forEach((col, ci) => {
const x = 0.3 + ci * 3.23;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.25, w: 3.1, h: 4.15, fill: { color: C.midBg }, line: { color: C.accent, pt: 1 }, rectRadius: 0.08 });
s.addText(col.title, { x: x + 0.1, y: 1.32, w: 2.9, h: 0.38, fontSize: 12, bold: true, color: C.gold, fontFace: "Calibri", align: "center", margin: 0 });
col.items.forEach((item, ii) => {
s.addText("• " + item, { x: x + 0.1, y: 1.75 + ii * 0.52, w: 2.9, h: 0.48, fontSize: 9.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
});
s.addText("Source: Scott-Brown's ORL, Cummings ORL (8th ed), Grainger & Allison's Diagnostic Radiology", {
x: 0.4, y: 5.3, w: 9.2, h: 0.25, fontSize: 8.5, color: C.gray, fontFace: "Calibri", italic: true
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — NORMAL CT PNS (with textbook image)
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.midBg);
sectionBar(s, "SECTION 7 — NORMAL CT ANATOMY OF THE PARANASAL SINUSES");
s.addText("Normal PNS CT — Coronal, Sagittal & Axial Views", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 17, bold: true, color: C.accent, fontFace: "Calibri" });
if (img(4)) {
s.addImage({ data: img(4), x: 0.3, y: 1.2, w: 5.5, h: 3.8 });
s.addText("Fig 61.33: Normal PNS CT — (A) Coronal: red arrows = mucociliary flow in left antrum pointing to infundibulum (green stars); blue = middle meatus; EB = ethmoid bulla. (B) Sagittal: F = frontal sinus; AE/PE = anterior/posterior ethmoid; S = sphenoid; MT = middle turbinate; IT = inferior turbinate; white line = basal lamella. (C) Axial: S = sphenoid; PE = posterior ethmoid; white arrow = sphenoid ostium; dashed line = sphenoethmoidal recess. [Grainger & Allison's]", {
x: 0.3, y: 5.02, w: 5.5, h: 0.5, fontSize: 7.5, color: C.gray, fontFace: "Calibri", italic: true
});
}
const labels = [
{ h: "Coronal View", b: "Best shows the OMC, uncinate process, ethmoid bulla, maxillary infundibulum, and middle turbinate. Mucociliary flow visible as soft tissue lining pointing toward the ostium." },
{ h: "Sagittal View", b: "Best for frontal sinus drainage pathway, basal lamella (divides anterior from posterior ethmoid), and relationship of frontal recess to agger nasi cells." },
{ h: "Axial View", b: "Best for sphenoid sinus, sphenoethmoidal recess, optic canals, posterior ethmoid air cells, pterygopalatine fossa, and posterior wall of maxillary sinus." },
{ h: "Basal Lamella", b: "Key CT landmark on sagittal view — the lateral insertion of the middle turbinate. Divides ethmoid sinuses into anterior (drain to middle meatus) and posterior (drain to superior meatus) groups." },
];
labels.forEach((l, i) => {
const y = 1.2 + i * 0.97;
s.addShape(pres.ShapeType.rect, { x: 6.0, y: y + 0.03, w: 0.06, h: 0.28, fill: { color: C.accent2 }, line: { color: C.accent2 } });
s.addText(l.h, { x: 6.15, y: y, w: 3.55, h: 0.32, fontSize: 12, bold: true, color: C.accent2, fontFace: "Calibri", margin: 0 });
s.addText(l.b, { x: 6.15, y: y + 0.33, w: 3.55, h: 0.58, fontSize: 9.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — ANATOMIC VARIANTS ON CT
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "SECTION 8 — ANATOMIC VARIANTS ON CT");
s.addText("Common CT Anatomic Variants", { x: 0.4, y: 0.65, w: 9.2, h: 0.45, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
s.addText("Must be identified pre-operatively — they can obstruct drainage and cause surgical complications", {
x: 0.4, y: 1.1, w: 9.2, h: 0.35, fontSize: 11, color: C.soft, fontFace: "Calibri", italic: true
});
const variants = [
["Concha Bullosa", "Pneumatization of the middle turbinate. Most common variant. Can narrow the middle meatus and obstruct OMC. Seen as an air-containing turbinate on coronal CT."],
["Agger Nasi Cells", "Most anterior ethmoid air cells, anterior to the frontal recess. When large, they can obstruct frontal sinus drainage. Seen on sagittal CT just anterior to the middle turbinate insertion."],
["Haller Cells (Infraorbital Cells)", "Ethmoid air cells that extend along the floor of the orbit / roof of maxillary sinus. Can narrow or obstruct the maxillary infundibulum. Identified on coronal CT."],
["Onodi Cells (Sphenoethmoidal Cells)", "Posterior ethmoid cells that extend lateral and superior to the sphenoid sinus. The optic nerve may run through or adjacent to them — critical surgical hazard."],
["Deviated Nasal Septum (DNS)", "Graded by degree. Spurs at the bony-cartilaginous junction are common. May contact the turbinate causing obstruction. Assess on coronal & axial CT."],
["Paradoxical Middle Turbinate", "Middle turbinate curves laterally (instead of medially). Narrows the middle meatus. Seen on coronal CT."],
["Dehiscent Lamina Papyracea", "Thinning or absence of the medial orbital wall. Orbital fat may herniate into the ethmoid. Risk of orbital injury during FESS."],
["Asymmetric Cribriform Plate (Keros Type III)", "Deep lateral lamella of the cribriform plate (>5 mm, Keros III). Significantly increases risk of CSF leak during FESS."],
];
variants.forEach((v, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col === 0 ? 0.3 : 5.1;
const y = 1.5 + row * 0.97;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.6, h: 0.9, fill: { color: C.midBg }, line: { color: C.accent, pt: 0.5 }, rectRadius: 0.06 });
s.addText(v[0], { x: x + 0.12, y: y + 0.06, w: 4.36, h: 0.28, fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
s.addText(v[1], { x: x + 0.12, y: y + 0.34, w: 4.36, h: 0.5, fontSize: 9.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — CT PATHOLOGY: SINUSITIS
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.midBg);
sectionBar(s, "SECTION 9 — CT PATHOLOGY: RHINOSINUSITIS");
s.addText("CT Findings in Rhinosinusitis", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 18, bold: true, color: C.accent, fontFace: "Calibri" });
if (img(5)) {
s.addImage({ data: img(5), x: 0.3, y: 1.2, w: 5.2, h: 3.6 });
s.addText("Fig 8.13: CT in sinusitis — (A) Axial screening NCCT: right maxillary sinus opacification vs. normal left. (B) Coronal NCCT pre-FESS: mucosal thickening, right maxillary + ethmoid opacification, left infundibular disease. (C) Axial CECT soft tissue windows: rim-enhancing mucosa, bony sclerosis in chronic sinusitis. [Cummings ORL]", {
x: 0.3, y: 4.82, w: 5.2, h: 0.55, fontSize: 7.5, color: C.gray, fontFace: "Calibri", italic: true
});
}
const findings = [
{ h: "Acute Sinusitis", b: "Air-fluid level, mucosal thickening >3–4 mm, sinus opacification. Soft tissue windows distinguish fluid from mucosal thickening." },
{ h: "Chronic Sinusitis", b: "Mucosal thickening + bony sclerosis / thickening of sinus walls. Posterior wall thickening of maxillary sinus on axial CT is classic." },
{ h: "Nasal Polyposis", b: "Bilateral expansile soft tissue masses in nasal cavity. 'Cascading' appearance on contrast CT. Widens infundibulum. May remodel bone." },
{ h: "Fungal Sinusitis", b: "Hyperdense material (fungal concretions) on bone windows. Double density sign on soft tissue windows. Often unilateral maxillary sinus. May have bony erosion (invasive form)." },
{ h: "Complications", b: "Orbital cellulitis, subperiosteal abscess, intracranial extension (empyema, meningitis). Contrast CT + MRI essential." },
];
findings.forEach((f, i) => {
const y = 1.2 + i * 0.82;
s.addShape(pres.ShapeType.rect, { x: 5.7, y: y + 0.03, w: 0.06, h: 0.26, fill: { color: C.gold }, line: { color: C.gold } });
s.addText(f.h, { x: 5.85, y: y, w: 3.85, h: 0.3, fontSize: 11.5, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
s.addText(f.b, { x: 5.85, y: y + 0.31, w: 3.85, h: 0.45, fontSize: 10, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — SURGICAL BOX & CLINICAL RELEVANCE
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
sectionBar(s, "SECTION 10 — PARANASAL SURGICAL BOX & CLINICAL RELEVANCE");
s.addText("The Paranasal Surgical Box (FESS Planning)", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 17, bold: true, color: C.accent, fontFace: "Calibri" });
s.addText("CT is mandatory before FESS. The paranasal surgical box concept provides a framework of fixed landmarks to guide safe endoscopic dissection.", {
x: 0.4, y: 1.18, w: 6.0, h: 0.5, fontSize: 11, color: C.offWhite, fontFace: "Calibri", italic: true
});
const boxes = [
{ title: "HORIZONTAL BOX", color: C.accent, items: ["Medial: Middle turbinate", "Lateral: Lamina papyracea (medial orbital wall)", "Inferior: Floor of nose", "Superior: Skull base (cribriform plate)"] },
{ title: "VERTICAL BOX", color: C.gold, items: ["Medial: Middle turbinate + intersinus septum", "Lateral: Lamina papyracea", "Anterior: Nasofrontal beak", "Posterior: Skull base"] },
];
boxes.forEach((b, i) => {
const x = 0.35 + i * 3.0;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.75, w: 2.75, h: 2.6, fill: { color: C.midBg }, line: { color: b.color, pt: 1.5 }, rectRadius: 0.08 });
s.addText(b.title, { x: x + 0.1, y: 1.82, w: 2.55, h: 0.38, fontSize: 12, bold: true, color: b.color, fontFace: "Calibri", align: "center", margin: 0 });
b.items.forEach((item, ii) => {
s.addText("• " + item, { x: x + 0.12, y: 2.25 + ii * 0.49, w: 2.51, h: 0.46, fontSize: 10, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
});
const keyPoints = [
"1. Identify orbital floor (maxillary sinus roof) FIRST — establishes safe working distance from skull base",
"2. Skull base is identified posteriorly by the sphenoid sinus ostium / face of sphenoid",
"3. Lamina papyracea separates ethmoid from orbit — dehiscence = risk of orbital injury",
"4. Pre-op CT must be reviewed for: Keros type, Onodi cells, optic nerve course, carotid canal dehiscence",
"5. PACS window manipulation is essential — switch between bone and soft-tissue windows",
];
keyPoints.forEach((kp, i) => {
s.addText(kp, { x: 6.4, y: 1.75 + i * 0.72, w: 3.3, h: 0.65, fontSize: 10, color: C.offWhite, fontFace: "Calibri", margin: 8 });
s.addShape(pres.ShapeType.roundRect, { x: 6.4, y: 1.75 + i * 0.72, w: 3.3, h: 0.65, fill: { color: "00000000" }, line: { color: C.accent, pt: 0.5 }, rectRadius: 0.05 });
});
if (img(6)) s.addImage({ data: img(6), x: 0.35, y: 4.42, w: 5.5, h: 1.0 });
s.addText("Fig: Paranasal surgical box schematic — horizontal & vertical components [Scott-Brown's ORL]", {
x: 0.35, y: 5.42, w: 5.5, h: 0.22, fontSize: 7.5, color: C.gray, fontFace: "Calibri", italic: true
});
}
// ════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — SUMMARY / KEY TAKE-AWAYS
// ════════════════════════════════════════════════════════════════════════════
{
const s = bgSlide(C.darkBg);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.darkBg }, line: { color: C.darkBg } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.55, fill: { color: C.accent }, line: { color: C.accent } });
s.addText("KEY TAKE-AWAYS — CT NOSE & PNS", { x: 0.15, y: 0.07, w: 9.7, h: 0.42, fontSize: 14, bold: true, color: C.darkText, fontFace: "Calibri", margin: 0 });
s.addText("Summary", { x: 0.4, y: 0.65, w: 9.2, h: 0.5, fontSize: 20, bold: true, color: C.accent, fontFace: "Calibri" });
const takeaways = [
["CT is first-line imaging for PNS disease", "NCCT with bone algorithm; coronal + axial + sagittal reconstructions. Low-dose MDCT is standard."],
["OMC is the master key", "All anterior sinus pathology stems from OMC obstruction. Coronal CT is the ideal plane to assess it."],
["Know your variants", "Concha bullosa, agger nasi, Haller cells, Onodi cells, Keros III — all affect FESS planning and complication risk."],
["4 sinuses — 4 drainage pathways", "Maxillary + frontal + anterior ethmoid → middle meatus (via OMC); posterior ethmoid → superior meatus; sphenoid → sphenoethmoidal recess."],
["Surgical box concept", "Three fixed landmarks: maxillary sinus roof (orbital floor), lamina papyracea (medial orbital wall), skull base (posterior = sphenoid). Never dissect beyond these."],
["Pathology pattern recognition", "Air-fluid level = acute; mucosal thickening + bony sclerosis = chronic; hyperdense material = fungal; expansile bilateral masses = polyposis."],
];
takeaways.forEach((t, i) => {
const y = 1.22 + i * 0.72;
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y, w: 9.4, h: 0.65, fill: { color: C.midBg }, line: { color: C.accent, pt: 0.5 }, rectRadius: 0.05 });
s.addText(t[0] + " — ", { x: 0.45, y: y + 0.18, w: 3.2, h: 0.3, fontSize: 11, bold: true, color: C.gold, fontFace: "Calibri", margin: 0 });
s.addText(t[1], { x: 3.65, y: y + 0.18, w: 5.85, h: 0.3, fontSize: 10.5, color: C.offWhite, fontFace: "Calibri", margin: 0 });
});
s.addText("Sources: Scott-Brown's ORL Vol 1 (9th ed) • Cummings ORL Head & Neck Surgery (8th ed) • Grainger & Allison's Diagnostic Radiology • Bailey & Love's Surgery (28th ed)", {
x: 0.4, y: 5.38, w: 9.2, h: 0.22, fontSize: 8, color: C.gray, fontFace: "Calibri", italic: true
});
}
// ── Write file ─────────────────────────────────────────────────────────────
const outPath = "/home/daytona/workspace/ct-nose-pns/CT_Nose_PNS.pptx";
pres.writeFile({ fileName: outPath })
.then(() => console.log("SUCCESS:", outPath))
.catch(e => console.error("WRITE ERROR:", e));
cd /home/daytona/workspace/ct-nose-pns && node make_ppt.js 2>&1
cd /home/daytona/workspace/ct-nose-pns && timeout 60 node /home/daytona/skills/s…
node -e "const d=require('/home/daytona/workspace/ct-nose-pns/images.json'); d.f…
When will the ppt be ready it’s already 30 mins
~/ct-nose-pns/build_ppt.js
const pptxgen = require("pptxgenjs");
const fs = require("fs");
// Load pre-fetched images
const images = JSON.parse(fs.readFileSync("/home/daytona/workspace/ct-nose-pns/images.json"));
function img(i) { return images[i] && !images[i].error ? images[i].base64 : null; }
const C = {
darkBg: "0D1B2A", midBg: "1B2A3B", accent: "00B4D8", accent2: "48CAE4",
white: "FFFFFF", offWhite: "E8F4F8", gold: "F9C74F", soft: "90E0EF",
gray: "B0C4D8", darkText: "0D1B2A",
};
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "CT of Nose & Paranasal Sinuses";
function bgSlide(color) { const s = pres.addSlide(); s.background = { color }; return s; }
function topBar(slide, text) {
slide.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:0.55, fill:{color:C.accent}, line:{color:C.accent} });
slide.addText(text, { x:0.15, y:0.06, w:9.7, h:0.43, fontSize:13, bold:true, color:C.darkText, fontFace:"Calibri", margin:0 });
}
// ── SLIDE 1: TITLE ────────────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
s.addShape(pres.ShapeType.rect, { x:0, y:1.9, w:10, h:1.8, fill:{color:C.midBg}, line:{color:C.midBg} });
s.addShape(pres.ShapeType.rect, { x:0, y:3.68, w:10, h:0.07, fill:{color:C.accent}, line:{color:C.accent} });
s.addText("CT OF NOSE &", { x:0.5, y:0.4, w:8.5, h:0.85, fontSize:40, bold:true, color:C.accent, fontFace:"Calibri", charSpacing:3 });
s.addText("PARANASAL SINUSES (PNS)", { x:0.5, y:1.2, w:8.5, h:0.75, fontSize:28, bold:true, color:C.white, fontFace:"Calibri" });
s.addText("Anatomy • CT Technique • Normal Findings • Variants • Pathology", {
x:0.5, y:2.05, w:8.5, h:0.45, fontSize:13, color:C.soft, fontFace:"Calibri", italic:true });
s.addText("Orris Medical Education | Sources: Scott-Brown's ORL • Cummings ORL • Grainger & Allison's Radiology • Bailey & Love's Surgery", {
x:0.5, y:5.2, w:9, h:0.28, fontSize:8.5, color:C.gray, fontFace:"Calibri" });
if (img(0)) s.addImage({ data:img(0), x:7.1, y:0.3, w:2.6, h:2.0 });
}
// ── SLIDE 2: CONTENTS ────────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "CONTENTS");
s.addText("Topics Covered", { x:0.4, y:0.65, w:9, h:0.45, fontSize:20, bold:true, color:C.accent, fontFace:"Calibri" });
const topics = [
"1. External Nose — Anatomy & Skeleton",
"2. Nasal Septum — Parts & CT Appearance",
"3. Lateral Nasal Wall — Turbinates & Meatuses",
"4. Paranasal Sinuses — All Four Pairs",
"5. Osteomeatal Complex (OMC)",
"6. CT Protocol — Technique & Windows",
"7. Normal CT Anatomy — Coronal, Axial, Sagittal",
"8. Anatomic Variants on CT",
"9. CT Pathology — Sinusitis, Polyps, Tumours",
"10. Paranasal Surgical Box & FESS Planning",
];
topics.forEach((t, i) => {
const col = i < 5 ? 0 : 1;
const row = i < 5 ? i : i - 5;
s.addText(t, { x: col===0 ? 0.5 : 5.2, y: 1.25 + row*0.78, w:4.5, h:0.65,
fontSize:12.5, color:C.offWhite, fontFace:"Calibri",
fill:{color:C.midBg}, line:{color:C.accent, pt:0.5}, margin:8, rectRadius:0.06 });
});
}
// ── SLIDE 3: EXTERNAL NOSE ───────────────────────────────────────────────
{
const s = bgSlide(C.midBg);
topBar(s, "SECTION 1 — EXTERNAL NOSE: ANATOMY & SKELETON");
s.addText("External Nose — Structural Parts", { x:0.4, y:0.65, w:6.3, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const pts = [
["Bony Framework (Upper 1/3)", "Paired nasal bones + frontal processes of maxilla form the bony vault. The nasal bones articulate superiorly with the nasal spine of the frontal bone (nasion = root of nose). Glabella is the smooth prominence between the orbits."],
["Cartilaginous Framework (Lower 2/3)", "Upper lateral cartilages (ULC) are fused to the caudal dorsal septum forming the middle vault. Lower lateral cartilages (LLC / alar cartilages) define the nasal tip, dome, and alar rims. Sesamoid cartilages fill the lateral gaps."],
["Key Surface Landmarks", "Root (nasion) → Dorsum → Tip / Apex → Alar lobules → Columella → Soft-tissue triangles. The limen nasi is the internal threshold between the vestibule and the nasal cavity proper."],
["CT Relevance", "CT shows nasal bone fractures, cartilage calcification, dorsal deformities and their relationship to the orbit and anterior cranial fossa. Axial cuts best show fracture displacement; coronal cuts show comminution."],
];
pts.forEach(([h, b], i) => {
const y = 1.2 + i * 1.02;
s.addShape(pres.ShapeType.rect, { x:0.3, y:y+0.05, w:0.06, h:0.27, fill:{color:C.gold}, line:{color:C.gold} });
s.addText(h, { x:0.45, y:y+0.02, w:6.0, h:0.3, fontSize:12, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(b, { x:0.45, y:y+0.33, w:6.2, h:0.62, fontSize:10, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
if (img(0)) s.addImage({ data:img(0), x:6.9, y:0.65, w:2.85, h:4.55 });
s.addText("Fig: Nasal skeleton\n(Bailey & Love's)", { x:6.9, y:5.2, w:2.85, h:0.3, fontSize:8, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── SLIDE 4: NASAL SEPTUM ────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "SECTION 2 — NASAL SEPTUM");
s.addText("Nasal Septum — Components & CT", { x:0.4, y:0.65, w:6.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const rows = [
[{ text:"Component", options:{bold:true,color:C.darkBg} }, { text:"Description", options:{bold:true,color:C.darkBg} }],
[{ text:"Quadrilateral cartilage", options:{color:C.offWhite} }, { text:"Anterior mobile septum. Fuses with ULCs superiorly. Key in rhinoplasty.", options:{color:C.offWhite} }],
[{ text:"Perpendicular plate of ethmoid", options:{color:C.offWhite} }, { text:"Posterosuperior bony plate descending from the cribriform plate.", options:{color:C.offWhite} }],
[{ text:"Vomer", options:{color:C.offWhite} }, { text:"Posteroinferior bone; articulates with maxilla, palatine bone & sphenoid.", options:{color:C.offWhite} }],
[{ text:"Nasal crest (maxilla + palatine)", options:{color:C.offWhite} }, { text:"Forms the bony floor of the nasal cavity.", options:{color:C.offWhite} }],
];
s.addTable(rows, { x:0.35, y:1.22, w:6.1, h:3.0, fontSize:11, fontFace:"Calibri",
border:{pt:0.5,color:C.accent}, fill:C.midBg, rowH:0.55, colW:[2.4,3.7], align:"left", valign:"middle" });
s.addText([
{ text:"CT Tip: ", options:{bold:true,color:C.gold} },
{ text:"Coronal CT shows the septum as a midline partition. Septal deviation is common — note contact with turbinate. Spurs at the cartilage-bone junction often cause unilateral obstruction. Perforation appears as a gap on axial CT.", options:{color:C.offWhite} }
], { x:0.35, y:4.3, w:6.1, h:0.75, fontSize:10.5, fontFace:"Calibri" });
if (img(1)) s.addImage({ data:img(1), x:6.75, y:0.65, w:3.0, h:4.1 });
s.addText("Fig: Left nasal septum\n(Bailey & Love's)", { x:6.75, y:4.75, w:3.0, h:0.3, fontSize:8, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── SLIDE 5: TURBINATES ──────────────────────────────────────────────────
{
const s = bgSlide(C.midBg);
topBar(s, "SECTION 3 — LATERAL NASAL WALL: TURBINATES & MEATUSES");
s.addText("Turbinates (Conchae) & Their Meatuses", { x:0.4, y:0.65, w:6.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const pts = [
["Inferior Turbinate", "Separate bone (not ethmoid). Largest turbinate. Overlies inferior meatus → receives nasolacrimal duct. Main site of nasal airflow warming & humidification."],
["Middle Turbinate", "Part of ethmoid bone. Most important surgical landmark in FESS. Overlies middle meatus which receives frontal, maxillary, and anterior ethmoid drainage via the OMC."],
["Superior Turbinate", "Smallest; part of ethmoid. Overlies superior meatus → drains posterior ethmoid sinuses."],
["Supreme Turbinate", "Present in ~60%; rudimentary. Overlies the sphenoethmoidal recess."],
["Sphenoethmoidal Recess", "Between superior turbinate and septum, posterosuperiorly. Drains the sphenoid sinus."],
["CT Variants", "Concha bullosa = pneumatized middle turbinate (most common variant). Paradoxical turbinate = curves laterally, narrows middle meatus. Both seen on coronal CT."],
];
pts.forEach(([h, b], i) => {
const y = 1.2 + i * 0.7;
s.addShape(pres.ShapeType.rect, { x:0.3, y:y+0.06, w:0.06, h:0.22, fill:{color:C.accent2}, line:{color:C.accent2} });
s.addText(h, { x:0.45, y:y+0.04, w:6.1, h:0.27, fontSize:11.5, bold:true, color:C.accent2, fontFace:"Calibri", margin:0 });
s.addText(b, { x:0.45, y:y+0.31, w:6.1, h:0.35, fontSize:10, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
if (img(2)) s.addImage({ data:img(2), x:6.85, y:0.65, w:2.9, h:4.5 });
s.addText("Fig: Right lateral nasal wall\nwith turbinates (Bailey & Love's)", { x:6.85, y:5.15, w:2.9, h:0.35, fontSize:8, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── SLIDE 6: 4 SINUSES ───────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "SECTION 4 — PARANASAL SINUSES: ALL FOUR PAIRS");
s.addText("Four Paired Paranasal Sinuses", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const sinuses = [
{ name:"Maxillary Sinus\n(Antrum of Highmore)", pts:["Largest PNS; pyramidal shape with apex at zygomatic process","Floor = alveolar process (adjacent to upper premolars/1st molar)","Roof = orbital floor; medial wall = lateral nasal wall","Ostium opens HIGH on medial wall → gravity-dependent drainage poor","CT: coronal & axial — best for floor, roof, infundibulum","Mucociliary drainage toward ostium via infundibulum → middle meatus"] },
{ name:"Frontal Sinus", pts:["Paired but often asymmetric; absent in ~5% of adults","Drains via frontal recess (not a true duct) → middle meatus","CT sagittal plane best for drainage pathway & agger nasi relationship","Intersinus septum usually deviated; beware asymmetric pneumatization"] },
{ name:"Ethmoid Sinuses\n(Labyrinth)", pts:["3–18 air cells per side (avg ~9); divided into anterior & posterior","Anterior (> ethmoid bulla, agger nasi) → middle meatus","Posterior → superior meatus; bounded laterally by lamina papyracea","Key cells: agger nasi, ethmoid bulla, Haller cells, Onodi cells"] },
{ name:"Sphenoid Sinus", pts:["Deepest, most posterior PNS; develops last (complete by ~12 yrs)","Ostium on anterior wall → sphenoethmoidal recess","Neighbours: optic nerve, ICA, cavernous sinus, pituitary fossa, CN III-VI","CT: check ICA canal dehiscence & optic nerve course pre-FESS"] },
];
sinuses.forEach((sn, i) => {
const col = i % 2, row = Math.floor(i / 2);
const x = col===0 ? 0.3 : 5.15;
const y = 1.22 + row * 2.12;
s.addShape(pres.ShapeType.roundRect, { x, y, w:4.65, h:2.0, fill:{color:C.midBg}, line:{color:C.accent,pt:1}, rectRadius:0.08 });
s.addText(sn.name, { x:x+0.14, y:y+0.08, w:4.37, h:0.45, fontSize:11.5, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
sn.pts.forEach((p, pi) => {
s.addText("• "+p, { x:x+0.14, y:y+0.53+pi*0.24, w:4.37, h:0.24, fontSize:9, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
});
}
// ── SLIDE 7: OMC ─────────────────────────────────────────────────────────
{
const s = bgSlide(C.midBg);
topBar(s, "SECTION 5 — OSTEOMEATAL COMPLEX (OMC)");
s.addText("The Osteomeatal Complex — Key Drainage Unit", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
s.addText("The OMC is a functional region (not a single structure) through which the anterior group of sinuses drain. Obstruction here → 'anterior sinus triad' (maxillary + frontal + anterior ethmoid sinusitis).", {
x:0.4, y:1.15, w:9.2, h:0.52, fontSize:11, color:C.offWhite, fontFace:"Calibri", italic:true });
const parts = [
["Uncinate Process", "Thin curved ethmoid plate. Determines frontal drainage direction (medial/lateral). Step 1 in FESS = uncinectomy. Best seen on coronal CT."],
["Ethmoid Bulla", "Largest, most constant anterior ethmoid cell. Superior to infundibulum. When large, obstructs drainage. Identified on coronal CT."],
["Infundibulum", "Funnel-shaped space between uncinate process and lamina papyracea. Receives maxillary ostium and anterior ethmoid drainage."],
["Hiatus Semilunaris", "Crescent-shaped gap between uncinate process and ethmoid bulla. Gateway from infundibulum into the middle meatus."],
["Frontal Recess", "Narrow channel connecting frontal sinus → middle meatus. Vulnerable to obstruction by agger nasi cells. Best seen on sagittal CT."],
["Middle Meatus", "Main drainage corridor receiving frontal, maxillary, and anterior ethmoid sinuses. Between middle turbinate (medial) and lateral nasal wall."],
];
parts.forEach(([h, b], i) => {
const y = 1.75 + i * 0.63;
s.addShape(pres.ShapeType.rect, { x:0.3, y:y+0.06, w:0.06, h:0.22, fill:{color:C.gold}, line:{color:C.gold} });
s.addText(h, { x:0.45, y:y+0.04, w:2.5, h:0.28, fontSize:11, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(b, { x:3.05, y:y+0.04, w:6.65, h:0.5, fontSize:10, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
}
// ── SLIDE 8: CT TECHNIQUE ────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "SECTION 6 — CT PROTOCOL: TECHNIQUE & WINDOWS");
s.addText("CT Nose & PNS — Standard Protocol", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const cols = [
{ title:"Acquisition", color:C.accent, items:[
"Patient: Supine, hard palate parallel to gantry",
"MDCT: 0.6–1 mm slice thickness (axial)",
"FOV: Nose tip → posterior clinoid",
"Low-dose NCCT — no IV contrast for routine sinusitis",
"IV contrast if orbital/intracranial complication",
"Screening: 5 mm cuts at 10 mm intervals",
"Raw data usable for surgical navigation (IGS)",
]},
{ title:"Reconstruction Planes", color:C.gold, items:[
"AXIAL — Base overview: sinuses, orbits, choanae",
"CORONAL — Best for OMC; correlates with endoscopy",
"SAGITTAL — Best for frontal recess & basal lamella",
"All planes reconstructed from single axial acquisition",
"Reconstruction thickness ≤ 3 mm per plane",
"Dental artefact avoided with axial acquisition",
]},
{ title:"Window Settings", color:C.accent2, items:[
"BONE: W 1500–2000 / L 300 HU",
"SOFT TISSUE: W 450 / L 50 HU",
"Bone window essential for OMC bony detail",
"Soft tissue: mucosal thickening, polyps",
"Fungal: soft tissue shows calcification / double density",
"PACS allows user to adjust window settings freely",
]},
];
cols.forEach((col, ci) => {
const x = 0.28 + ci * 3.24;
s.addShape(pres.ShapeType.roundRect, { x, y:1.22, w:3.12, h:4.1, fill:{color:C.midBg}, line:{color:col.color,pt:1}, rectRadius:0.08 });
s.addText(col.title, { x:x+0.1, y:1.29, w:2.92, h:0.38, fontSize:12, bold:true, color:col.color, fontFace:"Calibri", align:"center", margin:0 });
col.items.forEach((item, ii) => {
s.addText("• "+item, { x:x+0.1, y:1.72+ii*0.53, w:2.92, h:0.5, fontSize:9.5, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
});
s.addText("Source: Scott-Brown's ORL (9th ed) • Cummings ORL (8th ed) • Grainger & Allison's Diagnostic Radiology", {
x:0.4, y:5.35, w:9.2, h:0.24, fontSize:8.5, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── SLIDE 9: NORMAL CT (with image) ─────────────────────────────────────
{
const s = bgSlide(C.midBg);
topBar(s, "SECTION 7 — NORMAL CT ANATOMY OF THE PARANASAL SINUSES");
s.addText("Normal PNS CT — Coronal, Sagittal & Axial Views", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
if (img(3)) {
s.addImage({ data:img(3), x:0.3, y:1.18, w:5.6, h:3.9 });
s.addText("Fig 61.33 — Normal PNS CT [Grainger & Allison's]\n(A) Coronal: mucociliary flow in left antrum → infundibulum; middle meatus (blue); EB = ethmoid bulla.\n(B) Sagittal: F=frontal; AE/PE=anterior/posterior ethmoid; S=sphenoid; MT/IT=turbinates; basal lamella (white line).\n(C) Axial: S=sphenoid; PE=posterior ethmoid; white arrow=sphenoid ostium; dashed=sphenoethmoidal recess.", {
x:0.3, y:5.08, w:5.6, h:0.5, fontSize:7.5, color:C.gray, fontFace:"Calibri", italic:true });
}
const labels = [
["Coronal View", "Best shows OMC, uncinate process, ethmoid bulla, maxillary infundibulum, middle turbinate, and nasal septum in one cut. Correlates directly with endoscopic view."],
["Sagittal View", "Best for frontal sinus drainage pathway, agger nasi cells, basal lamella (divides anterior from posterior ethmoid), and depth of olfactory fossa (Keros classification)."],
["Axial View", "Best for sphenoid sinus, sphenoethmoidal recess, posterior ethmoid air cells, pterygopalatine fossa, optic canal, and orbital apex."],
["Basal Lamella", "CT landmark on sagittal view. Lateral insertion of middle turbinate. Divides anterior (→ middle meatus) from posterior (→ superior meatus) ethmoid cells."],
];
labels.forEach(([h, b], i) => {
const y = 1.18 + i * 1.0;
s.addShape(pres.ShapeType.rect, { x:6.1, y:y+0.04, w:0.06, h:0.27, fill:{color:C.gold}, line:{color:C.gold} });
s.addText(h, { x:6.25, y:y+0.01, w:3.45, h:0.31, fontSize:12, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(b, { x:6.25, y:y+0.33, w:3.45, h:0.6, fontSize:9.5, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
}
// ── SLIDE 10: VARIANTS ───────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "SECTION 8 — ANATOMIC VARIANTS ON CT (Must Know Pre-FESS)");
s.addText("Common CT Anatomic Variants", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
const vars = [
["Concha Bullosa", "Pneumatized middle turbinate — most common variant. Narrows middle meatus. Seen as air-filled turbinate on coronal CT."],
["Agger Nasi Cells", "Most anterior ethmoid cells, anterior to frontal recess. When large, obstruct frontal sinus drainage. Seen on sagittal CT."],
["Haller Cells (Infraorbital)", "Ethmoid cells along maxillary sinus roof / orbital floor. Narrow maxillary infundibulum. Identified on coronal CT."],
["Onodi Cells (Sphenoethmoidal)", "Posterior ethmoid cells extending lateral/superior to sphenoid. Optic nerve may run through them — surgical hazard."],
["Septal Deviation / Spur", "Graded by degree of deviation. Spurs at cartilage-bone junction cause unilateral nasal obstruction. Coronal + axial CT."],
["Paradoxical Middle Turbinate", "Turbinate curves laterally instead of medially. Narrows middle meatus. Coronal CT."],
["Dehiscent Lamina Papyracea", "Absent / deficient medial orbital wall. Orbital fat herniates into ethmoid. Orbital injury risk during FESS."],
["Keros Type III (Deep Olfactory Fossa)", "Lateral lamella of cribriform plate >5 mm deep. High risk of CSF leak / intracranial entry during FESS. Sagittal CT."],
];
vars.forEach((v, i) => {
const col = i%2, row = Math.floor(i/2);
const x = col===0 ? 0.3 : 5.1;
const y = 1.2 + row * 1.05;
s.addShape(pres.ShapeType.roundRect, { x, y, w:4.6, h:0.95, fill:{color:C.midBg}, line:{color:C.accent,pt:0.5}, rectRadius:0.06 });
s.addText(v[0], { x:x+0.13, y:y+0.07, w:4.35, h:0.28, fontSize:11, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(v[1], { x:x+0.13, y:y+0.37, w:4.35, h:0.5, fontSize:9.5, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
}
// ── SLIDE 11: PATHOLOGY ──────────────────────────────────────────────────
{
const s = bgSlide(C.midBg);
topBar(s, "SECTION 9 — CT PATHOLOGY: SINUSITIS, POLYPS & TUMOURS");
s.addText("CT Findings in Sinonasal Disease", { x:0.4, y:0.65, w:6.0, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
if (img(4)) {
s.addImage({ data:img(4), x:0.3, y:1.18, w:5.0, h:3.7 });
s.addText("Fig 8.13 — CT in sinusitis [Cummings ORL]\n(A) Axial NCCT: right maxillary opacification vs normal left. Bony sclerosis & posterior wall thickening.\n(B) Coronal NCCT: mucosal thickening right maxillary + ethmoid; left infundibular obstruction (arrow).\n(C) Axial CECT soft tissue: rim-enhancing mucosa; bony sclerosis = chronic sinusitis.", {
x:0.3, y:4.88, w:5.0, h:0.58, fontSize:7.5, color:C.gray, fontFace:"Calibri", italic:true });
}
const findings = [
["Acute Sinusitis", "Air-fluid level, mucosal thickening >3–4 mm, sinus opacification. Soft tissue windows distinguish fluid from thickened mucosa."],
["Chronic Sinusitis", "Mucosal thickening + bony sclerosis / wall thickening. Posterior wall thickening of maxillary sinus on axial CT is classic."],
["Nasal Polyposis", "Bilateral expansile soft tissue masses. 'Cascading' on CECT. Widens infundibulum. May remodel (thin/expand) bone."],
["Fungal Sinusitis", "Hyperdense material (fungal concretions) on bone windows. Double density on soft tissue windows. Usually unilateral maxillary. Bony erosion in invasive form."],
["Complications", "Orbital cellulitis → subperiosteal abscess → orbital abscess. Intracranial: epidural / subdural empyema, meningitis. CECT + MRI essential."],
];
findings.forEach(([h, b], i) => {
const y = 1.18 + i * 0.86;
s.addShape(pres.ShapeType.rect, { x:5.55, y:y+0.05, w:0.06, h:0.25, fill:{color:C.gold}, line:{color:C.gold} });
s.addText(h, { x:5.7, y:y+0.02, w:4.0, h:0.3, fontSize:11.5, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(b, { x:5.7, y:y+0.33, w:4.0, h:0.47, fontSize:10, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
}
// ── SLIDE 12: SURGICAL BOX ───────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "SECTION 10 — PARANASAL SURGICAL BOX & FESS PLANNING");
s.addText("Surgical Box Concept", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:17, bold:true, color:C.accent, fontFace:"Calibri" });
s.addText("CT is mandatory before FESS. Three fixed landmarks define the safe dissection zone. CT must be reviewed in all three planes before any endoscopic sinus surgery.", {
x:0.4, y:1.15, w:6.1, h:0.45, fontSize:10.5, color:C.offWhite, fontFace:"Calibri", italic:true });
const boxes = [
{ title:"HORIZONTAL BOX", color:C.accent, items:["Medial: Middle turbinate","Lateral: Lamina papyracea","Inferior: Floor of nose","Superior: Skull base"] },
{ title:"VERTICAL BOX", color:C.gold, items:["Medial: Middle turbinate + intersinus septum","Lateral: Lamina papyracea","Anterior: Nasofrontal beak","Posterior: Skull base"] },
];
boxes.forEach((b, i) => {
const x = 0.3 + i * 3.1;
s.addShape(pres.ShapeType.roundRect, { x, y:1.68, w:2.85, h:2.4, fill:{color:C.midBg}, line:{color:b.color,pt:1.5}, rectRadius:0.08 });
s.addText(b.title, { x:x+0.1, y:1.75, w:2.65, h:0.38, fontSize:12, bold:true, color:b.color, fontFace:"Calibri", align:"center", margin:0 });
b.items.forEach((item, ii) => {
s.addText("• "+item, { x:x+0.12, y:2.18+ii*0.46, w:2.61, h:0.43, fontSize:10, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
});
const keys = [
"1. Identify orbital floor (maxillary sinus roof) FIRST — establishes distance from skull base",
"2. Skull base identified posteriorly via sphenoid sinus face / ostium",
"3. Lamina papyracea = medial orbital wall — dehiscence → orbital injury risk",
"4. Check pre-op CT: Keros type, Onodi cells, ICA dehiscence, optic nerve course",
"5. Use PACS to freely switch bone ↔ soft tissue windows during review",
];
keys.forEach((k, i) => {
s.addShape(pres.ShapeType.roundRect, { x:6.4, y:1.68+i*0.73, w:3.35, h:0.66, fill:{color:C.midBg}, line:{color:C.accent2,pt:0.5}, rectRadius:0.05 });
s.addText(k, { x:6.52, y:1.72+i*0.73, w:3.11, h:0.58, fontSize:9.5, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
if (img(5)) s.addImage({ data:img(5), x:0.3, y:4.18, w:5.6, h:1.15 });
s.addText("Fig: Paranasal surgical box — horizontal & vertical components [Scott-Brown's ORL]", {
x:0.3, y:5.33, w:5.6, h:0.22, fontSize:7.5, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── SLIDE 13: SUMMARY ────────────────────────────────────────────────────
{
const s = bgSlide(C.darkBg);
topBar(s, "KEY TAKE-AWAYS — CT NOSE & PNS");
s.addText("Summary", { x:0.4, y:0.65, w:9.2, h:0.45, fontSize:20, bold:true, color:C.accent, fontFace:"Calibri" });
const ta = [
["CT is first-line imaging", "NCCT, bone algorithm, low-dose MDCT. Reconstruct coronal + axial + sagittal from one axial acquisition."],
["OMC is the master key", "All anterior sinus pathology starts at the OMC. Coronal CT is the best plane. Uncinectomy is step 1 in FESS."],
["Know your variants", "Concha bullosa, agger nasi, Haller cells, Onodi cells, Keros III — all affect FESS planning & complication risk."],
["4 sinuses — 4 drainage pathways", "Frontal + maxillary + anterior ethmoid → middle meatus. Posterior ethmoid → superior meatus. Sphenoid → sphenoethmoidal recess."],
["Surgical box concept", "Three fixed landmarks: orbital floor, lamina papyracea, skull base. Never dissect beyond these."],
["Pathology patterns", "Air-fluid = acute; sclerosis + thickening = chronic; hyperdense = fungal; bilateral expansile masses = polyposis."],
];
ta.forEach(([h, b], i) => {
const y = 1.18 + i * 0.72;
s.addShape(pres.ShapeType.roundRect, { x:0.3, y, w:9.4, h:0.65, fill:{color:C.midBg}, line:{color:C.accent,pt:0.5}, rectRadius:0.05 });
s.addText(h+" — ", { x:0.46, y:y+0.18, w:3.0, h:0.3, fontSize:11, bold:true, color:C.gold, fontFace:"Calibri", margin:0 });
s.addText(b, { x:3.44, y:y+0.18, w:6.1, h:0.3, fontSize:10.5, color:C.offWhite, fontFace:"Calibri", margin:0 });
});
s.addText("Sources: Scott-Brown's ORL Vol 1 (9th ed) • Cummings ORL Head & Neck Surgery (8th ed) • Grainger & Allison's Diagnostic Radiology • Bailey & Love's Surgery (28th ed)", {
x:0.4, y:5.37, w:9.2, h:0.22, fontSize:8, color:C.gray, fontFace:"Calibri", italic:true });
}
// ── WRITE ─────────────────────────────────────────────────────────────────
const out = "/home/daytona/workspace/ct-nose-pns/CT_Nose_PNS.pptx";
pres.writeFile({ fileName: out })
.then(() => console.log("SUCCESS: " + out))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
node /home/daytona/workspace/ct-nose-pns/build_ppt.js 2>&1
CT Nose PNS
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Table of contents |
| 3 | External nose — skeleton, cartilages, landmarks |
| 4 | Nasal septum — all 4 components + CT tips |
| 5 | Turbinates & meatuses — all 4 conchae + drainage |
| 6 | All four paranasal sinuses in detail |
| 7 | Osteomeatal complex (OMC) — all 6 key structures |
| 8 | CT protocol — acquisition, planes, window settings |
| 9 | Normal CT anatomy with real textbook image (coronal/sagittal/axial) |
| 10 | Anatomic variants — concha bullosa, Haller cells, Onodi, Keros III, etc. |
| 11 | CT pathology — sinusitis, polyps, fungal, complications (with CT image) |
| 12 | Paranasal surgical box + FESS planning (with diagram) |
| 13 | Key take-aways summary |
Find clinical images showing common CT pathology patterns in sinusitis


Key teaching point: The combination of bony wall thickening + sclerosis + intrasinus calcifications + hyperdense secretions is the hallmark pattern of chronic / fungal rhinosinusitis.

Teaching point: This is the most common CT pattern (25% of CRS). One blocked middle meatus → ipsilateral anterior "triad" of sinusitis (frontal + maxillary + anterior ethmoid). The right side remains clear, making this an excellent side-by-side comparison.

Teaching point: The key CT finding is a soft tissue mass tracking continuously from the maxillary antrum → through the ostium → nasal cavity → through the choana into the nasopharynx. Usually unilateral. Bone is thinned/remodelled, not eroded.

Teaching point: Mucocele = chronically obstructed sinus that fills with mucus and slowly expands, eroding/remodelling bone. Frontal > ethmoid > maxillary > sphenoid (frequency). CT shows expansion + opacification; MRI characterizes content.

Teaching point: Orbital complications follow the Chandler classification (I–V). Sinusitis (ethmoid most common source) → preseptal cellulitis → orbital cellulitis → subperiosteal abscess → orbital abscess → cavernous sinus thrombosis. CECT is mandatory to stage the complication.

Teaching point: 75–90% of orbital cellulitis cases have concomitant paranasal sinusitis. The most common source is ethmoid sinusitis spreading through the thin lamina papyracea. CECT (not plain CT) is required to identify the rim-enhancing abscess cavity.
| Pattern | Key CT Findings | Best Plane |
|---|---|---|
| Acute sinusitis | Air-fluid level, mucosal thickening | Coronal |
| Chronic sinusitis | Mucosal thickening + bony sclerosis | Axial + Coronal |
| CRS with calcification | Hyperdense secretions, intrasinus calcifications | Axial (bone window) |
| OMU obstruction | Ipsilateral frontal + maxillary + ant. ethmoid opacification | Coronal |
| Antrochoanal polyp | Maxillary → nasal cavity → choana soft tissue track | Axial |
| Mucocele | Expanded opacified sinus, bony wall dehiscence | Coronal |
| Orbital complication | Orbital fat stranding, rim-enhancing abscess, proptosis | Coronal CECT |