Give a guide pdf of topic of respiratory system in pharmacology for 2 prof examination
mkdir -p /home/daytona/workspace/respiratory-pharma && ls /home/daytona/workspac…
~/respiratory-pharma/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT_PATH = "/home/daytona/workspace/respiratory-pharma/Respiratory_Pharmacology_2Prof.pdf"
doc = SimpleDocTemplate(
OUTPUT_PATH,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Respiratory System Pharmacology - 2nd Prof Guide",
author="Orris Medical Library"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'CustomTitle', parent=styles['Title'],
fontSize=22, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=6, spaceBefore=0, alignment=TA_CENTER,
fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'Subtitle', parent=styles['Normal'],
fontSize=12, textColor=colors.HexColor('#2c5f8a'),
spaceAfter=4, alignment=TA_CENTER, fontName='Helvetica'
)
h1_style = ParagraphStyle(
'H1', parent=styles['Heading1'],
fontSize=16, textColor=colors.white,
spaceAfter=6, spaceBefore=12,
fontName='Helvetica-Bold',
backColor=colors.HexColor('#1a3a5c'),
borderPad=6, leftIndent=-10, rightIndent=-10
)
h2_style = ParagraphStyle(
'H2', parent=styles['Heading2'],
fontSize=13, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=4, spaceBefore=10,
fontName='Helvetica-Bold',
borderPad=3,
borderColor=colors.HexColor('#2c5f8a'),
)
h3_style = ParagraphStyle(
'H3', parent=styles['Heading3'],
fontSize=11, textColor=colors.HexColor('#2c5f8a'),
spaceAfter=3, spaceBefore=7,
fontName='Helvetica-Bold'
)
body_style = ParagraphStyle(
'Body', parent=styles['Normal'],
fontSize=9.5, leading=14,
spaceAfter=4, spaceBefore=2,
alignment=TA_JUSTIFY,
fontName='Helvetica'
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=9.5, leading=13,
spaceAfter=2, spaceBefore=1,
leftIndent=14, firstLineIndent=-10,
bulletIndent=4,
fontName='Helvetica'
)
important_style = ParagraphStyle(
'Important', parent=styles['Normal'],
fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3,
backColor=colors.HexColor('#fff3cd'),
borderColor=colors.HexColor('#ffc107'),
borderWidth=1, borderPad=5,
fontName='Helvetica'
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=9, leading=12,
spaceAfter=3, spaceBefore=3,
backColor=colors.HexColor('#d1ecf1'),
borderColor=colors.HexColor('#17a2b8'),
borderWidth=1, borderPad=5,
fontName='Helvetica-Oblique'
)
exam_style = ParagraphStyle(
'Exam', parent=styles['Normal'],
fontSize=9.5, leading=13,
spaceAfter=2, spaceBefore=2,
backColor=colors.HexColor('#f8d7da'),
borderColor=colors.HexColor('#dc3545'),
borderWidth=1, borderPad=5,
fontName='Helvetica-Bold'
)
def H1(text):
return Paragraph(f"<font color='white'>{text}</font>", h1_style)
def H2(text):
return Paragraph(text, h2_style)
def H3(text):
return Paragraph(text, h3_style)
def P(text):
return Paragraph(text, body_style)
def B(text):
return Paragraph(f"• {text}", bullet_style)
def Important(text):
return Paragraph(f"<b>KEY POINT:</b> {text}", important_style)
def Note(text):
return Paragraph(f"<i>Note: {text}</i>", note_style)
def ExamTip(text):
return Paragraph(f"★ EXAM TIP: {text}", exam_style)
def HR():
return HRFlowable(width="100%", thickness=1, color=colors.HexColor('#2c5f8a'), spaceAfter=4, spaceBefore=4)
def make_table(headers, rows, col_widths=None):
data = [headers] + rows
if col_widths is None:
col_widths = [doc.width / len(headers)] * len(headers)
t = Table(data, colWidths=col_widths, repeatRows=1)
style = TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('ALIGN', (0,0), (-1,0), 'CENTER'),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f0f4f8'), colors.white]),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 8.5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('GRID', (0,0), (-1,-1), 0.3, colors.HexColor('#aaaaaa')),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
])
t.setStyle(style)
return t
# ============================================================
# BUILD THE DOCUMENT
# ============================================================
story = []
# COVER
story.append(Spacer(1, 1.5*cm))
story.append(Paragraph("RESPIRATORY SYSTEM PHARMACOLOGY", title_style))
story.append(Paragraph("Comprehensive Study Guide for 2nd Professional MBBS Examination", subtitle_style))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="70%", thickness=3, color=colors.HexColor('#1a3a5c'), hAlign='CENTER'))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Based on Katzung's Basic & Clinical Pharmacology | Goodman & Gilman's | Lippincott Illustrated Reviews", subtitle_style))
story.append(Spacer(1, 0.5*cm))
# Quick reference box
cover_data = [
["Topics Covered"],
["1. Overview & Classification of Drugs"],
["2. Bronchial Asthma: Pathogenesis & Management"],
["3. Beta-2 Agonists (SABAs & LABAs)"],
["4. Methylxanthines (Theophylline)"],
["5. Anticholinergics / Antimuscarinics"],
["6. Inhaled Corticosteroids (ICS)"],
["7. Leukotriene Modifiers"],
["8. Mast Cell Stabilizers (Cromones)"],
["9. Biologics / Monoclonal Antibodies"],
["10. COPD: Pharmacological Management"],
["11. Antitussives, Expectorants & Mucolytics"],
["12. Step-up Therapy & Exam Tables"],
]
ct = Table(cover_data, colWidths=[doc.width*0.6], hAlign='CENTER')
ct.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (0,0), colors.white),
('FONTNAME', (0,0), (0,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (0,0), 11),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('ROWBACKGROUNDS', (0,1), (0,-1), [colors.HexColor('#e8f0f7'), colors.white]),
('FONTNAME', (0,1), (0,-1), 'Helvetica'),
('FONTSIZE', (0,1), (0,-1), 9.5),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aaaaaa')),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
story.append(ct)
story.append(PageBreak())
# ============================================================
# SECTION 1: OVERVIEW
# ============================================================
story.append(H1("1. OVERVIEW & CLASSIFICATION OF RESPIRATORY DRUGS"))
story.append(Spacer(1, 0.2*cm))
story.append(P("Respiratory pharmacology deals with drugs used to treat diseases of the airways and lungs. The major conditions are <b>bronchial asthma</b>, <b>COPD</b>, <b>cough</b>, and <b>pulmonary hypertension</b>. Understanding the pathophysiology of each condition guides rational drug choice."))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Classification of Drugs Used in Respiratory Disorders"))
headers = ["Category", "Drug Classes", "Examples"]
rows = [
["Bronchodilators", "Beta-2 agonists (SABA/LABA)\nMethylxanthines\nAnticholinergics (SAMA/LAMA)", "Salbutamol, Salmeterol\nTheophylline\nIpratropium, Tiotropium"],
["Anti-inflammatory", "Inhaled Corticosteroids\nSystemic Corticosteroids\nLeukotriene modifiers\nMast cell stabilizers", "Budesonide, Fluticasone\nPrednisolone\nMontelukast, Zafirlukast\nSodium cromoglycate"],
["Biologics", "Anti-IgE\nAnti-IL-5\nAnti-IL-4Ra", "Omalizumab\nMepolizumab\nDupilumab"],
["Antitussives", "Opioid\nNon-opioid", "Codeine\nDextromethorphan, Noscapine"],
["Expectorants\n& Mucolytics", "Expectorants\nMucolytics", "Guaifenesin, Ammonium chloride\nN-Acetylcysteine, Bromhexine"],
["Pulmonary HTN", "PDE-5 inhibitors\nEndothelin antagonists\nProstacyclins", "Sildenafil, Tadalafil\nBosentan\nEpoprostenol"],
]
story.append(make_table(headers, rows, [4*cm, 5*cm, 7.5*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(ExamTip("Classification of antiasthmatic drugs is a common short-answer question. Know the three main bronchodilator classes."))
story.append(PageBreak())
# ============================================================
# SECTION 2: PATHOGENESIS OF ASTHMA
# ============================================================
story.append(H1("2. BRONCHIAL ASTHMA: PATHOGENESIS & MEDIATORS"))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Definition"))
story.append(P("Bronchial asthma is a chronic inflammatory disorder of the airways characterized by <b>reversible airflow obstruction</b>, <b>bronchial hyperreactivity</b>, and <b>airway inflammation</b>."))
story.append(H2("Immunopathogenesis (IgE-Mediated / Allergic Asthma)"))
steps = [
"Allergen exposure (house dust mite, pollen, mold) triggers IgE production by B-lymphocytes.",
"IgE binds to high-affinity FcεRI receptors on mast cells in the airway mucosa.",
"Re-exposure to allergen causes antigen cross-linking of IgE on mast cells.",
"Mast cell degranulation releases preformed mediators: <b>histamine, tryptase, LTC4, PGD2, PAF</b>.",
"These cause smooth muscle contraction → <b>Early Asthmatic Response (EAR)</b>: immediate fall in FEV1 within minutes.",
"3–6 hours later, the <b>Late Asthmatic Response (LAR)</b> occurs, driven by T2 (Th2) lymphocyte cytokines (IL-4, IL-5, IL-13) attracting eosinophils and neutrophils.",
"Chronic inflammation leads to <b>airway remodeling</b>: subepithelial fibrosis, smooth muscle hypertrophy, goblet cell metaplasia.",
]
for s in steps:
story.append(B(s))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Key Chemical Mediators in Asthma"))
headers2 = ["Mediator", "Source", "Effect on Airways"]
rows2 = [
["Histamine", "Mast cells", "Bronchoconstriction, vascular leakage (EAR)"],
["LTC4, LTD4, LTE4\n(Cysteinyl leukotrienes)", "Mast cells, eosinophils", "Potent, prolonged bronchoconstriction; mucus secretion"],
["LTB4", "Neutrophils, macrophages", "Neutrophil chemotaxis"],
["PGD2", "Mast cells", "Bronchoconstriction"],
["PGF2α, TXA2", "Platelets, macrophages", "Bronchoconstriction"],
["PAF", "Mast cells, macrophages", "Bronchoconstriction, eosinophil recruitment"],
["IL-5", "Th2 cells", "Eosinophil activation and survival"],
["IL-4, IL-13", "Th2 cells", "IgE synthesis, mucus hypersecretion, goblet cell metaplasia"],
["Tryptase", "Mast cells", "Fibrosis, smooth muscle hypertrophy"],
]
story.append(make_table(headers2, rows2, [4*cm, 4.5*cm, 8*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Important("Cysteinyl leukotrienes (LTC4, LTD4, LTE4) are the dominant mediators of sustained bronchoconstriction. They are ~1000x more potent than histamine."))
story.append(ExamTip("Early vs Late asthmatic response is a classic long-question topic. Draw a FEV1 vs time curve with two dips."))
story.append(PageBreak())
# ============================================================
# SECTION 3: BETA-2 AGONISTS
# ============================================================
story.append(H1("3. BETA-2 ADRENERGIC AGONISTS"))
story.append(H2("Mechanism of Action"))
story.append(P("Beta-2 agonists activate Gs protein-coupled beta-2 adrenoceptors on bronchial smooth muscle → stimulate adenylyl cyclase → ↑ intracellular cAMP → activate protein kinase A (PKA) → phosphorylation of myosin light-chain kinase (MLCK) → <b>smooth muscle relaxation and bronchodilation</b>."))
story.append(P("Additional effects: ↓ mast cell mediator release, ↑ mucociliary clearance, inhibit cholinergic neurotransmission."))
story.append(H2("Classification"))
headers3 = ["Type", "Duration", "Drugs", "Route", "Primary Use"]
rows3 = [
["SABA\n(Short-Acting)", "4–6 hours", "Salbutamol (Albuterol)\nTerbutaline\nFenoterol", "Inhaled, Oral, IV/SC", "Acute bronchospasm\nRelief medication in asthma"],
["LABA\n(Long-Acting)", "12+ hours", "Salmeterol\nFormoterol\nIndacaterol (24h)\nVilanterol (24h)\nOlodaterol (24h)", "Inhaled only", "Maintenance in asthma (with ICS)\nCOPD maintenance"],
]
story.append(make_table(headers3, rows3, [2.5*cm, 2.5*cm, 4*cm, 3.5*cm, 4*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H3("Salbutamol (Albuterol) - Prototype SABA"))
sal_points = [
"<b>Selectivity:</b> Highly selective beta-2 agonist (also has weak beta-1 at high doses)",
"<b>Onset:</b> Inhaled - 5 minutes; Peak effect - 30–60 min",
"<b>Route:</b> Inhaled (MDI, nebulizer), oral, IV/SC (for severe bronchospasm and preterm labor)",
"<b>Dose:</b> 100–200 mcg by MDI as needed; nebulization: 2.5–5 mg",
"<b>Uses:</b> Acute bronchospasm, exercise-induced asthma, hyperkalemia (IV), tocolysis",
"<b>ADRs:</b> Tachycardia, palpitations, hypokalemia (at high doses), tremor, hyperglycemia",
"<b>Tolerance:</b> Regular use leads to tolerance; should be used only as-needed (rescue)",
]
for pt in sal_points:
story.append(B(pt))
story.append(Spacer(1, 0.2*cm))
story.append(H3("Salmeterol - Prototype LABA"))
salm = [
"<b>Selectivity:</b> Highly selective beta-2 agonist with a long lipophilic side chain (anchors to receptor)",
"<b>Onset:</b> 15–20 minutes (NOT for acute relief); Duration: 12 hours",
"<b>Route:</b> Inhaled only (DPI or MDI)",
"<b>Uses:</b> Maintenance therapy in asthma (ALWAYS with ICS), COPD, nocturnal asthma",
"<b>IMPORTANT:</b> Salmeterol must NEVER be used as monotherapy in asthma (risk of severe exacerbations/death - SMART trial)",
"<b>Formoterol</b> is both a LABA (onset 3–5 min) and has faster onset than salmeterol; used in SMART/MART regimens with budesonide",
]
for pt in salm:
story.append(B(pt))
story.append(Spacer(1, 0.2*cm))
story.append(Important("LABA + ICS = synergistic: corticosteroids upregulate beta-2 receptors, beta-2 agonists enhance corticosteroid receptor translocation to nucleus."))
story.append(ExamTip("SABAs are 'rescue' drugs; LABAs are 'controller' drugs - never alone in asthma. This distinction is heavily tested."))
story.append(PageBreak())
# ============================================================
# SECTION 4: METHYLXANTHINES
# ============================================================
story.append(H1("4. METHYLXANTHINES (THEOPHYLLINE)"))
story.append(H2("Drugs in Class"))
story.append(P("Theophylline, Aminophylline (theophylline + ethylenediamine), Doxofylline, Diphylline. <b>Caffeine</b> and <b>Theobromine</b> are also xanthines."))
story.append(H2("Mechanisms of Bronchodilation"))
mech = [
"<b>Primary:</b> Inhibition of phosphodiesterase (PDE 3 and 4) → ↑ cAMP and cGMP → smooth muscle relaxation",
"<b>Adenosine receptor antagonism:</b> Blocks bronchoconstricting A1 receptors; also the basis for CNS stimulation",
"<b>Enhanced diaphragm contractility:</b> Useful in COPD and respiratory failure",
"<b>Anti-inflammatory effects:</b> Histone deacetylase (HDAC2) activation → inhibit inflammatory gene transcription (at low doses)",
"<b>Mast cell stabilization:</b> Inhibits antigen-induced histamine release from lung tissue",
]
for m in mech:
story.append(B(m))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Pharmacokinetics"))
headers4 = ["Parameter", "Details"]
rows4 = [
["Route", "Oral (SR tablets preferred), IV (as aminophylline)"],
["Therapeutic range", "10–20 mcg/mL (plasma); narrow therapeutic index!"],
["Half-life", "8–9 hours (wide inter-individual variability)"],
["Metabolism", "Hepatic (CYP1A2, CYP3A4). Extensive first-pass effect."],
["Plasma protein binding", "~40%"],
["Loading dose (IV)", "5.6 mg/kg aminophylline (given slowly over 20 min)"],
]
story.append(make_table(headers4, rows4, [4.5*cm, 12*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Factors Affecting Theophylline Levels"))
headers5 = ["Increases Level (Toxicity Risk)", "Decreases Level (Subtherapeutic)"]
rows5 = [
["Cimetidine, Ciprofloxacin (CYP1A2 inhibitors)", "Rifampicin, Phenobarbitone, Phenytoin (enzyme inducers)"],
["Erythromycin, Clarithromycin", "Carbamazepine"],
["Allopurinol, Propranolol", "Smoking (↑ CYP1A2 activity)"],
["Heart failure, liver disease, old age", "High-protein diet, young age, hyperthyroidism"],
]
story.append(make_table(headers5, rows5, [8.25*cm, 8.25*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Adverse Effects (Dose-Dependent)"))
tox = [
"<b>Mild (10–20 mcg/mL):</b> Nausea, vomiting, headache, insomnia, GI irritation",
"<b>Moderate (20–35 mcg/mL):</b> Tachycardia, cardiac arrhythmias, agitation, tremors",
"<b>Severe (>35 mcg/mL):</b> Seizures (refractory), life-threatening arrhythmias, hypotension",
"Treatment of toxicity: Activated charcoal (inhibits enterohepatic circulation), phenobarbitone or lorazepam for seizures",
]
for t in tox:
story.append(B(t))
story.append(Spacer(1, 0.2*cm))
story.append(ExamTip("Theophylline toxicity is a classic exam scenario. Know the signs and the interactions (especially ciprofloxacin and rifampicin)."))
story.append(PageBreak())
# ============================================================
# SECTION 5: ANTICHOLINERGICS
# ============================================================
story.append(H1("5. ANTICHOLINERGICS (ANTIMUSCARINICS)"))
story.append(H2("Rationale & Mechanism"))
story.append(P("Acetylcholine released from vagal (parasympathetic) efferents in the airway binds M3 muscarinic receptors on bronchial smooth muscle → bronchoconstriction and ↑ mucus secretion. Antimuscarinic drugs block this effect."))
story.append(P("<b>Mechanism:</b> Competitive antagonism of acetylcholine at muscarinic receptors (M1, M2, M3). M3 blockade in bronchial smooth muscle → bronchodilation. M1 blockade in ganglia → reduces cholinergic transmission."))
story.append(Note("M2 receptors on presynaptic nerve terminals act as autoreceptors that limit ACh release. Blockade of M2 may paradoxically increase ACh release - ipratropium has low selectivity for M2, tiotropium is more M3-selective."))
story.append(H2("Drugs: SAMA vs LAMA"))
headers6 = ["Property", "Ipratropium (SAMA)", "Tiotropium (LAMA)"]
rows6 = [
["Class", "Short-Acting Muscarinic Antagonist", "Long-Acting Muscarinic Antagonist"],
["Duration", "4–6 hours", "24 hours (once daily)"],
["Selectivity", "Non-selective M1/M2/M3", "M3-selective (kinetic selectivity)"],
["Route", "Inhaled MDI/nebulizer", "Inhaled DPI (HandiHaler) or SMI (Respimat)"],
["Primary Use", "Acute COPD exacerbation, Asthma (add-on)", "COPD maintenance (first-line)"],
["Systemic absorption", "Very low (<1%) - minimal systemic effects", "Very low - minimal systemic effects"],
["ADRs", "Dry mouth, urinary retention, blurred vision, constipation", "Same + risk of acute angle-closure glaucoma (avoid spraying in eyes)"],
]
story.append(make_table(headers6, rows6, [3.5*cm, 6.5*cm, 6.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H3("Other Antimuscarinics for Respiratory Use"))
others = [
"<b>Aclidinium bromide:</b> LAMA, twice daily, mainly COPD",
"<b>Glycopyrronium (glycopyrrolate):</b> LAMA, once daily, COPD",
"<b>Umeclidinium:</b> LAMA, 24-hour duration, available in combination with vilanterol (LABA) - Anoro Ellipta",
"<b>Atropine:</b> Prototype, but systemic anticholinergic side effects limit its use in respiratory disorders",
]
for o in others:
story.append(B(o))
story.append(Spacer(1, 0.2*cm))
story.append(Important("In COPD, ipratropium is the bronchodilator of choice for acute exacerbations. Tiotropium is the preferred maintenance drug (GOLD guidelines)."))
story.append(ExamTip("Compare ipratropium vs tiotropium - frequently asked. Also, anticholinergics are preferred over beta-2 agonists in COPD."))
story.append(PageBreak())
# ============================================================
# SECTION 6: INHALED CORTICOSTEROIDS
# ============================================================
story.append(H1("6. CORTICOSTEROIDS IN ASTHMA"))
story.append(H2("Inhaled Corticosteroids (ICS) - MAINSTAY OF ASTHMA THERAPY"))
story.append(P("ICS are the most effective anti-inflammatory agents for persistent asthma. They reduce airway inflammation, prevent airway remodeling, decrease bronchial hyperreactivity, and reduce asthma mortality."))
story.append(H2("Mechanism of Action"))
ics_mech = [
"Diffuse into cell and bind to cytoplasmic glucocorticoid receptors (GR)",
"GR-corticosteroid complex translocates to nucleus",
"<b>Transrepression:</b> Inhibit AP-1 and NF-κB → suppress transcription of pro-inflammatory genes (IL-4, IL-5, IL-13, TNF-α, COX-2)",
"<b>Transactivation:</b> Induce anti-inflammatory proteins (lipocortin-1/annexin A1 → inhibit phospholipase A2 → ↓ arachidonic acid release)",
"Activate HDAC2 → deacetylate histone at inflammatory gene promoters → gene silencing",
"Upregulate beta-2 adrenoceptors → restore sensitivity to beta-2 agonists",
"Reduce microvascular permeability, mucus secretion, eosinophil activation",
]
for m in ics_mech:
story.append(B(m))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Common ICS Drugs"))
headers7 = ["Drug", "Trade Name", "Potency (Relative)", "Notes"]
rows7 = [
["Beclomethasone dipropionate", "QVAR, Becotide", "1 (reference)", "Older agent; prodrug → active beclomethasone-17-monopropionate"],
["Budesonide", "Pulmicort", "2x BDP", "Safe in pregnancy; used in nebulizer form; also in SMART regimen (with formoterol)"],
["Fluticasone propionate", "Flovent, Flixotide", "2x budesonide", "High receptor affinity; low systemic bioavailability"],
["Fluticasone furoate", "Arnuity Ellipta", "Higher than propionate", "Once-daily dosing; in Breo Ellipta (with vilanterol)"],
["Ciclesonide", "Alvesco", "Prodrug (high pulmonary activation)", "Minimal oral bioavailability; low risk of oropharyngeal candidiasis"],
["Mometasone furoate", "Asmanex", "High", "Once daily; in Dulera (with formoterol)"],
]
story.append(make_table(headers7, rows7, [4*cm, 3.5*cm, 3*cm, 6*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Adverse Effects of ICS"))
ics_adr = [
"<b>Local (oropharyngeal):</b> Oropharyngeal candidiasis (thrush), dysphonia (hoarseness) - use spacer + gargle after inhalation to prevent",
"<b>Systemic (at high doses):</b> HPA axis suppression, growth retardation in children (use lowest effective dose), decreased bone density (long-term), easy bruising, cataracts",
"Systemic effects are significantly less with ICS than oral corticosteroids",
]
for a in ics_adr:
story.append(B(a))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Systemic Corticosteroids"))
story.append(P("Used for <b>acute severe asthma</b> and severe COPD exacerbations. Prednisolone (oral) or hydrocortisone/methylprednisolone (IV). Short courses (5–7 days) are preferred to minimize systemic effects."))
story.append(ExamTip("ICS is the cornerstone of asthma management in all persistent asthma grades. Know the mechanism and side effects well."))
story.append(PageBreak())
# ============================================================
# SECTION 7: LEUKOTRIENE MODIFIERS
# ============================================================
story.append(H1("7. LEUKOTRIENE MODIFIERS"))
story.append(H2("Background"))
story.append(P("Leukotrienes (LTs) are derived from arachidonic acid via the <b>5-lipoxygenase (5-LOX)</b> pathway. <b>Cysteinyl leukotrienes</b> (LTC4, LTD4, LTE4) are the most potent bronchoconstrictors, ~1000x more potent than histamine. They also cause mucus secretion, eosinophil recruitment, and vascular permeability."))
story.append(H2("Classification"))
headers8 = ["Drug", "Class", "Mechanism", "Notes"]
rows8 = [
["Montelukast", "CysLT1 receptor antagonist", "Blocks LTD4, LTE4 at CysLT1 receptor", "Oral, once daily (evening); safe in children ≥2 years; approved for allergic rhinitis"],
["Zafirlukast", "CysLT1 receptor antagonist", "Blocks LTD4, LTE4 at CysLT1 receptor", "Oral, twice daily; take on empty stomach; CYP2C9 inhibitor (warfarin interaction)"],
["Pranlukast", "CysLT1 receptor antagonist", "Same as above", "Used in Asia; not available globally"],
["Zileuton", "5-LOX inhibitor", "Inhibits 5-lipoxygenase → ↓ synthesis of all leukotrienes (LTB4 + cysteinyl LTs)", "Hepatotoxic (monitor LFTs); inhibits CYP1A2 (↑ theophylline); 4x daily"],
]
story.append(make_table(headers8, rows8, [3*cm, 3.5*cm, 5*cm, 5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Clinical Uses"))
lt_uses = [
"Add-on therapy for mild-moderate persistent asthma not controlled by ICS alone",
"<b>Aspirin-exacerbated respiratory disease (AERD) / Aspirin-sensitive asthma</b> - excellent choice (LTs are dominant pathway)",
"Exercise-induced asthma (montelukast taken 2 hours before exercise)",
"Allergic rhinitis with comorbid asthma (montelukast treats both)",
"Useful as steroid-sparing agent",
]
for u in lt_uses:
story.append(B(u))
story.append(Spacer(1, 0.2*cm))
story.append(Important("Montelukast is the most commonly used leukotriene modifier. Zileuton inhibits 5-LOX so it blocks ALL leukotrienes including LTB4 (chemotaxis). Zafirlukast and montelukast only block the receptor."))
story.append(ExamTip("Aspirin-sensitive asthma + leukotriene modifiers = classic exam association. Also note zafirlukast-warfarin interaction."))
story.append(PageBreak())
# ============================================================
# SECTION 8: MAST CELL STABILIZERS
# ============================================================
story.append(H1("8. MAST CELL STABILIZERS (CROMONES)"))
story.append(H2("Drugs"))
story.append(P("<b>Sodium cromoglycate (Cromolyn sodium)</b> and <b>Nedocromil sodium</b>."))
story.append(H2("Mechanism of Action"))
story.append(P("The exact mechanism is incompletely understood, but they appear to:"))
cromo = [
"Inhibit degranulation of sensitized mast cells → prevent release of histamine, leukotrienes, prostaglandins",
"Block chloride channels on mast cells, reducing Ca2+ influx needed for degranulation",
"Inhibit activation of sensory nerve fibers (C-fibers) in the airways",
"Inhibit eosinophil chemotaxis and activation",
"<b>Only prophylactic - NO bronchodilator effect. Must be given BEFORE allergen exposure.</b>",
]
for c in cromo:
story.append(B(c))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Clinical Features"))
headers9 = ["Parameter", "Details"]
rows9 = [
["Route", "Inhaled (MDI), intranasal, eye drops"],
["Uses", "Prophylaxis of allergic asthma (mild), exercise-induced asthma (inhaled 15 min before), allergic rhinitis, vernal conjunctivitis"],
["Onset of benefit", "4–6 weeks of regular use needed for full effect"],
["ADRs", "Minimal - cough/throat irritation (local); extremely safe; no systemic side effects"],
["Pregnancy", "Safe - drug of choice for prophylaxis in pregnant asthmatics"],
["Place in therapy", "Largely replaced by ICS; still used in children and mild allergic asthma"],
]
story.append(make_table(headers9, rows9, [4*cm, 12.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(ExamTip("Cromoglycate is 'purely prophylactic', safest in pregnancy, no bronchodilation. Nedocromil is more potent but same class."))
story.append(PageBreak())
# ============================================================
# SECTION 9: BIOLOGICS
# ============================================================
story.append(H1("9. BIOLOGICS / MONOCLONAL ANTIBODIES"))
story.append(P("Biologics target specific mediators in the Type 2 inflammatory pathway of severe refractory asthma."))
headers10 = ["Drug", "Target", "Mechanism", "Indication"]
rows10 = [
["Omalizumab", "IgE (anti-IgE)", "Binds free IgE → prevents IgE-FcεRI binding on mast cells", "Moderate-severe allergic asthma uncontrolled by ICS+LABA; elevated serum IgE"],
["Mepolizumab\nReslizumab", "IL-5 (anti-IL-5)", "Blocks IL-5 → ↓ eosinophil production and survival", "Severe eosinophilic asthma (blood eosinophils ≥300/μL)"],
["Benralizumab", "IL-5 receptor alpha\n(anti-IL-5Ra)", "Depletes eosinophils by ADCC", "Severe eosinophilic asthma"],
["Dupilumab", "IL-4 receptor alpha\n(anti-IL-4Ra)", "Blocks both IL-4 and IL-13 signaling", "Moderate-severe eosinophilic/atopic asthma; also approved for atopic dermatitis"],
["Tezepelumab", "TSLP (Thymic stromal\nlymphopoietin)", "Blocks TSLP (upstream initiator of Type 2 inflammation)", "Severe asthma, broad eligibility regardless of eosinophil count"],
]
story.append(make_table(headers10, rows10, [3*cm, 3.5*cm, 5.5*cm, 4.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Note("Biologics are add-on therapies for step 5 severe asthma only. They are subcutaneous or IV injections, very expensive, and require patient selection based on biomarkers (eosinophil count, IgE level, atopic status)."))
story.append(PageBreak())
# ============================================================
# SECTION 10: COPD
# ============================================================
story.append(H1("10. COPD: PHARMACOLOGICAL MANAGEMENT"))
story.append(H2("Key Differences: Asthma vs COPD Drug Choice"))
headers11 = ["Feature", "Asthma", "COPD"]
rows11 = [
["First-line bronchodilator", "SABA (rescue)", "LAMA or LABA (maintenance)"],
["Preferred bronchodilator class", "Beta-2 agonist", "Anticholinergic (LAMA)"],
["Anti-inflammatory first-line", "ICS (cornerstone)", "ICS only in frequent exacerbators"],
["Theophylline", "Nearly obsolete", "Still used (↑ diaphragm contractility)"],
["Leukotriene modifiers", "Useful add-on", "Not recommended"],
["Oxygen therapy", "In acute severe", "Controlled (24–28%) - avoid high-flow"],
["Roflumilast", "Not used", "Severe COPD with chronic bronchitis"],
]
story.append(make_table(headers11, rows11, [5*cm, 5*cm, 6.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("GOLD Guidelines - Step-Up in COPD"))
gold = [
"<b>Group A (low symptoms, low exacerbations):</b> Any single bronchodilator (SABA or LAMA)",
"<b>Group B (high symptoms, low exacerbations):</b> Long-acting bronchodilator (LAMA preferred); if very symptomatic: LAMA + LABA",
"<b>Group E (high exacerbations):</b> LAMA + LABA; add ICS if blood eosinophils ≥300/μL; Roflumilast or azithromycin if frequent exacerbations",
]
for g in gold:
story.append(B(g))
story.append(Spacer(1, 0.2*cm))
story.append(H3("Roflumilast"))
rof = [
"<b>Class:</b> Selective PDE-4 inhibitor (oral anti-inflammatory)",
"<b>Mechanism:</b> Inhibits PDE-4 → ↑ cAMP in inflammatory cells → anti-inflammatory",
"<b>Use:</b> Severe COPD with chronic bronchitis and frequent exacerbations (GOLD C/D), on top of bronchodilators",
"<b>ADRs:</b> Weight loss (most common), nausea, diarrhea, headache, psychiatric effects (depression, suicidal ideation - black box warning)",
"<b>Contraindications:</b> Severe liver disease, depression/suicidality",
]
for r in rof:
story.append(B(r))
story.append(Spacer(1, 0.2*cm))
story.append(ExamTip("Roflumilast is the ONLY oral PDE-4 inhibitor for COPD. Its weight-loss and psychiatric ADRs are commonly tested."))
story.append(PageBreak())
# ============================================================
# SECTION 11: ANTITUSSIVES / EXPECTORANTS / MUCOLYTICS
# ============================================================
story.append(H1("11. ANTITUSSIVES, EXPECTORANTS & MUCOLYTICS"))
story.append(H2("A. Antitussives (Cough Suppressants)"))
story.append(P("Used for dry, unproductive, irritant cough. Contraindicated in productive cough (mucus clearance is beneficial)."))
headers12 = ["Drug", "Class/Mechanism", "Dose", "Notes"]
rows12 = [
["Codeine", "Opioid agonist; acts on cough center in medulla (mu receptors)", "10–20 mg q4–6h", "Prototype antitussive; constipation, sedation, addiction potential; Schedule H"],
["Dextromethorphan", "NMDA receptor antagonist + sigma receptor agonist; no opioid receptor activity", "15–30 mg q4h", "Most commonly used OTC antitussive; no addiction; avoid with MAOIs (serotonin syndrome)"],
["Noscapine (Narcotine)", "Opioid alkaloid but no analgesic/addictive properties; central mechanism", "15–30 mg TID", "Non-addictive; weak bronchodilator; used in India"],
["Pholcodine", "Opioid-related central antitussive", "5–10 mg q4–6h", "Less constipating than codeine; not available in all countries"],
["Benzonatate", "Local anesthetic (related to tetracaine); stretches pulmonary stretch receptors", "100–200 mg TID", "Peripheral antitussive; must swallow whole (releases drug orally if chewed)"],
["Levodropropizine", "Peripheral antitussive (C-fiber desensitization)", "60 mg TID", "No CNS effects"],
]
story.append(make_table(headers12, rows12, [3.5*cm, 5*cm, 2.5*cm, 5.5*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(H2("B. Expectorants"))
story.append(P("Increase volume and reduce viscosity of respiratory secretions, facilitating their expulsion."))
exp = [
"<b>Guaifenesin:</b> Most widely used. Reflex secretion of mucus via gastric irritation; also reduces mucus viscosity. Use: productive cough. ADR: nausea, vomiting.",
"<b>Ammonium chloride:</b> Expectorant via reflex stimulation of bronchial glands. Also causes metabolic acidosis in large doses.",
"<b>Potassium iodide (SSKI):</b> Stimulates bronchial gland secretion. Used historically; iodide toxicity limits use.",
"<b>Ipecacuanha (Ipecac):</b> Reflex expectorant; rarely used today.",
"<b>Vasaka (Adhatoda vasica):</b> Herbal expectorant commonly used in India.",
]
for e in exp:
story.append(B(e))
story.append(Spacer(1, 0.2*cm))
story.append(H2("C. Mucolytics"))
story.append(P("Break down mucus structure by cleaving disulfide bonds in mucus glycoproteins."))
muc = [
"<b>N-Acetylcysteine (NAC):</b> Free thiol (–SH) group breaks disulfide bonds in mucoproteins → reduces mucus viscosity. Also antidote for paracetamol/acetaminophen overdose (replenishes glutathione). Used in COPD, cystic fibrosis, IPF.",
"<b>Bromhexine:</b> Mucolytic + expectorant. Reduces mucus viscosity + increases serous secretion. Prodrug → active metabolite is <b>ambroxol</b>.",
"<b>Ambroxol:</b> Active metabolite of bromhexine; stimulates surfactant production; mucolytic + mild bronchodilator.",
"<b>Carbocisteine (Carbomethylcysteine):</b> Reduces mucus viscosity; restores mucociliary clearance in COPD.",
"<b>Erdosteine:</b> Antioxidant + mucolytic; reduces COPD exacerbations.",
"<b>Dornase alfa (DNase):</b> Recombinant human DNase; cleaves DNA in viscid purulent secretions; used in <b>cystic fibrosis</b>.",
]
for m in muc:
story.append(B(m))
story.append(Spacer(1, 0.2*cm))
story.append(Important("NAC is both a mucolytic AND the antidote for paracetamol overdose - dual role is a common exam question."))
story.append(ExamTip("Distinguish: Antitussives suppress cough (dry); expectorants increase mucus; mucolytics break down mucus. Bromhexine -> Ambroxol (active metabolite) frequently tested."))
story.append(PageBreak())
# ============================================================
# SECTION 12: ASTHMA STEPWISE THERAPY
# ============================================================
story.append(H1("12. STEPWISE MANAGEMENT OF ASTHMA (GINA Guidelines)"))
story.append(Spacer(1, 0.2*cm))
headers13 = ["Step", "Severity", "Preferred Controller", "Reliever"]
rows13 = [
["Step 1", "Mild intermittent\n(symptoms <2x/week)", "Consider low-dose ICS (or as-needed ICS+formoterol)", "As-needed SABA or low-dose ICS-formoterol"],
["Step 2", "Mild persistent", "Low-dose ICS daily\n(or LTM if ICS not tolerated)", "SABA as needed"],
["Step 3", "Moderate persistent", "Low-dose ICS + LABA\n(or medium-dose ICS alone)", "SABA as needed"],
["Step 4", "Moderate-severe persistent", "Medium-high dose ICS + LABA\n(add LAMA if uncontrolled)", "SABA or ICS-formoterol"],
["Step 5", "Severe refractory", "Step 4 + Biologic (omalizumab / mepolizumab / dupilumab)\n± oral corticosteroids", "SABA or ICS-formoterol"],
]
story.append(make_table(headers13, rows13, [1.5*cm, 3.5*cm, 7.5*cm, 4*cm]))
story.append(Spacer(1, 0.2*cm))
story.append(Note("GINA 2023: ICS-formoterol (budesonide-formoterol) as single inhaler maintenance and reliever therapy (SMART) is preferred at steps 3-4. SABA-only as reliever is no longer preferred at any step due to risk of severe exacerbations."))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Acute Severe Asthma (Status Asthmaticus) - Emergency Management"))
acute = [
"<b>Oxygen:</b> High-flow 40–60% to maintain SpO2 >94%",
"<b>Nebulized SABA (Salbutamol):</b> 2.5–5 mg q20 min for first hour, then hourly",
"<b>Nebulized Ipratropium:</b> 0.5 mg q20 min x 3, then as needed (add-on to SABA)",
"<b>IV/Oral Corticosteroids:</b> Hydrocortisone 200 mg IV or prednisolone 40–50 mg oral",
"<b>IV Magnesium Sulfate:</b> 2g IV over 20 min - bronchodilator (blocks Ca2+ channels in smooth muscle); for severe cases not responding to initial therapy",
"<b>IV Aminophylline:</b> Loading dose 5.6 mg/kg over 20 min (if not on theophylline) - used as add-on in severe cases",
"<b>Helium-oxygen mixture (Heliox):</b> Reduces airway resistance in intubated patients",
"<b>IV Salbutamol/Adrenaline (SC):</b> Life-threatening cases unresponsive to nebulized drugs",
]
for a in acute:
story.append(B(a))
story.append(Spacer(1, 0.2*cm))
story.append(ExamTip("Magnesium sulfate IV in acute severe asthma is a high-yield topic. Mechanism: blocks calcium channels, reduces smooth muscle contraction."))
story.append(PageBreak())
# ============================================================
# SECTION 13: PULMONARY HYPERTENSION
# ============================================================
story.append(H1("13. DRUGS FOR PULMONARY HYPERTENSION"))
story.append(Spacer(1, 0.2*cm))
headers14 = ["Class", "Drugs", "Mechanism", "Notes"]
rows14 = [
["PDE-5 Inhibitors", "Sildenafil\nTadalafil", "Inhibit PDE-5 → ↑ cGMP → pulmonary vasodilation", "Oral; mainstay for PAH; tadalafil once daily"],
["Endothelin Receptor\nAntagonists", "Bosentan\nAmbrisentan\nMacitentan", "Block ET-A (and ET-B for bosentan) → ↓ vasoconstriction + anti-proliferative", "Teratogenic; LFT monitoring (bosentan); oral"],
["Prostacyclin Analogs", "Epoprostenol (IV)\nTreprostinil (SC/inhaled/oral)\nIloprost (inhaled)", "IP receptor agonist → ↑ cAMP → vasodilation + antiplatelet + anti-proliferative", "Epoprostenol: most potent, continuous IV infusion, short t1/2"],
["sGC Stimulators", "Riociguat", "Directly activates sGC independent of NO → ↑ cGMP", "Only drug approved for both PAH and CTEPH; teratogenic"],
["Inhaled NO", "Nitric oxide gas", "Activates sGC → ↑ cGMP → selective pulmonary vasodilation", "IV in newborns with PPHN; methemoglobinemia risk"],
["Selexipag", "Prostacyclin receptor agonist", "IP receptor agonist", "Oral; selective for IP receptor; reduce PAH progression"],
]
story.append(make_table(headers14, rows14, [3*cm, 3.5*cm, 5*cm, 5*cm]))
story.append(PageBreak())
# ============================================================
# SECTION 14: RAPID REVISION TABLES
# ============================================================
story.append(H1("14. RAPID REVISION - HIGH-YIELD TABLES"))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Drug Comparisons - Exam-Ready"))
comp_headers = ["Drug/Drug Class", "Key Distinguishing Feature for Exam"]
comp_rows = [
["Salbutamol", "Prototype SABA; also used for hyperkalemia, preterm labor tocolysis"],
["Salmeterol", "LABA, slow onset (15-20 min), NEVER monotherapy in asthma"],
["Formoterol", "LABA with FAST onset (like a SABA) - used in SMART regimen"],
["Theophylline", "PDE inhibitor + adenosine antagonist; narrow therapeutic index; multiple drug interactions"],
["Ipratropium", "SAMA; preferred in COPD exacerbations over beta-2 agonists; minimal systemic effects"],
["Tiotropium", "LAMA; once daily; preferred COPD maintenance; M3-selective"],
["Budesonide", "ICS; safe in pregnancy; available as nebulizer solution"],
["Fluticasone", "Most potent ICS; lowest systemic bioavailability"],
["Montelukast", "CysLT1 antagonist; aspirin-sensitive asthma, exercise-induced, allergic rhinitis"],
["Zileuton", "5-LOX inhibitor; hepatotoxic; ↑ theophylline levels"],
["Sodium cromoglycate", "Mast cell stabilizer; purely prophylactic; safest (pregnancy); no bronchodilation"],
["Omalizumab", "Anti-IgE; allergic asthma with elevated IgE; subcutaneous injection"],
["Mepolizumab", "Anti-IL-5; eosinophilic asthma; ↓ eosinophil count"],
["Roflumilast", "Oral PDE-4 inhibitor; COPD with chronic bronchitis; causes weight loss + depression"],
["Codeine", "Opioid antitussive; addictive; contraindicated in productive cough"],
["Dextromethorphan", "Non-opioid antitussive; serotonin syndrome with MAOIs; most common OTC"],
["N-Acetylcysteine", "Mucolytic (breaks -S-S- bonds) AND antidote for paracetamol overdose"],
["Ambroxol", "Active metabolite of bromhexine; stimulates surfactant synthesis"],
["Dornase alfa", "DNase; only for cystic fibrosis"],
["Magnesium sulfate", "Adjunct bronchodilator in acute severe asthma; blocks calcium channels"],
]
story.append(make_table(comp_headers, comp_rows, [5*cm, 11.5*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(H2("Drugs Contraindicated or Used with Caution in Asthma"))
contra_headers = ["Drug", "Risk", "Alternative"]
contra_rows = [
["Non-selective beta-blockers\n(Propranolol, Atenolol at high doses)", "Block beta-2 receptors → severe bronchoconstriction", "Use cardioselective beta-1 blockers with extreme caution only if essential"],
["NSAIDs / Aspirin", "Inhibit COX-1 → arachidonic acid shunted to LOX → excess leukotrienes → Samter's triad: asthma + nasal polyps + aspirin sensitivity", "Paracetamol; if NSAID needed: COX-2 inhibitors safer"],
["ACE inhibitors", "ACE inhibition → bradykinin accumulation → dry cough in 10-20% patients", "Use ARBs instead"],
["Codeine / Morphine", "Histamine release from mast cells → may worsen bronchoconstriction", "Dextromethorphan as antitussive"],
["Carbachol / Pilocarpine", "Muscarinic agonists → bronchoconstriction", "Avoid in asthmatics"],
]
story.append(make_table(contra_headers, contra_rows, [4.5*cm, 6*cm, 6*cm]))
story.append(Spacer(1, 0.3*cm))
story.append(ExamTip("Beta-blockers in asthma is a classic contraindication question. Non-selective > selective in risk. Even topical timolol eye drops can precipitate bronchospasm."))
story.append(Spacer(1, 0.2*cm))
story.append(H2("Mnemonic Summary"))
mnemonics = [
"<b>Bronchodilators: 'BAM'</b> = <b>B</b>eta-2 agonists, <b>A</b>nticholinergics, <b>M</b>ethylxanthines",
"<b>ICS side effects: 'CACHE'</b> = <b>C</b>andidiasis, <b>A</b>drenal suppression, <b>C</b>ataracts, <b>H</b>oarseness, <b>E</b>osteoporosis/growth suppression",
"<b>Theophylline toxicity: 'NCAS'</b> = <b>N</b>ausea/vomiting, <b>C</b>ardia arrhythmia, <b>A</b>gitation, <b>S</b>eizures",
"<b>Leukotriene modifiers: 'ZMZ'</b> = <b>Z</b>ilueton (5-LOX inhibitor), <b>M</b>ontelukast, <b>Z</b>afirlukast (both CysLT1 antagonists)",
"<b>Acute severe asthma: 'OICS-M'</b> = <b>O</b>xygen, <b>I</b>pratropium+salbutamol nebulized, <b>C</b>orticosteroids IV, <b>S</b>albutamol nebulized, <b>M</b>agnesium IV",
]
for mn in mnemonics:
story.append(B(mn))
story.append(Spacer(1, 0.5*cm))
story.append(HR())
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("End of Guide - Good Luck with Your 2nd Prof Examination!", ParagraphStyle(
'Footer', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#1a3a5c'),
alignment=TA_CENTER, fontName='Helvetica-Bold'
)))
story.append(Paragraph("Based on Katzung's Basic & Clinical Pharmacology, Goodman & Gilman's Pharmacological Basis of Therapeutics, and Lippincott Illustrated Reviews in Pharmacology.", ParagraphStyle(
'Source', parent=styles['Normal'],
fontSize=7.5, textColor=colors.grey,
alignment=TA_CENTER, fontName='Helvetica-Oblique'
)))
# Build
doc.build(story)
print(f"PDF generated: {OUTPUT_PATH}")
cd /home/daytona/workspace/respiratory-pharma && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/respiratory-pharma/Respiratory_Pharmacology_2Prof…
Respiratory Pharmacology 2Prof
PDF Document · PDF
| # | Section | Key Content |
|---|---|---|
| 1 | Overview & Classification | Master drug classification table |
| 2 | Asthma Pathogenesis | IgE mechanism, EAR vs LAR, mediators table |
| 3 | Beta-2 Agonists | SABAs vs LABAs, salbutamol vs salmeterol, SMART regimen |
| 4 | Methylxanthines | Theophylline mechanism, PK, toxicity, drug interactions |
| 5 | Anticholinergics | Ipratropium vs Tiotropium comparison table |
| 6 | Inhaled Corticosteroids | Mechanism, ICS potency comparison, ADRs |
| 7 | Leukotriene Modifiers | Montelukast, Zafirlukast, Zileuton differences |
| 8 | Mast Cell Stabilizers | Cromoglycate - purely prophylactic, safe in pregnancy |
| 9 | Biologics | Omalizumab, Mepolizumab, Dupilumab, Tezepelumab |
| 10 | COPD Management | GOLD guidelines, Roflumilast, Asthma vs COPD drug differences |
| 11 | Antitussives/Expectorants/Mucolytics | Codeine vs Dextromethorphan, NAC dual role, Bromhexine->Ambroxol |
| 12 | Stepwise Asthma Therapy | GINA steps, Acute severe asthma emergency protocol |
| 13 | Pulmonary Hypertension | Sildenafil, Bosentan, Epoprostenol, Riociguat |
| 14 | Rapid Revision Tables | High-yield distinguishing features, contraindications, mnemonics |
Give me a guide pdf in easy to understand format but effective topic of autocoid pharmacology for 2 prof examination
~/respiratory-pharma/generate_autocoid_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT_PATH = "/home/daytona/workspace/respiratory-pharma/Autocoid_Pharmacology_2Prof.pdf"
doc = SimpleDocTemplate(
OUTPUT_PATH, pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Autocoid Pharmacology - 2nd Prof Guide",
author="Orris Medical Library"
)
styles = getSampleStyleSheet()
# ---- STYLE PALETTE ----
NAVY = colors.HexColor('#1b3a6b')
TEAL = colors.HexColor('#0d6e8a')
AMBER = colors.HexColor('#f59e0b')
RED = colors.HexColor('#dc2626')
GREEN = colors.HexColor('#166534')
LGREY = colors.HexColor('#f1f5f9')
LGREEN = colors.HexColor('#d1fae5')
LYELLOW= colors.HexColor('#fef3c7')
LRED = colors.HexColor('#fee2e2')
LBLUE = colors.HexColor('#dbeafe')
title_style = ParagraphStyle('T', parent=styles['Title'],
fontSize=24, textColor=NAVY, alignment=TA_CENTER,
fontName='Helvetica-Bold', spaceAfter=4)
sub_style = ParagraphStyle('S', parent=styles['Normal'],
fontSize=11, textColor=TEAL, alignment=TA_CENTER,
fontName='Helvetica', spaceAfter=3)
h1_style = ParagraphStyle('H1', parent=styles['Heading1'],
fontSize=14, textColor=colors.white, fontName='Helvetica-Bold',
spaceAfter=5, spaceBefore=10, backColor=NAVY,
borderPad=6, leftIndent=-6, rightIndent=-6)
h2_style = ParagraphStyle('H2', parent=styles['Heading2'],
fontSize=12, textColor=NAVY, fontName='Helvetica-Bold',
spaceAfter=3, spaceBefore=8,
borderColor=TEAL, borderWidth=0, borderPad=2)
h3_style = ParagraphStyle('H3', parent=styles['Heading3'],
fontSize=10.5, textColor=TEAL, fontName='Helvetica-Bold',
spaceAfter=2, spaceBefore=5)
body_style = ParagraphStyle('B', parent=styles['Normal'],
fontSize=9.5, leading=14, spaceAfter=3, spaceBefore=1,
alignment=TA_JUSTIFY, fontName='Helvetica')
bullet_style = ParagraphStyle('Bul', parent=styles['Normal'],
fontSize=9.5, leading=13, spaceAfter=2, spaceBefore=1,
leftIndent=14, firstLineIndent=-10, fontName='Helvetica')
note_style = ParagraphStyle('N', parent=styles['Normal'],
fontSize=9, leading=12, spaceAfter=3, spaceBefore=3,
backColor=LBLUE, borderColor=TEAL, borderWidth=1,
borderPad=5, fontName='Helvetica-Oblique')
tip_style = ParagraphStyle('Tip', parent=styles['Normal'],
fontSize=9.5, leading=13, spaceAfter=3, spaceBefore=3,
backColor=LRED, borderColor=RED, borderWidth=1,
borderPad=5, fontName='Helvetica-Bold')
key_style = ParagraphStyle('Key', parent=styles['Normal'],
fontSize=9.5, leading=13, spaceAfter=3, spaceBefore=3,
backColor=LYELLOW, borderColor=AMBER, borderWidth=1,
borderPad=5, fontName='Helvetica')
mem_style = ParagraphStyle('Mem', parent=styles['Normal'],
fontSize=9.5, leading=13, spaceAfter=3, spaceBefore=3,
backColor=LGREEN, borderColor=colors.HexColor('#059669'),
borderWidth=1, borderPad=5, fontName='Helvetica-Oblique')
def H1(t): return Paragraph(f"<font color='white'>{t}</font>", h1_style)
def H2(t): return Paragraph(t, h2_style)
def H3(t): return Paragraph(t, h3_style)
def P(t): return Paragraph(t, body_style)
def B(t): return Paragraph(f"• {t}", bullet_style)
def Note(t): return Paragraph(f"📘 <i>{t}</i>", note_style)
def Tip(t): return Paragraph(f"★ EXAM TIP: {t}", tip_style)
def Key(t): return Paragraph(f"🔑 KEY: {t}", key_style)
def Mem(t): return Paragraph(f"🧠 MNEMONIC: {t}", mem_style)
def HR(): return HRFlowable(width="100%", thickness=1, color=NAVY, spaceAfter=3, spaceBefore=3)
def sp(n=0.2): return Spacer(1, n*cm)
def tbl(headers, rows, widths=None, hdr_bg=NAVY):
data = [headers] + rows
if widths is None:
widths = [doc.width/len(headers)]*len(headers)
t = Table(data, colWidths=widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0), hdr_bg),
('TEXTCOLOR',(0,0),(-1,0), colors.white),
('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(-1,0), 9),
('ALIGN',(0,0),(-1,0),'CENTER'),
('ROWBACKGROUNDS',(0,1),(-1,-1),[LGREY, colors.white]),
('FONTNAME',(0,1),(-1,-1),'Helvetica'),
('FONTSIZE',(0,1),(-1,-1), 8.5),
('VALIGN',(0,0),(-1,-1),'TOP'),
('GRID',(0,0),(-1,-1), 0.3, colors.HexColor('#cbd5e1')),
('LEFTPADDING',(0,0),(-1,-1), 5),
('RIGHTPADDING',(0,0),(-1,-1), 5),
('TOPPADDING',(0,0),(-1,-1), 4),
('BOTTOMPADDING',(0,0),(-1,-1), 4),
]))
return t
def tbl2(headers, rows, widths=None):
return tbl(headers, rows, widths, hdr_bg=TEAL)
# ============================================================
S = [] # story
# ===== COVER PAGE =====
S.append(sp(1.5))
S.append(Paragraph("AUTOCOID PHARMACOLOGY", title_style))
S.append(Paragraph("Easy-to-Understand Complete Guide for 2nd Prof MBBS", sub_style))
S.append(sp(0.2))
S.append(HRFlowable(width="75%", thickness=3, color=NAVY, hAlign='CENTER'))
S.append(sp(0.2))
S.append(Paragraph("Based on Katzung's Basic & Clinical Pharmacology & Goodman & Gilman's", sub_style))
S.append(sp(0.5))
toc = [
["📋 CONTENTS AT A GLANCE"],
["1. What are Autocoids? Overview & Classification"],
["2. HISTAMINE — Synthesis, Storage, Release & Receptors"],
["3. Histamine Effects on Body Systems (Pharmacodynamics)"],
["4. ANTIHISTAMINES — H1 Blockers (Gen 1 vs Gen 2)"],
["5. H2 Blockers (Cimetidine, Ranitidine, etc.)"],
["6. H3 & H4 Receptor Drugs"],
["7. SEROTONIN (5-HT) — Complete Pharmacology"],
["8. 5-HT Agonists & Antagonists with Uses"],
["9. ERGOT ALKALOIDS — Key Drugs for Exam"],
["10. BRADYKININ & KALLIKREIN-KININ SYSTEM"],
["11. PROSTAGLANDINS & THROMBOXANES"],
["12. LEUKOTRIENES"],
["13. PLATELET ACTIVATING FACTOR (PAF)"],
["14. RAPID REVISION — Tables, Mnemonics & Exam Tips"],
]
ct = Table(toc, colWidths=[doc.width*0.65], hAlign='CENTER')
ct.setStyle(TableStyle([
('BACKGROUND',(0,0),(0,0), NAVY),
('TEXTCOLOR',(0,0),(0,0), colors.white),
('FONTNAME',(0,0),(0,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(0,0), 11),
('ALIGN',(0,0),(-1,-1),'LEFT'),
('ROWBACKGROUNDS',(0,1),(0,-1),[colors.HexColor('#e0eaf8'), colors.white]),
('FONTNAME',(0,1),(0,-1),'Helvetica'),
('FONTSIZE',(0,1),(0,-1), 9.5),
('GRID',(0,0),(-1,-1), 0.4, colors.HexColor('#94a3b8')),
('LEFTPADDING',(0,0),(-1,-1), 12),
('TOPPADDING',(0,0),(-1,-1), 5),
('BOTTOMPADDING',(0,0),(-1,-1), 5),
]))
S.append(ct)
S.append(PageBreak())
# ============================================================
# SECTION 1: OVERVIEW
# ============================================================
S.append(H1("1. WHAT ARE AUTOCOIDS? — OVERVIEW & CLASSIFICATION"))
S.append(sp(0.2))
S.append(H2("Definition (Easy Way to Remember)"))
S.append(P("The word <b>Autocoid</b> comes from Greek: <i>autos</i> (self) + <i>akos</i> (remedy or drug). Autocoids are <b>locally acting, endogenous substances</b> that are synthesized where they are needed, act nearby, and are quickly destroyed. They are NOT true hormones (not secreted from one gland to act at a distant organ) and NOT classic neurotransmitters."))
S.append(Key("Autocoids = local hormones that act near their site of production and are rapidly inactivated."))
S.append(sp(0.2))
S.append(H2("Classification of Autocoids"))
S.append(tbl(
["Category", "Autocoids", "Key Feature"],
[
["Biogenic Amines", "Histamine\nSerotonin (5-HT)\nDopamine", "Formed by decarboxylation of amino acids"],
["Peptide Autocoids", "Bradykinin\nAngiotensin II\nSubstance P\nEndothelins", "Short peptide chains; potent vasodilators/constrictors"],
["Lipid-derived Autocoids\n(Eicosanoids)", "Prostaglandins (PGs)\nThromboxanes (TXs)\nLeukotrienes (LTs)\nLipoxins\nPlatelet Activating Factor (PAF)", "Derived from arachidonic acid via COX or 5-LOX pathway"],
["Gaseous Autocoids", "Nitric Oxide (NO)\nCarbon Monoxide (CO)\nHydrogen Sulfide (H2S)", "Synthesized on demand; cannot be stored; very short-lived"],
],
[3.5*cm, 5.5*cm, 7.5*cm]
))
S.append(sp(0.2))
S.append(Tip("Classification of autocoids is a favourite short-note/essay opener. Start every autocoid answer with this classification."))
S.append(PageBreak())
# ============================================================
# SECTION 2: HISTAMINE
# ============================================================
S.append(H1("2. HISTAMINE — SYNTHESIS, STORAGE & RELEASE"))
S.append(sp(0.2))
S.append(H2("Synthesis"))
S.append(P("Histamine is synthesized from the amino acid <b>L-Histidine</b> by the enzyme <b>Histidine Decarboxylase (HDC)</b>. This enzyme is found in mast cells, basophils, ECL cells of the stomach, and neurons."))
S.append(P("<b>L-Histidine</b> →[Histidine Decarboxylase]→ <b>Histamine</b>"))
S.append(sp(0.1))
S.append(H2("Storage"))
bullets_store = [
"<b>Mast cells & basophils</b> — stored in secretory granules bound to heparin proteoglycan. These are the PRIMARY storage sites.",
"<b>ECL cells</b> of gastric fundus — release histamine to stimulate parietal cells → gastric acid secretion.",
"<b>Brain neurons</b> — acts as a neurotransmitter (wake/sleep regulation, appetite, etc.)",
"Mast cells are most numerous at <b>sites of potential injury</b>: skin, airways, GI tract, blood vessel walls.",
]
for b in bullets_store: S.append(B(b))
S.append(sp(0.2))
S.append(H2("Release of Histamine"))
S.append(tbl(
["Mechanism", "Trigger/Example", "Energy Required?"],
[
["1. Immunological (IgE-mediated)", "Allergen cross-links IgE on mast cell → explosive degranulation\nHay fever, urticaria, anaphylaxis", "Yes + Ca²⁺"],
["2. Chemical / Drug-induced", "Morphine, tubocurarine, radiocontrast dye, vancomycin (Red Man Syndrome), compound 48/80", "No (direct displacement)"],
["3. Mechanical", "Trauma, pressure, heat, cold urticaria", "No"],
["4. Complement activation", "C3a & C5a (anaphylatoxins) trigger mast cell degranulation during IgG/IgM reactions", "Yes + Ca²⁺"],
],
[3.5*cm, 8.5*cm, 3*cm]
))
S.append(sp(0.2))
S.append(H2("Metabolism / Inactivation"))
S.append(P("Histamine is rapidly inactivated by two main pathways:"))
metab = [
"<b>Methylation:</b> Histamine + SAM → N-methylhistamine (by Histamine-N-methyltransferase / HNMT) → methylimidazoleacetic acid",
"<b>Oxidation:</b> Histamine → Imidazoleacetic acid (by Diamine Oxidase / DAO) → Imidazoleacetic acid riboside",
"Metabolites excreted in urine. Increased urinary histamine metabolites are seen in mastocytosis and carcinoid.",
]
for m in metab: S.append(B(m))
S.append(sp(0.2))
S.append(Tip("Vancomycin (Red Man Syndrome) and morphine release histamine by direct chemical mechanism (non-immunological). Very high-yield MCQ."))
S.append(PageBreak())
# ============================================================
# SECTION 3: HISTAMINE RECEPTORS & EFFECTS
# ============================================================
S.append(H1("3. HISTAMINE RECEPTORS & PHARMACODYNAMIC EFFECTS"))
S.append(sp(0.2))
S.append(H2("The Four Histamine Receptors — H1 to H4"))
S.append(tbl(
["Receptor", "Location", "Signal Transduction", "Effects When Activated", "Clinical Relevance"],
[
["H1", "Smooth muscle\nEndothelium\nBrain\nHeart", "Gq → ↑IP3/DAG → ↑Ca²⁺", "Bronchoconstriction\nItching (pruritus)\nVasodilation + ↑permeability\nSlow HR\nWakefulness (CNS)", "Allergic reactions\nH1 blockers for allergy"],
["H2", "Gastric parietal cells\nHeart\nSmooth muscle", "Gs → ↑cAMP → ↑PKA", "↑↑ Gastric acid secretion\n↑ HR\nBronchodilation (minor)", "Peptic ulcer\nH2 blockers: cimetidine, ranitidine"],
["H3", "Presynaptic nerve terminals\n(CNS & peripheral)\nBrain", "Gi → ↓cAMP", "Inhibits release of histamine & other neurotransmitters\n(autoreceptor + heteroreceptor)\nRegulates sleep, cognition, appetite", "Pitolisant (H3 blocker) for narcolepsy\nExperimental CNS drugs"],
["H4", "Bone marrow\nLeukocytes\nEosinophils\nMast cells", "Gi → ↓cAMP", "Chemotaxis of eosinophils & mast cells\nImmunomodulation", "Research target for allergic/inflammatory diseases"],
],
[1.8*cm, 3.5*cm, 3*cm, 4*cm, 4.2*cm]
))
S.append(sp(0.2))
S.append(H2("Systemic Effects of Histamine Release (Triple Response of Lewis)"))
S.append(P("When histamine is injected intradermally, a <b>Triple Response</b> occurs:"))
triple = [
"<b>1. Red Spot (Flare at site):</b> Local vasodilation of capillaries/arterioles → redness (within 1 minute)",
"<b>2. Wheal:</b> Increased vascular permeability → fluid leaks into skin → raised, pale, edematous swelling",
"<b>3. Flare (surrounding redness):</b> Axon reflex → arteriolar dilation in surrounding area → red area around wheal",
]
for t in triple: S.append(B(t))
S.append(sp(0.1))
S.append(H2("Cardiovascular Effects"))
cv = [
"<b>Vasodilation:</b> Both H1 and H2 receptors mediate vasodilation of arterioles → ↓ BP",
"<b>H1 on endothelium:</b> ↑ vascular permeability, NO release, prostacyclin release",
"<b>H2 on heart:</b> ↑ HR (positive chronotropy), ↑ force of contraction",
"<b>Net effect (large doses):</b> ↓↓ BP + ↑ HR = anaphylactic shock pattern",
]
for c in cv: S.append(B(c))
S.append(H2("Smooth Muscle & Other Effects"))
sm = [
"<b>Bronchospasm (H1):</b> Powerful bronchoconstriction. Guinea pig = highly sensitive to histamine bronchoconstriction.",
"<b>GI smooth muscle (H1):</b> Contraction → diarrhea, colic",
"<b>Gastric acid (H2):</b> Most potent physiological stimulant of gastric acid secretion via ECL cells",
"<b>Uterus:</b> Contracts in some species; variable in humans",
"<b>Pain & Itch:</b> H1 stimulates sensory nerve endings → pruritus (itch), pain at high concentrations",
"<b>Adrenal medulla:</b> Stimulates adrenaline release",
]
for s in sm: S.append(B(s))
S.append(sp(0.2))
S.append(Tip("Gastric acid secretion: Histamine (H2) > Gastrin > Acetylcholine (muscarinic). H2 is the MOST POTENT physiological stimulant."))
S.append(PageBreak())
# ============================================================
# SECTION 4: H1 ANTIHISTAMINES
# ============================================================
S.append(H1("4. H1 ANTIHISTAMINES — FIRST & SECOND GENERATION"))
S.append(sp(0.2))
S.append(H2("Mechanism of Action"))
S.append(P("H1 antihistamines act as <b>competitive antagonists</b> (and inverse agonists) at H1 receptors on smooth muscle, endothelium, and sensory nerves. They do NOT block histamine release. They block the EFFECTS of already-released histamine at H1 receptors."))
S.append(Key("Antihistamines compete with histamine for H1 receptors. They do NOT prevent histamine release, do NOT block H2 effects (gastric acid)."))
S.append(sp(0.2))
S.append(H2("Generation 1 vs Generation 2 — Side-by-Side Comparison"))
S.append(tbl(
["Feature", "1st Generation (Classic)", "2nd Generation (Non-Sedating)"],
[
["BBB Penetration", "High (lipophilic) → CNS effects", "Low (hydrophilic / P-gp efflux)"],
["Sedation", "Marked sedation (H1 blockade in CNS)\nUseful as a sleep aid", "Minimal to no sedation"],
["Anticholinergic effects", "YES — dry mouth, urinary retention,\nconstipation, blurred vision, tachycardia", "NO anticholinergic effects"],
["Anti-alpha1 effects", "YES — postural hypotension", "NO"],
["Anti-serotonin effects", "Some (cyproheptadine, promethazine)", "NO"],
["Local anesthetic effect", "YES (membrane stabilizing)", "NO"],
["Duration of action", "4–6 hours (short)", "12–24 hours (long)"],
["Tolerance / tachyphylaxis", "Develops with prolonged use", "Less likely"],
["Use in pregnancy", "Chlorpheniramine considered safe\nPromethazine for morning sickness", "Loratadine/cetirizine (limited data)"],
["Examples", "Chlorpheniramine, Diphenhydramine,\nPromethazine, Hydroxyzine,\nCyproheptadine, Dimenhydrinate,\nMeclizine", "Loratadine, Desloratadine,\nCetirizine, Levocetirizine,\nFexofenadine, Rupatadine"],
],
[4.5*cm, 5.5*cm, 6.5*cm]
))
S.append(sp(0.2))
S.append(H2("Important Individual Drugs — 1st Generation"))
drugs1 = [
"<b>Chlorpheniramine (Chlorphenamine):</b> Most commonly used. Moderate sedation. Often found in cold formulations. Safe in pregnancy.",
"<b>Diphenhydramine:</b> Highly sedating. Also antitussive, antipruritic, antiemetic, motion sickness. OTC sleep aid.",
"<b>Promethazine:</b> Phenothiazine H1 blocker. Strong antiemetic (D2 + H1 block). Morning sickness, postoperative nausea, motion sickness. Anticholinergic + antiserotonin.",
"<b>Hydroxyzine:</b> Anxiolytic properties (used pre-operatively). Pruritus, urticaria, anxiety.",
"<b>Cyproheptadine:</b> H1 blocker + serotonin antagonist. Used for: appetite stimulant (via 5-HT blockade → ↑ appetite), cold urticaria, serotonin syndrome adjunct, carcinoid syndrome.",
"<b>Dimenhydrinate / Meclizine:</b> Motion sickness, vertigo, morning sickness (dimenhydrinate = diphenhydramine + 8-chlorotheophylline).",
"<b>Ketotifen:</b> H1 blocker + mast cell stabilizer. Used for allergic asthma and conjunctivitis.",
]
for d in drugs1: S.append(B(d))
S.append(sp(0.2))
S.append(H2("Important Individual Drugs — 2nd Generation"))
drugs2 = [
"<b>Cetirizine:</b> Active metabolite of hydroxyzine. Mild sedation (borderline 2nd gen). 24h dosing. Good for urticaria, rhinitis.",
"<b>Levocetirizine:</b> R-enantiomer of cetirizine. More potent, less sedation.",
"<b>Loratadine:</b> Non-sedating. Metabolized to desloratadine (active). 24h.",
"<b>Desloratadine:</b> Active metabolite of loratadine. Very potent, safe, no sedation.",
"<b>Fexofenadine:</b> Active metabolite of terfenadine. Zero CNS penetration. No cardiac QT prolongation (unlike parent drug terfenadine). Safe.",
"<b>Rupatadine:</b> H1 blocker + PAF antagonist. Useful in chronic spontaneous urticaria.",
"<b>Bilastine / Mizolastine:</b> Newer 2nd gen agents with rapid onset.",
]
for d in drugs2: S.append(B(d))
S.append(sp(0.2))
S.append(H2("Clinical Uses of H1 Antihistamines"))
S.append(tbl(
["Clinical Use", "Preferred Drug(s)", "Notes"],
[
["Allergic rhinitis", "Cetirizine, Levocetirizine, Loratadine", "2nd gen preferred for daytime use; 1st gen if sedation acceptable"],
["Urticaria & angioedema", "Cetirizine, Loratadine (chronic)\nChlorpheniramine (acute)", "Epinephrine for severe angioedema"],
["Anaphylaxis (adjunct)", "IV/IM Chlorpheniramine or Diphenhydramine", "Epinephrine is the MAINSTAY; antihistamines are ADJUNCTS only"],
["Motion sickness / vertigo", "Dimenhydrinate, Meclizine, Promethazine", "Given 30–60 min before travel"],
["Morning sickness (pregnancy)", "Promethazine, Dimenhydrinate, Doxylamine", "Doxylamine + B6 (Diclegis) FDA-approved"],
["Pruritus / atopic dermatitis", "Hydroxyzine (sedating), Cetirizine", "Sedating 1st gen useful at night"],
["Appetite stimulation", "Cyproheptadine", "Via serotonin antagonism"],
["Cold urticaria", "Cyproheptadine", "H1 + 5-HT block effective here"],
["Insomnia (OTC)", "Diphenhydramine, Doxylamine", "Tolerance develops rapidly"],
["Pre-op sedation/anxiolysis", "Hydroxyzine, Promethazine", "Also reduces post-op nausea"],
],
[4.5*cm, 4.5*cm, 7.5*cm]
))
S.append(sp(0.2))
S.append(H2("Adverse Effects of H1 Antihistamines"))
adr = [
"<b>CNS (1st gen):</b> Sedation, drowsiness, dizziness, impaired cognitive function, paradoxical excitation in children",
"<b>Anticholinergic (1st gen):</b> Dry mouth/eyes, urinary retention, constipation, blurred vision, tachycardia",
"<b>GI:</b> Nausea, epigastric distress (give with food)",
"<b>Cardiac (old 2nd gen - terfenadine, astemizole):</b> QT prolongation → Torsades de pointes (withdrawn from market)",
"<b>Teratogenicity:</b> Generally safe; avoid in first trimester when possible",
]
for a in adr: S.append(B(a))
S.append(sp(0.2))
S.append(Tip("Terfenadine and Astemizole were withdrawn because of fatal cardiac arrhythmias (QT prolongation). Their active metabolites (fexofenadine and norastemizole) are safe and still used."))
S.append(Mem("1st gen H1 blockers: <b>SAD ACT</b> = <b>S</b>edation, <b>A</b>nticholinergic, <b>D</b>uration short, <b>A</b>ntimotion, <b>C</b>NS effects, <b>T</b>olerance develops"))
S.append(PageBreak())
# ============================================================
# SECTION 5: H2 BLOCKERS
# ============================================================
S.append(H1("5. H2 RECEPTOR ANTAGONISTS (H2 BLOCKERS)"))
S.append(sp(0.2))
S.append(H2("Mechanism"))
S.append(P("H2 blockers competitively antagonize histamine at <b>H2 receptors on gastric parietal cells</b> → inhibit adenylyl cyclase → ↓ cAMP → ↓ acid secretion. They also block histamine-potentiated secretion by gastrin and ACh."))
S.append(sp(0.2))
S.append(tbl(
["Drug", "Potency vs Cimetidine", "Duration", "Special Features", "Dose"],
[
["Cimetidine\n(Prototype)", "1x (reference)", "6–8 h", "• CYP inhibitor (warfarin, theophylline, phenytoin interactions)\n• Anti-androgenic: gynaecomastia, impotence, galactorrhoea\n• Crosses BBB: confusion in elderly\n• Inhibits tubular creatinine secretion → ↑ serum creatinine (false reading)", "400 mg BD"],
["Ranitidine", "4–10x", "8–12 h", "• Fewer drug interactions\n• No antiandrogenic effects\n• Better tolerated\n• (Withdrawn in 2020 due to NDMA contamination)", "150 mg BD"],
["Famotidine", "20–50x", "12 h", "• Most potent H2 blocker\n• No anti-androgenic effects\n• Very few drug interactions\n• Once daily possible", "20–40 mg OD"],
["Nizatidine", "10x", "12 h", "• Similar to ranitidine without liver metabolism issues\n• Bioavailability ~100%", "150 mg BD"],
],
[2.5*cm, 3*cm, 2*cm, 7.5*cm, 2*cm]
))
S.append(sp(0.2))
S.append(H2("Uses of H2 Blockers"))
h2uses = [
"Peptic ulcer disease (duodenal > gastric) — short-term treatment",
"Gastroesophageal reflux disease (GERD) — mild to moderate",
"Zollinger-Ellison syndrome (less effective than PPIs)",
"Stress ulcer prophylaxis in ICU patients",
"Adjunct in anaphylaxis (with H1 blocker) — blocks histamine-mediated hypotension",
]
for u in h2uses: S.append(B(u))
S.append(sp(0.2))
S.append(Tip("Cimetidine is the prototype H2 blocker with the most drug interactions (CYP1A2, 2C9, 2D6, 3A4 inhibitor) and anti-androgenic effects. Every pharmacology exam tests this!"))
S.append(PageBreak())
# ============================================================
# SECTION 6: H3 & H4
# ============================================================
S.append(H1("6. H3 AND H4 RECEPTOR PHARMACOLOGY"))
S.append(sp(0.2))
S.append(H2("H3 Receptors"))
h3 = [
"<b>Location:</b> Presynaptic nerve terminals in CNS (histaminergic neurons) and peripheral nervous system",
"<b>Function:</b> Autoreceptor — when histamine binds H3, it inhibits its own further release (negative feedback). Also heteroceptor — modulates release of ACh, dopamine, serotonin, norepinephrine, substance P.",
"<b>Signal:</b> Gi-coupled → ↓ cAMP → ↓ neuronal activity",
"<b>H3 BLOCKERS (Inverse agonists):</b> Pitolisant (Wakix) — approved for <b>narcolepsy with cataplexy</b>. Blocks H3 autoreceptor → ↑ histamine release in wake-promoting areas.",
"<b>H3 AGONISTS:</b> Experimental; reduce gastric acid, reduce neurogenic inflammation",
]
for h in h3: S.append(B(h))
S.append(sp(0.2))
S.append(H2("H4 Receptors"))
h4 = [
"<b>Location:</b> Hematopoietic cells — mast cells, eosinophils, neutrophils, dendritic cells, T-cells",
"<b>Function:</b> Chemotaxis of eosinophils and mast cells; immune modulation",
"<b>Signal:</b> Gi-coupled",
"<b>Clinical interest:</b> H4 antagonists being studied for allergic inflammation, asthma, atopic dermatitis",
]
for h in h4: S.append(B(h))
S.append(sp(0.2))
S.append(Tip("Pitolisant (H3 blocker) for narcolepsy — remember it is an INVERSE AGONIST at H3 receptors. This is a newer high-yield drug."))
S.append(PageBreak())
# ============================================================
# SECTION 7: SEROTONIN (5-HT)
# ============================================================
S.append(H1("7. SEROTONIN (5-HYDROXYTRYPTAMINE / 5-HT)"))
S.append(sp(0.2))
S.append(H2("Synthesis & Storage"))
S.append(P("<b>Precursor:</b> L-Tryptophan (essential amino acid)"))
S.append(P("<b>Pathway:</b> L-Tryptophan → [Tryptophan hydroxylase] → 5-Hydroxytryptophan (5-HTP) → [Aromatic L-amino acid decarboxylase] → <b>5-HT (Serotonin)</b>"))
S.append(P("<b>Inactivation:</b> Reuptake by SERT (serotonin transporter) → oxidative deamination by MAO-A → 5-HIAA (5-hydroxyindoleacetic acid) excreted in urine. ↑ urinary 5-HIAA is a diagnostic marker for <b>carcinoid syndrome</b>."))
S.append(sp(0.1))
S.append(H2("Distribution in the Body"))
dist = [
"<b>~95% in the GI tract:</b> Enterochromaffin (EC) cells of gut mucosa — released in response to gut distension → triggers peristaltic reflex",
"<b>~3–4% in platelets:</b> Stored but not synthesized in platelets. Taken up from plasma by SERT on platelets. Released on platelet activation → causes vasoconstriction + platelet aggregation.",
"<b>~1–2% in CNS:</b> Serotonergic neurons in raphe nuclei of brainstem. Regulates mood, sleep, appetite, thermoregulation, sexual behavior, pain perception.",
]
for d in dist: S.append(B(d))
S.append(sp(0.2))
S.append(H2("Serotonin Receptors — The 7 Families"))
S.append(tbl(
["Receptor", "Type / Signal", "Location", "Effect", "Drug Relevance"],
[
["5-HT1\n(A, B, D, E, F)", "Gi → ↓cAMP", "Brain raphe\nBlood vessels (D)\nCNS (A)", "↓ neuronal firing\n5-HT1A: anxiolysis, sleep\n5-HT1B/D: intracranial vasoconstriction", "Buspirone (1A anxiolytic)\nTriptans: Sumatriptan (1B/1D) for migraine\nLasmiditan (1F) for migraine"],
["5-HT2\n(A, B, C)", "Gq → ↑IP3/DAG → ↑Ca²⁺", "Platelets\nSmooth muscle\nCNS (2A, 2C)", "2A: vasoconstriction, platelet aggregation, bronchoconstriction\n2B: cardiac valvulopathy (if activated chronically)\n2C: appetite suppression (CNS)", "Cyproheptadine (2A antagonist)\nClozapine, ketanserin (2A antagonist)\n(Old weight-loss drugs: 2C agonists — withdrawn)"],
["5-HT3", "Ion channel\n(Na+/K+)", "GI enteric neurons\nCTZ/vomiting center\nPain fibers", "Depolarizes neurons\n→ nausea/vomiting\n→ gut motility\n→ pain sensitization", "<b>Ondansetron, Granisetron, Palonosetron</b> (5-HT3 antagonists) — antiemetics"],
["5-HT4", "Gs → ↑cAMP", "GI smooth muscle", "↑ gut motility\n↑ gastric emptying\n(prokinetic effect)", "Mosapride, Cisapride, Metoclopramide (partial)\nProkinetic agents"],
["5-HT5, 6, 7", "Various", "CNS mainly", "Cognition, sleep,\nthermorgulation, mood", "Targets for antidepressants,\nantipsychotics (research)"],
],
[2*cm, 3*cm, 3*cm, 4*cm, 4.5*cm]
))
S.append(sp(0.2))
S.append(PageBreak())
# ============================================================
# SECTION 8: 5-HT AGONISTS & ANTAGONISTS
# ============================================================
S.append(H1("8. SEROTONIN AGONISTS & ANTAGONISTS — KEY DRUGS"))
S.append(sp(0.2))
S.append(H2("A. TRIPTANS — for Acute Migraine (5-HT1B/1D Agonists)"))
S.append(P("Triptans are the gold-standard for acute migraine attacks. They selectively activate 5-HT1B receptors on intracranial blood vessels → vasoconstriction of dilated intracranial arteries, and 5-HT1D receptors on trigeminal nerve terminals → inhibit release of inflammatory neuropeptides (CGRP, Substance P)."))
S.append(tbl(
["Triptan", "Notes"],
[
["Sumatriptan (prototype)", "Subcutaneous most effective; also nasal spray, oral. Short half-life ~2h. Does NOT cross BBB. First marketed triptan."],
["Rizatriptan, Zolmitriptan", "Oral; cross BBB better; also nasal spray available for zolmitriptan"],
["Naratriptan, Frovatriptan", "Longer half-life; fewer recurrences but slower onset"],
["Eletriptan", "High potency; significant first-pass hepatic metabolism"],
["Lasmiditan", "5-HT1F agonist (NOT a triptan!); no vasoconstriction; safe in cardiovascular disease"],
],
[4*cm, 12.5*cm]
))
S.append(sp(0.1))
S.append(Key("Triptans are CONTRAINDICATED in: ischemic heart disease, Prinzmetal's angina, uncontrolled hypertension, previous stroke/TIA, and hemiplegic/basilar migraine. Also do not give within 24h of ergotamine."))
S.append(sp(0.2))
S.append(H2("B. BUSPIRONE — 5-HT1A Partial Agonist"))
bus = [
"<b>Use:</b> Generalized anxiety disorder (GAD) — non-benzodiazepine anxiolytic",
"<b>Mechanism:</b> Partial agonist at 5-HT1A presynaptic receptors → ↓ serotonin synthesis & release; also weak D2 partial agonism",
"<b>Onset:</b> Delayed 2–4 weeks (not for acute anxiety)",
"<b>ADRs:</b> Dizziness, nausea, headache. NO sedation, NO addiction, NO withdrawal",
"<b>Advantage over benzodiazepines:</b> No dependence, no cognitive impairment, safe in the elderly",
]
for b in bus: S.append(B(b))
S.append(sp(0.2))
S.append(H2("C. ONDANSETRON & 5-HT3 ANTAGONISTS (Setrons)"))
S.append(P("5-HT3 receptors in CTZ and GI tract mediate nausea and vomiting. Blocking them prevents chemo-induced, post-op, and radiation-induced emesis."))
S.append(tbl(
["Drug", "Half-life", "Clinical Use", "Notes"],
[
["Ondansetron", "~4 h", "CINV, PONV, radiation-induced N/V", "IV/oral/ODT; most widely used"],
["Granisetron", "~9 h", "CINV", "IV or patch form (Sancuso)"],
["Palonosetron", "~40 h", "Delayed CINV (best for this)", "Most potent; high receptor affinity"],
["Dolasetron", "~8 h", "PONV, CINV", "Prodrug → hydrodolasetron"],
["Ramosetron", "~9 h", "IBS-D, CINV", "Also approved for IBS with diarrhea"],
],
[3.5*cm, 2.5*cm, 5.5*cm, 5*cm]
))
S.append(sp(0.1))
S.append(Tip("Ondansetron ADR: headache, constipation, QT prolongation (high dose). Unlike metoclopramide, NO extrapyramidal side effects (no D2 blockade)."))
S.append(sp(0.2))
S.append(H2("D. 5-HT4 AGONISTS — Prokinetics"))
pk = [
"<b>Mosapride:</b> Selective 5-HT4 agonist (+ 5-HT3 antagonist). GERD, gastroparesis. Safer than cisapride (no cardiac effects).",
"<b>Prucalopride:</b> Highly selective 5-HT4 agonist. Chronic idiopathic constipation in women.",
"<b>Cisapride (withdrawn):</b> 5-HT4 agonist. QT prolongation → cardiac arrhythmias. Withdrawn from market.",
"<b>Metoclopramide:</b> D2 + 5-HT4 agonist + 5-HT3 antagonist. Prokinetic + antiemetic. ADR: extrapyramidal effects (tardive dyskinesia with long use).",
]
for p in pk: S.append(B(p))
S.append(sp(0.2))
S.append(H2("E. KEY SEROTONIN ANTAGONISTS"))
S.append(tbl(
["Drug", "Receptor Blocked", "Clinical Use"],
[
["Cyproheptadine", "H1 + 5-HT2A + muscarinic", "Appetite stimulant, cold urticaria, serotonin syndrome (mild), carcinoid diarrhea, prophylaxis in migraine"],
["Methysergide", "5-HT2 + partial 5-HT1 agonist", "Migraine prophylaxis (historical). ADR: retroperitoneal fibrosis (long-term use) — limit to 6 months"],
["Ketanserin", "5-HT2A + alpha-1", "Antihypertensive, Raynaud's phenomenon"],
["Ondansetron, Granisetron", "5-HT3", "Antiemetics (see above)"],
["Clozapine, Olanzapine", "5-HT2A + D2", "Atypical antipsychotics — also reduce EPS via 5-HT2A blockade"],
],
[3.5*cm, 4.5*cm, 8.5*cm]
))
S.append(sp(0.2))
S.append(Tip("Methysergide causes retroperitoneal fibrosis — classic exam side effect. Must have drug holidays every 6 months."))
S.append(PageBreak())
# ============================================================
# SECTION 9: ERGOT ALKALOIDS
# ============================================================
S.append(H1("9. ERGOT ALKALOIDS"))
S.append(sp(0.2))
S.append(H2("Introduction"))
S.append(P("<b>Ergot</b> is a fungus (<i>Claviceps purpurea</i>) that infects rye and other grains. Its alkaloids have complex pharmacology — they are partial agonists/antagonists at 5-HT, dopamine, and alpha-adrenergic receptors."))
S.append(P("<b>Ergotism:</b> Historical poisoning from contaminated grain. Two forms: (1) Gangrenous — vasoconstriction → gangrene of extremities (St. Anthony's Fire); (2) Convulsive — CNS excitation, seizures."))
S.append(sp(0.2))
S.append(tbl(
["Drug", "Main Actions", "Clinical Use", "Key ADRs"],
[
["Ergotamine\n(+ Caffeine = Cafergot)", "Partial agonist at 5-HT1B/1D\nPotent vasoconstrictor\n(direct + 5-HT2 mediated)", "Acute migraine (now replaced by triptans)\nPrinted as 'vasoconstrictive' migraine treatment", "Nausea/vomiting (add antiemetic)\nPeripheral vasospasm, gangrene\nErgotism with overuse\nCI: pregnancy, vascular disease"],
["Dihydroergotamine\n(DHE)", "Similar to ergotamine but LESS vasoconstrictive\nAlpha-adrenergic blocker (strong)\n5-HT1B/1D agonist", "Acute migraine (IV/SC/nasal spray)\nOrthostatic hypotension (oral - vasoconstriction in veins)", "Less emesis than ergotamine\nNasal: local irritation\nCI: same as ergotamine"],
["Ergometrine\n(Ergonovine /\nMethylergometrine)", "Potent uterine stimulant (oxytocic)\nActs on alpha receptors + 5-HT receptors in uterus\nCauses SUSTAINED uterine contraction", "<b>Postpartum hemorrhage (PPH)</b> — MOST IMPORTANT USE\n3rd stage of labor to prevent PPH\nManagement of uterine atony\nNo use in migraine (unlike ergotamine)", "Sustained uterine tetany (CI in 1st & 2nd stage of labor)\nVasoconstriction → HTN\nCI in hypertension, pre-eclampsia, Raynaud's"],
["Bromocriptine", "Potent D2 receptor agonist\n(and partial 5-HT2 antagonist)", "Parkinson's disease\nHyperprolactinaemia\nAcromegaly\nSuppression of lactation\nNeuroleptic malignant syndrome\nType 2 diabetes (Cycloset)", "Nausea, vomiting, dizziness\nOrthostatic hypotension\nDyskinesia (PD)\nPsychiatric: confusion, hallucinations"],
["Cabergoline", "Potent D2 agonist\nLong half-life", "Hyperprolactinaemia\nParkinson's disease", "Cardiac valvulopathy (prolonged use)\nNausea, headache"],
["Methysergide", "5-HT2A/2C antagonist\nPartial 5-HT1 agonist", "Migraine prophylaxis\nCarcinoid syndrome", "Retroperitoneal fibrosis\nPleuropulmonary fibrosis\nCardiac valvulopathy (3–4 months drug holiday)"],
],
[3*cm, 4.5*cm, 4.5*cm, 4.5*cm]
))
S.append(sp(0.2))
S.append(Key("Ergometrine (Methylergometrine) = drug of choice for postpartum hemorrhage. Bromocriptine = dopamine agonist used in Parkinson's, hyperprolactinaemia, and NMS."))
S.append(Tip("Ergot alkaloid exam question: List uses of ergot alkaloids OR describe pharmacology of ergometrine. Also: Bromocriptine for hyperprolactinaemia and NMS is frequently tested."))
S.append(PageBreak())
# ============================================================
# SECTION 10: BRADYKININ & KININS
# ============================================================
S.append(H1("10. BRADYKININ & KALLIKREIN-KININ SYSTEM"))
S.append(sp(0.2))
S.append(H2("Kinin Formation"))
S.append(P("Kinins (bradykinin, kallidin) are peptides formed from kininogens by the enzyme <b>kallikrein</b>."))
kinin_steps = [
"<b>High-Molecular-Weight Kininogen (HMWK)</b> → [Plasma Kallikrein] → <b>Bradykinin</b> (9 amino acids)",
"<b>Low-Molecular-Weight Kininogen (LMWK)</b> → [Tissue Kallikrein] → <b>Kallidin/Lys-bradykinin</b> (10 amino acids)",
"Bradykinin is rapidly degraded by <b>ACE (Kininase II)</b> and kininase I → inactive fragments",
]
for k in kinin_steps: S.append(B(k))
S.append(Note("ACE (Angiotensin Converting Enzyme) = Kininase II. It both activates angiotensin (Ang I → Ang II) AND destroys bradykinin. When ACE inhibitors are given, bradykinin accumulates → DRY COUGH."))
S.append(sp(0.2))
S.append(H2("Bradykinin Receptors & Effects"))
S.append(tbl(
["Receptor", "Signal", "Effects"],
[
["B2 (constitutive)\n— more important", "Gq → ↑IP3/DAG → ↑Ca²⁺\nAlso ↑ NO, PGE2, PGI2", "Vasodilation (most potent known)\n↑ vascular permeability → edema\nBronchoconstriction\nPAIN (sensitize nociceptors)\nHypotension"],
["B1 (inducible)\n— induced by inflammation", "Gq → ↑Ca²⁺", "Induced by inflammatory cytokines\n(IL-1β, TNF-α)\nRole in chronic inflammatory pain"],
],
[3*cm, 4.5*cm, 9*cm]
))
S.append(sp(0.2))
S.append(H2("Key Clinical Points"))
bk_clinic = [
"<b>ACE inhibitor-induced cough:</b> ACE inhibition → ↑ bradykinin in lungs → stimulate pulmonary C-fibers → dry persistent cough in 10–20% patients. Switch to ARB (does NOT affect bradykinin).",
"<b>ACE inhibitor-induced angioedema:</b> Bradykinin accumulation → angioedema of face, lips, tongue, larynx. Life-threatening if larynx involved. NOT histamine-mediated → antihistamines ineffective. Treatment: stop ACE inhibitor, icatibant (B2 antagonist) or C1-esterase inhibitor.",
"<b>Hereditary Angioedema (HAE):</b> C1-esterase inhibitor deficiency → uncontrolled kallikrein activation → excess bradykinin. NOT histamine-mediated. Treatment: icatibant, ecallantide, C1-INH concentrate.",
"<b>Bradykinin in pain:</b> Released during tissue injury; directly stimulates nociceptors and enhances sensitivity to other pain stimuli (prostaglandins, substance P).",
"<b>Icatibant:</b> Selective B2 receptor antagonist. Used for acute HAE attacks.",
"<b>Ecallantide:</b> Kallikrein inhibitor. Used for HAE.",
]
for b in bk_clinic: S.append(B(b))
S.append(sp(0.2))
S.append(Tip("ACE inhibitor cough = bradykinin accumulation in lungs. ACE inhibitor angioedema = bradykinin (NOT histamine). Use icatibant or C1-INH, NOT antihistamines. Classic exam MCQ!"))
S.append(PageBreak())
# ============================================================
# SECTION 11: PROSTAGLANDINS & THROMBOXANES
# ============================================================
S.append(H1("11. PROSTAGLANDINS & THROMBOXANES"))
S.append(sp(0.2))
S.append(H2("Eicosanoid Synthesis Pathway (MUST KNOW)"))
S.append(P("All eicosanoids are derived from <b>arachidonic acid (AA)</b>, a 20-carbon polyunsaturated fatty acid released from membrane phospholipids by <b>phospholipase A2 (PLA2)</b>."))
S.append(P("After AA release, two major enzymatic pathways diverge:"))
S.append(tbl(
["Pathway", "Enzyme", "Products", "Inhibited By"],
[
["Cyclooxygenase (COX)\npathway", "COX-1 (constitutive)\nCOX-2 (inducible in inflammation)", "Prostaglandins (PGE2, PGD2, PGF2α, PGI2)\nThromboxane A2 (TXA2)", "NSAIDs (non-selective: aspirin, ibuprofen)\nSelective COX-2 inhibitors: celecoxib, etoricoxib\nAspirin: irreversible COX inhibitor"],
["Lipoxygenase (5-LOX)\npathway", "5-Lipoxygenase (5-LOX)", "Leukotrienes (LTA4 → LTB4, LTC4, LTD4, LTE4)\nLipoxins", "Zileuton (5-LOX inhibitor for asthma)\n(No NSAID effect on this pathway)"],
],
[3.5*cm, 4*cm, 5.5*cm, 3.5*cm]
))
S.append(Note("Corticosteroids inhibit PLA2 (via lipocortin/annexin A1) → block BOTH COX and LOX pathways. NSAIDs only inhibit COX pathway."))
S.append(sp(0.2))
S.append(H2("Key Prostaglandins — Actions & Drug Use"))
S.append(tbl(
["Eicosanoid", "Source", "Receptor", "Key Actions", "Drug Use / Clinical Relevance"],
[
["PGE2", "Many tissues, especially kidney and uterus", "EP1–EP4", "Vasodilation, ↑ vascular permeability, pain sensitization, fever (CNS), uterine contraction/relaxation (dose-dependent), ↓ gastric acid, ↑ mucus (cytoprotection)", "Misoprostol (PGE1 analog): peptic ulcer, abortion, PPH, cervical ripening\nMifepristone + misoprostol = medical abortion"],
["PGI2\n(Prostacyclin)", "Vascular endothelium", "IP", "Vasodilation, ↓ platelet aggregation, bronchodilation\n(Counter-balances TXA2)", "Epoprostenol, treprostinil, iloprost: Pulmonary arterial hypertension, Raynaud's, thromboangiitis obliterans"],
["TXA2\n(Thromboxane A2)", "Platelets", "TP", "Vasoconstriction, platelet aggregation\n(Short half-life ~30 sec in blood)", "Aspirin irreversibly inhibits COX-1 in platelets → ↓ TXA2 → antiplatelet effect\n(Platelets cannot regenerate COX)"],
["PGD2", "Mast cells, brain", "DP1, DP2", "Vasodilation, ↑ vascular permeability (allergic reactions), bronchoconstriction, CNS sleep regulation", "Nasal congestion in allergic rhinitis\nDP2 (CRTH2) antagonists: investigational for allergy"],
["PGF2α", "Uterus, GI, lung", "FP", "Uterine contraction, vasoconstriction, bronchoconstriction, luteolysis", "Latanoprost, bimatoprost (PGF2α analogs): Glaucoma (↑ aqueous outflow)\nCarboprost (15-methyl-PGF2α): PPH, abortion"],
["PGE1\n(Alprostadil)", "Many tissues", "EP2/EP4", "Vasodilation, ↑ cAMP in smooth muscle", "Erectile dysfunction (intracavernosal injection)\nPatent ductus arteriosus (maintain in newborns with ductal-dependent CHD)\nPeripheral vascular disease"],
],
[2.5*cm, 3*cm, 2*cm, 5*cm, 4*cm]
))
S.append(sp(0.2))
S.append(Tip("Alprostadil (PGE1): 2 uses tested = (1) maintain patent ductus arteriosus in newborns with cyanotic CHD, and (2) erectile dysfunction. Misoprostol = PGE1 analog for peptic ulcer + termination of pregnancy."))
S.append(PageBreak())
# ============================================================
# SECTION 12: LEUKOTRIENES
# ============================================================
S.append(H1("12. LEUKOTRIENES"))
S.append(sp(0.2))
S.append(H2("Formation"))
S.append(P("Formed from arachidonic acid via the <b>5-LOX pathway</b>. 5-LOX + <b>5-LOX-activating protein (FLAP)</b> converts AA to LTA4."))
lts = [
"<b>LTA4</b> → [LTA4 hydrolase] → <b>LTB4</b> (dihydroxy leukotriene)",
"<b>LTA4</b> + glutathione → [LTC4 synthase] → <b>LTC4</b> → [Peptidases] → <b>LTD4</b> → <b>LTE4</b>",
"LTC4, LTD4, LTE4 = <b>Cysteinyl leukotrienes (CysLTs)</b> — previously called SRS-A (Slow Reacting Substance of Anaphylaxis)",
]
for l in lts: S.append(B(l))
S.append(sp(0.2))
S.append(tbl(
["Leukotriene", "Receptor", "Key Actions", "Potency vs Histamine"],
[
["LTB4", "BLT1, BLT2", "Powerful chemotaxis of neutrophils, eosinophils\nActivates PMNs → inflammatory response", "No direct bronchoconstriction"],
["LTC4, LTD4, LTE4\n(Cysteinyl LTs)", "CysLT1, CysLT2", "Bronchoconstriction (1000x more potent than histamine)\nMucus hypersecretion\n↑ vascular permeability\nEosinophil recruitment", "~1000x histamine for bronchoconstriction"],
],
[3*cm, 3*cm, 6.5*cm, 4*cm]
))
S.append(sp(0.2))
S.append(H2("Leukotriene Modifiers in Clinical Use"))
S.append(P("(See also Respiratory Pharmacology guide for complete detail)"))
ltm = [
"<b>Zileuton:</b> 5-LOX inhibitor → blocks ALL leukotrienes (LTB4 + cysteinyl LTs). Oral, 4x daily. Hepatotoxic, inhibits CYP1A2 (↑ theophylline).",
"<b>Montelukast:</b> CysLT1 receptor antagonist → blocks LTC4/D4/E4. Oral once daily (evening). Safe, well-tolerated. Children ≥2 years. Also for allergic rhinitis.",
"<b>Zafirlukast:</b> CysLT1 receptor antagonist. Oral twice daily on empty stomach. CYP2C9 inhibitor (warfarin interaction). Churg-Strauss syndrome association (rare).",
"Indication: mild-moderate asthma, aspirin-sensitive asthma, exercise-induced asthma, allergic rhinitis.",
]
for l in ltm: S.append(B(l))
S.append(sp(0.2))
S.append(Tip("CysLTs were formerly called SRS-A (Slow Reacting Substance of Anaphylaxis) — classic MCQ. They are 1000x more potent than histamine as bronchoconstrictors."))
S.append(PageBreak())
# ============================================================
# SECTION 13: PAF
# ============================================================
S.append(H1("13. PLATELET ACTIVATING FACTOR (PAF)"))
S.append(sp(0.2))
S.append(H2("Structure & Source"))
S.append(P("PAF is a <b>phospholipid autocoid</b> (1-O-alkyl-2-acetyl-sn-glycero-3-phosphocholine). Synthesized from membrane phospholipids by PLA2 + acetyltransferase. Produced by platelets, macrophages, neutrophils, eosinophils, mast cells, endothelial cells."))
S.append(H2("Effects"))
paf = [
"<b>Platelet activation:</b> Potent platelet aggregation (hence the name) → thrombosis",
"<b>Bronchoconstriction:</b> 100–1000x more potent than histamine",
"<b>Hypotension:</b> Vasodilation + ↑ vascular permeability → shock",
"<b>Inflammatory:</b> Chemotaxis of eosinophils, neutrophils; primes neutrophils for respiratory burst",
"<b>GI effects:</b> Ulcerogenic; contributes to necrotizing enterocolitis in neonates",
"<b>Uterus:</b> Involved in parturition signaling",
]
for p in paf: S.append(B(p))
S.append(sp(0.2))
S.append(H2("PAF Receptor Antagonists"))
S.append(P("Rupatadine (H1 + PAF antagonist), ginkgolide B (natural PAF antagonist), various research compounds. No pure PAF antagonist is clinically established yet."))
S.append(sp(0.2))
S.append(Tip("PAF is the most potent known bronchoconstrictor and platelet aggregator. Its role in anaphylactic shock and asthma is high-yield."))
S.append(PageBreak())
# ============================================================
# SECTION 14: RAPID REVISION
# ============================================================
S.append(H1("14. RAPID REVISION — EXAM-READY TABLES & MNEMONICS"))
S.append(sp(0.2))
S.append(H2("Master Comparison: All Autocoids at a Glance"))
S.append(tbl(
["Autocoid", "Synthesized from", "Key Enzyme", "Primary Effect", "Important Drug Interaction"],
[
["Histamine", "L-Histidine", "Histidine decarboxylase", "Bronchoconstriction (H1), Gastric acid (H2), CNS arousal (H1/H3)", "H1 blockers, H2 blockers, Epinephrine"],
["Serotonin (5-HT)", "L-Tryptophan", "Tryptophan hydroxylase\n+ AADC", "Gut motility, vasoconstriction (platelets), mood (CNS)", "SSRIs, triptans, ondansetron, MAOIs"],
["Bradykinin", "Kininogens (plasma)", "Kallikrein", "Vasodilation, pain, edema, bronchoconstriction", "ACE inhibitors (accumulate BK → cough/angioedema)"],
["PGI2 (Prostacyclin)", "Arachidonic acid (COX)", "COX + Prostacyclin synthase", "Vasodilation, ↓ platelet aggregation", "NSAIDs (↓ PGI2 → ↑ CV risk with COX-2 inhibitors)"],
["TXA2", "Arachidonic acid (COX)", "COX + TXA2 synthase", "Vasoconstriction, ↑ platelet aggregation", "Aspirin irreversibly inhibits COX in platelets"],
["Leukotrienes\n(LTC4, D4, E4)", "Arachidonic acid (5-LOX)", "5-LOX + LTC4 synthase", "Bronchoconstriction (most potent), mucus secretion", "Montelukast, zafirlukast (CysLT1 block)\nZileuton (5-LOX block)"],
["PAF", "Membrane phospholipids", "PLA2 + acetyltransferase", "Platelet aggregation, bronchoconstriction, inflammation", "Rupatadine (H1 + PAF antagonist)"],
],
[2.5*cm, 3*cm, 3.5*cm, 4*cm, 3.5*cm]
))
S.append(sp(0.3))
S.append(H2("Drug → Autocoid Interactions (High-Yield MCQs)"))
S.append(tbl(
["Scenario / Drug", "Autocoid Involved", "Effect"],
[
["ACE inhibitor (e.g., enalapril) → DRY COUGH", "Bradykinin (accumulates)", "ACE = kininase II; inhibition → ↑ bradykinin → lung C-fibers → cough"],
["ACE inhibitor → ANGIOEDEMA", "Bradykinin (accumulates)", "NOT histamine-mediated; antihistamines ineffective; use icatibant/C1-INH"],
["Morphine/Tubocurarine → urticaria/flushing", "Histamine (chemical release)", "Non-immunological direct displacement from mast cells"],
["Aspirin in sensitive patient → BRONCHOCONSTRICTION", "Leukotrienes (↑↑)", "COX inhibition → shunts AA to LOX → excess CysLTs → Samter's triad"],
["COX-2 inhibitor (celecoxib) → ↑ MI risk", "PGI2 (↓ from endothelium)", "COX-2 produces PGI2; its inhibition tips balance toward TXA2 → thrombosis"],
["Ergometrine → PPH treatment", "Serotonin/Alpha receptors", "Potent uterine contraction via alpha + 5-HT receptors in uterus"],
["Triptans in migraine", "Serotonin (5-HT1B/1D)", "Vasoconstrict intracranial arteries + inhibit trigeminal neuropeptide release"],
["Carcinoid syndrome → diagnosis", "Serotonin (↑↑)", "↑ urinary 5-HIAA is the diagnostic marker"],
["Mastocytosis → diagnosis", "Histamine (↑↑)", "↑ urinary methylhistamine and tryptase; serum tryptase"],
],
[5*cm, 4.5*cm, 7*cm]
))
S.append(sp(0.3))
S.append(H2("Mnemonics for 2nd Prof Examination"))
mnemonics = [
"<b>Histamine receptor effects by number:</b>\n<b>H1</b> = <b>B</b>ronchoconstriction + <b>I</b>tch + <b>V</b>asodilation + edema (<b>BIV</b>)\n<b>H2</b> = <b>G</b>astric acid + <b>H</b>eart rate ↑ (<b>GH</b>)\n<b>H3</b> = <b>N</b>euromodulator (inhibitory, autoreceptor)\n<b>H4</b> = <b>I</b>mmune/inflammatory cells (eosinophils, mast cells)",
"<b>1st Gen Antihistamines — 'DAMP CAP':</b>\n<b>D</b>iphenhydramine, <b>A</b>nti-cholinergic, <b>M</b>ost sedating, <b>P</b>romethazine, <b>C</b>hlorpheniramine, <b>A</b>nti-emetic, <b>P</b>arkinsonism (EPS)... all 1st gen!",
"<b>Cimetidine side effects — 'CIMETIDINE':</b>\n<b>C</b>YP inhibitor, <b>I</b>mpotence (anti-androgenic), <b>M</b>ental confusion (elderly), <b>E</b>ndocrine: gynaecomastia, <b>T</b>ubular secretion blocked (↑ creatinine)",
"<b>Ergot uses — 'PALM B':</b>\n<b>P</b>PH (ergometrine), <b>A</b>cromegaly (bromocriptine), <b>L</b>actation suppression (bromocriptine), <b>M</b>igraine (ergotamine/DHE), <b>B</b>romocriptine for Parkinson's/hyperprolactinaemia",
"<b>Serotonin syndrome triad — 'ACE':</b>\n<b>A</b>utonomic instability (fever, diaphoresis, tachycardia, BP fluctuations)\n<b>C</b>ognitive: agitation, confusion\n<b>E</b>xcitomotor: myoclonus, hyperreflexia, tremor, rigidity",
"<b>Prostaglandin clinical uses — 'Open CLAM':</b>\n<b>O</b>pen PDA (alprostadil/PGE1)\n<b>C</b>ervical ripening (misoprostol)\n<b>L</b>ower IOP in glaucoma (latanoprost/PGF2α analogs)\n<b>A</b>bortion (misoprostol)\n<b>M</b>ucus/ulcer protection (misoprostol)\n[+ PPH with carboprost]",
]
for mn in mnemonics:
S.append(Mem(mn))
S.append(sp(0.1))
S.append(sp(0.3))
S.append(HR())
S.append(sp(0.2))
S.append(Paragraph("End of Autocoid Pharmacology Guide — Best of Luck in Your 2nd Prof Examination!", ParagraphStyle(
'Footer', parent=styles['Normal'], fontSize=10.5,
textColor=NAVY, alignment=TA_CENTER, fontName='Helvetica-Bold'
)))
S.append(Paragraph("Katzung's Basic & Clinical Pharmacology (16e) | Goodman & Gilman's Pharmacological Basis of Therapeutics (14e)", ParagraphStyle(
'Src', parent=styles['Normal'], fontSize=7.5,
textColor=colors.grey, alignment=TA_CENTER, fontName='Helvetica-Oblique'
)))
doc.build(S)
print(f"✅ PDF generated: {OUTPUT_PATH}")
cd /home/daytona/workspace/respiratory-pharma && python generate_autocoid_pdf.py…
ls -lh /home/daytona/workspace/respiratory-pharma/Autocoid_Pharmacology_2Prof.pd…
Autocoid Pharmacology 2Prof
PDF Document · PDF
| # | Section | Highlights |
|---|---|---|
| 1 | What are Autocoids? | Definition + full classification table (biogenic amines, peptides, eicosanoids, gases) |
| 2 | Histamine: Synthesis & Release | L-Histidine → Histamine pathway; storage in mast cells; 4 release mechanisms |
| 3 | Histamine Receptors H1–H4 | Full receptor table + Triple Response of Lewis + cardiovascular effects |
| 4 | H1 Antihistamines | Gen 1 vs Gen 2 side-by-side comparison; all drugs with unique features; clinical uses table |
| 5 | H2 Blockers | Cimetidine vs Famotidine vs Ranitidine; CYP interactions; anti-androgenic effects |
| 6 | H3 & H4 Receptors | Pitolisant for narcolepsy; H4 in allergy |
| 7 | Serotonin (5-HT) | Synthesis from tryptophan; 5-HIAA for carcinoid; all 7 receptor families explained |
| 8 | 5-HT Agonists & Antagonists | Triptans for migraine; Buspirone for anxiety; Ondansetron (setrons); prokinetics |
| 9 | Ergot Alkaloids | Ergometrine for PPH; Bromocriptine uses; Methysergide retroperitoneal fibrosis |
| 10 | Bradykinin & Kinins | ACE inhibitor cough/angioedema mechanism; Icatibant; Hereditary Angioedema |
| 11 | Prostaglandins & TXA2 | Full COX/LOX pathway; PGI2 vs TXA2 balance; Misoprostol, Alprostadil, Latanoprost uses |
| 12 | Leukotrienes | SRS-A; LTB4 vs CysLTs; Zileuton/Montelukast/Zafirlukast differences |
| 13 | Platelet Activating Factor | Structure, effects, PAF antagonists |
| 14 | Rapid Revision | Master comparison table; high-yield drug-autocoid interactions; 6 mnemonics |
Give guide in topic of atropine posing
~/respiratory-pharma/generate_atropine_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/respiratory-pharma/Atropine_Poisoning_2Prof.pdf"
doc = SimpleDocTemplate(OUTPUT, pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Atropine Poisoning - 2nd Prof Guide")
styles = getSampleStyleSheet()
NAVY = colors.HexColor('#1b3a6b')
TEAL = colors.HexColor('#0d6e8a')
RED = colors.HexColor('#b91c1c')
ORANGE = colors.HexColor('#ea580c')
GREEN = colors.HexColor('#15803d')
LGREY = colors.HexColor('#f1f5f9')
LYELLOW= colors.HexColor('#fef9c3')
LRED = colors.HexColor('#fee2e2')
LGREEN = colors.HexColor('#dcfce7')
LORANGE= colors.HexColor('#ffedd5')
LBLUE = colors.HexColor('#dbeafe')
LPURPLE= colors.HexColor('#ede9fe')
title_s = ParagraphStyle('T', parent=styles['Title'], fontSize=26, textColor=RED,
alignment=TA_CENTER, fontName='Helvetica-Bold', spaceAfter=4)
sub_s = ParagraphStyle('S', parent=styles['Normal'], fontSize=11, textColor=NAVY,
alignment=TA_CENTER, fontName='Helvetica', spaceAfter=3)
h1_s = ParagraphStyle('H1', parent=styles['Heading1'], fontSize=14, textColor=colors.white,
fontName='Helvetica-Bold', spaceAfter=5, spaceBefore=10, backColor=NAVY,
borderPad=6, leftIndent=-6, rightIndent=-6)
h2_s = ParagraphStyle('H2', parent=styles['Heading2'], fontSize=12, textColor=NAVY,
fontName='Helvetica-Bold', spaceAfter=3, spaceBefore=8)
h3_s = ParagraphStyle('H3', parent=styles['Heading3'], fontSize=10.5, textColor=TEAL,
fontName='Helvetica-Bold', spaceAfter=2, spaceBefore=5)
body_s = ParagraphStyle('B', parent=styles['Normal'], fontSize=9.5, leading=14,
spaceAfter=3, alignment=TA_JUSTIFY, fontName='Helvetica')
bul_s = ParagraphStyle('Bul', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=2, leftIndent=14, firstLineIndent=-10, fontName='Helvetica')
tip_s = ParagraphStyle('Tip', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3, backColor=LRED, borderColor=RED,
borderWidth=1, borderPad=5, fontName='Helvetica-Bold')
key_s = ParagraphStyle('Key', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3, backColor=LYELLOW, borderColor=ORANGE,
borderWidth=1, borderPad=5, fontName='Helvetica')
mem_s = ParagraphStyle('Mem', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3, backColor=LGREEN, borderColor=GREEN,
borderWidth=1, borderPad=5, fontName='Helvetica-Oblique')
note_s = ParagraphStyle('Note', parent=styles['Normal'], fontSize=9, leading=12,
spaceAfter=3, spaceBefore=3, backColor=LBLUE, borderColor=TEAL,
borderWidth=1, borderPad=5, fontName='Helvetica-Oblique')
warn_s = ParagraphStyle('Warn', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3, backColor=LORANGE, borderColor=ORANGE,
borderWidth=1, borderPad=5, fontName='Helvetica-Bold')
purple_s = ParagraphStyle('Pur', parent=styles['Normal'], fontSize=9.5, leading=13,
spaceAfter=3, spaceBefore=3, backColor=LPURPLE, borderColor=colors.HexColor('#7c3aed'),
borderWidth=1, borderPad=5, fontName='Helvetica')
def H1(t): return Paragraph(f"<font color='white'>{t}</font>", h1_s)
def H2(t): return Paragraph(t, h2_s)
def H3(t): return Paragraph(t, h3_s)
def P(t): return Paragraph(t, body_s)
def B(t): return Paragraph(f"• {t}", bul_s)
def Tip(t): return Paragraph(f"★ EXAM TIP: {t}", tip_s)
def Key(t): return Paragraph(f"🔑 KEY POINT: {t}", key_s)
def Mem(t): return Paragraph(f"🧠 MNEMONIC: {t}", mem_s)
def Note(t):return Paragraph(f"📘 Note: {t}", note_s)
def Warn(t):return Paragraph(f"⚠ CAUTION: {t}", warn_s)
def Pur(t): return Paragraph(t, purple_s)
def HR(): return HRFlowable(width="100%",thickness=1,color=NAVY,spaceAfter=3,spaceBefore=3)
def sp(n=0.2): return Spacer(1, n*cm)
def tbl(headers, rows, widths=None, hbg=NAVY):
data = [headers]+rows
if widths is None:
widths = [doc.width/len(headers)]*len(headers)
t = Table(data, colWidths=widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0),hbg),
('TEXTCOLOR',(0,0),(-1,0),colors.white),
('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(-1,0),9),
('ALIGN',(0,0),(-1,0),'CENTER'),
('ROWBACKGROUNDS',(0,1),(-1,-1),[LGREY,colors.white]),
('FONTNAME',(0,1),(-1,-1),'Helvetica'),
('FONTSIZE',(0,1),(-1,-1),8.5),
('VALIGN',(0,0),(-1,-1),'TOP'),
('GRID',(0,0),(-1,-1),0.3,colors.HexColor('#cbd5e1')),
('LEFTPADDING',(0,0),(-1,-1),5),
('RIGHTPADDING',(0,0),(-1,-1),5),
('TOPPADDING',(0,0),(-1,-1),4),
('BOTTOMPADDING',(0,0),(-1,-1),4),
]))
return t
# ============================================================
S = []
# ===== COVER =====
S.append(sp(1.2))
S.append(Paragraph("☠ ATROPINE POISONING", title_s))
S.append(Paragraph("(Anticholinergic / Belladonna Alkaloid Poisoning)", sub_s))
S.append(sp(0.15))
S.append(HRFlowable(width="70%",thickness=3,color=RED,hAlign='CENTER'))
S.append(sp(0.15))
S.append(Paragraph("Complete Study Guide for 2nd Prof MBBS | Pharmacology & Forensic Medicine", sub_s))
S.append(sp(0.4))
toc_data = [
["📋 CONTENTS"],
["1. Introduction — What is Atropine Poisoning?"],
["2. Sources of Atropine / Belladonna Alkaloids"],
["3. Mechanism of Action of Atropine (Normal Pharmacology)"],
["4. Dose-Dependent Effects of Atropine"],
["5. Pathophysiology of Atropine Poisoning"],
["6. Classic Signs & Symptoms — The 5 Rhymes + D's"],
["7. System-Wise Features of Atropine Poisoning"],
["8. Diagnosis"],
["9. Differential Diagnosis"],
["10. Treatment / Management"],
["11. Antidote — Physostigmine (Detailed)"],
["12. Forensic Aspects (Medicolegal Points)"],
["13. Rapid Revision — Tables, Mnemonics & Exam Tips"],
]
ct = Table(toc_data, colWidths=[doc.width*0.62], hAlign='CENTER')
ct.setStyle(TableStyle([
('BACKGROUND',(0,0),(0,0),RED),
('TEXTCOLOR',(0,0),(0,0),colors.white),
('FONTNAME',(0,0),(0,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(0,0),11),
('ALIGN',(0,0),(-1,-1),'LEFT'),
('ROWBACKGROUNDS',(0,1),(0,-1),[colors.HexColor('#fef2f2'),colors.white]),
('FONTNAME',(0,1),(0,-1),'Helvetica'),
('FONTSIZE',(0,1),(0,-1),9.5),
('GRID',(0,0),(-1,-1),0.4,colors.HexColor('#fca5a5')),
('LEFTPADDING',(0,0),(-1,-1),12),
('TOPPADDING',(0,0),(-1,-1),5),
('BOTTOMPADDING',(0,0),(-1,-1),5),
]))
S.append(ct)
S.append(PageBreak())
# ============================================================
# SECTION 1: INTRODUCTION
# ============================================================
S.append(H1("1. INTRODUCTION — WHAT IS ATROPINE POISONING?"))
S.append(sp(0.2))
S.append(P("Atropine poisoning refers to the <b>toxic syndrome resulting from an overdose of atropine or any belladonna alkaloid</b>. It is characterized by a distinctive constellation of signs and symptoms caused by <b>blockade of muscarinic (M) receptors</b> throughout the body."))
S.append(P("The poisoning can occur due to:"))
intro_pts = [
"Accidental ingestion of plant sources (Datura, Atropa belladonna) — most common in children",
"Overdose of therapeutic atropine (pre-anesthetic, bradycardia treatment)",
"Deliberate (suicidal or homicidal) administration",
"Drug interactions causing cumulative anticholinergic effect (e.g., TCA + antihistamine + atropine)",
]
for p in intro_pts: S.append(B(p))
S.append(sp(0.2))
S.append(Key("Atropine poisoning = Anticholinergic toxidrome. Any drug with anticholinergic properties (antihistamines, TCAs, antipsychotics, antispasmodics) can cause the same picture."))
S.append(PageBreak())
# ============================================================
# SECTION 2: SOURCES
# ============================================================
S.append(H1("2. SOURCES OF ATROPINE / BELLADONNA ALKALOIDS"))
S.append(sp(0.2))
S.append(H2("A. Natural Plant Sources (Most Important for Forensic Exam)"))
S.append(tbl(
["Plant", "Common Name", "Family", "Active Alkaloids", "Poisonous Part"],
[
["Atropa belladonna", "Deadly Nightshade\n'Belladonna'", "Solanaceae", "Atropine\nHyoscyamine\nBelladonine", "All parts\n(berries attractive to children)"],
["Datura stramonium", "'Datura' / 'Dhatura'\nThorn Apple / Jimsonweed", "Solanaceae", "Hyoscine (Scopolamine)\nHyoscyamine\nAtropine (traces)", "All parts\n(seeds most concentrated)"],
["Datura alba", "White Datura\n'Safed Dhatura'", "Solanaceae", "Same as above", "Seeds, leaves, flowers"],
["Hyoscyamus niger", "Henbane\n'Khurasani Ajwain'", "Solanaceae", "Hyoscine\nHyoscyamine", "All parts (seeds)"],
["Mandragora officinarum", "Mandrake", "Solanaceae", "Atropine\nScopolamine", "Root, berries"],
],
[3.5*cm, 3.5*cm, 2.5*cm, 3.5*cm, 3.5*cm]
))
S.append(sp(0.2))
S.append(H2("B. Pharmaceutical Sources"))
pharma = [
"<b>Atropine sulfate injection:</b> 0.6 mg/mL — used in bradycardia, organophosphate poisoning, pre-op",
"<b>Belladonna alkaloid-containing medications:</b> Antispasmodics (hyoscine butylbromide/Buscopan), OTC cold preparations",
"<b>Eye drops:</b> Atropine 1% eye drops for cycloplegia/mydriasis",
"<b>Scopolamine patches:</b> For motion sickness — can cause toxicity especially in children",
"<b>Tricyclic antidepressants (TCAs):</b> Amitriptyline, imipramine — potent anticholinergic side effects",
"<b>First-generation antihistamines:</b> Diphenhydramine, promethazine — significant anticholinergic activity",
"<b>Antipsychotics:</b> Chlorpromazine, clozapine — anticholinergic effects",
"<b>Antiparkinsonian drugs:</b> Benztropine, trihexyphenidyl",
]
for p in pharma: S.append(B(p))
S.append(sp(0.2))
S.append(Note("Datura is the most important source in Indian forensic examinations. It is widely used for criminal purposes (robbery, rape) — seeds mixed with food/pan-beedi. All parts are poisonous; seeds have the highest concentration."))
S.append(PageBreak())
# ============================================================
# SECTION 3: MECHANISM
# ============================================================
S.append(H1("3. MECHANISM OF ACTION OF ATROPINE (NORMAL PHARMACOLOGY)"))
S.append(sp(0.2))
S.append(H2("Basic Mechanism"))
S.append(P("Atropine is a <b>tertiary amine belladonna alkaloid</b> that acts as a <b>competitive (reversible) antagonist</b> at muscarinic acetylcholine receptors (M1, M2, M3, M4, M5)."))
S.append(P("Since acetylcholine (ACh) is the neurotransmitter of the <b>parasympathetic nervous system</b>, blockade of its receptors produces effects opposite to parasympathetic stimulation — i.e., sympathomimetic-like (but via removal of parasympathetic tone, NOT direct sympathetic activation)."))
S.append(sp(0.1))
S.append(tbl(
["Muscarinic Receptor Subtype", "Location", "Effect of ACh", "Effect of Atropine (Blockade)"],
[
["M1", "Gastric glands\nCNS (cortex, limbic)\nSympathetic ganglia", "↑ Gastric acid, CNS excitation", "↓ Acid secretion, sedation/excitement (CNS)"],
["M2", "SA node\nAV node\nAtria\nPresynaptic", "↓ HR (bradycardia)\n↓ conduction velocity", "↑↑ Heart rate (tachycardia)\n(major cardiac effect of atropine)"],
["M3", "Smooth muscle (bronchi, GI, bladder, iris)\nExocrine glands\nVascular endothelium", "Bronchoconstriction, GI motility, miosis, salivation, lacrimation, urination\n↑ NO → vasodilation", "Bronchodilation\nDry mouth/skin\nMydriasis\nUrinary retention\nConstipation\nDry eyes"],
["M4 / M5", "CNS (striatum, etc.)", "Modulation of dopamine, CNS effects", "CNS stimulation (low dose) → depression/coma (high dose)"],
],
[3*cm, 3.5*cm, 4*cm, 6*cm]
))
S.append(sp(0.2))
S.append(H2("Key Pharmacokinetic Facts"))
pk = [
"<b>Chemistry:</b> Tertiary amine → crosses the blood-brain barrier (BBB) → central effects",
"<b>Route:</b> Well absorbed orally, through mucous membranes, skin (especially children)",
"<b>Half-life:</b> ~2–5 hours",
"<b>Metabolism:</b> Hepatic; some excreted unchanged in urine",
"<b>Duration of action:</b> Systemic effects 4–6 hours; topical eye effects 7–14 days (cycloplegia)",
"<b>Sensitivity:</b> Children are MUCH more sensitive than adults — toxic dose is much lower",
"<b>Organ sensitivity order (most to least):</b> Bronchial/salivary glands > Heart > Eye > GI/GU smooth muscle",
]
for p in pk: S.append(B(p))
S.append(sp(0.2))
S.append(Tip("Atropine crosses the BBB (tertiary amine) → CNS effects. Contrast with ipratropium (quaternary ammonium) which does NOT cross BBB → no CNS effects — classic MCQ."))
S.append(PageBreak())
# ============================================================
# SECTION 4: DOSE-DEPENDENT EFFECTS
# ============================================================
S.append(H1("4. DOSE-DEPENDENT EFFECTS OF ATROPINE"))
S.append(sp(0.2))
S.append(P("Atropine shows a clear <b>dose-response relationship</b>. As the dose increases from therapeutic to toxic, different organ systems are progressively affected:"))
S.append(sp(0.1))
S.append(tbl(
["Dose of Atropine", "Effects Seen", "Clinical Stage"],
[
["0.5 mg\n(very low)", "• Slight ↓ HR (paradoxical bradycardia — M1 block on inhibitory prejunctional neurons → ↑ ACh release)\n• Slight dryness of mouth\n• Mild sedation", "Therapeutic/sub-therapeutic"],
["1–2 mg\n(low therapeutic)", "• ↑ HR (M2 block at SA node)\n• Dry mouth (xerostomia)\n• Reduced sweating\n• Mild mydriasis", "Therapeutic range\n(vagolytic dose)"],
["2–5 mg\n(moderate)", "• Marked tachycardia\n• Pronounced dry mouth\n• Mydriasis + cycloplegia\n• ↓ GI motility (constipation)\n• Urinary retention starts\n• Skin flushed, hot, dry", "Upper therapeutic to early toxic"],
["5–10 mg\n(toxic)", "• Severe tachycardia (HR 120–160)\n• Hyperthermia (anhidrosis)\n• Restlessness, excitability, hallucinations\n• Severe mydriasis + photophobia\n• Dysarthria, confusion, disorientation\n• Complete urinary retention", "TOXIC — anticholinergic syndrome"],
[">10 mg\n(severely toxic)", "• Delirium, wild excitement, agitation\n• Seizures, coma\n• Respiratory depression\n• Circulatory failure\n• Hyperpyrexia (esp. dangerous in children)\n• DEATH", "LIFE-THREATENING"],
],
[3*cm, 9.5*cm, 4*cm]
))
S.append(sp(0.2))
S.append(Key("Paradoxical bradycardia at VERY LOW doses (0.5 mg) is due to M1 presynaptic blockade → enhanced ACh release briefly dominates. This is a very common MCQ!"))
S.append(Tip("Fatal dose of atropine in adults: ~10 mg. Fatal dose in children: 2 mg (much lower — children far more sensitive)."))
S.append(PageBreak())
# ============================================================
# SECTION 5: PATHOPHYSIOLOGY
# ============================================================
S.append(H1("5. PATHOPHYSIOLOGY OF ATROPINE POISONING"))
S.append(sp(0.2))
S.append(H2("Why Atropine is Dangerous in Overdose"))
path = [
"<b>Hyperthermia (Temperature ↑↑):</b> Sweat glands are blocked by atropine → no sweating → body cannot lose heat → dangerous hyperpyrexia (fever up to 41–42°C). Worse in hot environments. <i>This is the most life-threatening acute effect, especially in children.</i>",
"<b>CNS toxicity:</b> Being a tertiary amine, atropine crosses BBB → causes CNS excitation at moderate doses (restlessness, hallucinations, delirium, agitation) then CNS depression at very high doses (coma, seizures, respiratory failure).",
"<b>Cardiovascular toxicity:</b> Severe tachycardia (not usually fatal on its own) but can precipitate cardiac arrhythmias, especially in patients with pre-existing heart disease.",
"<b>Urinary retention:</b> M3 blockade on detrusor muscle and sphincter relaxation → acute urinary retention, which is painful and may need catheterization.",
"<b>Ileus:</b> GI smooth muscle paralysis → absent bowel sounds, abdominal distension, constipation.",
"<b>Respiratory:</b> At toxic doses, respiratory center depression → respiratory failure. Bronchodilation occurs (which is actually a therapeutic effect; not dangerous in isolation).",
]
for p in path: S.append(B(p))
S.append(PageBreak())
# ============================================================
# SECTION 6: SIGNS & SYMPTOMS
# ============================================================
S.append(H1("6. CLASSIC SIGNS & SYMPTOMS — THE 5 RHYMES + D's"))
S.append(sp(0.2))
S.append(H2("The 5 Classic Rhymes of Anticholinergic Syndrome"))
S.append(P("These are universally recognized and are the most tested memory aids for atropine/belladonna poisoning:"))
S.append(sp(0.1))
rhymes_data = [
["Rhyme", "Meaning", "Mechanism"],
["🐰 HOT as a HARE", "Hyperthermia / High fever", "Anhidrosis — sweat glands blocked (M3) → heat cannot be dissipated"],
["🦇 BLIND as a BAT", "Mydriasis (dilated pupils)\nCycloplegia (cannot focus)", "M3 block on ciliary muscle & pupillary sphincter → fixed dilated pupils"],
["🥕 RED as a BEET", "Skin flushed (red hot face)", "Cutaneous vasodilation (mechanism debated) + hyperthermia → flushed appearance"],
["🦴 DRY as a BONE", "Dry mouth (xerostomia)\nDry skin (anhidrosis)\nDry eyes", "M3 block on salivary, sweat, lacrimal glands → absence of secretions"],
["🐔 MAD as a WET HEN\n(or CRAZY as a LOON)", "Delirium, agitation, confusion, hallucinations, picking behavior", "CNS M1 block → cholinergic neurotransmission in CNS impaired → psychosis-like state"],
]
rt = Table(rhymes_data, colWidths=[4*cm, 4.5*cm, 8*cm])
rt.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0),RED),
('TEXTCOLOR',(0,0),(-1,0),colors.white),
('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(-1,0),9),
('ROWBACKGROUNDS',(0,1),(-1,-1),[LRED,colors.white]),
('FONTNAME',(0,1),(-1,-1),'Helvetica'),
('FONTSIZE',(0,1),(-1,-1),9),
('VALIGN',(0,0),(-1,-1),'TOP'),
('GRID',(0,0),(-1,-1),0.5,RED),
('LEFTPADDING',(0,0),(-1,-1),6),
('TOPPADDING',(0,0),(-1,-1),5),
('BOTTOMPADDING',(0,0),(-1,-1),5),
]))
S.append(rt)
S.append(sp(0.3))
S.append(H2("The 10 D's of Datura/Atropine Poisoning (Forensic Memory Aid)"))
S.append(P("Each symptom starts with the letter <b>D</b>:"))
ds_data = [
["D", "Symptom", "Explanation"],
["D1", "Dryness of Mouth (Xerostomia)", "M3 salivary gland block → no saliva → sticky dry mouth, difficulty speaking/swallowing"],
["D2", "Dysphagia", "Dry mouth + reduced GI motility → difficulty swallowing"],
["D3", "Dilated Pupils (Mydriasis)", "M3 block on iris sphincter muscle → fixed, fully dilated pupils unresponsive to light"],
["D4", "Diplopia", "Cycloplegia (ciliary muscle paralysis) → loss of accommodation → blurred/double vision"],
["D5", "Dry Hot Skin", "Sweat gland (M3) block → no sweating → skin hot, dry, flushed"],
["D6", "Drunken Gait (Ataxia)", "CNS effects → incoordination, unsteady gait, dysarthria"],
["D7", "Delirium", "CNS M1 block → hallucinations, agitation, confusion, picking movements, trying to escape bed"],
["D8", "Drowsiness", "Initial CNS excitation may be followed by drowsiness/coma at high doses"],
["D9", "Dysuria / Urinary Retention", "M3 block on detrusor muscle → inability to pass urine; painful bladder distension"],
["D10", "Death", "If untreated: hyperthermia, seizures, respiratory failure, cardiovascular collapse"],
]
dt = Table(ds_data, colWidths=[1*cm, 4.5*cm, 11*cm])
dt.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0),ORANGE),
('TEXTCOLOR',(0,0),(-1,0),colors.white),
('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(-1,0),9),
('ROWBACKGROUNDS',(0,1),(-1,-1),[LORANGE,colors.white]),
('FONTNAME',(0,1),(-1,-1),'Helvetica'),
('FONTSIZE',(0,1),(-1,-1),8.5),
('VALIGN',(0,0),(-1,-1),'TOP'),
('GRID',(0,0),(-1,-1),0.3,ORANGE),
('LEFTPADDING',(0,0),(-1,-1),5),
('TOPPADDING',(0,0),(-1,-1),4),
('BOTTOMPADDING',(0,0),(-1,-1),4),
('FONTNAME',(0,1),(0,-1),'Helvetica-Bold'),
('TEXTCOLOR',(0,1),(0,-1),ORANGE),
]))
S.append(dt)
S.append(sp(0.2))
S.append(Mem("The 5 Rhymes: <b>HOT-BLIND-RED-DRY-MAD</b> = Heat, Blurred vision/Blind, Redness of skin, Dryness, Madness/Delirium"))
S.append(PageBreak())
# ============================================================
# SECTION 7: SYSTEM-WISE FEATURES
# ============================================================
S.append(H1("7. SYSTEM-WISE FEATURES OF ATROPINE POISONING"))
S.append(sp(0.2))
S.append(tbl(
["System", "Feature", "Mechanism"],
[
["👁 Eyes", "Mydriasis (fixed dilated pupils)\nCycloplegia\nBlurred vision, photophobia\nAngle-closure glaucoma (precipitated)", "M3 block on iris sphincter → mydriasis\nM3 block on ciliary muscle → cycloplegia\nLight entering unimpeded → photophobia"],
["💓 Heart", "Tachycardia (most common finding)\nParadoxical bradycardia at VERY low doses\nPalpitations, arrhythmias (at very high doses)", "M2 block at SA node → ↑ HR\nM1 pre-junctional block at low doses → brief bradycardia"],
["🫁 Respiratory", "Bronchodilation (therapeutic in low doses)\nDecreased secretions (dry respiratory tract)\nRespiratory depression / failure (toxic doses)", "M3 block on bronchial smooth muscle\nM3 on submucosal glands → dry\nCentral depression at very high doses"],
["🧠 CNS", "EARLY: Restlessness, excitement, talkativeness, insomnia\nMODERATE: Hallucinations (visual), delirium, picking behavior, ataxia, dysarthria\nLATE/HIGH DOSE: Stupor, coma, seizures\nChildren: more prone to CNS excitation", "Tertiary amine → BBB penetration\nM1 block in CNS → cholinergic depletion\nHyperthermia worsens CNS toxicity"],
["💊 GI Tract", "Dry mouth (first sign)\nNausea (paradoxically), vomiting\nDecreased bowel sounds / paralytic ileus\nConstipation, abdominal distension\nAbdominal cramps (from spasm before paralysis)", "M3 block on salivary glands, GI smooth muscle, pyloric sphincter, intestinal motility"],
["🚽 Urinary", "Urinary retention (painful)\nDecreased urine output\nDysuria, hesitancy", "M3 block on detrusor muscle → relaxation\nInternal sphincter contraction → retention"],
["🌡 Skin", "Hot, dry, flushed skin\nAbsent sweating (anhidrosis)\nHyperthermia (up to 41–42°C)", "M3 block on eccrine sweat glands → no sweating → heat accumulation → hyperthermia + skin dry"],
["🩺 Vital Signs", "↑ Temperature (hyperthermia)\n↑ Heart rate (tachycardia)\n↑ or normal BP\n↑ Respiratory rate (from hyperthermia)", "Anhidrosis → hyperthermia\nM2 block → tachycardia"],
],
[2.5*cm, 5*cm, 9*cm]
))
S.append(sp(0.2))
S.append(Tip("First sign of atropine poisoning = DRY MOUTH (salivary glands are the most sensitive to atropine). Most dangerous effect = HYPERTHERMIA (esp. in children)."))
S.append(PageBreak())
# ============================================================
# SECTION 8: DIAGNOSIS
# ============================================================
S.append(H1("8. DIAGNOSIS OF ATROPINE POISONING"))
S.append(sp(0.2))
S.append(H2("Clinical Diagnosis"))
S.append(P("Diagnosis is primarily <b>clinical</b>, based on history and the characteristic anticholinergic syndrome:"))
diag = [
"<b>History:</b> Exposure to atropine-containing medication, belladonna plants (Datura, Atropa), anticholinergic drugs",
"<b>Classic presentation:</b> The 5 rhymes: hot, blind, red, dry, mad — with tachycardia and urinary retention",
"<b>Vital signs:</b> Hyperthermia + tachycardia (the key pairing)",
"<b>Pupils:</b> Fixed, maximally dilated (mydriasis), non-reactive to light — most reliable sign",
"<b>Skin:</b> Dry, hot, flushed (differentiate from sympathomimetic toxidrome where skin is wet/sweaty)",
"<b>CNS:</b> Agitation, hallucinations, confusion, picking movements",
"<b>Bladder:</b> Urinary retention — palpable bladder",
"<b>Bowel sounds:</b> Decreased/absent",
]
for d in diag: S.append(B(d))
S.append(sp(0.2))
S.append(H2("Atropine Test (Diagnostic for Organophosphate Poisoning — Classic MCQ)"))
S.append(P("When the cause of muscarinic excess is suspected (e.g., organophosphate poisoning), the <b>Atropine Test</b> is used:"))
atest = [
"Give 2 mg atropine IV",
"<b>Normal individual:</b> Shows signs of atropinization (tachycardia, dry mouth, mydriasis) — i.e., atropine works",
"<b>Organophosphate poisoning:</b> NO atropinization signs after 2 mg → massive acetylcholine excess absorbs atropine → indicates severe OP poisoning requiring much higher atropine doses (may need 20+ mg)",
]
for a in atest: S.append(B(a))
S.append(sp(0.2))
S.append(H2("Investigations"))
inv = [
"<b>No specific serum atropine level test</b> is routinely available or reliable",
"Blood glucose (hyperthermia can cause metabolic derangements)",
"Serum electrolytes, renal function (especially in dehydration from hyperthermia)",
"ECG: Tachycardia, possible QRS widening in severe TCA toxicity",
"Urine: Qualitative alkaloid detection (in Datura poisoning, forensic analysis)",
"Forensic: Stomach/intestinal contents for crushed Datura seeds; preserved viscera for chemical analysis",
]
for i in inv: S.append(B(i))
S.append(sp(0.2))
S.append(Tip("Mydriasis (dilated pupils) + dry skin differentiates anticholinergic toxidrome from sympathomimetic toxidrome (where pupils are also dilated but skin is SWEATY/WET)."))
S.append(PageBreak())
# ============================================================
# SECTION 9: DIFFERENTIAL DIAGNOSIS
# ============================================================
S.append(H1("9. DIFFERENTIAL DIAGNOSIS — TOXIDROMES COMPARISON"))
S.append(sp(0.2))
S.append(P("It is critical to differentiate atropine/anticholinergic toxidrome from other toxidromes since treatment differs:"))
S.append(tbl(
["Feature", "Anticholinergic\n(Atropine)", "Sympathomimetic\n(Cocaine, Amphetamine)", "Serotonin\nSyndrome", "Opioid\nToxidrome"],
[
["Pupils", "DILATED (fixed,\nmydriasis)", "DILATED\n(reactive)", "Normal/Dilated", "CONSTRICTED\n(pinpoint miosis)"],
["Skin", "Hot, DRY, flushed", "DIAPHORETIC\n(wet, sweaty)", "Diaphoretic", "Normal/cool\npale, clammy"],
["Bowel sounds", "DECREASED/absent\n(ileus)", "Increased\n(hyperactive)", "Increased\n(diarrhea)", "DECREASED\n(constipation)"],
["Heart rate", "TACHYCARDIA", "Tachycardia", "Tachycardia", "BRADYCARDIA"],
["Temperature", "ELEVATED\n(hyperthermia)", "Elevated", "ELEVATED\n(can be extreme)", "Normal/low"],
["Mental status", "Delirium, hallucinations\n(visual > auditory)", "Agitation\n(paranoia)", "Agitation,\nclonus", "CNS DEPRESSION\n(sedation, coma)"],
["Urinary retention", "YES (M3 block)", "No", "No", "YES (opioid)"],
["Key differentiator", "DRY skin +\nfixed mydriasis", "WET skin +\nreactive mydriasis", "Clonus +\nhyperreflexia", "Pinpoint pupils +\nrespiratory depression"],
],
[3*cm, 3.5*cm, 3.5*cm, 3.5*cm, 3*cm]
))
S.append(sp(0.2))
S.append(Key("DRY skin = Anticholinergic. WET skin = Sympathomimetic or Cholinergic (organophosphate). This single differentiator is extremely high-yield for MCQs."))
S.append(PageBreak())
# ============================================================
# SECTION 10: TREATMENT
# ============================================================
S.append(H1("10. TREATMENT / MANAGEMENT OF ATROPINE POISONING"))
S.append(sp(0.2))
S.append(H2("ABCDE — Immediate Management"))
abcde = [
"<b>A — Airway:</b> Secure and maintain airway. Suction secretions if needed (though secretions are already dried). Intubate if GCS low.",
"<b>B — Breathing:</b> Supplemental oxygen. Monitor respiratory rate. Mechanical ventilation if respiratory failure.",
"<b>C — Circulation:</b> IV access, ECG monitoring. Treat significant tachycardia only if causing hemodynamic compromise. Avoid overheating IV fluids.",
"<b>D — Disability (Neuro):</b> Assess GCS, pupil response. Treat seizures with IV benzodiazepines (lorazepam/diazepam). DO NOT use phenothiazines (worsen anticholinergic effects).",
"<b>E — Exposure/Environment:</b> REMOVE CLOTHING. Cool the patient (fans, wet towels, ice packs to groin/axillae). <b>TEMPERATURE CONTROL IS PRIORITY.</b>",
]
for a in abcde: S.append(B(a))
S.append(sp(0.2))
S.append(H2("Specific Management Steps"))
S.append(tbl(
["Step", "Intervention", "Details"],
[
["1. Decontamination", "Gastric lavage\n(Stomach washout)", "If patient presents within 1–2 hours of ingestion (atropine ↓ gut motility → poison remains in stomach longer → gastric lavage may be helpful even up to 4–6 hours)\nUse potassium permanganate (1:5000) or plain water\nActivated charcoal 1 g/kg after lavage (binds unabsorbed alkaloids)"],
["2. Temperature Control\n(PRIORITY!)", "External cooling", "Remove clothes. Fan + tepid sponging. Ice packs to axillae, groin, neck. Antipyretics (paracetamol) less effective as fever is NOT pyrogen-mediated. Avoid NSAIDs."],
["3. Control Agitation\n& Seizures", "Benzodiazepines", "IV Lorazepam 0.05–0.1 mg/kg OR Diazepam 0.1–0.3 mg/kg\nFor seizure control and sedation of delirious patient\nAvoid phenothiazines (e.g., haloperidol) — worsen anticholinergic effects\nAvoid physostigmine for seizures alone (risk of asystole)"],
["4. Urinary Retention", "Urinary catheterization", "Foley catheter insertion if patient cannot void. Monitor urine output."],
["5. IV Fluids", "Rehydration", "IV normal saline or Ringer's lactate for dehydration from hyperthermia. Monitor electrolytes."],
["6. Antidote", "Physostigmine\n(Cholinesterase inhibitor)", "See Section 11 for complete details"],
["7. Monitoring", "Continuous monitoring", "ECG, SpO2, temperature, urine output, GCS every 15–30 min"],
["8. Symptomatic care", "Nursing + supportive", "Padded bed rails (delirium → fall risk). 1:1 nursing for agitated patient. Quiet, dim-lit room (photophobia). Bladder care. Avoid physical restraints if possible (increase hyperthermia)."],
],
[3.5*cm, 3.5*cm, 9.5*cm]
))
S.append(sp(0.2))
S.append(Warn("Physostigmine should NOT be used routinely for every case of anticholinergic toxicity. Use only for life-threatening CNS toxicity, severe agitation, or significant cardiovascular instability. Do NOT use if TCA overdose suspected (risk of asystole/seizures)."))
S.append(PageBreak())
# ============================================================
# SECTION 11: PHYSOSTIGMINE
# ============================================================
S.append(H1("11. ANTIDOTE — PHYSOSTIGMINE (DETAILED)"))
S.append(sp(0.2))
S.append(H2("What is Physostigmine?"))
S.append(P("Physostigmine is a <b>reversible anticholinesterase (cholinesterase inhibitor)</b> extracted from the <i>Calabar bean</i> (<i>Physostigma venenosum</i>). It inhibits acetylcholinesterase → prevents breakdown of ACh → ↑↑ ACh at all synapses (muscarinic AND nicotinic)."))
S.append(sp(0.1))
S.append(H2("Why is Physostigmine the Antidote?"))
why = [
"Atropine poisoning = excess M receptor blockade → deficit of cholinergic activity",
"Physostigmine inhibits AChE → ACh accumulates → overcomes atropine's competitive block → reverses ALL muscarinic (and some CNS) effects",
"It is a <b>tertiary amine</b> → crosses BBB → reverses CNS effects (delirium, hallucinations) — this is its main advantage over neostigmine",
"Physostigmine is the <b>physiological antidote</b> to atropine poisoning (not pharmacological antagonism — it works by a DIFFERENT mechanism, increasing ACh to overcome the block)",
]
for w in why: S.append(B(w))
S.append(sp(0.2))
S.append(H2("Physostigmine vs Neostigmine"))
S.append(tbl(
["Feature", "Physostigmine", "Neostigmine"],
[
["Chemical type", "Tertiary amine", "Quaternary ammonium"],
["BBB penetration", "YES → reverses CNS effects", "NO → only peripheral effects"],
["Use in atropine poisoning", "PREFERRED — reverses both central & peripheral effects", "NOT used — cannot reverse CNS delirium"],
["Other uses", "Atropine/anticholinergic poisoning", "Reversal of neuromuscular block, myasthenia gravis"],
["ADRs", "Bradycardia, bronchospasm, seizures (if used inappropriately in TCA overdose)", "Bradycardia, ↑ secretions, bronchospasm"],
["Dose", "1–2 mg IV slowly (over 5 min), repeat every 5 min until signs improve", "Not used in atropine poisoning"],
],
[4.5*cm, 5.5*cm, 6.5*cm]
))
S.append(sp(0.2))
S.append(H2("How to Use Physostigmine"))
physo = [
"<b>Dose:</b> 1–2 mg IV slowly over 5 minutes (MUST be given slowly — rapid IV → bradycardia/seizures)",
"<b>Repeat:</b> Can repeat every 5 minutes if no improvement until signs of poisoning disappear",
"<b>Endpoint:</b> Appearance of signs of cholinergic activity (salivation, sweating, bradycardia, miosis, GI motility returning) indicates effective dose",
"<b>Monitoring:</b> Monitor ECG continuously during administration",
"<b>Reversal:</b> If physostigmine causes excessive cholinergic effects (bradycardia, bronchospasm, seizures) → give <b>atropine</b> to reverse",
]
for p in physo: S.append(B(p))
S.append(sp(0.1))
S.append(Warn("CONTRAINDICATIONS to Physostigmine:\n1. Suspected TCA (tricyclic antidepressant) overdose — risk of fatal asystole and seizures\n2. Asthma / COPD (bronchospasm risk)\n3. Cardiac conduction defects\n4. Bowel/bladder obstruction\n5. Gangrenous gut"))
S.append(sp(0.2))
S.append(H2("'Atropine Reverses Physostigmine' — Reciprocal Antidotes"))
S.append(Pur("Just as physostigmine is the antidote for atropine poisoning, <b>ATROPINE is the antidote for physostigmine poisoning</b>. This reciprocal antidote relationship is a classic exam question. They are physiological (functional) antagonists."))
S.append(Tip("Mnemonic: Physostigmine = 'PHYSiologically opposes atropine' | Atropine = antidote for organophosphates AND for physostigmine overdose"))
S.append(PageBreak())
# ============================================================
# SECTION 12: FORENSIC ASPECTS
# ============================================================
S.append(H1("12. FORENSIC ASPECTS (MEDICOLEGAL POINTS)"))
S.append(sp(0.2))
S.append(H2("Classification in Forensic Medicine"))
S.append(P("Atropine/Datura belongs to the class of <b>Deleriants</b> — poisons that cause delirium, hallucinations, and excited confused states."))
S.append(H3("Medicolegal Classification of Poisons:"))
S.append(B("Deleriants → Datura (Hyoscine/Hyoscyamine), Belladonna (Atropine), Henbane"))
S.append(B("Also classified as: Cerebral poison → acts on CNS"))
S.append(sp(0.2))
S.append(tbl(
["Forensic Parameter", "Datura (Most Common)\n— Forensic India Focus", "Atropa belladonna"],
[
["Common name", "Dhatura / Thorn Apple / Jimsonweed", "Deadly Nightshade"],
["Family", "Solanaceae", "Solanaceae"],
["Active principles", "Hyoscine > Hyoscyamine > Atropine", "Atropine > Hyoscyamine > Belladonine"],
["Fatal dose", "50–100 crushed seeds (adult)", "80 grains of root; 0.6–1g leaf"],
["Fatal period", "1–2 days if untreated", "3–6 hours"],
["Circumstances", "CRIMINAL: Mixed in food/pan-beedi for robbery, rape, kidnapping\nACCIDENTAL: Children (seeds resemble other seeds)\nRARE: Homicidal, suicidal", "ACCIDENTAL: Children attracted to berries\nRARE: Suicidal/homicidal"],
["Criminal use", "Seeds crushed and mixed with sweets, pan-beedi, tea, beverages. Victims fall into delirium, are robbed, and do NOT remember due to amnesia (scopolamine effect).", "Less common in India for criminal use"],
["Autopsy findings", "1. Presence of signs of asphyxia\n2. Crushed seeds in stomach/small intestine\n3. Gastric mucosa erosion\n4. Brain: cerebral edema, petechial hemorrhages", "Similar findings; berries/plant material in stomach"],
["Postmortem test", "Atropine test on mice: pupillary dilation after extract injection confirms belladonna alkaloid", "Same"],
["Special medicolegal point", "Himalayan sadhus use Datura seeds traditionally. Used as stupefying agent for kidnapping children.", "Berries attractive to children — most common accidental poisoning in children from this plant"],
],
[4.5*cm, 6.5*cm, 5.5*cm]
))
S.append(sp(0.2))
S.append(H2("Postmortem Examination Findings"))
pm = [
"<b>External:</b> Flushed, congested face; dilated pupils; dry skin; may show signs of hyperthermia (petechiae from fever)",
"<b>CNS:</b> Cerebral edema, congestion; petechial hemorrhages on brain surface",
"<b>Respiratory:</b> Pulmonary edema; signs of asphyxia",
"<b>GI tract:</b> Presence of crushed Datura seeds in stomach and small intestine; gastric mucosal congestion and erosions",
"<b>Urinary:</b> Distended urinary bladder",
"<b>Chemical analysis:</b> Preserved viscera (stomach, liver, kidney, brain) sent for alkaloid detection; urine for atropine/scopolamine",
]
for p in pm: S.append(B(p))
S.append(sp(0.2))
S.append(Tip("For forensic exam: Datura = Delirant. Criminally used in India for robbery/rape. Physostigmine is antidote. Fatal dose = 50-100 seeds. Fatal period = 1-2 days. Autopsy: seeds in stomach + asphyxia signs."))
S.append(PageBreak())
# ============================================================
# SECTION 13: RAPID REVISION
# ============================================================
S.append(H1("13. RAPID REVISION — TABLES, MNEMONICS & EXAM TIPS"))
S.append(sp(0.2))
S.append(H2("One-Page Summary Table"))
S.append(tbl(
["Parameter", "Atropine Poisoning — Key Facts"],
[
["Mechanism", "Competitive muscarinic receptor blockade (M1, M2, M3) → parasympatholysis"],
["Sources", "Datura (India: most important), Atropa belladonna, pharmaceutical atropine, TCAs, antihistamines"],
["Classic Signs", "HOT (hyperthermia), BLIND (mydriasis), RED (flushed), DRY (anhidrosis/xerostomia), MAD (delirium)"],
["Pupils", "Fixed, maximally DILATED (mydriasis) — unresponsive to light — most reliable sign"],
["Skin", "HOT, DRY, FLUSHED — NO sweating (differentiates from sympathomimetics which have wet skin)"],
["Heart rate", "TACHYCARDIA (M2 block at SA node)"],
["Most dangerous effect", "HYPERTHERMIA — due to absent sweating; most dangerous in children"],
["First sign", "DRY MOUTH — salivary glands most sensitive to atropine"],
["Fatal dose (adult)", "Atropine: ~10 mg | Datura seeds: 50–100 crushed seeds"],
["Fatal dose (child)", "Atropine: ~2 mg (children much more sensitive!)"],
["Paradoxical bradycardia", "At very LOW doses (0.5 mg) — M1 presynaptic block → ↑ ACh release"],
["Treatment priority", "1. Cool the patient (temperature control) 2. ABC support 3. Gastric lavage 4. Physostigmine (if severe)"],
["Antidote", "PHYSOSTIGMINE (1–2 mg IV slowly) — tertiary amine, crosses BBB, reverses CNS effects"],
["Why physostigmine?", "Anticholinesterase → ↑ ACh → overcomes atropine's competitive block"],
["Contraindication of physostigmine", "TCA overdose (asystole risk), asthma, cardiac conduction defects"],
["Reciprocal antidote", "Atropine is the antidote for physostigmine poisoning"],
["Forensic class", "Delirant (cerebral poison)"],
["Criminal use (India)", "Datura seeds mixed in food/pan-beedi for robbery, rape, kidnapping (victim has amnesia)"],
],
[4.5*cm, 12*cm]
))
S.append(sp(0.3))
S.append(H2("All Mnemonics Together"))
mnems = [
"🔥 The 5 RHYMES: <b>HOT as hare | BLIND as bat | RED as beet | DRY as bone | MAD as wet hen</b>",
"💊 The 10 D's of Datura: <b>Dry mouth | Dysphagia | Dilated pupils | Diplopia | Dry hot skin | Drunken gait | Delirium | Drowsiness | Dysuria | Death</b>",
"🎭 Anticholinergic vs Cholinergic: <b>Anticholinergic = 'Can't SEE, Can't PEE, Can't SPIT, Can't SH*T'</b> (mydriasis, urinary retention, xerostomia, ileus/constipation)",
"🧠 Physostigmine vs Neostigmine: <b>Physostigmine = 'PHYSical BRAIN' → crosses BBB (tertiary amine)</b>; Neostigmine = 'Does NOT cross' (quaternary)",
"💉 Antidote pairs: <b>Atropine ↔ Physostigmine (mutual antidotes)</b> | Atropine → Organophosphates | Physostigmine → Atropine/Belladonna poisoning",
"🌡 Most dangerous = <b>H²: Hyperthermia + Heart rate ↑</b> (especially in children)",
]
for m in mnems:
S.append(Mem(m))
S.append(sp(0.1))
S.append(sp(0.2))
S.append(H2("Must-Know MCQ Points"))
mcqs = [
"Most sensitive organ to atropine = <b>Salivary glands</b> (dry mouth is the first sign)",
"Most dangerous effect of atropine poisoning = <b>Hyperthermia</b> (due to absent sweating)",
"Atropine paradoxically causes <b>bradycardia at very low doses (0.5 mg)</b> before causing tachycardia",
"Atropine is a <b>tertiary amine</b> → crosses BBB; ipratropium is <b>quaternary</b> → does NOT cross BBB",
"Antidote for atropine poisoning = <b>Physostigmine</b> (NOT neostigmine — neostigmine cannot cross BBB)",
"Physostigmine is a <b>tertiary amine</b> → crosses BBB → reverses CNS delirium",
"Atropine is the antidote for <b>physostigmine poisoning</b> (reciprocal antidotes)",
"Physostigmine is CONTRAINDICATED in <b>TCA (tricyclic antidepressant) overdose</b> — risk of asystole",
"In the Atropine test: <b>no atropinization</b> after 2 mg IV = positive test for <b>organophosphate poisoning</b>",
"Anticholinergic toxidrome: <b>Dry skin</b> vs Sympathomimetic: <b>Wet/diaphoretic skin</b> — KEY differentiator",
"Datura poisoning in India: seeds mixed in <b>pan-beedi or sweets</b> for criminal purposes; <b>amnesia</b> due to scopolamine",
"Fatal dose of atropine in <b>children = ~2 mg</b> (far more sensitive than adults at 10 mg)",
"Activated charcoal is useful after gastric lavage in Datura/belladonna poisoning",
"Physostigmine extracted from = <b>Physostigma venenosum</b> (Calabar bean)",
"Atropine poisoning features: Fixed dilated pupils + DRY skin + tachycardia + hyperthermia + delirium",
]
for i, m in enumerate(mcqs, 1):
S.append(B(f"<b>MCQ {i}:</b> {m}"))
S.append(sp(0.3))
S.append(HR())
S.append(sp(0.2))
S.append(Paragraph("End of Atropine Poisoning Guide — Study Well, Ace Your 2nd Prof!", ParagraphStyle(
'F', parent=styles['Normal'], fontSize=11, textColor=RED,
alignment=TA_CENTER, fontName='Helvetica-Bold'
)))
S.append(Paragraph("Sources: Katzung's Basic & Clinical Pharmacology | Lippincott Illustrated Pharmacology | Forensic Medicine & Toxicology (Dikshit, PC)", ParagraphStyle(
'Src', parent=styles['Normal'], fontSize=7.5, textColor=colors.grey,
alignment=TA_CENTER, fontName='Helvetica-Oblique'
)))
doc.build(S)
print(f"✅ PDF: {OUTPUT}")
cd /home/daytona/workspace/respiratory-pharma && python generate_atropine_pdf.py…
ls -lh /home/daytona/workspace/respiratory-pharma/Atropine_Poisoning_2Prof.pdf
Atropine Poisoning 2Prof
PDF Document · PDF
| # | Section | Key Content |
|---|---|---|
| 1 | Introduction | What is atropine poisoning; sources of exposure |
| 2 | Sources | Datura, Atropa belladonna, henbane + pharmaceutical sources (TCAs, antihistamines) |
| 3 | Mechanism | Muscarinic receptor subtypes M1–M5; BBB penetration (tertiary amine); organ sensitivity order |
| 4 | Dose-Dependent Effects | Step-by-step table from 0.5 mg → >10 mg with clinical stage at each dose |
| 5 | Pathophysiology | Why hyperthermia is the most dangerous effect; CNS mechanism explained |
| 6 | Classic Signs & Symptoms | The 5 Rhymes (Hot/Blind/Red/Dry/Mad) + The 10 D's of Datura poisoning with full table |
| 7 | System-wise Features | Eye, Heart, Respiratory, CNS, GI, Urinary, Skin — each explained with mechanism |
| 8 | Diagnosis | Clinical diagnosis; Atropine Test for organophosphate poisoning; investigations |
| 9 | Differential Diagnosis | Anticholinergic vs Sympathomimetic vs Serotonin Syndrome vs Opioid — side-by-side table |
| 10 | Treatment | ABCDE approach; gastric lavage; temperature control; benzodiazepines; catheterization |
| 11 | Antidote — Physostigmine | Why physostigmine; Physostigmine vs Neostigmine table; dosing; contraindications; reciprocal antidote |
| 12 | Forensic Aspects | Datura medicolegal importance in India; autopsy findings; criminal use; fatal doses |
| 13 | Rapid Revision | One-page summary table; 6 mnemonics; 15 must-know MCQ points |