Give me high-yield HKMLE notes on Respiratory Pharmacology with mnemonics, in an easy-to-read format. Include only what is necessary for HKMLE. Do not add extra details unless they are clinically important for the exam. Keep it very short — 2-3 pages maximum. For each drug or drug class, tell me: 1. Mechanism (simple) 2. Key indications (HKMLE-relevant) 3. Major side effects (exam-tested) 4. Contraindications (if any) 5. Where this topic appears in HKMLE (Paper I, II, or III) Use tables where helpful. No long paragraphs. No fluff.

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
I now have enough material from the textbooks to compile comprehensive, exam-focused notes. Let me write these up.

HKMLE High-Yield Notes: Respiratory Pharmacology


MNEMONIC OVERVIEW: "BAMS-LO-CT"

Beta-2 agonists | Anticholinergics | Mast cell stabilisers | Steroids (inhaled) | Leukotriene modifiers | Omalizumab/Biologics | Chromones | Theophylline

1. BETA-2 AGONISTS

SABA (Short-Acting): Salbutamol (Albuterol), Terbutaline

LABA (Long-Acting): Salmeterol, Formoterol

Mnemonic: "SALt Saves Asthma" (Salbutamol = first-line rescue)
FeatureSABALABA
MechanismBeta-2 receptor agonist → adenylyl cyclase → cAMP ↑ → smooth muscle relaxation (bronchodilation)Same mechanism, longer duration
IndicationAcute asthma attack (rescue), step 1 PRNStep 3+ add-on to ICS; NOT monotherapy
OnsetMinutes~30 min (salmeterol), minutes (formoterol)
Duration4-6 h12 h
Key SETremor, tachycardia, hypokalaemia, hyperglycaemiaSame + risk of asthma death if used without ICS
ContraindicationLABA monotherapy in asthma (black box)-
HKMLE Paper: Paper I (Pharmacology MCQ), Paper III (Clinical management)
Exam trap: Salbutamol causes hypokalaemia (beta-2 shifts K+ into cells). Salmeterol must NEVER be used without ICS.

2. ANTICHOLINERGICS (SAMA / LAMA)

Mnemonic: "I TAME COPD" (Ipratropium = SAMA; Tiotropium = LAMA)
FeatureIpratropium (SAMA)Tiotropium (LAMA)
MechanismM3 receptor antagonist → blocks bronchoconstrictionSame, higher affinity, longer-acting
IndicationAcute COPD exacerbation; adjunct in acute severe asthma ERCOPD maintenance (1st line); add-on in severe asthma
DosingQID inhalerOnce daily
Key SEDry mouth, urinary retention, constipation, blurred visionSame (systemic effects minimal due to poor GI absorption)
ContraindicationCaution in BPH, narrow-angle glaucomaSame
HKMLE Paper: Paper I (Pharmacology), Paper III (COPD management)
These are quaternary ammonium compounds - they do NOT cross the BBB, hence minimal CNS effects.

3. INHALED CORTICOSTEROIDS (ICS)

Drugs: Beclomethasone, Budesonide, Fluticasone, Mometasone
Mnemonic: "BuFlo Blocks Inflammation" (Budesonide, Fluticasone = most commonly tested)
FeatureDetails
MechanismBind glucocorticoid receptor → reduce eosinophilic inflammation, decrease mucus production
IndicationsPersistent asthma (step 2+); COPD with frequent exacerbations
Local SEOral candidiasis, dysphonia (hoarseness)
Systemic SEMinimal at low doses; high dose → adrenal suppression, growth retardation in children, cataracts, osteoporosis
ContraindicationNone absolute; caution in active pulmonary TB
Prevention of SERinse mouth after use (candidiasis), spacer device
HKMLE Paper: Paper I, Paper III
Exam trap: ICS do NOT cause systemic Cushing's at standard doses. Growth suppression is tested in paediatric questions.

4. THEOPHYLLINE

Mnemonic: "THEOPHYLLINE = Toxic drug with Narrow window, SeizureRisk, Arrhythmia"
FeatureDetails
MechanismPDE inhibitor → cAMP ↑ → bronchodilation; also adenosine receptor antagonist
IndicationsChronic asthma/COPD (3rd line, now rarely used); acute severe asthma (IV aminophylline)
Therapeutic range10-20 mg/L (narrow therapeutic index)
Toxic SE (>20 mg/L)Seizures, ventricular arrhythmias, nausea/vomiting, tachycardia
Drug interactionsCiprofloxacin, erythromycin, cimetidine → increase levels (CYP1A2 inhibitors). Rifampicin, smoking → decrease levels
ContraindicationEpilepsy, cardiac arrhythmias
HKMLE Paper: Paper I (heavy - drug interactions, toxicity), Paper II (toxicology)
Exam trap: Theophylline toxicity symptoms - "TANS": Tachycardia, Arrhythmia, Nausea, Seizures.

5. LEUKOTRIENE RECEPTOR ANTAGONISTS (LTRA)

Drug: Montelukast, Zafirlukast
Mnemonic: "MonteluKAST Blocks Inflammation After ASThma and Allergies"
FeatureDetails
MechanismBlock CysLT1 receptors → reduce bronchoconstriction, mucus secretion, eosinophil recruitment
IndicationsMild persistent asthma (alternative or add-on to ICS); allergic rhinitis; aspirin-exacerbated respiratory disease (AERD); exercise-induced bronchospasm
Key SEGenerally well-tolerated; neuropsychiatric effects (depression, suicidality - FDA warning); Churg-Strauss vasculitis (rare, on steroid taper)
AdvantageOral; good for aspirin-sensitive asthma
ContraindicationHistory of psychiatric illness (relative)
HKMLE Paper: Paper I, Paper III
Exam trap: LTRA are the drug of choice in aspirin-induced asthma / NSAID-sensitive asthma.

6. MAST CELL STABILISERS

Drugs: Sodium cromoglicate (cromolyn), Nedocromil
FeatureDetails
MechanismInhibit mast cell degranulation → block release of histamine, leukotrienes
IndicationsProphylaxis of mild asthma (especially exercise-induced or allergen-induced); allergic rhinitis
Key SEMinimal; cough/throat irritation on inhalation
ContraindicationNot for acute attacks (prophylaxis only)
LimitationLess effective than ICS; now rarely used
HKMLE Paper: Paper I

7. BIOLOGICS (Anti-IgE / Anti-IL-5 / Anti-IL-4)

Mnemonic: "OMG, More Exacerbations Drop: Omalizumab, Mepolizumab, Dupilumab"
DrugTargetIndicationKey SE
OmalizumabAnti-IgESevere allergic asthma (high IgE, sensitised)Anaphylaxis (must observe post-injection), injection site reactions
Mepolizumab / Benralizumab / ReslizumabAnti-IL-5 (↓eosinophils)Severe eosinophilic asthmaInjection site reactions, headache
DupilumabAnti-IL-4/IL-13Severe type-2 asthma, also atopic dermatitis, nasal polypsInjection site, eosinophilia (transient)
HKMLE Paper: Paper III (newer guidelines questions); Paper I (mechanism MCQs)

QUICK COMPARISON: ASTHMA vs COPD Drug Preference

Drug ClassAsthmaCOPD
SABAFirst-line rescueRescue (adjunct)
LABAMust add with ICS1st/2nd line maintenance
LAMAAdd-on (severe asthma)1st line maintenance
ICSCornerstone treatmentOnly if frequent exacerbations
Theophylline3rd line3rd line
LTRAAdd-on / aspirin asthmaNot indicated

HKMLE EXAM TRAPS SUMMARY

TrapAnswer
Hypokalaemia from salbutamolBeta-2 shifts K+ intracellularly
LABA without ICS in asthmaContraindicated - increases asthma death
Drug of choice: aspirin-sensitive asthmaLTRA (montelukast)
Theophylline toxicity signsSeizure, arrhythmia, nausea
Ciprofloxacin + theophyllineToxicity (CYP1A2 inhibition)
ICS side effect to prevent by rinsing mouthOral candidiasis
Tiotropium vs IpratropiumTiotropium = LAMA (once daily, COPD maintenance)
Omalizumab use requiresElevated serum IgE + allergen sensitisation
Montelukast CNS warningDepression / suicidal ideation
LABA in COPDCan use alone (unlike asthma)

Paper allocation summary:
  • Paper I (Basic sciences/Pharmacology): Mechanism, drug interactions, theophylline toxicity, ICS side effects
  • Paper II (Clinical sciences): Drug toxicology, prescribing in pregnancy
  • Paper III (Clinical management): Step-up therapy, COPD vs asthma management, biologics selection

Give me high-yield HKMLE notes on Respiratory Pharmacology with mnemonics, in an easy-to-read format. Include only what is necessary for HKMLE. Do not add extra details unless they are clinically important for the exam. For each drug or drug class, tell me: 1. Mechanism (simple) 2. Key indications (HKMLE-relevant) 3. Major side effects (exam-tested) 4. Contraindications (if any) 5. Where this topic appears in HKMLE (Paper I, II, or III) Use tables where helpful. No long paragraphs. No fluff.

Here are your high-yield HKMLE Respiratory Pharmacology notes, compiled from Katzung, Lippincott, Goodman & Gilman, and Murray & Nadel:

HKMLE High-Yield: Respiratory Pharmacology

Master mnemonic: "BALTICS"
Beta-2 agonists | Anticholinergics | Leukotriene modifiers | Theophylline | ICS | Chromones | Steroids (systemic) + biologics

1. BETA-2 AGONISTS

SABA - Salbutamol (albuterol), Terbutaline

LABA - Salmeterol, Formoterol

SABALABA
MechanismBeta-2 agonist → cAMP ↑ → airway smooth muscle relaxationSame, longer duration
IndicationAcute asthma rescue; acute COPD exacerbationStep 3+ asthma (with ICS); COPD maintenance
SETremor, tachycardia, hypokalaemia, hyperglycaemiaSame + asthma death risk if used without ICS
CINone absoluteMonotherapy in asthma (black box)
Paper: I (mechanism, SE), III (step therapy)
Trap 1: Salbutamol → hypokalaemia (beta-2 drives K+ into cells). Tested in overdose/ICU scenarios. Trap 2: LABA alone in asthma = contraindicated. Must always combine with ICS. Formoterol has fast onset (can double as rescue); salmeterol does not.

