Need discussion slides for this case

Reading File
Running Command

cd /tmp/workspace/attachments/2f4aaaeb-4e23-4324-893c-c60ec13eab30/ && python3 -c " from pptx import Presentation prs = Presentation('Interesting case presentation lavanya copy.pptx') for i, slide in enumerate(prs.slides, 1): print(f'=== SLIDE {i} ===') for shape in slide.shapes: if shape.has_text_frame and shape.text_frame.text.strip(): print(repr(shape.text_frame.text)) print() "

Reading File
Finding Sources
Searching PubMed

"heart block" AND pregnancy AND anaesthesia

Running Command

mkdir -p /tmp/workspace/lavanya-discussion && python3 << 'PYEOF' from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.util import Inches, Pt from io import BytesIO # ── colour palette ────────────────────────────────────────────── NAVY = RGBColor(0x1A, 0x31, 0x5C) # title bar bg TEAL = RGBColor(0x00, 0x82, 0x8A) # accent / bullet deco WHITE = RGBColor(0xFF, 0xFF, 0xFF) LIGHT = RGBColor(0xF0, 0xF6, 0xFA) # slide background DARK = RGBColor(0x1A, 0x1A, 0x2E) # body text RED = RGBColor(0xC0, 0x39, 0x2B) # warning / highlight W = Inches(13.333) H = Inches(7.5) prs = Presentation() prs.slide_width = W prs.slide_height = H blank = prs.slide_layouts[6] def add_bg(slide, color=LIGHT): from pptx.oxml.ns import qn from lxml import etree bg = slide.background fill = bg.fill fill.solid() fill.fore_color.rgb = color def title_bar(slide, title_text, sub=None): # top bar bar = slide.shapes.add_shape(1, 0, 0, W, Inches(1.22)) bar.fill.solid(); bar.fill.fore_color.rgb = NAVY bar.line.fill.background() tf = bar.text_frame tf.word_wrap = False tf.vertical_anchor = MSO_ANCHOR.MIDDLE tf.margin_left = Inches(0.4) tf.margin_right = Inches(0.4) tf.margin_top = 0 tf.margin_bottom= 0 p = tf.paragraphs[0] p.alignment = PP_ALIGN.LEFT run = p.add_run() run.text = title_text run.font.name = "Calibri" run.font.size = Pt(28) run.font.bold = True run.font.color.rgb = WHITE # teal accent line under bar line = slide.shapes.add_shape(1, 0, Inches(1.22), W, Inches(0.055)) line.fill.solid(); line.fill.fore_color.rgb = TEAL line.line.fill.background() if sub: stb = slide.shapes.add_textbox(Inches(0.5), Inches(1.28), W - Inches(1), Inches(0.38)) stf = stb.text_frame stf.word_wrap = False sp = stf.paragraphs[0] sp.alignment = PP_ALIGN.LEFT sr = sp.add_run() sr.text = sub sr.font.name = "Calibri" sr.font.size = Pt(13) sr.font.italic= True sr.font.color.rgb = TEAL def add_bullets(slide, items, top, left=Inches(0.55), width=Inches(12.3), font_size=17, bold_first=False, color=DARK, line_spacing_pt=None): """items is list of (indent_level, text) tuples or plain strings.""" tb = slide.shapes.add_textbox(left, top, width, H - top - Inches(0.3)) tf = tb.text_frame tf.word_wrap = True tf.vertical_anchor = MSO_ANCHOR.TOP tf.margin_left = Inches(0.05) tf.margin_right = Inches(0.05) tf.margin_top = Inches(0.05) tf.margin_bottom= 0 first = True for item in items: if isinstance(item, tuple): lvl, text = item else: lvl, text = 0, item if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() p.level = lvl p.space_before = Pt(4 if lvl == 0 else 2) if line_spacing_pt: from pptx.util import Pt as _Pt p.line_spacing = _Pt(line_spacing_pt) # bullet symbol bullet = "▸ " if lvl == 0 else " – " run = p.add_run() run.text = bullet + text run.font.name = "Calibri" run.font.size = Pt(font_size) run.font.bold = (bold_first and first) or False run.font.color.rgb = color def add_two_col(slide, left_items, right_items, top=Inches(1.8), col_w=Inches(5.9), font_size=16): add_bullets(slide, left_items, top=top, left=Inches(0.4), width=col_w, font_size=font_size) add_bullets(slide, right_items, top=top, left=Inches(6.85), width=col_w, font_size=font_size) def divider(slide, y, color=TEAL, width=W - Inches(1)): ln = slide.shapes.add_shape(1, Inches(0.5), y, width, Inches(0.04)) ln.fill.solid(); ln.fill.fore_color.rgb = color ln.line.fill.background() def label_box(slide, text, left, top, w=Inches(3.5), h=Inches(0.52), bg=NAVY, fg=WHITE, size=15): bx = slide.shapes.add_shape(1, left, top, w, h) bx.fill.solid(); bx.fill.fore_color.rgb = bg bx.line.fill.background() tf2 = bx.text_frame tf2.word_wrap = False tf2.vertical_anchor = MSO_ANCHOR.MIDDLE tf2.margin_left = Inches(0.12); tf2.margin_right = Inches(0.12) tf2.margin_top = 0; tf2.margin_bottom = 0 p2 = tf2.paragraphs[0]; p2.alignment = PP_ALIGN.CENTER r2 = p2.add_run(); r2.text = text r2.font.name = "Calibri"; r2.font.size = Pt(size) r2.font.bold = True; r2.font.color.rgb = fg # ══════════════════════════════════════════════════════════════ # SLIDE 1 – Title / Case Summary # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s, NAVY) # central white card card = s.shapes.add_shape(1, Inches(1.5), Inches(1.2), Inches(10.3), Inches(5.7)) card.fill.solid(); card.fill.fore_color.rgb = WHITE card.line.color.rgb = TEAL; card.line.width = Pt(2) # accent stripe stripe = s.shapes.add_shape(1, Inches(1.5), Inches(1.2), Inches(0.22), Inches(5.7)) stripe.fill.solid(); stripe.fill.fore_color.rgb = TEAL stripe.line.fill.background() # title text ttb = s.shapes.add_textbox(Inches(2.0), Inches(1.55), Inches(9.5), Inches(1.3)) ttf = ttb.text_frame; ttf.word_wrap = True p0 = ttf.paragraphs[0]; p0.alignment = PP_ALIGN.LEFT r0 = p0.add_run(); r0.text = "Case Discussion" r0.font.name = "Calibri"; r0.font.size = Pt(44) r0.font.bold = True; r0.font.color.rgb = NAVY p1 = ttf.add_paragraph(); p1.alignment = PP_ALIGN.LEFT r1 = p1.add_run(); r1.text = "Second Degree Heart Block Complicating Pregnancy" r1.font.name = "Calibri"; r1.font.size = Pt(22) r1.font.bold = False; r1.font.color.rgb = TEAL # case summary bullets inside card sb = s.shapes.add_textbox(Inches(2.0), Inches(3.1), Inches(9.5), Inches(3.5)) sf = sb.text_frame; sf.word_wrap = True lines = [ ("28-year-old primigravida • 38 wks + 2 days", False, 17, DARK, False), ("Known 2nd degree heart block (diagnosed at 5 months gestation)", False, 17, DARK, False), ("Admitted with lower abdominal pain → emergency LSCS", False, 17, DARK, False), ("On Tab. Orciprenaline • Cardiologist cleared: moderate risk", False, 17, DARK, False), ("Spinal anaesthesia (Bupivacaine 0.5% H+ 2 ml + Fentanyl 10 mcg) → uneventful delivery", False, 17, DARK, False), ("Post-op ECG: progression to complete heart block • narrow QRS escape rhythm", False, 17, RED, True), ("Discharged POD 4 with advice for PPI if symptomatic", False, 17, DARK, False), ] first = True for txt, bold, sz, col, it in lines: p = sf.paragraphs[0] if first else sf.add_paragraph() first = False p.space_before = Pt(5) r = p.add_run(); r.text = "▸ " + txt r.font.name = "Calibri"; r.font.size = Pt(sz) r.font.bold = bold; r.font.italic = it; r.font.color.rgb = col # ══════════════════════════════════════════════════════════════ # SLIDE 2 – AV Block Classification # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "AV Conduction Block – Classification & ECG Features") # Three boxes: 1st / 2nd / 3rd degree box_data = [ ("1st Degree", TEAL, ["PR interval > 200 ms", "Every impulse conducted", "Usually benign, no symptoms", "No treatment required"]), ("2nd Degree", NAVY, ["Mobitz I (Wenckebach): Progressive PR prolongation → dropped beat", "Site: AV node; generally benign", "Mobitz II: Fixed PR interval → sudden dropped beat (no warning)", "Site: His-Purkinje; HIGH risk of progression to CHB", "★ This patient had 2nd degree block ─ type unspecified at admission"]), ("3rd Degree (CHB)", RED, ["Complete AV dissociation", "Ventricular rate set by subsidiary escape pacemaker", "Narrow QRS escape = junctional (safer)", "Wide QRS escape = ventricular (unstable)", "★ Post-op ECG showed CHB with narrow QRS (junctional) escape"]), ] bx_w = Inches(3.9) bx_tops = [Inches(1.75), Inches(1.75), Inches(1.75)] for idx, (hdr, col, pts) in enumerate(box_data): xl = Inches(0.35) + idx * Inches(4.32) # header hb = s.shapes.add_shape(1, xl, Inches(1.75), bx_w, Inches(0.6)) hb.fill.solid(); hb.fill.fore_color.rgb = col hb.line.fill.background() ht = hb.text_frame; ht.vertical_anchor = MSO_ANCHOR.MIDDLE ht.margin_left = Inches(0.1) hp = ht.paragraphs[0]; hp.alignment = PP_ALIGN.CENTER hr = hp.add_run(); hr.text = hdr hr.font.name = "Calibri"; hr.font.size = Pt(18) hr.font.bold = True; hr.font.color.rgb = WHITE # content cb = s.shapes.add_shape(1, xl, Inches(2.35), bx_w, Inches(4.75)) cb.fill.solid(); cb.fill.fore_color.rgb = WHITE cb.line.color.rgb = col; cb.line.width = Pt(1.5) ct = cb.text_frame; ct.word_wrap = True ct.margin_left = Inches(0.18); ct.margin_right = Inches(0.1) ct.margin_top = Inches(0.12); ct.margin_bottom = Inches(0.1) first = True for pt in pts: p = ct.paragraphs[0] if first else ct.add_paragraph() first = False p.space_before = Pt(4) r = p.add_run() r.text = "• " + pt r.font.name = "Calibri"; r.font.size = Pt(14) r.font.color.rgb = DARK if "★" not in pt else RED if "★" in pt: r.font.bold = True # ══════════════════════════════════════════════════════════════ # SLIDE 3 – Physiological Challenge in Pregnancy # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Why Heart Block Is Dangerous in Pregnancy", sub="Normal adaptive physiology vs. the fixed-rate heart") left_pts = [ (0, "CO rises 30–50% by 28–32 wks (HR + SV)"), (1, "HR rises ~15–20 bpm above baseline"), (1, "SV rises due to ↑ preload (plasma vol +50%)"), (0, "SVR falls → diastolic BP drops"), (0, "Blood volume +50% (haemodilution)"), (0, "IVC compression (aortocaval) in supine position"), ] right_pts = [ (0, "Fixed heart rate – cannot compensate ↑ CO demand"), (1, "CO becomes almost entirely preload-dependent"), (0, "Risk of low-output state / syncope"), (0, "Progression risk: vagal stimuli, pain, oxytocics"), (1, "Mobitz II → complete block can occur suddenly"), (0, "Uteroplacental perfusion threatened by any hypotension"), (0, "Peripartum is the highest-risk window"), ] divider(s, Inches(1.75)) # left header label_box(s, "Normal Pregnancy Physiology", Inches(0.4), Inches(1.8), w=Inches(5.8), bg=TEAL) add_bullets(s, left_pts, top=Inches(2.45), left=Inches(0.4), width=Inches(5.9), font_size=16) # right header label_box(s, "Heart Block Complication", Inches(6.95), Inches(1.8), w=Inches(5.8), bg=RED) add_bullets(s, right_pts, top=Inches(2.45), left=Inches(6.95), width=Inches(5.9), font_size=16) # vertical divider vl = s.shapes.add_shape(1, Inches(6.57), Inches(1.75), Inches(0.05), H - Inches(2.05)) vl.fill.solid(); vl.fill.fore_color.rgb = TEAL; vl.line.fill.background() # ══════════════════════════════════════════════════════════════ # SLIDE 4 – Pre-anaesthetic Assessment Dissected # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Pre-Anaesthetic Assessment – Checklist & Findings in This Case") checklist = [ ("Functional status & symptoms", "Asymptomatic. K/C/O 2nd degree block × 3 months. On Tab. Orciprenaline.", TEAL), ("Airway", "MO adequate • Mallampati II • No loose teeth • Full neck movements.", TEAL), ("Haemodynamics", "BP 100/60 mmHg, PR 52/min, SpO₂ 99% RA – baseline bradycardia noted.", RED), ("CVS auscultation", "S1 S2 heard; RS B/LAE – bilateral lower airway entry present.", TEAL), ("ECG", "2nd degree AV block pattern; narrow QRS. (Full classification not documented.)", RED), ("ECHO", "EF 65%; No RWMA; MVP of AML with mild MR → preserved systolic function.", TEAL), ("Cardiologist clearance", "Fit under MODERATE risk. Advised Inj. Atropine if intra-op HR < 40/min.", RED), ("Drug preparation", "Atropine ✓ | Isoprenaline / Adrenaline on standby | Transcutaneous pacer pads", RED), ("Obstetric factors", "Emergency LSCS (HDP complicating pregnancy) – limited time for optimisation.", RED), ] row_h = Inches(0.56) for i, (cat, finding, col) in enumerate(checklist): y = Inches(1.55) + i * row_h # category box cb2 = s.shapes.add_shape(1, Inches(0.3), y, Inches(3.5), row_h - Inches(0.04)) cb2.fill.solid(); cb2.fill.fore_color.rgb = col cb2.line.fill.background() ct2 = cb2.text_frame; ct2.vertical_anchor = MSO_ANCHOR.MIDDLE ct2.margin_left = Inches(0.1); ct2.margin_right = Inches(0.05) ct2.margin_top = 0; ct2.margin_bottom = 0 pp2 = ct2.paragraphs[0]; pp2.alignment = PP_ALIGN.LEFT rr2 = pp2.add_run(); rr2.text = cat rr2.font.name = "Calibri"; rr2.font.size = Pt(13) rr2.font.bold = True; rr2.font.color.rgb = WHITE # finding box fb = s.shapes.add_shape(1, Inches(3.85), y, Inches(9.15), row_h - Inches(0.04)) fb.fill.solid(); fb.fill.fore_color.rgb = WHITE fb.line.color.rgb = col; fb.line.width = Pt(0.8) ft = fb.text_frame; ft.vertical_anchor = MSO_ANCHOR.MIDDLE ft.margin_left = Inches(0.12); ft.margin_right = Inches(0.1) ft.margin_top = 0; ft.margin_bottom = 0 fp = ft.paragraphs[0] fr = fp.add_run(); fr.text = finding fr.font.name = "Calibri"; fr.font.size = Pt(13) fr.font.color.rgb = DARK # ══════════════════════════════════════════════════════════════ # SLIDE 5 – Choice of Anaesthetic Technique # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Choice of Anaesthetic Technique for LSCS in Heart Block") # GA box label_box(s, "General Anaesthesia", Inches(0.4), Inches(1.7), w=Inches(5.9), bg=NAVY) ga_pros = [ (0, "PROS"), (1, "Preserves sympathetic tone (no sympathectomy)"), (1, "Controlled haemodynamics"), (1, "Immediate access for intubation / pacing"), ] ga_cons = [ (0, "CONS"), (1, "Sympathetic surge at laryngoscopy → ↑ BP, ↑ myocardial O₂ demand"), (1, "Anaesthetic agents: myocardial depression"), (1, "Difficult obstetric airway risk"), (1, "Failed intubation / aspiration risk"), (1, "Neonatal drug depression"), ] add_bullets(s, ga_pros, top=Inches(2.35), left=Inches(0.4), width=Inches(5.9), font_size=15) add_bullets(s, ga_cons, top=Inches(3.5), left=Inches(0.4), width=Inches(5.9), font_size=15, color=RED) vl2 = s.shapes.add_shape(1, Inches(6.57), Inches(1.7), Inches(0.05), Inches(5.5)) vl2.fill.solid(); vl2.fill.fore_color.rgb = TEAL; vl2.line.fill.background() # RA box label_box(s, "Regional Anaesthesia (preferred)", Inches(6.95), Inches(1.7), w=Inches(5.9), bg=TEAL) ra_pts = [ (0, "PROS"), (1, "Avoids airway instrumentation & aspiration risk"), (1, "Maternal remains awake – sees baby delivered"), (1, "Lower neonatal drug exposure"), (0, "CONCERNS"), (1, "Single-shot spinal → abrupt sympathectomy → bradycardia / hypotension"), (1, "May unmask or accelerate progression to CHB"), (0, "PREFERRED SUB-TYPES"), (1, "Incremental epidural – most gradual sympathectomy"), (1, "Low-dose CSE (Combined Spinal-Epidural) – titrable"), (1, "Low-dose spinal + intrathecal opioid (this case) – acceptable if monitoring ready"), ] add_bullets(s, ra_pts, top=Inches(2.35), left=Inches(6.95), width=Inches(5.9), font_size=15) # bottom banner bb = s.shapes.add_shape(1, Inches(0.35), Inches(6.8), Inches(12.65), Inches(0.52)) bb.fill.solid(); bb.fill.fore_color.rgb = NAVY; bb.line.fill.background() bt = bb.text_frame; bt.vertical_anchor = MSO_ANCHOR.MIDDLE bt.margin_left = Inches(0.2) bp = bt.paragraphs[0]; bp.alignment = PP_ALIGN.LEFT br = bp.add_run() br.text = "In this case: Single-shot spinal 0.5% H Bupivacaine 2 ml + Fentanyl 10 mcg at L4-L5 → successful, HR maintained 50-60/min, BP stable" br.font.name = "Calibri"; br.font.size = Pt(14) br.font.bold = True; br.font.color.rgb = WHITE # ══════════════════════════════════════════════════════════════ # SLIDE 6 – Intrathecal Fentanyl: Role & Rationale # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Intrathecal Fentanyl – Role & Rationale", sub="Why 10 mcg was added to hyperbaric bupivacaine in this patient") # mechanism box label_box(s, "Mechanism of Action", Inches(0.4), Inches(1.78), w=Inches(5.9), bg=NAVY) mech_pts = [ (0, "Lipophilic opioid → rapid penetration into dorsal horn"), (0, "Acts on pre- & post-synaptic μ-opioid receptors (substantia gelatinosa)"), (0, "Synergistic with local anaesthetic – shared inhibition of nociceptive transmission"), (0, "Dose: 10–25 mcg; this case used 10 mcg (low end)"), (0, "Onset: 5–10 min; Duration: ~2–4 hours"), ] add_bullets(s, mech_pts, top=Inches(2.42), left=Inches(0.4), width=Inches(5.9), font_size=15) label_box(s, "Clinical Benefits (Key for This Case)", Inches(6.95), Inches(1.78), w=Inches(5.9), bg=TEAL) ben_pts = [ (0, "Dose-sparing: same-quality block with LESS bupivacaine"), (1, "↓ sympathectomy magnitude → less BP drop"), (1, "Critical in fixed-output state (heart block)"), (0, "Improves visceral analgesia (traction / peritoneal pain, uterine manipulation)"), (0, "Reduces intraoperative nausea"), (0, "Does NOT prolong motor block"), (0, "Low placental transfer at 10 mcg – neonatal safety maintained"), (0, "Avoids supplemental IV opioids with their systemic effects"), ] add_bullets(s, ben_pts, top=Inches(2.42), left=Inches(6.95), width=Inches(5.9), font_size=15) divider(s, Inches(5.9), color=TEAL, width=Inches(12.5)) se_tb = s.shapes.add_textbox(Inches(0.4), Inches(6.0), Inches(12.6), Inches(0.9)) se_tf = se_tb.text_frame; se_tf.word_wrap = True sp0 = se_tf.paragraphs[0] sr0 = sp0.add_run() sr0.text = "Side Effects: Pruritus (most common, ~40–80%) | Nausea/vomiting | Sedation | Respiratory depression (rare at low intrathecal doses – monitor SpO₂)" sr0.font.name = "Calibri"; sr0.font.size = Pt(13); sr0.font.italic = True; sr0.font.color.rgb = RED # ══════════════════════════════════════════════════════════════ # SLIDE 7 – Intraoperative Management # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Intraoperative Management – Goals & Actions") steps = [ ("Position & IV Access", "18G IV in R hand. Left uterine displacement throughout. Sitting for spinal.", NAVY), ("Standard Monitoring", "Continuous ECG (rhythm surveillance) + SpO₂ + NIBP. Fetal HR until delivery.", TEAL), ("Spinal Block", "L4-L5, 25G Quincke. Inj. Bupivacaine 0.5%H 2ml + Fentanyl 10mcg (2.2 ml total). O₂ 4 L/min.", TEAL), ("Fluid Strategy", "Pre/co-load to offset venodilatation. Total fluid 1100 ml given intraoperatively.", TEAL), ("Vasopressor Readiness", "Phenylephrine/ephedrine drawn. Atropine ready (per cardiologist advice if HR < 40/min).", RED), ("Oxytocin Protocol", "10 units SLOW infusion after cord clamping – NOT bolus. Bolus → vagal response + hypotension.", RED), ("Heart Rate Outcome", "Intra-op HR maintained 50–60/min. BP systolic 100–120 mmHg, diastolic 50–60 mmHg.", TEAL), ("Surgery Duration", "1 hour – uneventful. Patient maintained on O₂ 4 L/min throughout.", TEAL), ] row_h2 = Inches(0.63) for i, (cat, finding, col) in enumerate(steps): y = Inches(1.55) + i * row_h2 cb3 = s.shapes.add_shape(1, Inches(0.3), y, Inches(3.5), row_h2 - Inches(0.04)) cb3.fill.solid(); cb3.fill.fore_color.rgb = col; cb3.line.fill.background() ct3 = cb3.text_frame; ct3.vertical_anchor = MSO_ANCHOR.MIDDLE ct3.margin_left = Inches(0.1); ct3.margin_top = 0; ct3.margin_bottom = 0 pp3 = ct3.paragraphs[0]; pp3.alignment = PP_ALIGN.LEFT rr3 = pp3.add_run(); rr3.text = cat rr3.font.name = "Calibri"; rr3.font.size = Pt(13) rr3.font.bold = True; rr3.font.color.rgb = WHITE fb3 = s.shapes.add_shape(1, Inches(3.85), y, Inches(9.15), row_h2 - Inches(0.04)) fb3.fill.solid(); fb3.fill.fore_color.rgb = WHITE fb3.line.color.rgb = col; fb3.line.width = Pt(0.8) ft3 = fb3.text_frame; ft3.vertical_anchor = MSO_ANCHOR.MIDDLE ft3.margin_left = Inches(0.12); ft3.margin_top = 0; ft3.margin_bottom = 0 fp3 = ft3.paragraphs[0] fr3 = fp3.add_run(); fr3.text = finding fr3.font.name = "Calibri"; fr3.font.size = Pt(13); fr3.font.color.rgb = DARK # ══════════════════════════════════════════════════════════════ # SLIDE 8 – Post-op Events & Management # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Post-Operative Course & Management") timeline = [ ("Immediate Post-op", "Shifted to HDU. Continuous ECG monitoring. Tab. Orciprenaline continued.", TEAL), ("POD 1", "Hb 12.1 g% | Urea 10 | Creatinine 0.6 | Na 138 | K 4.2 – All within normal limits.\nECHO: EF 63%, MVP of AML with mild MR. Inj. Clexane 0.4 ml SC OD started (VTE prophylaxis).", TEAL), ("POD 2", "Patient upgraded from HDU to ward – haemodynamically stable.", TEAL), ("Cardiology Review (POD 2)", "Repeat ECG: COMPLETE HEART BLOCK – narrow QRS escape rhythm.\nAdvice: Continue medical management (orciprenaline). Plan PPI (Permanent Pacemaker Implantation) if symptomatic in future.", RED), ("POD 4", "Patient discharged. Advised follow-up cardiology.", TEAL), ] ty = Inches(1.65) for cat, detail, col in timeline: bk = s.shapes.add_shape(1, Inches(0.3), ty, Inches(3.5), Inches(0.55)) bk.fill.solid(); bk.fill.fore_color.rgb = col; bk.line.fill.background() bkt = bk.text_frame; bkt.vertical_anchor = MSO_ANCHOR.MIDDLE bkt.margin_left = Inches(0.1); bkt.margin_top = 0; bkt.margin_bottom = 0 bkp = bkt.paragraphs[0]; bkp.alignment = PP_ALIGN.LEFT bkr = bkp.add_run(); bkr.text = cat bkr.font.name = "Calibri"; bkr.font.size = Pt(13) bkr.font.bold = True; bkr.font.color.rgb = WHITE lines_det = detail.split("\n") line_count = len(lines_det) det_h = Inches(0.5) + Inches(0.28) * (line_count - 1) dk = s.shapes.add_shape(1, Inches(3.85), ty, Inches(9.15), Inches(0.55)) dk.fill.solid(); dk.fill.fore_color.rgb = WHITE dk.line.color.rgb = col; dk.line.width = Pt(0.8) dt = dk.text_frame; dt.word_wrap = True dt.vertical_anchor = MSO_ANCHOR.MIDDLE dt.margin_left = Inches(0.12); dt.margin_right = Inches(0.1) dt.margin_top = 0; dt.margin_bottom = 0 first_d = True for dl in lines_det: dp = dt.paragraphs[0] if first_d else dt.add_paragraph() first_d = False dr = dp.add_run(); dr.text = dl dr.font.name = "Calibri"; dr.font.size = Pt(13) dr.font.color.rgb = RED if col == RED else DARK if col == RED: dr.font.bold = True ty += Inches(0.62) # PPI info box ty += Inches(0.15) ppi = s.shapes.add_shape(1, Inches(0.3), ty, Inches(12.7), Inches(0.82)) ppi.fill.solid(); ppi.fill.fore_color.rgb = LIGHT; ppi.line.color.rgb = TEAL; ppi.line.width = Pt(1.5) pt_tf = ppi.text_frame; pt_tf.word_wrap = True; pt_tf.vertical_anchor = MSO_ANCHOR.MIDDLE pt_tf.margin_left = Inches(0.15); pt_tf.margin_top = 0; pt_tf.margin_bottom = 0 pp_p = pt_tf.paragraphs[0] pp_r = pp_p.add_run() pp_r.text = "Permanent Pacemaker Indications in AV Block: Symptomatic CHB | Mobitz II regardless of symptoms | CHB with wide QRS escape | Acquired CHB persisting > 7 days post-partum or peri-operatively" pp_r.font.name = "Calibri"; pp_r.font.size = Pt(13); pp_r.font.color.rgb = NAVY; pp_r.font.bold = False # ══════════════════════════════════════════════════════════════ # SLIDE 9 – Drugs in Obstetric Cardiac Anaesthesia # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "Drug Pharmacology – Key Agents in This Case") drug_data = [ ("Orciprenaline\n(Metaproterenol)", TEAL, "Non-selective β-agonist (β1 + β2)\nPositive chronotrope & inotrope\nPO dosing viable; used as bridge\nCaution: β2 → vasodilation, tachycardia"), ("Atropine", NAVY, "Muscarinic antagonist (M2 at AV node)\nEffective in nodal (AV node) block\nMay FAIL in infra-nodal (His-Purkinje) block\nDose 0.5–1 mg IV bolus; pacing if fails"), ("Isoprenaline", RED, "Pure β1/β2 agonist – chronotrope + inotrope\nDrug of choice for symptomatic CHB\nBypasses AV node → directly stimulates escape pacemaker\nInfusion: 1–20 mcg/min IV"), ("Hyperbaric Bupivacaine 0.5%", TEAL, "Amide LA – Na⁺ channel blocker\nHeavy (baricity >1) → height controlled by position\n2 ml = ~10 mg – dose-reduced by fentanyl adjunct\nSpinal duration 90–120 min"), ("Intrathecal Fentanyl 10 mcg", NAVY, "μ-opioid agonist, lipophilic\nDose-sparing + visceral analgesia\nOnset 5–10 min, duration ~2–4 h\nPruritus most common side effect"), ("Clexane (Enoxaparin) 0.4 ml", RED, "Low-molecular-weight heparin\nPost-LSCS VTE prophylaxis\nFactor Xa inhibitor\nHold ≥12 h before any neuraxial procedure"), ] card_w = Inches(3.95) card_h = Inches(2.5) for idx, (name, col, info) in enumerate(drug_data): row = idx // 3 ci = idx % 3 xl = Inches(0.35) + ci * Inches(4.32) yl = Inches(1.65) + row * Inches(2.7) # header hb4 = s.shapes.add_shape(1, xl, yl, card_w, Inches(0.58)) hb4.fill.solid(); hb4.fill.fore_color.rgb = col; hb4.line.fill.background() ht4 = hb4.text_frame; ht4.vertical_anchor = MSO_ANCHOR.MIDDLE ht4.margin_left = Inches(0.1); ht4.margin_top = 0; ht4.margin_bottom = 0 hp4 = ht4.paragraphs[0]; hp4.alignment = PP_ALIGN.CENTER hr4 = hp4.add_run(); hr4.text = name hr4.font.name = "Calibri"; hr4.font.size = Pt(13) hr4.font.bold = True; hr4.font.color.rgb = WHITE # body cb4 = s.shapes.add_shape(1, xl, yl + Inches(0.58), card_w, card_h - Inches(0.58)) cb4.fill.solid(); cb4.fill.fore_color.rgb = WHITE cb4.line.color.rgb = col; cb4.line.width = Pt(1.2) ct4 = cb4.text_frame; ct4.word_wrap = True ct4.margin_left = Inches(0.12); ct4.margin_right = Inches(0.08) ct4.margin_top = Inches(0.1); ct4.margin_bottom = 0 first4 = True for line4 in info.split("\n"): p4 = ct4.paragraphs[0] if first4 else ct4.add_paragraph() first4 = False p4.space_before = Pt(3) r4 = p4.add_run(); r4.text = "• " + line4 r4.font.name = "Calibri"; r4.font.size = Pt(13); r4.font.color.rgb = DARK # ══════════════════════════════════════════════════════════════ # SLIDE 10 – Multidisciplinary Team & Key Takeaways # ══════════════════════════════════════════════════════════════ s = prs.slides.add_slide(blank) add_bg(s) title_bar(s, "MDT Approach & Key Takeaways") # MDT section label_box(s, "Multidisciplinary Team Roles", Inches(0.4), Inches(1.72), w=Inches(5.9), bg=NAVY) mdt_pts = [ (0, "Cardiology – risk stratification, ECG/ECHO, indication for pacing, peripartum monitoring"), (0, "Obstetrics – timing & mode of delivery, maternal-fetal risk balance"), (0, "Anaesthesiology – technique selection, haemodynamic management, pacing readiness"), (0, "Neonatology – anticipate compromised neonate if low-output state"), (0, "ICU/HDU – post-operative monitoring for rhythm deterioration"), ] add_bullets(s, mdt_pts, top=Inches(2.38), left=Inches(0.4), width=Inches(5.9), font_size=15) vl3 = s.shapes.add_shape(1, Inches(6.57), Inches(1.72), Inches(0.05), Inches(5.55)) vl3.fill.solid(); vl3.fill.fore_color.rgb = TEAL; vl3.line.fill.background() label_box(s, "Key Takeaways from This Case", Inches(6.95), Inches(1.72), w=Inches(5.9), bg=TEAL) kta_pts = [ (0, "Stable 2nd degree AV block in a young patient can be successfully managed under spinal anaesthesia for LSCS"), (0, "Intrathecal fentanyl (dose-sparing) + low bupivacaine dose = critical for haemodynamic stability"), (0, "Pacing equipment + emergency chronotropic drugs MUST be drawn up before block – not after"), (0, "Atropine may be ineffective in infra-nodal block; isoprenaline / adrenaline / TCP essential backup"), (0, "Post-op ECG progression to CHB highlights need for prolonged HDU monitoring after delivery"), (0, "Orciprenaline is a viable short-term bridge; symptomatic CHB = PPI indication"), ] add_bullets(s, kta_pts, top=Inches(2.38), left=Inches(6.95), width=Inches(5.9), font_size=15) # bottom banner bb2 = s.shapes.add_shape(1, Inches(0.35), Inches(6.85), Inches(12.65), Inches(0.45)) bb2.fill.solid(); bb2.fill.fore_color.rgb = NAVY; bb2.line.fill.background() bt2 = bb2.text_frame; bt2.vertical_anchor = MSO_ANCHOR.MIDDLE; bt2.margin_left = Inches(0.2) bp2 = bt2.paragraphs[0]; bp2.alignment = PP_ALIGN.CENTER br2 = bp2.add_run() br2.text = "References: Sundararaman et al. J Clin Anesth 2016 (PMID 27555134) | Christensen et al. Obstet Med 2023 (PMID 37441659) | Swain et al. BMJ Case Rep 2022 (PMID 35058284)" br2.font.name = "Calibri"; br2.font.size = Pt(11); br2.font.bold = False; br2.font.color.rgb = RGBColor(0xCC, 0xDD, 0xEE) # ══════════════════════════════════════════════════════════════ # Save # ══════════════════════════════════════════════════════════════ out = "/tmp/workspace/lavanya-discussion/Heart_Block_LSCS_Discussion_Slides.pptx" buf = BytesIO() prs.save(buf) with open(out, "wb") as f: f.write(buf.getvalue()) print(f"Saved: {out} — {len(buf.getvalue())//1024} KB") PYEOF

