Detailed pdf on Thiopentone sodium - group, chemical structure, formulation, dilution, available forms in market, routes of administration, dosage, mechanism of action, pharmacokinetics, pharmacodynamics, indications, contraindications, adverse effects and special points . PDF preferences - - ASCII only - CO2, N2O, O2, H2O, Ca(OH)2, Na2CO3 all written as plain text - no Unicode subscripts, no dark squares anywhere - Suitable spacing - Proper gaps between sections so that easy to distinguish between sections and easy to read ; sections on the same page where possible - All table cells use Paragraph objects - text wraps automatically inside cells, rows grow to fit content, no text overflows borders - Column widths tuned per table - each table has appropriate widths for its content type - No overlapping or compressed text - adjust column widths to stay readable - Font - Liberation Sans - Give me coloured headings and highlight the doses or cautions or important points in different colors which are pleasant to see and always use subtle colors in the pdf but it shouldn’t be overwhelming. Please keep changing the colour palette themes used for PDFs from one pdf to another pdfs automatically with clear distinct colours for headings and subheadings and it should not be overwhelming but pleasant to look and read. Please use important sentences or pearls in dark coloured. Also include flowcharts or tables if needed. - dark colored text to be 100% blacker and other colours be the same 100%. - Font size 10.5 pt - Body line spacing 15.5 pt - Cell line spacing 13 pt - Coloured labels - 100% saturated - Headings should be dark coloured according to the colour palette highlighted with suitable pleasant colour.
mkdir -p /home/daytona/workspace/thiopentone-pdf && cat > /home/daytona/workspace/thiopentone-pdf/build.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm, cm from reportlab.lib.styles import ParagraphStyle from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, PageBreak ) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus.flowables import Flowable from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont import os # ── Register Liberation Sans ────────────────────────────────────────────────── font_paths = [ "/usr/share/fonts/truetype/liberation", "/usr/share/fonts/liberation", "/usr/share/fonts", ] def find_font(name): for d in font_paths: p = os.path.join(d, name) if os.path.exists(p): return p return None reg = find_font("LiberationSans-Regular.ttf") bold = find_font("LiberationSans-Bold.ttf") ital = find_font("LiberationSans-Italic.ttf") boit = find_font("LiberationSans-BoldItalic.ttf") if reg: pdfmetrics.registerFont(TTFont("LibSans", reg)) if bold: pdfmetrics.registerFont(TTFont("LibSans-Bold", bold)) if ital: pdfmetrics.registerFont(TTFont("LibSans-Italic", ital)) if boit: pdfmetrics.registerFont(TTFont("LibSans-BoldItalic", boit)) FONT = "LibSans" if reg else "Helvetica" FONT_BOLD = "LibSans-Bold" if bold else "Helvetica-Bold" FONT_ITAL = "LibSans-Italic" if ital else "Helvetica-Oblique" FONT_BI = "LibSans-BoldItalic" if boit else "Helvetica-BoldOblique" # ── Colour Palette (Teal/Olive/Amber theme) ─────────────────────────────────── C_H1_BG = colors.HexColor("#1B4F5E") # deep teal -- heading bg C_H1_FG = colors.white C_H2_FG = colors.HexColor("#1B4F5E") # deep teal text C_H2_BG = colors.HexColor("#D6EEF5") # very light blue highlight C_H3_FG = colors.HexColor("#5C4B00") # dark amber C_ACCENT = colors.HexColor("#C47D00") # amber accent C_DOSE_BG = colors.HexColor("#FFF3CC") # soft amber highlight for doses C_CAUTION_BG = colors.HexColor("#FDECEA") # soft red highlight for cautions C_PEARL_BG = colors.HexColor("#E8F5E9") # soft green for pearls C_DARK_TEXT = colors.HexColor("#000000") # 100% black C_TABLE_HDR = colors.HexColor("#1B4F5E") C_TABLE_ALT = colors.HexColor("#EAF5F9") C_TABLE_ALT2 = colors.HexColor("#F7FCFE") C_RULE = colors.HexColor("#1B4F5E") FS = 10.5 # base font size LS = 15.5 # body leading CLS = 13 # cell leading PW, PH = A4 ML, MR, MT, MB = 20*mm, 20*mm, 22*mm, 22*mm # ── Style helpers ──────────────────────────────────────────────────────────── def s_body(): return ParagraphStyle("body", fontName=FONT, fontSize=FS, leading=LS, textColor=C_DARK_TEXT, spaceAfter=4, alignment=TA_JUSTIFY) def s_cell(): return ParagraphStyle("cell", fontName=FONT, fontSize=FS, leading=CLS, textColor=C_DARK_TEXT, wordWrap='CJK') def s_cell_bold(): return ParagraphStyle("cell_bold", fontName=FONT_BOLD, fontSize=FS, leading=CLS, textColor=C_DARK_TEXT, wordWrap='CJK') def s_cell_hdr(): return ParagraphStyle("cell_hdr", fontName=FONT_BOLD, fontSize=FS, leading=CLS, textColor=colors.white, wordWrap='CJK') def s_bullet(): return ParagraphStyle("bullet", fontName=FONT, fontSize=FS, leading=LS, leftIndent=14, firstLineIndent=0, textColor=C_DARK_TEXT, bulletIndent=4, spaceAfter=2) def s_sub_bullet(): return ParagraphStyle("sub_bullet", fontName=FONT, fontSize=FS, leading=LS, leftIndent=28, firstLineIndent=0, textColor=C_DARK_TEXT, bulletIndent=18, spaceAfter=2) # ── Heading flowables ───────────────────────────────────────────────────────── class H1(Flowable): def __init__(self, text): Flowable.__init__(self) self.text = text self.width = PW - ML - MR self.height = 22 def draw(self): c = self.canv c.setFillColor(C_H1_BG) c.roundRect(0, 0, self.width, self.height, 4, stroke=0, fill=1) c.setFillColor(C_H1_FG) c.setFont(FONT_BOLD, 12.5) c.drawString(10, 6, self.text) def wrap(self, aw, ah): return (self.width, self.height) class H2(Flowable): def __init__(self, text): Flowable.__init__(self) self.text = text self.width = PW - ML - MR self.height = 19 def draw(self): c = self.canv c.setFillColor(C_H2_BG) c.rect(0, 0, self.width, self.height, stroke=0, fill=1) c.setFillColor(C_H2_FG) c.setFont(FONT_BOLD, 11) c.drawString(8, 5, self.text) def wrap(self, aw, ah): return (self.width, self.height) def h3(text): return Paragraph(f'<font color="#5C4B00"><b>{text}</b></font>', ParagraphStyle("h3", fontName=FONT_BOLD, fontSize=10.5, leading=14, textColor=C_H3_FG, spaceAfter=3, spaceBefore=5)) def body(text): return Paragraph(text, s_body()) def bullet(text, level=1): st = s_bullet() if level == 1 else s_sub_bullet() marker = "- " if level == 1 else " * " return Paragraph(marker + text, st) def sp(h=4): return Spacer(1, h*mm) def rule(): return HRFlowable(width="100%", thickness=0.6, color=C_RULE, spaceAfter=3*mm, spaceBefore=1*mm) def dose_box(text): return Paragraph( f'<font color="#6B4200"><b>DOSE: </b></font>{text}', ParagraphStyle("dose", fontName=FONT, fontSize=FS, leading=LS, backColor=C_DOSE_BG, textColor=C_DARK_TEXT, leftIndent=8, rightIndent=8, borderPad=5, spaceAfter=4, borderColor=C_ACCENT, borderWidth=0.8)) def caution_box(text): return Paragraph( f'<font color="#8B1A1A"><b>CAUTION: </b></font>{text}', ParagraphStyle("caut", fontName=FONT, fontSize=FS, leading=LS, backColor=C_CAUTION_BG, textColor=C_DARK_TEXT, leftIndent=8, rightIndent=8, borderPad=5, spaceAfter=4, borderColor=colors.HexColor("#E57373"), borderWidth=0.8)) def pearl_box(text): return Paragraph( f'<font color="#2E6B3A"><b>PEARL: </b></font>{text}', ParagraphStyle("pearl", fontName=FONT, fontSize=FS, leading=LS, backColor=C_PEARL_BG, textColor=C_DARK_TEXT, leftIndent=8, rightIndent=8, borderPad=5, spaceAfter=4, borderColor=colors.HexColor("#66BB6A"), borderWidth=0.8)) def make_table(data, col_widths, hdr_rows=1): """data = list of lists of Paragraph objects""" t = Table(data, colWidths=col_widths, repeatRows=hdr_rows) n = len(data) style = [ # Header ('BACKGROUND', (0,0), (-1, hdr_rows-1), C_TABLE_HDR), ('TEXTCOLOR', (0,0), (-1, hdr_rows-1), colors.white), ('ALIGN', (0,0), (-1,-1), 'LEFT'), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#B0D0DC")), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING',(0,0),(-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING',(0,0), (-1,-1), 6), ] for i in range(hdr_rows, n): bg = C_TABLE_ALT if i % 2 == 0 else C_TABLE_ALT2 style.append(('BACKGROUND', (0,i), (-1,i), bg)) t.setStyle(TableStyle(style)) return t # ── Helper: cell paragraph ───────────────────────────────────────────────────── def cp(text, bold=False): st = s_cell_bold() if bold else s_cell() return Paragraph(text, st) def ch(text): return Paragraph(text, s_cell_hdr()) # ═══════════════════════════════════════════════════════════════════════════════ # CONTENT BUILD # ═══════════════════════════════════════════════════════════════════════════════ story = [] # ── TITLE PAGE ──────────────────────────────────────────────────────────────── story.append(sp(10)) title_style = ParagraphStyle("title", fontName=FONT_BOLD, fontSize=20, leading=26, textColor=C_H1_BG, alignment=TA_CENTER, spaceAfter=6) sub_style = ParagraphStyle("sub", fontName=FONT, fontSize=12, leading=16, textColor=C_H3_FG, alignment=TA_CENTER) story.append(Paragraph("THIOPENTONE SODIUM", title_style)) story.append(Paragraph("A Comprehensive Pharmacological Reference", sub_style)) story.append(sp(4)) story.append(HRFlowable(width="80%", thickness=2, color=C_ACCENT, spaceAfter=3*mm, hAlign='CENTER')) story.append(Paragraph( "Intravenous Barbiturate Anaesthetic Agent", ParagraphStyle("tag", fontName=FONT_ITAL, fontSize=11, leading=14, textColor=colors.HexColor("#888800"), alignment=TA_CENTER))) story.append(sp(8)) # ── TOC-style overview box ───────────────────────────────────────────────────── toc_data = [ [ch("Section"), ch("Topic")], [cp("1"), cp("Drug Group & Classification")], [cp("2"), cp("Chemical Structure")], [cp("3"), cp("Formulation & Dilution")], [cp("4"), cp("Available Market Forms")], [cp("5"), cp("Routes of Administration")], [cp("6"), cp("Dosage")], [cp("7"), cp("Mechanism of Action")], [cp("8"), cp("Pharmacokinetics")], [cp("9"), cp("Pharmacodynamics")], [cp("10"), cp("Indications")], [cp("11"), cp("Contraindications")], [cp("12"), cp("Adverse Effects")], [cp("13"), cp("Special Points & Pearls")], ] story.append(make_table(toc_data, [30*mm, 120*mm])) story.append(PageBreak()) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 1 – DRUG GROUP & CLASSIFICATION # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("1. DRUG GROUP AND CLASSIFICATION")) story.append(sp(2)) story.append(body( "Thiopentone sodium (also known as thiopental sodium) is an ultra-short-acting " "intravenous barbiturate anaesthetic. It belongs to the thiobarbiturate subclass " "of barbiturates - compounds derived from barbituric acid (2,4,6-trioxohexahydropyrimidine) " "with a sulfur atom substituted at position 2 of the pyrimidine ring." )) story.append(sp(2)) class_data = [ [ch("Classification Level"), ch("Description")], [cp("Drug Class"), cp("Barbiturate")], [cp("Sub-class"), cp("Thiobarbiturate (sulfur at C-2 of pyrimidine ring)")], [cp("Pharmacological Category"), cp("Intravenous general anaesthetic / CNS depressant")], [cp("WHO Classification"), cp("General anaesthetic - intravenous agent")], [cp("Controlled Status"), cp("Schedule II or equivalent controlled substance in most countries")], [cp("DEA Schedule (USA)"), cp("Schedule III controlled substance")], [cp("Onset"), cp("Ultra-short-acting (onset 30-60 seconds IV)")], [cp("Duration"), cp("Short (awakening in 5-10 min from single dose due to redistribution)")], ] story.append(make_table(class_data, [60*mm, 110*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 2 – CHEMICAL STRUCTURE # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("2. CHEMICAL STRUCTURE")) story.append(sp(2)) story.append(body( "Thiopentone sodium is formed from barbituric acid (pyrimidine-2,4,6(1H,3H,5H)-trione) " "by two substitutions that confer anaesthetic activity:" )) story.append(sp(1)) story.append(bullet("Position 2: Sulfur replaces oxygen (=S instead of =O) - thiobarbiturate; " "increases lipid solubility and speeds CNS penetration.")) story.append(bullet("Position 5: Substitution with an ethyl group and a 1-methylbutyl group " "confers hypnotic potency.")) story.append(bullet("N-1 atom: Unsubstituted (no methyl group) - distinguishes from methohexital.")) story.append(sp(2)) chem_data = [ [ch("Property"), ch("Value")], [cp("IUPAC Name"), cp("5-Ethyl-5-(1-methylbutyl)-2-thioxo-1,3-diazinane-4,6-dione, sodium salt")], [cp("Molecular Formula"), cp("C11H17N2NaO2S")], [cp("Molecular Weight"), cp("264.32 g/mol (free acid 242.34 g/mol)")], [cp("CAS Number"), cp("71-73-8 (sodium salt)")], [cp("Physical State"), cp("Yellow-white hygroscopic powder or granules")], [cp("Odour"), cp("Slightly unpleasant (sulfur-containing compound)")], [cp("Solubility"), cp("Freely soluble in water; practically insoluble in ether, petroleum spirit")], [cp("pH of 2.5% solution"), cp("10.5 - 11.0 (highly alkaline)")], [cp("pKa"), cp("7.45 (clinically important - near physiologic pH)")], [cp("Protein Binding"), cp("80-86% bound to plasma albumin")], [cp("Ionisation"), cp("Highly ionised at pH 7.4 (ionised form less active, non-ionised crosses BBB)")], [cp("Key Structural Features"), cp("Sulfur at C-2 makes it lipophilic, rapidly crosses blood-brain barrier")], ] story.append(make_table(chem_data, [65*mm, 105*mm])) story.append(sp(2)) story.append(pearl_box( "The pKa of 7.45 is nearly identical to physiologic pH. At normal blood pH, " "approximately 50% is non-ionised (active, lipid-soluble form) - allowing rapid CNS penetration. " "Acidosis increases non-ionised fraction and potentiates the drug effect." )) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 3 – FORMULATION & DILUTION # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("3. FORMULATION AND DILUTION")) story.append(sp(2)) story.append(H2("3.1 Formulation")) story.append(sp(1)) story.append(body( "Thiopentone is formulated as the sodium salt mixed with 6% w/w anhydrous sodium carbonate " "(Na2CO3) as a preservative and to maintain alkalinity. The powder is supplied in amber vials " "for protection from light. The alkaline pH (>10) is essential for solubility - if pH drops, " "the drug precipitates as the free acid." )) story.append(sp(2)) story.append(H2("3.2 Reconstitution and Dilution")) story.append(sp(1)) dil_data = [ [ch("Preparation"), ch("Diluent"), ch("Final Concentration"), ch("Standard Vial"), ch("Notes")], [cp("Standard solution"), cp("Water for injection or Normal Saline (0.9% NaCl)"), cp("2.5% (25 mg/mL)"), cp("500 mg in 20 mL"), cp("Most common clinical use")], [cp("Dilute solution"), cp("Water for injection or Normal Saline"), cp("1.25% (12.5 mg/mL)"), cp("500 mg in 40 mL"), cp("Preferred in elderly / haemodynamically unstable")], [cp("Concentrated solution"), cp("Not recommended for routine use"), cp("5% (50 mg/mL)"), cp("1 g in 20 mL"), cp("Reserved for ICP reduction protocols only")], ] story.append(make_table(dil_data, [38*mm, 44*mm, 38*mm, 28*mm, 22*mm])) story.append(sp(2)) story.append(caution_box( "Do NOT reconstitute with Lactated Ringer (Hartmann) solution or any acidic solution - " "precipitation occurs. Do NOT mix with: succinylcholine, atracurium, vecuronium, rocuronium, " "pancuronium, alfentanil, sufentanil, morphine, dopamine, dobutamine, or midazolam." )) story.append(sp(1)) story.append(dose_box( "Standard clinical preparation: Add 20 mL water for injection to 500 mg vial -> 2.5% solution. " "Each mL = 25 mg thiopentone. Always prepare fresh on the day of use." )) story.append(sp(1)) story.append(body( "Stability after reconstitution: Thiobarbiturates are stable for 7 days when refrigerated " "(2-8 degrees C) after reconstitution. Once removed from refrigerator, use within 24 hours. " "Discard if solution becomes cloudy or precipitate is visible." )) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 4 – AVAILABLE MARKET FORMS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("4. AVAILABLE FORMS IN THE MARKET")) story.append(sp(2)) story.append(body( "Thiopentone sodium is available as a dry powder for reconstitution (lyophilised powder) " "in sealed glass vials. Liquid pre-mixed solutions are not commercially available due to " "instability of the reconstituted solution over time." )) story.append(sp(2)) market_data = [ [ch("Brand Name"), ch("Manufacturer / Region"), ch("Pack Sizes"), ch("Concentration after Reconstitution")], [cp("Pentothal"), cp("Pfizer / Abbott (USA, Europe, India)"), cp("500 mg, 1 g, 5 g vials"), cp("2.5% standard; 5% for high-dose")], [cp("Intraval Sodium"), cp("Archimedes Pharma (UK)"), cp("500 mg vials"), cp("2.5%")], [cp("Thiopental Sodium"), cp("Various generic manufacturers (India, EU)"), cp("500 mg, 1 g vials"), cp("2.5%")], [cp("Tiopental"), cp("Laboratorio Almirall (Spain)"), cp("500 mg vials"), cp("2.5%")], [cp("Nesdonal"), cp("Sanofi-Aventis (France)"), cp("500 mg, 1 g vials"), cp("2.5%")], [cp("Ravonal"), cp("Hameln Pharma (Germany)"), cp("500 mg vials"), cp("2.5%")], ] story.append(make_table(market_data, [38*mm, 52*mm, 38*mm, 42*mm])) story.append(sp(2)) story.append(pearl_box( "Pentothal by Abbott was the original brand, used globally for decades. " "Abbott discontinued manufacture of Pentothal in the USA in 2011 due to concerns about its use " "in lethal injections. Many countries now rely on generic formulations." )) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 5 – ROUTES OF ADMINISTRATION # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("5. ROUTES OF ADMINISTRATION")) story.append(sp(2)) route_data = [ [ch("Route"), ch("Concentration"), ch("Clinical Use"), ch("Notes")], [cp("Intravenous (IV)"), cp("2.5% (25 mg/mL)"), cp("Induction of general anaesthesia; status epilepticus"), cp("PRIMARY route. Rapid onset 30-60 sec. Use slow injection rate.")], [cp("Rectal"), cp("5-10% suppository / solution"), cp("Premedication / sedation in children"), cp("Onset 10-15 min. Poorly titratable. Rarely used now.")], [cp("Intraosseous (IO)"), cp("2.5%"), cp("Emergency when IV unavailable"), cp("Can be used in emergencies; onset slightly slower")], [cp("Intramuscular (IM)"), cp("Not recommended"), cp("Not used clinically"), cp("Painful; causes tissue necrosis. CONTRAINDICATED")], [cp("Intraarterial"), cp("NOT PERMITTED"), cp("NEVER use"), cp("Causes intense arterial spasm, ischaemia, gangrene - CATASTROPHIC")], ] story.append(make_table(route_data, [32*mm, 32*mm, 52*mm, 54*mm])) story.append(sp(2)) story.append(caution_box( "Intraarterial injection is a serious EMERGENCY. Causes intense vasospasm, " "crystal precipitation in arterioles, ischaemia, and gangrene. " "Management: stop injection, leave needle in situ, inject heparin + papaverine intra-arterially, " "sympathetic block, urgent vascular surgery consult." )) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 6 – DOSAGE # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("6. DOSAGE")) story.append(sp(2)) story.append(H2("6.1 Induction of Anaesthesia")) story.append(sp(1)) dose_data = [ [ch("Patient Group"), ch("Dose (mg/kg IV)"), ch("Typical Adult Dose"), ch("Key Notes")], [cp("Healthy adult (unpremedicated)"), cp("3 - 5 mg/kg"), cp("250-350 mg (10-14 mL of 2.5%)"), cp("Titrate: give 100 mg over 10-15 sec, pause, then increments")], [cp("Premedicated adult"), cp("1.5 - 3 mg/kg"), cp("100-200 mg"), cp("Opioid or benzodiazepine premedication reduces requirement")], [cp("Elderly (>65 years)"), cp("1 - 2 mg/kg"), cp("50-150 mg"), cp("Use lowest dose; slower injection; increased sensitivity")], [cp("Obese patient"), cp("Dose on LBW"), cp("Based on lean body weight"), cp("Do NOT use total body weight - risk of overdose")], [cp("Children (2-12 years)"), cp("5 - 7 mg/kg"), cp("Per body weight"), cp("Higher dose per kg; faster redistribution in children")], [cp("Infants (3 months - 2 years)"), cp("7 - 8 mg/kg"), cp("Per body weight"), cp("Very careful titration required")], [cp("Neonates"), cp("3 - 4 mg/kg"), cp("Per body weight"), cp("Use with extreme caution; respiratory depression risk")], [cp("Debilitated / shocked patient"), cp("0.5 - 2 mg/kg"), cp("Minimal effective dose"), cp("Haemodynamic compromise markedly increases sensitivity")], ] story.append(make_table(dose_data, [44*mm, 30*mm, 40*mm, 56*mm])) story.append(sp(2)) story.append(H2("6.2 Other Clinical Uses")) story.append(sp(1)) otherdose_data = [ [ch("Indication"), ch("Dose"), ch("Notes")], [cp("Maintenance of anaesthesia"), cp("Intermittent 25-50 mg boluses"), cp("Not preferred; long context-sensitive half-time; accumulates")], [cp("Status epilepticus (refractory)"), cp("3-5 mg/kg bolus, then infusion 1-5 mg/kg/hr"), cp("ICU setting only; requires intubation and ventilation")], [cp("Raised ICP / cerebral protection"), cp("High-dose: 3-10 mg/kg bolus or 3-10 mg/kg/hr infusion"), cp("Burst suppression EEG endpoint; requires ICU monitoring")], [cp("Procedural sedation"), cp("50-75 mg increments IV"), cp("Rarely used now; propofol preferred")], [cp("Electroconvulsive therapy (ECT)"), cp("2-3 mg/kg IV"), cp("Standard induction agent for ECT; prevents tonic-clonic phase")], [cp("Rectal (children - premedication)"), cp("25-44 mg/kg rectally (5% solution)"), cp("Onset 10-15 min; max 1 g; rarely used currently")], ] story.append(make_table(otherdose_data, [50*mm, 60*mm, 60*mm])) story.append(sp(2)) story.append(dose_box( "Standard induction adult technique: Inject 100-150 mg over 10-15 seconds. " "Observe for loss of eyelash reflex and apnoea. Give additional 25-50 mg increments if needed. " "Total dose rarely exceeds 500 mg." )) story.append(sp(2)) story.append(caution_box( "Injection rate: Maximum 50 mg per 15 seconds for routine induction. " "Rapid injection (>50 mg/sec) markedly increases risk of apnoea, cardiovascular depression, " "and fall in blood pressure." )) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 7 – MECHANISM OF ACTION # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("7. MECHANISM OF ACTION")) story.append(sp(2)) story.append(H2("7.1 Primary Mechanism - GABA-A Receptor Potentiation")) story.append(sp(1)) story.append(body( "Thiopentone exerts its CNS depressant effects primarily through positive allosteric modulation " "of the GABA-A (gamma-aminobutyric acid type A) receptor-chloride ionophore complex. " "GABA-A receptors are ligand-gated chloride ion channels that mediate inhibitory " "neurotransmission throughout the CNS." )) story.append(sp(1)) story.append(bullet("At low/anaesthetic concentrations: Thiopentone binds to distinct sites on the " "GABA-A receptor (beta subunit) and prolongs the duration of chloride channel " "opening in response to GABA, enhancing inhibitory neurotransmission.")) story.append(bullet("At high concentrations: Thiopentone can directly activate the GABA-A receptor " "and open chloride channels even in the ABSENCE of GABA - this \"GABA-mimetic\" " "effect is responsible for full anaesthetic state.")) story.append(bullet("Result: Increased chloride ion influx -> hyperpolarisation of neuronal membrane " "-> reduced neuronal excitability -> CNS depression.")) story.append(sp(2)) story.append(H2("7.2 Secondary Mechanisms")) story.append(sp(1)) story.append(bullet("Inhibition of excitatory neurotransmitters: Blocks synaptic transmission via " "AMPA-type glutamate receptors and nicotinic acetylcholine receptors.")) story.append(bullet("Sodium channel blockade: At high concentrations, reduces neuronal sodium " "conductance (contributing to anticonvulsant properties).")) story.append(bullet("Potassium channel activation: Increases potassium conductance, contributing " "to membrane hyperpolarisation.")) story.append(bullet("Reduction in brain metabolic rate (CMRO2): Dose-dependent reduction in " "cerebral metabolic rate for oxygen, reducing cerebral blood flow and ICP.")) story.append(sp(2)) # Mechanism flowchart as table story.append(h3("Mechanism Flowchart")) story.append(sp(1)) fc_data = [ [ch("Step"), ch("Event")], [cp("1. Drug entry"), cp("IV injection -> rapid redistribution from blood to brain (highly lipophilic)")], [cp("2. Receptor binding"), cp("Binds GABA-A receptor beta-1 subunit (allosteric site)")], [cp("3. Channel modulation"), cp("Prolongs duration of Cl- channel opening per GABA activation")], [cp("4. Ion flux"), cp("Increased Cl- influx into neuron -> hyperpolarisation")], [cp("5. CNS effect"), cp("Suppressed neuronal firing -> unconsciousness (RAS depression)")], [cp("6. High dose effect"), cp("Direct GABA-mimetic activation -> burst suppression -> isoelectric EEG")], [cp("7. Redistribution"), cp("Drug moves from brain to muscle/fat -> consciousness returns (5-10 min)")], ] story.append(make_table(fc_data, [42*mm, 128*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 8 – PHARMACOKINETICS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("8. PHARMACOKINETICS")) story.append(sp(2)) story.append(H2("8.1 Compartmental Model")) story.append(sp(1)) story.append(body( "Thiopentone follows a three-compartment pharmacokinetic model after IV administration. " "The rapid initial distribution (brain uptake) is followed by redistribution to lean tissues " "(muscle) and ultimately to fat, explaining the short clinical duration despite a long " "elimination half-life." )) story.append(sp(1)) pk_data = [ [ch("Parameter"), ch("Value"), ch("Clinical Significance")], [cp("Onset of action (IV)"), cp("30 - 60 seconds"), cp("Due to high lipid solubility and brain blood flow")], [cp("Peak brain concentration"), cp("~1 minute"), cp("Rapid equilibration with effect site")], [cp("Duration of action (single dose)"), cp("5 - 10 minutes"), cp("Due to redistribution, NOT metabolism")], [cp("Bioavailability (IV)"), cp("100%"), cp("Complete by definition")], [cp("Volume of distribution (Vd)"), cp("2.5 L/kg"), cp("Highly lipophilic; distributes to fat extensively")], [cp("Protein binding"), cp("80 - 86%"), cp("Mainly albumin; reduced in hypoalbuminaemia")], [cp("Ionisation at pH 7.4"), cp("~60% ionised"), cp("Non-ionised form penetrates CNS; pKa 7.45")], [cp("Distribution half-life (t1/2 alpha)"), cp("2 - 4 minutes"), cp("Accounts for rapid awakening after single dose")], [cp("Elimination half-life (t1/2 beta)"), cp("10 - 12 hours"), cp("Long! Explains hangover and accumulation with repeat doses")], [cp("Context-sensitive half-time"), cp("Very long (hours with infusion)"), cp("NOT suitable for infusion maintenance in short cases")], [cp("Hepatic clearance"), cp("3.4 mL/kg/min"), cp("Mainly hepatic; low extraction ratio")], [cp("Metabolism"), cp("Hepatic (CYP2C19, CYP3A4)"), cp("Oxidation at C-5 position; ring desulfuration to pentobarbital")], [cp("Metabolites"), cp("Inactive hydroxylated metabolites + pentobarbitone (minor active metabolite)"), cp("Pentobarbitone has longer t1/2")], [cp("Excretion"), cp("Renal (metabolites); <1% unchanged"), cp("No significant renal adjustment needed")], ] story.append(make_table(pk_data, [58*mm, 44*mm, 68*mm])) story.append(sp(2)) story.append(H2("8.2 Distribution Phases")) story.append(sp(1)) dist_data = [ [ch("Phase"), ch("Compartment"), ch("Time"), ch("Effect")], [cp("Alpha - Rapid distribution"), cp("Blood -> Brain, Heart, Kidneys (VRG)"), cp("Minutes 1-5"), cp("Peak CNS effect, unconsciousness")], [cp("Beta - Redistribution"), cp("Brain -> Muscle (lean tissue)"), cp("Minutes 5-30"), cp("Awakening - plasma/brain levels fall rapidly")], [cp("Gamma - Elimination"), cp("Fat / slow tissues -> Liver"), cp("Hours"), cp("Slow release from fat; hangover effect")], ] story.append(make_table(dist_data, [46*mm, 50*mm, 28*mm, 46*mm])) story.append(sp(2)) story.append(pearl_box( "The brief clinical effect of a single induction dose is due to REDISTRIBUTION from the " "brain to muscle and fat - NOT to metabolism. This is why repeated doses or infusions lead " "to prolonged sedation as fat stores become saturated and cannot absorb more drug." )) story.append(sp(2)) story.append(H2("8.3 Factors Altering Pharmacokinetics")) story.append(sp(1)) factors_data = [ [ch("Factor"), ch("Effect on Thiopentone")], [cp("Elderly patients"), cp("Reduced Vd, reduced plasma protein binding, reduced clearance -> greater effect; use lower doses")], [cp("Obesity"), cp("Increased Vd (distributes to fat); prolonged t1/2; dose on lean body weight")], [cp("Hypoalbuminaemia"), cp("Increased free drug fraction -> greater/longer CNS effect at same dose")], [cp("Liver disease"), cp("Reduced protein binding and reduced metabolism -> prolonged action")], [cp("Renal disease"), cp("Minimal direct effect; hypoalbuminaemia increases free fraction")], [cp("Pregnancy"), cp("Reduced protein binding; crosses placenta easily; neonatal depression")], [cp("Cardiac failure / shock"), cp("Reduced Vd and cardiac output -> higher brain concentration per dose")], [cp("Hypothermia"), cp("Reduced metabolism; prolonged action")], [cp("Acidosis"), cp("Increased non-ionised fraction (pKa 7.45) -> enhanced CNS penetration")], [cp("Children"), cp("Higher Vd/kg and faster metabolism; require higher mg/kg doses")], ] story.append(make_table(factors_data, [60*mm, 110*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 9 – PHARMACODYNAMICS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("9. PHARMACODYNAMICS")) story.append(sp(2)) story.append(H2("9.1 CNS Effects")) story.append(sp(1)) cns_data = [ [ch("Parameter"), ch("Effect"), ch("Clinical Notes")], [cp("Consciousness"), cp("Loss in 30-60 sec"), cp("Smooth rapid onset without excitement phase")], [cp("Analgesia"), cp("NONE"), cp("Thiopentone is NOT analgesic - anti-analgesic at sub-anaesthetic doses")], [cp("Cerebral blood flow (CBF)"), cp("Decreased 25-40%"), cp("Due to reduced CMRO2; used in raised ICP management")], [cp("CMRO2"), cp("Reduced up to 55%"), cp("Protective in cerebral ischaemia")], [cp("ICP"), cp("Reduced"), cp("Reduction in CBF and CMRO2 reduces ICP")], [cp("EEG"), cp("Burst suppression at high doses; isoelectric at maximum"), cp("Useful endpoint in neuroprotection")], [cp("Anticonvulsant"), cp("Yes - potent"), cp("Increases seizure threshold; used in status epilepticus")], [cp("Muscle relaxation"), cp("Minimal central"), cp("Does not relax skeletal muscle - NMBAs still needed")], [cp("Amnesia"), cp("Yes - anterograde"), cp("Impairs memory formation during anaesthesia")], ] story.append(make_table(cns_data, [46*mm, 38*mm, 86*mm])) story.append(sp(2)) story.append(H2("9.2 Cardiovascular Effects")) story.append(sp(1)) cvs_data = [ [ch("Parameter"), ch("Effect")], [cp("Arterial blood pressure"), cp("Decreased 10-25% (dose-dependent; reduced vasomotor tone + myocardial depression)")], [cp("Heart rate"), cp("Reflex tachycardia (baroreceptor compensation for fall in BP)")], [cp("Cardiac output"), cp("Reduced (decreased stroke volume and myocardial contractility)")], [cp("SVR"), cp("Reduced (venodilation, reduced central sympathetic tone)")], [cp("Coronary blood flow"), cp("Reduced but proportional to CMRO2 reduction")], [cp("Myocardial depression"), cp("Direct depression of myocardial contractility at higher doses")], [cp("Pre-existing CVS disease"), cp("Marked hypotension risk; use with extreme caution")], ] story.append(make_table(cvs_data, [60*mm, 110*mm])) story.append(sp(2)) story.append(H2("9.3 Respiratory Effects")) story.append(sp(1)) resp_data = [ [ch("Parameter"), ch("Effect")], [cp("Respiratory rate"), cp("Decreased / apnoea (dose-dependent central respiratory depression)")], [cp("Tidal volume"), cp("Decreased")], [cp("Ventilatory response to CO2"), cp("Severely blunted - hypercapnia and hypoxia do not stimulate breathing")], [cp("Apnoea"), cp("Common after induction dose - brief (30-90 sec); have airway equipment ready")], [cp("Bronchospasm"), cp("May occur - thiopentone is a HISTAMINE RELEASER; avoid in severe asthma")], [cp("Laryngospasm"), cp("Risk if airway stimulation at light plane of anaesthesia")], ] story.append(make_table(resp_data, [60*mm, 110*mm])) story.append(sp(2)) story.append(H2("9.4 Other System Effects")) story.append(sp(1)) other_data = [ [ch("System"), ch("Effect")], [cp("Renal"), cp("Reduced renal blood flow and GFR (secondary to reduced CO and BP)")], [cp("Hepatic"), cp("Reduced hepatic blood flow; induces hepatic microsomal enzymes (CYP450) with repeat doses")], [cp("Uterine"), cp("Crosses placenta rapidly - causes neonatal CNS depression; use minimised in obstetrics")], [cp("Intraocular P"), cp("Reduces IOP - useful in open eye injuries")], [cp("Antiemetic"), cp("Mild antiemetic property (less PONV than volatile agents)")], [cp("Pain on injection"), cp("LOW (unlike propofol) - thiopentone is not painful IV")], [cp("Shivering"), cp("May occur on emergence")], ] story.append(make_table(other_data, [40*mm, 130*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 10 – INDICATIONS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("10. INDICATIONS")) story.append(sp(2)) ind_data = [ [ch("Indication"), ch("Details")], [cp("Induction of general anaesthesia"), cp("Primary historical use; smooth, rapid induction in 30-60 seconds; single bolus technique")], [cp("Rapid Sequence Induction (RSI)"), cp("Used with succinylcholine in full-stomach/aspiration risk patients; though now often replaced by propofol")], [cp("Status epilepticus - refractory"), cp("When benzodiazepines and phenytoin fail; thiopentone infusion achieves burst suppression")], [cp("Raised intracranial pressure (ICP)"), cp("Reduces ICP by lowering CMRO2 and CBF; thiopentone coma in severe TBI with refractory ICP")], [cp("Electroconvulsive therapy (ECT)"), cp("Standard induction agent for ECT procedures; prevents somatic seizure manifestation")], [cp("Neuroprotection (perioperative)"), cp("During neurosurgery - burst suppression to protect brain during expected ischaemia")], [cp("Premedication in children (rectal)"), cp("Rarely used currently; rectal administration for pre-op sedation in uncooperative children")], [cp("Anaesthesia for electroencephalography"), cp("Thiopentone-induced changes are well characterised for EEG interpretation")], [cp("Procedure sedation (historical)"), cp("Short procedures; now largely replaced by propofol and midazolam")], ] story.append(make_table(ind_data, [65*mm, 105*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 11 – CONTRAINDICATIONS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("11. CONTRAINDICATIONS")) story.append(sp(2)) story.append(H2("11.1 Absolute Contraindications")) story.append(sp(1)) abs_data = [ [ch("Contraindication"), ch("Reason")], [cp("Hypersensitivity to barbiturates"), cp("Risk of severe anaphylaxis / anaphylactoid reaction; skin testing may identify risk")], [cp("Acute porphyria (all types)"), cp("MOST IMPORTANT ABSOLUTE CI. Barbiturates induce delta-aminolaevulinic acid (ALA) synthetase, precipitating a life-threatening porphyric crisis with severe abdominal pain, neuropathy, and autonomic instability")], [cp("Absence of suitable vein / IV access"), cp("Cannot give intramuscularly - tissue necrosis; cannot give IA - catastrophic")], [cp("Complete airway obstruction"), cp("Respiratory depression will worsen airway obstruction fatally")], [cp("Status asthmaticus"), cp("Risk of histamine release causing fatal bronchospasm")], ] story.append(make_table(abs_data, [58*mm, 112*mm])) story.append(sp(2)) story.append(caution_box( "PORPHYRIA - The single most important absolute contraindication. " "NEVER give thiopentone to a patient with known or suspected acute porphyria. " "All barbiturates are porphyrinogenic. Even small amounts can precipitate a potentially " "fatal porphyric crisis. Safe alternatives: propofol, ketamine, etomidate, regional anaesthesia." )) story.append(sp(2)) story.append(H2("11.2 Relative Contraindications")) story.append(sp(1)) rel_data = [ [ch("Condition"), ch("Reason / Action")], [cp("Severe cardiovascular disease / shock"), cp("Marked hypotension and cardiac depression; use reduced dose or alternative agent")], [cp("Severe liver disease"), cp("Impaired metabolism; prolonged effect; use reduced dose with monitoring")], [cp("Severe renal impairment"), cp("Hypoalbuminaemia increases free drug fraction; use reduced dose")], [cp("Myasthenia gravis"), cp("Increased sensitivity to CNS depressants")], [cp("Addison disease / adrenal insufficiency"), cp("Haemodynamic instability risk; consider etomidate")], [cp("Asthma (mild to moderate)"), cp("Histamine release risk; propofol or ketamine preferred but thiopentone can be used cautiously")], [cp("Raised ICP with poor compliance"), cp("Brief hypotension after induction can reduce CPP; careful titration required")], [cp("Pregnancy (term)"), cp("Crosses placenta; neonatal depression risk; minimise dose; have resuscitation ready")], [cp("Elderly and debilitated patients"), cp("Increased sensitivity; markedly reduced dose; slower injection rate")], [cp("Obstructive sleep apnoea (OSA)"), cp("Exaggerated respiratory depression; have airway management ready")], ] story.append(make_table(rel_data, [62*mm, 108*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 12 – ADVERSE EFFECTS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("12. ADVERSE EFFECTS")) story.append(sp(2)) ae_data = [ [ch("System"), ch("Adverse Effect"), ch("Frequency"), ch("Management")], [cp("CVS"), cp("Hypotension"), cp("Common (>10%)"), cp("Fluid preload; reduce dose; pressors if needed")], [cp("CVS"), cp("Reflex tachycardia"), cp("Common"), cp("Usually transient; treat underlying hypotension")], [cp("CVS"), cp("Myocardial depression"), cp("Dose-dependent"), cp("Avoid in poor LV function")], [cp("Respiratory"), cp("Apnoea (transient 30-90 sec)"), cp("Common after induction dose"), cp("Have airway adjuncts; mask ventilate")], [cp("Respiratory"), cp("Bronchospasm"), cp("Uncommon; risk in asthma"), cp("Histamine release; avoid in asthma")], [cp("Respiratory"), cp("Laryngospasm"), cp("Risk if stimulated at light plane"), cp("Jaw thrust; succinylcholine if needed")], [cp("Neuro"), cp("Hangover / sedation"), cp("Common after large doses"), cp("Due to slow release from fat")], [cp("Neuro"), cp("Excitatory phenomena"), cp("Rare: tremor, hiccough, cough"), cp("Antianalgesic effect at sub-anaesthetic doses")], [cp("Neuro"), cp("Hyperalgesia"), cp("At sub-anaesthetic doses"), cp("Thiopentone is anti-analgesic")], [cp("Local"), cp("Venous thrombophlebitis"), cp("Uncommon with 2.5% solution"), cp("5% solution causes phlebitis; use 2.5% only")], [cp("Local"), cp("Tissue necrosis"), cp("With extravasation"), cp("Highly alkaline (pH 11); treat with hyaluronidase + saline")], [cp("Local"), cp("Arterial spasm / gangrene"), cp("With intra-arterial injection"), cp("EMERGENCY - see Section 5")], [cp("Allergic"), cp("Anaphylaxis / anaphylactoid reaction"), cp("Rare ~1:30,000"), cp("Adrenaline (epinephrine), fluids, steroids, antihistamines")], [cp("Haematologic"), cp("Porphyria crisis"), cp("Rare but fatal if susceptible"), cp("Absolute CI - never use in porphyria")], [cp("Metabolic"), cp("Hypothermia"), cp("With prolonged use / infusion"), cp("Active warming")], [cp("GI"), cp("Nausea / vomiting (PONV)"), cp("Less than volatile agents"), cp("Usually mild; antiemetics prophylactically")], [cp("Hepatic"), cp("Enzyme induction (CYP450)"), cp("With repeated dosing"), cp("Drug interactions (warfarin, anticonvulsants)")], ] story.append(make_table(ae_data, [24*mm, 46*mm, 34*mm, 66*mm])) story.append(sp(3)) # ═══════════════════════════════════════════════════════════════════════════════ # SECTION 13 – SPECIAL POINTS AND PEARLS # ═══════════════════════════════════════════════════════════════════════════════ story.append(H1("13. SPECIAL POINTS AND CLINICAL PEARLS")) story.append(sp(2)) story.append(H2("13.1 The 5-Year PEARL Rule for Duration")) story.append(sp(1)) story.append(pearl_box( "The brief clinical duration (5-10 min) is due to REDISTRIBUTION from brain to muscle/fat, " "NOT metabolism. With repeated doses or infusions, fat becomes saturated and duration " "progressively lengthens - this is the context-sensitive half-time problem. " "Thiopentone is unsuitable for TIVA." )) story.append(sp(2)) story.append(H2("13.2 Incompatibilities - Quick Reference")) story.append(sp(1)) incompat_data = [ [ch("Drug Class"), ch("Specific Agents"), ch("Consequence")], [cp("Neuromuscular blockers"), cp("Vecuronium, pancuronium, rocuronium, atracurium, succinylcholine"), cp("Precipitate forms; may occlude IV line during RSI")], [cp("Opioids"), cp("Alfentanil, sufentanil, morphine, fentanyl (in solution)"), cp("Precipitation in solution; give separately")], [cp("Antibiotics"), cp("Penicillins, cephalosporins (acidic solutions)"), cp("pH-mediated precipitation")], [cp("Acidic solutions"), cp("5% glucose (borderline), Ringer lactate"), cp("Precipitation; use only NS or Water for injection")], [cp("Vasopressors"), cp("Dopamine, dobutamine"), cp("Incompatible; give via separate IV")], [cp("Other anaesthetics"), cp("Midazolam, esketamine in same syringe"), cp("Incompatible; give sequentially")], ] story.append(make_table(incompat_data, [44*mm, 64*mm, 62*mm])) story.append(sp(2)) story.append(H2("13.3 Comparison with Propofol (Key Differences)")) story.append(sp(1)) comp_data = [ [ch("Feature"), ch("Thiopentone"), ch("Propofol")], [cp("Analgesic"), cp("NO (anti-analgesic)"), cp("NO")], [cp("Anticonvulsant"), cp("YES - potent"), cp("YES - but weaker")], [cp("Pain on injection"), cp("Minimal"), cp("Common (30-40% patients)")], [cp("PONV"), cp("Low"), cp("Very low (antiemetic)")], [cp("Cardiovascular"), cp("Moderate depression"), cp("Greater depression")], [cp("Suitable for infusion"), cp("NO (accumulates)"), cp("YES (TIVA)")], [cp("Porphyria safe"), cp("NO - CONTRAINDICATED"), cp("YES (safe)") ], [cp("Cerebral protection"), cp("Superior (burst suppression)"), cp("Moderate")], [cp("Cost"), cp("Cheaper"), cp("More expensive")], [cp("Current use"), cp("Declining / limited"), cp("First-line IV induction agent")], ] story.append(make_table(comp_data, [50*mm, 65*mm, 55*mm])) story.append(sp(2)) story.append(H2("13.4 Special Clinical Situations")) story.append(sp(1)) spec_data = [ [ch("Situation"), ch("Recommendation")], [cp("Head injury / raised ICP"), cp("PREFERRED agent - reduces ICP, CMRO2, CBF. Titrate carefully to avoid hypotension (reduces CPP). Target burst suppression on EEG for refractory ICP.")], [cp("Status epilepticus"), cp("Third-line agent after benzodiazepines and phenytoin. IV infusion at 1-5 mg/kg/hr with EEG monitoring in ICU. Intubation mandatory.")], [cp("Obstetrics"), cp("Historically used for CS induction (4-5 mg/kg). Crosses placenta rapidly. Neonatal depression possible. Propofol and ketamine now more common.")], [cp("Paediatric anaesthesia"), cp("Children require higher mg/kg doses due to larger Vd and faster metabolism. Rectal administration for premedication is an option.")], [cp("RSI - full stomach"), cp("Thiopentone 3-5 mg/kg + succinylcholine 1.5 mg/kg is the classic RSI regimen. Do NOT mix in same syringe.")], [cp("Cardiac disease"), cp("Use with caution or avoid. Reduce dose to 0.5-2 mg/kg. Etomidate is preferred for its cardiovascular stability.")], [cp("Porphyria screening"), cp("Always ask about family history of porphyria and dark urine after anaesthesia. If positive: use propofol + regional or ketamine.")], [cp("ECT"), cp("2-3 mg/kg IV. Produces smooth induction. Motor seizure prevented but EEG seizure proceeds normally. May shorten seizure duration vs. methohexital.")], ] story.append(make_table(spec_data, [50*mm, 120*mm])) story.append(sp(2)) story.append(H2("13.5 Storage and Handling")) story.append(sp(1)) store_data = [ [ch("Aspect"), ch("Details")], [cp("Storage (powder)"), cp("Controlled room temperature 15-30 degrees C. Protect from light. Keep sealed.")], [cp("Storage (reconstituted)"), cp("Refrigerate 2-8 degrees C if not used immediately. Stable 7 days refrigerated.")], [cp("pH of solution"), cp("10.5-11.0. Highly alkaline. Extravasation causes tissue necrosis.")], [cp("Colour"), cp("Clear pale yellow solution. Discard if cloudy, precipitate, or colour change.")], [cp("Compatibility check"), cp("Always inspect visually before use. Do NOT mix with other drugs in same syringe.")], [cp("Disposal"), cp("Controlled substance - follow institutional protocol for disposal of unused drug.")], ] story.append(make_table(store_data, [50*mm, 120*mm])) story.append(sp(2)) story.append(H2("13.6 Key Clinical Pearls Summary")) story.append(sp(1)) story.append(pearl_box( "PEARL 1: Thiopentone is anti-analgesic at sub-anaesthetic doses - it can increase pain perception. " "Always ensure adequate analgesia." )) story.append(sp(1)) story.append(pearl_box( "PEARL 2: The pKa of 7.45 means acidosis (e.g. shock) significantly increases the non-ionised " "(active) fraction - patients in acidosis are MUCH more sensitive to thiopentone." )) story.append(sp(1)) story.append(pearl_box( "PEARL 3: Intra-arterial injection is catastrophic. Crystals of free acid precipitate in " "arterioles causing spasm and gangrene. Always confirm venous placement. Light-brown crystals " "are visible in a syringe held to light if intra-arterial blood is aspirated." )) story.append(sp(1)) story.append(pearl_box( "PEARL 4: Na2CO3 (sodium carbonate) is added to thiopentone vials to maintain alkalinity " "and solubility. This also means thiopentone is chemically incompatible with acidic drugs." )) story.append(sp(1)) story.append(pearl_box( "PEARL 5: Thiopentone was abandoned in the USA as a lethal injection agent in 2011 when " "manufacturer Hospira (Abbott) discontinued supply. This triggered its global shortage and " "accelerated the shift to propofol as the primary induction agent." )) story.append(sp(1)) story.append(caution_box( "NEVER use thiopentone as the sole agent for intubation without checking for: (1) porphyria, " "(2) haemodynamic status, (3) airway equipment readiness, (4) IV line patency and site " "(avoid hand/wrist veins where IA injection risk is higher)." )) # ── FOOTER ────────────────────────────────────────────────────────────────────── story.append(sp(4)) story.append(HRFlowable(width="100%", thickness=1, color=C_RULE)) story.append(Paragraph( "References: Miller's Anesthesia 10th Ed.; Morgan and Mikhail's Clinical Anesthesiology 7th Ed.; " "Barash Clinical Anesthesia 9th Ed.; British National Formulary; Goodman and Gilman Pharmacology 14th Ed.", ParagraphStyle("ref", fontName=FONT_ITAL, fontSize=9, leading=12, textColor=colors.HexColor("#555555"), alignment=TA_CENTER))) # ═══════════════════════════════════════════════════════════════════════════════ # BUILD PDF # ═══════════════════════════════════════════════════════════════════════════════ outpath = "/home/daytona/workspace/thiopentone-pdf/Thiopentone_Sodium_Reference.pdf" doc = SimpleDocTemplate( outpath, pagesize=A4, leftMargin=ML, rightMargin=MR, topMargin=MT, bottomMargin=MB, title="Thiopentone Sodium - Comprehensive Pharmacological Reference", author="Orris Medical Reference", ) def add_page_number(canvas, doc): canvas.saveState() canvas.setFont(FONT if reg else "Helvetica", 8) canvas.setFillColor(colors.HexColor("#888888")) canvas.drawCentredString(PW/2, 12*mm, f"Thiopentone Sodium - Page {doc.page}") canvas.restoreState() doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number) print(f"PDF saved to: {outpath}") PYEOF echo "Script written OK"
cd /home/daytona/workspace/thiopentone-pdf && python build.py 2>&1
ls -lh /home/daytona/workspace/thiopentone-pdf/Thiopentone_Sodium_Reference.pdf
Thiopentone Sodium Reference
PDF Document · PDF
| # | Section | Key Highlights |
|---|---|---|
| 1 | Drug Group & Classification | Thiobarbiturate; Schedule III controlled substance; ultra-short acting |
| 2 | Chemical Structure | IUPAC name, molecular formula C11H17N2NaO2S, pKa 7.45, pH 10.5-11, protein binding 80-86% |
| 3 | Formulation & Dilution | Na2CO3 6% w/w addition; standard 2.5% solution; incompatible diluents listed; stability data |
| 4 | Market Forms | Pentothal, Intraval Sodium, Nesdonal, Ravonal, Tiopental with regions and vial sizes |
| 5 | Routes of Administration | IV primary; rectal in children; intraarterial injection emergency management table |
| 6 | Dosage | Complete table by patient group (adult, elderly, obese, paediatric, neonate, shocked); ECT, status epilepticus, ICP doses |
| 7 | Mechanism of Action | GABA-A allosteric modulation, chloride channel prolongation, direct GABA-mimetic at high dose; step-by-step flowchart |
| 8 | Pharmacokinetics | 3-compartment model; full PK table; redistribution phases alpha/beta/gamma; factors altering PK |
| 9 | Pharmacodynamics | CNS, CVS, Respiratory, and other system effects - separate tables for each |
| 10 | Indications | 9 indications with details |
| 11 | Contraindications | Absolute (porphyria highlighted in red) and relative CIs |
| 12 | Adverse Effects | 17-row comprehensive adverse effects table |
| 13 | Special Points | Incompatibility quick-reference table; thiopentone vs. propofol comparison; 8 clinical situations; 5 clinical pearls; storage table |