Topics according to NMC guidlelines of emergency medicine for exam paper
NMC India emergency medicine syllabus topics exam MBBS 2024
National Medical Commission emergency medicine competencies MBBS curriculum topics
https://www.nmc.org.in/wp-content/uploads/2024/10/NMC%20MD%2…
https://www.nmc.org.in/wp-content/uploads/2026/02/12bCompete…
| Subject | Key Emergency Topics |
|---|---|
| General Medicine | ACS, stroke, status epilepticus, DKA, sepsis, hypertensive emergency |
| General Surgery | Acute abdomen, trauma resuscitation, surgical shock, burns |
| Paediatrics | Febrile seizures, PALS, acute respiratory distress, dehydration |
| Obstetrics & Gynecology | Eclampsia, PPH, ectopic pregnancy, emergency delivery |
| Forensic Medicine | Poisoning management, medicolegal emergencies |
| Community Medicine | Disaster management, mass casualty, outbreak management |
| Pharmacology | Antidotes, drug toxicity, reversal agents |
Categorize acc to exam papers 1 2 3 4
NMC MD Emergency Medicine theory paper 1 2 3 4 syllabus topics curriculum 2024
https://mgmuhs.com/pdfs/curriculum/medical/mbbs/3rd-year-par…
| Paper | Duration | Marks | When |
|---|---|---|---|
| Paper I | 3 hours | 100 | End of Year 1 |
| Paper II | 3 hours | 100 | Final exam |
| Paper III | 3 hours | 100 | Final exam |
| Paper IV | 3 hours | 100 | Final exam |
| Theory Total | 400 | ||
| Practical/Clinical | - | 280 | Final exam |
| Thesis | - | 20 | - |
| Grand Total | 700 |
Generate a study guide PDF for Paper I basics
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/em-paper1 && cat > /tmp/workspace/em-paper1/generate_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import ListFlowable, ListItem output_path = "/tmp/workspace/em-paper1/MD_EM_Paper1_Study_Guide.pdf" doc = SimpleDocTemplate( output_path, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2.5*cm, bottomMargin=2*cm, title="MD Emergency Medicine - Paper I Study Guide", author="NMC Curriculum Based" ) # ── Colour palette ────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#1A3A5C") MED_BLUE = colors.HexColor("#2E6DA4") LIGHT_BLUE = colors.HexColor("#D6E8F8") TEAL = colors.HexColor("#1A7A7A") TEAL_LIGHT = colors.HexColor("#D0EEEE") ORANGE = colors.HexColor("#C75B00") ORANGE_LITE = colors.HexColor("#FFF0E0") GREEN = colors.HexColor("#1E6B3C") GREEN_LITE = colors.HexColor("#D4F0DF") RED = colors.HexColor("#A02020") RED_LITE = colors.HexColor("#FDEAEA") GOLD = colors.HexColor("#B8860B") GOLD_LITE = colors.HexColor("#FFF8DC") GRAY_LIGHT = colors.HexColor("#F4F4F4") GRAY_MID = colors.HexColor("#CCCCCC") WHITE = colors.white BLACK = colors.black styles = getSampleStyleSheet() # Custom paragraph styles def make_style(name, parent="Normal", **kwargs): return ParagraphStyle(name, parent=styles[parent], **kwargs) title_style = make_style("MainTitle", fontSize=26, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=6, leading=32) subtitle_style = make_style("SubTitle", fontSize=13, textColor=LIGHT_BLUE, alignment=TA_CENTER, fontName="Helvetica", spaceAfter=4) paper_tag_style = make_style("PaperTag", fontSize=11, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold") h1_style = make_style("H1", fontSize=15, textColor=WHITE, fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=14, leading=20) h2_style = make_style("H2", fontSize=12, textColor=DARK_BLUE, fontName="Helvetica-Bold", spaceAfter=3, spaceBefore=10, leading=16) h3_style = make_style("H3", fontSize=10.5, textColor=TEAL, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=7, leading=14) body_style = make_style("Body", fontSize=9.5, textColor=BLACK, fontName="Helvetica", spaceAfter=2, leading=14, alignment=TA_JUSTIFY) bullet_style = make_style("Bullet", fontSize=9.5, textColor=BLACK, fontName="Helvetica", spaceAfter=1, leading=13, leftIndent=12, firstLineIndent=-10) small_style = make_style("Small", fontSize=8.5, textColor=colors.HexColor("#444444"), fontName="Helvetica", leading=12) bold_body = make_style("BoldBody", fontSize=9.5, textColor=BLACK, fontName="Helvetica-Bold", spaceAfter=2, leading=14) highlight_style = make_style("Highlight", fontSize=9.5, textColor=DARK_BLUE, fontName="Helvetica-Bold", spaceAfter=2, leading=14, backColor=GOLD_LITE, borderPadding=4) note_style = make_style("Note", fontSize=9, textColor=RED, fontName="Helvetica-Oblique", spaceAfter=2, leading=13) def b(text): return f"<b>{text}</b>" def i(text): return f"<i>{text}</i>" def bi(text): return f"<b><i>{text}</i></b>" # ───────────────────────────────────────────────────────────────────────────── # HELPER BUILDERS # ───────────────────────────────────────────────────────────────────────────── def section_header(title, bg_color=MED_BLUE): data = [[Paragraph(title, h1_style)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg_color), ("ROUNDEDCORNERS", [6]), ("TOPPADDING", (0,0), (-1,-1), 7), ("BOTTOMPADDING", (0,0), (-1,-1), 7), ("LEFTPADDING", (0,0), (-1,-1), 12), ])) return t def sub_header(title, bg_color=TEAL_LIGHT, text_color=TEAL): st = make_style(f"SH_{title[:8]}", fontSize=11, textColor=text_color, fontName="Helvetica-Bold", leading=15) data = [[Paragraph(title, st)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg_color), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 10), ("LINEBELOW", (0,0), (-1,-1), 1.5, text_color), ])) return t def info_box(title, items, bg=LIGHT_BLUE, border=MED_BLUE, title_color=DARK_BLUE): title_st = make_style(f"IB_{title[:6]}", fontSize=10, textColor=title_color, fontName="Helvetica-Bold", leading=14) rows = [[Paragraph(title, title_st)]] for item in items: rows.append([Paragraph(f"• {item}", bullet_style)]) t = Table(rows, colWidths=[16.5*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), bg), ("BACKGROUND", (0,1), (-1,-1), WHITE), ("BOX", (0,0), (-1,-1), 1.5, border), ("LINEBELOW", (0,0), (0,0), 1, border), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 8), ])) return t def two_col_table(headers, rows, col_w=None): if not col_w: col_w = [5*cm, 12*cm] hdr_st = make_style("TH", fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", leading=13) cell_st = make_style("TD", fontSize=9, textColor=BLACK, fontName="Helvetica", leading=12) data = [[Paragraph(h, hdr_st) for h in headers]] for r in rows: data.append([Paragraph(str(c), cell_st) for c in r]) t = Table(data, colWidths=col_w, repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GRAY_LIGHT]), ("GRID", (0,0), (-1,-1), 0.5, GRAY_MID), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return t def alert_box(text, bg=RED_LITE, border=RED): st = make_style("Alert", fontSize=9.5, textColor=RED, fontName="Helvetica-Bold", leading=13) data = [[Paragraph(f"⚠ EXAM TIP: {text}", st)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("BOX", (0,0), (-1,-1), 1.5, border), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) return t def mnemonic_box(title, content): st = make_style("Mnem", fontSize=10, textColor=ORANGE, fontName="Helvetica-Bold", leading=14) body_st = make_style("MnemB", fontSize=9.5, textColor=BLACK, fontName="Helvetica", leading=13) data = [[Paragraph(f"🧠 {title}", st)], [Paragraph(content, body_st)]] t = Table(data, colWidths=[16.5*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), ORANGE_LITE), ("BACKGROUND", (0,1), (-1,-1), WHITE), ("BOX", (0,0), (-1,-1), 1.5, ORANGE), ("LINEBELOW", (0,0), (0,0), 1, ORANGE), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) return t def green_box(title, items): return info_box(title, items, bg=GREEN_LITE, border=GREEN, title_color=GREEN) def sp(n=1): return Spacer(1, n*4*mm) def bullets(items): return [Paragraph(f"• {it}", bullet_style) for it in items] def hr(): return HRFlowable(width="100%", thickness=0.5, color=GRAY_MID) # ============================================================================= # CONTENT BUILD # ============================================================================= story = [] # ── COVER PAGE ──────────────────────────────────────────────────────────────── cover_data = [[Paragraph("MD EMERGENCY MEDICINE", title_style)], [Paragraph("Paper I — Basic Medical Sciences", subtitle_style)], [Paragraph("Complete Study Guide", subtitle_style)], [Spacer(1, 8*mm)], [Paragraph("NMC Curriculum | Notification No. N-P050(20)/16/2024-PGMEB-NMC", small_style)], [Spacer(1, 4*mm)], [Paragraph("10 Short-Structured Questions × 10 Marks = 100 Marks | 3 Hours", paper_tag_style)]] cover_table = Table(cover_data, colWidths=[17*cm]) cover_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE), ("TOPPADDING", (0,0), (-1,-1), 14), ("BOTTOMPADDING", (0,0), (-1,-1), 14), ("LEFTPADDING", (0,0), (-1,-1), 20), ("RIGHTPADDING", (0,0), (-1,-1), 20), ])) story.append(cover_table) story.append(sp(3)) # Exam Format box exam_rows = [ ["Format", "10 Short-Structured Questions (SSQs)"], ["Marks", "10 marks per question — Total 100"], ["Duration", "3 Hours"], ["Timing", "End of Year 1 of MD EM training"], ["Examiners", "Set by External Examiners"], ["Choice", "No choice — all questions compulsory"], ] story.append(sub_header("PAPER I — EXAM FORMAT AT A GLANCE", TEAL_LIGHT, TEAL)) story.append(sp(1)) story.append(two_col_table(["Parameter", "Details"], exam_rows, [5*cm, 12*cm])) story.append(sp(2)) story.append(sub_header("PAPER I — SUBJECT COVERAGE", LIGHT_BLUE, MED_BLUE)) story.append(sp(1)) coverage = [ ("Anatomy", "Applied airway, thoracic, abdominal, neuro, vascular anatomy"), ("Physiology", "Cardiorespiratory, shock, acid-base, fluid-electrolyte, ICP"), ("Biochemistry", "ABG, enzyme markers, metabolic panels, sepsis biomarkers"), ("Microbiology", "Organisms in sepsis/meningitis/pneumonia, tropical infections"), ("Pathology", "SIRS/sepsis pathophysiology, coagulopathies"), ("Research Methodology", "Study designs, EBM, scoring systems, statistics"), ("General EM Principles", "Triage, ABCDE approach, patient safety, documentation"), ("Disaster Preparedness", "CBRN, HICS, mass casualty, bioterrorism, blast injuries"), ] story.append(two_col_table(["Subject", "Key Focus Areas"], coverage, [4.5*cm, 12.5*cm])) story.append(PageBreak()) # ============================================================================= # SECTION 1: APPLIED ANATOMY # ============================================================================= story.append(section_header("1. APPLIED ANATOMY FOR EMERGENCY MEDICINE", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("1.1 Airway Anatomy")) story.append(sp(1)) story.extend(bullets([ "Nasopharynx → Oropharynx → Laryngopharynx → Larynx → Trachea", "Larynx: thyroid cartilage, cricoid cartilage (only complete ring), epiglottis, arytenoids", "Cricothyroid membrane: 1st emergency surgical airway landmark — between thyroid cartilage (above) and cricoid (below); felt as soft depression; average dimensions 9 mm × 30 mm", "Vocal cords: at C4-C5 level; true cords are white/pearly; triangular glottis opening", "Trachea: 10–15 cm long; divides at carina (angle of Louis, T4-T5); right bronchus more vertical → right-sided aspiration/intubation more common", "Adult airway: 8–8.5 mm ETT for males; 7–7.5 mm for females; ETT tip 2–3 cm above carina", ])) story.append(sp(1)) story.append(mnemonic_box("LEMON — Difficult Airway Assessment", "L — Look externally (trauma, obesity, beard)\n" "E — Evaluate 3-3-2 rule (mouth opening ≥3 fingers; hyoid-to-chin ≥3 fingers; thyroid-to-floor of mouth ≥2 fingers)\n" "M — Mallampati score (I–IV; III/IV = difficult)\n" "O — Obstruction (foreign body, epiglottitis, abscess)\n" "N — Neck mobility (reduced in C-spine injury, ankylosing spondylitis)")) story.append(sp(1)) story.append(sub_header("1.2 Thoracic Anatomy")) story.append(sp(1)) story.extend(bullets([ "Pleural space: normally contains < 15 mL fluid; 500 mL = detectable on CXR; 1500 mL = significant hemothorax", "Tension pneumothorax: air under pressure in pleural space → mediastinal shift away from affected side → compression of great veins → obstructive shock", "Needle decompression: 2nd ICS, mid-clavicular line (anterior) OR 4th/5th ICS, anterior axillary line", "Chest tube insertion: 5th ICS, anterior axillary line (triangle of safety — bordered by latissimus dorsi, pectoralis major, base = nipple line)", "Heart: right ventricle is the most anterior chamber — most vulnerable in anterior stab wounds", "Pericardial sac: fibrous + serous layers; pericardiocentesis approach: subxiphoid (45° angle toward left shoulder)", "Aorta: ascending → arch → descending; aortic isthmus (ligamentum arteriosum at aortic arch/descending junction) = most common site of traumatic transection", "Superior vena cava enters right atrium at T3 level", ])) story.append(sp(1)) story.append(alert_box("Pericardial tamponade: Beck's Triad = Hypotension + Muffled heart sounds + Raised JVP. Pulsus paradoxus > 10 mmHg is confirmatory.")) story.append(sp(1)) story.append(sub_header("1.3 Vascular Access Anatomy")) story.append(sp(1)) rows = [ ["Internal Jugular", "Between 2 heads of sternocleidomastoid, lateral to carotid artery; right IJV preferred — straight path to RA"], ["Subclavian", "Below clavicle, lateral to subclavian artery; risk: pneumothorax, subclavian artery puncture"], ["Femoral", "NAVEL mnemonic — lateral to medial: Nerve, Artery, Vein, Empty space, Lymphatics; below inguinal ligament"], ["Intraosseous (IO)", "Proximal tibia (2 cm below tibial tuberosity); humeral head; distal tibia — used in cardiac arrest/failed IV"], ] story.append(two_col_table(["Site", "Key Points"], rows, [4*cm, 13*cm])) story.append(sp(1)) story.append(mnemonic_box("NAVEL — Femoral Triangle (Lateral → Medial)", "N — Nerve (femoral)\n" "A — Artery (femoral)\n" "V — Vein (femoral)\n" "E — Empty space\n" "L — Lymphatics")) story.append(sp(1)) story.append(sub_header("1.4 Neurological Anatomy Relevant to EM")) story.append(sp(1)) story.extend(bullets([ "Monroe-Kellie doctrine: total intracranial volume (brain + blood + CSF) is fixed; increase in one must be compensated by decrease in another", "Herniation syndromes: uncal herniation — CNIII compression → ipsilateral dilated pupil + contralateral hemiplegia (Weber's syndrome); central herniation → bilateral pupils then Cushing's response", "Cushing's triad (late sign of raised ICP): Hypertension + Bradycardia + Irregular respiration", "C-spine: C3-C4-C5 — 'keeps the diaphragm alive'; injury above C3 → apnea", "ASIA classification for spinal cord injury: A = Complete; B = Sensory only preserved; C = Motor preserved but < grade 3; D = Motor grade ≥ 3; E = Normal", "Dermatome landmarks: C6 = thumb, C7 = middle finger, C8 = little finger; T4 = nipple; T10 = umbilicus; L1 = inguinal ligament; L4 = knee; S1 = little toe/lateral foot", ])) story.append(PageBreak()) # ============================================================================= # SECTION 2: APPLIED PHYSIOLOGY # ============================================================================= story.append(section_header("2. APPLIED PHYSIOLOGY", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("2.1 Shock Physiology")) story.append(sp(1)) shock_rows = [ ["Class I", "< 750 mL", "< 15%", "Normal", "Normal", "Normal", "Slightly anxious"], ["Class II", "750–1500 mL", "15–30%", "Normal", "↑ / 100–120", "↑ RR", "Mildly anxious"], ["Class III", "1500–2000 mL", "30–40%", "↓", "120–140", "↑↑ RR", "Confused"], ["Class IV", "> 2000 mL", "> 40%", "↓↓", "> 140", "↑↑↑ RR", "Lethargic/comatose"], ] hdr = ["Class", "Blood Loss", "% Volume", "BP", "HR", "RR", "Mental Status"] col_w = [1.8*cm, 2.5*cm, 1.8*cm, 1.5*cm, 2*cm, 1.5*cm, 3.9*cm] story.append(two_col_table(hdr, shock_rows, col_w)) story.append(sp(1)) story.append(info_box("Types of Shock — Key Differentiators", [ "Hypovolemic: ↓ CO, ↑ SVR, ↓ CVP, ↓ PCWP", "Cardiogenic: ↓ CO, ↑ SVR, ↑ CVP, ↑ PCWP", "Distributive (Septic): ↑ CO (early), ↓ SVR, variable CVP", "Obstructive (Tamponade/PE/Tension PTX): ↓ CO, ↑ SVR, ↑ CVP", "Neurogenic: ↓ CO, ↓ SVR (warm, bradycardic shock — no compensatory tachycardia)", ])) story.append(sp(1)) story.append(mnemonic_box("Shock Types Mnemonic — '4Hs + 4Ts' (for cardiac arrest causes also)", "4Hs: Hypoxia | Hypovolemia | Hyper/Hypokalemia | Hypothermia\n" "4Ts: Thrombosis (PE/ACS) | Tamponade | Tension PTX | Toxins")) story.append(sp(1)) story.append(sub_header("2.2 Acid-Base Physiology & ABG Interpretation")) story.append(sp(1)) abg_rows = [ ["Metabolic Acidosis", "↓ pH, ↓ HCO3", "↓ PaCO2 (Kussmaul)", "DKA, lactic acidosis, renal failure, poisoning (methanol, salicylates)"], ["Metabolic Alkalosis", "↑ pH, ↑ HCO3", "↑ PaCO2", "Vomiting, diuretics, primary hyperaldosteronism"], ["Respiratory Acidosis", "↓ pH, ↑ PaCO2", "↑ HCO3", "COPD, neuromuscular failure, opioid OD, severe asthma"], ["Respiratory Alkalosis", "↑ pH, ↓ PaCO2", "↓ HCO3", "Anxiety, PE, early sepsis, pregnancy, altitude"], ] story.append(two_col_table(["Disorder", "Primary Change", "Compensation", "Causes in EM"], abg_rows, [3.5*cm, 3.5*cm, 3*cm, 7*cm])) story.append(sp(1)) story.append(green_box("ABG Interpretation Steps (ROME Approach)", [ "Step 1 — pH: < 7.35 = Acidosis; > 7.45 = Alkalosis", "Step 2 — PaCO2: > 45 = Respiratory cause; < 35 = Respiratory alkalosis", "Step 3 — HCO3: < 22 = Metabolic acidosis; > 26 = Metabolic alkalosis", "Step 4 — Compensation: check if appropriate (Winter's formula for met. acidosis: expected PaCO2 = 1.5 × HCO3 + 8 ± 2)", "Step 5 — Anion gap: Na − (Cl + HCO3); normal = 8–12; elevated AG → MUDPILES", "MUDPILES: Methanol, Uraemia, DKA, Propylene glycol, Isoniazid/Ibuprofen, Lactic acidosis, Ethylene glycol, Salicylates", ])) story.append(sp(1)) story.append(alert_box("Normal ABG values: pH 7.35–7.45 | PaO2 80–100 mmHg | PaCO2 35–45 mmHg | HCO3 22–26 mEq/L | SpO2 ≥ 95%")) story.append(sp(1)) story.append(sub_header("2.3 Cardiorespiratory Physiology")) story.append(sp(1)) story.extend(bullets([ "Cardiac output (CO) = Heart Rate × Stroke Volume; normal = 4–8 L/min", "Stroke volume determinants: Preload (Frank-Starling), Afterload (SVR), Contractility", "Mean arterial pressure (MAP) = Diastolic BP + 1/3 Pulse pressure; target MAP ≥ 65 mmHg in sepsis", "Starling's law: ↑ preload → ↑ stroke volume (up to a point — then flattens in failure)", "V/Q ratio: normal 0.8; V/Q mismatch → hypoxia correctable with O2; shunt (V/Q = 0) → not correctable with O2", "Dead space (V/Q = ∞): anatomical (150 mL) + physiological; increased in PE", "Oxygen delivery (DO2) = CO × CaO2; CaO2 = (1.34 × Hb × SaO2) + (0.003 × PaO2)", "Tissue hypoxia in shock: O2 extraction ratio ↑; lactate ↑ when > 2 mmol/L (> 4 is high mortality in sepsis)", ])) story.append(sp(1)) story.append(sub_header("2.4 Intracranial Pressure (ICP) Physiology")) story.append(sp(1)) story.extend(bullets([ "Normal ICP: 5–15 mmHg; sustained > 20 mmHg is pathological", "Cerebral Perfusion Pressure (CPP) = MAP − ICP; target CPP ≥ 60 mmHg", "Autoregulation: cerebral blood flow (CBF) maintained constant when MAP 50–150 mmHg; lost in TBI", "Hyperventilation: PaCO2 ↓ → cerebral vasoconstriction → ↓ CBF → ↓ ICP (temporary; target PaCO2 35–40 mmHg normally; 30–35 in herniation)", "Mannitol: osmotic diuretic; dose 0.25–1 g/kg IV; monitor serum osmolality (keep < 320 mOsm/L)", "Hypertonic saline (3%): alternative to mannitol; also reduces ICP; preferred in hypovolemic patients", "Head elevation 30°: reduces ICP without compromising CPP", ])) story.append(PageBreak()) # ============================================================================= # SECTION 3: BIOCHEMISTRY # ============================================================================= story.append(section_header("3. APPLIED BIOCHEMISTRY", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("3.1 Cardiac Biomarkers")) story.append(sp(1)) biomarker_rows = [ ["Troponin I / T", "Rises 3–6 h", "24–48 h", "10–14 days", "Most sensitive/specific; hs-Tn detects rise in 1–2 h; use 0h/3h protocol"], ["CK-MB", "4–6 h", "12–24 h", "48–72 h", "Used to detect reinfarction; less specific than troponin"], ["Myoglobin", "1–3 h", "4–12 h", "24 h", "Earliest; not cardiac-specific; useful to rule OUT MI early"], ["BNP/NT-proBNP", "—", "—", "—", "Heart failure biomarker; BNP > 100 pg/mL supports HF; NT-proBNP > 300 pg/mL"], ["D-Dimer", "—", "—", "—", "Sensitive but NOT specific for PE/DVT; high NPV when low pre-test probability"], ] story.append(two_col_table(["Marker", "Rise", "Peak", "Return to Normal", "Clinical Notes"], biomarker_rows, [2.8*cm, 1.5*cm, 1.5*cm, 2.5*cm, 8.7*cm])) story.append(sp(1)) story.append(alert_box("High-sensitivity troponin (hs-cTn): can detect myocardial injury at 1 h. Rise > 20% from 0 to 3 h = ACS. Always interpret in clinical context.")) story.append(sp(1)) story.append(sub_header("3.2 Metabolic Panels in EM")) story.append(sp(1)) story.append(info_box("DKA — Diagnostic Criteria & Biochemistry", [ "Blood glucose > 250 mg/dL (may be euglycemic in SGLT2 inhibitor use)", "pH < 7.3 OR bicarbonate < 18 mEq/L", "Positive serum/urine ketones", "Anion gap > 12 (elevated AG metabolic acidosis)", "Osmolality calculation: 2Na + (Glucose/18) + (BUN/2.8); normal = 280–295 mOsm/kg", "Corrected Na in DKA: add 1.6 mEq/L Na for every 100 mg/dL glucose above 100", "Potassium paradox: total body K is LOW despite normal/high serum K (acidosis shifts K extracellularly)", ])) story.append(sp(1)) story.append(info_box("Sepsis Biomarkers", [ "Lactate: normal < 2 mmol/L; lactate ≥ 4 mmol/L = septic shock (even with normal BP) → requires IV fluid resuscitation", "Procalcitonin: rises in bacterial sepsis; used to guide antibiotic de-escalation; not specific in early sepsis", "CRP: rises after 24–48 h; less useful for acute decision-making", "WBC: non-specific; neutrophilia in bacterial infection; leukopenia in overwhelming sepsis", ])) story.append(sp(1)) story.append(sub_header("3.3 Liver Function Tests in Hepatic Failure")) story.append(sp(1)) story.extend(bullets([ "ALT (SGPT) > AST (SGOT): hepatitis (viral, drug-induced); AST > ALT ratio > 2:1 suggests alcoholic hepatitis", "Bilirubin: conjugated ↑ (obstructive/hepatic); unconjugated ↑ (hemolytic/prehepatic)", "Prothrombin time (PT/INR): best marker of synthetic function; INR > 1.5 = significant hepatic dysfunction", "Albumin: chronic synthetic function (T1/2 = 20 days; low in chronic liver disease)", "Acute liver failure criteria: coagulopathy (INR > 1.5) + encephalopathy within 26 weeks of jaundice onset", ])) story.append(PageBreak()) # ============================================================================= # SECTION 4: MICROBIOLOGY # ============================================================================= story.append(section_header("4. APPLIED MICROBIOLOGY", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("4.1 Common Organisms in Emergency Conditions")) story.append(sp(1)) micro_rows = [ ["Bacterial meningitis (adult)", "N. meningitidis, S. pneumoniae, Listeria (elderly/immunocomp.)"], ["Bacterial meningitis (neonate)", "Group B Strep, E. coli, Listeria"], ["Community pneumonia (CAP)", "S. pneumoniae (most common), Mycoplasma, Legionella, H. influenzae"], ["Hospital pneumonia (HAP/VAP)", "Pseudomonas, Klebsiella, MRSA, Acinetobacter"], ["Sepsis (UTI source)", "E. coli (most common), Klebsiella, Proteus, Enterococcus"], ["Diabetic foot / necrotizing fasciitis", "Polymicrobial; Group A Strep (Type II NF = monomicrobial)"], ["Infective endocarditis", "S. aureus (acute/IVDA), Strep viridans (subacute), HACEK organisms"], ["Tropical fever — India", "Malaria (P. falciparum — cerebral), Dengue (DENV 1-4), Leptospira, Salmonella typhi"], ])) story.append(two_col_table(["Condition", "Key Organisms"], micro_rows, [5*cm, 12*cm])) story.append(sp(1)) story.append(sub_header("4.2 Antimicrobial Principles in ED")) story.append(sp(1)) story.append(green_box("Antibiotic Timing — Key ED Targets", [ "Septic shock: antibiotics within 1 HOUR of presentation (Surviving Sepsis Campaign)", "Bacterial meningitis: antibiotics + dexamethasone BEFORE LP if LP will be delayed > 30 min", "Community pneumonia: antibiotics within 4 hours of presentation", "Cover-then-de-escalate principle: broad spectrum empirically, then narrow based on culture", ])) story.append(sp(1)) story.append(info_box("Empirical Antibiotic Choices (High-Yield for Exams)", [ "Sepsis (unknown source): Piperacillin-tazobactam OR Cefepime + Metronidazole ± Vancomycin", "Meningitis: Ceftriaxone 2g IV + Vancomycin + Dexamethasone (add Ampicillin if > 50 yrs)", "CAP (ICU-level): Ceftriaxone + Azithromycin OR Respiratory fluoroquinolone", "Necrotizing fasciitis: Pip-Tazo + Clindamycin (anti-toxin) + Vancomycin ± IVIG", "Complicated malaria (P. falciparum): IV Artesunate (preferred over Quinine)", ])) story.append(sp(1)) story.append(sub_header("4.3 Tropical Infections — India Specific")) story.append(sp(1)) tropical_rows = [ ["Malaria (Complicated)", "Impaired consciousness, seizures, severe anemia (Hb < 7), hypoglycemia, ARDS, AKI, hemoglobinuria (blackwater fever)", "IV Artesunate; dextrose for hypoglycemia; avoid steroids"], ["Dengue Hemorrhagic Fever", "Thrombocytopenia < 100,000; hemoconcentration (PCV ↑ ≥ 20%); positive tourniquet test; warning signs: abdominal pain, persistent vomiting, bleeding", "Fluid management; NS/RL; platelet transfusion only if < 10,000 or active bleeding"], ["Leptospirosis", "Weil's disease: jaundice + AKI + bleeding; conjunctival suffusion; fever; rice paddy contact", "IV Penicillin G OR Doxycycline; supportive dialysis if AKI"], ["Enteric Fever", "Fever > 7 days; relative bradycardia; rose spots; splenomegaly; Widal test; blood culture (gold standard)", "Ceftriaxone IV (drug of choice for severe); Azithromycin for uncomplicated"], ]) story.append(two_col_table(["Disease", "Clinical Features / Criteria", "Emergency Management"], tropical_rows, [3*cm, 8*cm, 6*cm])) story.append(PageBreak()) # ============================================================================= # SECTION 5: PATHOLOGY # ============================================================================= story.append(section_header("5. APPLIED PATHOLOGY", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("5.1 SIRS, Sepsis, and Septic Shock (Sepsis-3 Definitions)")) story.append(sp(1)) sepsis_rows = [ ["SIRS (no longer used)", "2 or more: Temp >38°C or <36°C; HR >90; RR >20; WBC >12,000 or <4,000"], ["Sepsis (Sepsis-3)", "Life-threatening organ dysfunction due to dysregulated host response to infection; SOFA score ↑ ≥ 2"], ["qSOFA (screening)", "2 of 3: RR ≥22/min | Altered mentation (GCS < 15) | SBP ≤ 100 mmHg"], ["Septic Shock", "Sepsis + vasopressors needed to maintain MAP ≥ 65 mmHg + Lactate > 2 mmol/L despite fluid resuscitation"], ] story.append(two_col_table(["Term", "Definition"], sepsis_rows, [3.5*cm, 13.5*cm])) story.append(sp(1)) story.append(mnemonic_box("Surviving Sepsis Hour-1 Bundle (ABCDE)", "A — Assess lactate (re-measure if initial ≥ 2)\n" "B — Blood cultures BEFORE antibiotics\n" "C — Ceftriaxone (broad-spectrum antibiotics within 1 hour)\n" "D — Drip fluids — 30 mL/kg crystalloid if hypotensive or lactate ≥ 4\n" "E — Execute vasopressors — Norepinephrine if MAP < 65 despite fluids")) story.append(sp(1)) story.append(sub_header("5.2 DIC — Disseminated Intravascular Coagulation")) story.append(sp(1)) story.extend(bullets([ "Pathophysiology: uncontrolled activation of coagulation → thrombin generation → fibrin clots + consumption of factors and platelets → BLEEDING", "Triggers in EM: sepsis (most common), massive trauma, obstetric disasters (abruption, AFE), malignancy, envenomation", "Lab findings: ↑ PT, ↑ aPTT, ↓ fibrinogen (< 100 = severe), ↓ platelets, ↑ D-dimer, ↑ FDPs, schistocytes on peripheral smear", "ISTH DIC Score: platelets + PT + fibrinogen + D-dimer; ≥ 5 = overt DIC", "Management: treat underlying cause; FFP for coagulopathy; cryoprecipitate for fibrinogen < 1.5 g/L; platelets if < 50,000 with bleeding", ])) story.append(sp(1)) story.append(sub_header("5.3 Coagulopathies in Trauma")) story.append(sp(1)) story.append(info_box("Lethal Triad of Trauma (Trauma-Induced Coagulopathy)", [ "Hypothermia (<35°C): inhibits clotting enzymes; prevent with warm IV fluids, warming blankets", "Acidosis (pH < 7.2): inhibits thrombin generation; correct with buffers + source control", "Coagulopathy (dilutional + consumptive): prevent with 1:1:1 ratio (PRBC:FFP:Platelets) in massive transfusion protocol (MTP)", "Damage Control Resuscitation (DCR): permissive hypotension (SBP 80–90 mmHg) + minimize crystalloids + MTP + TXA within 3 hours", "Tranexamic Acid (TXA): 1g IV over 10 min within 3 hours of trauma; reduces mortality by 15% (CRASH-2 trial)", ])) story.append(PageBreak()) # ============================================================================= # SECTION 6: RESEARCH METHODOLOGY & STATISTICS # ============================================================================= story.append(section_header("6. RESEARCH METHODOLOGY & STATISTICS", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("6.1 Study Designs — Hierarchy of Evidence")) story.append(sp(1)) evidence_rows = [ ["Level I", "Systematic Review / Meta-analysis of RCTs", "Highest"], ["Level II", "Randomized Controlled Trial (RCT)", "High"], ["Level III", "Cohort Study (Prospective/Retrospective)", "Moderate"], ["Level IV", "Case-Control Study", "Moderate-Low"], ["Level V", "Cross-Sectional Study", "Low"], ["Level VI", "Case Series / Case Report", "Low"], ["Level VII", "Expert Opinion / Animal Studies", "Lowest"], ] story.append(two_col_table(["Level", "Study Design", "Evidence Quality"], evidence_rows, [2*cm, 11*cm, 4*cm])) story.append(sp(1)) story.append(sub_header("6.2 Diagnostic Test Statistics")) story.append(sp(1)) stat_rows = [ ["Sensitivity", "TP / (TP + FN)", "Ability to detect disease; HIGH sensitivity → rules OUT (SnNOut)", "D-Dimer for PE (high sens)"], ["Specificity", "TN / (TN + FP)", "Ability to exclude disease; HIGH specificity → rules IN (SpPIn)", "Troponin for MI (high spec)"], ["PPV", "TP / (TP + FP)", "Probability disease is present when test is positive; affected by prevalence", "—"], ["NPV", "TN / (TN + FN)", "Probability disease is absent when test is negative; affected by prevalence", "—"], ["LR+", "Sensitivity / (1 − Specificity)", "How much a positive test increases probability of disease; LR+ > 10 = strong", "—"], ["LR−", "(1 − Sensitivity) / Specificity", "How much a negative test decreases probability; LR− < 0.1 = strong", "—"], ] story.append(two_col_table(["Statistic", "Formula", "Meaning", "EM Example"], stat_rows, [2.5*cm, 4.5*cm, 6*cm, 4*cm])) story.append(sp(1)) story.append(alert_box("Sensitivity and NPV INCREASE with high disease prevalence. Specificity and PPV DECREASE. This affects interpretation of screening vs. confirmatory tests.")) story.append(sp(1)) story.append(sub_header("6.3 Clinical Scoring Systems")) story.append(sp(1)) score_rows = [ ["Glasgow Coma Scale (GCS)", "Eye(4) + Verbal(5) + Motor(6) = 3–15; severe TBI = GCS ≤ 8 → intubate; mild = 13–15"], ["SOFA Score", "Respiratory (PaO2/FiO2), Coagulation (Platelets), Liver (Bilirubin), CVS (MAP/vasopressors), CNS (GCS), Renal (Creatinine); each 0–4; total 0–24; used for organ dysfunction in sepsis"], ["CURB-65", "Confusion + Urea > 7 + RR ≥ 30 + BP SBP < 90 / DBP ≤ 60 + Age ≥ 65; score ≥ 2 = hospital admission; ≥ 3 = ICU consideration"], ["Wells Score (PE)", "Clinical features of DVT (3), alternative Dx less likely (3), HR > 100 (1.5), immobilization/surgery (1.5), prior DVT/PE (1.5), hemoptysis (1), malignancy (1); ≥ 5 = high probability"], ["Wells Score (DVT)", "Similar scoring; ≥ 2 = high probability DVT"], ["Ranson Criteria (Pancreatitis)", "At admission (5) + At 48h (6); ≥ 3 = severe pancreatitis"], ["Alvarado Score (Appendicitis)", "8-point score; ≥ 7 = high probability appendicitis; < 5 = low"], ["HEART Score (ACS)", "History + ECG + Age + Risk factors + Troponin; 0–2 = low risk (safe discharge); ≥ 4 = admission"], ["APACHE II", "Acute Physiology + Chronic Health Evaluation; 12 physiological variables + age + chronic health; ICU mortality predictor"], ] story.append(two_col_table(["Score", "Key Details"], score_rows, [4.5*cm, 12.5*cm])) story.append(sp(1)) story.append(mnemonic_box("CURB-65 Mnemonic", "C — Confusion (new onset)\n" "U — Urea > 7 mmol/L (BUN > 19 mg/dL)\n" "R — Respiratory rate ≥ 30/min\n" "B — Blood pressure: SBP < 90 or DBP ≤ 60\n" "65 — Age ≥ 65 years")) story.append(PageBreak()) # ============================================================================= # SECTION 7: GENERAL EMERGENCY MEDICINE PRINCIPLES # ============================================================================= story.append(section_header("7. GENERAL EMERGENCY MEDICINE PRINCIPLES", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("7.1 Triage Systems")) story.append(sp(1)) triage_rows = [ ["ESI (Emergency Severity Index)", "5-level triage; Level 1 = Immediate/Resuscitation; Level 2 = Emergent; Level 3 = Urgent; Level 4 = Less urgent; Level 5 = Non-urgent", "Most common in EDs; considers resource prediction"], ["START Triage (Adults)", "Simple Triage And Rapid Treatment; 30 sec per patient; Assess: Respiration → Perfusion → Mental status", "Mass casualty; uses Red/Yellow/Green/Black tags"], ["JUMPSTART (Pediatric)", "Modified START for children < 8 years; if no breathing → 5 rescue breaths before tagging black", "MCI with pediatric victims"], ["SALT Triage", "Sort-Assess-Life-saving interventions-Treatment/Transport; US standard for MCI", "Military and civilian MCI"], ["4-color Tag System", "Red = Immediate (life-threatening but salvageable); Yellow = Delayed (stable); Green = Minor (walking wounded); Black = Expectant/Dead", "Applied in all mass casualty systems"], ] story.append(two_col_table(["System", "Key Features", "Use Case"], triage_rows, [4*cm, 9*cm, 4*cm])) story.append(sp(1)) story.append(sub_header("7.2 ABCDE Approach to the Undifferentiated Patient")) story.append(sp(1)) story.append(mnemonic_box("Universal ABCDE + F Approach", "A — Airway: patency, secretions, stridor, ability to protect; intervene first\n" "B — Breathing: RR, SpO2, auscultation, work of breathing; give O2 if SpO2 < 94%\n" "C — Circulation: HR, BP, CRT, JVP, skin perfusion; IV access + fluid bolus if shocked\n" "D — Disability: GCS, pupils (PERLA), BG (dextrose if hypoglycemic), posture\n" "E — Exposure: full body survey, temperature, rashes, wounds, back; prevent hypothermia\n" "F — Full history: AMPLE — Allergies, Medications, Past history, Last meal, Events")) story.append(sp(1)) story.append(sub_header("7.3 Patient Safety in the ED")) story.append(sp(1)) story.extend(bullets([ "SBAR communication: Situation | Background | Assessment | Recommendation", "5 Rights of medication safety: Right Patient | Drug | Dose | Route | Time", "Critical value reporting: abnormal labs must be communicated verbally + documented within specified timeframe", "Near-miss reporting: systems-based, not blame-based approach; root cause analysis (RCA)", "WHO Surgical Safety Checklist: Sign-in, Time-out, Sign-out — reduces surgical mortality by 47%", "Closed loop communication in resuscitation: team leader → team member → confirmatory read-back", "Door-to-Balloon time target: ≤ 90 minutes for STEMI PCI (hospital arrival to balloon inflation)", "Door-to-Needle time: ≤ 30 minutes for thrombolysis in STEMI", "Door-to-CT time: ≤ 25 minutes for stroke; IV tPA decision ≤ 60 min from arrival", ])) story.append(PageBreak()) # ============================================================================= # SECTION 8: DISASTER PREPAREDNESS # ============================================================================= story.append(section_header("8. DISASTER MEDICINE & PREPAREDNESS", DARK_BLUE)) story.append(sp(2)) story.append(sub_header("8.1 Disaster Management Cycle")) story.append(sp(1)) story.append(info_box("4 Phases of Disaster Management", [ "1. Mitigation: actions to reduce risk BEFORE a disaster (building codes, flood barriers, vaccination)", "2. Preparedness: planning, training, stockpiling, drills BEFORE disaster", "3. Response: immediate actions DURING and after disaster (search & rescue, triage, treatment)", "4. Recovery: restoring normal function AFTER disaster (rehabilitation, rebuilding, debriefing)", ])) story.append(sp(1)) story.append(sub_header("8.2 CBRN Agents — High-Yield Summary")) story.append(sp(1)) cbrn_rows = [ ["Nerve Agents (G & V series)", "Organophosphate-like; SLUDGE syndrome; miosis, seizures", "Atropine (large doses) + Pralidoxime + Diazepam"], ["Blister Agents (Mustard gas)", "Delayed blistering; ocular/respiratory damage; DNA alkylation", "Decontamination; supportive; no antidote"], ["Cyanide (blood agents)", "Inhibits cytochrome c oxidase; bitter almond smell; rapid loss of consciousness", "Hydroxocobalamin (IV) OR Sodium thiosulfate + Amyl nitrite"], ["Pulmonary Agents (Phosgene, Cl2)", "Pulmonary edema; delayed 4–24 h; chlorine has distinctive smell", "100% O2; corticosteroids; avoid exertion"], ["Anthrax (Bioterrorism)", "Cutaneous (most common), Inhalational (most lethal — mediastinal widening on CXR), GI", "Ciprofloxacin OR Doxycycline; post-exposure prophylaxis same"], ["Smallpox", "Centrifugal rash (face/extremities first); all in same stage; highly contagious", "Isolation; Tecovirimat (TPOXX); ring vaccination"], ["Radiation exposure", "ARS stages: prodrome → latent → manifest; CBC shows lymphopenia first", "Decontamination; KI for thyroid protection; GCSF for bone marrow"], ["Botulinum toxin", "Descending paralysis; dilated pupils; NO fever; NO sensory loss", "Antitoxin; mechanical ventilation"], ] story.append(two_col_table(["Agent", "Key Features", "Treatment"], cbrn_rows, [3.5*cm, 8*cm, 5.5*cm])) story.append(sp(1)) story.append(sub_header("8.3 Mass Casualty — Hospital Response")) story.append(sp(1)) story.append(green_box("Hospital Incident Command System (HICS)", [ "Incident Commander: overall responsibility; activates Hospital Emergency Operations Plan (HEOP)", "Operations Section: patient care operations, surge capacity", "Logistics Section: resources — supplies, equipment, personnel", "Planning Section: situational awareness, tracking resources/patients", "Finance/Administration: documentation of costs for FEMA reimbursement", "HEICS Color code: Code Orange = External MCI; Code Red = Internal fire; Code Blue = Medical emergency", ])) story.append(sp(1)) story.append(alert_box("Blast Injuries — Primary = overpressure wave (hollow organs — gut, ears, lungs); Secondary = fragmentation; Tertiary = displacement/thrown; Quaternary = burns/crush/toxic.")) story.append(sp(1)) # ============================================================================= # SECTION 9: QUICK-REVISION TABLES # ============================================================================= story.append(section_header("9. RAPID REVISION — FORMULAE & NORMAL VALUES", TEAL)) story.append(sp(2)) story.append(sub_header("9.1 Critical Formulae")) story.append(sp(1)) formula_rows = [ ["MAP", "DBP + 1/3 (SBP − DBP) OR DBP + 1/3 Pulse Pressure"], ["CPP", "MAP − ICP (target ≥ 60 mmHg)"], ["Anion Gap", "Na − (Cl + HCO3) | Normal: 8–12 mEq/L"], ["Corrected Ca", "Measured Ca + 0.8 × (4 − Albumin)"], ["FENa (pre-renal vs ATN)", "FENa = (Urine Na × Serum Cr) / (Serum Na × Urine Cr) × 100 | < 1% = pre-renal; > 2% = ATN"], ["Corrected Na in hyperglycemia", "Add 1.6 mEq/L Na for every 100 mg/dL glucose > 100"], ["Osmolality (calculated)", "2 × Na + (Glucose/18) + (BUN/2.8) | Normal: 280–295 mOsm/kg"], ["Osmol Gap", "Measured Osm − Calculated Osm | > 10 = methanol/ethylene glycol/ethanol"], ["Winter's Formula", "Expected PaCO2 = 1.5 × HCO3 + 8 ± 2 (for metabolic acidosis)"], ["Parkland Formula (Burns)", "4 mL × weight (kg) × %TBSA burned | Give half in first 8 h, rest over next 16 h"], ["Paediatric fluid bolus", "20 mL/kg IV crystalloid; repeat up to 3× in dehydration/shock"], ["ETT size (paed)", "(Age/4) + 4 for uncuffed; (Age/4) + 3.5 for cuffed"], ["ETT depth (paed)", "(Age/2) + 12 at lip"], ] story.append(two_col_table(["Formula", "Equation / Notes"], formula_rows, [5*cm, 12*cm])) story.append(sp(1)) story.append(sub_header("9.2 Critical Normal Values at a Glance")) story.append(sp(1)) normal_rows = [ ["pH", "7.35 – 7.45"], ["PaO2", "80 – 100 mmHg"], ["PaCO2", "35 – 45 mmHg"], ["HCO3", "22 – 26 mEq/L"], ["Lactate", "< 2.0 mmol/L"], ["ICP", "5 – 15 mmHg"], ["CPP", "≥ 60 mmHg"], ["Na", "135 – 145 mEq/L"], ["K", "3.5 – 5.0 mEq/L"], ["Glucose (fasting)", "70 – 100 mg/dL"], ["Creatinine", "0.6 – 1.2 mg/dL"], ["INR (normal)", "< 1.2"], ["Troponin (conventional)", "< 0.04 ng/mL (lab-specific)"], ["BNP", "< 100 pg/mL"], ["D-Dimer", "< 500 ng/mL (age-adjusted: age × 10 if > 50 yrs)"], ] col_data = [] for i in range(0, len(normal_rows), 2): row1 = normal_rows[i] row2 = normal_rows[i+1] if i+1 < len(normal_rows) else ["", ""] col_data.append(row1 + row2) hdr_st = make_style("TH2", fontSize=9.5, textColor=WHITE, fontName="Helvetica-Bold", leading=13) cell_st = make_style("TD2", fontSize=9.5, textColor=BLACK, fontName="Helvetica", leading=12) data2 = [[Paragraph(h, hdr_st) for h in ["Parameter", "Normal Range", "Parameter", "Normal Range"]]] for r in col_data: data2.append([Paragraph(str(c), cell_st) for c in r]) t2 = Table(data2, colWidths=[4.2*cm, 4.3*cm, 4.2*cm, 4.3*cm], repeatRows=1) t2.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_BLUE), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GRAY_LIGHT]), ("GRID", (0,0), (-1,-1), 0.5, GRAY_MID), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("LINEAFTER", (1,0), (1,-1), 1.5, DARK_BLUE), ])) story.append(t2) story.append(PageBreak()) # ============================================================================= # SECTION 10: SSQ PRACTICE QUESTIONS # ============================================================================= story.append(section_header("10. PRACTICE SSQs — PAPER I STYLE", colors.HexColor("#7B1A1A"))) story.append(sp(2)) story.append(Paragraph("Each question below is styled as a 10-mark Short-Structured Question (SSQ) as per NMC exam format.", body_style)) story.append(sp(1)) ssqs = [ ("Q1.", "Describe the anatomy of the cricothyroid membrane and outline the steps of emergency cricothyroidotomy."), ("Q2.", "Classify hemorrhagic shock into four classes. Describe the pathophysiology of compensated and decompensated shock."), ("Q3.", "A 45-year-old male presents with pH 7.18, PaCO2 22 mmHg, HCO3 9 mEq/L, Na 138, Cl 102. Calculate and interpret the anion gap. What are the possible diagnoses?"), ("Q4.", "Explain the Monroe-Kellie doctrine. Describe the physiological basis of management of raised intracranial pressure in the ED."), ("Q5.", "Define Sepsis-3. Describe the Hour-1 Bundle for septic shock management."), ("Q6.", "Discuss the types of evidence in EBM. Explain sensitivity, specificity, PPV and NPV with clinical examples from emergency medicine."), ("Q7.", "Describe the START triage system. How is it applied in a mass casualty incident?"), ("Q8.", "Discuss the pathophysiology and emergency management of Disseminated Intravascular Coagulation (DIC)."), ("Q9.", "What is the SOFA score? How is it used in the diagnosis and prognostication of sepsis?"), ("Q10.", "Describe the biochemical abnormalities in DKA and outline the principles of emergency management including fluid, insulin, and electrolyte correction."), ] for num, q in ssqs: q_st = make_style(f"Q{num}", fontSize=10, textColor=DARK_BLUE, fontName="Helvetica-Bold", leading=15) data = [[Paragraph(num, q_st), Paragraph(q, body_style)]] t = Table(data, colWidths=[1.2*cm, 15.8*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), GRAY_LIGHT), ("BOX", (0,0), (-1,-1), 0.8, MED_BLUE), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(KeepTogether([t, sp(1)])) story.append(sp(2)) story.append(hr()) story.append(sp(1)) foot_st = make_style("Footer", fontSize=8.5, textColor=colors.HexColor("#555555"), fontName="Helvetica-Oblique", alignment=TA_CENTER, leading=12) story.append(Paragraph( "Study Guide prepared based on NMC MD Emergency Medicine Curriculum (Notification No. N-P050(20)/16/2024-PGMEB-NMC, dated 07/10/2024) | " "For educational use | Verify all drug doses and clinical guidelines with current authoritative sources before clinical application.", foot_st)) # ── BUILD ───────────────────────────────────────────────────────────────────── doc.build(story) print(f"PDF generated: {output_path}") PYEOF echo "Script written successfully"
cd /tmp/workspace/em-paper1 && python generate_pdf.py 2>&1
~/em-paper1/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/em-paper1/generate_pdf.py'
cd /tmp/workspace/em-paper1 && python generate_pdf.py 2>&1
~/em-paper1/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/em-paper1/generate_pdf.py'
cd /tmp/workspace/em-paper1 && python -c " import ast, sys with open('generate_pdf.py') as f: src = f.read() try: ast.parse(src) print('Syntax OK') except SyntaxError as e: print(f'SyntaxError at line {e.lineno}: {e.msg}') "
cd /tmp/workspace/em-paper1 && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/em-paper1/MD_EM_Paper1_Study_Guide.pdf
MD EM Paper1 Study Guide
PDF Document · PDF
| Section | Content |
|---|---|
| Cover + Format | Exam pattern, subject coverage table |
| 1. Applied Anatomy | Airway (LEMON mnemonic), thoracic, vascular access (NAVEL), neuro/spine |
| 2. Applied Physiology | Shock classes table, ABCDE shock types, ABG interpretation (ROME + MUDPILES), cardiorespiratory, ICP management |
| 3. Biochemistry | Cardiac biomarkers timeline table, DKA criteria, sepsis biomarkers, LFTs |
| 4. Microbiology | Organisms per condition table, antibiotic timing, empirical choices, tropical infections (malaria/dengue/leptospirosis/typhoid) |
| 5. Pathology | Sepsis-3 / qSOFA table, Hour-1 Bundle mnemonic, DIC, trauma coagulopathy + TXA |
| 6. Research & Stats | Evidence hierarchy, sensitivity/specificity/PPV/NPV table, all clinical scoring systems (GCS, SOFA, CURB-65, Wells, HEART, APACHE II, Alvarado) |
| 7. General EM Principles | Triage systems, ABCDE+F mnemonic, patient safety targets (D2B, D2N, D2CT) |
| 8. Disaster Medicine | 4-phase cycle, CBRN agents table (with antidotes), HICS, blast injury classification |
| 9. Rapid Revision | All critical formulae (MAP, CPP, Anion Gap, Parkland, Paeds dosing) + normal values in 2-column layout |
| 10. Practice SSQs | 10 exam-style questions in SSQ format, matching actual Paper I topics |