Make a ppt on nmj anatomy and suchynilcholine

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

mkdir -p /tmp/workspace/nmj-ppt && ls /tmp/workspace/nmj-ppt/

Writing File

~/nmj-ppt/build_ppt.py

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 json, subprocess, base64
from io import BytesIO

# ── Colour palette ──────────────────────────────────────────────
NAVY   = RGBColor(0x0D, 0x2B, 0x55)   # dark navy (titles / accents)
TEAL   = RGBColor(0x00, 0x7F, 0x8E)   # teal (subheadings / rule lines)
WHITE  = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT  = RGBColor(0xF0, 0xF4, 0xF8)   # very light blue-grey (body bg)
DARK   = RGBColor(0x1A, 0x1A, 0x2E)   # near-black body text
ACCENT = RGBColor(0xE8, 0x5D, 0x04)   # orange for highlights
GREY   = RGBColor(0x60, 0x60, 0x60)

# ── Helpers ─────────────────────────────────────────────────────
def prs_new():
    prs = Presentation()
    prs.slide_width  = Inches(13.333)
    prs.slide_height = Inches(7.5)
    return prs

def blank(prs):
    return prs.slides.add_slide(prs.slide_layouts[6])

def rect(slide, x, y, w, h, fill_color, alpha=None):
    shape = slide.shapes.add_shape(
        1,  # MSO_SHAPE_TYPE.RECTANGLE
        Inches(x), Inches(y), Inches(w), Inches(h)
    )
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_color
    shape.line.fill.background()
    return shape

def textbox(slide, x, y, w, h, text, size, bold=False, color=DARK,
            align=PP_ALIGN.LEFT, wrap=True, italic=False, font="Calibri"):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = wrap
    tf.margin_left  = Pt(0)
    tf.margin_right = Pt(0)
    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 tf

def add_bullet_slide(prs, title_txt, bullets, img_url=None):
    """Generic two-column or full-width bullet slide."""
    sl = blank(prs)
    # Header bar
    rect(sl, 0, 0, 13.333, 1.15, NAVY)
    textbox(sl, 0.4, 0.18, 12.5, 0.9, title_txt, 28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)

    # Body background
    rect(sl, 0, 1.15, 13.333, 6.35, LIGHT)

    content_w = 8.0 if img_url else 12.7
    # Bullet text
    tb = sl.shapes.add_textbox(Inches(0.4), Inches(1.35), Inches(content_w), Inches(5.8))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left   = Pt(4)
    tf.margin_top    = Pt(4)
    tf.margin_bottom = Pt(4)

    for i, (bullet, sub) in enumerate(bullets):
        p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
        p.space_before = Pt(6)
        r = p.add_run()
        r.text = bullet
        r.font.name  = "Calibri"
        r.font.size  = Pt(17)
        r.font.bold  = True
        r.font.color.rgb = TEAL
        if sub:
            p2 = tf.add_paragraph()
            p2.level = 1
            p2.space_before = Pt(2)
            r2 = p2.add_run()
            r2.text = sub
            r2.font.name  = "Calibri"
            r2.font.size  = Pt(14)
            r2.font.color.rgb = DARK

    # Optional image
    if img_url:
        try:
            result = json.loads(subprocess.check_output(
                ["python", "/tmp/skills/shared/scripts/fetch_images.py", img_url],
                timeout=30
            ))
            if result and result[0].get("base64"):
                raw = base64.b64decode(result[0]["base64"].split(",", 1)[-1])
                buf = BytesIO(raw)
                sl.shapes.add_picture(buf, Inches(8.7), Inches(1.3), width=Inches(4.3))
        except Exception as e:
            print(f"Image fetch failed: {e}")

    return sl

def add_divider(prs, section_num, section_title, subtitle=""):
    sl = blank(prs)
    rect(sl, 0, 0, 13.333, 7.5, NAVY)
    rect(sl, 0, 3.3, 13.333, 0.08, TEAL)
    textbox(sl, 1, 1.5, 11, 1.2, f"Section {section_num}", 22, italic=True, color=TEAL, align=PP_ALIGN.CENTER)
    textbox(sl, 0.5, 2.5, 12.3, 1.5, section_title, 42, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
    if subtitle:
        textbox(sl, 0.5, 4.3, 12.3, 1.0, subtitle, 20, italic=True, color=RGBColor(0xCC,0xE5,0xFF), align=PP_ALIGN.CENTER)
    return sl

# ════════════════════════════════════════════════════════════════
prs = prs_new()

# ── SLIDE 1: Title ───────────────────────────────────────────────
sl = blank(prs)
rect(sl, 0, 0, 13.333, 7.5, NAVY)
# Decorative teal bar
rect(sl, 0, 5.5, 13.333, 0.12, TEAL)
rect(sl, 0, 5.62, 13.333, 1.88, RGBColor(0x07, 0x1A, 0x3E))

textbox(sl, 0.7, 0.6, 12, 1.0,
        "NEUROMUSCULAR JUNCTION", 18, bold=False, color=TEAL, align=PP_ALIGN.CENTER)
textbox(sl, 0.5, 1.4, 12.3, 2.2,
        "Anatomy & Succinylcholine", 52, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font="Calibri")
textbox(sl, 0.5, 3.55, 12.3, 0.9,
        "Structure · Transmission · Pharmacology · Clinical Considerations", 16,
        italic=True, color=RGBColor(0xCC,0xE5,0xFF), align=PP_ALIGN.CENTER)
textbox(sl, 0.5, 5.7, 12.3, 0.6,
        "Sources: Miller's Anesthesia 10e | Ganong's Physiology 26e | Morgan & Mikhail 7e | Barash 9e",
        11, color=RGBColor(0x88,0xAA,0xCC), align=PP_ALIGN.CENTER)

# ── SECTION DIVIDER 1: NMJ Anatomy ──────────────────────────────
add_divider(prs, "01", "NMJ Anatomy & Structure",
            "The specialised synapse between motor nerve and skeletal muscle")

# ── SLIDE: Overview of NMJ ──────────────────────────────────────
add_bullet_slide(prs, "What is the Neuromuscular Junction?",
    [
        ("Definition",
         "Specialised area where a motor nerve terminates on a skeletal muscle fibre — the point of conversion from electrical to chemical signal."),
        ("Also called",
         "Motor end-plate synapse | End-plate region"),
        ("Key Players",
         "Pre-synaptic motor nerve terminal   •   Synaptic cleft (50–70 nm)   •   Post-junctional muscle membrane (motor end-plate)"),
        ("Clinical Relevance",
         "Site of action for neuromuscular blocking drugs (NDMRs & succinylcholine), myasthenia gravis, botulinum toxin, organophosphates"),
    ],
    img_url="https://cdn.orris.care/cdss_images/f7765a6a6a1ee814034ac1f733a53e479a378ee2011e8bc9a6082fd4df5a1f6e.png"
)

# ── SLIDE: Pre-synaptic Terminal ────────────────────────────────
add_bullet_slide(prs, "Pre-synaptic Motor Nerve Terminal",
    [
        ("Axonal Transport",
         "Ion channels, enzymes, ACh-synthesis proteins, and vesicle components are manufactured in the motor neuron cell body and transported down the axon."),
        ("ACh Synthesis",
         "Choline (from ECF via specific transporter) + Acetyl-CoA (from mitochondria) → ACh via choline acetyltransferase (CAT)."),
        ("Vesicle Storage",
         "ACh is packaged into synaptic vesicles (~10,000 molecules/vesicle). Vesicles are docked at active zones by SNARE proteins (synaptobrevin/VAMP, syntaxin, SNAP-25)."),
        ("Calcium Channels (VGCC)",
         "P/Q-type voltage-gated Ca²⁺ channels are concentrated at active zones. Their antibody-mediated blockade causes Eaton-Lambert syndrome."),
        ("Potassium Channels",
         "Voltage-gated and Ca²⁺-activated K⁺ channels limit Ca²⁺ entry and control re-polarisation."),
    ]
)

# ── SLIDE: Synaptic Cleft & AChE ───────────────────────────────
add_bullet_slide(prs, "Synaptic Cleft & Acetylcholinesterase",
    [
        ("Cleft dimensions",
         "50–70 nm wide. ACh must diffuse across this gap to reach post-junctional receptors."),
        ("Acetylcholinesterase (AChE)",
         "Resides within the cleft. Rapidly hydrolyses ACh → choline + acetic acid. Choline is recycled back into the nerve terminal."),
        ("Safety factor",
         "Only a fraction of released ACh needs to reach post-junctional receptors to trigger an end-plate potential — this is the 'safety factor' of neuromuscular transmission."),
        ("Pharmacological targets",
         "Neostigmine, pyridostigmine, edrophonium — all inhibit AChE, increasing ACh in the cleft → reversal of NDMR block. Organophosphates irreversibly inhibit AChE."),
    ]
)

# ── SLIDE: Post-junctional Membrane & nAChR ─────────────────────
add_bullet_slide(prs, "Post-junctional Nicotinic Acetylcholine Receptors (nAChR)",
    [
        ("Location",
         "Concentrated on the CRESTS of junctional folds of the motor end-plate. Mature receptors occupy ~0.1% of total muscle surface area."),
        ("Structure",
         "Pentameric ligand-gated ion channel. Two types:"
         ),
        ("Mature (adult) nAChR — α₂βδε",
         "ε subunit (think 'Elderly'). Shorter opening time, larger central pore, higher conductance. Predominates in normal adults (>90% of receptors)."),
        ("Immature (fetal) nAChR — α₂βδγ",
         "γ subunit. Opening time 10× longer, smaller pore. Spread throughout muscle. Resistant to NDMRs, SENSITIVE to depolarising drugs. Up-regulated after denervation/burns."),
        ("Activation",
         "Requires SIMULTANEOUS binding of 2 ACh molecules to both α subunits → channel opens → Na⁺ in, K⁺ out → end-plate potential (EPP) → muscle action potential."),
    ]
)

# ── SLIDE: Sequence of Events ───────────────────────────────────
add_bullet_slide(prs, "Sequence of Events at the NMJ",
    [
        ("1. Nerve impulse arrives",
         "Action potential propagates to motor nerve terminal → membrane depolarisation."),
        ("2. Ca²⁺ entry",
         "VGCCs open → Ca²⁺ influx into the nerve terminal."),
        ("3. ACh exocytosis",
         "Ca²⁺ triggers SNARE-mediated fusion of synaptic vesicles with the terminal membrane → quantal release of ACh."),
        ("4. ACh diffuses across cleft",
         "Binds to nAChRs on crests of junctional folds."),
        ("5. End-plate potential (EPP)",
         "Na⁺ influx depolarises end-plate → local EPP → propagation of muscle action potential → excitation-contraction coupling → muscle contraction."),
        ("6. Termination",
         "AChE hydrolyses ACh in cleft. Choline reuptake into nerve terminal. Ca²⁺ pumped out of nerve terminal."),
    ]
)

# ── SLIDE: Pre-synaptic Feedback ────────────────────────────────
add_bullet_slide(prs, "Pre-synaptic Feedback & 'Fade' Concept",
    [
        ("Pre-synaptic nAChR",
         "α₃β₂ receptors on the motor nerve terminal. Bind released ACh → positive feedback → mobilise vesicles to active zone to prepare for the next stimulus."),
        ("NDMRs block pre-synaptic nAChR",
         "→ Vesicle mobilisation fails with successive stimuli → progressively smaller muscle contractions (FADE on train-of-four / tetanus)."),
        ("Succinylcholine (depolarising) — NO pre-synaptic block",
         "Does not bind pre-synaptic α₃β₂ receptors → no fade on TOF; no post-tetanic potentiation."),
        ("Clinical Test",
         "TOF ratio <0.9 = residual blockade. Objective monitoring (acceleromyography) recommended. TOF ratio ≥0.9 indicates safe recovery."),
    ]
)

# ── SECTION DIVIDER 2: Succinylcholine ──────────────────────────
add_divider(prs, "02", "Succinylcholine",
            "The only depolarising neuromuscular blocking drug in clinical use")

# ── SLIDE: Structure & Overview ─────────────────────────────────
add_bullet_slide(prs, "Succinylcholine — Structure & Overview",
    [
        ("Also known as",
         "Suxamethonium. Only depolarising muscle relaxant in current clinical use."),
        ("Chemical structure",
         "Two acetylcholine molecules joined end-to-end. Quaternary ammonium compound — very low lipid solubility, small volume of distribution."),
        ("Onset",
         "30–60 seconds (rapid due to relative overdose administered and small Vd)."),
        ("Duration",
         "<10 minutes typically. Rapid offset due to diffusion away from NMJ as plasma levels fall."),
        ("Dose",
         "Intubating dose: 1–1.5 mg/kg IV. Pretreatment with NDMR requires 1.5–2 mg/kg."),
    ],
    img_url="https://cdn.orris.care/cdss_images/9e11df462231b91faa25c637eafaf1b3c3d6e459cc6b7f02d5fae8b74fa48e3b.png"
)

# ── SLIDE: Mechanism of Action ──────────────────────────────────
add_bullet_slide(prs, "Mechanism of Action",
    [
        ("Step 1 — Binding",
         "Succinylcholine binds to post-junctional nAChRs (same binding sites as ACh on α subunits) and opens the ion channel."),
        ("Step 2 — Phase I Block (Depolarising Block)",
         "Persistent depolarisation of end-plate. Initial fasciculations (unsynchronised muscle contractions). Then flaccid paralysis because the end-plate remains depolarised and the surrounding muscle membrane cannot be re-excited."),
        ("Step 3 — AChE does NOT hydrolyse succinylcholine",
         "Succinylcholine is broken down ONLY by plasma pseudocholinesterase (butyrylcholinesterase), NOT by AChE — hence it persists at the NMJ longer than ACh."),
        ("Phase II Block",
         "With prolonged or repeated exposure → block quality changes to RESEMBLE non-depolarising block (fade present, post-tetanic potentiation). Mechanism not fully elucidated."),
        ("No pre-synaptic block",
         "Does not bind α₃β₂ pre-synaptic receptors → TOF shows NO fade during phase I block."),
    ]
)

# ── SLIDE: Metabolism ────────────────────────────────────────────
add_bullet_slide(prs, "Metabolism & Excretion",
    [
        ("Pseudocholinesterase (Butyrylcholinesterase)",
         "Produced in the liver. Hydrolyses succinylcholine → succinylmonocholine (weak activity) → succinic acid + choline (inactive). Most of the drug is metabolised BEFORE reaching the NMJ."),
        ("Prolonged block causes",
         "1. High doses / infusion   2. Hypothermia (slows enzyme kinetics)   3. Reduced pseudocholinesterase levels (hepatic disease, pregnancy, malnutrition, drugs)   4. Genetic variants of pseudocholinesterase"),
        ("Dibucaine number",
         "Dibucaine inhibits normal pseudocholinesterase by ~80%, heterozygous variant by ~60%, homozygous abnormal by ~20%. Low dibucaine number → prolonged block."),
        ("Renal excretion",
         "Minor — succinylmonocholine is renally excreted. Prolonged block can occur in renal failure."),
    ]
)

# ── SLIDE: Side Effects ──────────────────────────────────────────
add_bullet_slide(prs, "Side Effects of Succinylcholine",
    [
        ("Fasciculations",
         "Visible motor unit contractions at onset. Prevented by pre-treatment with small NDMR dose (but requires larger succinylcholine dose of 1.5 mg/kg)."),
        ("Hyperkalemia (MOST DANGEROUS)",
         "Normal: K⁺ rises ~0.5 mEq/L. Pathological: massive K⁺ release from immature/extrajunctional nAChRs → cardiac arrest. Risk conditions: burns, spinal cord injury, prolonged immobilisation, denervation, severe sepsis, rhabdomyolysis, major trauma. Risk peaks 7–10 days post-injury."),
        ("Post-operative myalgia",
         "Due to unsynchronised muscle contractions. NSAIDS most effective prophylaxis (NNT ~2.5). Lidocaine 1–1.5 mg/kg also effective."),
        ("Raised intraocular pressure (IOP)",
         "↑IOP up to 15 mmHg, transient (5 min). Use with caution in penetrating eye injury; ensure adequate anaesthesia."),
        ("Raised intracranial pressure (ICP)",
         "Via muscle-spindle afferent activation → EEG arousal → ↑CBF. Prevented by defasciculation or deep anaesthesia."),
        ("Bradycardia / arrhythmias",
         "Stimulation of muscarinic receptors. More common with repeat doses in children. Atropine pre-treatment recommended in paediatrics."),
    ]
)

# ── SLIDE: Contraindications ────────────────────────────────────
add_bullet_slide(prs, "Contraindications to Succinylcholine",
    [
        ("ABSOLUTE",
         "Known/suspected hyperkalaemia   •   Burns (>24 h post-injury)   •   Spinal cord injury   •   Major denervation   •   Myopathies (Duchenne, Becker)   •   Malignant hyperthermia susceptibility   •   Prolonged immobilisation   •   Hyperkalaemic periodic paralysis"),
        ("RELATIVE / CAUTION",
         "Penetrating eye injury   •   Raised ICP (ensure deep anaesthesia + defasciculation)   •   Pseudocholinesterase deficiency   •   Renal failure with K⁺ >5.5 mEq/L"),
        ("Hyperkalemia risk timeline",
         "Minimal in first 48 h after acute injury. Risk peaks at 7–10 days. May persist for months with chronic denervation."),
        ("Safe use in penetrating eye injury?",
         "Modern view: NOT absolutely contraindicated. Coughing/Valsalva during intubation causes greater IOP rise than succinylcholine itself."),
    ]
)

# ── SLIDE: Clinical Uses ─────────────────────────────────────────
add_bullet_slide(prs, "Clinical Uses",
    [
        ("Rapid Sequence Induction (RSI)",
         "Gold standard for securing the airway when aspiration risk is high (full stomach, trauma, emergency). Provides fastest onset of intubating conditions."),
        ("Electroconvulsive Therapy (ECT)",
         "Modified ECT — succinylcholine attenuates motor manifestations of the electrically induced seizure."),
        ("Laryngospasm treatment",
         "Low-dose succinylcholine 0.1–0.2 mg/kg IV (or 4 mg/kg IM if no IV access) relieves laryngospasm."),
        ("Fibreoptic / difficult airway",
         "Short duration allows rapid return of spontaneous breathing if intubation fails."),
        ("Advantage over rocuronium",
         "Historically faster, shorter-acting — but sugammadex reversal of high-dose rocuronium (1.2 mg/kg) now achieves comparable speed of reversal."),
    ]
)

# ── SLIDE: Comparison NDMR vs SCh ──────────────────────────────
add_bullet_slide(prs, "Depolarising vs Non-Depolarising Block — Quick Comparison",
    [
        ("Feature | Depolarising (Succinylcholine) | Non-Depolarising (NDMRs)",
         None),
        ("Mechanism",
         "Persistent agonist at nAChR → sustained depolarisation   vs   Competitive antagonist at nAChR"),
        ("Onset of fasciculations",
         "Yes (Phase I)   vs   No"),
        ("Fade on TOF",
         "NO (Phase I)   vs   YES"),
        ("Post-tetanic potentiation",
         "NO (Phase I)   vs   YES"),
        ("Reversed by neostigmine?",
         "NO (worsens Phase I block)   vs   YES"),
        ("Reversed by sugammadex?",
         "NO   vs   YES (aminosteroids: rocuronium, vecuronium)"),
    ]
)

# ── SLIDE: Monitoring NMJ Block ─────────────────────────────────
add_bullet_slide(prs, "Monitoring Neuromuscular Blockade",
    [
        ("Train-of-Four (TOF)",
         "4 supramaximal stimuli at 2 Hz. TOF ratio = T4/T1. ≥0.9 = safe recovery from NDMR block. With succinylcholine Phase I — no fade, TOF ratio ~1."),
        ("Tetanus",
         "50 Hz continuous stimulation. Fade = NDMR feature. Sustained = depolarising (Phase I) feature."),
        ("Post-Tetanic Count (PTC)",
         "Used during deep block to predict return of spontaneous recovery."),
        ("Double Burst Stimulation (DBS)",
         "Two short bursts. Detects residual block more sensitively than manual TOF."),
        ("Objective monitoring",
         "2018 consensus: acceleromyography (or equivalent) + documented TOF ≥0.9 is the only reliable indicator of safe NMJ recovery."),
    ]
)

# ── SLIDE: Summary ──────────────────────────────────────────────
sl = blank(prs)
rect(sl, 0, 0, 13.333, 7.5, NAVY)
rect(sl, 0.5, 0.9, 12.3, 0.08, TEAL)
textbox(sl, 0.5, 0.2, 12.3, 0.75, "Summary", 32, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

summary_points = [
    ("NMJ", "Pre-synaptic nerve terminal → synaptic cleft (50–70 nm, AChE) → post-junctional end-plate (nAChRs)"),
    ("Transmission", "AP → Ca²⁺ entry → ACh exocytosis → nAChR binding → EPP → muscle AP"),
    ("nAChR subtypes", "Mature α₂βδε (adult, most common) vs Immature α₂βδγ (fetal/denervated, up-regulated post-injury)"),
    ("Succinylcholine", "Only depolarising NMB. Two ACh molecules joined. Onset 30–60 s. Duration <10 min."),
    ("Mechanism", "Phase I: persistent nAChR activation → fasciculations → flaccid paralysis (no fade). Phase II resembles NDMR block."),
    ("Metabolism", "Plasma pseudocholinesterase. Prolonged by genetic variants, hepatic disease, hypothermia."),
    ("Dangers", "Hyperkalemia (burns, SCI, denervation), malignant hyperthermia trigger, raised IOP/ICP, bradycardia"),
    ("Reversal", "NOT reversed by neostigmine or sugammadex. Offset by diffusion + pseudocholinesterase metabolism."),
]

tb = sl.shapes.add_textbox(Inches(0.4), Inches(1.15), Inches(12.5), Inches(6.1))
tf = tb.text_frame
tf.word_wrap = True
for i, (key, val) in enumerate(summary_points):
    p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
    r1 = p.add_run()
    r1.text = f"{key}: "
    r1.font.bold  = True
    r1.font.color.rgb = TEAL
    r1.font.size  = Pt(14)
    r1.font.name  = "Calibri"
    r2 = p.add_run()
    r2.text = val
    r2.font.color.rgb = WHITE
    r2.font.size  = Pt(14)
    r2.font.name  = "Calibri"
    p.space_before = Pt(5)

out_path = "/tmp/workspace/nmj-ppt/NMJ_Succinylcholine.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
Running Command

cd /tmp/workspace/nmj-ppt && python build_ppt.py 2>&1

Running Command

cd /tmp/workspace/nmj-ppt && curl -s -o nmj_diagram.png "https://cdn.orris.care/cdss_images/f7765a6a6a1ee814034ac1f733a53e479a378ee2011e8bc9a6082fd4df5a1f6e.png" && curl -s -o drug_structures.png "https://cdn.orris.care/cdss_images/9e11df462231b91faa25c637eafaf1b3c3d6e459cc6b7f02d5fae8b74fa48e3b.png" && ls -lh *.png 2>&1

Running Command

cd /tmp/workspace/nmj-ppt && python3 - <<'EOF' from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RGBColor prs = Presentation("NMJ_Succinylcholine.pptx") # Slide 3 = "What is the NMJ?" (index 2) — add NMJ diagram image sl3 = prs.slides[2] sl3.shapes.add_picture("nmj_diagram.png", Inches(8.7), Inches(1.3), width=Inches(4.3)) # Slide 8 = "Succinylcholine — Structure & Overview" (index 7) — add drug structures image sl8 = prs.slides[7] sl8.shapes.add_picture("drug_structures.png", Inches(8.7), Inches(1.3), width=Inches(4.3)) prs.save("NMJ_Succinylcholine.pptx") print("Images added. Slides:", len(prs.slides)) EOF

Your presentation is ready! Here's what was built:

NMJ Succinylcholine

Presentation · PPTX


18 slides total, split into two sections:

Section 01 - NMJ Anatomy & Structure (7 slides)

  1. Title Slide - Navy/teal theme
  2. Section Divider - NMJ Anatomy
  3. What is the NMJ? - Definition, key players, clinical relevance (+ NMJ diagram image from Ganong's)
  4. Pre-synaptic Motor Nerve Terminal - Axonal transport, ACh synthesis (CAT enzyme), vesicle storage, SNARE proteins, VGCCs, Eaton-Lambert
  5. Synaptic Cleft & AChE - Cleft dimensions, AChE function, safety factor, pharmacological targets
  6. Post-junctional nAChRs - Mature (α₂βδε) vs Immature (α₂βδγ) subtypes, clinical significance
  7. Sequence of Events - 6-step transmission cascade
  8. Pre-synaptic Feedback & Fade - α₃β₂ pre-synaptic receptors, how NDMRs cause fade, TOF monitoring

Section 02 - Succinylcholine (9 slides)

  1. Section Divider - Succinylcholine
  2. Structure & Overview - Suxamethonium, dual ACh structure, onset/duration/dose (+ drug structure image)
  3. Mechanism of Action - Phase I block, fasciculations, Phase II block, no pre-synaptic effect
  4. Metabolism - Pseudocholinesterase, succinylmonocholine, dibucaine number, prolonged block causes
  5. Side Effects - Fasciculations, hyperkalemia (most dangerous), myalgia, raised IOP/ICP, bradycardia
  6. Contraindications - Absolute (burns, SCI, myopathies, MH) vs relative, K⁺ risk timeline
  7. Clinical Uses - RSI, ECT, laryngospasm, difficult airway, vs rocuronium/sugammadex
  8. Depolarising vs Non-Depolarising Comparison - TOF, fade, reversal, fasciculations
  9. Monitoring NMJ Block - TOF, tetanus, PTC, DBS, 2018 consensus on objective monitoring
  10. Summary Slide - All key points condensed on dark navy background
Sources: Miller's Anesthesia 10e, Ganong's Physiology 26e, Morgan & Mikhail 7e, Barash 9e.

Make a ppt on non depolarizing muscle relaxant Comprehensive and detailed from standard Anesthesia textbooks

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Writing File

~/nmj-ppt/build_ndmr.py

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from io import BytesIO

# ── Colour Palette ───────────────────────────────────────────────
NAVY    = RGBColor(0x0A, 0x29, 0x4A)
TEAL    = RGBColor(0x00, 0x8B, 0x8B)
WHITE   = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT   = RGBColor(0xF0, 0xF5, 0xFA)
DARK    = RGBColor(0x1A, 0x1A, 0x2E)
ACCENT  = RGBColor(0xE07B2A)
LGREY   = RGBColor(0xCC, 0xCC, 0xCC)
AMBER   = RGBColor(0xF5, 0xA6, 0x23)
RED     = RGBColor(0xCC, 0x22, 0x22)
GREEN   = RGBColor(0x22, 0x8B, 0x22)
STEEL   = RGBColor(0x2E, 0x5B, 0x8A)

W = 13.333
H = 7.5

def prs_new():
    prs = Presentation()
    prs.slide_width  = Inches(W)
    prs.slide_height = Inches(H)
    return prs

def blank(prs):
    return prs.slides.add_slide(prs.slide_layouts[6])

def rect(slide, x, y, w, h, color):
    s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    s.fill.solid()
    s.fill.fore_color.rgb = color
    s.line.fill.background()
    return s

def tb(slide, x, y, w, h, text, size, bold=False, color=DARK,
       align=PP_ALIGN.LEFT, wrap=True, italic=False, font="Calibri"):
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = wrap
    tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Pt(2)
    p = tf.paragraphs[0]
    p.alignment = align
    r = p.add_run()
    r.text = text
    r.font.name   = font
    r.font.size   = Pt(size)
    r.font.bold   = bold
    r.font.italic = italic
    r.font.color.rgb = color
    return tf

def header(slide, title, subtitle=""):
    rect(slide, 0, 0, W, 1.1, NAVY)
    rect(slide, 0, 1.1, W, 0.07, TEAL)
    tb(slide, 0.4, 0.1, 12.5, 0.85, title, 26, bold=True, color=WHITE)
    if subtitle:
        tb(slide, 0.4, 0.82, 12.5, 0.35, subtitle, 12, italic=True, color=TEAL)

def body_bg(slide):
    rect(slide, 0, 1.17, W, H - 1.17, LIGHT)

def bullets(slide, x, y, w, h, items, title_size=16, sub_size=13.5):
    """items = list of (title_str, sub_str_or_None)"""
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = True
    tf.margin_left = tf.margin_top = tf.margin_right = tf.margin_bottom = Pt(4)
    first = True
    for (title, sub) in items:
        p = tf.paragraphs[0] if first else tf.add_paragraph()
        first = False
        p.space_before = Pt(5)
        r = p.add_run()
        r.text = "▶  " + title
        r.font.name   = "Calibri"
        r.font.size   = Pt(title_size)
        r.font.bold   = True
        r.font.color.rgb = TEAL
        if sub:
            p2 = tf.add_paragraph()
            p2.level = 1
            p2.space_before = Pt(2)
            r2 = p2.add_run()
            r2.text = sub
            r2.font.name  = "Calibri"
            r2.font.size  = Pt(sub_size)
            r2.font.color.rgb = DARK
    return tf

def divider(prs, num, title, sub=""):
    sl = blank(prs)
    rect(sl, 0, 0, W, H, NAVY)
    rect(sl, 0, 3.25, W, 0.1, TEAL)
    tb(sl, 1, 1.3, 11, 0.9, f"Part  {num}", 20, italic=True, color=TEAL, align=PP_ALIGN.CENTER)
    tb(sl, 0.5, 2.3, 12.3, 1.5, title, 40, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
    if sub:
        tb(sl, 0.5, 4.3, 12.3, 0.9, sub, 18, italic=True,
           color=RGBColor(0xAA, 0xCC, 0xEE), align=PP_ALIGN.CENTER)

# ═══════════════════════════════════════════════════════════════
prs = prs_new()

# ──────────────────────────────────────────────────────────────
# SLIDE 1  — Title
# ──────────────────────────────────────────────────────────────
sl = blank(prs)
rect(sl, 0, 0, W, H, NAVY)
rect(sl, 0, 5.5, W, 0.12, TEAL)
rect(sl, 0, 5.62, W, 1.88, RGBColor(0x06, 0x18, 0x35))
tb(sl, 0.5, 0.5, 12.3, 0.8, "NEUROMUSCULAR PHARMACOLOGY", 16, color=TEAL,
   align=PP_ALIGN.CENTER)
tb(sl, 0.3, 1.2, 12.7, 2.0,
   "Non-Depolarizing Muscle Relaxants", 50, bold=True, color=WHITE,
   align=PP_ALIGN.CENTER)
tb(sl, 0.3, 3.1, 12.7, 0.9,
   "Classification  ·  Pharmacokinetics  ·  Individual Drugs  ·  Interactions  ·  Reversal  ·  Monitoring",
   15, italic=True, color=RGBColor(0xAA, 0xCC, 0xEE), align=PP_ALIGN.CENTER)
tb(sl, 0.3, 5.62, 12.7, 0.6,
   "Sources: Miller's Anesthesia 10e  |  Morgan & Mikhail 7e  |  Barash 9e  |  Katzung Pharmacology 16e",
   11, color=RGBColor(0x66, 0x88, 0xAA), align=PP_ALIGN.CENTER)

# ──────────────────────────────────────────────────────────────
# PART 1  — Classification & Mechanism
# ──────────────────────────────────────────────────────────────
divider(prs, "01", "Classification & Mechanism of Action",
        "How NDMRs differ from depolarising drugs")

# Slide 3 — Classification
sl = blank(prs)
header(sl, "Classification of Non-Depolarizing Muscle Relaxants")
body_bg(sl)
# Left column — chemical class
bullets(sl, 0.3, 1.25, 6.2, 5.9, [
    ("By Chemical Structure", None),
    ("Benzylisoquinoliniums",
     "Atracurium  •  Cisatracurium  •  Mivacurium  •  d-Tubocurarine (historical)  •  Doxacurium  •  Metocurine"),
    ("Aminosteroids",
     "Rocuronium  •  Vecuronium  •  Pancuronium  •  Pipecuronium  •  Rapacuronium (withdrawn)"),
    ("By Duration of Action", None),
    ("Ultra-short (<10 min)",
     "Mivacurium"),
    ("Short-acting (10–20 min)",
     "Rapacuronium (withdrawn)"),
    ("Intermediate (20–50 min)",
     "Rocuronium  •  Vecuronium  •  Atracurium  •  Cisatracurium"),
    ("Long-acting (>50 min)",
     "Pancuronium  •  d-Tubocurarine  •  Doxacurium  •  Pipecuronium"),
])
bullets(sl, 6.7, 1.25, 6.3, 5.9, [
    ("Key Principle", None),
    ("Competitive Antagonists",
     "NDMRs compete with ACh for the same binding sites on post-junctional nicotinic (α) subunits of nAChR — they do NOT activate the channel."),
    ("Require 2-subunit blockade",
     "Both α-subunits of the nAChR pentamer must be occupied to prevent channel opening."),
    ("Safety margin / ED95",
     "~70–80% receptor occupancy needed for clinical effect; ~90–95% for complete paralysis. This 'safety factor' explains why neuromuscular function appears normal until a large fraction of receptors are occupied."),
    ("Structural basis",
     "All NDMRs contain at least one (mono) or two (bis) quaternary ammonium groups that mimic the ammonium head of ACh."),
])

# Slide 4 — Mechanism
sl = blank(prs)
header(sl, "Mechanism of Action — Competitive Antagonism", "at the Post-Junctional nAChR")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.6, 5.9, [
    ("Post-junctional blockade",
     "NDMRs bind to α subunits of mature (α₂βδε) nAChRs at the motor end-plate without opening the ion channel → prevents ACh from depolarising the end-plate → muscle does NOT contract."),
    ("Pre-synaptic blockade — FADE",
     "NDMRs also block pre-junctional α₃β₂ receptors on the motor nerve terminal. These receptors normally act as a positive-feedback loop mobilising vesicles for the next stimulus. Blocking them → progressive decline in ACh release with repeated stimulation → characteristic FADE on Train-of-Four and Tetanus."),
    ("Concentration-dependent",
     "Higher concentrations of ACh (from neostigmine-mediated AChE inhibition) can displace the competitive antagonist → forms the basis for reversal."),
    ("Immature vs mature nAChR",
     "Immature/fetal nAChRs (α₂βδγ — upregulated in denervation, burns, immobilisation) are RESISTANT to NDMRs but SENSITIVE to depolarising drugs."),
    ("No effect on consciousness",
     "NDMRs do NOT cross the blood-brain barrier (quaternary ammonium, charged at physiologic pH). They do not produce anaesthesia, amnesia, or analgesia. AWARENESS during NDMR paralysis remains a critical patient safety concern."),
])

# ──────────────────────────────────────────────────────────────
# PART 2  — Pharmacokinetics & Pharmacodynamics
# ──────────────────────────────────────────────────────────────
divider(prs, "02", "Pharmacokinetics & Pharmacodynamics",
        "Onset, duration, elimination — organ-dependent vs organ-independent")

# Slide 6 — PK overview
sl = blank(prs)
header(sl, "Pharmacokinetics — General Principles")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Volume of Distribution (Vd)",
     "All NDMRs have a small Vd (~100–200 mL/kg). Highly ionised → cannot cross cell membranes easily. Primarily distributed in extracellular fluid. Larger Vd (e.g., burns, pregnancy, cardiac failure) → lower plasma concentration for same dose → apparent resistance."),
    ("Plasma Protein Binding",
     "Moderate binding to albumin and gamma-globulins. Hypoalbuminaemia → more free drug → enhanced effect."),
    ("Onset of action",
     "Related to concentration at the NMJ. Faster onset at higher doses (at the cost of prolonged duration). Rocuronium has the fastest onset among NDMRs (~60–90 s at 1.2 mg/kg)."),
    ("ED95",
     "The dose that produces 95% suppression of twitch height. Used as a reference unit. Intubating doses are typically 2–3 × ED95."),
    ("Context-sensitive offset",
     "Recovery time depends on dose, accumulation with infusion, and hepatic/renal function. Intermediate-acting drugs show less accumulation than long-acting drugs."),
    ("Potency — inverse relation to onset",
     "More potent drugs (lower ED95) have a slower onset because fewer molecules need to reach the NMJ — buffering by plasma and tissue delays equilibration (e.g., vecuronium slower than rocuronium at equipotent doses)."),
])

