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

Asking for Preferences
Searching the Web

UK MBBS preclinical microbiology clinical based questions study guide 2025

Reading File
Finding Sources
Searching the Web

UK medical school preclinical microbiology clinical vignette approach study strategy UKMLA

Finding Sources
Reading Web Page

https://www.iatrox.com/blog/what-is-the-ukmla-complete-2026-…

Finding Sources
Searching the Web

best YouTube channels microbiology preclinical UK medical students clinical scenarios 2025

Here is a complete, no-nonsense guide to tackling microbiology in UK preclinical with the new clinical-based format.

Microbiology for UK Preclinical (Clinical-Based Format)

Why the pattern changed and what it means for you

The UK moved to the MLA Content Map as the national standard - your finals (and your Year 1/2 assessments building toward it) now test you on ~430 core conditions through clinical vignettes, not straight recall. For microbiology that means: "Patient presents with X... what is the organism / investigation / antibiotic?" - not "Describe the cell wall of gram-positives."
Theory still matters, but only as fuel for clinical reasoning.

The Study Framework - Think in 4 Layers

Layer 1: Organism-to-Presentation (the core skill)

For every major organism, know this chain:
Organism → mechanism/virulence → clinical presentation → investigations → treatment
Example:
  • Streptococcus pyogenes → M-protein antiphagocytic → sore throat / cellulitis / scarlet fever → throat swab / ASO titre → penicillin
  • Then the vignette question writes itself.

Layer 2: Syndrome-First Approach (how exams think)

Flip it: start from the syndrome, not the organism.
SyndromeTop organisms to know
Community-acquired pneumoniaS. pneumoniae, Mycoplasma, Legionella, viruses
UTIE. coli, Klebsiella, Staphylococcus saprophyticus (young women)
MeningitisN. meningitidis, S. pneumoniae, Listeria (neonates/elderly)
Septic arthritisS. aureus, Neisseria gonorrhoeae (sexually active adults)
DiarrhoeaCampylobacter, Salmonella, C. diff (post-antibiotics), ETEC (traveller)
EndocarditisViridans streptococci (native valve), S. aureus (IV drug users)
Exam questions almost always give you the clinical story - if you can pattern-match the syndrome, you'll find the answer.

Layer 3: Anchor to Host Context

Many SBA (Single Best Answer) questions hinge on the patient type:
  • Immunocompromised → PCP, CMV, Aspergillus, Cryptococcus
  • Neonate → GBS (Streptococcus agalactiae), Listeria, E. coli
  • Post-antibiotic → Clostridioides difficile
  • Travel history → Malaria, Salmonella typhi, dengue
  • Animal contact → Brucella, Coxiella (Q fever), Leptospira

Layer 4: Investigations and Antibiotics

You need to know:
  • What test confirms the organism (blood culture, urine culture, PCR, serology, Gram stain, Ziehl-Neelsen)
  • First-line antibiotic + why (mechanism, spectrum)
  • Key resistant organisms: MRSA, VRE, ESBL-producers, C. diff

How to Make Notes (Template per Organism/Syndrome)

Don't copy-paste from a textbook. Use this one-page template:
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]
Making the vignette at the end forces your brain to think like the examiner.

Resources - What to Use

Textbooks in the Library (you have access to these)

  • Medical Microbiology 9e and Sherris & Ryan's Medical Microbiology 8th Ed - use for mechanism and pathogenesis understanding (not to memorize)
  • Jawetz, Melnick & Adelberg's Medical Microbiology 28e - solid overview per organism

Lectures / Videos

For concept understanding:
  • Osmosis (YouTube) - visual, short, organism-by-organism. Free.
  • Ninja Nerd (YouTube) - longer, more thorough, great for mechanisms. Free.
  • Dr Najeeb Lectures - the deepest mechanistic content; slower pace, better for building genuine understanding. Use when a concept isn't clicking.
