Trigger 1: A 70-year-old lady with sudden onset inability to speak and right upper limb weakness with complete recovery. * Correlate Anatomy to Clinical Signs: Localize the focal neurological deficits (inability to speak and right upper limb weakness) to the specific neuroanatomical pathways and cerebral vascular territory affected. * Differentiate Pathologies: Define Transient Ischemic Attack (TIA) and differentiate its clinical presentation and underlying pathophysiology from that of an established ischemic stroke. * Formulate an Evaluation Plan: Outline the recommended emergency diagnostic workup for a patient presenting with transient neurological deficits to determine the exact etiology (e.g., neuroimaging, vascular imaging, cardiac monitoring). * Develop a Management Strategy: Discuss the acute clinical approach and long-term secondary prevention strategies (e.g., antiplatelet therapy, statins, risk factor modification) for a patient following a TIA. Trigger 2: A 38-year-old man with a 3-day history of progressive bilateral leg weakness and a 1-week history of tingling feet. * Generate a Differential Diagnosis: Formulate a differential diagnosis for an acute or subacute onset of ascending symmetrical motor weakness and peripheral sensory symptoms.
middle cerebral artery territory stroke brain diagram

A medical infographic and diagrammatic summary illustrating the pathophysiology and classification of stroke infarcts following mechanical thrombectomy. The left panel, labeled 'Admission imaging,' displays a stylized anatomical diagram of the Circle of Willis showing a left carotid T-occlusion. Arrows indicate collateral blood flow to the anterior cerebral artery (ACA) territory, and an axial perfusion map below shows isolated middle cerebral artery (MCA) territory perfusion delay. The right panel, 'Follow up,' presents three axial brain schematics classifying new lesions: 1) 'Infarct to new territory' (INT), showing a focal cortical lesion in the contralateral hemisphere; 2) 'Infarct to initially non-hypoperfused territory' (IINHT), showing a lesion in the frontal lobe of the ipsilateral hemisphere; and 3) an infarct within the initially hypoperfused territory, attributed to distal emboli. The educational focus is on distinguishing procedure-related emboli in new territories versus the progression of the primary stroke territory. This resource is intended for neurology and radiology education regarding ischemic stroke complications.

This composite educational image illustrates the anatomy and pathophysiology of cerebral collateral recruitment. On the left, a dorsal view of a rat brain angiogram displays the arterial network, specifically labeling the middle cerebral arteries (MCA) and the anterior cerebral artery (ACA). Yellow markers delineate leptomeningeal anastomoses (LMAs) located at the watershed territories where these distal arterial branches meet. A 5mm scale bar is provided for anatomical context. On the right, a three-part schematic diagram illustrates the mechanism of collateral flow recruitment following an acute obstruction (e.g., ischemic stroke). The top diagram shows normal perfusion where collaterals have no net flow. The subsequent diagrams show that after an arterial occlusion occurs, pressure gradients drive blood through these anastomotic channels. Red zigzag lines represent the opening and dilation of collateral vessels, with black arrows indicating the redirection of blood flow into the ischemic territory. This figure demonstrates how preexisting collateral circulation acts as a compensatory mechanism to maintain cerebral blood flow during arterial blockage.

Educational figure illustrating a neuro-rehabilitation system for stroke. Panel A displays three T2 FLAIR MRI sequences (axial, coronal, and sagittal views) of a human brain. The images reveal hyperintense lesions indicative of an ischemic stroke in the right middle cerebral artery territory, specifically involving the insula, the head of the caudate nucleus, and adjacent white matter. Panel B presents a composite diagram of a Brain-Computer Interface (BCI) system. It features a clinical photograph of a patient wearing an EEG acquisition cap and a robotic hand orthosis. The system's logical flow is depicted via a flowchart: EEG signals are sent to an Acquisition Module, followed by a Processing Module utilizing a 'subject-specific model' consisting of a Filter Bank, Common Spatial Pattern (CSP), and Linear Discriminant Analysis (LDA). The output is transmitted via Bluetooth to trigger the hand orthosis. A timeline inset details the trial structure in seconds, showing cue stages (fixation cross, directional arrow) and task periods. This visual resource demonstrates the integration of neuroimaging diagnostics with advanced neurotechnological interventions for motor recovery in stroke patients.
Guillain Barre syndrome ascending paralysis nerve conduction
motor cortex homunculus Broca area speech left hemisphere

| Feature | TIA | Ischemic Stroke |
|---|---|---|
| Duration of deficit | Resolves fully (minutes to <24 h) | Persists >24 h or leaves permanent deficit |
| Tissue infarction | None (by definition) | Yes - irreversible neuronal death |
| DWI on MRI | Negative (or very small/transient) | Positive (restricted diffusion) |
| Neurological exam after event | Returns to baseline | Persistent abnormality |
| NIHSS | 0 at presentation (post-recovery) | Elevated |
| Risk of subsequent stroke | Up to 10% at 2 days, 15% at 90 days | Established event; risk of extension/recurrence |
| Investigation | Rationale |
|---|---|
| Non-contrast CT brain (immediate) | Excludes hemorrhage, large territorial infarct, mass lesion. Cannot reliably show acute ischemia in first 24-48 h. |
| MRI brain with DWI + FLAIR (urgent, within 24 h) | DWI detects even tiny areas of cytotoxic edema. A DWI lesion = tissue infarction (reclassifies as stroke). MRI is far more sensitive than CT for posterior fossa and small cortical lesions. FLAIR helps time the lesion. |
| Investigation | Rationale |
|---|---|
| CT Angiography (CTA) head and neck | Detects carotid stenosis/occlusion, intracranial stenosis, dissection. High grade (70-99%) carotid stenosis requires urgent revascularization. |
| MR Angiography (MRA) | Alternative to CTA; no contrast, no radiation - preferred if renal impairment. |
| Carotid Doppler ultrasound | Widely available, non-invasive; good first-line screen for extracranial carotid disease. |
| Investigation | Rationale |
|---|---|
| 12-lead ECG | Detect AF, recent MI, LVH. |
| Continuous cardiac monitoring (telemetry × 24-48 h) | Paroxysmal AF is frequently the culprit in cryptogenic TIA/stroke and may be undetected on a single ECG. |
| Transthoracic echocardiogram (TTE) | LV thrombus, wall motion abnormality, valvular disease, atrial septal defect/PFO (especially in young patients). Transoesophageal echo (TOE) is more sensitive for aortic arch atheroma and PFO. |
| Prolonged cardiac monitoring (Holter/loop recorder) | For cryptogenic events; may detect AF over 30 days. |
| Parameter | Points |
|---|---|
| Age ≥ 60 | 1 |
| Blood pressure ≥ 140/90 | 1 |
| Clinical features: unilateral weakness (2), speech disturbance without weakness (1) | 1-2 |
| Duration: ≥ 60 min (2), 10-59 min (1) | 0-2 |
| Diabetes | 1 |
| Risk Factor | Target/Intervention |
|---|---|
| Hypertension | <130/80 mmHg |
| Diabetes | HbA1c <7% |
| Dyslipidaemia | LDL <70 mg/dL, high-intensity statin |
| Smoking | Complete cessation |
| Obesity | Weight loss, dietary modification |
| Physical inactivity | ≥150 min/week moderate exercise |
| AF | Anticoagulation (DOAC preferred) |
| Subtype | Key Features |
|---|---|
| AIDP (most common in West) | Demyelinating, ascending weakness, areflexia |
| AMAN (axonal motor) | More severe, anti-GM1 IgG antibodies, common in Asia |
| Miller Fisher Syndrome | Ophthalmoplegia + ataxia + areflexia (NO leg weakness typically); anti-GQ1b |
| Bickerstaff Brainstem Encephalitis | MFS + hypersomnolence/encephalopathy |
| Condition | Onset | Pattern | Reflexes | Sensory | CSF | NCS/EMG | Distinguishing Feature |
|---|---|---|---|---|---|---|---|
| GBS (AIDP) | Days-weeks | Ascending, symmetric | Absent | Distal paresthesias | ↑ protein, no cells | Demyelinating | Post-infectious, areflexia |
| Transverse myelitis | Hours-days | Para/quadriplegia | UMN (hyperreflexia) | Sensory level | ↑ cells | Normal | Bladder dysfunction, MRI cord lesion |
| Cord compression | Hours-days | Below level | UMN | Level | Xanthochromia if block | Normal | Back pain, MRI compression |
| Botulism | Hours | Descending | Normal/reduced | None | Normal | NMJ (pre-synaptic block) | Cranial nerves first, autonomic |
| Tick paralysis | Hours | Ascending | Absent | None/mild | Normal | Normal/NMJ | Find tick, no sensory |
| MG | Days-weeks | Descending, fatigable | Normal | None | Normal | Decremental response | Ptosis/diplopia |
| Periodic paralysis | Minutes-hours | Limb weakness | Reduced | None | Normal | Normal | Electrolyte abnormality |
| AIP | Days | Motor > sensory | Reduced | Variable | Normal-↑ protein | Axonal | Abdominal pain, precipitants |
A 38-year-old man with a 3-day history of progressive bilateral leg weakness and a 1-week history of tingling feet. * Generate a Differential Diagnosis: Formulate a differential diagnosis for an acute or subacute onset of ascending symmetrical motor weakness and peripheral sensory symptoms. * Understand Pathophysiology: Describe the pathophysiology, immune mechanisms, and typical clinical progression of Guillain-Barré Syndrome (GBS) and acute inflammatory demyelinating polyneuropathy (AIDP).
Guillain Barre syndrome pathophysiology demyelination peripheral nerve histology
| Cause | Features |
|---|---|
| Cord compression (disc, tumor, abscess, haematoma) | Local back pain, point tenderness, UMN signs (hyperreflexia, upgoing plantars below level), bladder/bowel dysfunction, sensory level |
| Transverse myelitis (demyelinating/inflammatory) | Bilateral weakness, sensory level, bladder involvement; may be first presentation of MS |
| Spinal epidural abscess | Fever, back pain, rapid progression; risk factors (IV drug use, immunosuppression, recent spinal procedure) |
| Condition | Pattern | Reflexes | Sensory | CSF | Key Distinguisher |
|---|---|---|---|---|---|
| GBS/AIDP | Ascending symmetric | Absent | Distal tingling | ↑ protein, no cells | Post-infectious, areflexia |
| CIDP | Ascending or chronic | Absent/reduced | Variable | ↑ protein | Progression >8 weeks, steroid-responsive |
| Cord compression | Below level, bilateral | UMN (brisk) | Sensory level | Block/xanthochromia | Bladder, MRI diagnostic |
| Transverse myelitis | Below level | UMN | Sensory level | ↑ cells ± IgG | MRI cord lesion |
| Botulism | Descending | Normal/reduced | None | Normal | Cranial nerves first, autonomic |
| Tick paralysis | Ascending | Absent | None | Normal | Find and remove tick |
| MG | Descending, fatigable | Normal | None | Normal | Decremental NCS, anti-AChR |
| AIP | Motor > sensory | Reduced | Variable | ↑ protein | Abdominal pain, urine PBG |
| Hypokalaemic PP | Episodic, legs | Reduced | None | Normal | Low serum K⁺, triggers |
| West Nile/AFM | Often asymmetric | Absent (LMN) | Minimal | ↑ cells | Fever, pleocytosis, summer |
| Organism | Notes |
|---|---|
| Campylobacter jejuni | Most frequently identified; gastroenteritis 1-3 weeks prior |
| Cytomegalovirus (CMV) | Associated with severe forms, anti-GM2 antibodies |
| Epstein-Barr virus (EBV) | Mononucleosis-like prodrome |
| HIV | Both acute seroconversion and later in disease |
| Mycoplasma pneumoniae | Atypical pneumonia prodrome |
| Zika virus | AIDP, AMAN, and AMSAN patterns all described |
| SARS-CoV-2 | Associated with GBS in several case series |