# Slide 7 — Elimination pathways
sl = blank(prs)
header(sl, "Elimination Pathways — Organ-Dependent vs Organ-Independent")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Hofmann Elimination", None),
    ("Drugs: Atracurium, Cisatracurium",
     "Non-enzymatic, spontaneous degradation at physiological pH and temperature. Independent of liver or kidney. Products: laudanosine + monoquaternary acrylate."),
    ("Laudanosine",
     "Tertiary amine metabolite of Hofmann elimination. CNS stimulant (raises MAC, may cause seizures in very high doses). Metabolised by liver; excreted in urine and bile. Clinically relevant only with hepatic failure or prolonged infusion."),
    ("Plasma esterase hydrolysis",
     "Mivacurium: hydrolysed by plasma pseudocholinesterase (similar to succinylcholine but slower). Atracurium: ~60% via Hofmann + ~40% via ester hydrolysis by non-specific esterases."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Renal Excretion", None),
    ("Primary: Pancuronium",
     "~80% excreted unchanged in urine. Prolonged in renal failure. 3-OH metabolite also active."),
    ("Hepatic Metabolism & Biliary", None),
    ("Primary: Vecuronium",
     "~50% biliary excretion. 3-desacetylvecuronium is an active metabolite (accumulates in ICU patients with renal failure → prolonged block)."),
    ("Rocuronium",
     "Primarily biliary excretion of unchanged drug. Minimal hepatic metabolism. Prolonged in hepatic failure. Small renal component."),
    ("Clinical Rule",
     "Patients with hepatic or renal failure → prefer benzylisoquinoliniums (Hofmann elimination). Avoid long-acting aminosteroids (pancuronium) in organ failure."),
])

# ──────────────────────────────────────────────────────────────
# PART 3 — Individual Drugs
# ──────────────────────────────────────────────────────────────
divider(prs, "03", "Individual Non-Depolarizing Drugs",
        "Steroidal Compounds & Benzylisoquinoliniums")

# Slide 9 — Rocuronium
sl = blank(prs)
header(sl, "Rocuronium", "Aminosteroid  |  Intermediate-acting  |  FASTEST ONSET of all NDMRs")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "Monoquaternary aminosteroid. Structurally related to vecuronium."),
    ("ED95",
     "~0.3 mg/kg"),
    ("Intubating dose",
     "0.6 mg/kg (2× ED95) → intubating conditions in ~90–120 s. 1.2 mg/kg (RSI dose) → intubating conditions in 60 s (comparable to succinylcholine)."),
    ("Onset",
     "Fastest-onset NDMR due to lower potency (more molecules → faster NMJ equilibration). At 1.2 mg/kg: ~60 s."),
    ("Duration",
     "Intermediate: 30–60 min at 0.6 mg/kg. 60–90 min at 1.2 mg/kg."),
    ("Elimination",
     "Primarily biliary excretion of unchanged drug. Minimal hepatic metabolism. Prolonged in hepatic disease, cholestatic jaundice, obesity. Small renal component (~10–30%)."),
    ("Cardiovascular effects",
     "Mild vagolytic activity (slight tachycardia at high doses). Minimal histamine release. Cardiovascularly safe."),
    ("Key clinical advantage",
     "The ONLY NDMR that provides RSI-speed intubating conditions AND is reversible with sugammadex (16 mg/kg for immediate reversal from RSI dose)."),
    ("Reversal",
     "Fully reversible by sugammadex. Neostigmine effective when block is moderate (TOF count ≥2)."),
])

# Slide 10 — Vecuronium
sl = blank(prs)
header(sl, "Vecuronium", "Aminosteroid  |  Intermediate-acting  |  No cardiovascular effects")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "Monoquaternary aminosteroid. Lacks the methyl group on the piperidine N ring present in pancuronium (hence no vagolytic effect)."),
    ("ED95",
     "~0.05 mg/kg"),
    ("Intubating dose",
     "0.1 mg/kg → intubating conditions in 3–4 min. Larger doses (0.2 mg/kg) hasten onset but prolong duration."),
    ("Duration",
     "Intermediate: 25–40 min. Extended in elderly, hepatic dysfunction, ICU patients."),
    ("Elimination",
     "~50% hepatic deacetylation → 3-desacetylvecuronium (active, ~80% potency of parent). Primary excretion biliary (40–75%). Renal excretion ~25%. Active metabolite accumulates in ICU patients with renal failure."),
    ("Cardiovascular effects",
     "NONE at clinical doses — no histamine release, no vagal blockade, no sympathomimetic effects. Drug of choice when haemodynamic stability is paramount."),
    ("ICU concerns",
     "Prolonged infusions in ICU → accumulation of 3-desacetylvecuronium (especially in renal failure) → unexpectedly prolonged paralysis. Combined with corticosteroids → critical illness myopathy risk."),
    ("Reversal",
     "Reversible by neostigmine and by sugammadex (though binding to sugammadex is ~3× weaker than rocuronium → slightly slower reversal)."),
])