For clinical application (UK-specific):
  • Geeky Medics (YouTube + website) - directly aligned to UK clinical practice and OSCE/SBA style
  • Zero to Finals (YouTube + book) - written by a UK doctor, excellent for bridging preclinical to clinical, covers conditions in a vignette-friendly way. Highly recommended.
For question practice:
  • Passmedicine / Pastest - UK SBA question banks, aligned to MLA content map
  • OnExamination (BMJ) - trusted by UK students
  • Amboss has an MLA-mapped filter

Weekly Study Rhythm (Practical)

DayActivity
Mon-TueLearn 2-3 new organisms/syndromes (lecture + short note using template)
WedDo 15-20 SBA questions on that week's topic; review every wrong answer
ThuReview previous week's material (spaced repetition)
FriOne clinical case/vignette per syndrome - write out your reasoning
WeekendAnki review + any gaps identified from questions

The Mindset Shift

Old approach: "Learn every detail about E. coli." New approach: "A 25-year-old woman has dysuria and frequency for 2 days - what is the organism, what test confirms it, what do I prescribe, and why not trimethoprim if she's in her first trimester?"
Every time you read a fact, immediately ask: "How would this appear in a clinical question?"

Quick Priority List for Year 1/2

Start with these high-yield areas (they appear most frequently in UK assessments):
  1. Respiratory infections (CAP, TB, atypicals)
  2. UTI and pyelonephritis
  3. Meningitis and septicaemia
  4. GI infections (food poisoning vs inflammatory diarrhoea)
  5. Skin and soft tissue (cellulitis, MRSA, necrotizing fasciitis)
  6. STIs (gonorrhoea, chlamydia, syphilis, herpes)
  7. HIV basics (CD4 count thresholds, AIDS-defining illnesses)
  8. Antibiotic principles (classes, mechanisms, key resistances)
Master those 8 areas first and you will cover the vast majority of what a preclinical microbiology assessment will throw at you.

I study in India chennai mbbs 2nd year

Searching the Web

India NMC MBBS 2nd year microbiology exam pattern 2024 2025 clinical based competency questions

Finding Sources
Reading Web Page

https://mgmuhs.com/pdfs/curriculum/medical/mbbs/2nd-year/Mic…

Searching the Web

India CBME MBBS microbiology 2nd year how to study scenario based MCQ Ananthnarayan Chennai tips

Got it - India, Chennai, NMC CBME, 2nd year. This completely changes the advice. Let me give you a fully India-specific guide.

Microbiology for MBBS 2nd Year - India (NMC CBME Pattern)

What Actually Changed with CBME

Under the new NMC CBME curriculum (especially the 2024 batch revision), the university exam pattern now has:
SectionQuestion TypeMarks
Section AClinical Scenario-Based MCQs (10 Qs)20 marks
Section BBAQs (5), SAQs (3), Structured LAQ (1)40 marks
Section CBAQs (5), SAQs (3), Structured LAQ (1)40 marks
PracticalsGram stain, Stool exam, Spots (10), Clinical Case (2 x 15 = 30 marks), OSPE100 marks
The two biggest shifts for you:
  1. Clinical scenario MCQs - you now get a patient story and must pick the organism / test / treatment
  2. Clinical case in practicals - you are given a real case and asked to reason through it

Your Exam Paper Split (Chennai / TN Universities)

Paper 1: General Microbiology, Immunology, CVS & Blood, GI & Hepatobiliary, CNS Infections Paper 2: Respiratory, GU & STIs, MSK/Skin/Soft tissue, Zoonotic, Healthcare-associated infections
Study by paper and by system - not by organism alphabetically.

Books - What to Use and How

Primary Text

Ananthnarayan & Paniker's Textbook of Microbiology (10th edition) - this is your main book, aligned to NMC competencies. Don't try to memorize it. Read it to understand, then close it and recall.