2. ANTICHOLINERGICS (SAMA / LAMA)

Mnemonic: "I'm SAMA, Tio's LAMA" (Ipratropium = SAMA; Tiotropium = LAMA)
Ipratropium (SAMA)Tiotropium (LAMA)
MechanismM3 antagonist → blocks bronchoconstrictionSame, higher affinity, once-daily
IndicationAcute severe asthma (ER add-on to SABA); COPD exacerbationCOPD maintenance (1st line); add-on in severe asthma
SEDry mouth, urinary retention, blurred vision, constipationSame (minimal systemic - quaternary compound, poor absorption)
CINarrow-angle glaucoma, BPH (relative)Same
Paper: I (mechanism), III (COPD management)
Trap: Quaternary ammonium structure = does NOT cross BBB = no CNS effects. These are inhaled only. Tiotropium in COPD reduces exacerbations and improves exercise tolerance.

3. INHALED CORTICOSTEROIDS (ICS)

Drugs: Beclomethasone, Budesonide, Fluticasone, Mometasone
Mnemonic: "Rinse or you'll get Thrush" - rinse mouth after every dose
FeatureDetails
MechanismGlucocorticoid receptor activation → suppress eosinophilic airway inflammation
IndicationPersistent asthma (step 2 onward); COPD with recurrent exacerbations (combined with LABA)
Local SEOral candidiasis, dysphonia (hoarseness)
Systemic SERare at low dose; high dose → adrenal suppression, growth retardation (children), osteoporosis, cataracts
PreventionRinse mouth after use; use spacer
CINo absolute CI; caution in active TB
Paper: I (SE, mechanism), III (step-up therapy, paediatric asthma)
Trap: ICS do NOT cause systemic Cushing's at standard doses. Growth suppression is the paediatric exam question.

4. THEOPHYLLINE

Mnemonic: "TANS" = Theophylline toxicity: Tachycardia, Arrhythmia, Nausea, Seizures
FeatureDetails
MechanismPDE inhibitor → cAMP ↑ → bronchodilation; also adenosine receptor antagonist
IndicationChronic asthma/COPD (3rd line); IV aminophylline for acute severe asthma
Therapeutic range10-20 mg/L (narrow therapeutic index)
Toxic SE (>20 mg/L)Seizures, ventricular arrhythmias, N&V, tachycardia
CIEpilepsy, cardiac arrhythmias
Drug interactions (very heavily tested):
Increases theophylline levels (toxicity risk)Decreases theophylline levels
Ciprofloxacin, Erythromycin, Cimetidine (CYP1A2 inhibitors)Rifampicin, Phenytoin, Smoking (CYP1A2 inducers)
Paper: I (interactions, toxicity - high yield), II (toxicology/prescribing)
Trap: Patient on theophylline starts ciprofloxacin for chest infection → theophylline toxicity. Classic HKMLE scenario.

5. LEUKOTRIENE MODIFIERS

Drug: Montelukast (LTRA), Zafirlukast (LTRA), Zileuton (5-LOX inhibitor)
Mnemonic: "Montelukast for Aspirin Asthma & Allergic Athletes"
FeatureDetails
MechanismBlock CysLT1 receptors → reduce bronchoconstriction + eosinophil recruitment
IndicationMild persistent asthma (add-on or ICS alternative); aspirin/NSAID-exacerbated asthma; allergic rhinitis; exercise-induced bronchospasm
SENeuropsychiatric effects (depression, suicidality - FDA black box); Churg-Strauss vasculitis (rare, on steroid taper)
AdvantageOral; useful in aspirin-sensitive asthma
CICaution with psychiatric history
Paper: I, III
Trap 1: Drug of choice for aspirin-sensitive (AERD) asthma = LTRA. Very high-yield. Trap 2: Churg-Strauss association - eosinophilic vasculitis appearing when oral steroids are tapered.

6. MAST CELL STABILISERS

Drugs: Sodium cromoglicate (cromolyn), Nedocromil
FeatureDetails
MechanismInhibit mast cell degranulation → block histamine + leukotriene release
IndicationProphylaxis: mild asthma, exercise-induced bronchospasm, allergic rhinitis
SEMinimal; cough/throat irritation
CINOT for acute attacks - prophylaxis only
Paper: I
These are now rarely used in practice but appear in mechanism-type Paper I MCQs.

7. BIOLOGICS

Mnemonic: "O-M-D targets IgE, IL-5, IL-4" (Omalizumab, Mepolizumab, Dupilumab)
DrugTargetIndicationKey SE
OmalizumabAnti-IgESevere allergic asthma (elevated IgE, allergen sensitised)Anaphylaxis (30-min observation required), injection site reactions
Mepolizumab / BenralizumabAnti-IL-5 (↓ eosinophils)Severe eosinophilic asthmaInjection site reactions
DupilumabAnti-IL-4/IL-13Severe type-2 asthma; also atopic dermatitis + nasal polypsInjection site; transient eosinophilia
Paper: I (mechanism), III (patient selection)
Omalizumab prerequisite: elevated serum IgE AND documented allergen sensitisation.

ASTHMA vs COPD: Drug of Choice Summary

Drug ClassAsthmaCOPD
SABA1st-line rescueRescue (as needed)
LABAAdd-on to ICS only1st-line maintenance (can use alone)
LAMA (Tiotropium)Add-on in severe/uncontrolled1st-line maintenance (preferred)
ICSCornerstone (step 2+)Only if frequent exacerbations
Theophylline3rd line3rd line
LTRAAdd-on / aspirin asthmaNot indicated
BiologicsSevere uncontrolledNot indicated

TOP EXAM TRAPS AT A GLANCE

ScenarioAnswer
Salbutamol overdose → low K+Beta-2 agonist shifts K+ intracellularly
LABA without ICS in asthmaContraindicated - increases asthma mortality
Aspirin-sensitive asthma drugMontelukast (LTRA)
Theophylline + ciprofloxacinToxicity (CYP1A2 inhibition ↑ theophylline levels)
Theophylline + rifampicin/smokingSub-therapeutic levels (CYP1A2 induction)
ICS side effect prevented by rinsing mouthOral candidiasis
Tiotropium vs IpratropiumTiotropium = LAMA, once daily, COPD maintenance
Omalizumab requirementHigh IgE + allergen sensitisation
Montelukast CNS warningDepression / suicidal ideation
LABA monotherapy: OK in COPD?Yes. OK in COPD, NOT in asthma

Take my existing HKMLE Respiratory Pharmacology notes (attached as Resp 💊.pdf) and improve them as follows: 1. Keep ALL existing content exactly as is — do not delete anything. 2. Add the following three missing sections in the same style (tables, mnemonics, HKMLE pearls): **Section A: TB Drugs (RIPE)** - One table with: Drug | Mechanism (1 line) | Unique Toxicity | HKMLE Pearl - Include mnemonic: "RIP PE" (Rifampicin-orange, INH-neuropathy, Pyrazinamide-urate, Ethambutol-eyes) - Paper mapping: Paper I (Medicine MCQs), Paper II (emergency if on TB drugs) **Section B: Pneumonia Antibiotics (CAP vs HAP)** - One table with: Setting | First-line | Alternative - Settings: CAP outpatient, CAP inpatient, HAP (non-severe) - Add 1 HKMLE pearl below table **Section C: Inhaler Devices** - One table with: Device | When to use | Key point (1 line each) - Devices: MDI, DPI, Spacer 3. Add a "Quick Mnemonics Cheat Sheet" at the end (like your Cardio notes have) with all respiratory mnemonics from the document. 4. Add a "HKMLE Paper Distribution Summary" table (like Cardio notes) showing which respiratory topics appear in which paper. 5. Fix any formatting issues (broken tables, missing lines). 6. Match the EXACT style of your Cardio 💊.pdf — same table formatting, same use of "HKMLE Pearl", same mnemonic style. Output the complete, improved Respiratory notes as a single document.

Reading File
Running Command

python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/f621ba79-f72b-4ccb-9531-3896cea1f109/Resp 💊.pdf') as pdf: print(f'Pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): text = page.extract_text() print(f'--- PAGE {i+1} ---') print(text) print() "

Reading File
Running Command

ls /home/daytona/workspace/

Running Command

mkdir -p /home/daytona/workspace/resp-pharm && python3 -c "import reportlab; print('reportlab ok')"

Writing File

~/resp-pharm/build_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import CondPageBreak

OUTPUT = "/home/daytona/workspace/resp-pharm/Resp_Pharmacology_HKMLE.pdf"

# ── Colour palette (matches Cardio style) ──────────────────────────────────────
C_NAVY      = colors.HexColor("#1B3A5C")   # header / title background
C_ACCENT    = colors.HexColor("#2E86AB")   # section title bar
C_LIGHT     = colors.HexColor("#D6EAF8")   # alt-row / light header
C_MUTED     = colors.HexColor("#F0F4F8")   # pearl box background
C_WARN      = colors.HexColor("#FFF3CD")   # trap/warning boxes
C_GREEN     = colors.HexColor("#D5F5E3")   # green header rows
C_GREEN_D   = colors.HexColor("#1E8449")   # dark green text
C_RED       = colors.HexColor("#FADBD8")   # danger highlight
C_WHITE     = colors.white
C_BLACK     = colors.HexColor("#1A1A1A")
C_GREY_LINE = colors.HexColor("#BDC3C7")

W = A4[0] - 28*mm   # usable width

# ── Styles ─────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