# Slide 11 — Pancuronium
sl = blank(prs)
header(sl, "Pancuronium", "Aminosteroid  |  Long-acting  |  Historically the standard NDMR")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "Bisquaternary aminosteroid. Two quaternary ammonium groups — one provides muscle relaxation, one causes vagolytic effects."),
    ("ED95",
     "~0.07 mg/kg"),
    ("Intubating dose",
     "0.1–0.15 mg/kg → intubating conditions in 3–5 min."),
    ("Duration",
     "Long-acting: 60–100 min. Highly dependent on renal function."),
    ("Elimination",
     "~80% renal excretion of unchanged drug. ~10–20% hepatic metabolism → 3-OH-pancuronium (active, ~50% potency). Markedly prolonged in renal failure. Avoid in renal insufficiency."),
    ("Cardiovascular effects — MOST SIGNIFICANT of all NDMRs",
     "Vagolytic (blocks cardiac muscarinic receptors) → tachycardia (+20–40 bpm), increased BP, increased cardiac output. Sympathomimetic (blocks neuronal uptake of norepinephrine). Useful in bradycardic patients; avoid in tachyarrhythmia, ischaemic heart disease, hypertension."),
    ("Other effects",
     "No histamine release. Inhibits plasma cholinesterase slightly."),
    ("Sugammadex reversal",
     "Binds sugammadex only weakly (rocuronium > vecuronium >> pancuronium). NOT recommended for sugammadex reversal in standard dosing."),
    ("Current status",
     "Still used for long procedures, when prolonged relaxation desired, or when vagolytic tachycardia is beneficial. Fallen out of favour for general use due to unpredictable duration in organ failure."),
])

# Slide 12 — Atracurium
sl = blank(prs)
header(sl, "Atracurium", "Benzylisoquinolinium  |  Intermediate-acting  |  Hofmann elimination")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "Benzylisoquinolinium. Contains an ester group — metabolised by both Hofmann elimination (~60%) and plasma ester hydrolysis (~40%)."),
    ("ED95",
     "~0.23 mg/kg"),
    ("Intubating dose",
     "0.5 mg/kg → intubating conditions in ~2–3 min."),
    ("Duration",
     "Intermediate: 20–35 min. Relatively independent of renal or hepatic function."),
    ("Elimination — ORGAN INDEPENDENT",
     "Hofmann elimination (spontaneous, non-enzymatic at physiologic pH 7.4 and 37°C) + ester hydrolysis by non-specific plasma esterases. NOT dependent on pseudocholinesterase."),
    ("Laudanosine (major metabolite)",
     "CNS excitant — can raise seizure threshold and increase MAC. Clinically significant only with hepatic failure or prolonged infusion. Metabolised and excreted by liver and kidney."),
    ("Cardiovascular effects",
     "HISTAMINE RELEASE (dose-dependent). Causes hypotension, tachycardia, bronchospasm. Slow injection and avoiding large bolus doses reduces this. Avoid in asthma. Also direct vasodilation independent of histamine."),
    ("Temperature/pH sensitivity",
     "Duration of action prolonged by hypothermia and acidosis (slows Hofmann elimination). Store in refrigerator (degrades at room temp)."),
    ("Chemical incompatibility",
     "Precipitates in alkaline solutions (e.g., thiopental). Use separate IV line."),
])

# Slide 13 — Cisatracurium
sl = blank(prs)
header(sl, "Cisatracurium", "Benzylisoquinolinium  |  Intermediate-acting  |  Cleanest side-effect profile")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "The 1R cis-1'R cis stereoisomer of atracurium. Constitutes ~15% of the racemic atracurium mixture. 4× more potent than atracurium."),
    ("ED95",
     "~0.05 mg/kg"),
    ("Intubating dose",
     "0.15–0.2 mg/kg → intubating conditions in ~2–3 min. Onset is slower than atracurium because of greater potency (fewer molecules)."),
    ("Duration",
     "Intermediate: 40–75 min. Infusion commonly used for maintenance."),
    ("Elimination — PURELY HOFMANN",
     "Undergoes only Hofmann elimination (unlike atracurium which also undergoes ester hydrolysis). Products: monoquaternary acrylate + laudanosine. Because of greater potency → far LESS laudanosine produced per intubating dose than atracurium."),
    ("Cardiovascular effects",
     "NO histamine release at clinical doses. No vagolytic activity. Cardiovascularly NEUTRAL. The preferred NDMR in cardiovascularly compromised patients who also have hepatic or renal failure."),
    ("ICU use",
     "Widely used for prolonged infusions in ICU (ARDS, prone ventilation, neurosurgical protection). Organ-independent metabolism makes it predictable."),
    ("Laudanosine concern",
     "Minimal at clinical doses — significantly less than atracurium. Relevant only with prolonged high-dose infusion in hepatic failure."),
])

# Slide 14 — Mivacurium
sl = blank(prs)
header(sl, "Mivacurium", "Benzylisoquinolinium  |  Short-acting  |  Pseudocholinesterase metabolism")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Structure",
     "Benzylisoquinolinium. Mixture of three stereoisomers. The two active isomers account for ~97% of clinical effect."),
    ("ED95",
     "~0.08 mg/kg"),
    ("Intubating dose",
     "0.15–0.25 mg/kg → onset ~2–3 min."),
    ("Duration",
     "Short-acting: 15–20 min. The shortest-acting non-depolarising relaxant. Ideal for short procedures."),
    ("Elimination",
     "Hydrolysed by plasma pseudocholinesterase (same enzyme as succinylcholine, but ~88% as efficient). NOT via Hofmann or organ metabolism. Prolonged blockade with pseudocholinesterase deficiency or dibucaine-abnormal enzyme."),
    ("Cardiovascular effects",
     "Histamine release (similar to atracurium) — causes transient hypotension at rapid administration. Slow injection rate recommended."),
    ("Reversal",
     "Usually spontaneous. Neostigmine can paradoxically PROLONG block if given prematurely (neostigmine inhibits pseudocholinesterase → slows mivacurium breakdown). Allow spontaneous recovery to TOF ≥25% before giving neostigmine."),
    ("Availability",
     "Not universally available. Available in some countries but not in the USA."),
])

# ──────────────────────────────────────────────────────────────
# PART 4 — Factors Modifying NDMR Response
# ──────────────────────────────────────────────────────────────
divider(prs, "04", "Factors Modifying NDMR Response",
        "Physiological, pharmacological, and patient-specific variables")

# Slide 16 — Potentiation factors
sl = blank(prs)
header(sl, "Factors POTENTIATING (Enhancing) NDMR Block")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.2, 5.9, [
    ("Volatile Anaesthetics",
     "All volatile agents potentiate NDMR block in a dose-dependent manner. Isoflurane/desflurane/sevoflurane > halothane > nitrous oxide/opioid technique. Mechanism: reduced ACh release pre-synaptically + post-synaptic sensitisation. Reduce NDMR dose by 25–40% with volatile agents."),
    ("Antibiotics",
     "Aminoglycosides (neomycin, streptomycin, gentamicin): block pre-synaptic Ca²⁺ channels → reduce ACh release. Also post-synaptic blockade. Polymyxins, tetracyclines, lincomycin also potentiate. Clindamycin and vancomycin have lesser effects."),
    ("Electrolyte Imbalances",
     "Hypokalaemia: stabilises post-junctional membrane → potentiates NDMR; also reduces effectiveness of neostigmine reversal. Hypomagnesaemia: reduced; hypermagnesaemia POTENTIATES (inhibits pre- and post-synaptic Ca²⁺ channels)."),
    ("Hypothermia",
     "Reduces ACh mobilisation, decreases receptor sensitivity, slows Hofmann degradation and organ-based elimination → prolongs ALL NDMRs."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Acidosis / Hypercarbia",
     "Potentiates NDMR block AND interferes with neostigmine reversal. Correct acid-base before reversal."),
    ("Local Anaesthetics",
     "Potentiate NDMR block at high doses — channel blockade + membrane stabilisation."),
    ("Calcium Channel Blockers",
     "Verapamil, nifedipine — augment neuromuscular block."),
    ("Increased Age",
     "Reduced Vd, lower cardiac output, reduced hepatic/renal clearance → prolonged effect of most NDMRs."),
    ("Burns / Denervation",
     "Initially (acute phase) appear resistant due to ↑Vd. Chronically, immature nAChRs are RESISTANT to NDMRs → dose requirements increased."),
    ("Lithium, Furosemide",
     "Potentiate NDMR at high doses."),
    ("Prior succinylcholine",
     "Phase II block of succinylcholine may be worsened if NDMRs are given subsequently."),
])

# Slide 17 — Resistance / decreased effect
sl = blank(prs)
header(sl, "Factors ANTAGONISING (Reducing) NDMR Block")
body_bg(sl)
bullets(sl, 0.3, 1.25, 12.5, 5.9, [
    ("Alkalosis",
     "Hypokalaemia + alkalosis → increases extracellular K⁺ effects; alkalosis itself reduces NDMR effect through altered ionisation."),
    ("Phenytoin (long-term)",
     "Upregulates ACh receptors and increases hepatic metabolism of aminosteroid NDMRs → resistance. Acute phenytoin enhances NDMR block; chronic use causes resistance."),
    ("Carbamazepine",
     "Similar mechanism to phenytoin — upregulates receptors, increases clearance → NDMR resistance. Particularly relevant for rocuronium and vecuronium."),
    ("Theophylline",
     "Antagonises NDMR block. May be responsible for incomplete reversal."),
    ("Hyperparathyroidism / Hypercalcaemia",
     "Increased Ca²⁺ → augmented ACh release → apparent resistance to NDMRs."),
    ("Burn injury (chronic phase)",
     "Up-regulation of immature/extrajunctional nAChRs → RESISTANCE to NDMRs (but sensitivity to depolarising drugs — succinylcholine hyperkalemia risk)."),
    ("Myasthenia gravis (paradox)",
     "Patients are EXQUISITELY SENSITIVE to NDMRs (reduced receptor numbers) but resistant to depolarising agents. Dose requirements for NDMRs reduced by 50–75%."),
])

# ──────────────────────────────────────────────────────────────
# PART 5 — Reversal
# ──────────────────────────────────────────────────────────────
divider(prs, "05", "Reversal of Neuromuscular Blockade",
        "Anticholinesterases vs Sugammadex — mechanism, dosing, limitations")

# Slide 19 — Neostigmine
sl = blank(prs)
header(sl, "Anticholinesterase Reversal — Neostigmine", "The traditional reversal agent")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Mechanism",
     "Inhibits acetylcholinesterase (AChE) → accumulation of ACh in the synaptic cleft → competitive displacement of NDMR from α-subunits of nAChR."),
    ("Dose",
     "0.04–0.08 mg/kg IV (max 5 mg). Onset: 5–7 min. Peak: 10 min. Duration: >1 h."),
    ("MUST pair with anticholinergic",
     "ACh accumulation also activates muscarinic receptors → bradycardia, increased secretions, bronchoconstriction, gut hypermotility. ALWAYS give glycopyrrolate (0.2 mg per 1 mg neostigmine) or atropine (0.014 mg per 1 mg neostigmine) concomitantly."),
    ("Ceiling effect",
     "Maximum effect at ~5 mg. Beyond this dose, excess ACh paradoxically causes DEPOLARISING block (cholinergic crisis). DO NOT exceed max dose."),
    ("When to give",
     "TOF count ≥2 (ideally TOF ratio ≥0.2–0.4). Neostigmine at deep block is unreliable and increases risk of residual paralysis."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Pyridostigmine",
     "20% potency of neostigmine. Dose: 0.1–0.25 mg/kg IV (max 20 mg). Slower onset (10–15 min), longer duration (>2 h). Fewer muscarinic side effects. Pair with glycopyrrolate."),
    ("Edrophonium",
     "Dose: 0.5–1 mg/kg IV. Fastest onset (~1 min), shortest duration (~30 min). Pairs with atropine (faster onset match). Less effective at reversing deep block."),
    ("Factors reducing neostigmine efficacy",
     "Deep block (TOF count <2)  •  Acidosis / hypercarbia  •  Hypokalaemia  •  Hypothermia  •  Volatile anaesthetic still active  •  Aminoglycoside antibiotics present"),
    ("RESIDUAL PARALYSIS risk",
     "Up to 30–40% of patients reversed with neostigmine show residual paralysis (TOF ratio <0.9) at tracheal extubation. Associated with: upper airway obstruction, aspiration, postoperative respiratory complications, ICU admission."),
    ("Bottom line",
     "Neostigmine is reliable ONLY at moderate block. Objective neuromuscular monitoring is essential to determine timing."),
])

# Slide 20 — Sugammadex
sl = blank(prs)
header(sl, "Sugammadex — Selective Relaxant Binding Drug (SRBD)",
       "Gamma-cyclodextrin  |  Reversal of aminosteroid NDMRs only")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Mechanism — Encapsulation",
     "Modified gamma-cyclodextrin — 8-membered ring with hydrophobic cavity that forms a 1:1 'host-guest' inclusion complex with the steroid nucleus of aminosteroid NDMRs."),
    ("Selectivity",
     "Rocuronium >>> Vecuronium >> Pancuronium. NO effect on benzylisoquinoliniums, succinylcholine, or other drugs. Does NOT act via AChE or cholinergic receptors."),
    ("Mechanism in vivo",
     "Rapid plasma encapsulation → reduction of free plasma NDMR → concentration gradient favours movement of NDMR from NMJ back into plasma → further encapsulation → complete reversal."),
    ("Dose — Moderate block (TOF ≥2)",
     "2 mg/kg IV → TOF ratio ≥0.9 in 2–4 min in most adults."),
    ("Dose — Deep block (PTC ≥1)",
     "4 mg/kg IV → reliable reversal within 2–5 min."),
    ("Dose — Immediate reversal (RSI with 1.2 mg/kg rocuronium)",
     "16 mg/kg IV → reversal within ~3 min — EQUIVALENT TO SPONTANEOUS RECOVERY of succinylcholine block."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Pharmacokinetics",
     "Highly water-soluble. Distributes in extracellular fluid. Renal excretion of sugammadex-NDMR complex (t½ ~100 min in normal renal function)."),
    ("Renal failure",
     "Sugammadex and complex accumulate. High-flux haemodialysis can remove it. Low-flux ineffective. Consider alternative reversal strategies."),
    ("Advantages over neostigmine",
     "No muscarinic side effects → no anticholinergic needed. Reverses ALL depths of block (including profound). Lower residual paralysis rate (~5% vs 30–40%). Faster reversal."),
    ("Recurrence of block ('recurarisation')",
     "If an insufficient dose is used, free NDMR can re-emerge from redistribution → re-paralysis. Re-administer sugammadex. Use objective monitoring to confirm TOF ≥0.9."),
    ("Drug interactions",
     "Oral contraceptives (equivalent to missed dose — advise additional contraception for remainder of cycle). Toremifene, flucloxacillin, fusidic acid may compete for binding."),
    ("Adverse effects",
     "Allergic / anaphylactic reactions (rare, ~0.3%). Bradycardia. Most reactions occur within 4 min of injection. Treat anaphylaxis with adrenaline + fluids."),
])

# ──────────────────────────────────────────────────────────────
# PART 6 — Monitoring Neuromuscular Blockade
# ──────────────────────────────────────────────────────────────
divider(prs, "06", "Monitoring Neuromuscular Blockade",
        "Peripheral nerve stimulators  |  Train-of-Four  |  Objective monitoring")

# Slide 22 — NMB monitoring
sl = blank(prs)
header(sl, "Monitoring — Peripheral Nerve Stimulation Patterns")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Train-of-Four (TOF)",
     "4 supramaximal stimuli at 2 Hz. Count (T1–T4) and ratio (T4/T1). Most commonly used pattern. TOF ratio ≥0.9 = safe recovery."),
    ("TOF count 0 = profound block",
     "TOF count 1–3 = deep to moderate block. TOF count 4 = light block. TOF ratio 0.4–0.9 = residual partial block (may feel 'normal' — patient cannot detect). TOF ratio ≥0.9 = adequate recovery."),
    ("Tetanus (50 Hz)",
     "Sustained high-frequency stimulation. NDMR block → FADE (progressive decline in response). Absence of fade ≠ full recovery — insensitive at detecting TOF ratio <0.9. Not repeated frequently (painful)."),
    ("Post-Tetanic Count (PTC)",
     "After tetanic stimulation, single-twitch responses are counted. Used when TOF = 0 to predict time to return of TOF count. PTC 1–2 = ~20–30 min to spontaneous T1 return."),
    ("Double Burst Stimulation (DBS)",
     "Two short bursts of 50 Hz. More sensitive than TOF for detecting residual block manually. DBS 3,3 pattern (3 impulses in each burst) is most commonly used."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Objective vs Subjective monitoring",
     "Subjective (visual/tactile TOF): clinicians CANNOT reliably detect TOF ratio <0.4 manually. Up to 40% of patients can have TOF ratio 0.4–0.9 with NO detectable fade — yet have significant residual paralysis."),
    ("Acceleromyography (AMG)",
     "Measures acceleration of thumb in response to ulnar nerve stimulation. Gold standard for objective NMB monitoring. Requires unconstrained thumb."),
    ("Electromyography (EMG)",
     "Measures electrical activity of the muscle. Does not require thumb movement."),
    ("Kinemyography / Mechanomyography",
     "Measure thumb movement directly."),
    ("2018 International Consensus",
     "Recommends: objective monitoring at all times during NDMR use + documentation of TOF ratio ≥0.9 before extubation. Adopted by Canada, France, Spain, Australia and New Zealand, UK, USA."),
    ("Monitoring site",
     "Adductor pollicis (thumb) via ulnar nerve at wrist is the clinical standard. Corrugator supercilii (facial) useful when thumb inaccessible — recovers LATER than laryngeal muscles but BEFORE diaphragm."),
])

# ──────────────────────────────────────────────────────────────
# PART 7 — Special Situations & Clinical Considerations
# ──────────────────────────────────────────────────────────────
divider(prs, "07", "Special Situations & Clinical Considerations",
        "Organ failure  |  Paediatrics  |  ICU  |  Myasthenia  |  RSI")

# Slide 24 — Special populations
sl = blank(prs)
header(sl, "NDMR Use in Special Populations")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Renal Failure",
     "Avoid pancuronium (primarily renal excretion). Vecuronium: active metabolite (3-desacetylvecuronium) accumulates → prolonged block. Cisatracurium preferred (Hofmann, organ-independent). Sugammadex should be used cautiously — complex accumulates; high-flux dialysis needed to clear."),
    ("Hepatic Failure",
     "Increased Vd → increased dose requirement (initially). Reduced clearance of aminosteroids → prolonged block later. Cisatracurium or atracurium preferred (Hofmann). Laudanosine may accumulate with atracurium."),
    ("Obesity",
     "Vd increased → dosing on lean body weight (LBW) or ideal body weight (IBW) recommended for most NDMRs to avoid prolonged block. Rocuronium: dose on IBW for intubation."),
    ("Burns (chronic, >24h)",
     "Upregulation of extrajunctional nAChRs → RESISTANCE to NDMRs (dose requirements 3–5× normal). Avoid succinylcholine. Titrate NDMRs by monitoring."),
    ("Elderly",
     "Reduced Vd, reduced hepatic/renal clearance → all NDMRs last longer. Use lower maintenance doses. Objective monitoring essential. Sugammadex dosing unchanged but recovery may be slower (~6–10 min)."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Paediatrics",
     "Neonates most sensitive to NDMRs (immature NMJ). Infants less sensitive than neonates. Children (2–10 yr) generally LESS sensitive (higher dose mg/kg required). Use weight-based dosing. Sugammadex effective in paediatrics ≥2 yr at same mg/kg dosing as adults."),
    ("Myasthenia Gravis",
     "Exquisitely SENSITIVE to NDMRs (reduced receptor density). Use 10–25% of standard dose. Avoid long-acting NDMRs. Objective monitoring essential. NDMRs often not needed — disease itself produces adequate relaxation at many surgical stages."),
    ("ICU / Prolonged Infusion",
     "Risk of: prolonged weakness, critical illness myopathy (especially + steroids), active metabolite accumulation (vecuronium). Cisatracurium preferred for ICU. Use lowest effective dose. Daily drug holiday (rest periods) recommended. Objective monitoring mandatory."),
    ("Rapid Sequence Induction (RSI)",
     "Rocuronium 1.2 mg/kg = clinical alternative to succinylcholine for RSI — similar onset, reversible with sugammadex 16 mg/kg. Preferred when succinylcholine contraindicated (burns, SCI, myopathy, hyperkalaemia, MH susceptibility)."),
])

# ──────────────────────────────────────────────────────────────
# PART 8 — Comparison Table Slide
# ──────────────────────────────────────────────────────────────
divider(prs, "08", "Comparative Summary",
        "Side-by-side pharmacological comparison of key NDMRs")

# Slide 26 — Comparison table
sl = blank(prs)
header(sl, "Pharmacological Comparison of Key NDMRs")
body_bg(sl)

# Table data
rows = [
    ["Drug",         "Class",    "ED95",       "Intubating",     "Onset",    "Duration",  "Metabolism",            "Hist.", "Vagolytic", "Sugammadex"],
    ["Rocuronium",   "Steroid",  "0.3",        "0.6–1.2 mg/kg",  "60–90 s",  "30–60 min", "Biliary (mainly)",      "None",  "Mild",      "✔✔✔"],
    ["Vecuronium",   "Steroid",  "0.05",       "0.1 mg/kg",      "3–4 min",  "25–40 min", "Hepatic/Biliary",       "None",  "None",      "✔✔"],
    ["Pancuronium",  "Steroid",  "0.07",       "0.1 mg/kg",      "3–5 min",  "60–100 min","Renal (80%)",           "None",  "+++",       "✔ (weak)"],
    ["Atracurium",   "Benzyl.",  "0.23",       "0.5 mg/kg",      "2–3 min",  "20–35 min", "Hofmann + Esterase",    "+",     "None",      "✗"],
    ["Cisatracurium","Benzyl.",  "0.05",       "0.15 mg/kg",     "2–3 min",  "40–75 min", "Hofmann only",          "None",  "None",      "✗"],
    ["Mivacurium",   "Benzyl.",  "0.08",       "0.15–0.25 mg/kg","2–3 min",  "15–20 min", "Pseudocholinesterase",  "+",     "None",      "✗"],
]
col_widths = [1.5, 1.0, 0.8, 1.5, 1.0, 1.2, 2.0, 0.75, 1.0, 1.1]
x_start = 0.25
y_start = 1.25
row_h   = 0.73