For Clinical Application (the part that's new and hard)

Essentials of Medical Microbiology by Apurba Sankar Sastry - much more clinically oriented, written in a CBME-friendly style. Great for scenario-based questions.

For MCQ Practice

  • Competency Based Questions and Answers in Microbiology for Second MBBS (specifically written for the new NMC CBME pattern - 355 MCQs, 92 long essays, scenario-based)
  • Rachna Sinha / Mukherjee MCQ books for rapid revision

For Practicals / Spots / Clinical Cases

  • Your own DOAP (Demonstration, Observation, Assistance, Performance) practical record is the primary guide - re-read all clinical case writeups

How to Actually Study Each Topic

Step 1 - Read the topic (not the full chapter, just the key points)

When you open Ananthnarayan, for each organism note:
  • Morphology (relevant for Gram stain / ZN stain questions)
  • Virulence factors (1-2 key ones)
  • Clinical disease it causes
  • Lab diagnosis (what sample, what test, what result looks like)
  • Treatment

Step 2 - Convert it to a clinical scenario yourself

This is the most important step. After reading, write or think:
"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?"
Answer: M. tuberculosis → ZN stain (acid-fast bacilli) → LJ medium → Rifampicin-based DOTS
Do this for every topic. It forces you to think the way the exam question is written.

Step 3 - Do questions immediately after

Don't wait till the end of a chapter. After every 1-2 topics, do 10-15 MCQs from that section. This cements the clinical angle.

System-wise High-Yield Topics (for your paper divisions)

Paper 1

General Microbiology
  • Sterilization & disinfection (autoclave vs hot air oven temps, times)
  • Gram stain steps + what organisms are gram-positive vs negative
  • Culture media types - selective vs differential, named examples
Immunology
  • Types of hypersensitivity (Type I-IV) with clinical examples (anaphylaxis, SLE, contact dermatitis, TB)
  • Vaccines - live attenuated vs killed, cold chain
  • Complement pathway - clinical conditions (C3 deficiency etc.)
CVS & Blood
  • Infective endocarditis - organisms by valve type / risk factor
  • Septicaemia workup - blood culture timing
GI & Hepatobiliary
  • Cholera (V. cholerae) - rice water stools, Thiosulphate Citrate Bile Sucrose (TCBS) medium
  • Typhoid - Widal test interpretation, Rose spots
  • H. pylori - CLO test, urease test
  • Hepatitis viruses - A/B/C/D/E - routes, serological markers (HBsAg, anti-HBc, etc.)
CNS
  • Meningitis by age group - organisms differ in neonates vs adults
  • CSF findings table - bacterial vs viral vs TB vs fungal
  • Cryptococcus - India ink, immunocompromised host

Paper 2

Respiratory
  • TB - PPD test, Mantoux interpretation, RNTCP/NTEP drugs (HRZE)
  • Pneumococcal pneumonia - rusty sputum, Quellung reaction
  • Atypical pneumonia - Mycoplasma (cold agglutinins), Legionella (AC cooling towers)
GU & STIs
  • Gonorrhoea - intracellular diplococci, urethral discharge, Thayer-Martin medium
  • Syphilis - VDRL vs TPHA, primary / secondary / tertiary stages
  • TORCH infections - organisms, neonatal effects
Skin & Soft Tissue
  • MRSA - vancomycin treatment, coagulase-positive
  • Necrotizing fasciitis - mixed flora, surgical emergency
  • Dermatophytes - KOH mount, ringworm pattern
Zoonoses
  • Brucellosis - milk/cheese/occupational, agglutination test
  • Leptospirosis - Weil's disease, Weil-Felix reaction (don't confuse with rickettsial)
  • Plague - Y. pestis, safety pin bipolar staining
Healthcare-Associated Infections (HCAI)
  • C. difficile - post-antibiotic, pseudomembranous colitis
  • Catheter-associated UTI, ventilator-associated pneumonia - organisms
  • Biofilm-forming organisms (CONS, Pseudomonas)

Practicals - Don't Neglect