TITLE   = S("T",  fontName="Helvetica-Bold",   fontSize=18, textColor=C_WHITE,   alignment=TA_CENTER, spaceAfter=2)
SUBTITLE= S("ST", fontName="Helvetica",         fontSize=10, textColor=C_LIGHT,   alignment=TA_CENTER, spaceAfter=6)
SEC     = S("SE", fontName="Helvetica-Bold",    fontSize=12, textColor=C_WHITE,   alignment=TA_LEFT,   spaceAfter=2, spaceBefore=4)
BODY    = S("B",  fontName="Helvetica",         fontSize=9,  textColor=C_BLACK,   leading=13, spaceAfter=2)
BOLD    = S("BD", fontName="Helvetica-Bold",    fontSize=9,  textColor=C_BLACK,   leading=13, spaceAfter=2)
SMALL   = S("SM", fontName="Helvetica",         fontSize=8,  textColor=C_BLACK,   leading=11)
SMALL_B = S("SB", fontName="Helvetica-Bold",    fontSize=8,  textColor=C_BLACK,   leading=11)
MNE     = S("MN", fontName="Helvetica-BoldOblique", fontSize=9, textColor=C_NAVY, leading=13, spaceAfter=2)
PEARL   = S("PL", fontName="Helvetica",         fontSize=8.5,textColor=C_BLACK,   leading=12, spaceAfter=1)
TRAP_S  = S("TR", fontName="Helvetica-BoldOblique", fontSize=8.5, textColor=colors.HexColor("#7D3C00"), leading=12)
TH      = S("TH", fontName="Helvetica-Bold",    fontSize=8.5,textColor=C_WHITE,   alignment=TA_CENTER, leading=11)
TC      = S("TC", fontName="Helvetica",         fontSize=8.5,textColor=C_BLACK,   leading=11)
TC_B    = S("TCB",fontName="Helvetica-Bold",    fontSize=8.5,textColor=C_BLACK,   leading=11)
TC_I    = S("TCI",fontName="Helvetica-Oblique", fontSize=8.5,textColor=C_BLACK,   leading=11)

def ph(text, style=BODY): return Paragraph(text, style)
def sp(h=4):              return Spacer(1, h*mm)
def hr():                 return HRFlowable(width="100%", thickness=0.5, color=C_GREY_LINE, spaceAfter=3, spaceBefore=3)

# ── Section header bar ─────────────────────────────────────────────────────────
def sec_header(text, color=C_ACCENT):
    t = Table([[ph(text, SEC)]], colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",  (0,0),(-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING", (0,0),(-1,-1), 8),
        ("RIGHTPADDING",(0,0),(-1,-1), 8),
    ]))
    return t

# ── Coloured box (mnemonic / pearl / trap) ─────────────────────────────────────
def box(text, bg=C_MUTED, style=PEARL, label=None):
    content = (f"<b>{label}</b>  " if label else "") + text
    t = Table([[ph(content, style)]], colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), bg),
        ("TOPPADDING",(0,0),(-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING",(0,0),(-1,-1), 8),
        ("RIGHTPADDING",(0,0),(-1,-1), 8),
        ("BOX",(0,0),(-1,-1),0.5,C_GREY_LINE),
    ]))
    return t

def mne_box(text):  return box(text, bg=C_LIGHT,  style=MNE,  label="Mnemonic:")
def pearl_box(text):return box(text, bg=C_MUTED,  style=PEARL,label="HKMLE Pearl:")
def trap_box(text): return box(text, bg=C_WARN,   style=TRAP_S,label="Exam Trap:")
def paper_box(text):return box(f"<b>Paper:</b> {text}", bg=C_GREEN, style=PEARL)

# ── Generic table builder ──────────────────────────────────────────────────────
def build_table(headers, rows, col_widths, zebra=True, header_color=C_NAVY):
    header_row = [ph(h, TH) for h in headers]
    data = [header_row]
    for i, row in enumerate(rows):
        bg = C_LIGHT if (zebra and i % 2 == 0) else C_WHITE
        data.append([ph(str(c), TC) for c in row])

    style = [
        ("BACKGROUND",   (0,0), (-1,0),  header_color),
        ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_LIGHT, C_WHITE] if zebra else [C_WHITE]),
        ("GRID",         (0,0), (-1,-1), 0.4, C_GREY_LINE),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ("LEFTPADDING",  (0,0), (-1,-1), 5),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
        ("VALIGN",       (0,0), (-1,-1), "TOP"),
    ]
    t = Table(data, colWidths=col_widths)
    t.setStyle(TableStyle(style))
    return t

# ══════════════════════════════════════════════════════════════════════════════
# DOCUMENT CONTENT
# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── TITLE BLOCK ────────────────────────────────────────────────────────────────
title_data = [[
    ph("HKMLE HIGH-YIELD", TITLE),
    ph("RESPIRATORY PHARMACOLOGY", TITLE),
]]
# Single-cell banner
banner = Table([[ph("HKMLE HIGH-YIELD: RESPIRATORY PHARMACOLOGY", TITLE)]], colWidths=[W])
banner.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), C_NAVY),
    ("TOPPADDING",(0,0),(-1,-1), 10),
    ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ("LEFTPADDING",(0,0),(-1,-1), 10),
]))
story.append(banner)

sub = Table([[ph("Compiled from Katzung · Lippincott · Goodman & Gilman · Murray & Nadel", SUBTITLE)]], colWidths=[W])
sub.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), C_ACCENT),
    ("TOPPADDING",(0,0),(-1,-1), 4),
    ("BOTTOMPADDING",(0,0),(-1,-1), 4),
]))
story.append(sub)
story.append(sp(3))

story.append(mne_box('"BALTICS" — Beta-2 agonists | Anticholinergics | Leukotriene modifiers | Theophylline | ICS | Chromones | Steroids (systemic) + biologics'))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 1. BETA-2 AGONISTS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("1. BETA-2 AGONISTS"))
story.append(sp(2))
story.append(ph("<b>SABA:</b> Salbutamol (albuterol), Terbutaline     <b>LABA:</b> Salmeterol, Formoterol", BODY))
story.append(sp(2))

b2_headers = ["", "SABA", "LABA"]
b2_rows = [
    ["Mechanism", "Beta-2 agonist → cAMP ↑ → airway smooth muscle relaxation", "Same, longer duration"],
    ["Indication", "Acute asthma rescue; acute COPD exacerbation", "Step 3+ asthma (with ICS); COPD maintenance"],
    ["SE", "Tremor, tachycardia, hypokalaemia, hyperglycaemia", "Same + asthma death risk if used without ICS"],
    ["CI", "None absolute", "Monotherapy in asthma (black box)"],
]
story.append(build_table(b2_headers, b2_rows, [25*mm, 75*mm, 75*mm]))
story.append(sp(2))
story.append(paper_box("I (mechanism, SE)  |  III (step therapy)"))
story.append(sp(1))
story.append(trap_box(
    "Trap 1: Salbutamol → hypokalaemia (beta-2 drives K+ into cells). Tested in overdose/ICU scenarios.  "
    "Trap 2: LABA alone in asthma = contraindicated — must always combine with ICS.  "
    "Formoterol has fast onset (can double as rescue); salmeterol does not."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 2. ANTICHOLINERGICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("2. ANTICHOLINERGICS (SAMA / LAMA)"))
story.append(sp(2))
story.append(mne_box('"I\'m SAMA, Tio\'s LAMA" — Ipratropium = SAMA;  Tiotropium = LAMA'))
story.append(sp(2))

ac_headers = ["", "Ipratropium (SAMA)", "Tiotropium (LAMA)"]
ac_rows = [
    ["Mechanism", "M3 antagonist → blocks bronchoconstriction", "Same, higher affinity, once-daily"],
    ["Indication", "Acute severe asthma (ER add-on to SABA); COPD exacerbation", "COPD maintenance (1st line); add-on in severe asthma"],
    ["SE", "Dry mouth, urinary retention, blurred vision, constipation", "Same (minimal systemic — quaternary compound, poor absorption)"],
    ["CI", "Narrow-angle glaucoma, BPH (relative)", "Same"],
]
story.append(build_table(ac_headers, ac_rows, [25*mm, 82*mm, 68*mm]))
story.append(sp(2))
story.append(paper_box("I (mechanism)  |  III (COPD management)"))
story.append(sp(1))
story.append(trap_box(
    "Quaternary ammonium structure = does NOT cross BBB = no CNS effects. Inhaled only.  "
    "Tiotropium in COPD reduces exacerbations and improves exercise tolerance."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 3. ICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("3. INHALED CORTICOSTEROIDS (ICS)"))
story.append(sp(2))
story.append(ph("<b>Drugs:</b> Beclomethasone, Budesonide, Fluticasone, Mometasone", BODY))
story.append(mne_box('"Rinse or you\'ll get Thrush" — rinse mouth after every dose'))
story.append(sp(2))

ics_headers = ["Feature", "Details"]
ics_rows = [
    ["Mechanism",    "Glucocorticoid receptor activation → suppress eosinophilic airway inflammation"],
    ["Indication",   "Persistent asthma (step 2 onward); COPD with recurrent exacerbations (combined with LABA)"],
    ["Local SE",     "Oral candidiasis, dysphonia (hoarseness)"],
    ["Systemic SE",  "Rare at low dose; high dose → adrenal suppression, growth retardation (children), osteoporosis, cataracts"],
    ["Prevention",   "Rinse mouth after use; use spacer"],
    ["CI",           "No absolute CI; caution in active TB"],
]
story.append(build_table(ics_headers, ics_rows, [35*mm, 140*mm]))
story.append(sp(2))
story.append(paper_box("I (SE, mechanism)  |  III (step-up therapy, paediatric asthma)"))
story.append(sp(1))
story.append(trap_box("ICS do NOT cause systemic Cushing's at standard doses. Growth suppression is the paediatric exam question."))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 4. THEOPHYLLINE
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("4. THEOPHYLLINE"))
story.append(sp(2))
story.append(mne_box('"TANS" — Theophylline toxicity: Tachycardia | Arrhythmia | Nausea | Seizures'))
story.append(sp(2))

theo_headers = ["Feature", "Details"]
theo_rows = [
    ["Mechanism",         "PDE inhibitor → cAMP ↑ → bronchodilation; also adenosine receptor antagonist"],
    ["Indication",        "Chronic asthma/COPD (3rd line); IV aminophylline for acute severe asthma"],
    ["Therapeutic range", "10–20 mg/L (narrow therapeutic index)"],
    ["Toxic SE (>20 mg/L)","Seizures, ventricular arrhythmias, N&V, tachycardia"],
    ["CI",                "Epilepsy, cardiac arrhythmias"],
]
story.append(build_table(theo_headers, theo_rows, [40*mm, 135*mm]))
story.append(sp(2))

# Drug interactions sub-table
story.append(ph("<b>Drug Interactions (heavily tested):</b>", BOLD))
story.append(sp(1))
di_headers = ["Increases Theophylline Levels (toxicity risk)", "Decreases Theophylline Levels"]
di_rows = [["Ciprofloxacin, Erythromycin, Cimetidine (CYP1A2 inhibitors)", "Rifampicin, Phenytoin, Smoking (CYP1A2 inducers)"]]
story.append(build_table(di_headers, di_rows, [87.5*mm, 87.5*mm]))
story.append(sp(2))
story.append(paper_box("I (interactions, toxicity — high yield)  |  II (toxicology/prescribing)"))
story.append(sp(1))
story.append(trap_box("Patient on theophylline starts ciprofloxacin for chest infection → theophylline toxicity. Classic HKMLE scenario."))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 5. LEUKOTRIENE MODIFIERS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("5. LEUKOTRIENE MODIFIERS"))
story.append(sp(2))
story.append(ph("<b>Drugs:</b> Montelukast (LTRA), Zafirlukast (LTRA), Zileuton (5-LOX inhibitor)", BODY))
story.append(mne_box('"Montelukast for Aspirin Asthma & Allergic Athletes"'))
story.append(sp(2))