WEEK -3 to -1: Antecedent infection (GI illness, respiratory infection, vaccination)
↓
DAY 1-7: Distal sensory symptoms - paresthesias, tingling in toes and fingers
Aching back/hip pain (may mimic viral myalgia or disc disease)
↓
DAY 3-14: Progressive symmetric ascending weakness begins
Legs → proximal legs → arms → facial muscles
Areflexia - ankle jerks first, then all deep tendon reflexes
↓
WEEK 2-4: PLATEAU - maximum deficit reached by 4 weeks (by definition)
25-30% require mechanical ventilation (respiratory failure from diaphragm involvement)
Autonomic dysfunction: labile BP, tachycardia/bradycardia, ileus, urinary retention
Facial diplegia in >50%
↓
WEEK 4-8: Plateau phase
↓
WEEKS to MONTHS: Recovery phase - remyelination and axonal regeneration
80% achieve independent ambulation by 6 months
| Finding | Mechanism |
|---|---|
| Prolonged distal motor latencies | Distal demyelination |
| Reduced or absent nerve conduction velocities (<75% of lower limit of normal) | Diffuse segmental demyelination |
| Conduction block | Focal demyelination along nerve |
| Absent or markedly prolonged F-waves and H-reflexes | Proximal root involvement (highly characteristic) |
| Reduced CMAP amplitudes (if axonal degeneration) | Secondary axonal loss |
| Normal SNAP amplitudes (early AIDP) | Sensory fibers initially less affected |
| Subtype | Distribution | NCS Pattern | Antibodies | Geography/Notes |
|---|---|---|---|---|
| AIDP | Motor + sensory, proximal and distal | Demyelinating (slow conduction, conduction block) | None identified | Most common in Western countries |
| AMAN | Pure motor | Axonal (reduced CMAP, normal SNAP) | Anti-GM1, anti-GD1a (IgG) | Most common in Asia, China; C. jejuni related |
| AMSAN | Motor + sensory, axonal | Absent CMAPs + SNAPs | Anti-GD1a | Severe, poor prognosis |
| Miller Fisher Syndrome | Cranial (ocular), cerebellar | Sensory axonal; often normal motor | Anti-GQ1b (IgG) - >95% | Ophthalmoplegia + ataxia + areflexia |
| Pharyngeal-Cervical-Brachial | Bulbar, neck, arms | Variable | Anti-GT1a | Swallowing difficulty prominent |
| Intervention | Indication | Mechanism |
|---|---|---|
| IVIG (2 g/kg over 5 days) | Cannot walk, or respiratory failure | Neutralizes pathogenic antibodies; modulates Fc receptor-mediated macrophage activation; unclear full mechanism |
| Plasma exchange (PLEX) (5 exchanges over 10-14 days) | Cannot walk, or respiratory failure | Removes circulating autoantibodies and complement |
| IVIG vs PLEX | Equivalent efficacy; choice depends on patient comorbidities, access | - |
| Corticosteroids | Not indicated | May delay recovery; do not improve outcomes |
| Supportive care | All patients | DVT prophylaxis, bladder care, pain management (gabapentin/carbamazepine), cardiac monitoring |
| Physical therapy | All patients | Start early; prevents contractures; improves recovery |
information based on harrisons for the last question asked
| Trigger | Notes |
|---|---|
| Campylobacter jejuni | The most frequently identified antecedent; stool isolates share ganglioside-like surface glycolipid structures cross-reactive with GM1 |
| Cytomegalovirus (CMV) | Common viral trigger; associated with anti-GM2 antibodies |
| Epstein-Barr virus (EBV) | Mononucleosis-like prodrome |
| HIV | Both at acute seroconversion and established infection |
| SARS-CoV-2 | Associated with increased GBS risk with adenoviral-vector vaccines; not with mRNA vaccines |
| Influenza vaccine | Very small risk: <1 per million vaccinations with current seasonal vaccines |
| Meningococcal vaccine (Menactra) | No increased risk |
| Older nervous-tissue rabies vaccine | Implicated in developing countries; mechanism is immunisation against neural antigens |
| Lymphoma, SLE, Sjögren's | Non-infectious disease associations |
"Circumstantial evidence suggests that all GBS results from immune responses to nonself antigens (infectious agents, vaccines) that misdirect to host nerve tissue through a resemblance-of-epitope (molecular mimicry) mechanism." - Harrison's, p. 3661

