Idk where to start in microbiology uk the pattern has changed its clinical based questions how to study what lectures to watch or what notes yo make
UK MBBS preclinical microbiology clinical based questions study guide 2025
UK medical school preclinical microbiology clinical vignette approach study strategy UKMLA
https://www.iatrox.com/blog/what-is-the-ukmla-complete-2026-…
best YouTube channels microbiology preclinical UK medical students clinical scenarios 2025
Organism → mechanism/virulence → clinical presentation → investigations → treatment
| Syndrome | Top organisms to know |
|---|---|
| Community-acquired pneumonia | S. pneumoniae, Mycoplasma, Legionella, viruses |
| UTI | E. coli, Klebsiella, Staphylococcus saprophyticus (young women) |
| Meningitis | N. meningitidis, S. pneumoniae, Listeria (neonates/elderly) |
| Septic arthritis | S. aureus, Neisseria gonorrhoeae (sexually active adults) |
| Diarrhoea | Campylobacter, Salmonella, C. diff (post-antibiotics), ETEC (traveller) |
| Endocarditis | Viridans streptococci (native valve), S. aureus (IV drug users) |
Organism: ________________
Gram / classification:
Virulence factors (1-2 key ones):
Clinical presentations (list by system):
At-risk host:
Key investigation:
Treatment (first-line):
Resistance / complications to note:
Classic exam vignette: [write one yourself]
| Day | Activity |
|---|---|
| Mon-Tue | Learn 2-3 new organisms/syndromes (lecture + short note using template) |
| Wed | Do 15-20 SBA questions on that week's topic; review every wrong answer |
| Thu | Review previous week's material (spaced repetition) |
| Fri | One clinical case/vignette per syndrome - write out your reasoning |
| Weekend | Anki review + any gaps identified from questions |
I study in India chennai mbbs 2nd year
India NMC MBBS 2nd year microbiology exam pattern 2024 2025 clinical based competency questions
https://mgmuhs.com/pdfs/curriculum/medical/mbbs/2nd-year/Mic…
India CBME MBBS microbiology 2nd year how to study scenario based MCQ Ananthnarayan Chennai tips
| Section | Question Type | Marks |
|---|---|---|
| Section A | Clinical Scenario-Based MCQs (10 Qs) | 20 marks |
| Section B | BAQs (5), SAQs (3), Structured LAQ (1) | 40 marks |
| Section C | BAQs (5), SAQs (3), Structured LAQ (1) | 40 marks |
| Practicals | Gram stain, Stool exam, Spots (10), Clinical Case (2 x 15 = 30 marks), OSPE | 100 marks |
"A 45-year-old man from Chennai presents with 3 weeks of low-grade fever, night sweats, weight loss, and productive cough. Sputum examination requested. What organism? What stain? What medium?"
| Feature | Details |
|---|---|
| Gram stain / morphology | |
| Virulence factor (key) | |
| Disease caused | |
| Sample | |
| Key test / medium | |
| Treatment | |
| Classic vignette trigger |
| Days | Focus |
|---|---|
| Mon-Tue | 2 topics from current chapter (read + make table notes) |
| Wed | 20 scenario-based MCQs on those topics + review errors |
| Thu | Revisit previous week's topics (spaced recall) |
| Fri | One clinical case writeup (practical style) |
| Sat | Short notes / BAQ writing practice (timed, 5-7 min per answer) |
| Sun | Anki / flashcard review + spots review |
"A 20-year-old student returns from a village with 10 days of fever, relative bradycardia, and rose spots on the trunk. Blood culture at 1st week is positive. What is the most likely organism and which medium was used?"
Create a study guide PDF for Paper 1 (General Micro, Immunology, CVS, GI, CNS)
mkdir -p /tmp/workspace/micro-guide && ls /tmp/workspace/micro-guide/
~/micro-guide/build_guide.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
# ── Colours ──────────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3557")
MID_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
ACCENT = colors.HexColor("#E8740C")
LIGHT_GREY = colors.HexColor("#F4F6F8")
GREEN = colors.HexColor("#1B6E3A")
LIGHT_GREEN = colors.HexColor("#D4EDDA")
RED_LIGHT = colors.HexColor("#FDECEA")
RED = colors.HexColor("#C0392B")
YELLOW_LIGHT= colors.HexColor("#FFF8E1")
WHITE = colors.white
BLACK = colors.black
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
COVER_TITLE = S("CoverTitle", fontSize=28, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=36)
COVER_SUB = S("CoverSub", fontSize=14, fontName="Helvetica", textColor=LIGHT_BLUE, alignment=TA_CENTER, leading=22)
COVER_INFO = S("CoverInfo", fontSize=11, fontName="Helvetica", textColor=LIGHT_BLUE, alignment=TA_CENTER, leading=18)
CHAPTER_TITLE = S("ChapterTitle", fontSize=18, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_LEFT, spaceAfter=2)
SECTION_HEAD = S("SectionHead", fontSize=13, fontName="Helvetica-Bold", textColor=DARK_BLUE, spaceBefore=10, spaceAfter=4)
SUBSEC_HEAD = S("SubsecHead", fontSize=11, fontName="Helvetica-Bold", textColor=MID_BLUE, spaceBefore=6, spaceAfter=3)
BODY = S("Body", fontSize=9.5, fontName="Helvetica", textColor=BLACK, leading=14, spaceAfter=3)
BODY_BOLD = S("BodyBold", fontSize=9.5, fontName="Helvetica-Bold", textColor=BLACK, leading=14)
SMALL = S("Small", fontSize=8.5, fontName="Helvetica", textColor=colors.HexColor("#444444"), leading=13)
SMALL_BOLD = S("SmallBold", fontSize=8.5, fontName="Helvetica-Bold", textColor=BLACK, leading=13)
EXAM_TIP = S("ExamTip", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT, leading=13)
NOTE_STYLE = S("Note", fontSize=9, fontName="Helvetica-Oblique", textColor=colors.HexColor("#555555"), leading=13)
TOC_ENTRY = S("TOCEntry", fontSize=10, fontName="Helvetica", textColor=DARK_BLUE, leading=18)
TOC_CH = S("TOCCh", fontSize=11, fontName="Helvetica-Bold", textColor=DARK_BLUE, leading=20)
# ── Helpers ───────────────────────────────────────────────────────────────────
def chapter_header(title, subtitle=""):
tbl_data = [[Paragraph(title, CHAPTER_TITLE)]]
if subtitle:
tbl_data.append([Paragraph(subtitle, S("CS", fontSize=10, fontName="Helvetica-Oblique", textColor=LIGHT_BLUE))])
t = Table(tbl_data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", (0,0), (-1,-1), 6),
]))
return t
def tip_box(text):
inner = Table([[Paragraph(f"<b>EXAM TIP:</b> {text}", EXAM_TIP)]], colWidths=[16.5*cm])
inner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), YELLOW_LIGHT),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1, ACCENT),
("ROUNDEDCORNERS", (0,0), (-1,-1), 4),
]))
return inner
def clinical_vignette(text):
inner = Table([[Paragraph(f"<b>CLINICAL VIGNETTE:</b> {text}", S("CV", fontSize=9, fontName="Helvetica-Oblique", textColor=colors.HexColor("#1A5276"), leading=13))]], colWidths=[16.5*cm])
inner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1, MID_BLUE),
]))
return inner
def std_table(header_row, data_rows, col_widths=None):
all_rows = [header_row] + data_rows
if not col_widths:
col_widths = [17*cm / len(header_row)] * len(header_row)
t = Table(all_rows, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
t.setStyle(TableStyle(style))
return t
def P(text, style=None):
return Paragraph(text, style or BODY)
def B(text):
return Paragraph(text, BODY_BOLD)
def spacer(h=0.3):
return Spacer(1, h*cm)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC"), spaceAfter=4)
# ═══════════════════════════════════════════════════════════════════════════════
# CONTENT BUILDER
# ═══════════════════════════════════════════════════════════════════════════════
story = []
# ── COVER PAGE ─────────────────────────────────────────────────────────────────
cover_bg = Table(
[[Paragraph("MBBS 2nd Year", COVER_INFO)],
[Paragraph("Microbiology", COVER_TITLE)],
[Paragraph("Paper 1 Study Guide", COVER_SUB)],
[Spacer(1, 0.4*cm)],
[Paragraph("General Microbiology • Immunology • CVS & Blood", COVER_INFO)],
[Paragraph("GI & Hepatobiliary • CNS Infections", COVER_INFO)],
[Spacer(1, 1.5*cm)],
[Paragraph("NMC CBME Pattern | Clinical Scenario-Based | Chennai / India", COVER_INFO)],
],
colWidths=[17*cm]
)
cover_bg.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), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
("ROUNDEDCORNERS",(0,0), (-1,-1), 8),
]))
story += [Spacer(1, 3*cm), cover_bg, Spacer(1, 2*cm)]
story += [P("This guide follows the NMC Competency-Based Medical Education (CBME) curriculum for MBBS Phase 2. "
"Every section includes high-yield tables, organism comparison charts, and clinical vignettes that "
"mirror the new Clinical Scenario-Based MCQ format. Use alongside Ananthnarayan & Paniker and "
"Essentials of Medical Microbiology (Sastry).", NOTE_STYLE)]
story.append(PageBreak())
# ── TABLE OF CONTENTS ──────────────────────────────────────────────────────────
story += [chapter_header("Table of Contents"), spacer(0.4)]
toc_items = [
("1", "General Microbiology", "Gram stain, culture media, sterilization, microscopy, normal flora"),
("2", "Immunology", "Innate/adaptive immunity, hypersensitivity (I-IV), vaccines, complement"),
("3", "CVS & Blood Infections","Infective endocarditis, septicaemia, rheumatic fever, blood-borne viruses"),
("4", "GI & Hepatobiliary", "Cholera, typhoid, H. pylori, food poisoning, hepatitis A-E, amoebiasis"),
("5", "CNS Infections", "Meningitis (bacterial/viral/TB/fungal), encephalitis, brain abscess, CSF analysis"),
("6", "Quick Revision Tables","Combined high-yield organism tables and last-minute MCQ facts"),
]
for num, title, desc in toc_items:
story.append(P(f"<b>Section {num}</b> — <b>{title}</b>", TOC_CH))
story.append(P(f" {desc}", SMALL))
story.append(spacer(0.1))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 1: GENERAL MICROBIOLOGY
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 1 — General Microbiology", "Morphology · Stains · Culture · Sterilization · Normal Flora"), spacer(0.5)]
story += [P("""General microbiology forms the <b>foundation</b> for all system-wise topics.
The CBME exam tests these through scenario MCQs like: <i>"A lab technician performs a stain on a
sputum sample and sees pink/red rods — which stain was used and what organism is suspected?"</i>"""), spacer(0.2)]
# 1.1 Gram Stain
story += [P("<b>1.1 Gram Stain — Steps and Interpretation</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Step</b>", SMALL_BOLD), P("<b>Reagent</b>", SMALL_BOLD), P("<b>Purpose</b>", SMALL_BOLD), P("<b>Gram+ Result</b>", SMALL_BOLD), P("<b>Gram- Result</b>", SMALL_BOLD)],
[
[P("1",SMALL), P("Crystal Violet (primary)",SMALL), P("Stains all purple",SMALL), P("Purple",SMALL), P("Purple",SMALL)],
[P("2",SMALL), P("Gram's Iodine (mordant)",SMALL), P("Fixes dye to cell wall",SMALL), P("Purple",SMALL), P("Purple",SMALL)],
[P("3",SMALL), P("Acetone/Alcohol (decoloriser)",SMALL), P("Removes dye",SMALL), P("<b>Retains Purple</b>",SMALL_BOLD), P("Colorless",SMALL)],
[P("4",SMALL), P("Safranin (counterstain)",SMALL), P("Colors decolorized cells",SMALL), P("Purple (unchanged)",SMALL), P("<b>Pink/Red</b>",SMALL_BOLD)],
],
col_widths=[1.5*cm, 4.5*cm, 4*cm, 3.5*cm, 3.5*cm]
), spacer(0.3)]
story += [P("<b>Key Gram-Positive Organisms:</b>"),
P("Staphylococci, Streptococci, Pneumococci, Bacillus, Clostridium, Listeria, Corynebacterium"),
P("<b>Key Gram-Negative Organisms:</b>"),
P("E. coli, Klebsiella, Salmonella, Shigella, Vibrio, Neisseria, H. influenzae, Pseudomonas, Bordetella"),
spacer(0.2)]
story += [tip_box("Gram stain FAILS for: Mycobacteria (use ZN), Mycoplasma (no cell wall), Treponema (too thin — use Dark field), Rickettsia (intracellular)."), spacer(0.3)]
# ZN Stain
story += [P("<b>1.2 Special Stains — High Yield Table</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Stain</b>", SMALL_BOLD), P("<b>Organism</b>", SMALL_BOLD), P("<b>Result</b>", SMALL_BOLD), P("<b>Used For</b>", SMALL_BOLD)],
[
[P("Ziehl-Neelsen (ZN)",SMALL), P("Mycobacteria, Nocardia",SMALL), P("Acid-fast bacilli = pink/red on blue",SMALL), P("TB, leprosy",SMALL)],
[P("Modified ZN",SMALL), P("Cryptosporidium, Isospora",SMALL), P("Oocysts = pink/red",SMALL), P("Diarrhoea in immunocompromised",SMALL)],
[P("India Ink / Nigrosin",SMALL), P("Cryptococcus neoformans",SMALL), P("Clear halo (capsule) on dark bg",SMALL), P("Fungal meningitis in HIV",SMALL)],
[P("Giemsa",SMALL), P("Malaria, Leishmania, Rickettsia",SMALL), P("Parasites in RBCs",SMALL), P("Blood parasites",SMALL)],
[P("PAS (Periodic Acid-Schiff)",SMALL), P("Fungi",SMALL), P("Fungal wall = magenta",SMALL), P("Tissue fungi",SMALL)],
[P("Methenamine Silver",SMALL), P("Pneumocystis jirovecii, fungi",SMALL), P("Black organisms on green bg",SMALL), P("PCP pneumonia",SMALL)],
[P("Albert's Stain",SMALL), P("Corynebacterium diphtheriae",SMALL), P("Metachromatic granules (volutin)",SMALL), P("Diphtheria diagnosis",SMALL)],
[P("Dark Field Microscopy",SMALL), P("Treponema pallidum",SMALL), P("Motile spirochetes",SMALL), P("Primary syphilis",SMALL)],
],
col_widths=[4*cm, 4*cm, 5*cm, 4*cm]
), spacer(0.3)]
# Culture Media
story += [P("<b>1.3 Culture Media — Must-Know for Spots and MCQs</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Medium</b>", SMALL_BOLD), P("<b>Type</b>", SMALL_BOLD), P("<b>Organism</b>", SMALL_BOLD), P("<b>Key Feature/Result</b>", SMALL_BOLD)],
[
[P("Blood Agar",SMALL),P("Enriched",SMALL),P("Most bacteria",SMALL),P("Alpha (green), Beta (clear), Gamma (no) haemolysis",SMALL)],
[P("Chocolate Agar",SMALL),P("Enriched (heated blood)",SMALL),P("Neisseria, H. influenzae",SMALL),P("Brown colour; X+V factor growth",SMALL)],
[P("MacConkey Agar",SMALL),P("Selective + Differential",SMALL),P("Gram-negative enteric",SMALL),P("Pink = lactose fermenter (E. coli); Colorless = non-fermenter (Salmonella/Shigella)",SMALL)],
[P("TCBS",SMALL),P("Selective",SMALL),P("Vibrio cholerae",SMALL),P("Yellow colonies (sucrose fermenter)",SMALL)],
[P("BCYE (Buffered charcoal yeast extract)",SMALL),P("Special",SMALL),P("Legionella",SMALL),P("Requires L-cysteine; grey-blue colonies",SMALL)],
[P("LJ (Lowenstein-Jensen)",SMALL),P("Special",SMALL),P("Mycobacterium tuberculosis",SMALL),P("Buff/cream, rough colonies; takes 6-8 weeks",SMALL)],
[P("Thayer-Martin",SMALL),P("Selective",SMALL),P("Neisseria gonorrhoeae",SMALL),P("Inhibits commensals; oxidase positive",SMALL)],
[P("Tellurite / Hoyle's",SMALL),P("Selective",SMALL),P("C. diphtheriae",SMALL),P("Black colonies (tellurite reduction)",SMALL)],
[P("CLED",SMALL),P("Selective",SMALL),P("UTI organisms",SMALL),P("No swarming; lactose fermenters = yellow",SMALL)],
[P("Bordet-Gengou",SMALL),P("Special",SMALL),P("Bordetella pertussis",SMALL),P("Mercury drop colonies; nicotinamide required",SMALL)],
],
col_widths=[4*cm, 3*cm, 4*cm, 6*cm]
), spacer(0.3)]
story += [clinical_vignette("A microbiologist cultures a urine sample on CLED agar and sees yellow colonies. The organism is oxidase-negative and ferments lactose. Most likely organism: E. coli. Next step: Sensitivity testing."), spacer(0.3)]
# Sterilization
story += [P("<b>1.4 Sterilization and Disinfection</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Method</b>", SMALL_BOLD), P("<b>Temp / Details</b>", SMALL_BOLD), P("<b>Kills</b>", SMALL_BOLD), P("<b>Does NOT Kill</b>", SMALL_BOLD), P("<b>Used For</b>", SMALL_BOLD)],
[
[P("Autoclave (moist heat)",SMALL),P("121°C / 15 min at 15 psi\n134°C / 3 min",SMALL),P("All including spores",SMALL),P("Prions (needs 134°C longer)",SMALL),P("Surgical instruments, media",SMALL)],
[P("Hot Air Oven (dry heat)",SMALL),P("160°C / 60 min OR 180°C / 30 min",SMALL),P("All including spores",SMALL),P("—",SMALL),P("Glassware, sharp instruments, oils",SMALL)],
[P("Pasteurization",SMALL),P("HTST: 72°C / 15 sec\nLTLT: 63°C / 30 min",SMALL),P("Vegetative bacteria",SMALL),P("Spores, hepatitis A virus (sometimes)",SMALL),P("Milk, dairy",SMALL)],
[P("Boiling (100°C)",SMALL),P("100°C / 15-20 min",SMALL),P("Vegetative forms",SMALL),P("Spores, hepatitis B, prions",SMALL),P("Emergency instrument decontam",SMALL)],
[P("Incineration",SMALL),P("340°C+ (red heat / flaming)",SMALL),P("Everything",SMALL),P("—",SMALL),P("Inoculation loops, infected material",SMALL)],
[P("Filtration",SMALL),P("0.22 μm membrane filter",SMALL),P("Bacteria, fungi",SMALL),P("Viruses (pass through)",SMALL),P("Heat-sensitive liquids, sera",SMALL)],
[P("UV Radiation",SMALL),P("253.7 nm wavelength",SMALL),P("Vegetative organisms",SMALL),P("Spores, cannot penetrate",SMALL),P("OT air, laminar flow",SMALL)],
[P("Glutaraldehyde (2%)",SMALL),P("Contact 10h = sterilize; 20min = disinfect",SMALL),P("All including spores (prolonged)",SMALL),P("—",SMALL),P("Endoscopes, delicate instruments",SMALL)],
],
col_widths=[3.5*cm, 3.5*cm, 3.5*cm, 3.5*cm, 3*cm]
), spacer(0.3)]
story += [tip_box("Memory: Autoclave = 121-15-15 (°C - min - psi). Hot air oven = 160-60 (or 180-30). Dry heat needs HIGHER temp than moist heat because water is a better conductor."), spacer(0.3)]
# Normal Flora
story += [P("<b>1.5 Normal Flora — High Yield Sites</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Site</b>", SMALL_BOLD), P("<b>Predominant Organisms</b>", SMALL_BOLD), P("<b>Clinical Significance</b>", SMALL_BOLD)],
[
[P("Skin",SMALL), P("Staph. epidermidis, Propionibacterium acnes, Corynebacterium",SMALL), P("Coagulase-negative Staph = infection in prosthetic devices",SMALL)],
[P("Mouth/Throat",SMALL), P("Viridans streptococci, Neisseria commensals, Candida",SMALL), P("Viridans Strep = subacute infective endocarditis after dental procedure",SMALL)],
[P("Colon",SMALL), P("E. coli, Bacteroides fragilis (anaerobe — most common!), Bifidobacterium",SMALL), P("Bacteroides = post-surgical abdominal infections",SMALL)],
[P("Vagina",SMALL), P("Lactobacillus (acidophilus) — pH 4.5",SMALL), P("Disruption → BV (Gardnerella), candidiasis",SMALL)],
[P("Nasal",SMALL), P("Staph. aureus (carried asymptomatically)",SMALL), P("~30% population carry; source of MRSA spread",SMALL)],
],
col_widths=[3*cm, 7*cm, 7*cm]
), spacer(0.3)]
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 2: IMMUNOLOGY
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 2 — Immunology", "Innate & Adaptive · Hypersensitivity · Complement · Vaccines · Immunodeficiency"), spacer(0.5)]
# 2.1 Overview
story += [P("<b>2.1 Innate vs Adaptive Immunity — Key Differences</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Feature</b>", SMALL_BOLD), P("<b>Innate Immunity</b>", SMALL_BOLD), P("<b>Adaptive Immunity</b>", SMALL_BOLD)],
[
[P("Speed",SMALL), P("Immediate (minutes-hours)",SMALL), P("Days to weeks (first exposure)",SMALL)],
[P("Specificity",SMALL), P("Non-specific (PAMPs via PRRs, TLRs)",SMALL), P("Highly specific (antigen-specific)",SMALL)],
[P("Memory",SMALL), P("No immunological memory",SMALL), P("Yes — basis of vaccination",SMALL)],
[P("Components",SMALL), P("Skin, mucus, phagocytes, NK cells, complement, fever",SMALL), P("B cells (antibodies), T cells (cell-mediated)",SMALL)],
[P("Cells",SMALL), P("Neutrophils, macrophages, dendritic cells, NK cells, mast cells",SMALL), P("T lymphocytes (CD4, CD8), B lymphocytes, plasma cells",SMALL)],
],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
), spacer(0.3)]
# 2.2 Hypersensitivity
story += [P("<b>2.2 Hypersensitivity Reactions (Gell & Coombs Classification) — MOST TESTED</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Type</b>", SMALL_BOLD), P("<b>Name</b>", SMALL_BOLD), P("<b>Mediator</b>", SMALL_BOLD), P("<b>Time</b>", SMALL_BOLD), P("<b>Classic Examples</b>", SMALL_BOLD)],
[
[P("Type I",SMALL), P("Anaphylactic / Immediate",SMALL), P("IgE + mast cells → histamine",SMALL), P("Seconds-minutes",SMALL), P("Anaphylaxis, allergic asthma, urticaria, hay fever, penicillin allergy (IgE-mediated)",SMALL)],
[P("Type II",SMALL), P("Cytotoxic / Antibody-mediated",SMALL), P("IgG/IgM → complement or ADCC",SMALL), P("Hours",SMALL), P("Haemolytic disease of newborn (Rh), autoimmune haemolytic anaemia, Goodpasture's (anti-GBM), ITP, myasthenia gravis",SMALL)],
[P("Type III",SMALL), P("Immune Complex",SMALL), P("Antigen-antibody complexes → complement → neutrophil",SMALL), P("Hours-days",SMALL), P("SLE, serum sickness, post-streptococcal GN, Farmer's lung, Arthus reaction",SMALL)],
[P("Type IV",SMALL), P("Delayed / Cell-Mediated (DTH)",SMALL), P("Sensitized T cells (Th1), macrophages",SMALL), P("48-72 hours",SMALL), P("Contact dermatitis (nickel, poison ivy), Mantoux/PPD test, TB granuloma, graft rejection",SMALL)],
],
col_widths=[1.5*cm, 3.5*cm, 4*cm, 2.5*cm, 5.5*cm]
), spacer(0.3)]
story += [tip_box("Mnemonic: Types I-II-III = Antibody mediated (IgE, IgG/M, immune complexes). Only Type IV = T-cell mediated (no antibody). Mantoux test = Type IV."), spacer(0.3)]
story += [clinical_vignette("A nurse gives a patient a penicillin injection. Within 5 minutes he develops hypotension, urticaria, and wheezing. Type: I (IgE-mediated anaphylaxis). Mediator: Histamine from mast cells. Management: Adrenaline 0.5 mg IM."), spacer(0.3)]
# 2.3 Complement
story += [P("<b>2.3 Complement System</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Pathway</b>", SMALL_BOLD), P("<b>Trigger</b>", SMALL_BOLD), P("<b>Key Components</b>", SMALL_BOLD)],
[
[P("Classical",SMALL), P("IgG/IgM-antigen complex",SMALL), P("C1q → C1r → C1s → C4, C2 → C3 convertase",SMALL)],
[P("Lectin (MBL)",SMALL), P("Mannose residues on microbes",SMALL), P("MBL → MASP1/2 → same as classical after C4",SMALL)],
[P("Alternative",SMALL), P("Spontaneous C3 hydrolysis on foreign surfaces",SMALL), P("C3b + Factor B + Factor D → C3 convertase",SMALL)],
],
col_widths=[4*cm, 6*cm, 7*cm]
), spacer(0.2)]
story += [P("<b>End result (all pathways):</b> MAC (Membrane Attack Complex) C5b-C9 → cell lysis")]
story += [P("<b>Key Complement Deficiency Clinical Correlates:</b>")]
story += [std_table(
[P("<b>Deficiency</b>", SMALL_BOLD), P("<b>Consequence</b>", SMALL_BOLD)],
[
[P("C1q, C2, C4 (early classical)",SMALL), P("Recurrent SLE-like illness, immune complex disease",SMALL)],
[P("C3",SMALL), P("Recurrent severe bacterial infections (most serious deficiency)",SMALL)],
[P("C5-C9 (terminal / MAC)",SMALL), P("Recurrent Neisseria infections (gonorrhoea, meningococcal)",SMALL)],
[P("DAF / CD55 (complement regulator)",SMALL), P("PNH — paroxysmal nocturnal haemoglobinuria",SMALL)],
],
col_widths=[7*cm, 10*cm]
), spacer(0.3)]
# 2.4 Vaccines
story += [P("<b>2.4 Vaccines — Types and Indian NIP Schedule (Key Facts)</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Vaccine Type</b>", SMALL_BOLD), P("<b>Examples</b>", SMALL_BOLD), P("<b>Key Features</b>", SMALL_BOLD)],
[
[P("Live attenuated",SMALL), P("BCG, OPV, MMR, Varicella, Yellow Fever, Rotavirus",SMALL), P("Strong immunity (humoral + cellular); can cause disease in immunocompromised; needs cold chain",SMALL)],
[P("Killed (inactivated)",SMALL), P("IPV, Hepatitis A, Influenza (injectable), Rabies, Typhoid Vi",SMALL), P("Safer; multiple doses needed; only humoral",SMALL)],
[P("Toxoid",SMALL), P("Diphtheria (DT), Tetanus",SMALL), P("Inactivated exotoxin; stimulates antitoxin antibodies",SMALL)],
[P("Subunit / Recombinant",SMALL), P("Hepatitis B (HBsAg), HPV, acellular Pertussis",SMALL), P("Very safe; no live organism",SMALL)],
[P("Conjugate",SMALL), P("Hib, Meningococcal, Pneumococcal (PCV)",SMALL), P("Polysaccharide + carrier protein → T-dependent response; works in infants",SMALL)],
],
col_widths=[4*cm, 6*cm, 7*cm]
), spacer(0.3)]
story += [tip_box("Cold chain: 2–8°C for most vaccines. OPV stored at -20°C. BCG and OPV are live — NEVER give in HIV-positive, immunocompromised, or during pregnancy."), spacer(0.3)]
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 3: CVS & BLOOD INFECTIONS
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 3 — CVS & Blood Infections", "Infective Endocarditis · Septicaemia · Rheumatic Fever · Blood-Borne Viruses"), spacer(0.5)]
story += [P("<b>3.1 Infective Endocarditis (IE) — Organism by Risk Factor</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Risk Factor / Patient</b>", SMALL_BOLD), P("<b>Most Likely Organism</b>", SMALL_BOLD), P("<b>Notes</b>", SMALL_BOLD)],
[
[P("Dental procedure / native valve",SMALL), P("Streptococcus viridans (alpha-haemolytic strep)",SMALL), P("Most common cause of subacute IE; Strep mitis, Strep sanguinis",SMALL)],
[P("IV drug user",SMALL), P("Staphylococcus aureus",SMALL), P("Tricuspid valve involvement; acute course",SMALL)],
[P("Prosthetic valve (early <60 days)",SMALL), P("Staph. epidermidis (CoNS)",SMALL), P("Coagulase-negative, biofilm on prosthesis",SMALL)],
[P("Prosthetic valve (late >60 days)",SMALL), P("Strep. viridans, Staph. epidermidis",SMALL), P("Similar to native valve",SMALL)],
[P("GI/GU procedure",SMALL), P("Enterococcus faecalis",SMALL), P("Group D streptococcus",SMALL)],
[P("HACEK organisms",SMALL), P("Haemophilus, Actinobacillus, Cardiobacterium, Eikenella, Kingella",SMALL), P("Gram-neg, slow-growing; culture >5 days; culture-negative IE",SMALL)],
[P("Colon cancer / elderly",SMALL), P("Streptococcus bovis (S. gallolyticus)",SMALL), P("ALWAYS screen for colorectal cancer",SMALL)],
],
col_widths=[4.5*cm, 5.5*cm, 7*cm]
), spacer(0.3)]
story += [P("<b>3.2 Duke's Criteria for IE Diagnosis</b>", SUBSEC_HEAD)]
story += [P("<b>Major Criteria:</b>")]
story += [P("1. Positive blood cultures: ≥2 positive cultures with typical IE organism OR persistently positive cultures")]
story += [P("2. Evidence of endocardial involvement: positive echo (vegetation / abscess) or new valvular regurgitation")]
story += [spacer(0.1), P("<b>Minor Criteria:</b> Predisposing condition, fever >38°C, vascular phenomena (septic emboli, Janeway lesions), immunological phenomena (Osler nodes, Roth spots, RF positive), positive culture not meeting major criteria")]
story += [spacer(0.1), P("<b>Definite IE:</b> 2 major / 1 major + 3 minor / 5 minor criteria")]
story += [spacer(0.2)]
story += [tip_box("Janeway lesions = painless (embolic, on palms/soles). Osler nodes = painful (immune complex, on fingertips). Roth spots = retinal haemorrhages with pale centre."), spacer(0.3)]
story += [clinical_vignette("A 35-year-old with a history of dental extraction 2 weeks ago presents with 3 weeks of low-grade fever, night sweats, and a new murmur. Blood cultures x3 grow alpha-haemolytic Streptococcus. Echo shows a vegetation on the mitral valve. Diagnosis: Subacute IE (Strep viridans). Treatment: IV Benzylpenicillin + Gentamicin for 4-6 weeks."), spacer(0.3)]
# 3.3 Septicaemia
story += [P("<b>3.3 Septicaemia — Blood Culture and Key Organisms</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Setting</b>", SMALL_BOLD), P("<b>Organism</b>", SMALL_BOLD), P("<b>Key Feature</b>", SMALL_BOLD)],
[
[P("Community-acquired",SMALL), P("E. coli (most common), Staph. aureus, Strep. pneumoniae",SMALL), P("Source usually UTI, pneumonia, skin",SMALL)],
[P("Hospital-acquired",SMALL), P("E. coli, Klebsiella, Pseudomonas, MRSA, CoNS",SMALL), P("IV line, catheter, ventilator",SMALL)],
[P("Neonatal (early <7d)",SMALL), P("Group B Streptococcus (GBS), E. coli, Listeria",SMALL), P("Maternal colonization, vaginal delivery",SMALL)],
[P("Neonatal (late >7d)",SMALL), P("Staph. epidermidis, Klebsiella, Pseudomonas",SMALL), P("IV catheter, prematurity",SMALL)],
[P("Asplenic patient",SMALL), P("S. pneumoniae, H. influenzae, N. meningitidis — 'PHN'",SMALL), P("Overwhelming post-splenectomy sepsis; vaccinate before splenectomy",SMALL)],
[P("Meningococcaemia",SMALL), P("Neisseria meningitidis",SMALL), P("Non-blanching petechial / purpuric rash — EMERGENCY",SMALL)],
],
col_widths=[4*cm, 5.5*cm, 7.5*cm]
), spacer(0.3)]
# Blood borne viruses
story += [P("<b>3.4 Blood-Borne Viruses (BBV)</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Virus</b>", SMALL_BOLD), P("<b>Route</b>", SMALL_BOLD), P("<b>Incubation</b>", SMALL_BOLD), P("<b>Chronicity</b>", SMALL_BOLD), P("<b>Cancer Risk</b>", SMALL_BOLD), P("<b>Vaccine</b>", SMALL_BOLD)],
[
[P("Hepatitis B",SMALL), P("Blood, sex, vertical",SMALL), P("60-90 days",SMALL), P("10% adults, 90% neonates",SMALL), P("HCC",SMALL), P("Yes (recombinant)",SMALL)],
[P("Hepatitis C",SMALL), P("Blood (mainly IVDU)",SMALL), P("2-26 weeks",SMALL), P("75-85% (high!)",SMALL), P("HCC, cirrhosis",SMALL), P("No",SMALL)],
[P("HIV",SMALL), P("Blood, sex, vertical",SMALL), P("2-4 weeks (ARS)",SMALL), P("Chronic (lifelong)",SMALL), P("AIDS-defining cancers",SMALL), P("No (trials ongoing)",SMALL)],
[P("HTLV-1",SMALL), P("Blood, sex, breastfeeding",SMALL), P("Years",SMALL), P("Yes",SMALL), P("Adult T-cell leukaemia",SMALL), P("No",SMALL)],
],
col_widths=[2.5*cm, 3.5*cm, 3*cm, 3.5*cm, 3*cm, 1.5*cm]
), spacer(0.3)]
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 4: GI & HEPATOBILIARY INFECTIONS
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 4 — GI & Hepatobiliary Infections", "Cholera · Typhoid · H. pylori · Food Poisoning · Hepatitis · Amoebiasis"), spacer(0.5)]
story += [P("<b>4.1 Diarrhoea — Organism by Clinical Pattern (MOST TESTED)</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Organism</b>", SMALL_BOLD), P("<b>Mechanism</b>", SMALL_BOLD), P("<b>Stool Character</b>", SMALL_BOLD), P("<b>Key Feature</b>", SMALL_BOLD), P("<b>Test/Medium</b>", SMALL_BOLD)],
[
[P("V. cholerae O1",SMALL), P("CT toxin → ↑cAMP → secretory diarrhoea",SMALL), P("Rice water — massive, painless",SMALL), P("Darting motility; fish in stream appearance on dark field",SMALL), P("TCBS (yellow); string test positive",SMALL)],
[P("ETEC (E. coli)",SMALL), P("Heat-labile (LT) + heat-stable (ST) toxins",SMALL), P("Watery, painless",SMALL), P("Traveller's diarrhoea; most common cause",SMALL), P("MacConkey pink colonies",SMALL)],
[P("Salmonella typhi",SMALL), P("Intracellular invasion; endotoxin",SMALL), P("Watery → constipation in 2nd week",SMALL), P("Relative bradycardia, rose spots, splenomegaly",SMALL), P("Blood cx (1st week); bone marrow cx (gold std); Widal",SMALL)],
[P("Shigella dysenteriae",SMALL), P("Cell invasion + Shiga toxin",SMALL), P("Blood + mucus (dysentery)",SMALL), P("HUS in children (Shiga toxin → TTP)",SMALL), P("MacConkey (colourless); XLD",SMALL)],
[P("EHEC O157:H7",SMALL), P("Shiga-like toxin",SMALL), P("Bloody diarrhoea",SMALL), P("HUS (haemolytic uraemic syndrome)",SMALL), P("Sorbitol-MacConkey (colourless)",SMALL)],
[P("Campylobacter jejuni",SMALL), P("Invasion + cytotoxin",SMALL), P("Blood + mucus",SMALL), P("#1 cause bacterial diarrhoea in UK/India; raw chicken; may trigger Guillain-Barré",SMALL), P("CCDA medium; 42°C microaerophilic",SMALL)],
[P("C. difficile",SMALL), P("Toxin A (enterotoxin) + Toxin B (cytotoxin)",SMALL), P("Profuse, foul-smelling watery",SMALL), P("Post-antibiotic use; pseudomembranous colitis",SMALL), P("Toxin EIA; culture on CCFA",SMALL)],
[P("Rotavirus",SMALL), P("Villous destruction",SMALL), P("Watery, vomiting predominant",SMALL), P("#1 viral cause of diarrhoea in infants < 2 yrs; winter",SMALL), P("ELISA for rotavirus Ag; EM shows wheel appearance",SMALL)],
],
col_widths=[3*cm, 3.5*cm, 3*cm, 4*cm, 3.5*cm]
), spacer(0.3)]
story += [clinical_vignette("A 25-year-old man from a village develops sudden-onset profuse watery ('rice water') diarrhoea after a flood. No fever or pain. Stool shows 'darting motility' on dark field microscopy. Organism: V. cholerae. Treatment: ORS (primary) + Doxycycline (adults) or Azithromycin. Notifiable disease."), spacer(0.3)]
# 4.2 Typhoid
story += [P("<b>4.2 Typhoid (Enteric Fever) — Week-by-Week Features</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Week</b>", SMALL_BOLD), P("<b>Clinical Features</b>", SMALL_BOLD), P("<b>Best Diagnostic Test</b>", SMALL_BOLD)],
[
[P("Week 1",SMALL), P("Step-ladder fever, headache, relative bradycardia, coated tongue",SMALL), P("Blood culture (highest sensitivity — 90%)",SMALL)],
[P("Week 2",SMALL), P("Rose spots (10%), splenomegaly, constipation (adults)",SMALL), P("Blood culture; Widal test rising titres",SMALL)],
[P("Week 3",SMALL), P("Intestinal haemorrhage, perforation risk",SMALL), P("Stool + urine culture",SMALL)],
[P("Any week",SMALL), P("Bone marrow culture = GOLD STANDARD (positive even after antibiotics)",SMALL), P("Bone marrow culture (95%)",SMALL)],
],
col_widths=[2*cm, 7.5*cm, 7.5*cm]
), spacer(0.2)]
story += [P("Treatment: <b>Ceftriaxone</b> (first-line now, due to MDR strains) | Azithromycin for uncomplicated | Ciprofloxacin (resistance rising)")]
story += [spacer(0.2), tip_box("Widal test interpretation: Single titre O ≥1:160 / H ≥1:160 suggestive, but endemic area baseline is higher. Always send blood cultures — do NOT rely on Widal alone."), spacer(0.3)]
# 4.3 Hepatitis
story += [P("<b>4.3 Hepatitis Viruses — Comparison Table</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Feature</b>", SMALL_BOLD), P("<b>Hep A</b>", SMALL_BOLD), P("<b>Hep B</b>", SMALL_BOLD), P("<b>Hep C</b>", SMALL_BOLD), P("<b>Hep D (Delta)</b>", SMALL_BOLD), P("<b>Hep E</b>", SMALL_BOLD)],
[
[P("Virus",SMALL), P("Picornavirus (ssRNA)",SMALL), P("Hepadnavirus (dsDNA)",SMALL), P("Flavivirus (ssRNA)",SMALL), P("Defective RNA virus",SMALL), P("Hepevirus (ssRNA)",SMALL)],
[P("Transmission",SMALL), P("Faeco-oral",SMALL), P("Blood/sex/vertical",SMALL), P("Blood (IVDU)",SMALL), P("Blood (needs HBV)",SMALL), P("Faeco-oral",SMALL)],
[P("Chronicity",SMALL), P("Never",SMALL), P("10% adults",SMALL), P("75-85%",SMALL), P("Co-infect: rare; Super-infect: 80%",SMALL), P("Never (except immunocomp)",SMALL)],
[P("Fulminant",SMALL), P("Rare",SMALL), P("Rare",SMALL), P("Rare",SMALL), P("Yes (super-infection)",SMALL), P("30% in pregnancy!",SMALL)],
[P("Vaccine",SMALL), P("Yes",SMALL), P("Yes",SMALL), P("No",SMALL), P("HBV vaccine prevents HDV",SMALL), P("Yes (China); not NIP India",SMALL)],
],
col_widths=[3*cm, 2.8*cm, 2.8*cm, 2.8*cm, 2.8*cm, 2.8*cm]
), spacer(0.2)]
story += [P("<b>HBV Serological Markers — Must Know:</b>", SUBSEC_HEAD)]
story += [std_table(
[P("<b>Marker</b>", SMALL_BOLD), P("<b>Meaning</b>", SMALL_BOLD)],
[
[P("HBsAg (surface Ag)",SMALL), P("Indicates current HBV infection (acute or chronic) — FIRST marker to appear",SMALL)],
[P("Anti-HBs",SMALL), P("Recovery / immunity (after infection or vaccination)",SMALL)],
[P("HBeAg",SMALL), P("Marker of HIGH infectivity and active viral replication",SMALL)],
[P("Anti-HBe",SMALL), P("Seroconversion — infectivity decreasing",SMALL)],
[P("Anti-HBc IgM",SMALL), P("Acute infection; also present during 'window period' (only marker positive)",SMALL)],
[P("Anti-HBc IgG",SMALL), P("Past infection; lifelong marker",SMALL)],
[P("HBV DNA",SMALL), P("Active replication; monitored during antiviral therapy",SMALL)],
],
col_widths=[5*cm, 12*cm]
), spacer(0.3)]
story += [tip_box("Window period = HBsAg gone, Anti-HBs not yet appeared. ONLY Anti-HBc IgM is positive. This is the key MCQ trap."), spacer(0.3)]
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 5: CNS INFECTIONS
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 5 — CNS Infections", "Meningitis · Encephalitis · Brain Abscess · CSF Analysis"), spacer(0.5)]
story += [P("<b>5.1 Meningitis — Organism by Age Group</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Age Group</b>", SMALL_BOLD), P("<b>Most Likely Organisms</b>", SMALL_BOLD), P("<b>Notes</b>", SMALL_BOLD)],
[
[P("Neonates (0-3 months)",SMALL), P("GBS (Group B Strep), E. coli (K1), Listeria monocytogenes",SMALL), P("Gram-positive rods = Listeria; treat empirically with Ampicillin + Gentamicin",SMALL)],
[P("Children (3mo - 5yr)",SMALL), P("N. meningitidis, S. pneumoniae, H. influenzae type b (Hib)",SMALL), P("Hib now rare post-vaccination; petechial rash = meningococcal",SMALL)],
[P("Adolescents & Young adults",SMALL), P("N. meningitidis (serogroup B, C, W, Y)",SMALL), P("University students, close quarters; most epidemic-prone",SMALL)],
[P("Adults",SMALL), P("S. pneumoniae (most common overall), N. meningitidis",SMALL), P("Post-neurosurgery: Gram-negative bacilli, Staph. aureus",SMALL)],
[P("Elderly / Immunocomp.",SMALL), P("S. pneumoniae, Listeria, Gram-negatives, Cryptococcus",SMALL), P("Cryptococcus in HIV — India ink capsule",SMALL)],
[P("TB meningitis",SMALL), P("Mycobacterium tuberculosis",SMALL), P("Subacute onset, basal meningitis, CN palsies",SMALL)],
],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
), spacer(0.3)]
story += [P("<b>5.2 CSF Analysis — Key Differential Diagnosis Table</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Feature</b>", SMALL_BOLD), P("<b>Normal</b>", SMALL_BOLD), P("<b>Bacterial</b>", SMALL_BOLD), P("<b>Viral</b>", SMALL_BOLD), P("<b>TB / Fungal</b>", SMALL_BOLD)],
[
[P("Appearance",SMALL), P("Clear",SMALL), P("Turbid / Purulent",SMALL), P("Clear / Slightly turbid",SMALL), P("Clear / Xanthochromic; may clot",SMALL)],
[P("Pressure",SMALL), P("70-180 mmH₂O",SMALL), P("Raised",SMALL), P("Normal/Slightly raised",SMALL), P("Raised",SMALL)],
[P("WBC",SMALL), P("0-5 lymphocytes",SMALL), P("1000-10,000 (Neutrophils)",SMALL), P("50-500 (Lymphocytes)",SMALL), P("50-500 (Lymphocytes)",SMALL)],
[P("Protein",SMALL), P("15-45 mg/dL",SMALL), P("Very high (>100 mg/dL)",SMALL), P("Mild rise (50-100)",SMALL), P("High (100-500); forms cobweb clot",SMALL)],
[P("Glucose",SMALL), P(">60% of serum",SMALL), P("Very low (<40 mg/dL)",SMALL), P("Normal",SMALL), P("Low (<40)",SMALL)],
[P("Gram Stain",SMALL), P("Negative",SMALL), P("Positive in 60-80%",SMALL), P("Negative",SMALL), P("ZN stain (AFB) for TB",SMALL)],
[P("Special Tests",SMALL), P("—",SMALL), P("Culture on blood / chocolate agar; latex agglutination",SMALL), P("PCR (HSV, enteroviruses)",SMALL), P("India ink (Cryptococcus); CRAG Ag; AFB culture",SMALL)],
],
col_widths=[3*cm, 3*cm, 3.5*cm, 3*cm, 4.5*cm]
), spacer(0.3)]
story += [clinical_vignette("A 20-year-old college student presents with sudden high fever, severe headache, neck stiffness, and a petechial rash not blanching on glass test. CSF: turbid, WBC 5000 (neutrophils), protein 200, glucose 20. Gram stain: gram-negative diplococci. Organism: Neisseria meningitidis. Immediate treatment: IV Ceftriaxone. Prophylaxis for contacts: Rifampicin or Ciprofloxacin."), spacer(0.3)]
story += [P("<b>5.3 Brain Abscess — Key Organisms by Source</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Source</b>", SMALL_BOLD), P("<b>Organism</b>", SMALL_BOLD), P("<b>Location</b>", SMALL_BOLD)],
[
[P("Dental / sinusitis",SMALL), P("Streptococcus (viridans, milleri group), anaerobes, mixed",SMALL), P("Frontal lobe",SMALL)],
[P("Otitis media / mastoiditis",SMALL), P("Strep. milleri, anaerobes, Enterobacteriaceae",SMALL), P("Temporal lobe / cerebellum",SMALL)],
[P("Haematogenous (lung abscess, IE, IVDU)",SMALL), P("Staph. aureus, Strep., Gram-negatives",SMALL), P("Multiple / grey-white junction",SMALL)],
[P("Post-neurosurgery / trauma",SMALL), P("Staph. aureus, Gram-negatives",SMALL), P("Near wound site",SMALL)],
[P("Immunocompromised (HIV)",SMALL), P("Toxoplasma gondii (most common ring-enhancing lesion in AIDS), Cryptococcus, Listeria",SMALL), P("Multiple",SMALL)],
],
col_widths=[4.5*cm, 7*cm, 5.5*cm]
), spacer(0.3)]
story += [tip_box("Ring-enhancing lesion on MRI in HIV patient: #1 Toxoplasma. If no response to empirical pyrimethamine + sulfadiazine in 2 weeks, biopsy to rule out CNS lymphoma (EBV-related)."), spacer(0.3)]
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SECTION 6: QUICK REVISION TABLES
# ══════════════════════════════════════════════════════════════════════════════
story += [chapter_header("Section 6 — Quick Revision Tables", "Last-Minute MCQ Facts · Organism Mnemonics · Vignette Patterns"), spacer(0.5)]
story += [P("<b>6.1 Exotoxins vs Endotoxins</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Feature</b>", SMALL_BOLD), P("<b>Exotoxin</b>", SMALL_BOLD), P("<b>Endotoxin (LPS)</b>", SMALL_BOLD)],
[
[P("Produced by",SMALL), P("Gram-positive AND Gram-negative",SMALL), P("Only Gram-negative (outer membrane)",SMALL)],
[P("Chemistry",SMALL), P("Protein",SMALL), P("Lipopolysaccharide (Lipid A = toxic part)",SMALL)],
[P("Heat stability",SMALL), P("Labile (destroyed at 60-80°C)",SMALL), P("Stable (withstands autoclaving)",SMALL)],
[P("Toxoid formation",SMALL), P("Yes (formalin treatment → toxoid vaccine)",SMALL), P("No",SMALL)],
[P("Potency",SMALL), P("Extremely potent (botulinum = most toxic)",SMALL), P("Less potent",SMALL)],
[P("Effect",SMALL), P("Specific: neurotoxin, enterotoxin, cytotoxin",SMALL), P("Non-specific: fever, shock, DIC, complement activation",SMALL)],
[P("Key examples",SMALL), P("Cholera CT, Diphtheria, Tetanus, Botulinum, Staph TSST-1, ETEC LT/ST",SMALL), P("Salmonella, E. coli, Neisseria, all Gram-negatives",SMALL)],
],
col_widths=[3.5*cm, 6.5*cm, 7*cm]
), spacer(0.3)]
story += [P("<b>6.2 Anti-Microbial Classes — Mechanism and Key Organism Coverage</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Drug Class</b>", SMALL_BOLD), P("<b>Mechanism</b>", SMALL_BOLD), P("<b>Coverage</b>", SMALL_BOLD), P("<b>Key Drug</b>", SMALL_BOLD)],
[
[P("Beta-lactams",SMALL), P("Inhibit cell wall synthesis (PBPs)",SMALL), P("Broad; Gram+ (penicillin) and Gram- (cephalosporins, carbapenems)",SMALL), P("Amoxicillin, Cefazolin, Meropenem",SMALL)],
[P("Aminoglycosides",SMALL), P("Irreversible 30S ribosome binding → mistranslation",SMALL), P("Gram-negative aerobes; TB (Streptomycin)",SMALL), P("Gentamicin, Amikacin",SMALL)],
[P("Macrolides",SMALL), P("Reversible 50S ribosome binding",SMALL), P("Atypicals (Mycoplasma, Legionella, Chlamydia), Gram+ strep",SMALL), P("Azithromycin, Erythromycin",SMALL)],
[P("Fluoroquinolones",SMALL), P("Inhibit DNA gyrase (topoisomerase II)",SMALL), P("Broad Gram-neg + some Gram+, Mycobacteria",SMALL), P("Ciprofloxacin, Levofloxacin",SMALL)],
[P("Tetracyclines",SMALL), P("30S ribosome, reversible",SMALL), P("Atypicals, Rickettsia, Brucella, Chlamydia, cholera",SMALL), P("Doxycycline",SMALL)],
[P("Glycopeptides",SMALL), P("Inhibit cell wall (D-Ala-D-Ala terminus)",SMALL), P("Gram-positive only; MRSA, VRE (Linezolid/Daptomycin if VRE)",SMALL), P("Vancomycin, Teicoplanin",SMALL)],
[P("Metronidazole",SMALL), P("DNA strand breakage (anaerobes)",SMALL), P("Anaerobes, C. difficile, H. pylori, Entamoeba, Giardia",SMALL), P("Metronidazole",SMALL)],
],
col_widths=[3.5*cm, 4.5*cm, 5.5*cm, 3.5*cm]
), spacer(0.3)]
story += [P("<b>6.3 Organisms with Unique Identifying Features (Spot & MCQ)</b>", SECTION_HEAD)]
story += [std_table(
[P("<b>Organism</b>", SMALL_BOLD), P("<b>Unique Feature</b>", SMALL_BOLD)],
[
[P("Staph. aureus",SMALL), P("Coagulase positive; golden colonies; TSST-1 (toxic shock); Protein A (anti-phagocytic); novobiocin sensitive",SMALL)],
[P("Staph. epidermidis",SMALL), P("Coagulase negative; novobiocin sensitive; biofilm former",SMALL)],
[P("Staph. saprophyticus",SMALL), P("Coagulase negative; novobiocin RESISTANT; young women UTI",SMALL)],
[P("Strep. pyogenes (Group A)",SMALL), P("Beta-haemolytic; M protein (antiphagocytic); ASO titre; causes rheumatic fever + PSGN",SMALL)],
[P("Strep. agalactiae (Group B)",SMALL), P("Beta-haemolytic; neonatal meningitis + sepsis; CAMP test positive",SMALL)],
[P("S. pneumoniae",SMALL), P("Optochin sensitive; bile soluble; lancet-shaped diplococci; Quellung reaction; causes CAP, meningitis, otitis media",SMALL)],
[P("E. coli",SMALL), P("Indole positive; ferments lactose; K1 antigen in neonatal meningitis; IMViC = + + - -",SMALL)],
[P("Klebsiella",SMALL), P("Mucoid colonies; non-motile; capsule (Friedlander's bacillus); currant jelly sputum in alcoholics",SMALL)],
[P("N. meningitidis",SMALL), P("Gram-neg diplococci; ferments glucose + maltose; capsule types A,B,C,W,Y; petechial rash",SMALL)],
[P("N. gonorrhoeae",SMALL), P("Ferments glucose ONLY (not maltose); intracellular diplococci in neutrophils; oxidase positive",SMALL)],
[P("M. tuberculosis",SMALL), P("Acid-fast (ZN); slow growing (6-8 wks); LJ medium; Cord factor (virulence); Mantoux type IV hypersensitivity",SMALL)],
[P("C. diphtheriae",SMALL), P("Metachromatic granules (Albert's/Loeffler's); grey-white pseudomembrane; Nagler's reaction; Elek's test for toxin",SMALL)],
[P("B. anthracis",SMALL), P("Medusa head colonies; non-motile; capsule (poly-D-glutamate); string of pearls in penicillin (McFadyean)",SMALL)],
],
col_widths=[5*cm, 12*cm]
), spacer(0.3)]
story += [P("<b>6.4 Key Mnemonics</b>", SECTION_HEAD)]
mnemonics = [
("<b>AEIOU for asplenia vaccination:</b>", "Antibiotic prophylaxis (Penicillin V), Education, Immunization (PHN: Pneumo, Haemophilus, Neisseria), Observe, Urgent treatment"),
("<b>TORCH:</b>", "Toxoplasma, Others (syphilis, VZV, parvovirus B19), Rubella, CMV, Herpes — congenital infections"),
("<b>HACEK:</b>", "Haemophilus, Actinobacillus, Cardiobacterium, Eikenella, Kingella — culture-negative endocarditis organisms"),
("<b>Types of diarrhoea:</b>", "Secretary = no blood (cholera, ETEC); Invasive = blood + mucus (Shigella, Campylobacter, EHEC, Entamoeba); Osmotic = stops with fasting"),
("<b>Live vaccines (don't give in pregnancy/immunocomp):</b>", "BCG, OPV, MMR, Varicella, Yellow fever, Rotavirus — 'Be Open, Make More Vaccine Yesterday, Routinely'"),
]
for bold_part, rest in mnemonics:
story.append(P(f"{bold_part} {rest}"))
story.append(spacer(0.1))
story += [spacer(0.3)]
# Final note
final_box = Table([[
Paragraph("<b>How to Use This Guide:</b><br/>"
"1. Read each section once for understanding.<br/>"
"2. Cover the tables and recall — don't just re-read passively.<br/>"
"3. For every organism, write your own clinical vignette (it trains exam thinking).<br/>"
"4. Do 20 MCQs after each section using CBME-pattern question books.<br/>"
"5. Review the CSF table, hepatitis markers, and IE organism table until automatic.",
S("FinalNote", fontSize=9, fontName="Helvetica", textColor=colors.HexColor("#1A3557"), leading=14))
]], colWidths=[17*cm])
final_box.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_GREEN),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("BOX", (0,0), (-1,-1), 1.5, GREEN),
("ROUNDEDCORNERS",(0,0), (-1,-1), 6),
]))
story.append(final_box)
# ── BUILD ─────────────────────────────────────────────────────────────────────
OUT = "/tmp/workspace/micro-guide/Microbiology_Paper1_Study_Guide.pdf"
def header_footer(canvas, doc):
canvas.saveState()
# Header line
canvas.setStrokeColor(DARK_BLUE)
canvas.setLineWidth(1)
canvas.line(2*cm, A4[1] - 1.5*cm, A4[0] - 2*cm, A4[1] - 1.5*cm)
canvas.setFont("Helvetica-Bold", 8)
canvas.setFillColor(DARK_BLUE)
canvas.drawString(2*cm, A4[1] - 1.3*cm, "Microbiology Paper 1 — MBBS 2nd Year (NMC CBME)")
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#666666"))
canvas.drawRightString(A4[0] - 2*cm, A4[1] - 1.3*cm, "General Micro · Immunology · CVS · GI · CNS")
# Footer
canvas.setStrokeColor(colors.HexColor("#CCCCCC"))
canvas.line(2*cm, 1.5*cm, A4[0] - 2*cm, 1.5*cm)
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#666666"))
canvas.drawCentredString(A4[0]/2, 1*cm, f"Page {doc.page}")
canvas.restoreState()
doc = SimpleDocTemplate(
OUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Microbiology Paper 1 Study Guide — MBBS 2nd Year",
author="Orris AI"
)
doc.build(story, onFirstPage=header_footer, onLaterPages=header_footer)
print(f"PDF created: {OUT}")
cd /tmp/workspace/micro-guide && python build_guide.py 2>&1
ls -lh /tmp/workspace/micro-guide/Microbiology_Paper1_Study_Guide.pdf
Microbiology Paper1 Study Guide
PDF Document · PDF
| Section | What's covered |
|---|---|
| 1 - General Microbiology | Gram stain steps, special stains (ZN, India ink, Giemsa, Albert's), culture media table (TCBS, LJ, Thayer-Martin, MacConkey, CLED, etc.), sterilization (autoclave vs hot air oven temperatures), normal flora |
| 2 - Immunology | Innate vs adaptive comparison, Hypersensitivity Types I-IV with clinical examples, Complement pathways + deficiency diseases, Vaccine types (live/killed/toxoid/conjugate/subunit) + NIP cold chain facts |
| 3 - CVS & Blood | IE organisms by risk factor (dental, IVDU, prosthetic valve), Duke's criteria, peripheral signs (Osler/Janeway/Roth), septicaemia by patient type (neonate, asplenic, IVDU), blood-borne viruses table |
| 4 - GI & Hepatobiliary | Diarrhoea organism-by-mechanism table (cholera, typhoid week-by-week, Shigella, EHEC, Campylobacter, C. diff, Rotavirus), Hepatitis A-E full comparison, HBV serological markers including window period trap |
| 5 - CNS Infections | Meningitis by age group, full CSF differential (bacterial/viral/TB/fungal - appearance, WBC, protein, glucose, stain), brain abscess by source, Toxoplasma in HIV |
| 6 - Quick Revision | Exotoxin vs endotoxin, antibiotic classes + mechanisms, organisms with unique lab features (coagulase, CAMP test, optochin, Quellung, etc.), key mnemonics |