lt_headers = ["Feature", "Details"]
lt_rows = [
    ["Mechanism",    "Block CysLT1 receptors → reduce bronchoconstriction + eosinophil recruitment"],
    ["Indication",   "Mild persistent asthma (add-on or ICS alternative); aspirin/NSAID-exacerbated asthma; allergic rhinitis; exercise-induced bronchospasm"],
    ["SE",           "Neuropsychiatric effects (depression, suicidality — FDA black box); Churg-Strauss vasculitis (rare, on steroid taper)"],
    ["Advantage",    "Oral; useful in aspirin-sensitive asthma"],
    ["CI",           "Caution with psychiatric history"],
]
story.append(build_table(lt_headers, lt_rows, [35*mm, 140*mm]))
story.append(sp(2))
story.append(paper_box("I  |  III"))
story.append(sp(1))
story.append(trap_box(
    "Trap 1: Drug of choice for aspirin-sensitive (AERD) asthma = LTRA. Very high-yield.  "
    "Trap 2: Churg-Strauss — eosinophilic vasculitis appearing when oral steroids are tapered."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 6. MAST CELL STABILISERS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("6. MAST CELL STABILISERS"))
story.append(sp(2))
story.append(ph("<b>Drugs:</b> Sodium cromoglicate (cromolyn), Nedocromil", BODY))
story.append(sp(2))

mc_headers = ["Feature", "Details"]
mc_rows = [
    ["Mechanism",  "Inhibit mast cell degranulation → block histamine + leukotriene release"],
    ["Indication", "Prophylaxis: mild asthma, exercise-induced bronchospasm, allergic rhinitis"],
    ["SE",         "Minimal; cough/throat irritation"],
    ["CI",         "NOT for acute attacks — prophylaxis only"],
]
story.append(build_table(mc_headers, mc_rows, [35*mm, 140*mm]))
story.append(sp(2))
story.append(paper_box("I"))
story.append(sp(1))
story.append(pearl_box("Rarely used in practice but appear in mechanism-type Paper I MCQs."))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# 7. BIOLOGICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("7. BIOLOGICS"))
story.append(sp(2))
story.append(mne_box('"O-M-D targets IgE, IL-5, IL-4" — Omalizumab | Mepolizumab | Dupilumab'))
story.append(sp(2))

bio_headers = ["Drug", "Target", "Indication", "Key SE"]
bio_rows = [
    ["Omalizumab",                   "Anti-IgE",             "Severe allergic asthma (elevated IgE, allergen sensitised)",         "Anaphylaxis (30-min observation required), injection site reactions"],
    ["Mepolizumab /\nBenralizumab",  "Anti-IL-5 (↓ eosinophils)", "Severe eosinophilic asthma",                                   "Injection site reactions"],
    ["Dupilumab",                    "Anti-IL-4/IL-13",      "Severe type-2 asthma; also atopic dermatitis + nasal polyps",       "Injection site; transient eosinophilia"],
]
story.append(build_table(bio_headers, bio_rows, [35*mm, 32*mm, 65*mm, 43*mm]))
story.append(sp(2))
story.append(paper_box("I (mechanism)  |  III (patient selection)"))
story.append(sp(1))
story.append(pearl_box("Omalizumab prerequisite: elevated serum IgE AND documented allergen sensitisation."))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# COMPARISON TABLE
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("ASTHMA vs COPD: DRUG OF CHOICE SUMMARY", color=C_NAVY))
story.append(sp(2))

cmp_headers = ["Drug Class", "Asthma", "COPD"]
cmp_rows = [
    ["SABA",                    "1st-line rescue",                          "Rescue (as needed)"],
    ["LABA",                    "Add-on to ICS only",                       "1st-line maintenance (can use alone)"],
    ["LAMA (Tiotropium)",       "Add-on in severe/uncontrolled",            "1st-line maintenance (preferred)"],
    ["ICS",                     "Cornerstone (step 2+)",                    "Only if frequent exacerbations"],
    ["Theophylline",            "3rd line",                                  "3rd line"],
    ["LTRA",                    "Add-on / aspirin asthma",                  "Not indicated"],
    ["Biologics",               "Severe uncontrolled",                      "Not indicated"],
]
story.append(build_table(cmp_headers, cmp_rows, [45*mm, 72.5*mm, 57.5*mm]))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# TOP EXAM TRAPS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("TOP EXAM TRAPS AT A GLANCE", color=colors.HexColor("#7D3C00")))
story.append(sp(2))

trap_headers = ["Scenario", "Answer"]
trap_rows = [
    ["Salbutamol overdose → low K+",             "Beta-2 agonist shifts K+ intracellularly"],
    ["LABA without ICS in asthma",               "Contraindicated — increases asthma mortality"],
    ["Aspirin-sensitive asthma drug",             "Montelukast (LTRA)"],
    ["Theophylline + ciprofloxacin",              "Toxicity (CYP1A2 inhibition ↑ theophylline levels)"],
    ["Theophylline + rifampicin/smoking",         "Sub-therapeutic levels (CYP1A2 induction)"],
    ["ICS side effect prevented by rinsing mouth","Oral candidiasis"],
    ["Tiotropium vs Ipratropium",                 "Tiotropium = LAMA, once daily, COPD maintenance"],
    ["Omalizumab requirement",                    "High IgE + allergen sensitisation"],
    ["Montelukast CNS warning",                   "Depression / suicidal ideation"],
    ["LABA monotherapy: OK in COPD?",             "Yes. OK in COPD, NOT in asthma"],
]
t = Table(
    [[ph(r[0], TC_B), ph(r[1], TC)] for r in [["Scenario","Answer"]] + trap_rows],
    colWidths=[87.5*mm, 87.5*mm]
)
t.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0),  colors.HexColor("#7D3C00")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WARN, C_WHITE]),
    ("GRID",         (0,0), (-1,-1), 0.4, C_GREY_LINE),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("VALIGN",       (0,0), (-1,-1), "TOP"),
    ("FONTNAME",     (0,0), (-1,0),  "Helvetica-Bold"),
    ("FONTCOLOR",    (0,0), (-1,0),  C_WHITE),
    ("FONTSIZE",     (0,0), (-1,-1), 8.5),
]))
story.append(t)
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# PAGE BREAK → NEW SECTIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# SECTION A: TB DRUGS
# ══════════════════════════════════════════════════════════════════════════════
tb_banner = Table([[ph("SECTION A: TB DRUGS (RIPE)", TITLE)]], colWidths=[W])
tb_banner.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), C_NAVY),
    ("TOPPADDING",(0,0),(-1,-1), 8),
    ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ("LEFTPADDING",(0,0),(-1,-1), 10),
]))
story.append(tb_banner)
story.append(sp(3))

story.append(mne_box(
    '"RIP PE" — Rifampicin (orange urine/secretions) | INH (neuropathy/hepatitis) | '
    'Pyrazinamide (urate/gout) | Pyridoxine needed for INH | Ethambutol (Eyes — optic neuritis)'
))
story.append(sp(3))