for r_i, row in enumerate(rows):
    x = x_start
    for c_i, cell in enumerate(row):
        fill_c = STEEL if r_i == 0 else (RGBColor(0xE2, 0xEC, 0xF5) if r_i % 2 == 0 else WHITE)
        rect(sl, x, y_start + r_i * row_h, col_widths[c_i], row_h, fill_c)
        text_c = WHITE if r_i == 0 else DARK
        fs = 11 if r_i == 0 else 10.5
        shape = sl.shapes.add_textbox(
            Inches(x + 0.03), Inches(y_start + r_i * row_h + 0.06),
            Inches(col_widths[c_i] - 0.06), Inches(row_h - 0.1)
        )
        tf2 = shape.text_frame
        tf2.word_wrap = True
        tf2.margin_left = tf2.margin_top = tf2.margin_right = tf2.margin_bottom = Pt(1)
        p2 = tf2.paragraphs[0]
        p2.alignment = PP_ALIGN.CENTER
        r2 = p2.add_run()
        r2.text = cell
        r2.font.size = Pt(fs)
        r2.font.bold = (r_i == 0)
        r2.font.color.rgb = text_c
        r2.font.name = "Calibri"
        x += col_widths[c_i]

# ──────────────────────────────────────────────────────────────
# SLIDE — Residual Paralysis & Safe Extubation
# ──────────────────────────────────────────────────────────────
sl = blank(prs)
header(sl, "Residual Neuromuscular Blockade — A Patient Safety Priority")
body_bg(sl)
bullets(sl, 0.3, 1.25, 6.1, 5.9, [
    ("Definition",
     "Residual paralysis = TOF ratio <0.9 at tracheal extubation. Occurs despite patients appearing 'clinically recovered' (able to open eyes, lift head briefly)."),
    ("Incidence",
     "30–40% with neostigmine reversal. As high as 5% even with sugammadex. Worldwide significance: 230 million surgeries/year."),
    ("Clinical consequences",
     "Upper airway obstruction  •  Aspiration / passive regurgitation  •  Hypoxaemia  •  Impaired hypoxic ventilatory response  •  Unplanned ICU admission  •  Increased postoperative pulmonary complications  •  Prolonged PACU stay"),
    ("Why clinicians miss it",
     "Standard clinical tests (5-s head lift, hand grip, tidal volume) are INSENSITIVE — can be achieved with TOF ratio as low as 0.4–0.6. Subjective TOF assessment fails to detect TOF ratio <0.4."),
])
bullets(sl, 6.5, 1.25, 6.5, 5.9, [
    ("Prevention strategy",
     "1. Use intermediate-acting NDMRs rather than long-acting.  2. Objective quantitative monitoring throughout case.  3. Reverse block at appropriate depth (TOF ≥2 for neostigmine; any depth for sugammadex).  4. Document TOF ratio ≥0.9 before extubation."),
    ("When NOT to extubate",
     "TOF ratio <0.9 on objective monitor, OR TOF count <4 on subjective assessment."),
    ("TOF ratio 0.9 threshold",
     "Based on studies showing that pharyngeal muscle function, upper airway dilator function, and hypoxic ventilatory response are restored at TOF ratio ≥0.9. Older threshold of 0.7 is now considered inadequate."),
    ("Guidelines",
     "Endorsed by: Canadian Anesthesiologists' Society, French SFAR, Spanish SEDAR, Australian and NZ College of Anaesthetists, Association of Anaesthetists (UK), ASA — all recommend routine objective neuromuscular monitoring."),
])

# ──────────────────────────────────────────────────────────────
# SUMMARY Slide
# ──────────────────────────────────────────────────────────────
sl = blank(prs)
rect(sl, 0, 0, W, H, NAVY)
rect(sl, 0, 0.9, W, 0.08, TEAL)
tb(sl, 0.5, 0.15, 12.3, 0.8, "Summary — Non-Depolarizing Muscle Relaxants", 30,
   bold=True, color=WHITE, align=PP_ALIGN.CENTER)

summary = [
    ("Mechanism", "Competitive antagonists at post-junctional nAChR α-subunits. NO channel activation. Cause FADE (pre-synaptic blockade). Do NOT cross BBB."),
    ("Classification", "Aminosteroids (rocuronium, vecuronium, pancuronium) vs Benzylisoquinoliniums (atracurium, cisatracurium, mivacurium). Short / Intermediate / Long duration."),
    ("Rocuronium", "Fastest-onset NDMR. RSI dose 1.2 mg/kg. Biliary excretion. Reversed by sugammadex ✔✔✔. Drug of choice for modified RSI."),
    ("Vecuronium", "Cardiovascularly neutral. Active metabolite accumulates in renal failure. Reversible by sugammadex ✔✔."),
    ("Pancuronium", "Long-acting. Vagolytic → tachycardia. Renally excreted — avoid in renal failure. Weakly reversed by sugammadex."),
    ("Cisatracurium", "Pure Hofmann elimination. Organ-independent. No histamine. Best NDMR for organ failure patients and ICU infusions."),
    ("Reversal", "Neostigmine (+ anticholinergic): effective at TOF ≥2; ceiling 5 mg; 30–40% residual paralysis rate. Sugammadex: dose-dependent, any depth, ~5% residual rate, no muscarinic SE."),
    ("Monitoring", "Objective (AMG/EMG) + documented TOF ratio ≥0.9 before extubation is the international standard of care."),
]

shape = sl.shapes.add_textbox(Inches(0.35), Inches(1.1), Inches(12.6), Inches(6.2))
tf_s = shape.text_frame
tf_s.word_wrap = True
for i, (k, v) in enumerate(summary):
    p = tf_s.paragraphs[0] if i == 0 else tf_s.add_paragraph()
    p.space_before = Pt(4)
    r1 = p.add_run(); r1.text = f"{k}:  "
    r1.font.bold = True; r1.font.size = Pt(13.5); r1.font.color.rgb = TEAL; r1.font.name = "Calibri"
    r2 = p.add_run(); r2.text = v
    r2.font.size = Pt(13); r2.font.color.rgb = WHITE; r2.font.name = "Calibri"

out = "/tmp/workspace/nmj-ppt/NDMR_Comprehensive.pptx"
prs.save(out)
print(f"Done. Slides: {len(prs.slides)}. Saved: {out}")
Running Command

cd /tmp/workspace/nmj-ppt && python build_ndmr.py 2>&1

Editing File

~/nmj-ppt/build_ndmr.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/nmj-ppt/build_ndmr.py'
Running Command

cd /tmp/workspace/nmj-ppt && python build_ndmr.py 2>&1

Your presentation is ready - 28 slides, fully sourced from standard anesthesia textbooks:

NDMR Comprehensive

Presentation · PPTX


28 slides across 8 sections:

Part 01 - Classification & Mechanism (Slides 2-4)

  • Chemical classification: Benzylisoquinoliniums vs Aminosteroids
  • Duration classification: Ultra-short through Long-acting
  • Mechanism of competitive antagonism, safety factor, ED95 concept, BBB impermeability

Part 02 - Pharmacokinetics & Pharmacodynamics (Slides 5-7)

  • Volume of distribution, protein binding, onset, potency-onset inverse relationship
  • Elimination pathways: Hofmann (atracurium/cisatracurium), renal (pancuronium), biliary (vecuronium/rocuronium), pseudocholinesterase (mivacurium)
  • Laudanosine toxicity detail

Part 03 - Individual Drugs (Slides 8-14)

  • Rocuronium - fastest onset, RSI dose, biliary excretion, sugammadex reversibility
  • Vecuronium - haemodynamically neutral, active metabolite in renal failure, ICU myopathy
  • Pancuronium - vagolytic tachycardia, renal excretion, long-acting, historical standard
  • Atracurium - Hofmann + ester hydrolysis, histamine release, laudanosine, temperature/pH sensitivity
  • Cisatracurium - pure Hofmann, NO histamine, preferred ICU drug, less laudanosine
  • Mivacurium - shortest-acting NDMR, pseudocholinesterase metabolism, neostigmine paradox

Part 04 - Factors Modifying NDMR Response (Slides 15-17)

  • Potentiating factors: volatile agents, aminoglycosides, hypokalaemia, hypothermia, acidosis, Ca2+ channel blockers
  • Antagonising factors: phenytoin, carbamazepine, theophylline, burns (chronic), hypercalcaemia

Part 05 - Reversal (Slides 18-20)

  • Neostigmine: mechanism, dosing (0.04-0.08 mg/kg), ceiling effect, must pair anticholinergic, 30-40% residual paralysis rate
  • Pyridostigmine & Edrophonium comparison table
  • Sugammadex: encapsulation mechanism, dosing by depth (2/4/16 mg/kg), pharmacokinetics, drug interactions, anaphylaxis risk

Part 06 - Monitoring (Slides 21-22)

  • TOF count vs ratio, tetanus/fade, PTC, DBS
  • Subjective vs objective monitoring - why manual assessment fails
  • 2018 international consensus: TOF ≥0.9 mandatory before extubation

Part 07 - Special Populations (Slides 23-24)

  • Renal/hepatic failure, obesity, burns, elderly, paediatrics, myasthenia gravis, ICU infusions, RSI

Part 08 - Comparative Summary (Slides 25-28)

  • Side-by-side comparison table (all 6 drugs × 10 parameters)
  • Residual paralysis: incidence, consequences, prevention
  • Final summary slide
Sources: Miller's Anesthesia 10e | Morgan & Mikhail 7e | Barash 9e | Katzung 16e

Neuro muscular blockers reversal ppt make

Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Writing File

~/nmj-ppt/build_reversal.py

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from io import BytesIO

# ── Palette ──────────────────────────────────────────────────────
NAVY   = RGBColor(0x0A, 0x27, 0x44)
TEAL   = RGBColor(0x00, 0x8E, 0x8E)
WHITE  = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT  = RGBColor(0xF0, 0xF5, 0xFA)
DARK   = RGBColor(0x1A, 0x1A, 0x2E)
AMBER  = RGBColor(0xF5, 0xA0, 0x20)
RED    = RGBColor(0xBB, 0x22, 0x22)
GREEN  = RGBColor(0x18, 0x7A, 0x18)
STEEL  = RGBColor(0x28, 0x56, 0x8A)
PALE   = RGBColor(0xE2, 0xEC, 0xF5)
W, H   = 13.333, 7.5

# ── Primitives ───────────────────────────────────────────────────
def prs_new():
    p = Presentation()
    p.slide_width  = Inches(W)
    p.slide_height = Inches(H)
    return p

def blank(prs): return prs.slides.add_slide(prs.slide_layouts[6])

def box(sl, x, y, w, h, color):
    s = sl.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    s.fill.solid(); s.fill.fore_color.rgb = color; s.line.fill.background(); return s

def txt(sl, x, y, w, h, text, size, bold=False, color=DARK,
        align=PP_ALIGN.LEFT, wrap=True, italic=False, font="Calibri"):
    sh = sl.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = sh.text_frame; tf.word_wrap = wrap
    tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Pt(2)
    p = tf.paragraphs[0]; p.alignment = align
    r = p.add_run()
    r.text = text; r.font.name = font; r.font.size = Pt(size)
    r.font.bold = bold; r.font.italic = italic; r.font.color.rgb = color
    return tf

def header(sl, title, sub=""):
    box(sl, 0, 0, W, 1.12, NAVY)
    box(sl, 0, 1.12, W, 0.07, TEAL)
    txt(sl, 0.4, 0.1, 12.5, 0.85, title, 25, bold=True, color=WHITE)
    if sub:
        txt(sl, 0.4, 0.78, 12.5, 0.38, sub, 12, italic=True, color=TEAL)

def bg(sl): box(sl, 0, 1.19, W, H-1.19, LIGHT)

def blist(sl, x, y, w, h, items, ts=16, ss=13.5):
    sh = sl.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = sh.text_frame; tf.word_wrap = True
    tf.margin_left = tf.margin_top = tf.margin_right = tf.margin_bottom = Pt(4)
    first = True
    for (t, s) in items:
        p = tf.paragraphs[0] if first else tf.add_paragraph()
        first = False; p.space_before = Pt(5)
        r = p.add_run()
        r.text = "▶  " + t
        r.font.name="Calibri"; r.font.size=Pt(ts); r.font.bold=True; r.font.color.rgb=TEAL
        if s:
            p2 = tf.add_paragraph(); p2.level=1; p2.space_before=Pt(2)
            r2 = p2.add_run(); r2.text=s
            r2.font.name="Calibri"; r2.font.size=Pt(ss); r2.font.color.rgb=DARK

def divider(prs, n, title, sub=""):
    sl = blank(prs)
    box(sl, 0, 0, W, H, NAVY); box(sl, 0, 3.22, W, 0.1, TEAL)
    txt(sl, 1, 1.2, 11, 0.85, f"Section  {n}", 20, italic=True, color=TEAL, align=PP_ALIGN.CENTER)
    txt(sl, 0.5, 2.2, 12.3, 1.5, title, 40, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
    if sub:
        txt(sl, 0.5, 4.2, 12.3, 0.9, sub, 18, italic=True,
            color=RGBColor(0xAA,0xCC,0xEE), align=PP_ALIGN.CENTER)

# ════════════════════════════════════════════════════════════════
prs = prs_new()

# ── SLIDE 1: Title ───────────────────────────────────────────────
sl = blank(prs)
box(sl, 0, 0, W, H, NAVY)
box(sl, 0, 5.45, W, 0.12, TEAL)
box(sl, 0, 5.57, W, 1.93, RGBColor(0x06, 0x17, 0x33))
txt(sl, 0.5, 0.45, 12.3, 0.8, "NEUROMUSCULAR BLOCKADE", 16,
    color=TEAL, align=PP_ALIGN.CENTER)
txt(sl, 0.3, 1.2, 12.7, 2.1,
    "Reversal of Neuromuscular Blockers", 48, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
txt(sl, 0.3, 3.1, 12.7, 0.9,
    "Anticholinesterases  ·  Sugammadex  ·  Depth of Block  ·  Monitoring  ·  Residual Paralysis",
    15, italic=True, color=RGBColor(0xAA,0xCC,0xEE), align=PP_ALIGN.CENTER)
txt(sl, 0.3, 5.57, 12.7, 0.6,
    "Sources: Miller's Anesthesia 10e  |  Barash 9e  |  Morgan & Mikhail 7e  |  Katzung 16e",
    11, color=RGBColor(0x66,0x88,0xAA), align=PP_ALIGN.CENTER)

# ── SECTION 01: Why Reversal Matters ────────────────────────────
divider(prs, "01", "Why Reversal Matters",
        "Residual paralysis — incidence, consequences, and the safety imperative")

# Slide 3
sl = blank(prs)
header(sl, "The Problem: Residual Neuromuscular Blockade")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Definition",
     "Residual paralysis = Train-of-Four (TOF) ratio <0.9 at the time of tracheal extubation. May be present despite patient appearing 'awake and responsive'."),
    ("Incidence",
     "~40% of patients reversed with neostigmine demonstrate residual paralysis on arrival to PACU. Even with sugammadex, residual paralysis may still occur in ~5%."),
    ("Clinical consequences",
     "Upper airway obstruction  •  Passive regurgitation and pulmonary aspiration  •  Hypoxaemia  •  Atelectasis  •  Unplanned ICU admission  •  Increased postoperative pulmonary complications  •  Prolonged PACU stay"),
    ("Impaired hypoxic ventilatory response",
     "Residual paralysis impairs carotid body chemoreceptor responsiveness to hypoxia — patients may not mount appropriate ventilatory drive even when SpO₂ falls."),
    ("Global significance",
     "~230 million surgical procedures worldwide per year — even a low absolute incidence produces enormous absolute patient harm."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Why clinical tests fail",
     "5-second head-lift, hand grip, tidal volume — can all be achieved with TOF ratio as low as 0.4–0.6. Standard clinical assessment CANNOT detect residual paralysis reliably."),
    ("TOF ratio 0.9 threshold",
     "Based on pharyngeal muscle function restoration, upper airway dilator activity, and hypoxic ventilatory response. Older threshold of 0.7 is now considered inadequate by international consensus."),
    ("NDMRs do NOT cause unconsciousness",
     "A paralysed patient may be fully awake and aware. NDMRs do NOT cross the blood-brain barrier. This makes awareness under NDMR paralysis a critical patient safety issue."),
    ("Mixing NDMR classes",
     "Combining aminosteroid + benzylisoquinolinium NDMRs can produce UNPREDICTABLE prolonged paralysis. Do NOT mix classes."),
])

# ── SECTION 02: Depth of Block ──────────────────────────────────
divider(prs, "02", "Depth of Neuromuscular Block",
        "Six levels — definitions, receptor occupancy, and monitoring correlation")

# Slide 5
sl = blank(prs)
header(sl, "Six Levels of Neuromuscular Block (Barash / Barash 9e)")
bg(sl)

# Depth table
rows = [
    ["Level", "Definition", "TOF Count", "TOF Ratio", "PTC", "Receptor Occupancy"],
    ["Complete", "Deepest block", "0", "Not detectable", "0", ">95%"],
    ["Deep", "Only post-tetanic", "0", "Not detectable", "≥1", "90–95%"],
    ["Moderate", "Partial recovery", "1–3", "Not detectable", "N/A", "70–90%"],
    ["Shallow", "4 twitches, fade", "4", "<0.4", "N/A", "60–70%"],
    ["Minimal", "4 twitches, no fade", "4", "0.4–0.9", "N/A", "60–70%"],
    ["Recovered", "Adequate recovery", "4", "≥0.9", "N/A", "<70%"],
]
col_w = [1.7, 2.3, 1.3, 1.4, 1.0, 2.1]
x0, y0, rh = 0.3, 1.28, 0.72
for ri, row in enumerate(rows):
    x = x0
    for ci, cell in enumerate(row):
        fc = STEEL if ri==0 else (PALE if ri%2==0 else WHITE)
        if ri>0 and row[0]=="Recovered": fc=RGBColor(0xC8,0xF0,0xC8)
        if ri>0 and row[0]=="Complete":  fc=RGBColor(0xF5,0xCC,0xCC)
        box(sl, x, y0+ri*rh, col_w[ci], rh, fc)
        sh2=sl.shapes.add_textbox(Inches(x+0.03),Inches(y0+ri*rh+0.06),
                                   Inches(col_w[ci]-0.06),Inches(rh-0.1))
        tf2=sh2.text_frame; tf2.word_wrap=True
        tf2.margin_left=tf2.margin_top=tf2.margin_right=tf2.margin_bottom=Pt(2)
        p2=tf2.paragraphs[0]; p2.alignment=PP_ALIGN.CENTER
        r2=p2.add_run(); r2.text=cell
        r2.font.size=Pt(11.5 if ri==0 else 11)
        r2.font.bold=(ri==0)
        r2.font.color.rgb=WHITE if ri==0 else DARK
        r2.font.name="Calibri"
        x+=col_w[ci]

txt(sl, 0.3, 6.6, 12.5, 0.65,
    "Key: Neostigmine reliable ONLY at Minimal block (TOF count 4, ratio ≥0.4).  "
    "Sugammadex works at ALL levels including Complete block.",
    12, italic=True, color=STEEL)

