kindly give a detaled presentation on third nerve from basics to localisation in detail
cd /tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86328f442/ && python3 -c " from pptx import Presentation import os files = [ 'neuro-ophthalmology-basics.pptx', 'oculomotor-nerve.pptx', 'seminar-ankur-nigam-new-presents-extraocular-muscle-and-motility.pptx', 'third-nerve-anatomy-and-applied-aspect.pptx' ] for fname in files: print(f'\n\n===== FILE: {fname} =====') prs = Presentation(fname) for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t) if texts: print(f'--- Slide {i} ---') for t in texts: print(t) " 2>&1 | head -500
cd /tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86328f442/ && python3 -c " from pptx import Presentation from pptx.util import Pt import os files = [ 'neuro-ophthalmology-basics.pptx', 'oculomotor-nerve.pptx', 'seminar-ankur-nigam-new-presents-extraocular-muscle-and-motility.pptx', 'third-nerve-anatomy-and-applied-aspect.pptx' ] for fname in files: prs = Presentation(fname) print(f'\n===== FILE: {fname} =====') print(f'Slide count: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): print(f' Slide {i}: {len(slide.shapes)} shapes') for shape in slide.shapes: print(f' shape type={shape.shape_type}, name={shape.name}, has_text={shape.has_text_frame}') if shape.has_text_frame: for para in shape.text_frame.paragraphs: for run in para.runs: if run.text.strip(): print(f' RUN: {run.text[:100]}') if i > 3: print(' ...(truncated)') break " 2>&1
mkdir -p /tmp/workspace/third_nerve_slides && python3 -c " from pptx import Presentation import os # Extract images from 'third-nerve-anatomy-and-applied-aspect.pptx' (most relevant) files = { 'third': '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86928f442/third-nerve-anatomy-and-applied-aspect.pptx', 'oculomotor': '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86928f442/oculomotor-nerve.pptx', } base = '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86928f442' fnames = [ ('third', 'third-nerve-anatomy-and-applied-aspect.pptx'), ('oculomotor', 'oculomotor-nerve.pptx'), ('neuro', 'neuro-ophthalmology-basics.pptx'), ] for prefix, fname in fnames: path = f'{base}/{fname}' prs = Presentation(path) for i, slide in enumerate(prs.slides, 1): for shape in slide.shapes: if shape.shape_type == 13: # PICTURE img = shape.image ext = img.ext outpath = f'/tmp/workspace/third_nerve_slides/{prefix}_slide{i}.{ext}' with open(outpath, 'wb') as f: f.write(img.blob) print('Done extracting') import os files = os.listdir('/tmp/workspace/third_nerve_slides/') print(f'Total files: {len(files)}') print(files[:10]) " 2>&1
mkdir -p /tmp/workspace/third_nerve_slides && python3 -c " from pptx import Presentation import os base = '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86928f442' # correct UUID base = '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86928f442' import glob results = glob.glob('/tmp/workspace/attachments/**/*.pptx', recursive=True) print('Found files:', results) " 2>&1
mkdir -p /tmp/workspace/third_nerve_slides && python3 -c " from pptx import Presentation import os base = '/tmp/workspace/attachments/d3b994a5-1cff-4a91-a085-ecb86328f442' fnames = [ ('third', 'third-nerve-anatomy-and-applied-aspect.pptx'), ('oculomotor', 'oculomotor-nerve.pptx'), ('neuro', 'neuro-ophthalmology-basics.pptx'), ('seminar', 'seminar-ankur-nigam-new-presents-extraocular-muscle-and-motility.pptx'), ] for prefix, fname in fnames: path = f'{base}/{fname}' prs = Presentation(path) for i, slide in enumerate(prs.slides, 1): for shape in slide.shapes: if shape.shape_type == 13: # PICTURE img = shape.image ext = img.ext outpath = f'/tmp/workspace/third_nerve_slides/{prefix}_slide{i:03d}.{ext}' with open(outpath, 'wb') as f: f.write(img.blob) print('Done extracting') files = os.listdir('/tmp/workspace/third_nerve_slides/') files.sort() print(f'Total files: {len(files)}') " 2>&1
third nerve oculomotor nerve anatomy course nucleus fascicle
mkdir -p /tmp/workspace/third_nerve_ppt && cat > /tmp/workspace/third_nerve_ppt/build.py << 'PYEOF' from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.util import Inches, Pt import subprocess, json, base64 from io import BytesIO from copy import deepcopy import os prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) blank = prs.slide_layouts[6] # Color palette NAVY = RGBColor(0x0D, 0x2B, 0x5E) # deep navy TEAL = RGBColor(0x00, 0x7A, 0x8A) # accent teal GOLD = RGBColor(0xF0, 0xA5, 0x00) # gold accent WHITE = RGBColor(0xFF, 0xFF, 0xFF) LGRAY = RGBColor(0xF2, 0xF4, 0xF7) DGRAY = RGBColor(0x33, 0x33, 0x33) RED = RGBColor(0xC0, 0x39, 0x2B) GREEN = RGBColor(0x1A, 0x73, 0x48) LBLUE = RGBColor(0xE8, 0xF4, 0xFD) LORANGE = RGBColor(0xFF, 0xF3, 0xE0) def add_rect(slide, x, y, w, h, color, transparency=0): shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h)) shape.fill.solid() shape.fill.fore_color.rgb = color shape.line.fill.background() return shape def add_textbox(slide, text, x, y, w, h, fontsize=14, bold=False, color=DGRAY, align=PP_ALIGN.LEFT, italic=False, wrap=True): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = wrap p = tf.paragraphs[0] p.alignment = align run = p.add_run() run.text = text run.font.size = Pt(fontsize) run.font.bold = bold run.font.italic = italic run.font.color.rgb = color run.font.name = "Calibri" return tb def add_multiline_textbox(slide, lines, x, y, w, h, fontsize=12, title_color=NAVY, body_color=DGRAY, wrap=True): """lines: list of (text, bold, color, size) tuples""" tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = wrap first = True for (text, bold, color, size) in lines: if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() p.alignment = PP_ALIGN.LEFT run = p.add_run() run.text = text run.font.size = Pt(size) run.font.bold = bold run.font.color.rgb = color run.font.name = "Calibri" return tb def slide_title_bar(slide, title, subtitle=None): """Standard header bar""" add_rect(slide, 0, 0, 13.333, 1.1, NAVY) add_rect(slide, 0, 1.1, 13.333, 0.06, GOLD) add_textbox(slide, title, 0.3, 0.08, 12.5, 0.75, fontsize=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT) if subtitle: add_textbox(slide, subtitle, 0.3, 0.75, 12.5, 0.35, fontsize=14, bold=False, color=GOLD, align=PP_ALIGN.LEFT) def slide_footer(slide, text="Third (Oculomotor) Nerve | Comprehensive Review"): add_rect(slide, 0, 7.2, 13.333, 0.3, NAVY) add_textbox(slide, text, 0.3, 7.22, 10, 0.25, fontsize=9, color=WHITE) def bullet_box(slide, title, bullets, x, y, w, h, bg=LBLUE, title_color=NAVY, bullet_color=DGRAY, fontsize=12): add_rect(slide, x, y, w, 0.38, title_color) add_textbox(slide, title, x+0.08, y+0.03, w-0.16, 0.32, fontsize=13, bold=True, color=WHITE) add_rect(slide, x, y+0.38, w, h-0.38, bg) content = "\n".join(f" \u2022 {b}" for b in bullets) add_textbox(slide, content, x+0.1, y+0.42, w-0.2, h-0.5, fontsize=fontsize, color=bullet_color, wrap=True) def colored_box(slide, title, content, x, y, w, h, title_bg=TEAL, content_bg=LGRAY): add_rect(slide, x, y, w, 0.38, title_bg) add_textbox(slide, title, x+0.08, y+0.03, w-0.16, 0.32, fontsize=12, bold=True, color=WHITE) add_rect(slide, x, y+0.38, w, h-0.38, content_bg) add_textbox(slide, content, x+0.1, y+0.42, w-0.2, h-0.5, fontsize=11, color=DGRAY, wrap=True) # ============================================================ # SLIDE 1: TITLE SLIDE # ============================================================ s = prs.slides.add_slide(blank) add_rect(s, 0, 0, 13.333, 7.5, NAVY) add_rect(s, 0, 0, 0.2, 7.5, GOLD) add_rect(s, 0, 3.0, 13.333, 0.08, GOLD) add_rect(s, 0, 3.08, 13.333, 0.04, TEAL) add_textbox(s, "THE THIRD (OCULOMOTOR) NERVE", 0.5, 1.4, 12.3, 1.2, fontsize=38, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_textbox(s, "From Basics to Localization", 0.5, 2.5, 12.3, 0.6, fontsize=22, bold=False, color=GOLD, align=PP_ALIGN.CENTER) add_rect(s, 0, 3.12, 13.333, 2.88, RGBColor(0x0A, 0x1F, 0x44)) add_textbox(s, "Anatomy | Course | Subnuclear Organization | Localization | Clinical Syndromes", 0.5, 3.5, 12.3, 0.55, fontsize=15, color=TEAL, align=PP_ALIGN.CENTER) add_textbox(s, "Cranial Nerve III | Neuro-Ophthalmology", 0.5, 4.1, 12.3, 0.5, fontsize=13, color=RGBColor(0xAA, 0xCC, 0xFF), align=PP_ALIGN.CENTER) add_textbox(s, "Comprehensive Neurology & Ophthalmology Seminar", 0.5, 6.7, 12.3, 0.5, fontsize=11, color=RGBColor(0x88, 0x99, 0xBB), align=PP_ALIGN.CENTER) # ============================================================ # SLIDE 2: OVERVIEW / TABLE OF CONTENTS # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Overview", "Topics Covered in This Presentation") slide_footer(s) add_rect(s, 0.3, 1.25, 13.0, 5.85, LGRAY) topics = [ ("01", "Introduction & General Facts", "Classification, fiber types, clinical significance"), ("02", "Embryology & Development", "Origin, neural crest, developmental anomalies"), ("03", "Nucleus & Subnuclei", "Edinger-Westphal, subnuclear organization, crossed fibers"), ("04", "Fascicular Course (Brainstem)", "Through tegmentum, red nucleus, cerebral peduncle"), ("05", "Subarachnoid Space Course", "Between SCA & PCA, relation to PCOM aneurysm"), ("06", "Cavernous Sinus", "Position, divisions, relations to other CNs"), ("07", "Superior Orbital Fissure & Orbit", "Divisions, target muscles, ciliary ganglion"), ("08", "Complete CN III Palsy", "Clinical features, pupil involvement, ptosis"), ("09", "Localization of Lesions", "Nuclear, fascicular, subarachnoid, cavernous, orbital"), ("10", "Brainstem Syndromes", "Weber, Benedikt, Claude, Nothnagel, Plus-Minus"), ("11", "Pupil in CN III Palsy", "Surgical vs Medical pupil, PCOM aneurysm rule"), ("12", "Aberrant Regeneration", "Primary vs Secondary, signs, causes"), ] cols = [(0.4, 0.35), (6.8, 0.35)] # (x, col_offset_y) for idx, (num, title, desc) in enumerate(topics): col = idx % 2 row = idx // 2 x_base = 0.4 if col == 0 else 6.9 y_base = 1.35 + row * 0.5 add_rect(s, x_base, y_base+0.05, 0.42, 0.38, NAVY) add_textbox(s, num, x_base+0.01, y_base+0.06, 0.4, 0.32, fontsize=13, bold=True, color=GOLD, align=PP_ALIGN.CENTER) add_textbox(s, title, x_base+0.48, y_base+0.04, 5.4, 0.25, fontsize=12, bold=True, color=NAVY) add_textbox(s, desc, x_base+0.48, y_base+0.26, 5.4, 0.2, fontsize=9, color=DGRAY) # ============================================================ # SLIDE 3: INTRODUCTION # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Introduction to the Oculomotor Nerve", "Cranial Nerve III - Overview") slide_footer(s) bullet_box(s, "General Facts", [ "Largest of the three ocular motor cranial nerves", "Somatic efferent + visceral efferent (parasympathetic) components", "Innervates 4 of 6 extraocular muscles + levator palpebrae", "Carries preganglionic parasympathetic fibers to ciliary ganglion", "Exits brainstem at interpeduncular fossa (ventral midbrain)", "Classified as: GSE (general somatic efferent) + GVE (general visceral efferent)", ], 0.3, 1.3, 5.9, 3.0, bg=LBLUE) bullet_box(s, "Muscles Innervated (Mnemonic: SIR MED)", [ "Superior Rectus (SR) - elevation", "Inferior Rectus (IR) - depression", "Medial Rectus (MR) - adduction", "Inferior Oblique (IO) - extorsion, elevation in adduction", "Levator Palpebrae Superioris (LPS) - eyelid elevation", "Sphincter pupillae (via ciliary ganglion) - miosis", "Ciliary muscle (via ciliary ganglion) - accommodation", ], 6.4, 1.3, 6.6, 3.5, bg=LORANGE) bullet_box(s, "Key Clinical Significance", [ "Complete palsy: ptosis + down-and-out eye + dilated pupil", "Pupillary involvement = surgical (compressive) cause until proven otherwise", "PCOM aneurysm is the most feared compressive etiology", "Diabetic/ischemic: pupil-sparing, painful, self-resolving", "Aberrant regeneration indicates slow-growing/compressive cause", ], 0.3, 4.5, 12.7, 2.8, bg=RGBColor(0xE8, 0xF8, 0xEE), title_color=GREEN) # ============================================================ # SLIDE 4: EMBRYOLOGY # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Embryology & Development", "Origin and Development of CN III") slide_footer(s) bullet_box(s, "Neural Origin", [ "Nucleus develops from basal plate of mesencephalon", "Edinger-Westphal nucleus = visceral efferent component", "Somatic motor fibers arise from oculomotor nuclear complex", "Fibers grow toward their target muscles during week 5-6", "Ciliary ganglion derived from neural crest cells", ], 0.3, 1.3, 6.2, 3.2, bg=LBLUE) bullet_box(s, "Clinical Pearls in Development", [ "Congenital CN III palsy: most common congenital cranial nerve palsy", "May be due to birth trauma or developmental aplasia", "Aberrant regeneration is common in congenital palsy", "Duane syndrome type 3: co-innervation of LR by CN III fibers", "Cyclic oculomotor palsy: rare congenital - alternating palsy/spasm", ], 6.7, 1.3, 6.3, 3.2, bg=LORANGE) bullet_box(s, "Developmental Anomalies", [ "Congenital 3rd nerve palsy with or without aberrant regeneration", "Superior division isolated palsy (congenital) - ptosis + SR palsy", "Monocular elevation palsy (double elevator palsy) - SR + IO paresis", "Aplasia of oculomotor nucleus: extremely rare", ], 0.3, 4.65, 12.7, 2.65, bg=RGBColor(0xF3, 0xE5, 0xF5), title_color=RGBColor(0x6A, 0x1B, 0x9A)) # ============================================================ # SLIDE 5: NUCLEUS & SUBNUCLEAR ORGANIZATION # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Oculomotor Nucleus & Subnuclear Organization", "Location, Structure, Special Rules") slide_footer(s) add_rect(s, 0.3, 1.25, 12.73, 0.4, NAVY) add_textbox(s, "Location: Dorsal midbrain, ventral to periaqueductal gray (PAG), at level of superior colliculus", 0.4, 1.27, 12.5, 0.35, fontsize=13, bold=True, color=WHITE) # Subnuclei table headers = ["Subnucleus", "Innervation", "Special Feature"] rows = [ ["Superior Rectus (SR)", "Contralateral SR", "ONLY crossed subnucleus"], ["Inferior Rectus (IR)", "Ipsilateral IR", "Ipsilateral innervation"], ["Medial Rectus (MR)", "Ipsilateral MR", "Ipsilateral innervation"], ["Inferior Oblique (IO)", "Ipsilateral IO", "Ipsilateral innervation"], ["Central Caudal Nucleus (CCN)", "BILATERAL LPS", "Single midline nucleus - bilateral ptosis if damaged"], ["Edinger-Westphal (EW)", "Sphincter pupillae + Ciliary m.", "Visceral efferent, dorsal position, SURFACE fibers"], ] col_widths = [3.2, 4.8, 4.5] col_x = [0.3, 3.5, 8.3] # Header for ci, (hdr, cw, cx) in enumerate(zip(headers, col_widths, col_x)): add_rect(s, cx, 1.72, cw-0.05, 0.38, TEAL) add_textbox(s, hdr, cx+0.05, 1.74, cw-0.1, 0.32, fontsize=12, bold=True, color=WHITE) row_colors = [LGRAY, WHITE, LGRAY, WHITE, RGBColor(0xFF, 0xF0, 0xD0), RGBColor(0xE8, 0xF8, 0xEE)] for ri, (row_data, bg) in enumerate(zip(rows, row_colors)): y = 2.1 + ri * 0.42 for ci, (cell, cw, cx) in enumerate(zip(row_data, col_widths, col_x)): add_rect(s, cx, y, cw-0.05, 0.4, bg) fs = 10 if ri == 4 else 11 bold = ri in [4, 5] and ci == 0 add_textbox(s, cell, cx+0.05, y+0.02, cw-0.1, 0.36, fontsize=fs, bold=bold, color=DGRAY) # Key rules box add_rect(s, 0.3, 4.7, 12.73, 0.35, RED) add_textbox(s, "CRITICAL NUCLEAR RULES", 0.4, 4.72, 12.0, 0.28, fontsize=13, bold=True, color=WHITE) add_rect(s, 0.3, 5.05, 12.73, 2.2, RGBColor(0xFF, 0xEB, 0xEE)) rules = [ "1. SR subnucleus innervates the CONTRALATERAL superior rectus - so nuclear lesion causes BILATERAL SR palsy", "2. CCN is a SINGLE midline nucleus - unilateral nuclear lesion = BILATERAL ptosis (paradox in localization!)", "3. EW fibers travel on the DORSOMEDIAL SURFACE of the nerve - compressed FIRST by external compression (aneurysm)", "4. Fascicular fibers to EW lie near surface - compressive lesions cause pupil dilation EARLY", "5. Nuclear lesion cannot cause isolated complete unilateral CN III palsy (bilateral SR + bilateral ptosis expected)", ] for ri, rule in enumerate(rules): add_textbox(s, rule, 0.45, 5.08 + ri * 0.41, 12.4, 0.38, fontsize=11, color=RED if ri < 2 else DGRAY, bold=ri < 2) # ============================================================ # SLIDE 6: FASCICULAR COURSE # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Fascicular Course (Intra-Axial / Brainstem)", "Through Midbrain Tegmentum to Exit") slide_footer(s) add_rect(s, 0.3, 1.25, 12.73, 5.85, LGRAY) # Left column: pathway description bullet_box(s, "Course of the Fascicle", [ "Arises from ventral surface of oculomotor nuclear complex", "Passes VENTRALLY through midbrain tegmentum", "Traverses (or is adjacent to) the RED NUCLEUS (dentato-rubro-thalamic tract)", "Passes through the SUBSTANTIA NIGRA region", "Runs medial to / through CEREBRAL PEDUNCLE (corticospinal fibers)", "Emerges as 3-4 rootlets at the LATERAL INTERPEDUNCULAR FOSSA", "Rootlets coalesce into the CN III trunk in the cistern", "Total intra-axial course: approx 2 cm", ], 0.4, 1.35, 6.0, 3.8) # Right column: structures adjacent bullet_box(s, "Adjacent Structures (Clinically Important)", [ "Red nucleus: damage -> Benedikt / Claude syndrome", "Cerebral peduncle (corticospinal): damage -> Weber syndrome", "Substantia nigra: dopaminergic fibers, damage -> choreiform movements", "Periaqueductal gray: vertical gaze, consciousness", "MLF (medial longitudinal fasciculus): INO if involved", "Superior cerebellar peduncle (Dentato-rubro-thalamic): ataxia", ], 6.55, 1.35, 6.4, 3.8, bg=LORANGE) # Brainstem syndromes table add_rect(s, 0.3, 5.25, 12.73, 0.35, NAVY) add_textbox(s, "Brainstem Syndromes - Preview", 0.4, 5.27, 10, 0.28, fontsize=12, bold=True, color=WHITE) add_rect(s, 0.3, 5.6, 12.73, 1.45, RGBColor(0xF0, 0xF4, 0xFF)) syndromes = [ ("Weber", "Fascicle + Cerebral Peduncle", "CN III palsy + contralateral hemiplegia"), ("Benedikt", "Fascicle + Red Nucleus/SN", "CN III palsy + contralateral choreiform/tremor"), ("Claude", "Fascicle + Red Nuc + SCP", "CN III palsy + contralateral ataxia + tremor"), ] for ci, (name, struct, feat) in enumerate(syndromes): x = 0.4 + ci * 4.25 add_rect(s, x, 5.62, 4.1, 0.3, TEAL) add_textbox(s, name + " Syndrome", x+0.05, 5.64, 4.0, 0.25, fontsize=11, bold=True, color=WHITE) add_textbox(s, struct, x+0.05, 5.95, 4.0, 0.3, fontsize=10, bold=True, color=NAVY) add_textbox(s, feat, x+0.05, 6.25, 4.0, 0.75, fontsize=10, color=DGRAY, wrap=True) # ============================================================ # SLIDE 7: SUBARACHNOID COURSE # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Subarachnoid Space Course", "From Interpeduncular Fossa to Cavernous Sinus") slide_footer(s) colored_box(s, "Path Through Subarachnoid Space", "Exits brainstem at lateral interpeduncular fossa -> enters basal cistern -> travels anterolaterally -> passes BETWEEN SCA (superiorly) and PCA (posteriorly) -> courses PARALLEL to and lateral to the PCOM artery -> enters the dural sheath at the petroclinoid ligament -> enters cavernous sinus", 0.3, 1.25, 12.73, 1.55, TEAL, LGRAY) bullet_box(s, "Key Relations in Subarachnoid Space", [ "BETWEEN: Superior Cerebellar Artery (SCA) above and Posterior Cerebral Artery (PCA) below", "PCOM (Posterior Communicating Artery): runs parallel, CN III lies LATERAL to PCOM", "At PCOM-ICA junction: aneurysm at this site is the MOST FEARED cause of CN III palsy", "Tentorial edge (Kernohan notch): CN III compressed by uncal herniation here", "Distance from brainstem to cavernous sinus: ~40-50 mm", "The nerve is vulnerable to stretching during downward herniation", ], 0.3, 2.95, 8.0, 3.55, bg=LBLUE) # Red alert box for PCOM aneurysm add_rect(s, 8.5, 2.95, 4.53, 1.8, RED) add_textbox(s, "DANGER ZONE", 8.6, 3.0, 4.3, 0.4, fontsize=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_textbox(s, "PCOM Aneurysm", 8.6, 3.42, 4.3, 0.35, fontsize=13, bold=True, color=GOLD, align=PP_ALIGN.CENTER) add_textbox(s, "Pupil-INVOLVING CN III palsy\n= Compressive until proven otherwise\nRequire URGENT neuroimaging\n(CTA or MRA or DSA)", 8.6, 3.8, 4.3, 1.0, fontsize=11, color=WHITE, align=PP_ALIGN.CENTER) add_rect(s, 8.5, 4.9, 4.53, 1.6, RGBColor(0x1A, 0x5C, 0x3A)) add_textbox(s, "Pupil-SPARING Rule", 8.6, 4.95, 4.3, 0.38, fontsize=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_textbox(s, "Complete ptosis + complete EOM palsy + NORMAL pupil\n= Ischemic/diabetic etiology likely\n(BUT: image if any doubt!)", 8.6, 5.35, 4.3, 1.1, fontsize=11, color=WHITE, align=PP_ALIGN.CENTER) bullet_box(s, "Causes at Subarachnoid Level", [ "Aneurysm (PCOM, ICA, basilar tip, SCA)", "Uncal herniation compressing against tentorial edge", "Meningitis (TB, sarcoid, carcinomatous, fungal)", "Trauma (dural tearing, stretching)", "Ophthalmoplegic migraine (recurrent CN III palsy)", "Neurosarcoidosis, CNS vasculitis, SLE", "Subarachnoid hemorrhage", ], 0.3, 6.56, 8.0, 0.85, bg=RGBColor(0xE8, 0xF4, 0xFD), fontsize=10) # ============================================================ # SLIDE 8: CAVERNOUS SINUS # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Cavernous Sinus Segment", "Anatomy, Relations & Clinical Significance") slide_footer(s) colored_box(s, "Position in Cavernous Sinus", "CN III travels in the SUPERIOR PART of the lateral dural wall of the cavernous sinus. It is the HIGHEST of the cranial nerves in the cavernous sinus. The nerve DIVIDES into Superior and Inferior Divisions in the ANTERIOR cavernous sinus, just before the Superior Orbital Fissure.", 0.3, 1.25, 12.73, 1.35, NAVY, LBLUE) # CS contents table add_rect(s, 0.3, 2.7, 12.73, 0.38, TEAL) add_textbox(s, "Contents of Cavernous Sinus (Lateral Wall, Superior to Inferior)", 0.4, 2.72, 12.0, 0.32, fontsize=13, bold=True, color=WHITE) cs_contents = [ ("CN III", "Highest", "Superior lateral wall", "Most superior - affected first by mass"), ("CN IV", "2nd", "Lateral wall below CN III", "Small nerve, often spared initially"), ("CN V1", "3rd", "Lateral wall below CN IV", "Pain from lesions, Herpes zoster"), ("CN V2", "4th", "Lateral wall (most inferior)", "Maxillary branch"), ("CN VI", "Medial", "WITHIN the sinus (not in wall!)", "Most susceptible to pressure changes"), ("ICA", "Central", "Runs through sinus", "With sympathetic fibers (Horner if damaged)"), ] headers2 = ["Nerve", "Position", "Location in CS", "Clinical Note"] col_w2 = [1.5, 1.8, 4.8, 4.5] col_x2 = [0.3, 1.85, 3.7, 8.55] for ci, (hdr, cw, cx) in enumerate(zip(headers2, col_w2, col_x2)): add_rect(s, cx, 3.08, cw-0.04, 0.35, NAVY) add_textbox(s, hdr, cx+0.04, 3.1, cw-0.08, 0.28, fontsize=11, bold=True, color=WHITE) for ri, (row_data, bg) in enumerate(zip(cs_contents, [LGRAY, WHITE]*3)): y = 3.43 + ri * 0.38 for ci, (cell, cw, cx) in enumerate(zip(row_data, col_w2, col_x2)): col = RED if ri == 0 and ci == 0 else DGRAY add_rect(s, cx, y, cw-0.04, 0.36, bg) add_textbox(s, cell, cx+0.04, y+0.02, cw-0.08, 0.3, fontsize=10, color=col, bold=(ri==0 and ci==0)) bullet_box(s, "Causes of Lesions at Cavernous Sinus", [ "Cavernous sinus thrombosis (painful, all nerves involved)", "Pituitary apoplexy (sudden onset, bilateral)", "Pituitary adenoma (slow growing, may spare pupil initially)", "Meningioma (progressive painless)", "Nasopharyngeal carcinoma / skull base metastases", "Carotid-cavernous fistula (CCF): pulsatile exophthalmos, bruit", "Tolosa-Hunt syndrome (painful ophthalmoplegia, steroid-responsive)", "Herpes zoster (V1 distribution + ophthalmoplegia)", "Internal carotid artery aneurysm within sinus", ], 0.3, 5.72, 12.73, 1.5, bg=RGBColor(0xFFF3E0), title_color=RGBColor(0xE65100), fontsize=10) # ============================================================ # SLIDE 9: SUPERIOR ORBITAL FISSURE & ORBIT # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Superior Orbital Fissure & Orbital Segment", "Divisions and Target Muscles") slide_footer(s) colored_box(s, "Division into Superior and Inferior Divisions", "The nerve DIVIDES just before entering the superior orbital fissure (anatomically) or in the anterior cavernous sinus. Within the annulus of Zinn at the SOF, both divisions pass INSIDE the annulus.", 0.3, 1.25, 12.73, 1.1, NAVY, LBLUE) bullet_box(s, "Superior Division (Upper)", [ "Enters orbit via SOF WITHIN the annulus of Zinn", "Innervates: Superior Rectus (SR)", "Innervates: Levator Palpebrae Superioris (LPS)", "Selective damage -> Ptosis + Inability to elevate eye", "Clinical: Congenital or post-traumatic superior divisional palsy", ], 0.3, 2.45, 6.2, 3.0, bg=LBLUE) bullet_box(s, "Inferior Division (Lower)", [ "Enters orbit via SOF WITHIN the annulus of Zinn", "Innervates: Medial Rectus (MR) - adduction", "Innervates: Inferior Rectus (IR) - depression", "Innervates: Inferior Oblique (IO) - elevation in adduction", "Carries PARASYMPATHETIC fibers -> Ciliary Ganglion", "Ciliary ganglion -> short ciliary nerves -> sphincter & ciliary m.", "Clinical: Inferior division palsy -> multiple EOM loss + dilated pupil", ], 6.7, 2.45, 6.3, 3.0, bg=LORANGE) bullet_box(s, "Contents Through SOF (Mnemonic: LFT + 3456)", [ "Within annulus (ring of Zinn): CN III (sup+inf div), CN VI, Nasociliary nerve (CN V1 branch)", "Outside annulus: CN IV, Frontal nerve (CN V1), Lacrimal nerve (CN V1), Superior ophthalmic vein", "Orbital apex syndrome: ALL structures affected (CN III, IV, V1, VI + optic nerve = orbital apex syndrome)", ], 0.3, 5.55, 12.73, 1.9, bg=RGBColor(0xE8, 0xF8, 0xEE), title_color=GREEN, fontsize=11) # ============================================================ # SLIDE 10: CLINICAL FEATURES OF COMPLETE CN III PALSY # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Complete CN III Palsy - Clinical Features", "Signs, Symptoms, Examination") slide_footer(s) # Main features features = [ ("PTOSIS", "Complete (total)\nLevator palpebrae paralysis\nPatient cannot elevate lid", RED), ("DOWN AND OUT\nPOSITION", "Eye in infraducted +\nabducted position\n(action of SO & LR only)", NAVY), ("DIPLOPIA", "Vertical + horizontal\nImage from affected eye:\nup & medially projected", TEAL), ("MYDRIASIS", "Dilated, non-reactive pupil\n(iridoplegia + cycloplegia)\nParasympathetic fibers involved", RGBColor(0x8B, 0x00, 0x00)), ] for ci, (title, desc, color) in enumerate(features): x = 0.3 + ci * 3.25 add_rect(s, x, 1.25, 3.15, 0.55, color) add_textbox(s, title, x+0.08, 1.28, 3.0, 0.45, fontsize=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_rect(s, x, 1.8, 3.15, 1.5, LGRAY) add_textbox(s, desc, x+0.08, 1.85, 3.0, 1.4, fontsize=11, color=DGRAY, wrap=True, align=PP_ALIGN.CENTER) # Specific EOM losses add_rect(s, 0.3, 3.4, 12.73, 0.38, NAVY) add_textbox(s, "Loss of Eye Movements - Direction by Direction", 0.4, 3.42, 12.0, 0.3, fontsize=13, bold=True, color=WHITE) eom_data = [ ("Adduction (in)", "Medial Rectus", "Eye cannot turn in"), ("Elevation (up)", "Superior Rectus + IO", "Eye cannot look up"), ("Depression (down)", "Inferior Rectus", "Eye cannot look down (except by SO)"), ("Intorsion", "PRESERVED (by SO/CN IV)", "Superior oblique intact - intorts on down gaze"), ("Abduction (out)", "PRESERVED (by LR/CN VI)", "Lateral rectus intact - eye abducts"), ("Extorsion", "Inferior Oblique - LOST", "No extorsion"), ] for ri, (direction, muscle, note) in enumerate(eom_data): y = 3.82 + ri * 0.38 bg = LGRAY if ri % 2 == 0 else WHITE add_rect(s, 0.3, y, 3.5, 0.36, bg) add_rect(s, 3.85, y, 4.5, 0.36, bg) add_rect(s, 8.4, y, 4.63, 0.36, bg) add_textbox(s, direction, 0.35, y+0.02, 3.4, 0.3, fontsize=11, bold=True, color=NAVY) add_textbox(s, muscle, 3.9, y+0.02, 4.4, 0.3, fontsize=11, color=DGRAY) add_textbox(s, note, 8.45, y+0.02, 4.5, 0.3, fontsize=10, color=DGRAY) add_textbox(s, "Key: The remaining SO (CN IV) + LR (CN VI) give the 'DOWN AND OUT' position", 0.3, 6.2, 12.73, 0.35, fontsize=11, bold=True, color=RED) bullet_box(s, "Mnemonic: DPMD", [ "D - Diplopia (vertical+horizontal)", "P - Ptosis (complete)", "M - Mydriasis (dilated non-reactive pupil)", "D - Deviation (down and out position)", ], 0.3, 6.55, 12.73, 0.82, bg=RGBColor(0xE8, 0xF8, 0xEE), title_color=GREEN, fontsize=10) # ============================================================ # SLIDE 11: LOCALIZATION OVERVIEW TABLE # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Localization of CN III Lesions", "Segment-by-Segment Approach") slide_footer(s) add_rect(s, 0.3, 1.25, 12.73, 0.38, NAVY) add_textbox(s, "Five Anatomical Sites Where CN III Can Be Damaged", 0.4, 1.27, 12.0, 0.32, fontsize=13, bold=True, color=WHITE) loc_data = [ ("1. NUCLEAR\n(Brainstem)", "- Bilateral ptosis (CCN midline)\n- CONTRALATERAL SR palsy\n- Cannot cause isolated unilateral CN III palsy\n- Associated with other CN/long tract signs", "Infarct, demyelination, tumor, hemorrhage, Wernicke's"), ("2. FASCICULAR\n(Intra-axial)", "- Ipsilateral CN III palsy +/- pupil\n- Associated crossed signs\n- Weber (+ hemiplegia), Benedikt (+ tremor)\n- Claude (+ ataxia), Nothnagel (+ cerebellar)", "Infarct, AVM, MS plaque, tumor (brainstem glioma), Wernicke's"), ("3. SUBARACHNOID\nSpace", "- PUPIL INVOLVED (outer fibers compressed first)\n- PAINFUL typically\n- No crossed signs\n- Complete or divisional palsy", "PCOM aneurysm, uncal herniation, trauma, meningitis, SAH, ophthalmoplegic migraine"), ("4. CAVERNOUS\nSINUS", "- CN III + IV + V1 + VI palsy\n- Horner syndrome (ICA involvement)\n- Primary aberrant regeneration possible\n- Painful or painless", "CS thrombosis, ICA aneurysm, pituitary apoplexy, meningioma, CCF, Tolosa-Hunt"), ("5. SUPERIOR\nORBITAL FISSURE\n/ ORBIT", "- Superior or inferior divisional palsy\n- Proptosis if orbital lesion\n- Optic nerve may be involved (orbital apex)\n- CN III + IV + V1 + VI (SOF)", "Thyroid eye disease, orbital pseudotumor, metastases, primary orbital tumor, trauma, lymphoma"), ] colors = [RGBColor(0xD3, 0x00, 0x00), RGBColor(0xE6, 0x5C, 0x00), TEAL, NAVY, RGBColor(0x1A, 0x73, 0x48)] for ri, ((loc, features, causes), color) in enumerate(zip(loc_data, colors)): y = 1.7 + ri * 1.05 add_rect(s, 0.3, y, 2.6, 1.0, color) add_textbox(s, loc, 0.35, y+0.05, 2.5, 0.9, fontsize=11, bold=True, color=WHITE, wrap=True) add_rect(s, 2.95, y, 5.85, 1.0, LGRAY if ri % 2 == 0 else WHITE) add_textbox(s, features, 3.0, y+0.03, 5.75, 0.93, fontsize=9.5, color=DGRAY, wrap=True) add_rect(s, 8.85, y, 4.2, 1.0, RGBColor(0xF8, 0xF9, 0xFA) if ri % 2 == 0 else LGRAY) add_textbox(s, causes, 8.9, y+0.03, 4.1, 0.93, fontsize=9, color=DGRAY, italic=True, wrap=True) add_rect(s, 2.95, 1.7, 5.85, 0, WHITE) add_rect(s, 0.3, 1.66, 2.6, 0.06, GOLD) add_textbox(s, "LOCATION", 0.35, 1.27, 2.5, 0.32, fontsize=11, bold=True, color=WHITE) add_textbox(s, "LOCALIZING FEATURES", 3.0, 1.27, 5.75, 0.32, fontsize=11, bold=True, color=WHITE) add_textbox(s, "COMMON CAUSES", 8.9, 1.27, 4.0, 0.32, fontsize=11, bold=True, color=WHITE) # ============================================================ # SLIDE 12: BRAINSTEM SYNDROMES # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Brainstem Syndromes Involving CN III", "Fascicular Lesions & Crossed Syndromes") slide_footer(s) syndromes_detail = [ ("Weber Syndrome", "Fascicle + Cerebral Peduncle\n(Corticospinal tract)", "Ipsilateral CN III palsy\n+ Contralateral HEMIPLEGIA\n(corticospinal tract - arm, face, leg)", "Stroke (PCA or basilar perforators)\nTumor, AVM, demyelination", RED), ("Benedikt Syndrome", "Fascicle + Red Nucleus\n+ Substantia Nigra", "Ipsilateral CN III palsy\n+ Contralateral CHOREIFORM movements / rubral tremor\n(or hemiataxia)", "Infarction (paramedian midbrain)\nCavernoma, AVM, tumor", TEAL), ("Claude Syndrome", "Fascicle + Red Nucleus\n+ Superior Cerebellar Peduncle", "Ipsilateral CN III palsy\n+ Contralateral CEREBELLAR ATAXIA\n+ Contralateral tremor (less marked)", "Paramedian midbrain infarct\nSimilar to Benedikt with more cerebellar", NAVY), ("Nothnagel Syndrome", "Fascicle + Superior\nCerebellar Peduncle (unilateral)", "Ipsilateral CN III palsy\n+ Ipsilateral CEREBELLAR ATAXIA\n(classic but rare)", "Dorsal midbrain lesion\nTumor of quadrigeminal plate region", RGBColor(0x6A, 0x1B, 0x9A)), ("Plus-Minus Syndrome", "Paramedian mesencephalon\n(near CCN and EW)", "Ipsilateral PTOSIS\n+ Contralateral LID RETRACTION\n(no full CN III palsy)", "Paramedian midbrain lesion\n(between CCN and ION of CN III nucleus)", GREEN), ] for ri, (name, structure, features, causes, color) in enumerate(syndromes_detail): col = ri % 2 row = ri // 2 if ri == 4: # last one, center it x = 4.5 y = 1.3 + row * 2.8 else: x = 0.3 + col * 6.6 y = 1.3 + row * 2.75 add_rect(s, x, y, 6.3, 0.4, color) add_textbox(s, name, x+0.08, y+0.05, 6.15, 0.32, fontsize=14, bold=True, color=WHITE) add_rect(s, x, y+0.4, 2.5, 2.28, LGRAY) add_textbox(s, "Structure:", x+0.08, y+0.42, 2.35, 0.25, fontsize=10, bold=True, color=color) add_textbox(s, structure, x+0.08, y+0.66, 2.35, 1.3, fontsize=10, color=DGRAY, wrap=True) add_rect(s, x+2.55, y+0.4, 2.0, 2.28, WHITE) add_textbox(s, "Features:", x+2.6, y+0.42, 1.9, 0.25, fontsize=10, bold=True, color=color) add_textbox(s, features, x+2.6, y+0.66, 1.9, 1.3, fontsize=10, color=DGRAY, wrap=True) add_rect(s, x+4.6, y+0.4, 1.65, 2.28, LORANGE) add_textbox(s, "Cause:", x+4.65, y+0.42, 1.55, 0.25, fontsize=10, bold=True, color=RGBColor(0xE6, 0x5C, 0x00)) add_textbox(s, causes, x+4.65, y+0.66, 1.55, 1.3, fontsize=9.5, color=DGRAY, wrap=True) # ============================================================ # SLIDE 13: PUPIL IN CN III PALSY # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "The Pupil in CN III Palsy", "Surgical vs Medical Pupil - Critical Decision Making") slide_footer(s) # Two main boxes add_rect(s, 0.3, 1.25, 6.2, 4.5, RGBColor(0xFF, 0xEB, 0xEE)) add_rect(s, 0.3, 1.25, 6.2, 0.5, RED) add_textbox(s, "SURGICAL PUPIL (Pupil INVOLVED)", 0.4, 1.3, 6.0, 0.38, fontsize=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER) surgical_points = [ "Pupil DILATED and NON-REACTIVE", "Compressive / surgical cause", "MOST FEARED: PCOM aneurysm", "Other: tumors, uncal herniation", "EW fibers on SURFACE - compressed FIRST", "EMERGENCY: urgent CTA/MRA/DSA", "Even partial pupil dilation is suspicious", "Rule: Pupil involved = aneurysm until proven otherwise", ] for ri, point in enumerate(surgical_points): y = 1.82 + ri * 0.36 add_textbox(s, f"• {point}", 0.4, y, 6.0, 0.32, fontsize=11, color=RED if ri in [0,1,2,7] else DGRAY, bold=ri in [0,1,2,7]) add_rect(s, 6.7, 1.25, 6.3, 4.5, RGBColor(0xE8, 0xF8, 0xEE)) add_rect(s, 6.7, 1.25, 6.3, 0.5, GREEN) add_textbox(s, "MEDICAL PUPIL (Pupil SPARING)", 6.8, 1.3, 6.1, 0.38, fontsize=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER) medical_points = [ "Pupil NORMAL size and REACTIVE", "Ischemic / microvascular cause", "Risk factors: DM, HTN, atherosclerosis", "EW fibers spared (central ischemia)", "Typically PAINFUL (ipsilateral)", "Spontaneous resolution in 8-12 weeks", "Common in elderly diabetics", "BUT: anisocoria >2mm warrants imaging", ] for ri, point in enumerate(medical_points): y = 1.82 + ri * 0.36 add_textbox(s, f"• {point}", 6.8, y, 6.1, 0.32, fontsize=11, color=GREEN if ri in [0,1,2,3] else DGRAY, bold=ri in [0,1,2,3]) # Critical algorithm add_rect(s, 0.3, 5.85, 12.7, 0.38, NAVY) add_textbox(s, "CLINICAL ALGORITHM: When to image urgently", 0.4, 5.87, 12.0, 0.3, fontsize=13, bold=True, color=WHITE) add_rect(s, 0.3, 6.23, 12.7, 1.0, RGBColor(0xF0, 0xF4, 0xFF)) add_textbox(s, "Image URGENTLY if: (1) Pupil involved (dilated >2mm) | (2) Incomplete/partial palsy | (3) Progressive palsy | (4) No vascular risk factors | (5) Age <50 | (6) Pain alone (PCOM aneurysm can present with pain before palsy) | (7) Failure to resolve at 12 weeks", 0.4, 6.26, 12.5, 0.92, fontsize=11, color=DGRAY, wrap=True) # ============================================================ # SLIDE 14: ABERRANT REGENERATION # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Aberrant Regeneration of CN III", "Types, Signs, Clinical Significance") slide_footer(s) bullet_box(s, "What is Aberrant Regeneration?", [ "Misdirected regrowth of CN III axons after injury to incorrect target muscles", "Fibers originally meant for one muscle re-innervate another muscle or the iris", "Result: synkinetic movements - eyelid or pupil move with unintended eye movements", "Develops over months after an acute CN III palsy", ], 0.3, 1.25, 12.73, 1.7, bg=LBLUE) bullet_box(s, "Classic Signs of Aberrant Regeneration", [ "Pseudo-Graefe sign: eyelid elevates on ADDuction or DEPression (not on upgaze)", "Pupillary constriction on ADDuction (misdirected pupilloconstrictor fibers)", "Monocular vertical nystagmus on attempted vertical gaze (rare)", "Lid elevation on downward gaze (reverse Graefe)", "Inability to depress eye in adduction (inferior rectus fibers rerouted to LPS)", "Fixed mid-dilated pupil with eye movement (light-near dissociation possible)", ], 0.3, 3.1, 12.73, 2.7, bg=LORANGE, title_color=RGBColor(0xE6, 0x5C, 0x00)) # Primary vs Secondary add_rect(s, 0.3, 5.9, 6.1, 0.38, NAVY) add_textbox(s, "PRIMARY (Spontaneous)", 0.4, 5.92, 5.9, 0.3, fontsize=12, bold=True, color=WHITE) add_rect(s, 0.3, 6.28, 6.1, 1.05, LGRAY) add_textbox(s, "No preceding acute palsy\nCauses: Cavernous sinus meningioma, ICA aneurysm (intracavernous)\nNEVER from ischemia\nRequires URGENT workup", 0.4, 6.3, 5.9, 0.95, fontsize=11, color=RED, wrap=True) add_rect(s, 6.7, 5.9, 6.3, 0.38, TEAL) add_textbox(s, "SECONDARY (Post-Palsy)", 6.8, 5.92, 6.1, 0.3, fontsize=12, bold=True, color=WHITE) add_rect(s, 6.7, 6.28, 6.3, 1.05, LGRAY) add_textbox(s, "After acute CN III palsy\nCauses: PCOM aneurysm, trauma, idiopathic\nNEVER after ischemic/diabetic palsy\nPCOM aneurysm most common secondary cause", 6.8, 6.3, 6.1, 0.95, fontsize=11, color=DGRAY, wrap=True) # ============================================================ # SLIDE 15: CLINICAL APPROACH # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Clinical Approach to CN III Palsy", "Step-by-Step Evaluation") slide_footer(s) steps = [ ("STEP 1", "Confirm CN III Palsy", "Ptosis (partial/complete?) | EOM: which muscles? Complete or divisional? | Pupil: dilated/reactive? | Pain?", NAVY), ("STEP 2", "Classify: Complete vs Divisional", "Superior div: SR + LPS palsy | Inferior div: IR + MR + IO + pupil | Isolated muscle palsy (check for myasthenia)", TEAL), ("STEP 3", "Assess the PUPIL", "Pupil involved -> SURGICAL (aneurysm until proven otherwise) -> URGENT imaging\nPupil sparing + complete palsy + vascular RF -> medical/ischemic -> observe", RED), ("STEP 4", "Look for Associated Signs", "Crossed signs (hemiplegia, ataxia) -> brainstem | Multiple CN -> cavernous sinus | Proptosis -> orbital | Fever/meningism -> meningitis", RGBColor(0x6A, 0x1B, 0x9A)), ("STEP 5", "Imaging & Workup", "All patients: MRI brain | Pupil involved/aneurysm suspected: CTA or MRA; if negative DSA | Bloods: FBS, HbA1c, ESR, CRP, CBC", GREEN), ("STEP 6", "Monitor & Follow Up", "Ischemic: reassess q4 weeks, full recovery in 8-12 weeks | No recovery at 3 months -> re-image | Aberrant regeneration -> consider cavernous cause", RGBColor(0xE6, 0x5C, 0x00)), ] for ri, (step, title, desc, color) in enumerate(steps): col = ri % 2 row = ri // 2 x = 0.3 + col * 6.55 y = 1.3 + row * 1.9 add_rect(s, x, y, 6.3, 0.42, color) add_textbox(s, step, x+0.07, y+0.07, 1.0, 0.28, fontsize=11, bold=True, color=GOLD) add_textbox(s, title, x+1.1, y+0.07, 5.1, 0.28, fontsize=12, bold=True, color=WHITE) add_rect(s, x, y+0.42, 6.3, 1.45, RGBColor(0xF7, 0xF8, 0xFA)) add_textbox(s, desc, x+0.1, y+0.47, 6.1, 1.35, fontsize=10.5, color=DGRAY, wrap=True) # ============================================================ # SLIDE 16: SUMMARY # ============================================================ s = prs.slides.add_slide(blank) slide_title_bar(s, "Summary: CN III Localization at a Glance", "Key Teaching Points") slide_footer(s) add_rect(s, 0.3, 1.25, 12.73, 0.38, NAVY) add_textbox(s, "The 'Rule of 5 Segments' for CN III Localization", 0.4, 1.27, 12.0, 0.32, fontsize=14, bold=True, color=WHITE) summary_rows = [ ("NUCLEAR", "Bilateral ptosis + Contralateral SR paresis + ipsilateral CN III palsy", "Cannot cause isolated unilateral CN III palsy!", RED), ("FASCICULAR", "Ipsilateral CN III + crossed signs (hemiplegia/ataxia/tremor)", "Weber, Benedikt, Claude, Nothnagel, Plus-Minus", TEAL), ("SUBARACHNOID", "Pupil involved + painful + no crossed signs", "PCOM aneurysm = most feared cause", NAVY), ("CAVERNOUS SINUS", "Multiple CN (III+IV+V1+VI) + possible Horner's + aberrant regen", "Pituitary apoplexy, thrombosis, meningioma, Tolosa-Hunt", RGBColor(0x6A, 0x1B, 0x9A)), ("ORBITAL/SOF", "Divisional palsy ± proptosis ± optic nerve (apex)", "Tumor, thyroid, trauma, lymphoma", GREEN), ] for ri, (loc, features, clue, color) in enumerate(summary_rows): y = 1.7 + ri * 0.98 add_rect(s, 0.3, y, 2.4, 0.9, color) add_textbox(s, loc, 0.35, y+0.18, 2.3, 0.55, fontsize=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_rect(s, 2.75, y, 5.8, 0.9, LGRAY if ri % 2 == 0 else WHITE) add_textbox(s, features, 2.82, y+0.05, 5.65, 0.8, fontsize=11, color=DGRAY, wrap=True) add_rect(s, 8.6, y, 4.43, 0.9, LORANGE if ri % 2 == 0 else RGBColor(0xE8, 0xF8, 0xEE)) add_textbox(s, f"KEY: {clue}", 8.65, y+0.05, 4.33, 0.8, fontsize=10.5, color=color, italic=True, wrap=True) add_rect(s, 0.3, 6.67, 12.73, 0.72, NAVY) add_textbox(s, "GOLDEN RULE: Pupil involvement = SURGICAL cause (compressive, usually aneurysmal) until proven otherwise. ANY pupil-involving CN III palsy needs URGENT vascular imaging (CTA/MRA; if negative, DSA).", 0.4, 6.7, 12.5, 0.65, fontsize=12, bold=True, color=GOLD, wrap=True) # Save outpath = "/tmp/workspace/third_nerve_ppt/Third_Nerve_Comprehensive.pptx" prs.save(outpath) print(f"Saved: {outpath}") PYEOF python3 /tmp/workspace/third_nerve_ppt/build.py
sed -i 's/RGBColor(0xFFF3E0)/RGBColor(0xFF, 0xF3, 0xE0)/g; s/RGBColor(0xE65100)/RGBColor(0xE6, 0x51, 0x00)/g' /tmp/workspace/third_nerve_ppt/build.py && python3 /tmp/workspace/third_nerve_ppt/build.py
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/third_nerve_ppt/Third_Nerve_Comprehensive.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t and len(t) > 3: texts.append(t[:60]) if texts: print(f'Slide {i}: {texts[0]}') " 2>&1
Third Nerve Comprehensive
Presentation · PPTX
| # | Slide Title | Key Content |
|---|---|---|
| 1 | Title Slide | Professional title design |
| 2 | Overview / TOC | Numbered index of all 12 major topics |
| 3 | Introduction | Fiber types (GSE+GVE), muscles innervated (mnemonic: SIR MED), clinical significance |
| 4 | Embryology | Neural origin (basal plate), ciliary ganglion (neural crest), congenital palsy, cyclic oculomotor palsy |
| 5 | Nucleus & Subnuclear Organization | EW nucleus, SR subnucleus (crossed), CCN (bilateral LPS), 5 critical nuclear rules |
| 6 | Fascicular Course | Through tegmentum -> red nucleus -> substantia nigra -> cerebral peduncle; brainstem syndrome preview |
| 7 | Subarachnoid Space | Between SCA & PCA, PCOM relation, surgical vs medical pupil alert box, causes |
| 8 | Cavernous Sinus | Position (highest in lateral wall), all CN contents table, causes including CCF/Tolosa-Hunt |
| 9 | SOF & Orbit | Superior vs inferior divisions, contents within/outside annulus of Zinn, orbital apex syndrome |
| 10 | Complete CN III Palsy | DPMD mnemonic, EOM loss table, down-and-out position explained |
| 11 | Localization Table | All 5 segments - features vs causes side-by-side (most exam-relevant slide) |
| 12 | Brainstem Syndromes | Weber, Benedikt, Claude, Nothnagel, Plus-Minus - structure/features/cause for each |
| 13 | Pupil in CN III Palsy | Surgical vs Medical pupil boxes, clinical algorithm for urgent imaging |
| 14 | Aberrant Regeneration | Pseudo-Graefe sign, pupil constriction on adduction, primary vs secondary - causes |
| 15 | Clinical Approach | 6-step evaluation algorithm (confirm -> classify -> pupil -> associated signs -> imaging -> follow-up) |
| 16 | Summary | Rule of 5 Segments, golden rule box (pupil = surgical) |