tb_headers = ["Drug", "Mechanism (1 line)", "Unique Toxicity", "HKMLE Pearl"]
tb_rows = [
    [
        "Rifampicin",
        "Inhibits bacterial DNA-dependent RNA polymerase",
        "Orange/red discolouration of urine, tears, sweat; hepatotoxicity; potent CYP450 inducer (↓ OCP, warfarin, many drugs)",
        "Classic exam question: patient on OCP + rifampicin → unintended pregnancy. Always warn about drug interactions.",
    ],
    [
        "Isoniazid (INH)",
        "Inhibits mycolic acid synthesis (InhA)",
        "Peripheral neuropathy (B6 deficiency → give pyridoxine prophylactically); hepatotoxicity; SLE-like syndrome (slow acetylators)",
        "Give pyridoxine (Vit B6) with INH to prevent neuropathy. Slow acetylators at higher toxicity risk.",
    ],
    [
        "Pyrazinamide",
        "Disrupts mycobacterial cell membrane pH",
        "Hyperuricaemia/gout (most common); hepatotoxicity; arthralgia",
        "PZA causes gout — check uric acid. Causes most hepatotoxicity in RIPE regimen.",
    ],
    [
        "Ethambutol",
        "Inhibits arabinosyl transferase (cell wall)",
        "Optic neuritis: reduced visual acuity, red-green colour blindness (dose-dependent, usually reversible)",
        "Always check baseline and monitor visual acuity. Stop immediately if visual changes occur.",
    ],
]
story.append(build_table(tb_headers, tb_rows, [25*mm, 42*mm, 58*mm, 50*mm]))
story.append(sp(2))
story.append(paper_box("I (mechanism, drug interactions)  |  II (TB drug emergency — hepatotoxicity, optic neuritis)"))
story.append(sp(2))
story.append(trap_box(
    "Trap 1: Rifampicin is a potent CYP450 inducer — reduces efficacy of OCP, warfarin, antiretrovirals, methadone.  "
    "Trap 2: INH neuropathy prevented by pyridoxine (B6).  "
    "Trap 3: Ethambutol — stop the drug if ANY visual change reported.  "
    "Trap 4: All four drugs cause hepatotoxicity — check LFTs at baseline and during treatment."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION B: PNEUMONIA ANTIBIOTICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION B: PNEUMONIA ANTIBIOTICS (CAP vs HAP)"))
story.append(sp(2))

pna_headers = ["Setting", "First-Line", "Alternative"]
pna_rows = [
    [
        "CAP — Outpatient\n(no comorbidities)",
        "Amoxicillin PO\nor\nDoxycycline PO",
        "Azithromycin PO (if low resistance)\nLevofloxacin PO (respiratory quinolone)",
    ],
    [
        "CAP — Outpatient\n(with comorbidities: DM, CKD, heart/lung disease)",
        "Amoxicillin-clavulanate PO\n+ Azithromycin PO\nor Respiratory quinolone (levofloxacin) PO",
        "Moxifloxacin PO",
    ],
    [
        "CAP — Inpatient\n(non-ICU)",
        "Beta-lactam IV (ampicillin-sulbactam or ceftriaxone)\n+ Azithromycin IV/PO\nor\nRespiratory quinolone alone",
        "Ceftriaxone + Doxycycline",
    ],
    [
        "CAP — Inpatient\n(ICU / severe)",
        "Beta-lactam IV + Azithromycin IV\nor\nBeta-lactam IV + Respiratory quinolone IV",
        "If Pseudomonas risk: pip-tazo or cefepime + ciprofloxacin",
    ],
    [
        "HAP — Non-severe\n(no MRSA risk, no Pseudomonas risk)",
        "Piperacillin-tazobactam IV\nor\nCeftriaxone IV",
        "Levofloxacin IV",
    ],
    [
        "HAP — Severe\n(MRSA risk, late-onset, prior antibiotics)",
        "Vancomycin IV or Linezolid IV\n+ Anti-pseudomonal beta-lactam\n(pip-tazo or meropenem)",
        "Ceftazidime or cefepime + vancomycin",
    ],
]
story.append(build_table(pna_headers, pna_rows, [42*mm, 77*mm, 56*mm]))
story.append(sp(2))
story.append(paper_box("I (antibiotic mechanism/spectrum)  |  III (clinical prescribing scenarios)"))
story.append(sp(1))
story.append(pearl_box(
    "Atypical cover (Legionella, Mycoplasma, Chlamydophila) requires azithromycin or a quinolone — beta-lactam alone is insufficient. "
    "In HK, always consider TB before starting empirical antibiotics for unresolved pneumonia."
))
story.append(sp(1))
story.append(trap_box(
    "Trap 1: Macrolide (azithromycin) or doxycycline for atypical CAP — these cover Mycoplasma, Legionella, Chlamydophila.  "
    "Trap 2: HAP = pneumonia developing ≥48 h after hospital admission. Broader cover needed.  "
    "Trap 3: MRSA-risk patients (prior MRSA, penetrating chest wound) require vancomycin or linezolid."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION C: INHALER DEVICES
# ══════════════════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION C: INHALER DEVICES"))
story.append(sp(2))

dev_headers = ["Device", "When to Use", "Key Point"]
dev_rows = [
    [
        "MDI\n(Metered Dose Inhaler)",
        "Standard first-line delivery device for all ages (with spacer in children/elderly)",
        "Requires good coordination between actuation and inhalation. CFC-free now standard. Requires slow, deep inhalation.",
    ],
    [
        "DPI\n(Dry Powder Inhaler)\ne.g. Turbuhaler, Accuhaler",
        "Patients who cannot coordinate MDI (no need to press + breathe simultaneously)",
        "Requires fast, deep inspiratory effort to aerosolise powder — NOT suitable during acute severe asthma (weak inspiratory flow).",
    ],
    [
        "Spacer\n(Valved Holding Chamber)",
        "Used with MDI — children, elderly, acute exacerbations, poor technique",
        "Reduces oropharyngeal deposition → less oral candidiasis. Equivalent to nebuliser in acute mild-moderate asthma.",
    ],
    [
        "Nebuliser",
        "Acute severe asthma/COPD exacerbation; patients unable to use any handheld device",
        "Driven by O2 (asthma) or air (COPD — avoid high FiO2). Slower to set up than MDI + spacer.",
    ],
    [
        "Soft Mist Inhaler\n(e.g. Respimat — tiotropium)",
        "COPD maintenance; elderly with low inspiratory flow",
        "Produces slow aerosol cloud — less effort needed than DPI. Better lung deposition than standard MDI.",
    ],
]
story.append(build_table(dev_headers, dev_rows, [32*mm, 55*mm, 88*mm]))
story.append(sp(2))
story.append(paper_box("I (device selection MCQs)  |  III (prescribing appropriate device for patient scenario)"))
story.append(sp(1))
story.append(trap_box(
    "Trap 1: DPI cannot be used during acute severe asthma — insufficient inspiratory flow.  "
    "Trap 2: Spacer with MDI is equivalent to nebuliser for mild-moderate exacerbations — no need to wait for nebuliser.  "
    "Trap 3: COPD + nebuliser → use air-driven, NOT oxygen-driven, to avoid hypercapnic drive suppression."
))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# PAGE BREAK → CHEAT SHEETS
# ══════════════════════════════════════════════════════════════════════════════
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# QUICK MNEMONICS CHEAT SHEET
# ══════════════════════════════════════════════════════════════════════════════
mne_banner = Table([[ph("QUICK MNEMONICS CHEAT SHEET", TITLE)]], colWidths=[W])
mne_banner.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), C_NAVY),
    ("TOPPADDING",(0,0),(-1,-1), 8),
    ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ("LEFTPADDING",(0,0),(-1,-1), 10),
]))
story.append(mne_banner)
story.append(sp(3))

mne_headers = ["Mnemonic", "Stands For", "What it Helps You Remember"]
mne_rows = [
    ["BALTICS",   "Beta-2 | Anticholinergics | Leukotriene | Theophylline | ICS | Chromones | Steroids+biologics", "Complete drug class list for respiratory pharmacology"],
    ["I'm SAMA, Tio's LAMA", "Ipratropium = SAMA; Tiotropium = LAMA", "Duration classification of anticholinergics"],
    ["Rinse or you'll get Thrush", "Rinse mouth after ICS", "Prevents oral candidiasis from ICS"],
    ["TANS",      "Tachycardia | Arrhythmia | Nausea | Seizures", "Theophylline toxicity features (>20 mg/L)"],
    ["Montelukast for Aspirin Asthma & Allergic Athletes", "LTRA = first choice for AERD + exercise-induced", "Key indications of leukotriene modifiers"],
    ["O-M-D targets IgE, IL-5, IL-4", "Omalizumab | Mepolizumab | Dupilumab", "Biologic targets — matched to drug names"],
    ["RIP PE",    "Rifampicin (orange) | INH (neuropathy) | Pyrazinamide (urate) | Pyridoxine for INH | Ethambutol (Eyes)", "TB drug unique toxicities"],
]
story.append(build_table(mne_headers, mne_rows, [38*mm, 72*mm, 65*mm]))
story.append(sp(4))

# ══════════════════════════════════════════════════════════════════════════════
# HKMLE PAPER DISTRIBUTION SUMMARY
# ══════════════════════════════════════════════════════════════════════════════
dist_banner = Table([[ph("HKMLE PAPER DISTRIBUTION SUMMARY", TITLE)]], colWidths=[W])
dist_banner.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), C_NAVY),
    ("TOPPADDING",(0,0),(-1,-1), 8),
    ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ("LEFTPADDING",(0,0),(-1,-1), 10),
]))
story.append(dist_banner)
story.append(sp(3))

dist_headers = ["Topic", "Paper I\n(Basic Sciences / Pharmacology MCQ)", "Paper II\n(Clinical Sciences / Prescribing)", "Paper III\n(Clinical Management / SAQ)"]
dist_rows = [
    ["Beta-2 Agonists (SABA/LABA)",    "Mechanism, SE, hypokalaemia",          "Overdose, pregnancy use",                    "Asthma step therapy, acute management"],
    ["Anticholinergics (SAMA/LAMA)",   "Mechanism, receptor subtypes",         "—",                                          "COPD maintenance, acute severe asthma ER"],
    ["Inhaled Corticosteroids",        "Mechanism, local/systemic SE",         "Paediatric growth, pregnancy",               "Step-up therapy, paediatric asthma"],
    ["Theophylline",                   "Mechanism, drug interactions (HIGH YIELD)", "Toxicity management, drug interactions", "3rd-line role, monitoring"],
    ["Leukotriene Modifiers",          "Mechanism, receptor type",             "Psychiatric SE (black box)",                 "Aspirin asthma, add-on therapy"],
    ["Mast Cell Stabilisers",          "Mechanism type MCQ",                   "—",                                          "Exercise-induced prophylaxis"],
    ["Biologics",                      "Target (IgE, IL-5, IL-4/13)",          "Anaphylaxis risk (omalizumab)",              "Severe asthma patient selection"],
    ["TB Drugs (RIPE)",                "Mechanism, interactions (rifampicin)", "Hepatotoxicity, optic neuritis emergencies", "TB treatment initiation, monitoring"],
    ["Pneumonia Antibiotics",          "Antibiotic spectrum/mechanism",        "CAP prescribing, atypical cover",            "CAP/HAP management, MRSA scenarios"],
    ["Inhaler Devices",                "Device selection MCQs",                "Prescribing appropriate device",             "Acute asthma — spacer vs nebuliser"],
]
story.append(build_table(dist_headers, dist_rows, [38*mm, 48*mm, 45*mm, 44*mm]))
story.append(sp(3))