# Slide 6 — Peripheral nerve stimulation patterns
sl = blank(prs)
header(sl, "Peripheral Nerve Stimulation Patterns for NMB Monitoring")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Single Twitch (ST)",
     "Single supramaximal stimulus (0.1–0.2 ms) at 0.1–1 Hz. Compares to baseline height. First modality to disappear with deepening block. Returns before clinical signs of recovery."),
    ("Train-of-Four (TOF)",
     "4 stimuli at 2 Hz. Count (T1–T4): how many twitches detectable. Ratio (T4/T1): key clinical metric. The most important everyday monitoring pattern. FADE = nondepolarising block."),
    ("Tetanus (50–100 Hz)",
     "Sustained high-frequency stimulation for 5 s. Sustained = no block / depolarising (Phase I). FADE = nondepolarising block or Phase II block. Most sensitive for detecting block but painful; not used repeatedly. Does NOT detect TOF ratio 0.4–0.9 reliably."),
    ("Post-Tetanic Count (PTC)",
     "Count of single twitches after a 5-s 50 Hz tetanic burst. Used ONLY when TOF count = 0. PTC 1–2 predicts ~30 min to spontaneous T1 return. Higher PTC = closer to TOF recovery."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Double Burst Stimulation (DBS 3,3)",
     "Two short 50 Hz bursts (3 impulses each) separated by 750 ms. More sensitive than TOF for detecting residual block MANUALLY. If no fade on DBS 3,3 → TOF ratio likely ≥0.6 (but still may be <0.9)."),
    ("Objective vs Subjective",
     "Subjective (manual/visual): cannot detect TOF ratio <0.4. Up to 40% of patients with TOF ratio 0.4–0.9 show NO detectable fade to an experienced clinician. OBJECTIVE monitoring (acceleromyography, electromyography) is mandatory."),
    ("Acceleromyography (AMG)",
     "Detects thumb acceleration in response to ulnar nerve stimulation at wrist. Gold standard objective monitor. Requires unconstrained thumb movement."),
    ("Preferred site",
     "Adductor pollicis via ulnar nerve (wrist). Corrugator supercilii (facial) = useful intraoperatively (recovers AFTER laryngeal muscles but BEFORE diaphragm — use for assessing intubating conditions, not extubation readiness)."),
    ("2018 International Consensus",
     "Document TOF ratio ≥0.9 by OBJECTIVE monitoring before extubation. Endorsed by Canada, France, Spain, ANZ, UK, USA anesthesia societies."),
])

# ── SECTION 03: Anticholinesterases ─────────────────────────────
divider(prs, "03", "Anticholinesterase Reversal",
        "Neostigmine · Pyridostigmine · Edrophonium — mechanism, doses, limitations")

# Slide 8 — Mechanism of anticholinesterases
sl = blank(prs)
header(sl, "Mechanism of Anticholinesterase Reversal")
bg(sl)
blist(sl, 0.3, 1.28, 12.5, 5.9, [
    ("Core mechanism",
     "All anticholinesterase drugs inhibit acetylcholinesterase (AChE) → accumulation of acetylcholine (ACh) in the synaptic cleft → increased ACh concentration competes with and displaces nondepolarising NMBD from α-subunits of nAChR."),
    ("Two parallel processes during reversal",
     "1. AChE inhibition → ↑ACh concentration (pharmacological effect of neostigmine).  2. Continued spontaneous metabolism/elimination of NDMR from body (time-dependent)."),
    ("CEILING EFFECT — the most important limitation",
     "Once AChE is completely inhibited, there is NO further benefit from more neostigmine. Maximum ACh is limited by what the nerve can release. This means neostigmine CANNOT reverse deep block — at very deep block levels, even maximum neostigmine reaches a ceiling TOF ratio of <0.7 to 0.8."),
    ("Muscarinic side effects — ALWAYS treat",
     "ACh accumulation also stimulates muscarinic receptors → bradycardia, increased salivation and secretions, bronchoconstriction, gut hypermotility, increased gastric acid, miosis. MUST co-administer anticholinergic drug."),
    ("BBB impermeability",
     "All anticholinesterases are quaternary ammonium compounds — they do NOT cross the blood-brain barrier. Therefore they do NOT reverse CNS depression or cause central cholinergic effects."),
    ("Cannot reverse depolarising (Phase I) block",
     "Succinylcholine Phase I block is a depolarising block — more ACh would worsen it. Also, neostigmine inhibits pseudocholinesterase → slows succinylcholine metabolism → PROLONGS Phase I block. ONLY use if Phase II block (fade present + succinylcholine cleared)."),
])

# Slide 9 — Neostigmine (main agent)
sl = blank(prs)
header(sl, "Neostigmine — The Standard Anticholinesterase Reversal Agent")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Structure",
     "Quaternary carbamate compound. Inhibits AChE by carbamylation (reversible covalent binding). Also has some direct nicotinic agonist activity at NMJ."),
    ("Dose",
     "0.04–0.08 mg/kg IV. Maximum dose 5 mg (70 kg adult). Onset: 5–7 min. Peak: ~10 min. Duration: 60–120 min."),
    ("When to administer",
     "ONLY when block is MINIMAL: TOF count 4 with TOF ratio ≥0.4 (confirmed by objective monitor). At minimum, wait until TOF count is 4 before giving neostigmine. Administering at deeper levels risks incomplete reversal and false reassurance."),
    ("Neostigmine weakness (Barash)",
     "A paradox: at >0.06 mg/kg, neostigmine can cause neuromuscular WEAKNESS in the PACU due to excess ACh causing depolarisation block (cholinergic crisis at high doses). This is a ceiling / paradoxical effect — more is not better."),
    ("Ceiling effect (critical concept)",
     "Even maximum neostigmine cannot reliably achieve TOF ratio ≥0.9 in moderate block. In a pancuronium model: at twitch 40% control → max TOF ratio 0.8; at twitch 5% control → max TOF ratio 0.6. Only minimal block can be reliably reversed to TOF ratio ≥0.9."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Anticholinergic pairing — MANDATORY",
     "ALWAYS give with: Glycopyrrolate 0.2 mg per 1 mg neostigmine (preferred — similar onset to neostigmine, less tachycardia than atropine). OR Atropine 0.014 mg per 1 mg neostigmine (faster onset but more tachycardia)."),
    ("Glycopyrrolate vs Atropine",
     "Glycopyrrolate: quaternary → does NOT cross BBB or placenta; slower onset (matches neostigmine); less tachycardia. Atropine: tertiary → crosses BBB (CNS effects) and placenta; faster onset (better matched with edrophonium)."),
    ("Factors reducing neostigmine efficacy",
     "Deep block (TOF <4)  •  Volatile anaesthetics still active  •  Acidosis / hypercarbia  •  Hypokalaemia  •  Hypothermia  •  Aminoglycoside antibiotics present  •  Hypermagnesaemia"),
    ("Timing",
     "Give neostigmine 10–15 min before anticipated extubation. If full TOF ratio ≥0.9 not achieved within 10 min of neostigmine → block was TOO DEEP for neostigmine. DO NOT give a second dose — consider sugammadex."),
    ("Cost note",
     "Neostigmine availability and cost varies widely globally. In some regions shortages have occurred — sugammadex availability has increased as an alternative."),
])

# Slide 10 — Pyridostigmine & Edrophonium
sl = blank(prs)
header(sl, "Pyridostigmine & Edrophonium — Alternative Anticholinesterases")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Pyridostigmine", None),
    ("Structure",
     "Quaternary carbamate. Structurally similar to neostigmine but the quaternary N is incorporated into the phenol ring. Shares covalent binding to AChE and lipid insolubility."),
    ("Potency",
     "~20% as potent as neostigmine. Dose: 0.1–0.25 mg/kg IV (max 20 mg adult)."),
    ("Onset / Duration",
     "Slowest onset: 10–15 min (too slow for routine perioperative use). Longest duration: >2 h. Fewer muscarinic side effects per reversal dose."),
    ("Clinical use",
     "Primary use is ORAL therapy for myasthenia gravis (60 mg tablets, 3–5×/day). Rarely used for perioperative reversal due to slow onset."),
    ("Anticholinergic pair",
     "Glycopyrrolate (0.05 mg per 1 mg pyridostigmine) — matched onset."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Edrophonium", None),
    ("Structure",
     "Quaternary phenol compound. Reversibly binds to the anionic site of AChE (electrostatic binding — no covalent bond). Shares same quaternary ammonium structure as neostigmine."),
    ("Dose",
     "0.5–1.0 mg/kg IV. Available as 10 mg/mL solution."),
    ("Onset / Duration",
     "FASTEST onset of all anticholinesterases (~1–2 min). Shortest duration (~30–60 min) — theoretically more prone to 'wearing off' before neostigmine-based reversal."),
    ("Anticholinergic pair",
     "Atropine (preferred — faster onset matches edrophonium's rapid onset). Dose: 0.014 mg atropine per mg edrophonium."),
    ("Clinical uses",
     "1. Reversal of light NDMR block (advantage: fast onset).  2. Diagnosis of myasthenia gravis (Tensilon test — 2 mg IV test dose then 8 mg IV → transient improvement = MG).  3. Differentiation of cholinergic vs myasthenic crisis (see below)."),
    ("Caution — short duration",
     "Short duration means recurarisation is theoretically possible if given too early. Confirm TOF ratio ≥0.9 before extubation."),
])

# Slide 11 — Comparison table: anticholinesterases
sl = blank(prs)
header(sl, "Comparison of Anticholinesterase Reversal Agents")
bg(sl)
rows2 = [
    ["Feature",           "Neostigmine",          "Pyridostigmine",       "Edrophonium"],
    ["Dose",              "0.04–0.08 mg/kg (max 5 mg)", "0.1–0.25 mg/kg (max 20 mg)", "0.5–1.0 mg/kg"],
    ["Onset",             "5–7 min",              "10–15 min",            "1–2 min"],
    ["Peak effect",       "~10 min",              "~15 min",              "~5 min"],
    ["Duration",          "60–120 min",           ">120 min",             "30–60 min"],
    ["Binding to AChE",   "Covalent carbamylation","Covalent carbamylation","Electrostatic (reversible)"],
    ["Preferred antiCh.", "Glycopyrrolate",        "Glycopyrrolate",       "Atropine"],
    ["Best block depth",  "Minimal (TOF ratio ≥0.4)", "Not used periop.",  "Light-minimal block"],
    ["Primary use",       "Perioperative reversal","Oral MG therapy",      "Reversal / Tensilon test"],
]
cw2 = [2.5, 3.3, 3.3, 3.3]
x0, y0, rh = 0.3, 1.28, 0.65
for ri, row in enumerate(rows2):
    x = x0
    for ci, cell in enumerate(row):
        fc = STEEL if ri==0 else (PALE if ri%2==0 else WHITE)
        box(sl, x, y0+ri*rh, cw2[ci], rh, fc)
        sh2=sl.shapes.add_textbox(Inches(x+0.04),Inches(y0+ri*rh+0.05),
                                   Inches(cw2[ci]-0.08),Inches(rh-0.08))
        tf2=sh2.text_frame; tf2.word_wrap=True
        tf2.margin_left=tf2.margin_top=tf2.margin_right=tf2.margin_bottom=Pt(1)
        p2=tf2.paragraphs[0]; p2.alignment=PP_ALIGN.CENTER
        r2=p2.add_run(); r2.text=cell
        r2.font.size=Pt(11 if ri==0 else 10.5)
        r2.font.bold=(ri==0)
        r2.font.color.rgb=WHITE if ri==0 else DARK
        r2.font.name="Calibri"
        x+=cw2[ci]

# ── SECTION 04: Sugammadex ───────────────────────────────────────
divider(prs, "04", "Sugammadex",
        "Selective Relaxant Binding Drug — mechanism, dosing, pharmacokinetics, special populations")

# Slide 13 — Mechanism
sl = blank(prs)
header(sl, "Sugammadex — Structure and Mechanism of Action")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Structure",
     "Modified γ-cyclodextrin (8-membered cyclic oligosaccharide ring). Hollow truncated-cone / 'doughnut' shape. Hydrophobic internal cavity + hydrophilic polar exterior with hydroxyl groups."),
    ("How it works — Encapsulation ('host-guest' complex)",
     "Sugammadex forms a tight 1:1 inclusion complex with the steroid nucleus of aminosteroid NDMRs. Rocuronium fits into the cavity via hydrophobic interactions + van der Waals forces + hydrogen bonds."),
    ("Selectivity",
     "Rocuronium >> Vecuronium > Pancuronium (very weak). NO affinity for benzylisoquinoliniums, succinylcholine, or any non-steroidal drug."),
    ("Association rate",
     "Sugammadex:rocuronium association/dissociation ratio = 25,000,000:1 — essentially irreversible binding. Vecuronium affinity is ~2.5× lower but still clinically effective."),
    ("In vivo reversal mechanism",
     "Rapid plasma encapsulation → free plasma rocuronium falls → concentration gradient → rocuronium moves from NMJ back into plasma → further encapsulation → NMJ cleared."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("No cholinergic mechanism",
     "Sugammadex has ZERO interaction with AChE, nicotinic receptors, or muscarinic receptors. Therefore NO anticholinergic (atropine/glycopyrrolate) needed — a major advantage over neostigmine."),
    ("Plasma concentration increase",
     "After sugammadex, TOTAL plasma rocuronium increases (free + bound) — the drug moves from NMJ to plasma, but is safely encapsulated and pharmacologically inactive."),
    ("Molecular weights",
     "Sugammadex 2002 g/mol + Rocuronium 530 g/mol → complex 2532 g/mol. Sugammadex 2002 g/mol + Vecuronium 638 g/mol → complex 2640 g/mol."),
    ("Pancuronium",
     "Binding affinity to sugammadex is too low for reliable clinical reversal. Do NOT rely on sugammadex for pancuronium reversal."),
    ("Works at ALL block depths",
     "Unique advantage over neostigmine — sugammadex reliably reverses Complete, Deep, Moderate, Shallow, and Minimal block. Dose-dependent speed."),
])

# Slide 14 — Dosing by depth
sl = blank(prs)
header(sl, "Sugammadex Dosing — Based on Depth of Block")
bg(sl)

# Dosing table
dose_rows = [
    ["Depth of Block", "Definition", "Sugammadex Dose", "Expected TOF ratio ≥0.9", "Notes"],
    ["Moderate\n(routine)",   "TOFC 2–3",      "2 mg/kg IV",   "2–4 min (most adults)",  "Most common clinical scenario"],
    ["Deep",                  "TOFC 0, PTC ≥1","4 mg/kg IV",   "2–5 min",                "Reliable even at TOFC 0"],
    ["Immediate / Profound",  "RSI with roc 1.2 mg/kg,\n3 min earlier","16 mg/kg IV","~3 min", "Equivalent to succinylcholine recovery"],
    ["Complete",              "TOFC 0, PTC 0", "16 mg/kg IV",  "Variable — may be longer","Rescue for 'can't intubate can't oxygenate'"],
]
dcw = [2.2, 2.5, 1.9, 2.4, 2.6]
x0, y0, rh = 0.25, 1.28, 0.92
for ri, row in enumerate(dose_rows):
    x = x0
    for ci, cell in enumerate(row):
        fc = STEEL if ri==0 else (RGBColor(0xFD,0xF0,0xD8) if ri==3 else (PALE if ri%2==0 else WHITE))
        box(sl, x, y0+ri*rh, dcw[ci], rh, fc)
        sh2=sl.shapes.add_textbox(Inches(x+0.04),Inches(y0+ri*rh+0.05),
                                   Inches(dcw[ci]-0.08),Inches(rh-0.08))
        tf2=sh2.text_frame; tf2.word_wrap=True
        tf2.margin_left=tf2.margin_top=tf2.margin_right=tf2.margin_bottom=Pt(2)
        p2=tf2.paragraphs[0]; p2.alignment=PP_ALIGN.CENTER
        r2=p2.add_run(); r2.text=cell
        r2.font.size=Pt(11 if ri==0 else 10.5)
        r2.font.bold=(ri==0); r2.font.color.rgb=WHITE if ri==0 else DARK
        r2.font.name="Calibri"
        x+=dcw[ci]
txt(sl, 0.3, 6.65, 12.5, 0.6,
    "Dose based on ACTUAL body weight (ABW). In obesity: ABW dosing recommended — IBW-based dosing leads to ~40% inadequate reversal in morbidly obese patients (Miller's 10e).",
    11, italic=True, color=STEEL)

# Slide 15 — Pharmacokinetics
sl = blank(prs)
header(sl, "Sugammadex — Pharmacokinetics & Special Populations")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Volume of distribution",
     "~18 L (~0.16 L/kg) — restricted primarily to extracellular fluid. Small Vd means it does NOT penetrate cells."),
    ("Elimination",
     "Renal excretion of sugammadex-NDMR complex (unchanged). Elimination half-life ~100 min in healthy adults with normal renal function. Minimal metabolism."),
    ("Renal failure",
     "Both sugammadex and the sugammadex-rocuronium complex accumulate. High-flux haemodialysis can remove the complex — low-flux haemodialysis is ineffective. In severe renal failure (CrCl <30 mL/min), sugammadex is not recommended in EU labelling; FDA has no specific restriction but recommends awareness."),
    ("Hepatic failure",
     "Sugammadex pharmacokinetics largely unaffected by hepatic disease (minimal hepatic metabolism). Can be used in hepatic failure — a key advantage over aminosteroid NDMRs."),
    ("Elderly",
     "Recovery may take longer (~6–10 min vs 2–4 min in younger adults). At standard doses, full reversal still achievable but confirm TOF ≥0.9 by objective monitoring before extubation."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Paediatrics",
     "Sugammadex approved for paediatric use ≥2 years at same mg/kg dosing as adults. Limited data in infants <2 years."),
    ("Obesity",
     "Dose on ACTUAL body weight (not IBW). IBW-based dosing leads to inadequate reversal in 40% of morbidly obese patients. ABW dosing provides reliable reversal."),
    ("Pregnancy / Obstetrics",
     "Sugammadex crosses the placenta (small amounts). Can be used for RSI with rocuronium during caesarean section — provides rescue reversal option. Oral contraceptives: equivalent to missing a single daily dose — advise additional contraception for the remainder of that menstrual cycle."),
    ("Drug interactions",
     "Toremifene (anti-oestrogen cancer drug): competes with steroidal NDMRs for sugammadex binding — may require higher dose.  Flucloxacillin and fusidic acid: reported to compete for binding. Monitor for recurrence of block."),
])

# Slide 16 — Adverse effects & limitations
sl = blank(prs)
header(sl, "Sugammadex — Adverse Effects, Cautions & Limitations")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Anaphylaxis / Hypersensitivity",
     "Rare but potentially severe (~0.3% incidence). Most reactions within 4 min of injection. Treat with high-dose adrenaline (epinephrine) + IV fluid resuscitation. Cardiovascular collapse has been reported and successfully treated. Patients should be monitored post-injection."),
    ("Bradycardia",
     "Transient bradycardia has been reported — mechanism unclear. Monitor HR during and after injection."),
    ("Recurrence of block ('Recurarisation')",
     "If insufficient dose used → residual free NDMR may re-emerge from redistribution → re-paralysis. Administration of additional sugammadex resolves this. Use objective monitoring to confirm TOF ratio ≥0.9."),
    ("No reversal of benzylisoquinoliniums",
     "Sugammadex has NO effect on atracurium, cisatracurium, mivacurium, d-tubocurarine. For these drugs, only neostigmine or spontaneous recovery is available."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Re-administration after initial reversal",
     "If re-intubation needed after sugammadex reversal → wait ≥24 h before re-using rocuronium. If rocuronium needed within 24 h → use succinylcholine or a benzylisoquinolinium. If urgent re-intubation immediately after sugammadex: succinylcholine 1.2 mg/kg OR rocuronium at higher dose (1.2 mg/kg) — onset and duration may be unpredictable (Miller's 10e)."),
    ("Reintubation after sugammadex (Miller's)",
     "Clinical studies show that after 2 mg/kg sugammadex reversal of a moderate block, re-administration of rocuronium (1.2 mg/kg) within 30 min resulted in adequate intubating conditions but slightly prolonged clinical duration. Succinylcholine is the preferred agent if re-intubation is needed within 24 h."),
    ("Cost considerations",
     "Sugammadex is significantly more expensive than neostigmine globally. However, pharmacoeconomic analyses show cost-effectiveness when accounting for reduced complications, shorter PACU time, and fewer adverse events."),
    ("NOT approved for all NDMRs",
     "Labelling covers rocuronium and vecuronium only. Use for pancuronium is off-label and unreliable."),
])

# ── SECTION 05: Practical Decision Algorithm ────────────────────
divider(prs, "05", "Practical Reversal Decision Algorithm",
        "Choosing the right agent at the right time")

# Slide 18 — Algorithm
sl = blank(prs)
header(sl, "Reversal Decision Algorithm (Evidence-Based)")
bg(sl)
# Step boxes
steps = [
    ("Step 1", "End of surgery — check depth of block with objective monitor (AMG/EMG)", STEEL),
    ("Step 2", "Is NDMR an Aminosteroid (rocuronium/vecuronium) or Benzylisoquinolinium (atracurium/cisatracurium)?", TEAL),
    ("Step 3A [Aminosteroid]", "TOF count 0, PTC 0 (Complete) → Sugammadex 16 mg/kg\n"
                               "TOF count 0, PTC ≥1 (Deep) → Sugammadex 4 mg/kg\n"
                               "TOF count 1–3 (Moderate) → Sugammadex 2 mg/kg\n"
                               "TOF count 4, ratio ≥0.4 (Minimal) → Sugammadex 2 mg/kg  OR  Neostigmine 0.04 mg/kg + Glycopyrrolate", NAVY),
    ("Step 3B [Benzylisoquinolinium]", "Any depth → Neostigmine 0.04–0.08 mg/kg + Glycopyrrolate\n"
                                       "ONLY at TOF count ≥4 (ratio ≥0.4). If deeper block → wait for spontaneous recovery to TOF count 4 before neostigmine.", RGBColor(0x1A, 0x5E, 0x6A)),
    ("Step 4", "Confirm TOF ratio ≥0.9 on OBJECTIVE monitor before extubation.\n"
               "If TOF ratio <0.9 → do NOT extubate. Re-dose sugammadex (2 mg/kg) or wait.", RGBColor(0x11, 0x55, 0x22)),
]
y_s = 1.28
for (label, content, color) in steps:
    box(sl, 0.25, y_s, 12.8, 0.95, color)
    sh2 = sl.shapes.add_textbox(Inches(0.35), Inches(y_s+0.05), Inches(2.2), Inches(0.82))
    tf2 = sh2.text_frame; tf2.word_wrap = True
    p2 = tf2.paragraphs[0]; r2=p2.add_run(); r2.text=label
    r2.font.name="Calibri"; r2.font.size=Pt(12); r2.font.bold=True; r2.font.color.rgb=AMBER
    sh3 = sl.shapes.add_textbox(Inches(2.65), Inches(y_s+0.04), Inches(10.2), Inches(0.87))
    tf3 = sh3.text_frame; tf3.word_wrap = True
    tf3.margin_left = tf3.margin_top = tf3.margin_right = tf3.margin_bottom = Pt(2)
    p3 = tf3.paragraphs[0]; r3=p3.add_run(); r3.text=content
    r3.font.name="Calibri"; r3.font.size=Pt(11); r3.font.color.rgb=WHITE
    y_s += 1.02