| Subtype | Key Features | Electrodiagnosis | Pathology | Antibodies |
|---|---|---|---|---|
| AIDP | Adults > children; 90% of GBS in Western world; recovery rapid | Demyelinating | Attack on Schwann cell surface; widespread myelin damage; macrophage infiltration | No clear pattern; anti-GM1 (<50%) |
| AMAN | Pure motor; prominent in Asia; children and young adults; epidemic in China linked to C. jejuni | Axonal (motor only) | IgG + complement on nodal/internodal axolemma; macrophage invasion at nodes | GM1, GD1a, GM1b, GalNAc-GD1a |
| AMSAN | Motor + sensory axonal; severe; poor recovery | Axonal (motor + sensory) | Extensive axonal degeneration, ventral and dorsal roots | GM1, GD1a |
| Miller Fisher Syndrome (MFS) | Ophthalmoplegia + ataxia + areflexia; NO limb weakness (typically); 6% of GBS in West; 18% in Taiwan | Sensory nerve involvement; normal motor | Anti-GQ1b binds at paranodal myelin of oculomotor nerves | GQ1b >90% |
| Pharyngeal-Cervical-Brachial (PCB) | Bulbar weakness, neck, arms; localized AMAN or extensive MFS | Variable | - | GT1a > GQ1b > GD1a |
| Bickerstaff's Brainstem Encephalitis | MFS + hypersomnolence/encephalopathy; CNS involvement | - | - | GQ1b, GT1a |
"In the vast majority of patients with GBS, treatment should be initiated as soon after diagnosis as possible. Each day counts; ~2 weeks after the first motor symptoms, it is not known whether immunotherapy is still effective."
| Treatment | Details |
|---|---|
| IVIg (first-line choice) | 2 g/kg total, administered as 5 daily infusions; chosen first because of ease of administration and safety. Mechanism: GBS autoantibodies neutralized by anti-idiotypic antibodies present in IVIg |
| Plasmapheresis (PLEX) | Equally effective as IVIg for typical GBS |
| Combination IVIg + PLEX | "Not significantly better than either alone" |
| If at plateau: | Treatment "probably is no longer indicated" unless severe motor weakness persists and ongoing immunological attack cannot be excluded |
presentation slide based on this information
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/gbs-presentation && cat > /tmp/workspace/gbs-presentation/build_pptx.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 from io import BytesIO # ── Color Palette ────────────────────────────────────────────── DEEP_BLUE = RGBColor(0x0D, 0x2B, 0x55) # dark navy header bg MID_BLUE = RGBColor(0x1A, 0x53, 0x8B) # section accent ACCENT_TEAL = RGBColor(0x00, 0x8B, 0x8B) # highlight / bullets LIGHT_BG = RGBColor(0xF0, 0xF6, 0xFF) # slide background WHITE = RGBColor(0xFF, 0xFF, 0xFF) DARK_TEXT = RGBColor(0x1C, 0x1C, 0x2E) SOFT_GRAY = RGBColor(0xCC, 0xD6, 0xE8) WARNING_RED = RGBColor(0xC0, 0x39, 0x2B) AMBER = RGBColor(0xD3, 0x7B, 0x00) W = Inches(13.333) H = Inches(7.5) prs = Presentation() prs.slide_width = W prs.slide_height = H blank = prs.slide_layouts[6] # ── Helper functions ────────────────────────────────────────── def bg(slide, color): from pptx.util import Emu sp = slide.shapes.add_shape(1, 0, 0, W, H) sp.fill.solid(); sp.fill.fore_color.rgb = color sp.line.fill.background() return sp def rect(slide, x, y, w, h, color, radius=0): sp = slide.shapes.add_shape(1, x, y, w, h) sp.fill.solid(); sp.fill.fore_color.rgb = color sp.line.fill.background() return sp def textbox(slide, x, y, w, h, text, size=18, bold=False, color=DARK_TEXT, align=PP_ALIGN.LEFT, wrap=True, italic=False, font="Calibri"): tb = slide.shapes.add_textbox(x, y, w, h) tf = tb.text_frame; tf.word_wrap = wrap tf.margin_left = Pt(4); tf.margin_right = Pt(4) tf.margin_top = Pt(2); tf.margin_bottom = Pt(2) p = tf.paragraphs[0] p.alignment = align run = p.add_run(); run.text = text run.font.name = font; run.font.size = Pt(size) run.font.bold = bold; run.font.italic = italic run.font.color.rgb = color return tb def add_bullet_lines(tf, lines, size=14, color=DARK_TEXT, indent_level=0, bold=False, bullet_char="•", font="Calibri"): from pptx.oxml.ns import qn from lxml import etree for line in lines: p = tf.add_paragraph() p.level = indent_level p.space_before = Pt(3) run = p.add_run() prefix = (bullet_char + " ") if bullet_char else "" run.text = prefix + line run.font.name = font; run.font.size = Pt(size) run.font.bold = bold; run.font.color.rgb = color def header_bar(slide, title, subtitle=None): rect(slide, 0, 0, W, Inches(1.15), DEEP_BLUE) textbox(slide, Inches(0.4), Inches(0.12), Inches(11), Inches(0.65), title, size=28, bold=True, color=WHITE, font="Calibri") if subtitle: textbox(slide, Inches(0.4), Inches(0.75), Inches(11), Inches(0.35), subtitle, size=14, bold=False, color=SOFT_GRAY, italic=True, font="Calibri") # Teal accent stripe rect(slide, 0, Inches(1.15), W, Inches(0.055), ACCENT_TEAL) def footer(slide, text="Harrison's Principles of Internal Medicine, 22E (2025)"): rect(slide, 0, Inches(7.18), W, Inches(0.32), DEEP_BLUE) textbox(slide, Inches(0.3), Inches(7.2), Inches(12), Inches(0.28), text, size=10, color=SOFT_GRAY, align=PP_ALIGN.LEFT) # ═══════════════════════════════════════════════════════════════ # SLIDE 1 — TITLE SLIDE # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, DEEP_BLUE) rect(slide, 0, Inches(2.6), W, Inches(2.5), MID_BLUE) rect(slide, 0, Inches(2.55), W, Inches(0.08), ACCENT_TEAL) rect(slide, 0, Inches(5.07), W, Inches(0.08), ACCENT_TEAL) textbox(slide, Inches(0.8), Inches(1.1), Inches(11.5), Inches(1.3), "Guillain-Barré Syndrome (GBS)", size=40, bold=True, color=WHITE, align=PP_ALIGN.CENTER) textbox(slide, Inches(0.8), Inches(2.7), Inches(11.5), Inches(0.7), "Differential Diagnosis • Pathophysiology • Immune Mechanisms • Clinical Progression", size=18, bold=False, color=SOFT_GRAY, align=PP_ALIGN.CENTER, italic=True) textbox(slide, Inches(0.8), Inches(3.5), Inches(11.5), Inches(0.5), "Based on Harrison's Principles of Internal Medicine, 22nd Edition (2025)", size=14, color=ACCENT_TEAL, align=PP_ALIGN.CENTER) textbox(slide, Inches(0.8), Inches(4.2), Inches(11.5), Inches(0.5), "Clinical Case: 38-year-old male | 3-day bilateral leg weakness | 1-week tingling feet", size=15, color=WHITE, align=PP_ALIGN.CENTER) textbox(slide, Inches(0.8), Inches(6.5), Inches(11.5), Inches(0.5), "Neurology | Emergency Medicine | Internal Medicine", size=12, color=SOFT_GRAY, align=PP_ALIGN.CENTER, italic=True) # ═══════════════════════════════════════════════════════════════ # SLIDE 2 — CLINICAL CASE PRESENTATION # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Clinical Case Presentation", "38-Year-Old Male") footer(slide) # Case box rect(slide, Inches(0.4), Inches(1.35), Inches(12.5), Inches(1.55), WHITE) textbox(slide, Inches(0.55), Inches(1.42), Inches(12), Inches(0.35), "PRESENTING COMPLAINT", size=11, bold=True, color=MID_BLUE) textbox(slide, Inches(0.55), Inches(1.75), Inches(12), Inches(0.9), "3-day history of progressive bilateral leg weakness | 1-week history of tingling in the feet", size=17, bold=False, color=DARK_TEXT, wrap=True) # Two columns rect(slide, Inches(0.4), Inches(3.05), Inches(6.0), Inches(3.8), WHITE) rect(slide, Inches(6.7), Inches(3.05), Inches(6.2), Inches(3.8), WHITE) textbox(slide, Inches(0.55), Inches(3.12), Inches(5.5), Inches(0.4), "KEY FEATURES IN THIS CASE", size=12, bold=True, color=MID_BLUE) tb = slide.shapes.add_textbox(Inches(0.55), Inches(3.55), Inches(5.6), Inches(3.1)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, [ "Ascending (legs first → proximal)", "Bilateral and symmetric", "Subacute onset over days", "Distal sensory symptoms (tingling)", "Motor weakness > sensory loss", "Age 38 — young adult", "No fever, no constitutional symptoms" ], size=14) textbox(slide, Inches(6.85), Inches(3.12), Inches(5.6), Inches(0.4), "IMMEDIATE CONCERN", size=12, bold=True, color=WARNING_RED) tb2 = slide.shapes.add_textbox(Inches(6.85), Inches(3.55), Inches(5.6), Inches(3.1)) tf2 = tb2.text_frame; tf2.word_wrap = True add_bullet_lines(tf2, [ "Respiratory failure risk — 30% need ventilation", "Autonomic instability — can be fatal", "Rapid progression possible", "Must exclude cord compression urgently", "ADMIT + cardiac monitoring mandatory", "Check FVC and NIF on admission" ], size=14, color=WARNING_RED) # ═══════════════════════════════════════════════════════════════ # SLIDE 3 — DIFFERENTIAL DIAGNOSIS # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Differential Diagnosis", "Acute/Subacute Ascending Symmetrical Weakness + Distal Sensory Symptoms") footer(slide) # Tier labels + columns cols = [ (Inches(0.35), "TIER 1 — Most Likely", ACCENT_TEAL, ["Guillain-Barré Syndrome (GBS/AIDP)", "Acute ascending areflexic paralysis", "Post-infectious (C. jejuni, CMV, EBV)", "Tingling precedes weakness", "Areflexia — hallmark sign"]), (Inches(4.6), "TIER 2 — Must Exclude", MID_BLUE, ["Spinal cord compression / Myelitis", "Botulism (descending, not ascending)", "Tick paralysis (no sensory sx)", "CIDP — acute onset (>8 wks → CIDP)", "HIV/CMV polyradiculopathy"]), (Inches(8.85), "TIER 3 — Consider", AMBER, ["Acute Intermittent Porphyria", "Hypokalaemic Periodic Paralysis", "Myasthenia Gravis (descending)", "Toxic neuropathy (arsenic, lead)", "West Nile / Enteroviral AFM"]), ] for (x, title, col, items) in cols: rect(slide, x, Inches(1.35), Inches(3.9), Inches(5.7), WHITE) rect(slide, x, Inches(1.35), Inches(3.9), Inches(0.45), col) textbox(slide, x+Inches(0.1), Inches(1.38), Inches(3.7), Inches(0.38), title, size=12, bold=True, color=WHITE) tb = slide.shapes.add_textbox(x+Inches(0.12), Inches(1.9), Inches(3.65), Inches(4.9)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, items, size=13.5, color=DARK_TEXT) # Key distinguisher box at bottom rect(slide, Inches(0.35), Inches(7.0), Inches(12.6), Inches(0.12), ACCENT_TEAL) textbox(slide, Inches(0.35), Inches(6.85), Inches(12.6), Inches(0.28), "Red flags against GBS: UMN signs (brisk reflexes, Babinski) | sensory level | bladder dysfunction early | fever | CSF pleocytosis", size=11, italic=True, color=MID_BLUE, align=PP_ALIGN.CENTER) # ═══════════════════════════════════════════════════════════════ # SLIDE 4 — DEFINITION & EPIDEMIOLOGY # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "GBS — Definition & Epidemiology", "Harrison's, Chapter 458") footer(slide) rect(slide, Inches(0.4), Inches(1.35), Inches(12.5), Inches(1.55), MID_BLUE) textbox(slide, Inches(0.55), Inches(1.45), Inches(12), Inches(1.2), '"GBS is an acute, frequently severe, and fulminant polyradiculoneuropathy that is autoimmune in nature."', size=17, bold=False, color=WHITE, italic=True, wrap=True) stats = [ ("10–20", "cases per million\nper year globally"), ("5,000–6,000", "cases per year\nin the United States"), ("~60%", "preceded by infection\n1–3 weeks before onset"), ("30%", "require mechanical\nventilation"), ("80%", "achieve good\nfunctional recovery"), ] for i, (val, label) in enumerate(stats): x = Inches(0.35 + i * 2.55) rect(slide, x, Inches(3.1), Inches(2.35), Inches(2.0), WHITE) rect(slide, x, Inches(3.1), Inches(2.35), Inches(0.08), ACCENT_TEAL) textbox(slide, x + Inches(0.1), Inches(3.25), Inches(2.15), Inches(0.75), val, size=28, bold=True, color=MID_BLUE, align=PP_ALIGN.CENTER) textbox(slide, x + Inches(0.08), Inches(4.05), Inches(2.2), Inches(0.9), label, size=12, color=DARK_TEXT, align=PP_ALIGN.CENTER) # Risk factors rect(slide, Inches(0.4), Inches(5.3), Inches(12.5), Inches(1.65), WHITE) textbox(slide, Inches(0.55), Inches(5.35), Inches(12), Inches(0.38), "ANTECEDENT TRIGGERS (Harrison's)", size=12, bold=True, color=MID_BLUE) tb = slide.shapes.add_textbox(Inches(0.55), Inches(5.72), Inches(12.1), Inches(1.1)) tf = tb.text_frame; tf.word_wrap = True p = tf.paragraphs[0] run = p.add_run() run.text = ("Campylobacter jejuni (most common identified) • CMV • EBV • HIV • " "SARS-CoV-2 • Influenza vaccine (<1/million) • " "Adenoviral COVID vaccines (slight increase) • " "Lymphoma / Hodgkin's • SLE • Sjögren's • Immune checkpoint inhibitors") run.font.size = Pt(13); run.font.color.rgb = DARK_TEXT run.font.name = "Calibri" # ═══════════════════════════════════════════════════════════════ # SLIDE 5 — IMMUNOPATHOGENESIS: MOLECULAR MIMICRY # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Immunopathogenesis — Molecular Mimicry", "The Central Concept (Harrison's, p. 3661)") footer(slide) # Quote box rect(slide, Inches(0.4), Inches(1.35), Inches(12.5), Inches(1.0), DEEP_BLUE) textbox(slide, Inches(0.55), Inches(1.42), Inches(12), Inches(0.85), '"All GBS results from immune responses to nonself antigens that misdirect to host nerve tissue through a resemblance-of-epitope (molecular mimicry) mechanism." — Harrison\'s 22E', size=14, color=WHITE, italic=True, wrap=True) # Arrow flow diagram using boxes steps = [ ("1. INFECTION", "C. jejuni / CMV / EBV\nVaccine / Other trigger", MID_BLUE), ("2. IMMUNE RESPONSE", "Antibodies + T cells\ngenerated vs. pathogen", ACCENT_TEAL), ("3. MOLECULAR MIMICRY", "Pathogen epitopes resemble\nperipheral nerve gangliosides", AMBER), ("4. AUTOIMMUNE ATTACK", "Autoantibodies attack\nSchwann cells / axolemma", WARNING_RED), ("5. NERVE INJURY", "Segmental demyelination\nor axonal degeneration", DEEP_BLUE), ] for i, (title, detail, col) in enumerate(steps): x = Inches(0.3 + i * 2.6) rect(slide, x, Inches(2.55), Inches(2.3), Inches(1.7), col) textbox(slide, x+Inches(0.08), Inches(2.62), Inches(2.15), Inches(0.42), title, size=11, bold=True, color=WHITE, align=PP_ALIGN.CENTER) textbox(slide, x+Inches(0.08), Inches(3.1), Inches(2.15), Inches(1.0), detail, size=11, color=WHITE, align=PP_ALIGN.CENTER) if i < 4: textbox(slide, x+Inches(2.32), Inches(3.05), Inches(0.25), Inches(0.5), "▶", size=20, color=MID_BLUE, align=PP_ALIGN.CENTER) # C.jejuni detail box rect(slide, Inches(0.4), Inches(4.5), Inches(5.9), Inches(2.5), WHITE) textbox(slide, Inches(0.55), Inches(4.55), Inches(5.5), Inches(0.42), "C. JEJUNI — BEST ESTABLISHED EXAMPLE", size=12, bold=True, color=ACCENT_TEAL) tb = slide.shapes.add_textbox(Inches(0.55), Inches(4.97), Inches(5.6), Inches(1.85)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, [ "Surface LOS shares ganglioside-like epitopes with GM1/GD1a in human nerves", "Sialic acid residues activate dendritic cells via TLR4 → B-cell differentiation", "Anti-GM1/GD1a IgG binds nodes of Ranvier → MAC formation", "Nav channel clusters disappear → conduction failure", ], size=12.5) # Ganglioside box rect(slide, Inches(6.6), Inches(4.5), Inches(6.3), Inches(2.5), WHITE) textbox(slide, Inches(6.75), Inches(4.55), Inches(5.9), Inches(0.42), "GANGLIOSIDE TARGETS (Harrison's Table 458-2)", size=12, bold=True, color=MID_BLUE) rows = [ ("GBS Subtype", "Antibody Target", True), ("AIDP", "No clear pattern (anti-GM1 <50%)", False), ("AMAN", "GM1, GD1a, GalNAc-GD1a", False), ("AMSAN", "GM1, GD1a", False), ("Miller Fisher Syndrome", "GQ1b (>90%)", False), ("Pharyngeal-Cervical-Brachial", "GT1a > GQ1b", False), ] for j, (col1, col2, is_hdr) in enumerate(rows): yy = Inches(4.97) + Inches(0.33) * j bg_c = MID_BLUE if is_hdr else (LIGHT_BG if j % 2 == 0 else WHITE) rect(slide, Inches(6.65), yy, Inches(6.2), Inches(0.31), bg_c) tc = WHITE if is_hdr else DARK_TEXT textbox(slide, Inches(6.72), yy+Inches(0.02), Inches(3.1), Inches(0.28), col1, size=11, bold=is_hdr, color=tc) textbox(slide, Inches(9.85), yy+Inches(0.02), Inches(2.9), Inches(0.28), col2, size=11, bold=is_hdr, color=tc) # ═══════════════════════════════════════════════════════════════ # SLIDE 6 — AIDP vs AMAN PATHOLOGY # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Pathological Mechanisms — AIDP vs. AMAN", "Harrison's Figure 458-2") footer(slide) # AIDP column rect(slide, Inches(0.35), Inches(1.35), Inches(6.1), Inches(5.75), WHITE) rect(slide, Inches(0.35), Inches(1.35), Inches(6.1), Inches(0.48), ACCENT_TEAL) textbox(slide, Inches(0.5), Inches(1.4), Inches(5.8), Inches(0.38), "AIDP — Acute Inflammatory Demyelinating Polyneuropathy", size=13, bold=True, color=WHITE) tb = slide.shapes.add_textbox(Inches(0.5), Inches(1.92), Inches(5.8), Inches(5.0)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, [ "Target: Outer surface of Schwann cells (myelin)", "Autoantibodies bind myelin antigens", "Complement activated → MAC forms on Schwann cell surface", "Vesicular degeneration of myelin initiated", "Macrophages invade → scavenge myelin debris", "Result: Segmental demyelination (axon initially spared)", "", "Electrophysiology: DEMYELINATING pattern", " → Prolonged distal latencies", " → Slowed nerve conduction velocities", " → Conduction block", " → Absent / prolonged F-waves & H-reflexes", "", "90% of GBS in Western countries", "Recovery: Usually rapid with remyelination", ], size=13) # AMAN column rect(slide, Inches(6.75), Inches(1.35), Inches(6.2), Inches(5.75), WHITE) rect(slide, Inches(6.75), Inches(1.35), Inches(6.2), Inches(0.48), MID_BLUE) textbox(slide, Inches(6.9), Inches(1.4), Inches(5.9), Inches(0.38), "AMAN — Acute Motor Axonal Neuropathy", size=13, bold=True, color=WHITE) tb2 = slide.shapes.add_textbox(Inches(6.9), Inches(1.92), Inches(5.9), Inches(5.0)) tf2 = tb2.text_frame; tf2.word_wrap = True add_bullet_lines(tf2, [ "Target: Nodal + internodal axolemma of MOTOR fibers", "IgG anti-GM1 / anti-GD1a bind nodes of Ranvier", "IgG + complement deposited on axolemma", "MAC forms at nodes", "Voltage-gated Na⁺ channel clusters disappear", "Paranodal myelin detaches → conduction failure", "Macrophages invade periaxonal space from nodes", "Axonal degeneration follows (later stage)", "", "Electrophysiology: AXONAL pattern", " → Reduced/absent CMAP amplitudes", " → Normal SNAPs (pure motor form)", " → No demyelinating features", "", "Most common subtype in Asia; C. jejuni linked", "AMSAN = motor + sensory axonal variant; poor prognosis", ], size=13) # Divider rect(slide, Inches(6.55), Inches(1.35), Inches(0.18), Inches(5.75), LIGHT_BG) # ═══════════════════════════════════════════════════════════════ # SLIDE 7 — CLINICAL FEATURES & PROGRESSION TIMELINE # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Clinical Features & Progression Timeline", "Harrison's, p. 3660") footer(slide) # Timeline bar rect(slide, Inches(0.4), Inches(3.65), Inches(12.5), Inches(0.18), SOFT_GRAY) phases = [ (Inches(0.4), Inches(1.38), "ANTECEDENT\nINFECTION", "1–3 weeks\nbefore onset", "Respiratory / GI illness\nC. jejuni, CMV, EBV\nVaccination", ACCENT_TEAL), (Inches(3.25), Inches(1.38), "SENSORY\nPRODROME", "Days 1–7", "Tingling / dysesthesias\nin toes & fingers\nBack / hip / limb pain (~50%)", MID_BLUE), (Inches(6.1), Inches(1.38), "MOTOR\nWEAKNESS", "Days 3–14", "Ascending: legs → arms\nAreflexia (earliest sign)\nFacial palsy 50%\nBulbar weakness", MID_BLUE), (Inches(8.95), Inches(1.38), "PLATEAU", "≤4 weeks\n(mandatory)", "Maximum deficit\n30% need ventilation\nAutonomic instability\nLabile BP, arrhythmias", WARNING_RED), (Inches(11.3), Inches(1.38), "RECOVERY", "Weeks–months", "Remyelination\nAxonal regeneration\n80% walk at 6 months", ACCENT_TEAL), ] for (bx, by, title, timing, detail, col) in phases: bw = Inches(2.5) rect(slide, bx, by, bw, Inches(2.05), col) textbox(slide, bx+Inches(0.08), by+Inches(0.06), bw-Inches(0.15), Inches(0.55), title, size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER) textbox(slide, bx+Inches(0.08), by+Inches(0.62), bw-Inches(0.15), Inches(0.42), timing, size=11, color=WHITE, align=PP_ALIGN.CENTER, italic=True) textbox(slide, bx+Inches(0.08), by+Inches(1.08), bw-Inches(0.15), Inches(0.88), detail, size=10, color=WHITE, align=PP_ALIGN.CENTER) # Dot on timeline dot = slide.shapes.add_shape(9, bx+Inches(0.9), Inches(3.58), Inches(0.28), Inches(0.28)) dot.fill.solid(); dot.fill.fore_color.rgb = col; dot.line.fill.background() # Clinical features summary boxes rect(slide, Inches(0.4), Inches(4.1), Inches(4.1), Inches(3.1), WHITE) textbox(slide, Inches(0.55), Inches(4.15), Inches(3.8), Inches(0.38), "MOTOR FEATURES", size=12, bold=True, color=MID_BLUE) tb = slide.shapes.add_textbox(Inches(0.55), Inches(4.55), Inches(3.8), Inches(2.4)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, [ "Ascending symmetric paralysis", "Legs > arms involvement", "Facial diplegia in 50%", "Lower cranial nerves (bulbar)", "Areflexia: hallmark sign", "30% require ventilation" ], size=12.5) rect(slide, Inches(4.7), Inches(4.1), Inches(4.1), Inches(3.1), WHITE) textbox(slide, Inches(4.85), Inches(4.15), Inches(3.8), Inches(0.38), "SENSORY FEATURES", size=12, bold=True, color=ACCENT_TEAL) tb2 = slide.shapes.add_textbox(Inches(4.85), Inches(4.55), Inches(3.8), Inches(2.4)) tf2 = tb2.text_frame; tf2.word_wrap = True add_bullet_lines(tf2, [ "Distal tingling (toes, fingers)", "Proprioception / vibration lost", "Pain/temp deficits relatively mild", "Large-fibre loss > small fibre", "Bladder usually transient only", "Pain in 50% (back, limbs, neck)" ], size=12.5) rect(slide, Inches(9.0), Inches(4.1), Inches(3.9), Inches(3.1), WHITE) textbox(slide, Inches(9.15), Inches(4.15), Inches(3.6), Inches(0.38), "AUTONOMIC FEATURES", size=12, bold=True, color=WARNING_RED) tb3 = slide.shapes.add_textbox(Inches(9.15), Inches(4.55), Inches(3.6), Inches(2.4)) tf3 = tb3.text_frame; tf3.word_wrap = True add_bullet_lines(tf3, [ "Present even in mild GBS", "Labile blood pressure", "Cardiac dysrhythmias (can be fatal)", "Postural hypotension", "Urinary retention (transient)", "Diaphoresis / anhidrosis" ], size=12.5) # ═══════════════════════════════════════════════════════════════ # SLIDE 8 — DIAGNOSTIC CRITERIA (Harrison's 3-Level System) # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Diagnosis — Harrison's 3-Level Case Definitions", "Harrison's, pp. 3663–3664") footer(slide) levels = [ ("LEVEL 1 — DEFINITE GBS", ACCENT_TEAL, [ "Bilateral AND flaccid limb weakness", "Decreased / absent DTRs in weak limbs", "Monophasic illness; nadir at 12 hours – 28 days, then plateau", "Electrophysiologic findings consistent with GBS", "Cytoalbuminologic dissociation: ↑ CSF protein + WBC <50 cells/μL", "No alternative diagnosis identified", ]), ("LEVEL 2 — PROBABLE GBS", MID_BLUE, [ "Bilateral flaccid limb weakness", "Decreased / absent DTRs in weak limbs", "Monophasic illness; nadir at 12 hours – 28 days, then plateau", "CSF WBC <50 cells/μL (protein may be normal)", "OR if CSF unavailable: EDx consistent with GBS", "No alternative diagnosis identified", ]), ("LEVEL 3 — POSSIBLE GBS", AMBER, [ "Bilateral flaccid limb weakness", "Decreased / absent DTRs in weak limbs", "Monophasic illness; nadir at 12 hours – 28 days, then plateau", "No CSF or electrophysiology available", "No alternative diagnosis identified", "(Clinical diagnosis only — least certainty)", ]), ] for i, (title, col, items) in enumerate(levels): x = Inches(0.35 + i * 4.35) rect(slide, x, Inches(1.35), Inches(4.1), Inches(5.5), WHITE) rect(slide, x, Inches(1.35), Inches(4.1), Inches(0.48), col) textbox(slide, x+Inches(0.1), Inches(1.4), Inches(3.9), Inches(0.38), title, size=12, bold=True, color=WHITE) tb = slide.shapes.add_textbox(x+Inches(0.12), Inches(1.92), Inches(3.85), Inches(4.75)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, items, size=13, bullet_char="✓") # CSF + EDx note rect(slide, Inches(0.35), Inches(7.0), Inches(12.6), Inches(0.1), SOFT_GRAY) textbox(slide, Inches(0.35), Inches(6.82), Inches(12.6), Inches(0.3), "Important: CSF protein may be NORMAL in first 1–2 days. " "If strongly suspected, treatment should begin WITHOUT waiting for EDx/CSF evolution.", size=11, italic=True, color=MID_BLUE, align=PP_ALIGN.CENTER) # ═══════════════════════════════════════════════════════════════ # SLIDE 9 — CSF & ELECTRODIAGNOSIS # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Investigations — CSF & Electrodiagnostics", "Harrison's, Chapter 458") footer(slide) # CSF box rect(slide, Inches(0.4), Inches(1.35), Inches(5.9), Inches(5.75), WHITE) rect(slide, Inches(0.4), Inches(1.35), Inches(5.9), Inches(0.48), ACCENT_TEAL) textbox(slide, Inches(0.55), Inches(1.4), Inches(5.6), Inches(0.38), "CEREBROSPINAL FLUID (CSF)", size=14, bold=True, color=WHITE) tb = slide.shapes.add_textbox(Inches(0.55), Inches(1.92), Inches(5.65), Inches(5.0)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, [ "HALLMARK: Cytoalbuminologic dissociation", " • ↑ Protein (above lab normal)", " • WBC < 10 cells/μL (or <50 for Level 1 Dx)", "", "CAVEAT — Normal CSF does NOT exclude GBS:", " • 85% of patients have normal CSF within first 2 days", " • Protein rises progressively after week 1", " • Repeat LP after 7–10 days if initially normal", "", "CSF PLEOCYTOSIS — Consider alternatives:", " • HIV-related polyradiculopathy", " • CMV polyradiculopathy (in immunocompromised)", " • Lyme neuroborreliosis", " • Viral meningoencephalitis", " • Sarcoidosis", ], size=12.5) # EDx box rect(slide, Inches(6.65), Inches(1.35), Inches(6.3), Inches(5.75), WHITE) rect(slide, Inches(6.65), Inches(1.35), Inches(6.3), Inches(0.48), MID_BLUE) textbox(slide, Inches(6.8), Inches(1.4), Inches(6.0), Inches(0.38), "ELECTRODIAGNOSTICS (NCS/EMG)", size=14, bold=True, color=WHITE) # Table header hdr_y = Inches(1.92) rect(slide, Inches(6.7), hdr_y, Inches(6.2), Inches(0.35), DEEP_BLUE) textbox(slide, Inches(6.75), hdr_y+Inches(0.03), Inches(2.5), Inches(0.28), "Finding", size=11, bold=True, color=WHITE) textbox(slide, Inches(9.3), hdr_y+Inches(0.03), Inches(3.5), Inches(0.28), "Mechanism", size=11, bold=True, color=WHITE) edx_rows = [ ("Prolonged distal motor\nlatencies", "Distal demyelination"), ("Slowed NCV\n(<75% LLN)", "Diffuse segmental\ndemyelination"), ("Conduction block", "Focal demyelination\nalong nerve"), ("Absent/prolonged\nF-waves & H-reflexes", "Proximal root involvement\n(MOST characteristic)"), ("Reduced CMAP\namplitudes", "Secondary axonal\nloss (severe cases)"), ("Normal SNAP (early)", "Sensory fibres less\naffected initially"), ] for j, (finding, mech) in enumerate(edx_rows): yy = Inches(2.3) + Inches(0.75) * j bg_c = LIGHT_BG if j % 2 == 0 else WHITE rect(slide, Inches(6.7), yy, Inches(6.2), Inches(0.72), bg_c) textbox(slide, Inches(6.78), yy+Inches(0.04), Inches(2.45), Inches(0.62), finding, size=11.5, color=DARK_TEXT) textbox(slide, Inches(9.3), yy+Inches(0.04), Inches(3.45), Inches(0.62), mech, size=11.5, color=MID_BLUE) textbox(slide, Inches(6.7), Inches(6.85), Inches(6.2), Inches(0.28), "Note: NCS may be normal in first few days — do not use to exclude GBS", size=11, italic=True, color=WARNING_RED) # ═══════════════════════════════════════════════════════════════ # SLIDE 10 — GBS SUBTYPES TABLE # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "GBS Subtypes & Variants", "Harrison's Table 458-1 & Figure 458-1") footer(slide) # Column headers cols_w = [Inches(2.8), Inches(3.3), Inches(2.3), Inches(2.4), Inches(2.1)] col_x = [Inches(0.35)] for cw in cols_w[:-1]: col_x.append(col_x[-1] + cw + Inches(0.05)) col_names = ["Subtype", "Key Features", "EDx Pattern", "Antibodies", "Geography/Notes"] # Header row for k, (cx, cw, cn) in enumerate(zip(col_x, cols_w, col_names)): rect(slide, cx, Inches(1.35), cw, Inches(0.45), DEEP_BLUE) textbox(slide, cx+Inches(0.06), Inches(1.38), cw-Inches(0.1), Inches(0.38), cn, size=12, bold=True, color=WHITE) rows_data = [ ("AIDP", "Adults > children\n90% of GBS in West\nRecovery rapid", "Demyelinating\n(slow NCV, conduction block,\nabnormal F-waves)", "No clear pattern\nAnti-GM1 (<50%)", ACCENT_TEAL), ("AMAN", "Pure motor axonal\nMost common in Asia\nChildren + young adults\nC. jejuni epidemic", "Axonal — motor only\nReduced CMAP\nNormal SNAP", "GM1, GD1a, GM1b\nGalNAc-GD1a\n(IgG polyclonal)", MID_BLUE), ("AMSAN", "Motor + sensory axonal\nSevere, rapid onset\nPoor prognosis", "Absent CMAP + SNAP\nNo demyelination", "GM1, GD1a\n(IgG polyclonal)", WARNING_RED), ("Miller Fisher\nSyndrome (MFS)", "Ophthalmoplegia + Ataxia + Areflexia\nNO limb weakness\n6% in West; 18% in Taiwan", "Sensory axonal\nNormal motor NCS\nNormal EMG", "GQ1b IgG >90%\n(cross-reacts GT1a)", AMBER), ("Pharyngeal-\nCervical-Brachial", "Bulbar + neck + arm weakness\nLocalized AMAN or\nextensive MFS form", "Variable", "GT1a > GQ1b > GD1a", RGBColor(0x6A, 0x0D, 0x83)), ] rh = Inches(1.1) for ri, (subtype, feat, edx, ab, col) in enumerate(rows_data): ry = Inches(1.85) + rh * ri bg_c = LIGHT_BG if ri % 2 == 0 else WHITE for k, (cx, cw) in enumerate(zip(col_x, cols_w)): rect(slide, cx, ry, cw, rh, bg_c) # Subtype with colored left border rect(slide, col_x[0], ry, Inches(0.09), rh, col) textbox(slide, col_x[0]+Inches(0.12), ry+Inches(0.05), cols_w[0]-Inches(0.2), rh-Inches(0.1), subtype, size=12, bold=True, color=col) textbox(slide, col_x[1]+Inches(0.06), ry+Inches(0.05), cols_w[1]-Inches(0.1), rh-Inches(0.1), feat, size=11, color=DARK_TEXT) textbox(slide, col_x[2]+Inches(0.06), ry+Inches(0.05), cols_w[2]-Inches(0.1), rh-Inches(0.1), edx, size=11, color=DARK_TEXT) textbox(slide, col_x[3]+Inches(0.06), ry+Inches(0.05), cols_w[3]-Inches(0.1), rh-Inches(0.1), ab, size=11, color=DARK_TEXT) # ═══════════════════════════════════════════════════════════════ # SLIDE 11 — TREATMENT # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, LIGHT_BG) header_bar(slide, "Treatment of GBS", "Harrison's, pp. 3663–3664") footer(slide) # Urgency quote rect(slide, Inches(0.4), Inches(1.35), Inches(12.5), Inches(0.85), DEEP_BLUE) textbox(slide, Inches(0.55), Inches(1.42), Inches(12), Inches(0.7), '"Treatment should be initiated as soon after diagnosis as possible. Each day counts; ~2 weeks after first motor symptoms, it is not known whether immunotherapy is still effective." — Harrison\'s 22E', size=13, color=WHITE, italic=True, wrap=True) # Treatment options tx_items = [ ("IVIg\n(First-Line Choice)", ACCENT_TEAL, ["2 g/kg total over 5 daily infusions", "Chosen first: ease of use + safety record", "Mechanism: GBS autoantibodies neutralized", "by anti-idiotypic antibodies in IVIg", "Equal efficacy to plasmapheresis"]), ("Plasmapheresis\n(PLEX)", MID_BLUE, ["Equally effective as IVIg", "Removes circulating autoantibodies", "Choice depends on patient comorbidities", "and availability", "Combine IVIg + PLEX: no added benefit"]), ("Corticosteroids", WARNING_RED, ["NOT INDICATED in GBS", "Do not improve outcomes", "May actually delay recovery", "(In contrast, steroids ARE used in CIDP)", ""]), ("Supportive Care", AMBER, ["Respiratory monitoring: FVC + NIF", "Cardiac telemetry (autonomic instability)", "DVT prophylaxis", "Pain management (gabapentinoids)", "Early physiotherapy"]), ] for i, (title, col, items) in enumerate(tx_items): x = Inches(0.35 + i * 3.25) rect(slide, x, Inches(2.35), Inches(3.05), Inches(4.7), WHITE) rect(slide, x, Inches(2.35), Inches(3.05), Inches(0.6), col) textbox(slide, x+Inches(0.1), Inches(2.4), Inches(2.85), Inches(0.52), title, size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER) tb = slide.shapes.add_textbox(x+Inches(0.12), Inches(3.0), Inches(2.82), Inches(3.85)) tf = tb.text_frame; tf.word_wrap = True add_bullet_lines(tf, items, size=12.5) # Prognosis bar rect(slide, Inches(0.4), Inches(7.06), Inches(12.5), Inches(0.36), MID_BLUE) textbox(slide, Inches(0.5), Inches(7.09), Inches(12.2), Inches(0.28), "PROGNOSIS: 80% good recovery | Nadir reached ≤4 weeks | Mortality 1–5% (was 33% before ventilatory support) | ~20% retain residual disability at 1 year", size=11, bold=True, color=WHITE, align=PP_ALIGN.CENTER) # ═══════════════════════════════════════════════════════════════ # SLIDE 12 — SUMMARY / TAKE-HOME # ═══════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) bg(slide, DEEP_BLUE) rect(slide, 0, Inches(1.0), W, Inches(0.08), ACCENT_TEAL) rect(slide, 0, Inches(6.4), W, Inches(0.08), ACCENT_TEAL) textbox(slide, Inches(0.5), Inches(0.18), Inches(12), Inches(0.75), "GBS / AIDP — Key Take-Home Points", size=28, bold=True, color=WHITE, align=PP_ALIGN.CENTER) takeaways = [ ("RECOGNIZE", ACCENT_TEAL, "Ascending symmetric areflexic weakness following GI/respiratory infection is GBS until proven otherwise"), ("LOCALIZE", MID_BLUE, "Peripheral polyradiculoneuropathy; most injury at spinal nerve roots — explains CSF protein rise"), ("MECHANISM", RGBColor(0x00, 0xBF, 0xBF), "Molecular mimicry → autoantibodies/T cells attack peripheral myelin (AIDP) or axolemma at nodes of Ranvier (AMAN)"), ("INVESTIGATE", AMBER, "MRI spine first (exclude cord), then CSF (cytoalbuminous dissociation), NCS/EMG (demyelinating pattern), respiratory function"), ("TREAT URGENTLY", WARNING_RED, "IVIg 2 g/kg or PLEX — start immediately, not after plateau. Every day matters. Monitor breathing (FVC, NIF, count-to-20)"), ("PROGNOSIS", RGBColor(0x27, 0xAE, 0x60), "80% full or near-full recovery; plateau always ≤4 weeks; 1–5% mortality with modern ICU care"), ] for i, (label, col, text) in enumerate(takeaways): y = Inches(1.2) + Inches(0.85) * i rect(slide, Inches(0.4), y, Inches(1.8), Inches(0.72), col) textbox(slide, Inches(0.42), y+Inches(0.12), Inches(1.76), Inches(0.48), label, size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER) rect(slide, Inches(2.25), y, Inches(10.7), Inches(0.72), RGBColor(0x16, 0x37, 0x6B)) textbox(slide, Inches(2.38), y+Inches(0.1), Inches(10.4), Inches(0.52), text, size=13, color=WHITE, wrap=True) textbox(slide, Inches(0.5), Inches(6.55), Inches(12), Inches(0.35), "Source: Harrison's Principles of Internal Medicine, 22nd Edition (2025) — Chapter 458", size=11, color=SOFT_GRAY, align=PP_ALIGN.CENTER, italic=True) # ── SAVE ────────────────────────────────────────────────────── out_path = "/tmp/workspace/gbs-presentation/GBS_Harrisons_22E.pptx" buf = BytesIO() prs.save(buf) with open(out_path, "wb") as f: f.write(buf.getvalue()) print(f"Saved: {out_path}") PYEOF echo "Script written"
presentation slide based on this information
ls /tmp/workspace/gbs-presentation/ 2>/dev/null && echo "EXISTS"
cd /tmp/workspace/gbs-presentation && python build_pptx.py 2>&1
python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/gbs-presentation/GBS_Harrisons_22E.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t and len(t) > 3: print(f' Slide {i}: {t[:60]}') break "
GBS Harrisons 22E
Presentation · PPTX
| # | Slide Title |
|---|---|
| 1 | Title Slide - Case introduction + scope |
| 2 | Clinical Case - 38-yr male, presenting features, immediate concerns |
| 3 | Differential Diagnosis - 3-tier table (GBS → Cord → Botulism/Tick/CIDP → AIP/MG/toxins) |
| 4 | Definition & Epidemiology - Stat boxes, antecedent triggers (Harrison's list) |
| 5 | Immunopathogenesis - Molecular mimicry 5-step flow, C. jejuni mechanism, ganglioside antibody table |
| 6 | AIDP vs AMAN Pathology - Side-by-side: Schwann cell attack vs. nodal axolemma attack |
| 7 | Clinical Features & Timeline - Phase timeline bar + motor/sensory/autonomic columns |
| 8 | Harrison's 3-Level Diagnostic Criteria - Level 1/2/3 case definitions |
| 9 | CSF & Electrodiagnostics - Cytoalbuminous dissociation, NCS/EMG findings table |
| 10 | GBS Subtypes Table - AIDP / AMAN / AMSAN / MFS / PCB with antibodies |
| 11 | Treatment - IVIg vs PLEX vs steroids (not indicated) + supportive care + prognosis bar |
| 12 | Summary / Take-Home Points - 6 key messages on dark background |
Add images of GBS pathology (demyelination, complement deposition) to slides 5–6
GBS Guillain Barre syndrome demyelination peripheral nerve histology macrophage
complement deposition myelin nerve axon membrane attack complex neuropathy
peripheral nerve demyelination segmental axon Schwann cell inflammatory infiltrate
acute inflammatory polyneuropathy nerve pathology lymphocyte macrophage
https://cdn.orris.care/cdss_images/91cdad88bd36645e2dddfae706f37616dcdf5eb9513c5226c776a5b1d25d141e.pnghttps://cdn.orris.care/cdss_images/e68a651768cff45a2ee44c80005430f2b55e532f1971781685bff2263a7e5a14.pnghttps://cdn.orris.care/cdss_images/d4de1e8f156729b71626ad314819086d3246d65d48ac4564f8a5630088b982d0.pngpython /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/91cdad88bd36645e2dddfae706f37616dcdf5eb9513c5226c776a5b1d25d141e.png" \ "https://cdn.orris.care/cdss_images/e68a651768cff45a2ee44c80005430f2b55e532f1971781685bff2263a7e5a14.png" \ "https://cdn.orris.care/cdss_images/d4de1e8f156729b71626ad314819086d3246d65d48ac4564f8a5630088b982d0.png" \ 2>&1 | python -c " import sys, json data = json.load(sys.stdin) for item in data: ok = 'OK' if item['base64'] else 'FAIL' b64len = len(item['base64']) if item['base64'] else 0 print(ok, b64len, item['url'][-40:]) "
cat > /tmp/workspace/gbs-presentation/add_images.py << 'PYEOF' """ Add pathology images to slides 5 (Immunopathogenesis) and 6 (AIDP vs AMAN) of GBS_Harrisons_22E.pptx. Images used: img_harrisons_mech → Harrison's Fig 458-2: AIDP panel A (MAC on Schwann) + AMAN panel B (nodal axolemma) img_ganglioside → Harrison's Fig 458-1: GBS subtypes / ganglioside antibody structures img_adams_victor → Adams & Victor Fig 43-3: A-D cellular events in AIDP (lymphocyte → demyelination → axonal death) """ import json, subprocess, base64 from io import BytesIO from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN PPTX_IN = "/tmp/workspace/gbs-presentation/GBS_Harrisons_22E.pptx" PPTX_OUT = "/tmp/workspace/gbs-presentation/GBS_Harrisons_22E_v2.pptx" URLs = [ "https://cdn.orris.care/cdss_images/91cdad88bd36645e2dddfae706f37616dcdf5eb9513c5226c776a5b1d25d141e.png", # 0 Harrison's Fig 458-2 AIDP/AMAN mech "https://cdn.orris.care/cdss_images/e68a651768cff45a2ee44c80005430f2b55e532f1971781685bff2263a7e5a14.png", # 1 Harrison's Fig 458-1 subtypes "https://cdn.orris.care/cdss_images/d4de1e8f156729b71626ad314819086d3246d65d48ac4564f8a5630088b982d0.png", # 2 Adams&Victor A-D diagram ] raw_json = subprocess.check_output(["python", "/tmp/skills/shared/scripts/fetch_images.py"] + URLs) imgs = json.loads(raw_json) def get_img_stream(idx): b64 = imgs[idx]["base64"] # strip data:image/...;base64, prefix if present if "," in b64: b64 = b64.split(",", 1)[1] return BytesIO(base64.b64decode(b64)) # ── helpers ───────────────────────────────────────────────────────────────── DEEP_BLUE = RGBColor(0x0D, 0x2B, 0x55) ACCENT_TEAL = RGBColor(0x00, 0x8B, 0x8B) MID_BLUE = RGBColor(0x1A, 0x53, 0x8B) WHITE = RGBColor(0xFF, 0xFF, 0xFF) SOFT_GRAY = RGBColor(0xCC, 0xD6, 0xE8) LIGHT_BG = RGBColor(0xF0, 0xF6, 0xFF) def caption_box(slide, x, y, w, h, text, col=MID_BLUE): sp = slide.shapes.add_shape(1, x, y, w, h) sp.fill.solid(); sp.fill.fore_color.rgb = col sp.line.fill.background() tb = sp.text_frame; tb.word_wrap = True tb.margin_left = Pt(4); tb.margin_right = Pt(4) tb.margin_top = Pt(3); tb.margin_bottom = Pt(3) p = tb.paragraphs[0]; p.alignment = PP_ALIGN.CENTER run = p.add_run(); run.text = text run.font.size = Pt(10); run.font.bold = False run.font.color.rgb = WHITE; run.font.name = "Calibri" run.font.italic = True def white_frame(slide, x, y, w, h, radius_pts=4): """Thin white border box behind image for clean look.""" sp = slide.shapes.add_shape(1, x - Inches(0.05), y - Inches(0.05), w + Inches(0.10), h + Inches(0.10)) sp.fill.solid(); sp.fill.fore_color.rgb = WHITE sp.line.color.rgb = SOFT_GRAY; sp.line.width = Pt(0.75) # ── Load presentation ──────────────────────────────────────────────────────── prs = Presentation(PPTX_IN) W = prs.slide_width H = prs.slide_height # ════════════════════════════════════════════════════════════════════════════ # SLIDE 5 (index 4) — Immunopathogenesis: Molecular Mimicry # Add Harrison's Fig 458-2 (AIDP/AMAN mechanism) to the RIGHT side, # and compress the left content slightly to make room. # ════════════════════════════════════════════════════════════════════════════ slide5 = prs.slides[4] # Harrison's Fig 458-2 (AIDP panel A + AMAN panel B) # Place in bottom-right area: x=6.9", y=2.45", w=6.1", h=3.4" img_stream_mech = get_img_stream(0) white_frame(slide5, Inches(6.9), Inches(2.45), Inches(6.1), Inches(3.4)) slide5.shapes.add_picture(img_stream_mech, Inches(6.9), Inches(2.45), width=Inches(6.1), height=Inches(3.4)) caption_box(slide5, Inches(6.9), Inches(5.88), Inches(6.1), Inches(0.42), "Harrison's Fig. 458-2 — AIDP (Panel A): MAC on Schwann cell → vesicular demyelination | " "AMAN (Panel B): IgG/complement at nodes of Ranvier → Nav channel loss → conduction failure", col=DEEP_BLUE) # Harrison's Fig 458-1 (ganglioside subtypes/antibody structures) — small inset bottom-right # Place over the existing ganglioside table area but ABOVE it as a visual img_stream_gs = get_img_stream(1) white_frame(slide5, Inches(6.9), Inches(6.35), Inches(3.1), Inches(0.82)) slide5.shapes.add_picture(img_stream_gs, Inches(6.9), Inches(6.35), width=Inches(3.1), height=Inches(0.82)) # Small label caption_box(slide5, Inches(10.05), Inches(6.35), Inches(2.9), Inches(0.82), "Harrison's Fig. 458-1\nGBS subtypes &\nganglioside antibodies", col=MID_BLUE) # ════════════════════════════════════════════════════════════════════════════ # SLIDE 6 (index 5) — Pathological Mechanisms: AIDP vs AMAN # Add Adams & Victor Fig 43-3 (A→D cellular events) in the center bottom area # ════════════════════════════════════════════════════════════════════════════ slide6 = prs.slides[5] # Adams & Victor A-D stages image — wide strip across bottom # x=0.35", y=7.12" is footer; place image just above footer: y≈5.45" # Width=6.15" centered to span across the divider between the two columns img_stream_av = get_img_stream(2) white_frame(slide6, Inches(3.5), Inches(1.42), Inches(6.35), Inches(5.5)) slide6.shapes.add_picture(img_stream_av, Inches(3.5), Inches(1.42), width=Inches(6.35), height=Inches(5.5)) caption_box(slide6, Inches(3.5), Inches(6.95), Inches(6.35), Inches(0.32), "Adams & Victor Fig. 43-3 — Cellular events in AIDP: " "A: Lymphocyte adhesion (no damage) | B: Segmental demyelination | " "C: Axonal injury + PMN infiltrate | D: Proximal axonal death → no recovery", col=DEEP_BLUE) # ── Save ───────────────────────────────────────────────────────────────────── buf = BytesIO() prs.save(buf) with open(PPTX_OUT, "wb") as f: f.write(buf.getvalue()) print(f"Saved: {PPTX_OUT}") # Verify prs2 = Presentation(PPTX_OUT) print(f"Total slides: {len(prs2.slides)}") for si in [4, 5]: pic_count = sum(1 for s in prs2.slides[si].shapes if s.shape_type == 13) print(f" Slide {si+1}: {pic_count} picture(s)") PYEOF python /tmp/workspace/gbs-presentation/add_images.py 2>&1
ls -lh /tmp/workspace/gbs-presentation/GBS_Harrisons_22E_v2.pptx
GBS Harrisons 22E v2
Presentation · PPTX