# ── final note ─────────────────────────────────────────────────────────────────
story.append(box(
    "These notes are compiled from Katzung's Basic & Clinical Pharmacology (16e), Lippincott Illustrated Reviews Pharmacology, "
    "Goodman & Gilman's Pharmacological Basis of Therapeutics, and Murray & Nadel's Textbook of Respiratory Medicine. "
    "Content is curated for HKMLE relevance. Always cross-reference with current HKMLE guidelines.",
    bg=C_MUTED, style=SMALL
))

# ── BUILD ──────────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    topMargin=14*mm,
    bottomMargin=14*mm,
    leftMargin=14*mm,
    rightMargin=14*mm,
)
doc.build(story)
print(f"PDF written: {OUTPUT}")
Running Command

cd /home/daytona/workspace/resp-pharm && python3 build_pdf.py 2>&1

Give me high-yield HKMLE Pharmacology notes on the following topics with mnemonics, in an easy-to-read format. Include only what is necessary for the HKMLE exam. Do not add extra details unless they are clinically important for the exam. For each drug or drug class, tell me: 1. Mechanism (simple) 2. Key indications (HKMLE-relevant) 3. Major side effects (exam-tested) 4. Contraindications (if any) 5. Where this topic appears in HKMLE (Paper I, II, or III) Use tables where helpful. No long paragraphs. No fluff. Match the style of my existing HKMLE notes. Topics: 1. Autacoids (histamine, H1/H2 antihistamines, serotonin, prostaglandins, leukotrienes) 2. Gonadal hormones and contraceptives (estrogen, progesterone, OCPs, anti-estrogens, anti-androgens) 3. Antineoplastic drugs (alkylating agents, antimetabolites, plant alkaloids, platinum drugs, doxorubicin) 4. Immunomodulators (cyclosporine, tacrolimus, sirolimus, azathioprine, mycophenolate mofetil) 5. Antiviral drugs (acyclovir, ganciclovir, oseltamivir, remdesivir, ribavirin, antiretrovirals basics) 6. Antiprotozoal and anthelmintic drugs (chloroquine, metronidazole, albendazole, mebendazole, praziquantel) — brief

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
I have enough textbook data across all topics. I can now compile comprehensive, exam-focused notes from my knowledge + these textbook confirmations.

HKMLE HIGH-YIELD PHARMACOLOGY NOTES

Topics: Autacoids | Gonadal Hormones | Antineoplastics | Immunomodulators | Antivirals | Antiprotozoals

1. AUTACOIDS

1A. HISTAMINE & H1 ANTIHISTAMINES

Mnemonic: "1st Gen = Sedating, 2nd Gen = Safe" (1st generation crosses BBB; 2nd does not)
1st Generation2nd Generation
ExamplesDiphenhydramine, Chlorpheniramine, PromethazineCetirizine, Loratadine, Fexofenadine
MechanismH1 receptor antagonist + anticholinergic + anti-alphaH1 receptor antagonist only
IndicationsAllergic rhinitis, urticaria, motion sickness, PONV, anaphylaxis adjunctAllergic rhinitis, urticaria, chronic urticaria
Key SESedation, dry mouth, urinary retention, blurred vision, constipationMinimal; cetirizine mildly sedating
CIGlaucoma, BPH, elderly (anticholinergic effects)None significant
Paper: I (mechanism, SE), III (allergy management)
Exam trap: Diphenhydramine = H1 blocker + strong anticholinergic. Do NOT give to elderly (Beers Criteria). Promethazine causes extrapyramidal effects in children (avoid <2 years).

1B. H2 ANTIHISTAMINES

Drugs: Ranitidine, Famotidine, Cimetidine
FeatureDetails
MechanismCompetitive H2 receptor antagonist on parietal cells → ↓ gastric acid secretion
IndicationsPeptic ulcer disease, GERD, Zollinger-Ellison syndrome
SEGenerally well tolerated; Cimetidine - gynaecomastia, impotence (anti-androgen), drug interactions (CYP450 inhibitor)
CICimetidine: avoid with warfarin, theophylline, phenytoin (increases levels)
Paper: I (cimetidine drug interactions - HIGH YIELD)
Exam trap: Cimetidine inhibits CYP450 → increases levels of warfarin, theophylline, phenytoin. Classic HKMLE interaction question.

1C. SEROTONIN (5-HT) PHARMACOLOGY

Mnemonic: "5-HT3 = Nausea; 5-HT1 = Migraine; SSRIs block reuptake"
DrugMechanismIndicationKey SE
Ondansetron5-HT3 antagonistChemotherapy-induced N&V, PONVHeadache, constipation, QT prolongation
Sumatriptan5-HT1B/1D agonist → vasoconstrictionAcute migraineCoronary vasospasm - avoid in ischaemic heart disease
MetoclopramideD2 + 5-HT3 antagonist; 5-HT4 agonistN&V, gastroparesisExtrapyramidal effects, tardive dyskinesia
Paper: I, III (CINV management)
Exam trap: Sumatriptan is contraindicated in ischaemic heart disease and uncontrolled hypertension (coronary vasospasm risk).

1D. PROSTAGLANDINS & LEUKOTRIENES

DrugClassIndicationKey SE
MisoprostolPGE1 analoguePeptic ulcer prophylaxis (with NSAIDs); cervical ripening; PPHDiarrhoea, uterine contractions - CI in pregnancy (abortifacient)
LatanoprostPGF2α analogueGlaucoma (↓ IOP)Darkening of iris, eyelash growth
AlprostadilPGE1Erectile dysfunction; keep PDA open (neonates)Penile pain, hypotension
MontelukastLTD4 (CysLT1) antagonistAsthma, aspirin-sensitive asthma, allergic rhinitisDepression/suicidality (FDA black box)
Paper: I (mechanism), III (clinical prescribing)
Exam trap: Misoprostol is contraindicated in pregnancy for peptic ulcer use (causes abortion). NSAIDs block COX → ↓ protective PGs → gastric ulcer; misoprostol replaces them.

2. GONADAL HORMONES & CONTRACEPTIVES

Mnemonic: "COPE" - Combined OCP uses: Contraception, acne, Ovarian cyst prevention, Period regulation/dysmenorrhoea, Endometriosis

2A. OESTROGENS & COMBINED OCP

FeatureDetails
MechanismOestrogen + progestogen → suppress LH/FSH via negative feedback → inhibit ovulation
IndicationsContraception, dysmenorrhoea, endometriosis, PCOS, HRT, acne
Key SEVTE (↑ clotting factors), hypertension, nausea, breast tenderness, breakthrough bleeding, chloasma, cholestasis
CIVTE/DVT history, migraine with aura, >35 + smoking, breast cancer, active liver disease, uncontrolled HTN
Paper: I (mechanism, SE), II (safe prescribing), III (contraindications)
Exam trap: OCP + rifampicin → unintended pregnancy (CYP450 induction reduces OCP levels). OCP + migraine with aura = ABSOLUTE contraindication (stroke risk).

2B. PROGESTOGEN-ONLY PILL (POP) / DEPOT

FeatureDetails
MechanismThickens cervical mucus; inhibits ovulation (higher dose depot/implant only)
IndicationsContraception in women where oestrogen is contraindicated (post-DVT, migraine with aura, breastfeeding, smokers >35)
SEIrregular bleeding, amenorrhoea, weight gain, acne
CIUnexplained vaginal bleeding, breast cancer (current)
Paper: III (choosing contraception for specific patients)

2C. ANTI-OESTROGENS & SERM

Mnemonic: "Tamoxifen Treats but Clomiphene Causes (ovulation)"
DrugClassMechanismIndicationKey SE
TamoxifenSERMOestrogen antagonist in breast; agonist in uterus/boneBreast cancer (ER+) treatment & preventionEndometrial cancer (uterine agonist), VTE, hot flushes, menstrual irregularity
ClomipheneSERMBlocks oestrogen receptors in hypothalamus → ↑ FSH/LH release → stimulates ovulationFemale infertility (anovulation), PCOSOvarian hyperstimulation, multiple pregnancy, hot flushes
Letrozole / AnastrozoleAromatase inhibitorBlock peripheral conversion of androgens → oestrogenPost-menopausal ER+ breast cancerBone loss (osteoporosis), joint pain, hot flushes
RaloxifeneSERMOestrogen antagonist in breast & uterus; agonist in bonePost-menopausal osteoporosis; breast cancer preventionVTE, hot flushes — NO endometrial cancer risk (unlike tamoxifen)
Paper: I (mechanism), II (oncology prescribing), III (cancer management)
Exam trap 1: Tamoxifen = SERM — agonist in uterus → endometrial cancer risk. Raloxifene = SERM — antagonist in uterus → NO endometrial cancer risk. Classic differentiation question. Exam trap 2: Aromatase inhibitors ONLY work in post-menopausal women (ovaries still produce oestrogen pre-menopausally, bypassing the block).

2D. ANTI-ANDROGENS

DrugMechanismIndicationKey SE
Finasteride5α-reductase inhibitor → ↓ DHTBPH, male pattern baldnessSexual dysfunction, gynaecomastia; teratogenic (CI in pregnancy)
SpironolactoneAldosterone + androgen receptor antagonistHirsutism, PCOS, heart failure (diuretic)Hyperkalaemia, gynaecomastia, menstrual irregularity
CyproteroneAndrogen receptor antagonistProstate cancer, severe acne, hirsutismHepatotoxicity, sexual dysfunction
Flutamide / EnzalutamideAndrogen receptor antagonistProstate cancerHepatotoxicity (flutamide), diarrhoea
Paper: I, III
Exam trap: Finasteride is teratogenic to male foetuses (inhibits DHT needed for male external genitalia development) — women of childbearing age must not handle crushed tablets.

3. ANTINEOPLASTIC DRUGS

Mnemonic: "CAMPD" — Cyclophosphamide/alkylating | Antimetabolites | Microtubule agents/plant alkaloids | Platinum | Doxorubicin/anthracyclines

3A. ALKYLATING AGENTS