Your discussion slides are ready:

Heart Block LSCS Discussion Slides

Presentation · PPTX


10 slides, navy/teal colour scheme, structured for case discussion:
SlideContent
1Case Summary - full snapshot of Lavanya's case with the critical post-op CHB finding highlighted
2AV Block Classification - 3-column layout (1st / 2nd / 3rd degree) with ECG features, Mobitz types, and which applies here
3Physiological Challenge in Pregnancy - two-column: normal adaptations vs. what heart block disrupts
4Pre-Anaesthetic Assessment Checklist - row-by-row with the actual findings from this case
5Choice of Anaesthetic Technique - GA pros/cons vs. Regional, why single-shot spinal was acceptable with a bottom banner confirming the actual outcome
6Intrathecal Fentanyl - mechanism + clinical benefits specifically in heart block/pregnancy + side effects
7Intraoperative Management - step-by-step actions mapped to outcomes (HR 50-60, BP maintained)
8Post-operative Course - POD timeline with the CHB progression, clexane, ECHO findings, PPI indications
9Drug Pharmacology - 6 cards: Orciprenaline, Atropine (why it may fail in infra-nodal block), Isoprenaline, Bupivacaine, IT Fentanyl, Enoxaparin
10MDT Roles + Key Takeaways with PubMed references at the bottom (PMIDs 27555134, 37441659, 35058284)
This is a shared conversation. Sign in to Orris to start your own chat.