# ── SECTION 06: Special Situations ──────────────────────────────
divider(prs, "06", "Special Situations in Reversal",
        "Myasthenia gravis  ·  Phase II block  ·  Failed reversal  ·  ICU  ·  RSI rescue")

# Slide 20
sl = blank(prs)
header(sl, "Special Situations in Neuromuscular Reversal")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Myasthenia Gravis (MG)",
     "Reduced nAChR density → exquisitely SENSITIVE to NDMRs (use 10–25% of standard dose). Anticholinesterases (neostigmine, pyridostigmine) are the PRIMARY treatment for MG. For perioperative reversal: sugammadex preferred if aminosteroid used. Use objective monitoring."),
    ("Phase II Succinylcholine Block",
     "Prolonged succinylcholine infusion → Phase II block resembles NDMR block (fade on TOF, post-tetanic potentiation). Neostigmine CAN be used ONLY if: (1) fade is confirmed, and (2) circulating succinylcholine levels are negligible. Risk: if succinylcholine still present → neostigmine prolongs block via pseudocholinesterase inhibition."),
    ("Failed Neostigmine Reversal",
     "If TOF ratio <0.9 at 10 min after neostigmine → block was too deep. DO NOT give more neostigmine (ceiling effect). Options: (1) Sugammadex 2–4 mg/kg (if aminosteroid NDMR). (2) Wait for spontaneous recovery. (3) Maintain airway + ventilate until recovery confirmed."),
    ("Organophosphate poisoning",
     "Organophosphates irreversibly inhibit AChE → cholinergic crisis. Anticholinesterases (neostigmine) are ABSOLUTELY CONTRAINDICATED — they would worsen toxicity."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("ICU Prolonged NDMR Infusion",
     "Prolonged use → accumulation (especially vecuronium + renal failure → 3-desacetylvecuronium). Use cisatracurium for ICU (Hofmann, organ-independent). Recovery may take HOURS. Sugammadex can reverse cisatracurium? NO — sugammadex only works for aminosteroids."),
    ("RSI Rescue — Can't Intubate, Can't Oxygenate",
     "After RSI with rocuronium 1.2 mg/kg: sugammadex 16 mg/kg IV → complete reversal in ~3 min → patient can breathe spontaneously. This is the pharmacological 'escape route' when the airway cannot be secured and face mask ventilation is impossible."),
    ("Pregnancy / Caesarean Section",
     "Sugammadex can be used when rocuronium is given for RSI in obstetric patients. Small placental transfer. After delivery, no neonatal concerns identified in available studies. Counsel patient regarding oral contraceptive efficacy."),
    ("Diabetes",
     "Type 2 diabetes associated with delayed TOF ratio recovery to 0.7 and 0.9 after vecuronium. Mechanism unclear — may relate to autonomic neuropathy or altered neuromuscular transmission. Use objective monitoring."),
    ("Mixed NDMR classes",
     "Do NOT administer aminosteroid NDMR on top of benzylisoquinolinium (or vice versa) — duration becomes unpredictable. If this occurs: cisatracurium component cannot be reversed by sugammadex; wait for Hofmann metabolism."),
])

# ── SECTION 07: Factors Affecting Reversal ───────────────────────
divider(prs, "07", "Factors Affecting Adequacy of Reversal",
        "What slows, impairs, or accelerates return of neuromuscular function")

# Slide 22
sl = blank(prs)
header(sl, "Factors Affecting Adequacy of Reversal")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("Factors IMPAIRING neostigmine reversal", None),
    ("Depth of block",
     "The single most important factor. Neostigmine reliable ONLY at minimal block (TOF ratio ≥0.4). Ceiling effect prevents complete reversal at deeper levels."),
    ("Acidosis / Hypercarbia",
     "Interferes with anticholinesterase effectiveness. Also potentiates NDMR block directly. Correct before attempting reversal."),
    ("Hypokalaemia",
     "Potentiates NDMR block AND reduces neostigmine effectiveness. Check electrolytes."),
    ("Hypothermia",
     "Slows all NDMR elimination + slows Hofmann degradation + reduces receptor sensitivity. Warm patient before reversal."),
    ("Aminoglycoside antibiotics",
     "Potentiate NDMR block by pre-synaptic Ca²⁺ channel blockade + post-synaptic effect. Reduce effectiveness of reversal."),
    ("Active volatile anaesthetic",
     "Volatile agents potentiate NDMR block. Higher MAC → greater potentiation. Allow washout before reversal."),
    ("Hypermagnesaemia",
     "MgSO₄ (eclampsia treatment) inhibits Ca²⁺ channels pre- and post-synaptically → potentiates NDMR block significantly."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Factors NOT affecting sugammadex", None),
    ("Acidosis, hypothermia, electrolytes",
     "Sugammadex acts by encapsulation, not via AChE or cholinergic receptors. These physiological variables do NOT impair sugammadex effectiveness."),
    ("Volatile anaesthetics",
     "Sugammadex bypasses NMJ pharmacology entirely — volatile agents do NOT reduce its efficacy."),
    ("Factors REDUCING NDMR block (facilitating recovery)", None),
    ("Alkalosis",
     "Reduces NDMR potency through receptor effects."),
    ("Phenytoin (chronic)",
     "Upregulates nAChRs + increases NDMR metabolism → apparent resistance → faster spontaneous recovery."),
    ("Carbamazepine (chronic)",
     "Similar to phenytoin — receptor upregulation + increased metabolism."),
    ("Theophylline",
     "Antagonises NDMR effects → facilitates recovery."),
    ("Clinical message",
     "Always check pH, K⁺, temperature, antibiotics, and volatile agent level BEFORE deciding reversal strategy."),
])

# ── SLIDE: Residual Paralysis — Safe Extubation ──────────────────
sl = blank(prs)
header(sl, "Safe Extubation Criteria & Prevention of Residual Paralysis")
bg(sl)
blist(sl, 0.3, 1.28, 6.1, 5.9, [
    ("MANDATORY criterion for extubation",
     "TOF ratio ≥0.9 confirmed by OBJECTIVE quantitative monitor (AMG, EMG, or kinemyography). This is the ONLY reliable criterion."),
    ("Supplementary clinical signs (UNRELIABLE alone)",
     "5-second head lift  •  Sustained hand grip  •  Ability to follow commands  •  Tidal volume >5 mL/kg  •  Vital capacity >15 mL/kg. These can be achieved with TOF ratio as low as 0.4–0.6."),
    ("Signs consistent with residual paralysis",
     "Diplopia / blurred vision  •  Facial weakness  •  Difficulty swallowing / choking  •  Inability to maintain upper airway  •  Paradoxical breathing  •  Desaturation on air  •  Impaired cough"),
    ("Management of residual paralysis in PACU",
     "1. Maintain airway support (jaw thrust, airway adjunct, bag-mask ventilation).  2. Confirm TOF count and ratio.  3. Administer sugammadex (2–4 mg/kg if aminosteroid NDMR) OR neostigmine (if TOF ratio ≥0.4 and benzylisoquinolinium).  4. Maintain supplemental oxygen.  5. Re-confirm TOF ratio ≥0.9 before removal of airway support."),
])
blist(sl, 6.5, 1.28, 6.5, 5.9, [
    ("Prevention protocol",
     "1. Use intermediate-acting NDMRs (rocuronium, vecuronium, cisatracurium) rather than long-acting (pancuronium).  2. Objective NMB monitoring THROUGHOUT anaesthesia.  3. Do NOT administer neostigmine at TOF count <4.  4. Time neostigmine 10–15 min before extubation.  5. Document TOF ratio ≥0.9 before extubation."),
    ("Neostigmine vs Sugammadex residual paralysis rates",
     "Neostigmine: ~30–40% residual paralysis (TOF ratio <0.9) on arrival to PACU. Sugammadex: ~5% residual paralysis. Clearly favours sugammadex — where available and cost-effective."),
    ("International guidelines (2018)",
     "Canada (CAS)  •  France (SFAR)  •  Spain (SEDAR)  •  Australia & NZ (ANZCA)  •  UK (AAGBI)  •  USA (ASA) — all recommend routine objective quantitative neuromuscular monitoring and documented TOF ratio ≥0.9 before extubation."),
    ("Postoperative pulmonary complications",
     "Residual paralysis is an independent risk factor for PPCs including pneumonia, respiratory failure, and unplanned ICU admission. Objective monitoring + appropriate reversal reduces these outcomes."),
])

# ── SUMMARY ──────────────────────────────────────────────────────
sl = blank(prs)
box(sl, 0, 0, W, H, NAVY)
box(sl, 0, 0.9, W, 0.08, TEAL)
txt(sl, 0.5, 0.1, 12.3, 0.85, "Summary — Reversal of Neuromuscular Blockers",
    28, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

summ = [
    ("Problem",       "30–40% residual paralysis with neostigmine. Standard clinical tests miss TOF ratio 0.4–0.9. Objective monitoring is the only solution."),
    ("Depth levels",  "Complete (PTC 0) → Deep (PTC ≥1) → Moderate (TOFC 1–3) → Shallow (TOFC 4, ratio <0.4) → Minimal (ratio 0.4–0.9) → Recovered (ratio ≥0.9)."),
    ("Neostigmine",   "0.04–0.08 mg/kg + glycopyrrolate. Effective ONLY at minimal block. Ceiling effect — do NOT give at TOFC <4. Cannot reverse deep block. Avoid in benzylisoquinoliniums beyond minimal block."),
    ("Edrophonium",   "0.5–1 mg/kg + atropine. Fastest onset. Shortest duration. Used for Tensilon test in MG diagnosis."),
    ("Sugammadex",    "2 mg/kg (moderate) | 4 mg/kg (deep) | 16 mg/kg (immediate/profound). Works at ALL depths. No anticholinergic needed. Aminosteroids ONLY."),
    ("Key rule",      "Aminosteroid NDMR → sugammadex preferred. Benzylisoquinolinium → neostigmine (at minimal block only) or wait. Never mix NDMR classes."),
    ("Safe extubation","TOF ratio ≥0.9 by OBJECTIVE monitor. Do NOT rely on clinical signs alone. International consensus: mandatory standard of care."),
    ("Special cases", "RSI rescue: sugammadex 16 mg/kg. MG: sugammadex preferred. Phase II block: neostigmine only if SCh cleared + fade confirmed."),
]

sh = sl.shapes.add_textbox(Inches(0.3), Inches(1.05), Inches(12.7), Inches(6.25))
tf = sh.text_frame; tf.word_wrap = True
for i, (k, v) in enumerate(summ):
    p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
    p.space_before = Pt(4)
    r1 = p.add_run(); r1.text = f"{k}:  "
    r1.font.bold=True; r1.font.size=Pt(13); r1.font.color.rgb=TEAL; r1.font.name="Calibri"
    r2 = p.add_run(); r2.text = v
    r2.font.size=Pt(12.5); r2.font.color.rgb=WHITE; r2.font.name="Calibri"

out = "/tmp/workspace/nmj-ppt/NMB_Reversal.pptx"
prs.save(out)
print(f"Done. Slides: {len(prs.slides)}. Saved: {out}")
Running Command

cd /tmp/workspace/nmj-ppt && python build_reversal.py 2>&1

Your presentation is ready — 24 slides, all sourced from standard anesthesia textbooks:

NMB Reversal

Presentation · PPTX


24 slides across 7 sections:

Section 01 - Why Reversal Matters (Slides 2-3)

  • Residual paralysis: definition, ~40% incidence with neostigmine, ~5% with sugammadex
  • Clinical consequences: obstruction, aspiration, hypoxia, impaired hypoxic ventilatory response
  • Why clinical tests (head lift, hand grip) fail - can be performed at TOF ratio as low as 0.4
  • NDMRs do not cause unconsciousness - awareness risk

Section 02 - Depth of Block (Slides 4-6)

  • Six-level classification table with TOF count, TOF ratio, PTC, and receptor occupancy for each
  • Complete (PTC 0) → Deep (PTC ≥1) → Moderate (TOFC 1-3) → Shallow (ratio <0.4) → Minimal (ratio 0.4-0.9) → Recovered (ratio ≥0.9)
  • All peripheral nerve stimulation patterns: ST, TOF, Tetanus, PTC, DBS — with fade explained
  • Objective vs subjective monitoring — why subjective misses residual paralysis

Section 03 - Anticholinesterases (Slides 7-11)

  • Mechanism: AChE inhibition, ceiling effect in detail (rat diaphragm data from Barash), muscarinic side effects
  • Neostigmine: dosing, peak timing, when to give, ceiling effect, neostigmine weakness paradox
  • Glycopyrrolate vs Atropine: why glycopyrrolate preferred (matched onset, no BBB crossing)
  • Pyridostigmine: slow onset, oral MG use
  • Edrophonium: fastest onset, Tensilon test
  • Full comparison table of all three agents

Section 04 - Sugammadex (Slides 12-16)

  • Mechanism: gamma-cyclodextrin encapsulation, 25,000,000:1 association rate, no cholinergic pathway
  • Dosing table by depth: 2 / 4 / 16 mg/kg with expected reversal times
  • Pharmacokinetics: Vd 18 L, renal excretion, renal failure considerations, obesity (ABW vs IBW)
  • Adverse effects: anaphylaxis (~0.3%), bradycardia, recurarisation
  • Re-intubation after sugammadex: what to do within 24 hours

Section 05 - Practical Algorithm (Slide 17-18)

  • Step-by-step decision algorithm: check depth → identify drug class → select agent and dose → confirm TOF ≥0.9

Section 06 - Special Situations (Slides 19-20)

  • Myasthenia gravis, Phase II SCh block, failed reversal, organophosphate poisoning
  • ICU prolonged infusion, RSI rescue (can't intubate can't oxygenate), pregnancy, diabetes, mixed NDMR classes

Section 07 - Factors Affecting Reversal (Slides 21-23)

  • Factors impairing neostigmine: acidosis, hypokalaemia, hypothermia, aminoglycosides, volatile agents, hypermagnesaemia
  • Factors NOT affecting sugammadex (bypasses NMJ pharmacology entirely)
  • Safe extubation criteria, prevention protocol, international guideline consensus

Summary Slide (Slide 24)

All key points condensed on dark navy background.
Sources: Miller's Anesthesia 10e | Barash 9e | Morgan & Mikhail 7e | Katzung 16e

And monitoring and tests of nmb

Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Writing File

~/nmj-ppt/build_monitoring.py

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
import subprocess, json, base64
from io import BytesIO

# ── Palette ──────────────────────────────────────────────────────
NAVY  = RGBColor(0x0A,0x27,0x44)
TEAL  = RGBColor(0x00,0x8E,0x8E)
WHITE = RGBColor(0xFF,0xFF,0xFF)
LIGHT = RGBColor(0xF0,0xF5,0xFA)
DARK  = RGBColor(0x1A,0x1A,0x2E)
STEEL = RGBColor(0x28,0x56,0x8A)
PALE  = RGBColor(0xE2,0xEC,0xF5)
AMBER = RGBColor(0xF5,0xA0,0x20)
GREEN = RGBColor(0x14,0x78,0x14)
RED   = RGBColor(0xBB,0x22,0x22)
LBLUE = RGBColor(0xAA,0xCC,0xEE)
W, H  = 13.333, 7.5

def new_prs():
    p = Presentation(); p.slide_width=Inches(W); p.slide_height=Inches(H); return p
def blank(prs): return prs.slides.add_slide(prs.slide_layouts[6])

def box(sl,x,y,w,h,c):
    s=sl.shapes.add_shape(1,Inches(x),Inches(y),Inches(w),Inches(h))
    s.fill.solid(); s.fill.fore_color.rgb=c; s.line.fill.background(); return s

def t(sl,x,y,w,h,text,size,bold=False,color=DARK,align=PP_ALIGN.LEFT,
      wrap=True,italic=False,font="Calibri"):
    sh=sl.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h))
    tf=sh.text_frame; tf.word_wrap=wrap
    tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=Pt(2)
    p=tf.paragraphs[0]; p.alignment=align
    r=p.add_run(); r.text=text; r.font.name=font; r.font.size=Pt(size)
    r.font.bold=bold; r.font.italic=italic; r.font.color.rgb=color
    return tf

def hdr(sl,title,sub=""):
    box(sl,0,0,W,1.12,NAVY); box(sl,0,1.12,W,0.07,TEAL)
    t(sl,0.4,0.1,12.5,0.85,title,25,bold=True,color=WHITE)
    if sub: t(sl,0.4,0.78,12.5,0.38,sub,12,italic=True,color=TEAL)

def bg(sl): box(sl,0,1.19,W,H-1.19,LIGHT)

def bl(sl,x,y,w,h,items,ts=16,ss=13.5):
    sh=sl.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h))
    tf=sh.text_frame; tf.word_wrap=True
    tf.margin_left=tf.margin_top=tf.margin_right=tf.margin_bottom=Pt(4)
    first=True
    for (tt,ss_) in items:
        p=tf.paragraphs[0] if first else tf.add_paragraph()
        first=False; p.space_before=Pt(5)
        r=p.add_run(); r.text="▶  "+tt
        r.font.name="Calibri"; r.font.size=Pt(ts); r.font.bold=True; r.font.color.rgb=TEAL
        if ss_:
            p2=tf.add_paragraph(); p2.level=1; p2.space_before=Pt(2)
            r2=p2.add_run(); r2.text=ss_
            r2.font.name="Calibri"; r2.font.size=Pt(ss); r2.font.color.rgb=DARK

def div(prs,n,title,sub=""):
    sl=blank(prs); box(sl,0,0,W,H,NAVY); box(sl,0,3.22,W,0.1,TEAL)
    t(sl,1,1.2,11,0.85,f"Section  {n}",20,italic=True,color=TEAL,align=PP_ALIGN.CENTER)
    t(sl,0.5,2.2,12.3,1.5,title,38,bold=True,color=WHITE,align=PP_ALIGN.CENTER)
    if sub: t(sl,0.5,4.2,12.3,0.9,sub,17,italic=True,color=LBLUE,align=PP_ALIGN.CENTER)

def add_img(sl, path, x, y, w):
    try: sl.shapes.add_picture(path, Inches(x), Inches(y), width=Inches(w))
    except: pass

def table_slide(prs, title, sub, rows, col_widths, x0=0.25, y0=1.28, rh=0.68,
                alt_color=PALE, hdr_color=STEEL, note=""):
    sl=blank(prs); hdr(sl,title,sub); bg(sl)
    for ri,row in enumerate(rows):
        x=x0
        for ci,cell in enumerate(row):
            fc=hdr_color if ri==0 else (alt_color if ri%2==0 else WHITE)
            box(sl,x,y0+ri*rh,col_widths[ci],rh,fc)
            sh2=sl.shapes.add_textbox(Inches(x+0.04),Inches(y0+ri*rh+0.05),
                                       Inches(col_widths[ci]-0.08),Inches(rh-0.08))
            tf2=sh2.text_frame; tf2.word_wrap=True
            tf2.margin_left=tf2.margin_top=tf2.margin_right=tf2.margin_bottom=Pt(1)
            p2=tf2.paragraphs[0]; p2.alignment=PP_ALIGN.CENTER
            r2=p2.add_run(); r2.text=cell
            r2.font.size=Pt(11 if ri==0 else 10.5)
            r2.font.bold=(ri==0); r2.font.color.rgb=WHITE if ri==0 else DARK
            r2.font.name="Calibri"; x+=col_widths[ci]
    if note:
        t(sl,0.3,y0+len(rows)*rh+0.05,12.6,0.55,note,10.5,italic=True,color=STEEL)
    return sl

# ════════════════════════════════════════════════════════════════
prs=new_prs()

