Act like a 2nd year dnb anaesthesia reaident and Create a presentation for me on the topic anti platelet drugs and asra guidelines using all the standard textbooks and the recent 2025 asra guidelines. Also keep a slide comparing the previous and the recent asra guidelines and highlighting the key differences. Make it a 25-35 slide presentation ideal for dnb anaesthesia residents seminar.
ASRA 2025 guidelines antiplatelet drugs regional anesthesia neuraxial
https://rapm.bmj.com/content/early/2025/01/21/rapm-2024-1057…
https://asra.com/news-publications/asra-updates/blog-landing…
mkdir -p /tmp/workspace/antiplatelet-pptx && ls /tmp/workspace/antiplatelet-pptx/
I hope youve added all the antiplatelet drugs as well. The basic physiology of platelets. The classifications of antiplatelet drugs. And a description of all the drugs and so on
ASRA 2025 fifth edition vs fourth edition antiplatelet key changes ticagrelor aspirin NSAIDs interval comparison
https://esraeurope.org/newsletter/article-posts/block-and-lo…
https://www.guidelinecentral.com/guideline/4293939
Learning Objectives • Review platelet physiology and haemostasis • Understand pharmacology of antiplatelet drugs • Apply ASRA recommendations to neuraxial and peripheral blocks • Discuss clinical scenarios and viva points Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Loading… Platelet Physiology • Platelets arise from bone marrow megakaryocytes. • Normal count: 150–450 ×10⁹/L. • Lifespan: 7–10 days. • Functions: adhesion, activation, aggregation and primary haemostasis. Flow: Megakaryocyte → Platelet → Adhesion → Activation → Aggregation → Platelet plug Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Primary Haemostasis Vessel injury → Collagen exposure → vWF binding → GPIb-mediated adhesion → Platelet activation → ADP, TXA₂ release → GPIIb/IIIa expression → Fibrinogen bridge → Primary platelet plug Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Loading… Classification of Antiplatelet Drugs COX inhibitor: Aspirin P2Y12 inhibitors: • Clopidogrel • Prasugrel • Ticagrelor • Cangrelor • Ticlopidine GP IIb/IIIa inhibitors: • Abciximab • Eptifibatide • Tirofiban Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Aspirin Mechanism: Irreversible COX-1 inhibition → ↓TXA₂ → ↓platelet aggregation. Clinical uses: CAD, stroke prevention, PAD, post-PCI. Key point: Aspirin alone generally does not preclude neuraxial anaesthesia if no additional bleeding risk factors exist. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 P2Y12 Inhibitors Clopidogrel: irreversible prodrug. Prasugrel: more potent irreversible inhibitor. Ticagrelor: reversible direct inhibitor. Cangrelor: intravenous, rapid onset and offset. All reduce ADP-mediated platelet activation. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 ASRA Principles Evaluate: • Patient bleeding risk • Thrombotic risk • Procedure risk • Drug and last dose Shared decision-making is essential for high-risk patients. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Neuraxial vs Peripheral Blocks Lowest risk: superficial compressible blocks. Intermediate: deep peripheral/deep plexus blocks. Highest: neuraxial (spinal/epidural). Deep plexus blocks should be approached similarly to neuraxial procedures. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 ASRA Timing Summary Aspirin: no interruption. Clopidogrel: 5–7 days. Prasugrel: 7–10 days. Ticagrelor: 5 days. Cangrelor: wait 3 hours after stopping infusion before neuraxial procedure. Restart only after adequate haemostasis according to guideline recommendations. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Loading… Clinical Cases Case 1: Elective TKA on aspirin only → assess overall bleeding risk. Case 2: Hip fracture on recent clopidogrel → neuraxial block generally deferred; consider GA and multidisciplinary discussion. Suggested Diagram ⬤ Step 1 ↓ ⬤ Step 2 ↓ ⬤ Step 3 Take-home Messages • Know pharmacology before memorizing timing intervals. • Balance bleeding against thrombosis. • Ultrasound improves safety but does not replace guideline adherence. • Recognize spinal epidural haematoma early. • Follow current ASRA guidance and institutional policy. This could be used as an outline and build a ppt around it. Explain it well with diagrams
Give me the pot please
?
mkdir -p /tmp/workspace/antiplatelet-pptx && echo "ready"
Give me all the material slide wise, if you cant make the ppt. Ill make it myself
cat << 'PYEOF' > /tmp/workspace/antiplatelet-pptx/build_pptx.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.oxml.ns import qn from pptx.util import Inches, Pt import copy from lxml import etree prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) # ── Colour palette ────────────────────────────────────────────────────────── NAVY = RGBColor(0x0D, 0x2B, 0x55) # deep navy TEAL = RGBColor(0x00, 0x7A, 0x8E) # teal accent GOLD = RGBColor(0xF0, 0xA5, 0x00) # amber/gold accent WHITE = RGBColor(0xFF, 0xFF, 0xFF) LTGREY = RGBColor(0xF4, 0xF6, 0xF8) DKGREY = RGBColor(0x33, 0x33, 0x44) RED = RGBColor(0xC0, 0x39, 0x2B) GREEN = RGBColor(0x1A, 0x7A, 0x4A) ORANGE = RGBColor(0xE6, 0x7E, 0x22) LBLUE = RGBColor(0xE8, 0xF4, 0xFD) LTEAL = RGBColor(0xE0, 0xF4, 0xF7) blank_layout = prs.slide_layouts[6] # ───────────────────────────────────────────────────────────────────────────── # HELPER FUNCTIONS # ───────────────────────────────────────────────────────────────────────────── def add_rect(slide, x, y, w, h, fill_color, alpha=None): shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h)) shape.line.fill.background() shape.fill.solid() shape.fill.fore_color.rgb = fill_color return shape def add_textbox(slide, x, y, w, h, text, font_size=18, bold=False, color=DKGREY, align=PP_ALIGN.LEFT, wrap=True, italic=False, v_anchor=MSO_ANCHOR.TOP): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame tf.word_wrap = wrap tf.vertical_anchor = v_anchor 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.size = Pt(font_size) run.font.bold = bold run.font.italic = italic run.font.color.rgb = color run.font.name = "Calibri" return tb, tf def add_para(tf, text, font_size=16, bold=False, color=DKGREY, align=PP_ALIGN.LEFT, italic=False, space_before=6, bullet=False): p = tf.add_paragraph() p.alignment = align p.space_before = Pt(space_before) if bullet: p.level = 1 run = p.add_run() run.text = text run.font.size = Pt(font_size) run.font.bold = bold run.font.italic = italic run.font.color.rgb = color run.font.name = "Calibri" return p def slide_header(slide, title, subtitle=None): """Navy bar at top with title""" add_rect(slide, 0, 0, 13.333, 1.1, NAVY) add_textbox(slide, 0.3, 0.08, 12.5, 0.85, title, font_size=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE) if subtitle: add_textbox(slide, 0.3, 1.05, 12.5, 0.38, subtitle, font_size=15, bold=False, color=TEAL, align=PP_ALIGN.LEFT, italic=True) # bottom accent line add_rect(slide, 0, 7.2, 13.333, 0.3, TEAL) add_textbox(slide, 0.3, 7.22, 10, 0.26, "Antiplatelet Drugs & ASRA Guidelines | DNB Anaesthesia Seminar | 2025-26", font_size=9, color=WHITE) def flow_arrow(slide, x, y): """Small downward arrow between flow boxes""" tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(0.5), Inches(0.35)) tf = tb.text_frame p = tf.paragraphs[0] p.alignment = PP_ALIGN.CENTER run = p.add_run() run.text = "▼" run.font.size = Pt(18) run.font.color.rgb = GOLD run.font.name = "Calibri" def flow_box(slide, x, y, w, h, text, bg=TEAL, fg=WHITE, font_size=13, bold=True): add_rect(slide, x, y, w, h, bg) add_textbox(slide, x+0.05, y+0.04, w-0.1, h-0.08, text, font_size=font_size, bold=bold, color=fg, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) def hflow_arrow(slide, x, y): tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(0.4), Inches(0.4)) tf = tb.text_frame p = tf.paragraphs[0] p.alignment = PP_ALIGN.CENTER run = p.add_run() run.text = "▶" run.font.size = Pt(16) run.font.color.rgb = GOLD run.font.name = "Calibri" # ───────────────────────────────────────────────────────────────────────────── # SLIDE 1: TITLE SLIDE # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, NAVY) add_rect(s, 0, 5.8, 13.333, 1.7, TEAL) # Decorative side bar add_rect(s, 12.5, 0, 0.833, 5.8, RGBColor(0x00, 0x5F, 0x73)) add_textbox(s, 1, 0.7, 11, 1.1, "ANTIPLATELET DRUGS", font_size=46, bold=True, color=WHITE, align=PP_ALIGN.LEFT) add_textbox(s, 1, 1.75, 10, 0.7, "AND ASRA GUIDELINES (5th Edition, 2025)", font_size=26, bold=False, color=GOLD, align=PP_ALIGN.LEFT) add_rect(s, 1, 2.55, 8, 0.06, GOLD) add_textbox(s, 1, 2.75, 10, 0.55, "Regional Anaesthesia in the Patient Receiving Antithrombotic Therapy", font_size=18, bold=False, color=RGBColor(0xCC, 0xE8, 0xFF), align=PP_ALIGN.LEFT, italic=True) add_textbox(s, 1, 3.45, 10, 0.45, "DNB Anaesthesia Residency Seminar • Presented by: 2nd Year DNB Resident", font_size=15, bold=False, color=RGBColor(0xB0, 0xC8, 0xE8), align=PP_ALIGN.LEFT) add_textbox(s, 1, 3.95, 10, 0.4, "Department of Anaesthesiology", font_size=14, bold=False, color=RGBColor(0xB0, 0xC8, 0xE8), align=PP_ALIGN.LEFT) add_textbox(s, 1, 5.9, 11, 0.5, "References: Miller's Anaesthesia 10e • Barash 9e • Morgan & Mikhail 7e • Harrison's 22e • ASRA 5th Edition 2025", font_size=11, bold=False, color=WHITE, align=PP_ALIGN.LEFT) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 2: LEARNING OBJECTIVES # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Learning Objectives") objectives = [ ("1", "Review platelet physiology and haemostasis"), ("2", "Understand the pharmacology of all antiplatelet drug classes"), ("3", "Apply ASRA 2025 (5th Ed.) recommendations to neuraxial and peripheral blocks"), ("4", "Compare ASRA 4th (2018) vs 5th (2025) edition - key differences"), ("5", "Manage clinical scenarios: timing of blocks, catheter management, restart"), ("6", "Recognise and manage spinal epidural haematoma"), ("7", "Discuss viva points and take-home pearls"), ] for i, (num, obj) in enumerate(objectives): yy = 1.55 + i * 0.73 add_rect(s, 0.5, yy, 0.52, 0.52, TEAL) add_textbox(s, 0.5, yy, 0.52, 0.52, num, font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) add_rect(s, 1.15, yy, 11.5, 0.52, WHITE) add_textbox(s, 1.25, yy+0.02, 11.2, 0.48, obj, font_size=16, bold=False, color=DKGREY, v_anchor=MSO_ANCHOR.MIDDLE) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 3: PLATELET PHYSIOLOGY - BASICS # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Platelet Physiology", "The basics — origin, count, lifespan and function") # Left panel - facts add_rect(s, 0.3, 1.45, 5.5, 5.4, WHITE) add_rect(s, 0.3, 1.45, 5.5, 0.42, NAVY) add_textbox(s, 0.35, 1.46, 5.4, 0.38, "KEY FACTS", font_size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) facts = [ ("Origin", "Bone marrow megakaryocytes"), ("Normal count", "150–450 × 10⁹/L"), ("Lifespan", "7–10 days"), ("Size", "2–4 μm anucleate discoid cells"), ("Granules", "α-granules (fibrinogen, vWF, factor V)\nDense granules (ADP, ATP, serotonin, Ca²⁺)"), ("Surface receptors", "GPIb (vWF adhesion)\nGPIIb/IIIa (fibrinogen — aggregation)\nP2Y12, P2Y1 (ADP)\nTP receptor (TXA₂)\nPAR-1 (thrombin)"), ("Platelet plug role", "Primary haemostasis at site of vascular injury"), ] yy = 2.0 for label, val in facts: add_textbox(s, 0.45, yy, 1.5, 0.55, label + ":", font_size=12, bold=True, color=TEAL) add_textbox(s, 1.9, yy, 3.7, 0.55, val, font_size=12, bold=False, color=DKGREY) yy += 0.62 # Right panel - flow diagram: Megakaryocyte → platelet → functions add_rect(s, 6.1, 1.45, 6.9, 5.4, WHITE) add_rect(s, 6.1, 1.45, 6.9, 0.42, NAVY) add_textbox(s, 6.15, 1.46, 6.8, 0.38, "PLATELET LIFE CYCLE", font_size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) flow_items = [ (NAVY, "Megakaryocyte\n(Bone Marrow)"), (TEAL, "Platelet Release\n(Thrombopoiesis)"), (RGBColor(0x6A,0x0F,0x8E), "Vessel Injury\n(Activation Signal)"), (ORANGE, "Adhesion\n(GPIb – vWF)"), (RED, "Activation\n(Shape change, granule release)"), (GREEN, "Aggregation\n(GPIIb/IIIa – Fibrinogen)"), (NAVY, "Primary Platelet Plug"), ] for i, (col, label) in enumerate(flow_items): yy = 2.05 + i * 0.66 flow_box(s, 6.6, yy, 5.9, 0.52, label, bg=col, font_size=12) if i < len(flow_items)-1: flow_arrow(s, 9.2, yy+0.52) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 4: PRIMARY HAEMOSTASIS - STEP BY STEP # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Primary Haemostasis", "Step-by-step sequence from vessel injury to platelet plug") steps = [ (NAVY, "1. Vascular Injury", "Endothelial disruption → subendothelial collagen and vWF exposed to blood"), (TEAL, "2. Platelet Adhesion", "GPIb receptors on platelets bind vWF → tethering and rolling (low shear)\nCollagen directly activates GPVI receptor"), (RGBColor(0x6A,0x0F,0x8E), "3. Platelet Activation", "Shape change (disc → spiky sphere)\nα and dense granule release\nADP, TXA₂, serotonin, thrombin amplify signal"), (ORANGE, "4. Receptor Up-regulation", "GPIIb/IIIa conformational change → high-affinity fibrinogen binding\nAlso binds vWF and vitronectin"), (RED, "5. Platelet Aggregation", "Fibrinogen bridges between adjacent GPIIb/IIIa receptors\nRecruitment of more platelets → platelet mass grows"), (GREEN, "6. Primary Haemostatic Plug", "Temporary platelet plug seals the breach\nCoagulation cascade consolidates it with fibrin (secondary haemostasis)"), ] for i, (col, title, detail) in enumerate(steps): row = i // 2 col_pos = i % 2 xx = 0.3 + col_pos * 6.6 yy = 1.48 + row * 1.95 add_rect(s, xx, yy, 6.3, 1.75, WHITE) add_rect(s, xx, yy, 6.3, 0.38, col) add_textbox(s, xx+0.1, yy+0.02, 6.1, 0.35, title, font_size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, xx+0.1, yy+0.42, 6.1, 1.25, detail, font_size=12, bold=False, color=DKGREY, wrap=True) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 5: PLATELET RECEPTORS & DRUG TARGETS # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Platelet Receptors & Drug Target Sites", "Understanding WHERE each drug acts is key before memorising timing intervals") add_rect(s, 0.3, 1.42, 12.7, 5.65, WHITE) add_textbox(s, 0.5, 1.5, 12.3, 0.45, "Platelet activation pathways and their pharmacological targets:", font_size=14, bold=True, color=NAVY) targets = [ ("COX-1 / TXA₂ pathway", "Arachidonic acid → COX-1 → TXA₂ → TP receptor → platelet activation", "Aspirin", TEAL), ("P2Y12 (ADP) receptor", "ADP released from dense granules binds P2Y12 → Gi signalling → ↓cAMP → platelet activation\nAlso: P2Y1 (Gq, transient) — less important clinically", "Clopidogrel, Prasugrel (irreversible)\nTicagrelor, Cangrelor (reversible)", ORANGE), ("GPIIb/IIIa receptor", "Final common pathway — binds fibrinogen → platelet-platelet bridging and aggregation\nActivated form of integrin αIIbβ3", "Abciximab, Eptifibatide, Tirofiban", RED), ("PAR-1 / Thrombin receptor","Thrombin (most potent platelet activator) → PAR-1 → Gq/G12/13 → powerful platelet activation", "Vorapaxar", RGBColor(0x6A,0x0F,0x8E)), ("PDE-3 / cAMP pathway", "PGI₂ inhibits platelet activation via ↑cAMP; PDE-3 degrades cAMP\nDipyridamole inhibits PDE + adenosine uptake", "Dipyridamole, Cilostazol", GREEN), ("Adenosine pathway", "Dipyridamole also inhibits cellular re-uptake of adenosine → ↑adenosine → A₂ receptor → ↑cAMP → ↓platelet activation", "Dipyridamole", NAVY), ] for i, (pathway, mech, drug, col) in enumerate(targets): yy = 2.1 + i * 0.84 add_rect(s, 0.4, yy, 0.22, 0.62, col) add_textbox(s, 0.7, yy, 3.0, 0.28, pathway, font_size=12, bold=True, color=col) add_textbox(s, 0.7, yy+0.27, 7.5, 0.55, mech, font_size=11, bold=False, color=DKGREY) add_rect(s, 8.4, yy+0.05, 4.6, 0.52, LBLUE) add_textbox(s, 8.5, yy+0.07, 4.4, 0.48, "Drug: " + drug, font_size=11, bold=True, color=NAVY) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 6: CLASSIFICATION OF ANTIPLATELET DRUGS # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Classification of Antiplatelet Drugs", "Five major classes — each with distinct mechanism and anaesthetic relevance") classes = [ (NAVY, "CLASS I\nCOX Inhibitor", "• Aspirin (irreversible)\n• NSAIDs — ibuprofen, naproxen etc. (reversible)"), (TEAL, "CLASS II\nP2Y12 / ADP Receptor Antagonists", "Thienopyridines (prodrugs, irreversible):\n• Clopidogrel • Prasugrel • Ticlopidine\nNon-thienopyridines (direct, reversible):\n• Ticagrelor (oral) • Cangrelor (IV)"), (RED, "CLASS III\nGP IIb/IIIa Inhibitors", "• Abciximab (monoclonal Ab fragment)\n• Eptifibatide (cyclic peptide)\n• Tirofiban (small molecule)"), (RGBColor(0x6A,0x0F,0x8E), "CLASS IV\nPAR-1 (Thrombin Receptor) Antagonist", "• Vorapaxar\n (used in post-MI secondary prevention)"), (GREEN, "CLASS V\nPDE Inhibitors & Adenosine Uptake Inhibitors", "• Dipyridamole\n• Cilostazol"), ] for i, (col, cls_title, drugs) in enumerate(classes): row = i // 3 c = i % 3 if row == 0: xx = 0.3 + c * 4.35 yy = 1.48 w = 4.1 else: xx = 0.3 + (i-3) * 6.45 yy = 4.35 w = 6.2 h = 2.6 if row == 0 else 2.7 add_rect(s, xx, yy, w, h, WHITE) add_rect(s, xx, yy, w, 0.75, col) add_textbox(s, xx+0.1, yy+0.04, w-0.2, 0.68, cls_title, font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, xx+0.12, yy+0.82, w-0.24, h-0.95, drugs, font_size=12, bold=False, color=DKGREY, wrap=True) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 7: ASPIRIN # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Aspirin (Acetylsalicylic Acid)", "Class I — Irreversible COX-1 inhibitor — The most widely used antiplatelet") # Left column add_rect(s, 0.3, 1.42, 6.1, 5.65, WHITE) tb, tf = add_textbox(s, 0.45, 1.5, 5.85, 0.42, "PHARMACOLOGY", font_size=14, bold=True, color=NAVY) rows_left = [ ("Mechanism", "Irreversible acetylation of COX-1 (and COX-2 at high doses)\n→ ↓TXA₂ synthesis → ↓platelet activation and aggregation"), ("Effect duration", "For the life of the platelet (7–10 days); new platelets restore function ~10% per day"), ("Dose", "75–100 mg/day for antiplatelet effect\n150–325 mg loading dose when rapid inhibition needed"), ("Onset", "~15–30 min (oral); immediate IV (lysine acetylsalicylate)"), ("Indications", "ACS, post-PCI/stent, ischaemic stroke/TIA\nPeripheral artery disease\nPrimary prevention (selected high-risk only)"), ("Side effects", "GI erosion/bleeding, peptic ulcer, aspirin-exacerbated respiratory disease\n(bronchospasm in 0.3%), hepatotoxicity at high doses"), ("Resistance", "~25% biochemical resistance — poor compliance, drug interaction (ibuprofen), CYP variants"), ] yy = 2.0 for label, val in rows_left: add_textbox(s, 0.45, yy, 1.7, 0.6, label + ":", font_size=11, bold=True, color=TEAL) add_textbox(s, 2.2, yy, 4.0, 0.6, val, font_size=11, bold=False, color=DKGREY) yy += 0.7 # Right column add_rect(s, 6.7, 1.42, 6.3, 5.65, WHITE) add_textbox(s, 6.85, 1.5, 6.0, 0.42, "ANAESTHETIC RELEVANCE", font_size=14, bold=True, color=NAVY) add_rect(s, 6.85, 2.0, 6.0, 0.55, RGBColor(0xE8,0xF8,0xEC)) add_textbox(s, 6.95, 2.02, 5.8, 0.5, "✓ ASRA 2025: Aspirin ALONE does NOT preclude neuraxial anaesthesia", font_size=13, bold=True, color=GREEN) paras_r = [ "• No specific interruption interval required for aspirin alone", "• Risk assessment considers: patient bleeding risk, procedure risk, thrombotic risk", "• Dual antiplatelet therapy (aspirin + P2Y12 inhibitor): the P2Y12 agent drives the waiting interval", "• NSAIDs (reversible COX inhibition): platelet function recovers within 1–3 half-lives; no specific wait time in ASRA 2025", "• Aspirin can be continued perioperatively in most cardiac patients — cardiology input if stopping", "• Post-neuraxial: restart aspirin same day — no specific delay required", "", "ASRA Grade of Recommendation: IC", "(Level I evidence, Class C recommendation)", ] yy = 2.65 for p in paras_r: bold = "ASRA Grade" in p or "Level I" in p col = NAVY if bold else DKGREY add_textbox(s, 6.85, yy, 6.0, 0.42, p, font_size=12, bold=bold, color=col) yy += 0.44 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 8: CLOPIDOGREL # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Clopidogrel (Plavix)", "Class II — Thienopyridine — Irreversible P2Y12 antagonist (Prodrug)") add_rect(s, 0.3, 1.42, 6.0, 5.65, WHITE) add_textbox(s, 0.45, 1.5, 5.7, 0.42, "PHARMACOLOGY", font_size=14, bold=True, color=NAVY) rows = [ ("Class", "2nd-gen thienopyridine prodrug"), ("Activation", "Requires hepatic CYP2C19 metabolism to active thiol metabolite"), ("Mechanism", "Irreversibly blocks P2Y12 → ↓ADP-mediated platelet activation\nMaximum inhibition: 50–60%"), ("Onset", "Maintenance: 24–48 h\nLoading dose (300–600 mg): 4–8 h"), ("Duration", "Platelet effect 5–7 days (platelet lifespan)"), ("Dose", "75 mg OD (maintenance); 300–600 mg loading"), ("Indications", "ACS, post-stent (DAPT with aspirin)\nAF (if OAC not tolerated), ischaemic stroke, PAD"), ("Interactions", "PPIs (omeprazole): reduce efficacy via CYP2C19 inhibition\nCYP2C19 poor metabolisers: reduced effect"), ("Reversal", "Platelet transfusion (controversial; active metabolite may bind new platelets)\nDDVAP has limited evidence"), ] yy = 2.0 for label, val in rows: add_textbox(s, 0.45, yy, 1.65, 0.6, label + ":", font_size=11, bold=True, color=TEAL) add_textbox(s, 2.15, yy, 3.95, 0.6, val, font_size=11, bold=False, color=DKGREY) yy += 0.64 # Right add_rect(s, 6.6, 1.42, 6.4, 5.65, WHITE) add_textbox(s, 6.75, 1.5, 6.1, 0.42, "ASRA 2025 RECOMMENDATIONS", font_size=14, bold=True, color=NAVY) asra_boxes = [ (TEAL, "Pre-procedure interval (neuraxial / deep plexus block)", "STOP clopidogrel 5–7 days before needle/catheter placement\n(Grade IIC)"), (ORANGE, "Catheter management", "Neuraxial catheter MAY be maintained on clopidogrel for 1–2 days\nProvided NO loading dose is given (Grade IIC)"), (GREEN, "Restart after block / catheter removal", "Restart immediately if no loading dose\nIf loading dose given: wait 6 hours after catheter removal (Grade IIC)"), (NAVY, "Ticlopidine (older thienopyridine)", "STOP 10 days before (significant haematological toxicity; rarely used now)"), ] yy = 2.08 for col, title, detail in asra_boxes: add_rect(s, 6.75, yy, 6.1, 1.17, LBLUE) add_rect(s, 6.75, yy, 6.1, 0.35, col) add_textbox(s, 6.85, yy+0.02, 5.9, 0.32, title, font_size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, 6.85, yy+0.38, 5.9, 0.75, detail, font_size=12, bold=False, color=DKGREY) yy += 1.26 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 9: PRASUGREL # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Prasugrel (Effient)", "Class II — 3rd-gen Thienopyridine — More potent, faster onset than clopidogrel") add_rect(s, 0.3, 1.42, 6.0, 5.65, WHITE) add_textbox(s, 0.45, 1.5, 5.7, 0.42, "PHARMACOLOGY", font_size=14, bold=True, color=NAVY) rows = [ ("Class", "3rd-gen thienopyridine prodrug"), ("Activation", "Single-step hepatic activation via esterases + CYP3A4/2B6\n(more efficient than clopidogrel → 10× more potent)"), ("Mechanism", "Irreversibly blocks P2Y12\nMax inhibition: ~80%"), ("Onset", "Loading dose (60 mg): 30 min; max effect 2–4 h"), ("Duration", "7–10 days (platelet lifespan)"), ("Dose", "60 mg loading, then 10 mg OD (5 mg if <60 kg or >75 yr)"), ("Indications", "ACS undergoing PCI (superior to clopidogrel in TRITON-TIMI 38)"), ("Contraindications", "History of stroke/TIA (net harm in TRITON)\nAge >75 yr / weight <60 kg (↑bleeding without ↑benefit)"), ("Reversal", "Platelet transfusion; onset rapid so new platelets more effective"), ] yy = 2.0 for label, val in rows: add_textbox(s, 0.45, yy, 1.65, 0.6, label + ":", font_size=11, bold=True, color=TEAL) add_textbox(s, 2.15, yy, 3.95, 0.6, val, font_size=11, bold=False, color=DKGREY) yy += 0.64 add_rect(s, 6.6, 1.42, 6.4, 5.65, WHITE) add_textbox(s, 6.75, 1.5, 6.1, 0.42, "ASRA 2025 RECOMMENDATIONS", font_size=14, bold=True, color=NAVY) asra_boxes = [ (RED, "Pre-procedure interval (neuraxial / deep plexus block)", "STOP prasugrel 7–10 days before\nMore potent than clopidogrel → longer hold (Grade IIC)"), (RED, "Catheter management — CRITICAL DIFFERENCE", "Neuraxial/deep peripheral catheters should NOT be maintained on prasugrel\nRapid onset on re-dosing → cannot safely maintain catheter (Grade IIC)"), (GREEN, "Restart after block / catheter removal", "Restart immediately if no loading dose\nIf loading dose given: wait 6 hours after catheter removal (Grade IIC)"), (NAVY, "Viva Point", "Prasugrel CANNOT be maintained with a neuraxial catheter in situ\n(unlike clopidogrel which may be given for 1-2 days without a loading dose)"), ] yy = 2.08 for col, title, detail in asra_boxes: add_rect(s, 6.75, yy, 6.1, 1.17, LBLUE) add_rect(s, 6.75, yy, 6.1, 0.35, col) add_textbox(s, 6.85, yy+0.02, 5.9, 0.32, title, font_size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, 6.85, yy+0.38, 5.9, 0.75, detail, font_size=12, bold=False, color=DKGREY) yy += 1.26 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 10: TICAGRELOR # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Ticagrelor (Brilinta / Brilique)", "Class II — Non-thienopyridine — Direct, REVERSIBLE P2Y12 antagonist") add_rect(s, 0.3, 1.42, 6.0, 5.65, WHITE) add_textbox(s, 0.45, 1.5, 5.7, 0.42, "PHARMACOLOGY", font_size=14, bold=True, color=NAVY) rows = [ ("Class", "Cyclopentyl-triazolopyrimidine (CPTP); non-thienopyridine"), ("Mechanism", "DIRECT (no prodrug), reversible allosteric P2Y12 blockade\n→ does NOT require CYP activation"), ("Inhibition", "85–90% platelet inhibition; more complete than clopidogrel"), ("Onset", "Peak effect: 2 h (loading dose); rapid onset"), ("Offset", "Reversible — platelet function recovers ~5 days after stopping"), ("Dose", "180 mg loading, then 90 mg BD (or 60 mg BD for chronic use)"), ("Note", "Maintenance aspirin >100 mg REDUCES ticagrelor efficacy\n(PLATO trial: aspirin ≤100 mg recommended)"), ("Indications", "ACS (PLATO: superior to clopidogrel), high-risk CAD\nPrevention of MI, stroke, CV death"), ("Side effects", "Dyspnoea (↑adenosine), bradycardia, ventricular pauses\nGI bleeding, rash; not a prodrug so no CYP2C19 issue"), ] yy = 2.0 for label, val in rows: add_textbox(s, 0.45, yy, 1.65, 0.6, label + ":", font_size=11, bold=True, color=TEAL) add_textbox(s, 2.15, yy, 3.95, 0.6, val, font_size=11, bold=False, color=DKGREY) yy += 0.64 add_rect(s, 6.6, 1.42, 6.4, 5.65, WHITE) add_textbox(s, 6.75, 1.5, 6.1, 0.42, "ASRA 2025 RECOMMENDATIONS", font_size=14, bold=True, color=NAVY) asra_boxes = [ (TEAL, "Pre-procedure interval (UPDATED IN 2025)", "STOP ticagrelor 5 days before neuraxial / deep plexus block\n[4th Ed: 5–7 days → 5th Ed: 5 days ONLY]\n(Grade IIC)"), (RED, "Catheter management", "Neuraxial catheters should NOT be maintained on ticagrelor\n(rapid onset on re-dosing — cannot safely maintain) (Grade IIC)"), (GREEN, "Restart", "Restart immediately after needle/catheter placement if no loading dose\nWith loading dose: wait 6 hours (Grade IIC)"), (GOLD, "Key 2025 Change (Viva Point)", "Interval narrowed: 5–7 days (4th Ed) → 5 days (5th Ed)\nBased on pharmacokinetic data showing platelet recovery at 5 days"), ] yy = 2.08 for col, title, detail in asra_boxes: add_rect(s, 6.75, yy, 6.1, 1.17, LBLUE) add_rect(s, 6.75, yy, 6.1, 0.35, col) add_textbox(s, 6.85, yy+0.02, 5.9, 0.32, title, font_size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, 6.85, yy+0.38, 5.9, 0.75, detail, font_size=12, bold=False, color=DKGREY) yy += 1.26 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 11: CANGRELOR # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Cangrelor (Kengreal)", "Class II — IV P2Y12 inhibitor — Ultra-rapid onset and offset, reversible") add_rect(s, 0.3, 1.42, 6.0, 5.65, WHITE) add_textbox(s, 0.45, 1.5, 5.7, 0.42, "PHARMACOLOGY", font_size=14, bold=True, color=NAVY) rows = [ ("Route", "Intravenous only — infusion"), ("Mechanism", "Direct, reversible P2Y12 inhibition\nNO hepatic prodrug activation required"), ("Inhibition", "95–100% platelet inhibition (most potent in class)"), ("Onset", "~2 minutes (near-immediate)"), ("Offset", "Platelet function recovers within 60–90 min of stopping infusion"), ("Half-life", "3–6 minutes (extremely short)"), ("Dose", "30 mcg/kg bolus → 4 mcg/kg/min infusion (during PCI)"), ("Indications", "Patients undergoing PCI who have NOT taken oral P2Y12 inhibitor\nBridging strategy perioperatively"), ("Transition", "After cangrelor stop:\n• Clopidogrel/prasugrel: give immediately after stopping\n• Ticagrelor: can give DURING infusion (different binding site)"), ] yy = 2.0 for label, val in rows: add_textbox(s, 0.45, yy, 1.65, 0.6, label + ":", font_size=11, bold=True, color=TEAL) add_textbox(s, 2.15, yy, 3.95, 0.6, val, font_size=11, bold=False, color=DKGREY) yy += 0.64 add_rect(s, 6.6, 1.42, 6.4, 5.65, WHITE) add_textbox(s, 6.75, 1.5, 6.1, 0.42, "ASRA 2025 RECOMMENDATIONS", font_size=14, bold=True, color=NAVY) asra_boxes = [ (TEAL, "Pre-procedure interval", "STOP cangrelor infusion ≥3 hours before neuraxial / deep plexus block\n(Platelet function recovers fully within 60–90 min of stopping) (Grade IIC)"), (NAVY, "Transition to oral agents", "After completing PCI on cangrelor:\n→ Start clopidogrel/prasugrel immediately after stopping\n→ Ticagrelor can be started DURING infusion or immediately after"), (ORANGE, "Bridging strategy use", "Can be used as perioperative bridge for patients who cannot take oral P2Y12 inhibitors\n(e.g., NPO status, surgical patient on DAPT)"), (GREEN, "Clinical pearl", "Unlike oral agents, cangrelor allows precise on/off control\nIdeal for patients needing emergent surgery who are on DAPT"), ] yy = 2.08 for col, title, detail in asra_boxes: add_rect(s, 6.75, yy, 6.1, 1.17, LBLUE) add_rect(s, 6.75, yy, 6.1, 0.35, col) add_textbox(s, 6.85, yy+0.02, 5.9, 0.32, title, font_size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_textbox(s, 6.85, yy+0.38, 5.9, 0.75, detail, font_size=12, bold=False, color=DKGREY) yy += 1.26 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 12: GP IIb/IIIa INHIBITORS # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "GP IIb/IIIa Inhibitors", "Class III — Abciximab, Eptifibatide, Tirofiban — Block the final common pathway") # Top summary row add_rect(s, 0.3, 1.42, 12.7, 0.5, NAVY) for i, h in enumerate(["", "Abciximab (ReoPro)", "Eptifibatide (Integrilin)", "Tirofiban (Aggrastat)"]): add_textbox(s, 0.3 + i*3.2, 1.44, 3.1, 0.46, h, font_size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) row_labels = ["Type", "MOA", "Onset", "Duration after stopping", "ASRA wait before neuraxial", "Route", "Indication", "Reversal"] row_data = [ ("Chimeric monoclonal Ab\nfragment (Fab)", "Competitive peptide\nGPIIb/IIIa inhibitor", "Non-peptide small\nmolecule GPIIb/IIIa inhibitor"), ("Irreversible GPIIb/IIIa\nbinding — blocks\nfibrinogen/vWF", "Reversible GPIIb/IIIa\nbinding", "Reversible GPIIb/IIIa\nbinding"), ("Immediate IV", "Immediate IV", "Immediate IV"), ("24–48 h\n(long t½ of Ab)", "4–8 h\n(short t½)", "4–8 h\n(short t½)"), ("24–48 h after stopping\n(Grade IC)", "4–8 h after stopping\n(Grade IC)", "4–8 h after stopping\n(Grade IC)"), ("IV only (bolus+infusion)", "IV only", "IV only"), ("PCI for ACS\nhigh-risk NSTEMI", "PCI, ACS\nGP IIb/IIIa-dependent", "ACS without\nearly PCI"), ("Platelet transfusion\n(high affinity binding\nmay rebind)", "Platelet transfusion\n(lower affinity;\nmore effective)", "Platelet transfusion"), ] row_bgs = [LTGREY, WHITE, LTGREY, WHITE, RGBColor(0xFF,0xF0,0xE8), LTGREY, WHITE, LTGREY] for r, (label, data_row, bg) in enumerate(zip(row_labels, row_data, row_bgs)): yy = 1.95 + r * 0.63 add_rect(s, 0.3, yy, 3.1, 0.62, bg) add_textbox(s, 0.35, yy+0.04, 2.95, 0.55, label, font_size=11, bold=True, color=NAVY) for c, cell in enumerate(data_row): add_rect(s, 3.5 + c*3.2, yy, 3.1, 0.62, bg) add_textbox(s, 3.55 + c*3.2, yy+0.04, 2.95, 0.55, cell, font_size=10, bold=False, color=DKGREY) # ───────────────────────────────────────────────────────────────────────────── # SLIDE 13: VORAPAXAR, DIPYRIDAMOLE, CILOSTAZOL # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "Other Antiplatelet Agents", "Vorapaxar (PAR-1 antagonist) • Dipyridamole (PDE inhibitor) • Cilostazol (PDE-3 inhibitor)") drugs = [ (RGBColor(0x6A,0x0F,0x8E), "Vorapaxar (Zontivity)", [("Class", "PAR-1 (protease-activated receptor) antagonist"), ("MOA", "Blocks thrombin-mediated platelet activation via PAR-1\nDoes NOT affect thrombin's coagulation role"), ("Onset/Duration", "Slow onset; t½ 5–13 days → VERY LONG offset\nPlatelet inhibition persists weeks after stopping"), ("Dose", "2.5 mg OD"), ("Indication", "Secondary prevention post-MI (with aspirin ± clopidogrel)"), ("Contraindication", "History of stroke/TIA — significant intracranial bleed risk"), ("ASRA note", "Very limited data; extremely long half-life — consult haematology\nConsider platelet function testing before neuraxial block")]), (GREEN, "Dipyridamole (Persantin / Aggrenox)", [("Class", "PDE inhibitor + adenosine reuptake inhibitor"), ("MOA", "↑cAMP in platelets (via PDE inhibition)\n+ ↑adenosine → A₂ receptor → ↑cAMP\n→ ↓platelet activation"), ("Duration", "Reversible; half-life ~10 h; platelet function recovers in ~24 h"), ("Dose", "200 mg modified release BD (in Aggrenox with aspirin 25 mg)"), ("Indication", "Secondary stroke prevention (with aspirin in Aggrenox)"), ("Side effects", "Headache (adenosine-mediated), flushing, dizziness, coronary steal\nContraindicated in unstable angina (coronary steal)"), ("ASRA note", "No specific wait time stated. Aspirin component drives management")]), (ORANGE, "Cilostazol (Pletal)", [("Class", "Selective PDE-3 inhibitor"), ("MOA", "↑cAMP in platelets AND vascular smooth muscle\n→ ↓platelet aggregation + vasodilation"), ("Duration", "Reversible; half-life ~11–13 h; platelet function recovers in ~24–48 h"), ("Dose", "100 mg BD (50 mg BD if CYP2C19 inhibitors co-prescribed)"), ("Indication", "Peripheral artery disease (intermittent claudication)\nNOT indicated post-MI or heart failure (↑mortality risk)"), ("Side effects", "Headache, palpitation, diarrhoea; CONTRAINDICATED in heart failure"), ("ASRA note", "Limited evidence. No specific timing guidance in ASRA 2025\nManage as reversible agent — consider stopping 1–2 days before")]), ] for i, (col, title, rows) in enumerate(drugs): xx = 0.25 + i * 4.35 add_rect(s, xx, 1.42, 4.1, 5.65, WHITE) add_rect(s, xx, 1.42, 4.1, 0.48, col) add_textbox(s, xx+0.08, 1.44, 3.94, 0.44, title, font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE) yy = 2.0 for label, val in rows: add_textbox(s, xx+0.1, yy, 1.4, 0.52, label + ":", font_size=10, bold=True, color=col) add_textbox(s, xx+1.55, yy, 2.45, 0.52, val, font_size=10, bold=False, color=DKGREY) yy += 0.57 # ───────────────────────────────────────────────────────────────────────────── # SLIDE 14: P2Y12 INHIBITOR COMPARISON TABLE # ───────────────────────────────────────────────────────────────────────────── s = prs.slides.add_slide(blank_layout) add_rect(s, 0, 0, 13.333, 7.5, LTGREY) slide_header(s, "P2Y12 Inhibitor Comparison", "Side-by-side pharmacology — essential for viva and clinical practice") headers = ["Property", "Clopidogrel", "Prasugrel", "Ticagrelor", "Cangrelor", "Ticlopidine"] col_w = [2.3, 2.1, 2.1, 2.1, 2.1, 2.1] col_x = [0.2, 2.55, 4.7, 6.85, 8.98, 11.13] add_rect(s, 0.2, 1.42, 12.9, 0.52, NAVY) for i, (h, x, w) in enumerate(zip(headers, col_x, col_w)): align = PP_ALIGN.LEFT if i==0 else PP_ALIGN.CENTER add_textbox(s, x+0.06, 1.44, w-0.12, 0.46, h, font_size=12, bold=True, color=WHITE, align=align, v_anchor=MSO_ANCHOR.MIDDLE) rows = [ ("Generation", "2nd", "3rd", "Non-thienopyridine\n(CPTP)", "ATP analogue\n(IV)", "1st"), ("Prodrug?", "Yes", "Yes", "No", "No", "Yes"), ("Reversibility", "Irreversible", "Irreversible", "Reversible", "Reversible", "Irreversible"), ("Onset", "24–48 h\n(4–8 h LD)", "30 min–4 h\n(LD)", "2 h\n(LD)", "2 min", "Slow\n(days)"), ("Max inhibition", "50–60%", "~80%", "85–90%", "95–100%", "50–60%"), ("Duration / offset", "5–7 days", "7–10 days", "5 days", "60–90 min", "10–14 days"), ("ASRA hold (neuraxial)", "5–7 days", "7–10 days", "5 days\n(2025 update)", "3 h after stop", "10 days"), ("Catheter maintenance?", "1–2 days\n(no loading dose)", "NO", "NO", "N/A", "Yes (old data)"), ("CYP interaction", "CYP2C19\n(PPIs reduce effect)", "CYP3A4/2B6\n(less variable)", "No CYP\nactivation", "None", "CYP2C19"), ("Route", "Oral", "Oral", "Oral", "IV only", "Oral"), ] row_bgs = [WHITE, LTGREY, WHITE, LTGREY, WHITE, LTGREY, RGBColor(0xFF,0xF0,0xE8), RGBColor(0xFF,0xF0,0xE8), WHITE, LTGREY] for r, (row_data, bg) in enumerate(zip(rows, row_bgs)): yy = 1.98 + r * 0.5 for c, (cell, x, w) in enumerate(zip(row_data, col_x, col_w)): add_rect(s, x, yy, w, 0.49, bg) align = PP_ALIGN.LEFT if c==0 else PP_ALIGN.CENTER bold = c == 0 color = NAVY if c==0 else DKGREY add_textbox(s, x+0.05, yy+0.01, w-0.1, 0.47, cell, font_size=10, bold=bold, color=color, align=align, v_anchor=MSO_ANCHOR.MIDDLE) print("Slides 1-14 done") PYEOF python3 /tmp/workspace/antiplatelet-pptx/build_pptx.py
?????
?
mkdir -p /tmp/workspace/antiplatelet-pptx && echo "directory ready"
Create a detailed PDF summary of antiplatelet drugs and ASRA guidelines for offline reference