Drugs: Cyclophosphamide, Ifosfamide, Chlorambucil, Busulfan, Melphalan
FeatureDetails
MechanismForm covalent cross-links in DNA → prevent DNA replication (cell cycle non-specific)
IndicationsLymphomas, leukaemias, multiple myeloma, solid tumours, immunosuppression (SLE, vasculitis)
Class SEMyelosuppression, nausea/vomiting, infertility (gonadal toxicity), secondary malignancy (AML)
Unique SECyclophosphamide/Ifosfamide: haemorrhagic cystitis (acrolein metabolite) → prevent with mesna
Busulfan uniquePulmonary fibrosis, hyperpigmentation, seizures
Paper: I (mechanism, unique toxicities), II, III
Exam trap: Haemorrhagic cystitis from cyclophosphamide — prevented by mesna + adequate hydration. Busulfan → pulmonary fibrosis (classic exam question).

3B. ANTIMETABOLITES

Mnemonic: "MTX-5FU-6MP" = Methotrexate | 5-Fluorouracil | 6-Mercaptopurine
DrugMechanismIndicationUnique Toxicity
Methotrexate (MTX)DHFR inhibitor → blocks folate synthesis → ↓ DNA/RNA synthesisALL, NHL, breast cancer, choriocarcinoma, RA, psoriasisMyelosuppression, mucositis, hepatotoxicity, pulmonary fibrosis; rescued by folinic acid (leucovorin)
5-Fluorouracil (5-FU)Thymidylate synthase inhibitor → ↓ thymidine → ↓ DNA synthesisColorectal, breast, gastric cancerMyelosuppression, mucositis, hand-foot syndrome, cerebellar ataxia (high dose)
6-Mercaptopurine (6-MP)Purine analogue → inhibits purine synthesisALL, AML, IBDMyelosuppression; interacts with allopurinol (xanthine oxidase inhibits 6-MP metabolism → toxicity)
Cytarabine (Ara-C)Pyrimidine analogue → inhibits DNA polymeraseAMLMyelosuppression, cerebellar toxicity, conjunctivitis
HydroxyureaRibonucleotide reductase inhibitor → ↓ DNA synthesisCML, sickle cell disease (↑ HbF), essential thrombocythaemiaMyelosuppression, leg ulcers
Paper: I (mechanisms, interactions), II, III
Exam trap 1: Methotrexate toxicity = rescue with folinic acid (leucovorin/folinate) — NOT folic acid. Exam trap 2: 6-Mercaptopurine + allopurinol = severe toxicity (allopurinol inhibits xanthine oxidase which metabolises 6-MP). Reduce 6-MP dose by 75% if must use together.

3C. PLANT ALKALOIDS & MICROTUBULE AGENTS

DrugMechanismIndicationUnique Toxicity
VincristineBind tubulin → inhibit microtubule polymerisation → arrest mitosis at metaphaseALL, lymphomasPeripheral neuropathy (dose-limiting), SIADH — minimal myelosuppression
VinblastineSame as vincristineHodgkin's lymphoma, testicular cancerMyelosuppression (dose-limiting), neuropathy (less than vincristine)
Paclitaxel / DocetaxelStabilise microtubules → prevent depolymerisation → arrest mitosisBreast, ovarian, lung cancerPeripheral neuropathy, myelosuppression, hypersensitivity reactions, alopecia
EtoposideTopoisomerase II inhibitorLung cancer, testicular cancer, lymphomasMyelosuppression, secondary AML
IrinotecanTopoisomerase I inhibitorColorectal cancerDelayed diarrhoea, myelosuppression
Paper: I (mechanism), III (chemotherapy toxicities)
Exam trap: Vincristine = neuropathy (dose-limiting), NOT myelosuppression. Vinblastine = myelosuppression (dose-limiting). These are almost always paired in an MCQ.

3D. PLATINUM COMPOUNDS

Drugs: Cisplatin, Carboplatin, Oxaliplatin
FeatureDetails
MechanismForm platinum-DNA adducts → cross-link DNA → inhibit replication
IndicationsCisplatin: testicular, bladder, ovarian, lung, head & neck cancer. Carboplatin: same (less toxic). Oxaliplatin: colorectal cancer
Cisplatin unique SENephrotoxicity (dose-limiting; prevent with IV hydration + mannitol), ototoxicity (high-frequency hearing loss), severe N&V, peripheral neuropathy, hypomagnesaemia
Carboplatin SELess nephrotoxic, less ototoxic; myelosuppression (dose-limiting)
Oxaliplatin SECold-induced peripheral neuropathy (sensory, acutely worsened by cold)
Paper: I (SE comparison), II (pre-medication), III
Exam trap: Cisplatin = nephrotoxicity + ototoxicity + hypomagnesaemia. Carboplatin = myelosuppression. Oxaliplatin = cold-triggered neuropathy. These distinctions are directly tested.

3E. DOXORUBICIN (ANTHRACYCLINES)

Drugs: Doxorubicin, Daunorubicin, Epirubicin, Idarubicin
FeatureDetails
MechanismIntercalate DNA + inhibit topoisomerase II + generate free radicals
IndicationsBreast cancer, leukaemias, lymphomas, sarcomas
Dose-limiting SECardiotoxicity (dilated cardiomyopathy) — cumulative dose-dependent; check EF before each cycle
Other SEMyelosuppression, alopecia, mucositis, "red urine" (harmless metabolite)
PreventionDexrazoxane (iron chelator) protects heart; liposomal doxorubicin reduces cardiac SE
CIPre-existing cardiomyopathy; do not exceed lifetime cumulative dose
Paper: I (mechanism, cardiotoxicity), III
Exam trap: Doxorubicin → cardiomyopathy. Cumulative dose-dependent. Must monitor LVEF. Dexrazoxane is the cardioprotective agent.

4. IMMUNOMODULATORS

Mnemonic: "CaT SiMply" — Calcineurin inhibitors (Cyclosporine, Tacrolimus) | Sirolimus (mTOR) | Mycophenolate
DrugMechanismIndicationsUnique SEMonitoring
CyclosporineCalcineurin inhibitor → binds cyclophilin → ↓ IL-2 → ↓ T-cell proliferationOrgan transplant, RA, psoriasis, nephrotic syndromeNephrotoxicity (dose-limiting), hypertension, neurotoxicity, gingival hyperplasia, hypertrichosis, hyperuricaemiaTrough levels; CrCl/eGFR
Tacrolimus (FK506)Calcineurin inhibitor → binds FKBP-12 → ↓ IL-2 (same end result, 100x more potent)Organ transplant (preferred over cyclosporine), atopic dermatitis (topical)Nephrotoxicity, neurotoxicity (tremor, headache), diabetes (more than cyclosporine), hypertension; less gingival hyperplasia/hirsutismTrough levels
Sirolimus (Rapamycin)mTOR inhibitor → binds FKBP-12 → ↓ mTOR → ↓ IL-2 signalling and cell proliferationRenal transplant (maintenance), lymphangioleiomyomatosisHyperlipidaemia, thrombocytopenia, impaired wound healing, NOT nephrotoxic (actually used when nephrotoxicity limits CNIs), interstitial pneumonitisTrough levels
AzathioprineProdrug → 6-MP → inhibits purine synthesis → ↓ lymphocyte proliferationRenal transplant, autoimmune disease (SLE, IBD, myasthenia)Myelosuppression, hepatotoxicity, increased infection/malignancy risk+ allopurinol = severe toxicity (same as 6-MP)
Mycophenolate mofetil (MMF)Inhibits IMPDH → ↓ de novo purine synthesis → selectively ↓ lymphocyte proliferationRenal/cardiac/liver transplant, lupus nephritisGI toxicity (diarrhoea, nausea), myelosuppression, teratogenicNo TDM needed (unlike CNIs)
Paper: I (mechanisms, drug interactions), III (transplant management)
Exam trap 1: Cyclosporine AND tacrolimus = calcineurin inhibitors — both nephrotoxic. Sirolimus = mTOR inhibitor — NOT nephrotoxic. Exam trap 2: Tacrolimus causes more diabetes; cyclosporine causes more gingival hyperplasia and hirsutism. Exam trap 3: Azathioprine + allopurinol = life-threatening toxicity (same mechanism as 6-MP + allopurinol). Exam trap 4: MMF does NOT require therapeutic drug monitoring — only immunosuppressant in this class that doesn't.

5. ANTIVIRAL DRUGS

Mnemonic: "ACE GOaR" — Acyclovir (HSV/VZV) | CMV (Ganciclovir) | Ebolavirus/Influenza (Remdesivir/Oseltamivir) | (H)IV/HCV (ARVs/Ribavirin)

5A. ANTI-HERPES DRUGS

DrugMechanismIndicationKey SE
AcyclovirViral thymidine kinase phosphorylates → inhibits viral DNA polymerase (selective - only activates in infected cells)HSV-1/2, VZV (chickenpox, shingles), HSV encephalitis (IV)Generally well tolerated; crystalluria/nephrotoxicity (IV — hydrate well); neurotoxicity (IV high dose)
ValacyclovirProdrug of acyclovir; better oral bioavailabilitySame as acyclovirSame
GanciclovirSame mechanism (phosphorylated by viral UL97 kinase)CMV retinitis, CMV in immunocompromisedMyelosuppression (dose-limiting — unlike acyclovir), nephrotoxicity, teratogenic
ValganciclovirOral prodrug of ganciclovirCMV prophylaxis/treatment in transplantSame as ganciclovir
FoscarnetDirectly inhibits viral DNA polymerase (no phosphorylation needed)Acyclovir/ganciclovir-resistant HSV, CMVNephrotoxicity, hypocalcaemia (chelates Ca2+), hypomagnesaemia, penile/vulval ulcers
Paper: I (mechanism distinction), III (CMV management)
Exam trap 1: Acyclovir works only in HSV/VZV infected cells (selective activation by viral thymidine kinase) — this is why it is safe. Exam trap 2: Ganciclovir = myelosuppression (unlike acyclovir which has minimal SE). For CMV, NOT for HSV (acyclovir preferred for HSV). Exam trap 3: Foscarnet = no kinase needed (directly inhibits polymerase) — used when acyclovir/ganciclovir resistance occurs.

5B. ANTI-INFLUENZA