# ── TITLE SLIDE ─────────────────────────────────────────────────
sl=blank(prs)
box(sl,0,0,W,H,NAVY); box(sl,0,5.48,W,0.12,TEAL)
box(sl,0,5.6,W,1.9,RGBColor(0x06,0x17,0x33))
t(sl,0.5,0.45,12.3,0.75,"NEUROMUSCULAR BLOCKADE",16,color=TEAL,align=PP_ALIGN.CENTER)
t(sl,0.3,1.15,12.7,2.1,"Monitoring & Tests of\nNeuromuscular Block",46,bold=True,
  color=WHITE,align=PP_ALIGN.CENTER)
t(sl,0.3,3.1,12.7,0.9,
  "Peripheral Nerve Stimulation  ·  Stimulation Patterns  ·  Objective Monitoring  ·  Clinical Tests  ·  Depolarising vs Non-Depolarising",
  14,italic=True,color=LBLUE,align=PP_ALIGN.CENTER)
t(sl,0.3,5.6,12.7,0.6,
  "Sources: Miller's Anesthesia 10e  |  Barash 9e  |  Morgan & Mikhail 7e  |  Katzung 16e",
  11,color=RGBColor(0x66,0x88,0xAA),align=PP_ALIGN.CENTER)

# ── SECTION 01: Why Monitor ──────────────────────────────────────
div(prs,"01","Why Monitor Neuromuscular Blockade?",
    "Historical context, residual paralysis, and the case for objective monitoring")

# Slide 3
sl=blank(prs); hdr(sl,"The Clinical Imperative for NMB Monitoring"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Historical reliance on clinical judgement",
     "Clinicians worldwide have historically used TIME since last NDMR dose and clinical assessment (head-lift, grip) as primary indicators of recovery. Both are now known to be dangerously unreliable."),
    ("5-second head lift fails",
     "In one landmark study, 11 out of 12 volunteers could perform a 5-second head lift despite TOF ratio ≤0.5 — indicating SIGNIFICANT residual paralysis. This test therefore misses ~50% of patients with dangerous residual block."),
    ("All clinical signs are insensitive",
     "Head lift  •  Hand grip  •  Tidal volume  •  Vital capacity  •  Maximum inspiratory force  •  Eye opening  •  Tongue protrusion. These CAN be performed with TOF ratio as low as 0.4–0.6. NONE can reliably detect residual paralysis."),
    ("The residual paralysis epidemic",
     "30–40% of patients reversed with neostigmine demonstrate residual paralysis (TOF ratio <0.9) on PACU arrival. Even with sugammadex, ~5% have residual paralysis. 230 million surgeries/year globally = enormous absolute harm."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Consequences of residual paralysis",
     "Upper airway obstruction  •  Passive regurgitation + aspiration  •  Hypoxaemia  •  Atelectasis  •  Impaired hypoxic ventilatory response (HVR — the body's last defence against hypoxia)  •  Unplanned ICU admission  •  Increased PPCs  •  Prolonged PACU stay"),
    ("Why HVR matters",
     "Residual paralysis impairs carotid body chemoreceptor responsiveness — patients fail to increase ventilation when SpO₂ falls. This occurs even with TOF ratio as high as 0.7. Full carotid body function only restored when TOF ratio ≥0.9."),
    ("Peripheral nerve stimulators — the solution",
     "PNS devices have been available for >65 years. Yet underused in clinical practice. Objective quantitative monitors (AMG, EMG) provide actual TOF RATIOS — not just counts. International consensus (2018+) now mandates their routine use."),
    ("Key message",
     "Neither time since last dose NOR clinical signs should be used as the sole criterion for extubation. Objective monitoring is the ONLY reliable method."),
])

# ── SECTION 02: Nerve Stimulation Physiology ────────────────────
div(prs,"02","Physiology of Peripheral Nerve Stimulation",
    "Supramaximal stimuli, electrode placement, and muscle response")

# Slide 5
sl=blank(prs); hdr(sl,"Peripheral Nerve Stimulator — Principles of Operation"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("What it does",
     "Delivers supramaximal electrical stimuli to a peripheral motor nerve → measures the evoked mechanical or electrical response of the innervated muscle. Indirect assessment of NMJ function."),
    ("Supramaximal stimulus",
     "Stimulus intensity 10–20% ABOVE that required to produce maximum response. Ensures ALL nerve fibres are activated equally so response reflects NMJ status alone, not incomplete nerve activation. Typically 20–60 mA with 0.1–0.2 ms pulse width."),
    ("Waveform",
     "Square-wave pulses. Monophasic. Duration 0.1–0.3 ms. Longer pulses cause discomfort; shorter pulses may not achieve supramaximal stimulation."),
    ("Electrode placement — Ulnar nerve (gold standard)",
     "NEGATIVE (black/distal) electrode placed over the ulnar groove at the wrist, just medial to the flexor carpi ulnaris tendon. POSITIVE (red/proximal) electrode 3–5 cm proximal. 'Red toward the head' mnemonic. Stimulates adductor pollicis (thumb adduction) + first dorsal interosseous muscle."),
    ("Why ulnar nerve?",
     "Adductor pollicis is accessible, reproducible, and most closely represents the pharmacodynamic effect of NDMRs on the diaphragm and laryngeal muscles for clinical decision making."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Alternative stimulation sites",
     "Facial nerve (corrugator supercilii / orbicularis oculi): accessible intraoperatively but MOST RESISTANT to NMB. Use ONLY for intraoperative assessment of deep block. Switch to adductor pollicis before reversal decisions.  Posterior tibial nerve → flexor hallucis brevis.  Median nerve at wrist."),
    ("CRITICAL: Corrugator supercilii caution",
     "Corrugator supercilii is one of the most RESISTANT muscles to NDMR. Using it overestimates the degree of recovery. FDA: sugammadex dosing recommendations do NOT apply when TOF is measured at corrugator supercilii. Residual paralysis 5× higher when eye-muscle monitoring is used vs adductor pollicis."),
    ("First dorsal interosseous",
     "Best alternative when adductor pollicis is inaccessible. Most closely mimics adductor pollicis sensitivity. Located on dorsum of hand between thumb and index finger."),
    ("Abductor digiti minimi",
     "More RESISTANT than adductor pollicis (TOF ratio bias +0.09). Caution: recovery at this site does NOT guarantee adductor pollicis recovery."),
    ("Temperature effect",
     "Cold extremities → reduced nerve excitability and muscle response amplitude. Warm the limb before monitoring. Hypothermia prolongs NDMR duration AND slows Hofmann degradation."),
])

# ── SECTION 03: Stimulation Patterns ───────────────────────────
div(prs,"03","Patterns of Peripheral Nerve Stimulation",
    "Single Twitch  ·  TOF  ·  Tetanus  ·  PTC  ·  DBS — mechanism & clinical use")

# Slide 7 — Single Twitch
sl=blank(prs); hdr(sl,"Single Twitch (ST) Stimulation"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Definition",
     "A single supramaximal square-wave stimulus (0.1–0.3 ms duration) delivered at 0.1 Hz (every 10 s) or 1 Hz (every 1 s)."),
    ("What it measures",
     "Twitch height (T1) as a percentage of baseline pre-NDMR control twitch. Requires CALIBRATION (control measurement before drug administration)."),
    ("Dose-response",
     "Twitch height decreases progressively as NDMR dose/effect increases. T1 is the FIRST parameter to disappear as block deepens and the LAST to return during recovery."),
    ("Limitations",
     "Requires a pre-block baseline measurement — not possible if NDMR already given. Does NOT distinguish between depolarising and nondepolarising block. Cannot detect residual paralysis — T1 returns to 100% well before full NMJ recovery (TOF ratio may still be <0.9 when T1 = 100%)."),
    ("Clinical use",
     "Useful for: dose-response studies  •  Detecting onset of complete block (T1 = 0)  •  Maintenance of surgical relaxation (targeting T1 = 0–10%). Not useful for extubation decisions."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Depolarising (Phase I) block — ST pattern",
     "Reduced twitch height with NO FADE. All four twitches in a TOF are equally reduced (T4/T1 ratio ≈ 1.0). No post-tetanic potentiation (PTP). Twitch returns to baseline on recovery."),
    ("Non-depolarising block — ST pattern",
     "Reduced twitch height. With repeated stimulation → FADE develops. Post-tetanic potentiation (PTP) is present — twitch height temporarily INCREASES after tetanic stimulation (due to enhanced ACh mobilisation)."),
    ("Phase II (dual) block — ST pattern",
     "Initially resembles Phase I. After prolonged succinylcholine → FADE appears on TOF and PTP develops. Now mimics a nondepolarising block. At this stage, neostigmine MAY be effective (only if circulating SCh has been metabolised)."),
    ("Relationship to receptor occupancy",
     "T1 = 0 when ~90–95% receptors are occupied. T1 = 100% (fully recovered) when ~70–75% receptors are still occupied by NDMR — explaining why T1 recovery ≠ full NMJ recovery."),
])

# Slide 8 — TOF
sl=blank(prs); hdr(sl,"Train-of-Four (TOF) Stimulation","The most clinically important NMB monitoring pattern"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Definition",
     "4 supramaximal stimuli delivered at 2 Hz (one every 0.5 s) = one complete TOF takes 2 seconds. First described by Ali et al. in 1970."),
    ("Two key measurements",
     "1. TOF COUNT (TOFC): Number of detectable twitches (0–4). Used when block is moderate-deep.  2. TOF RATIO (TOFR): Height of 4th twitch ÷ Height of 1st twitch (T4/T1). Used when all 4 twitches are present. The critical parameter for extubation."),
    ("FADE",
     "In nondepolarising block: each successive twitch is SMALLER than the previous (T4 < T3 < T2 < T1). Due to pre-junctional blockade of α₃β₂ receptors → progressive reduction in ACh mobilisation with successive stimuli."),
    ("No fade in Phase I depolarising block",
     "Succinylcholine Phase I: all 4 twitches are equally reduced (no fade). TOFR ≈ 1.0. Critical distinction from NDMR block."),
    ("TOF count as depth marker",
     "TOFC 4 = shallow/minimal block. TOFC 3 = moderate block. TOFC 2 = moderate block. TOFC 1 = moderate block. TOFC 0 = deep/complete block."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("TOF ratio thresholds — clinical significance",
     "TOFR ≥0.9 = RECOVERED (safe for extubation per international consensus). TOFR 0.4–0.9 = MINIMAL block (appears normal clinically — RESIDUAL PARALYSIS). TOFR <0.4 = SHALLOW block (fade detectable manually). TOFR = 0 with TOFC 4 = rarely possible — reassess monitoring technique."),
    ("Why 0.9 and not 0.7?",
     "At TOFR 0.7: upper airway dilators partially impaired, HVR impaired. At TOFR 0.9: pharyngeal function restored, swallowing normalised, HVR near-normal. Studies show TOFR 0.7 was an inadequate historical threshold — current consensus is ≥0.9."),
    ("TOF repetition interval",
     "TOF can be repeated every 10–20 seconds without interfering with the evoked response (unlike tetanus which fatigues the NMJ). This makes it practical for continuous monitoring."),
    ("No baseline required",
     "Unlike single twitch, TOF count and ratio do NOT require a pre-NDMR baseline — a major practical advantage. Can be used even after NDMR administration."),
    ("Image reference",
     "TOF during NDMR block: T1 and T2 visible, T3 and T4 absent = TOFC 2 (moderate block). TOFR cannot be calculated when TOFC <4."),
])

# Slide 9 — Tetanus + PTP
sl=blank(prs); hdr(sl,"Tetanic Stimulation & Post-Tetanic Potentiation (PTP)"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Tetanic stimulation — definition",
     "Rapid, sustained high-frequency stimulation: typically 50 Hz for 5 seconds. Some protocols use 100 Hz. Creates a fused, sustained muscle contraction."),
    ("Normal response",
     "Sustained constant contraction — no fade. Indicates no clinically relevant NMB."),
    ("NDMR block — tetanus pattern",
     "FADE: progressive weakening of the tetanic contraction. Due to pre-junctional blockade → ACh stores depleted faster than they can be replenished during high-frequency stimulation. The degree of fade reflects the depth of nondepolarising block."),
    ("Depolarising (Phase I) — tetanus pattern",
     "SUSTAINED contraction — NO fade. This is a characteristic feature that distinguishes Phase I from nondepolarising block."),
    ("Phase II block — tetanus pattern",
     "FADE develops (resembling NDMR block). Indicates transition from Phase I to Phase II. Post-tetanic potentiation also appears."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Post-Tetanic Potentiation (PTP)",
     "After a tetanic stimulus, subsequent single twitches or TOF responses are transiently LARGER than before tetanus. T1 height may increase significantly for 1–2 minutes after tetany."),
    ("Mechanism of PTP",
     "Tetanic stimulation causes massive Ca²⁺ entry into the nerve terminal → transient increase in ACh mobilisation + enhanced quantal release → greater EPP and larger twitch for a short period."),
    ("NDMR: PTP PRESENT",
     "After tetanus, enhanced ACh release temporarily overcomes NDMR competitive blockade → twitch height increases (PTP). This is a NDMR feature."),
    ("Phase I SCh: PTP ABSENT",
     "No enhanced ACh release after tetanus → no PTP in Phase I block."),
    ("Clinical caution",
     "Tetanic stimulation is PAINFUL in awake patients. Use only under general anaesthesia. Do NOT repeat within 5–10 min (muscle fatigue distorts subsequent readings). Use 50 Hz for standard clinical assessment; 100 Hz rarely needed."),
    ("Sensitivity",
     "Tetanus is MORE SENSITIVE than manual TOF for detecting fade at TOF ratios of 0.4–0.7. However, it cannot quantify TOF ratio accurately."),
])

# Slide 10 — PTC
sl=blank(prs); hdr(sl,"Post-Tetanic Count (PTC)","Used when TOF count = 0 to predict time to spontaneous recovery"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("When to use PTC",
     "ONLY applicable when TOF count = 0 (no twitches detectable on TOF). Cannot be used at lesser depths of block."),
    ("Protocol",
     "1. Apply 50 Hz tetanus for 5 seconds.  2. Wait 3 seconds.  3. Deliver single twitches at 1 Hz.  4. Count how many post-tetanic twitches are detectable."),
    ("What PTC predicts",
     "PTC correlates with time to return of the first TOF twitch (T1). Higher PTC = block is lightening = sooner recovery. Lower PTC = deeper block = longer to recover."),
    ("PTC correlation with time",
     "PTC 1–2: ~30–60 min to T1 return (rocuronium/vecuronium, without reversal). PTC 5–10: ~10–20 min to T1 return. PTC >15: T1 may return within minutes."),
    ("Why can we count post-tetanic twitches when TOF = 0?",
     "Tetanic stimulation depletes ACh pre-synaptically but then triggers enhanced ACh mobilisation (PTP mechanism). The brief surge of ACh release can overcome even very deep NDMR blockade enough to produce a few detectable twitches."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Clinical utility",
     "During prolonged surgical procedures under deep block → PTC tells the anaesthetist whether redosing NDMR is needed or whether recovery is approaching.  Informs timing of reversal attempt.  Guides sugammadex dose selection: PTC ≥1 → sugammadex 4 mg/kg (deep block). PTC 0 → sugammadex 16 mg/kg."),
    ("Limitations",
     "Cannot be used at moderate/shallow block (TOF ≥1). Must wait ≥5 min between PTC assessments to avoid residual effects of tetanus on subsequent measurements. PAINFUL — only in anaesthetised patients."),
    ("PTC and organ failure",
     "In hepatic/renal failure, PTC to recovery intervals are prolonged because NDMR elimination is reduced. Do NOT rely on standard time-based PTC charts in organ failure — use objective monitoring."),
    ("PTC for different NDMRs",
     "Pancuronium: much longer PTC-to-recovery time (long-acting).  Rocuronium/vecuronium: intermediate.  Cisatracurium/atracurium: may be shorter due to Hofmann elimination. Always verify with objective monitoring."),
])

# Slide 11 — DBS
sl=blank(prs); hdr(sl,"Double Burst Stimulation (DBS)","Most sensitive pattern for MANUAL detection of residual block"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Definition",
     "Two short bursts of 50 Hz stimulation separated by 750 ms. Each burst consists of 2 or 3 impulses at 50 Hz."),
    ("DBS variants",
     "DBS 3,3 (most common): 3 impulses in first burst + 3 impulses in second burst. DBS 3,2: 3 + 2. DBS 3,3 is the preferred clinical pattern."),
    ("Normal response",
     "Two equally strong muscle contractions (no fade between bursts). Indicates no significant NMB."),
    ("NDMR block — DBS pattern",
     "FADE: the second burst produces a WEAKER contraction than the first. If second contraction is absent → deep block. Degree of fade correlates with TOFR."),
    ("Why DBS detects residual block better than TOF manually",
     "When comparing two contractions 750 ms apart, humans can detect a difference more easily than comparing tiny twitches within a rapid 2-Hz TOF. DBS amplifies the fade signal into a detectable binary difference."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Sensitivity comparison",
     "TOF (manual): fade detectable when TOFR <0.4. DBS 3,3 (manual): fade detectable when TOFR <0.6. Both modalities CANNOT detect the critical range of TOFR 0.6–0.9 — objective monitoring required."),
    ("Clinical use",
     "Useful when objective monitoring is unavailable and TOF appears to show no fade (TOFR subjectively appears ≥0.4). DBS provides a 'second opinion' on residual block. If DBS 3,3 shows NO fade → TOFR likely ≥0.6 (but not ≥0.9)."),
    ("Comparison with tetanus",
     "DBS is better tolerated than tetanus (shorter, less painful). Can be repeated more frequently. For clinical decisions about extubation, DBS remains inferior to objective AMG/EMG."),
    ("Objective DBS",
     "When quantified objectively, DBS ratio (D2/D1) correlates closely with TOF ratio. However, DBS measurement devices are less common than TOF AMG monitors."),
    ("Bottom line",
     "DBS 3,3 is the best SUBJECTIVE test for residual block — better than TOF, much better than clinical signs. Still cannot reliably detect TOFR 0.6–0.9. OBJECTIVE monitoring remains gold standard."),
])

# ── SECTION 04: Objective vs Subjective ─────────────────────────
div(prs,"04","Objective vs Subjective NMB Monitoring",
    "Why the human hand cannot be trusted — and what objective monitors measure")

# Slide 13
sl=blank(prs); hdr(sl,"Subjective Monitoring — Limitations"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Subjective (qualitative) monitoring",
     "Clinical assessment of evoked muscle response by VISUAL or TACTILE evaluation of the response to a peripheral nerve stimulator."),
    ("What clinicians can detect manually",
     "TOF count (0–4): reliable with experience.  TOF fade/ratio: UNRELIABLE below TOFR 0.4. Presence of 4 twitches with no detectable fade does NOT mean TOFR ≥0.9 — fade may not be visible to the human eye until TOFR <0.4."),
    ("The dangerous gap: TOFR 0.4–0.9",
     "Patients in this range appear clinically RECOVERED. All 4 TOF twitches present. No detectable fade manually. Yet significant residual paralysis is present → at risk of all residual paralysis complications."),
    ("Clinical consequence",
     "A clinician relying solely on manual TOF will classify a patient with TOFR 0.7 as 'safe to extubate'. This is WRONG. This error leads to 30–40% residual paralysis rate."),
    ("Studies confirming insensitivity",
     "Multiple studies show experienced anaesthetists cannot distinguish TOFR 0.4 from TOFR 0.9 by tactile/visual means. Even 5-second head-lift accomplished at TOFR 0.5 in most volunteers."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Why NOT to rely on clinical signs — summary table", None),
    ("Test | TOFR at which still possible", None),
    ("5-second head lift",
     "TOFR ≤0.5"),
    ("Sustained hand grip (5 s)",
     "TOFR ≤0.5"),
    ("Vital capacity >15 mL/kg",
     "TOFR ≤0.5"),
    ("Tidal volume >5 mL/kg",
     "TOFR ≤0.5"),
    ("Hypoxic ventilatory response (HVR)",
     "Impaired even at TOFR 0.7–0.8"),
    ("Pharyngeal / swallowing function",
     "Impaired until TOFR ≥0.9"),
    ("Conclusion",
     "ALL standard clinical tests are passed by patients with dangerous residual paralysis. Objective monitoring is the ONLY solution."),
])