30 of your 100 practical marks are clinical cases. You will be given a case (e.g., a patient with purulent discharge) and must:
  1. Identify the likely organism
  2. State the correct sample collection method
  3. Name the appropriate stain / culture medium
  4. Interpret the result
  5. Suggest treatment
Practice this by taking your DOAP session cases and writing them out in full before the exam. Know at least 8-10 common clinical cases cold.
Spot recognition - memorize the appearance of:
  • MacConkey agar (pink = lactose fermenter like E. coli, colorless = Salmonella/Shigella)
  • Blood agar (alpha/beta/gamma haemolysis)
  • TCBS (yellow = V. cholerae)
  • LJ medium (buff-colored colonies = MTB)
  • Common biochemical tubes (TSI, IMViC)

YouTube - What to Watch

These are free and excellent for building the clinical visual understanding:
  • Osmosis - search by organism/topic, clear and clinical. Best for understanding mechanisms.
  • Ninja Nerd Science - deeper, good for immunology and bacteria
  • Dr. Shonali Chandra (YouTube) - specifically for Indian MBBS microbiology, CBME aligned
  • Medicosis Perfectionalis - visual summaries, great for scenario-based thinking
For Indian exam style (written answer practice):
  • Marrow / PrepLadder (paid but worth it) - their microbiology faculty specifically teach clinical scenario approach and their question bank is CBME-aligned
  • DAMS video lectures if available at your college

Notes - How to Make Them

Do NOT write long notes. Use a table format for each organism:
FeatureDetails
Gram stain / morphology
Virulence factor (key)
Disease caused
Sample
Key test / medium
Treatment
Classic vignette trigger
One page per major organism. Stick it to the wall. Cover and recall.
For Clinical Scenarios, make a separate page per syndrome (CAP, UTI, meningitis, etc.) listing organisms ranked by likelihood + the one differentiating lab test.

Weekly Study Plan

DaysFocus
Mon-Tue2 topics from current chapter (read + make table notes)
Wed20 scenario-based MCQs on those topics + review errors
ThuRevisit previous week's topics (spaced recall)
FriOne clinical case writeup (practical style)
SatShort notes / BAQ writing practice (timed, 5-7 min per answer)
SunAnki / flashcard review + spots review

One Key Mindset Point

In the old pattern, you could write everything you knew about Salmonella typhi and get marks. Now the question is:
"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?"
The answer is still Salmonella typhi and bile broth / blood agar - but you only get there if you linked the clinical story to the organism. That linking is the skill to build. Do it every single time you study a new topic.

Create a study guide PDF for Paper 1 (General Micro, Immunology, CVS, GI, CNS)

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Running Command

mkdir -p /tmp/workspace/micro-guide && ls /tmp/workspace/micro-guide/

Writing File

~/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"&nbsp;&nbsp;&nbsp;&nbsp;{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}")
Running Command

cd /tmp/workspace/micro-guide && python build_guide.py 2>&1

Running Command

ls -lh /tmp/workspace/micro-guide/Microbiology_Paper1_Study_Guide.pdf

Your study guide is ready. Download it here:

Microbiology Paper1 Study Guide

PDF Document · PDF


Here's what's inside (6 sections, fully formatted with colour-coded tables, exam tips, and clinical vignettes):
SectionWhat's covered
1 - General MicrobiologyGram 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 - ImmunologyInnate 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 & BloodIE 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 & HepatobiliaryDiarrhoea 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 InfectionsMeningitis by age group, full CSF differential (bacterial/viral/TB/fungal - appearance, WBC, protein, glucose, stain), brain abscess by source, Toxoplasma in HIV
6 - Quick RevisionExotoxin vs endotoxin, antibiotic classes + mechanisms, organisms with unique lab features (coagulase, CAMP test, optochin, Quellung, etc.), key mnemonics
Every section has clinical vignettes written in the exact style of NMC CBME scenario-based MCQs so you practice the clinical reasoning pattern, not just rote facts.
This is a shared conversation. Sign in to Orris to start your own chat.