DrugMechanismIndicationKey SE
Oseltamivir (Tamiflu)Neuraminidase inhibitor → prevents viral release from host cellsInfluenza A & B treatment (start within 48 h); prophylaxisNausea, vomiting; neuropsychiatric effects (rare, mainly paediatric)
ZanamivirSame (inhaled)Influenza A & B; oseltamivir-resistant strainsBronchospasm — avoid in asthma/COPD
Paper: I (mechanism), III (influenza management)
Exam trap: Oseltamivir must be started within 48 hours of symptom onset to be effective. Neuraminidase inhibitors work for both influenza A and B (unlike older amantadine which only covers influenza A).

5C. BROAD-SPECTRUM ANTIVIRALS

DrugMechanismIndicationKey SE
RibavirinGuanosine analogue → inhibits viral RNA polymerase + mRNA cappingHCV (with pegylated interferon); RSV (inhaled in children); Lassa feverHaemolytic anaemia (dose-limiting), teratogenic (CI in pregnancy), cough (inhaled)
RemdesivirAdenosine nucleotide analogue → inhibits viral RNA polymerase → RNA chain terminationCOVID-19 (hospitalised); Ebola (studied)Bradycardia, elevated LFTs, nausea
Paper: I (mechanism), III (COVID/HCV management)

5D. ANTIRETROVIRALS (HIV) — BASICS ONLY

Mnemonic: "NRRTI-PI-II" — NRTIs | NNRTIs | PIs | Integrase Inhibitors
ClassExamplesMechanismKey SE
NRTIs (Nucleoside reverse transcriptase inhibitors)Zidovudine (AZT), Tenofovir, Lamivudine, EmtricitabineIncorporate into viral DNA → chain termination (no 3'-OH)Zidovudine: anaemia, myelosuppression. Tenofovir: nephrotoxicity, bone loss. Class: lactic acidosis, lipoatrophy
NNRTIs (Non-nucleoside RTI)Efavirenz, NevirapineBind RT allosterically → conformational change → block RTEfavirenz: CNS effects (vivid dreams, dizziness), teratogenic (CI in 1st trimester). Nevirapine: hepatotoxicity, Stevens-Johnson syndrome
PIs (Protease inhibitors)Lopinavir, Ritonavir, AtazanavirBlock HIV protease → immature, non-infectious virionsHyperlipidaemia, insulin resistance/diabetes, lipodystrophy, GI. Ritonavir: CYP3A4 inhibitor (used as pharmacokinetic "booster")
Integrase inhibitorsRaltegravir, DolutegravirBlock HIV integrase → prevent integration into host genomeGenerally well tolerated; insomnia, headache
Paper: I (drug classes, mechanisms), III (ART initiation principles)
Exam trap 1: Zidovudine (AZT) = anaemia/myelosuppression. Used in PMTCT (prevention of mother-to-child transmission). Exam trap 2: Efavirenz = teratogenic (neural tube defects) — do NOT use in 1st trimester. Exam trap 3: Ritonavir is now primarily used as a CYP3A4 inhibitor ("booster") to increase levels of other PIs — not primarily as an antiviral alone.

6. ANTIPROTOZOAL & ANTHELMINTIC DRUGS (BRIEF)

Mnemonic: "CAMP MAPping parasites" — Chloroquine | Artemisinins | Metronidazole | Primaquine | Mebendazole/Albendazole | Praziquantel

6A. ANTIMALARIALS

DrugMechanismIndicationKey SE
ChloroquineConcentrates in parasite vacuole → inhibits haem polymerisation → toxic haem accumulatesMalaria treatment/prophylaxis (sensitive strains); RA, SLE (antimalarial)Retinopathy (prolonged use — visual field defects), pruritus in dark-skinned patients, QT prolongation
PrimaquineDisrupts mitochondrial functionRadical cure of P. vivax/ovale (eradicates liver hypnozoites); Pneumocystis prophylaxisHaemolytic anaemia in G6PD deficiency — test G6PD before use
MefloquineSimilar to chloroquineChloroquine-resistant malaria prophylaxisNeuropsychiatric effects (anxiety, vivid dreams, psychosis, seizures) — avoid in psychiatric history
Artemisinin derivatives (artesunate, artemether)Generate free radicals that damage parasiteSevere/multi-drug-resistant malariaGenerally well tolerated; neurotoxicity at very high doses
Atovaquone + Proguanil (Malarone)↓ mitochondrial electron transport + folate synthesisMalaria prophylaxis; P. falciparum treatmentNausea, headache
Paper: I (mechanism), III (malaria management, traveller prophylaxis)
Exam trap: Primaquine → haemolytic anaemia in G6PD deficiency. ALWAYS check G6PD first. This is a guaranteed HKMLE question type.

6B. METRONIDAZOLE

FeatureDetails
MechanismNitroimidazole → generates cytotoxic free radicals in anaerobic/microaerophilic organisms → DNA strand breaks
IndicationsGiardiasis, amoebiasis (intestinal + hepatic), trichomoniasis, Clostridium difficile, anaerobic bacterial infections, Helicobacter pylori (triple therapy)
Key SEMetallic taste, nausea, peripheral neuropathy (prolonged use), disulfiram-like reaction with alcohol
CI1st trimester of pregnancy (teratogenicity concern); alcohol use (disulfiram reaction)
Paper: I (mechanism, interactions), III
Exam trap: Metronidazole + alcohol = disulfiram-like reaction (flushing, palpitations, nausea). Classic MCQ. Also: only drug that treats both giardiasis AND amoebiasis AND trichomoniasis.

6C. ANTHELMINTICS

DrugMechanismIndicationKey SE
MebendazoleInhibits microtubule polymerisation → impairs glucose uptake in wormsRoundworm, hookworm, whipworm, threadworm (first-line for most GI nematodes)Minimal systemic SE; GI discomfort
AlbendazoleSame mechanism (broader spectrum, better absorbed)Giardiasis, neurocysticercosis, echinococcosis (hydatid cyst), strongyloidesHepatotoxicity, bone marrow suppression with prolonged use; teratogenic
PraziquantelIncreases membrane permeability to Ca2+ → spastic paralysis of wormSchistosomiasis, tapeworms (Taenia), liver flukesNausea, headache; worm dying causes temporary inflammatory response
IvermectinBinds glutamate-gated Cl- channels → paralysisOnchocerciasis (river blindness), strongyloides, scabies, head liceMazzotti reaction (fever, rash — from dying microfilariae)
Paper: I (mechanism distinction), III (tropical disease management)
Exam trap 1: Praziquantel = schistosomiasis + tapeworms. Albendazole = neurocysticercosis + hydatid cyst (broad spectrum, crosses BBB). Exam trap 2: Mebendazole vs Albendazole — albendazole is better absorbed and treats systemic infections (cysticercosis, hydatid); mebendazole stays in gut (GI nematodes only).

HKMLE PAPER DISTRIBUTION SUMMARY

TopicPaper IPaper IIPaper III
H1/H2 AntihistaminesMechanism, sedation, cimetidine interactionsSafe prescribing in elderlyAllergy/anaphylaxis management
Serotonin drugsOndansetron/sumatriptan mechanismDrug interactionsCINV, migraine Rx
ProstaglandinsCOX/PG mechanismMisoprostol in pregnancyGI protection, glaucoma
Combined OCPMechanism, SE (VTE, CI)Safe prescribingContraception selection
SERMs / Anti-oestrogensTamoxifen vs raloxifene (uterine effect)Endometrial cancer riskBreast cancer Rx
Anti-androgensFinasteride mechanismTeratogenicityBPH, prostate cancer
Alkylating agentsMechanism, haemorrhagic cystitisMesna useLymphoma/leukaemia Rx
AntimetabolitesMTX/6-MP interactionsLeucovorin rescueChemotherapy regimens
Plant alkaloidsVincristine vs vinblastine SELymphoma, ALL Rx
Platinum/AnthracyclinesCisplatin SE profile, cardiotoxicityPre-medicationOncology regimens
ImmunomodulatorsCNI vs mTOR mechanismDrug monitoringTransplant rejection Rx
Acyclovir/GanciclovirMechanism, selectivityIV hydrationCMV/HSV management
Oseltamivir/RibavirinNeuraminidase mechanism48h ruleInfluenza/HCV treatment
ARVsDrug class mechanismsAZT in PMTCTART initiation
Chloroquine/PrimaquineMechanism, G6PD linkMalaria prophylaxis/Rx
MetronidazoleMechanism, alcohol interactionDisulfiram reactionAnaerobic/protozoal Rx
AnthelminticsMicrotubule mechanismTropical disease Rx

QUICK MNEMONICS CHEAT SHEET

MnemonicStands ForRemembers
1st Gen = Sedating, 2nd Gen = Safe1st/2nd gen antihistaminesBBB penetration and sedation profile
5-HT3 = Nausea; 5-HT1 = MigraineSerotonin receptor subtypesOndansetron vs sumatriptan
COPEContraception, acne, Ovarian cysts, Period, EndometriosisOCP indications
Tamoxifen Treats, Clomiphene CausesSERM effectsTamoxifen = cancer Rx; Clomiphene = induces ovulation
CAMPDCyclophosphamide, Antimetabolites, Microtubule, Platinum, DoxorubicinAntineoplastic drug classes
MTX-5FU-6MPMethotrexate, 5-Fluorouracil, 6-MercaptopurineAntimetabolite trio
CaT SiMplyCalcineurin (Cyclosporine, Tacrolimus), Sirolimus, MycophenolateImmunosuppressant classes
ACE GOaRAcyclovir, CMV/Ganciclovir, Oseltamivir/Ebola/Remdesivir, (H)IV/RibavirinAntiviral drug-virus matching
NRRTI-PI-IINRTIs, NNRTIs, PIs, Integrase inhibitorsHIV drug classes
CAMP MAPpingChloroquine, Artemisinins, Metronidazole, Primaquine, Mebendazole/Albendazole, PraziquantelAntiparasitic agents
RIP PERifampicin (orange), INH (neuropathy), Pyrazinamide (urate), Pyridoxine, Ethambutol (Eyes)TB drug toxicities

Compiled from Katzung's Basic & Clinical Pharmacology (16e), Lippincott Illustrated Reviews Pharmacology, Goodman & Gilman's, Medical Microbiology (Murray). Content curated for HKMLE relevance.
This is a shared conversation. Sign in to Orris to start your own chat.