# Slide 14 — Objective monitors
sl=blank(prs); hdr(sl,"Objective (Quantitative) NMB Monitoring — Devices & Technologies"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Mechanomyography (MMG) — Reference Standard",
     "Directly measures ISOMETRIC force of adductor pollicis contraction with a force transducer. Thumb must be immobilised in a rigid holder. Highly accurate. The historical research standard. Impractical for routine clinical use — cumbersome, requires preload."),
    ("Acceleromyography (AMG) — Clinical Standard",
     "Piezoelectric sensor attached to thumb measures acceleration (Newton's second law: F=ma). Thumb must be FREE to move (unconstrained). Most widely used objective monitor. Gives actual TOFR value. Easy to apply. Currently gold standard for clinical practice. Well validated. FDA approved."),
    ("Electromyography (EMG)",
     "Records the electrical potential (compound action potential) from the muscle in response to nerve stimulation. Does NOT require thumb movement — works even when the hand is inaccessible or immobilised. Less dependent on position. Some variation with electrode placement. Available in newer monitor models."),
    ("Kinemyography (KMG)",
     "Measures DISPLACEMENT of thumb using a piezoelectric bending sensor. Intermediate between AMG and MMG. Less common."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Phonomyography",
     "Detects the low-frequency sound of muscle contraction with a microphone placed over the muscle. Experimental — not widely used clinically."),
    ("Normocalibration requirement for AMG",
     "AMG values can exceed 1.0 (called supranormal) due to mechanical properties of the unconstrained thumb. To correct: perform TOF calibration (normalise T1 to baseline) before NDMR. Without calibration, AMG may OVERESTIMATE TOFR."),
    ("TOF-Watch (AMG device)",
     "Most studied clinical AMG device. Used in most clinical trials of sugammadex and neostigmine dosing. Reference standard for clinical research."),
    ("New integrated monitors",
     "Many modern anaesthesia workstations now have integrated EMG or AMG modules (e.g., GE Carestation, Dräger Perseus). These allow continuous, hands-free NMB monitoring."),
    ("2018 International Consensus recommendation",
     "Quantitative neuromuscular monitoring (AMG, EMG, MMG, or KMG) should be used routinely for ALL patients receiving NDMRs. Document TOF ratio ≥0.9 before extubation. Endorsed by CAS, SFAR, SEDAR, ANZCA, AAGBI, ASA."),
])

# Slide 15 — AMG vs MMG vs EMG comparison table
table_slide(prs, "Comparison of Objective NMB Monitoring Modalities","",
    [["Device","Measures","Thumb free?","Works if hand immobilised?","Accuracy","Clinical practicality"],
     ["MMG","Isometric force","NO (fixed)","NO","Highest (ref)","Poor — research only"],
     ["AMG","Acceleration (F=ma)","YES (free)","NO","Good","Excellent"],
     ["EMG","Electrical potential","Not needed","YES","Good","Good"],
     ["KMG","Displacement","YES (bending)","NO","Good","Moderate"],
     ["Phonomyography","Sound","Not needed","YES","Moderate","Experimental"],
    ],
    col_widths=[2.0,2.2,1.3,2.2,1.6,2.5],
    note="AMG = Acceleromyography (current clinical gold standard). MMG = Mechanomyography (research reference). EMG = Electromyography (useful when thumb inaccessible)."
)

# ── SECTION 05: Depol vs Non-Depol patterns ──────────────────────
div(prs,"05","Response Patterns: Depolarising vs Non-Depolarising Block",
    "How to distinguish Phase I, Phase II, and NDMR block on a peripheral nerve stimulator")

# Slide 17
table_slide(prs, "Nerve Stimulator Response Patterns — Comparison Table","",
    [["Feature","Phase I Block (SCh)","Phase II Block (SCh)","Non-Depolarising Block"],
     ["TOF count","4 (equal reduction)","0–4 (varies)","0–4 (decreasing)"],
     ["TOF ratio / Fade","NO fade. TOFR ≈ 1.0","FADE develops (TOFR <0.9)","FADE present"],
     ["Tetanic stimulation","SUSTAINED (no fade)","FADE on tetanus","FADE on tetanus"],
     ["Post-tetanic potentiation","ABSENT","PRESENT","PRESENT"],
     ["Single twitch T1","Reduced proportionally","Reduced + fade","Reduced + fade"],
     ["Onset","Fasciculations first","After prolonged SCh","No fasciculations"],
     ["Reversed by neostigmine?","NO (worsens block)","Possibly (if SCh cleared)","YES (at minimal block)"],
     ["Reversed by sugammadex?","NO","NO","YES (aminosteroids only)"],
     ["Key distinguishing feature","No fade, no PTP","Fade + PTP develop","Fade + PTP from start"],
    ],
    col_widths=[2.9,3.1,3.2,3.5],
    rh=0.62,
    note="Phase II block develops after prolonged succinylcholine infusion. The critical clinical sign is the APPEARANCE of FADE — which was absent in Phase I."
)

# Slide 18 — Fade mechanism explained
sl=blank(prs); hdr(sl,"Understanding FADE — The Hallmark of Non-Depolarising Block"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("What is FADE?",
     "Progressive diminution of evoked muscle response during repeated or sustained nerve stimulation. A cardinal feature of non-depolarising (and Phase II) neuromuscular blockade."),
    ("Pre-junctional mechanism",
     "NDMRs block α₃β₂ pre-junctional ACh receptors on the motor nerve terminal. These receptors normally provide positive feedback: released ACh binds pre-junctionally → promotes vesicle mobilisation to active zone for next stimulus."),
    ("Consequence of pre-junctional blockade",
     "With NDMRs blocking α₃β₂ receptors: vesicle mobilisation fails with successive stimuli → less ACh available for each subsequent nerve impulse → smaller EPP → smaller twitch → FADE."),
    ("Post-junctional component",
     "Also: fewer available (unoccupied) post-junctional nAChRs with increasing NDMR concentration → each successive ACh release has less chance of producing full depolarisation."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Fade on TOF (2 Hz)",
     "T4 < T3 < T2 < T1. T4/T1 ratio (TOFR) quantifies fade. TOFR 1.0 = no fade; TOFR 0 = T4 absent."),
    ("Fade on tetanus (50 Hz)",
     "Progressive reduction in tetanic contraction amplitude. More pronounced and sensitive than TOF fade at equivalent block depths."),
    ("Why succinylcholine does NOT cause fade (Phase I)",
     "Succinylcholine does NOT bind pre-junctional α₃β₂ receptors. Therefore ACh mobilisation is unaffected with successive stimuli → equal EPPs → equal twitches → NO fade. This is a key mechanistic distinction."),
    ("Post-tetanic potentiation (PTP) — contrast",
     "After tetanic stimulation in NDMR block: Ca²⁺ entry enhances ACh mobilisation transiently → subsequent twitches LARGER (PTP). Confirms pre-junctional mobilisation mechanism. Absent in Phase I SCh block."),
    ("Clinical pearl",
     "FADE on TOF + POST-TETANIC POTENTIATION = NON-DEPOLARISING (or Phase II) block. No fade + no PTP = Phase I depolarising block."),
])

# ── SECTION 06: Monitoring Sites — Muscle Sensitivity ───────────
div(prs,"06","Monitoring Sites & Muscle Sensitivity to NMB",
    "Not all muscles respond equally — understanding differential block")

# Slide 20
sl=blank(prs); hdr(sl,"Differential Sensitivity of Muscles to NMB","Central and clinical implications"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Why muscles differ in sensitivity",
     "Blood flow, fibre type, temperature, nAChR density, and proximity to the NMJ injection site all affect how quickly NDMRs reach different muscle groups."),
    ("Larynx / Vocal cords",
     "MOST RESISTANT to NDMR (fastest recovery). Block develops and recovers fastest. Intubating conditions correlate with adductor pollicis being ~80% blocked, not 100%. Clinical implication: when thumb is fully blocked, larynx may not be."),
    ("Diaphragm",
     "Also relatively resistant. Recovers before peripheral muscles. Important: when adductor pollicis has recovered (TOFR ≥0.9), diaphragm is ALREADY recovered. Safe for extubation."),
    ("Adductor pollicis (thumb)",
     "More SENSITIVE than larynx and diaphragm. Recovers AFTER the central airway muscles. Using thumb recovery (TOFR ≥0.9) to guide extubation is CONSERVATIVE and SAFE."),
    ("Upper airway muscles (genioglossus, pharynx)",
     "More SENSITIVE than larynx — recover later than adductor pollicis in some studies. This is why TOFR ≥0.9 at adductor pollicis is the target (ensures upper airway is recovered)."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("Corrugator supercilii (facial)",
     "MOST RESISTANT of the commonly monitored sites. Recovers EARLIEST. Using corrugator supercilii OVERESTIMATES recovery. Residual paralysis rate 5× higher when monitoring here vs adductor pollicis. USE ONLY for intraoperative deep block monitoring. SWITCH to adductor pollicis before reversal."),
    ("Orbicularis oculi (facial)",
     "Also resistant. Similar concerns to corrugator supercilii. Direct muscle stimulation artifact common near eye."),
    ("First dorsal interosseous",
     "Most closely mimics adductor pollicis sensitivity. Best alternative when thumb is inaccessible (e.g. prone positioning)."),
    ("Abductor digiti minimi (little finger)",
     "RESISTANT relative to adductor pollicis. Can overestimate recovery."),
    ("Flexor hallucis brevis (foot)",
     "Resistant. Recovery faster than adductor pollicis."),
    ("Clinical rule",
     "For EXTUBATION decisions: ONLY use adductor pollicis or first dorsal interosseous. All facial muscles and foot muscles overestimate recovery and are unsafe for extubation-readiness assessment."),
])

# Muscle sensitivity table
table_slide(prs,"Muscle Sensitivity to NDMR — Most Resistant to Most Sensitive","(organised for clinical decision making)",
    [["Muscle","Relative Sensitivity","Recovers relative to AP","Use for extubation?","Notes"],
     ["Corrugator supercilii","MOST RESISTANT","FIRST","NO — overestimates","5× higher residual paralysis"],
     ["Orbicularis oculi","Resistant","Early","NO — overestimates","Direct stim artifact risk"],
     ["Larynx / Vocal cords","Resistant","Early","NO — not accessible","Blocks last, recovers first"],
     ["Diaphragm","Moderately resistant","Early","NO — not accessible","Safe: recovers before AP"],
     ["First dorsal interosseous","Similar to AP","Similar to AP","YES — best alternative","Dorsum of hand"],
     ["Adductor pollicis (thumb)","SENSITIVE","LAST of accessible","YES — GOLD STANDARD","TOF at ulnar wrist"],
     ["Upper airway (pharynx)","Very sensitive","Similar to / later than AP","YES (indirectly via AP)","AP recovery ensures UA recovery"],
    ],
    col_widths=[2.5,2.0,2.0,1.8,4.3],
    rh=0.6,
    note="AP = adductor pollicis. Monitoring at adductor pollicis is CONSERVATIVE — ensures ALL clinically relevant muscles have recovered."
)

# ── SECTION 07: Monitoring Protocols ────────────────────────────
div(prs,"07","Clinical Monitoring Protocol & Interpretation",
    "When to use which pattern — intraoperative, emergence, extubation")

# Slide 23
sl=blank(prs); hdr(sl,"Clinical NMB Monitoring Protocol — Intraoperative to Extubation"); bg(sl)
bl(sl,0.3,1.28,6.1,5.9,[
    ("Before NDMR administration",
     "Calibrate objective monitor (AMG): establish T1 baseline (100%). Confirm electrode placement over ulnar nerve at wrist. Verify thumb is unconstrained (AMG) or ensure EMG electrodes correctly placed."),
    ("During intubation / onset",
     "Monitor TOF count or single twitch to confirm adequate relaxation before laryngoscopy. With rocuronium 1.2 mg/kg: TOF count 0 expected at ~60 s.  With 0.6 mg/kg: at ~90–120 s."),
    ("Intraoperative maintenance (deep block required)",
     "Use PTC if TOF count = 0. PTC guides redosing: if PTC ≥5 and no further relaxation needed → do NOT redose. If PTC ≤2 → redose 10–20% of intubating dose."),
    ("Intraoperative maintenance (moderate block)",
     "Monitor TOF count every 5–10 min. Maintain TOFC 1–3. Avoid deep block unless surgical field mandates it (keep block as light as surgically acceptable to facilitate reversal)."),
    ("End of surgery — reversal decision",
     "Check TOF count and ratio with objective monitor. Choose reversal agent based on block depth. See reversal algorithm."),
])
bl(sl,6.5,1.28,6.5,5.9,[
    ("After reversal",
     "Re-check TOFR every 2 min. Target: TOFR ≥0.9 confirmed before extubation.  If TOFR <0.9 at 10 min post-neostigmine → switch to sugammadex.  If TOFR ≥0.9 → extubate."),
    ("PACU monitoring",
     "If no intraoperative objective monitoring: assess TOFR on PACU arrival before removing supplemental O₂. Treat residual paralysis with sugammadex (if aminosteroid NDMR)."),
    ("Documentation",
     "Document in anaesthesia record: (1) NDMR used and dose. (2) Time of last dose. (3) Reversal agent used. (4) TOFR at extubation (from objective monitor). This is now required by multiple national guidelines."),
    ("Important: Don't extubate by clock",
     "Do NOT extubate based on 'it's been 60 min since rocuronium 0.6 mg/kg'. Significant inter-individual variation exists. Only objective TOF ratio ≥0.9 is reliable."),
    ("ICU considerations",
     "Prolonged NDMR infusion → daily 'drug holiday' + reassess TOFC. Use cisatracurium (Hofmann) for ICU. Always confirm recovery before tracheal extubation. If vecuronium used → check for 3-desacetylvecuronium accumulation (renal failure)."),
])

# ── SUMMARY ──────────────────────────────────────────────────────
sl=blank(prs)
box(sl,0,0,W,H,NAVY); box(sl,0,0.92,W,0.08,TEAL)
t(sl,0.5,0.12,12.3,0.85,"Summary — Monitoring & Tests of Neuromuscular Block",
  27,bold=True,color=WHITE,align=PP_ALIGN.CENTER)

summ=[
    ("Why monitor","Clinical signs fail — 5-s head lift can be done at TOFR 0.5. 30–40% residual paralysis with neostigmine if monitoring absent."),
    ("Electrode site","Ulnar nerve at wrist → adductor pollicis (GOLD STANDARD). First dorsal interosseous = best alternative. Never use corrugator supercilii for extubation decisions."),
    ("Single Twitch","Requires baseline. Detects onset/offset. CANNOT detect residual paralysis. T1=100% ≠ TOF ratio ≥0.9."),
    ("Train-of-Four","No baseline needed. TOF COUNT (0–4) for moderate-deep block. TOF RATIO (T4/T1) for light-minimal block. Target ≥0.9."),
    ("Tetanus","50 Hz × 5 s. FADE = NDMR/Phase II. SUSTAINED = Phase I / normal. NOT repeated frequently (painful). Post-tetanic potentiation (PTP) = NDMR feature."),
    ("Post-Tetanic Count","When TOF count = 0. Higher PTC = sooner recovery. PTC ≥1 = sugammadex 4 mg/kg; PTC 0 = 16 mg/kg."),
    ("DBS 3,3","Best SUBJECTIVE test for residual block (detects TOFR <0.6). Still cannot detect TOFR 0.6–0.9. Objective monitoring mandatory."),
    ("Objective monitors","AMG (clinical standard) | EMG (thumb-free) | MMG (research) | KMG. Always calibrate. Document TOFR ≥0.9 before extubation per international consensus."),
]
sh=sl.shapes.add_textbox(Inches(0.3),Inches(1.05),Inches(12.7),Inches(6.25))
tf=sh.text_frame; tf.word_wrap=True
for i,(k,v) in enumerate(summ):
    p=tf.paragraphs[0] if i==0 else tf.add_paragraph()
    p.space_before=Pt(4)
    r1=p.add_run(); r1.text=f"{k}:  "
    r1.font.bold=True; r1.font.size=Pt(13); r1.font.color.rgb=TEAL; r1.font.name="Calibri"
    r2=p.add_run(); r2.text=v
    r2.font.size=Pt(12.5); r2.font.color.rgb=WHITE; r2.font.name="Calibri"

# ── Add NMJ diagram image ────────────────────────────────────────
# Add the TOF pattern diagram to slide 8 (TOF slide, index 7) if image available
try:
    result=json.loads(subprocess.check_output(
        ["python","/tmp/skills/shared/scripts/fetch_images.py",
         "https://cdn.orris.care/cdss_images/a20c630aebc1c5a8885e5747c624d903c7c5729ee626430b31ec65b7fab914e7.png"],
        timeout=20))
    if result and result[0].get("base64"):
        raw=base64.b64decode(result[0]["base64"].split(",",1)[-1])
        prs.slides[7].shapes.add_picture(BytesIO(raw),Inches(8.8),Inches(1.3),width=Inches(4.2))
except Exception as e:
    print(f"Image: {e}")

out="/tmp/workspace/nmj-ppt/NMB_Monitoring.pptx"
prs.save(out)
print(f"Done. Slides: {len(prs.slides)}. Path: {out}")
Running Command

cd /tmp/workspace/nmj-ppt && python build_monitoring.py 2>&1

Running Command

cd /tmp/workspace/nmj-ppt && curl -s -o evoked_patterns.png "https://cdn.orris.care/cdss_images/a20c630aebc1c5a8885e5747c624d903c7c5729ee626430b31ec65b7fab914e7.png" && curl -s -o ulnar_nerve.png "https://cdn.orris.care/cdss_images/0cdca82ee73f8cafc438a2ed2d07f4fc129c0acfd6a4eaa9b0a02858e7384017.png" && ls -lh *.png 2>&1

Running Command

cd /tmp/workspace/nmj-ppt && python3 - <<'EOF' from pptx import Presentation from pptx.util import Inches prs = Presentation("NMB_Monitoring.pptx") # Slide index 7 = TOF slide (0-indexed: title=0, div=1, whymonitor=2, div=3, pnsprinciples=4, div=5, singletwitch=6, TOF=7) prs.slides[7].shapes.add_picture("evoked_patterns.png", Inches(8.7), Inches(1.3), width=Inches(4.3)) # Slide index 4 = PNS principles slide — add ulnar nerve diagram prs.slides[4].shapes.add_picture("ulnar_nerve.png", Inches(8.7), Inches(1.3), width=Inches(4.3)) prs.save("NMB_Monitoring.pptx") print(f"Images added. Total slides: {len(prs.slides)}") EOF

Your presentation is ready — 24 slides with 2 embedded textbook diagrams:

NMB Monitoring

Presentation · PPTX


24 slides across 7 sections:

Section 01 - Why Monitor NMB? (Slides 2-3)

  • 5-second head lift possible at TOF ratio ≤0.5 (landmark study: 11/12 volunteers)
  • All clinical signs insensitive — the "dangerous gap" of TOF ratio 0.4–0.9
  • 30–40% residual paralysis with neostigmine; ~5% with sugammadex
  • Impaired hypoxic ventilatory response (HVR) even at TOF ratio 0.7–0.8
  • 230 million surgeries/year — enormous absolute harm

Section 02 - Physiology of PNS (Slides 4-5)

  • What supramaximal stimulation means and why it's necessary
  • Electrode placement: ulnar nerve, negative distal / positive proximal ("red toward the head")
  • Ulnar nerve diagram image (from Barash 9e)
  • Alternative sites and why corrugator supercilii is DANGEROUS for extubation decisions (5× higher residual paralysis)
  • Temperature effects on nerve excitability

Section 03 - Stimulation Patterns (Slides 6-11)

  • Single Twitch (ST): requires baseline, T1=100% ≠ full recovery, depolarising vs NDMR pattern
  • Train-of-Four (TOF): TOF count vs TOF ratio, fade mechanism, thresholds (0.9 vs 0.7), why no baseline needed - with evoked response diagram from Morgan & Mikhail
  • Tetanus: 50 Hz × 5s, fade vs sustained, PTP mechanism, painful (use only in anaesthetised patients)
  • Post-Tetanic Count (PTC): only when TOF=0, protocol, PTC-to-recovery time correlations, guides sugammadex dosing
  • DBS 3,3: most sensitive subjective test, detects TOFR <0.6, still cannot detect 0.6–0.9

Section 04 - Objective vs Subjective (Slides 12-15)

  • Why subjective monitoring is unreliable — full table of which clinical signs pass at which TOF ratio
  • Mechanomyography (MMG): reference standard, impractical
  • Acceleromyography (AMG): clinical gold standard, unconstrained thumb, FDA approved, supranormal values
  • Electromyography (EMG): no thumb movement needed, useful when hand immobilised
  • Full comparison table of all objective monitoring modalities

Section 05 - Phase I vs Phase II vs NDMR Patterns (Slides 16-18)

  • Comprehensive comparison table: TOF count, fade, tetanus, PTP, reversal — for Phase I, Phase II, and NDMR block
  • Fade mechanism deep-dive: pre-junctional α₃β₂ blockade → vesicle mobilisation failure
  • Why succinylcholine Phase I has NO fade (doesn't bind α₃β₂)
  • PTP explained: Ca²⁺ surge → enhanced ACh mobilisation after tetanus

Section 06 - Muscle Sensitivity (Slides 19-21)

  • Differential sensitivity: larynx/diaphragm (resistant, recover early) → adductor pollicis (sensitive, recovers last of accessible muscles)
  • Why thumb monitoring is CONSERVATIVE and SAFE for extubation
  • Full muscle sensitivity table from most resistant to most sensitive with clinical use recommendations

Section 07 - Clinical Protocol (Slides 22-23)

  • Step-by-step protocol: calibrate before NDMR → onset monitoring → intraoperative PTC → reversal decision → confirm TOF ≥0.9
  • PACU management, documentation requirements, ICU considerations

Summary (Slide 24)

Sources: Miller's Anesthesia 10e | Barash 9e | Morgan & Mikhail 7e | Katzung 16e
This is a shared conversation. Sign in to Orris to start your own chat.