Is this correct?? Is it staphylococcus or streptococcus??
| Feature | Your Observation | Correct? |
|---|---|---|
| Colour | Violet (purple) | ✅ Correct - Gram-positive retains crystal violet |
| Shape | Spherical (cocci) | ✅ Correct |
| Arrangement | Groups/clusters | ✅ Correct |
| Inference | Gram-positive cocci in clusters | ✅ Correct |
| Example | Staphylococcus | ✅ Correct |
| Feature | Staphylococcus | Streptococcus |
|---|---|---|
| Arrangement | Clusters (like bunches of grapes) | Chains |
| Gram stain | Gram-positive (violet/purple) | Gram-positive (violet/purple) |
| Common example | S. aureus | S. pyogenes, S. pneumoniae |
Give me questions of viva asked in 2nd year mbbs microbiology according to knruhs Telangana University!!! Regarding gram stain and acid fast stain Common and important questions qith answers for viva
KNRUHS 2nd year MBBS microbiology viva questions gram stain acid fast stain
| Step | Reagent | Purpose |
|---|---|---|
| 1 | Crystal violet | Primary stain |
| 2 | Gram's iodine | Mordant |
| 3 | Acetone-alcohol | Decolorizer |
| 4 | Safranin (or Neutral red) | Counterstain |
| Arrangement | Organism |
|---|---|
| Cocci in clusters | Staphylococcus |
| Cocci in chains | Streptococcus |
| Cocci in pairs (diplococci) | Neisseria, Streptococcus pneumoniae |
| Bacilli (rods) | E. coli, Klebsiella |
| Comma-shaped | Vibrio cholerae |
| Gram-Positive | Gram-Negative |
|---|---|
| Staphylococcus aureus | Escherichia coli |
| Streptococcus pyogenes | Klebsiella pneumoniae |
| Clostridium tetani | Neisseria meningitidis |
| Bacillus anthracis | Pseudomonas aeruginosa |
| Step | Reagent | Purpose |
|---|---|---|
| 1 | Carbolfuchsin (with heating) | Primary stain - stains red |
| 2 | 3% acid-alcohol (HCl + ethanol) | Decolorizer |
| 3 | Loeffler's methylene blue | Counterstain (blue background) |
| Method | Feature |
|---|---|
| Ziehl-Neelsen | Classic; uses heat with carbolfuchsin |
| Kinyoun (Cold method) | No heat; uses stronger carbolfuchsin |
| Fluorochrome stain | Uses auramine-rhodamine dye; fluorescence microscopy; most sensitive |
| Finding | Report |
|---|---|
| No AFB in 100 fields | Negative (0) |
| 1-9 AFB per 100 fields | Scanty |
| 10-99 AFB per 100 fields | 1+ |
| 1-10 AFB per field | 2+ |
| >10 AFB per field | 3+ |
| Feature | Gram Stain | ZN (Acid-Fast) Stain |
|---|---|---|
| Primary stain | Crystal violet | Carbolfuchsin |
| Mordant | Gram's iodine | Heat (or concentrated dye) |
| Decolorizer | Acetone-alcohol | Acid-alcohol (3% HCl) |
| Counterstain | Safranin (pink) | Methylene blue |
| Used for | Most bacteria | Mycobacteria (TB, leprosy) |
| Positive result | Purple | Red/pink (AFB positive) |
Pro tip for viva: Always remember the 3 I's of Gram stain - Iodine (mordant), Isopropyl alcohol (decolorizer, remember its role!), and Inference (tell your examiner Gram+ve = purple, Gram-ve = pink). And for ZN stain: "Red is Read" = AFB positive = TB suspected.
Modifications of gram stain??
modifications of gram stain Hucker Burke Kopeloff microbiology MBBS
https://stacks.cdc.gov/view/cdc/7646/cdc_7646_DS1.pdf
modifications of gram stain types Hucker Kopeloff Jensen Preston Morrell Burke differences uses microbiology
https://www.saspublishers.com/media/articles/SAJB_44A366-369…
| Modification | Primary Stain | Mordant | Decolorizer | Counterstain | Special Use |
|---|---|---|---|---|---|
| Original (Hans Christian Gram) | Crystal violet | Gram's iodine | Ethanol | Safranin | Standard method |
| Hucker's | Ammonium oxalate-crystal violet | Gram's iodine | Acetone-alcohol | Safranin | Most widely used today |
| Kopeloff & Beerman's | Methyl violet + sodium bicarbonate | Iodine in 4% NaOH | Acetone alone or acetone-ethanol mix | Basic fuchsin | Anaerobic bacteria; tissue sections |
| Jensen's | Methyl violet | Iodine + KI in water | Absolute alcohol | Neutral red | Neisseria spp (Sandiford's counterstain used) |
| Weigert's | Carbol gentian violet (saturated alcoholic + 5% phenol) | Gram's iodine | Aniline-xylol | Carmalum (used BEFORE primary stain) | Tissue sections; Pneumocystis cysts |
| Preston & Morrell's | Ammonium oxalate-crystal violet | Lugol's iodine + iodine solution | Iodine-acetone | Counterstain | Improved decolorization control |
| Burke's | Crystal violet | Gram's iodine | Acetone | Safranin | Faster technique |
| If examiner asks about... | Answer |
|---|---|
| Most widely used modification | Hucker's |
| Modification for anaerobes | Kopeloff & Beerman's |
| Modification for tissue sections | Weigert's |
| Modification for Neisseria | Jensen's |
| Unique feature of Weigert's | Counterstain used before primary stain; aniline-xylol as decolorizer |
| Unique feature of Kopeloff's | Counterstain is basic fuchsin (not safranin); iodine in NaOH |
Create all this questiona and information as pdf Create pdf of whatever i asked and u answered
mkdir -p /home/daytona/workspace/microbiology-viva && ls /home/daytona/workspace…
~/microbiology-viva/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
OUTPUT_PATH = "/home/daytona/workspace/microbiology-viva/Microbiology_Viva_KNRUHS.pdf"
doc = SimpleDocTemplate(
OUTPUT_PATH,
pagesize=A4,
rightMargin=2*cm,
leftMargin=2*cm,
topMargin=2*cm,
bottomMargin=2*cm,
title="Microbiology Viva - KNRUHS 2nd Year MBBS",
author="Orris AI"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'CustomTitle',
parent=styles['Title'],
fontSize=20,
textColor=colors.HexColor('#1a237e'),
spaceAfter=6,
alignment=TA_CENTER,
fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'Subtitle',
parent=styles['Normal'],
fontSize=11,
textColor=colors.HexColor('#37474f'),
spaceAfter=4,
alignment=TA_CENTER,
fontName='Helvetica'
)
section_style = ParagraphStyle(
'SectionHeader',
parent=styles['Heading1'],
fontSize=14,
textColor=colors.white,
backColor=colors.HexColor('#1a237e'),
spaceBefore=14,
spaceAfter=8,
leftIndent=-10,
rightIndent=-10,
leading=20,
fontName='Helvetica-Bold'
)
subsection_style = ParagraphStyle(
'SubSection',
parent=styles['Heading2'],
fontSize=12,
textColor=colors.HexColor('#1565c0'),
spaceBefore=10,
spaceAfter=4,
fontName='Helvetica-Bold',
borderPad=4
)
q_style = ParagraphStyle(
'Question',
parent=styles['Normal'],
fontSize=10.5,
textColor=colors.HexColor('#b71c1c'),
spaceBefore=8,
spaceAfter=2,
fontName='Helvetica-Bold',
leftIndent=10
)
a_style = ParagraphStyle(
'Answer',
parent=styles['Normal'],
fontSize=10,
textColor=colors.HexColor('#1b5e20'),
spaceBefore=2,
spaceAfter=4,
fontName='Helvetica',
leftIndent=20,
leading=14
)
note_style = ParagraphStyle(
'Note',
parent=styles['Normal'],
fontSize=9.5,
textColor=colors.HexColor('#4a148c'),
spaceBefore=4,
spaceAfter=4,
fontName='Helvetica-Oblique',
leftIndent=10,
backColor=colors.HexColor('#f3e5f5'),
borderPad=6
)
body_style = ParagraphStyle(
'Body',
parent=styles['Normal'],
fontSize=10,
textColor=colors.HexColor('#212121'),
spaceBefore=3,
spaceAfter=3,
fontName='Helvetica',
leading=14,
leftIndent=10
)
tip_style = ParagraphStyle(
'Tip',
parent=styles['Normal'],
fontSize=10,
textColor=colors.HexColor('#e65100'),
spaceBefore=6,
spaceAfter=6,
fontName='Helvetica-Bold',
leftIndent=10,
backColor=colors.HexColor('#fff3e0'),
borderPad=8
)
def make_table(data, col_widths=None, header_bg=colors.HexColor('#1565c0')):
if col_widths is None:
col_widths = None
t = Table(data, colWidths=col_widths, repeatRows=1)
style = TableStyle([
('BACKGROUND', (0,0), (-1,0), header_bg),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 9),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8eaf6'), colors.white]),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#9fa8da')),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 7),
('RIGHTPADDING', (0,0), (-1,-1), 7),
])
t.setStyle(style)
return t
story = []
# ── COVER PAGE ──────────────────────────────────────────────────────────────
story.append(Spacer(1, 2*cm))
story.append(Paragraph("MICROBIOLOGY VIVA", title_style))
story.append(Paragraph("2nd Year MBBS", subtitle_style))
story.append(Paragraph("KNRUHS - Telangana University", subtitle_style))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=3, color=colors.HexColor('#1a237e')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Gram Stain & Acid Fast Stain", ParagraphStyle('CoverSub', parent=subtitle_style, fontSize=14, textColor=colors.HexColor('#1565c0'), fontName='Helvetica-Bold')))
story.append(Paragraph("Important Questions with Answers + Modifications of Gram Stain", subtitle_style))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Sources: Jawetz Melnick & Adelberg's Medical Microbiology 28e | Sherris & Ryan's Medical Microbiology 8e | Park's Textbook of Preventive & Social Medicine", ParagraphStyle('src', parent=subtitle_style, fontSize=8, textColor=colors.grey)))
story.append(Spacer(1, 2*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#9fa8da')))
story.append(PageBreak())
# ── PART A: GRAM STAIN ──────────────────────────────────────────────────────
story.append(Paragraph(" PART A: GRAM STAIN - VIVA QUESTIONS ", section_style))
story.append(Spacer(1, 0.2*cm))
qa_gram = [
("Q1. Who invented the Gram stain?",
"Hans Christian Gram, a Danish bacteriologist, invented it in 1884."),
("Q2. What are the reagents used in Gram stain? Give in order.",
None), # Table follows
("Q3. What is a mordant? What is the mordant in Gram stain?",
"A mordant is a substance that fixes the stain to the specimen by forming an insoluble complex. "
"In Gram stain, Gram's iodine is the mordant - it cross-links crystal violet to the peptidoglycan in the cell wall."),
("Q4. What is the principle of Gram stain?",
"Based on the difference in cell wall structure:\n"
"• Gram-POSITIVE organisms: thick peptidoglycan layer retains crystal violet-iodine complex after decolorization → appear PURPLE/VIOLET\n"
"• Gram-NEGATIVE organisms: thin peptidoglycan + outer lipopolysaccharide membrane - alcohol dissolves outer membrane, crystal violet-iodine washes out → take safranin → appear PINK/RED"),
("Q5. Why do Gram-positive bacteria retain crystal violet?",
"Because they have a thick peptidoglycan cell wall. When alcohol is applied, it dehydrates the thick cell wall, "
"closing the pores and trapping the crystal violet-iodine complex inside. "
"The iodine also cross-links to the peptidoglycan, making the complex harder to wash out."),
("Q6. What is the color of Gram-positive and Gram-negative organisms?",
"• Gram-POSITIVE = Purple/Violet (retain crystal violet)\n"
"• Gram-NEGATIVE = Pink/Red (take up safranin counterstain)"),
("Q7. What is the arrangement of bacteria and their examples?",
None), # Table follows
("Q8. Give 4 examples of Gram-positive and 4 Gram-negative organisms.",
None), # Table follows
("Q9. Why do some organisms not stain well with Gram stain?",
"• Mycobacteria - high lipid content in cell wall; need acid-fast stain\n"
"• Mycoplasma - no cell wall at all\n"
"• Rickettsia, Chlamydia - intracellular organisms; need special stains\n"
"• Treponema - too thin to be seen; need dark-field microscopy"),
("Q10. What is the decolorizer in Gram stain? Why is it important?",
"Acetone-alcohol (or absolute alcohol) is the decolorizer. It is the MOST CRITICAL STEP:\n"
"• Over-decolorization → Gram-positive appears Gram-negative (false result)\n"
"• Under-decolorization → Gram-negative appears Gram-positive (false result)"),
("Q11. What is the counterstain in Gram stain?",
"Safranin (pink/red dye). It stains the decolorized Gram-negative organisms so they become visible against the purple Gram-positive organisms."),
("Q12. What are the steps of smear preparation for Gram stain?",
"1. Clean glass slide and label it\n"
"2. Put a drop of saline on slide\n"
"3. With inoculating loop, emulsify specimen in saline\n"
"4. Spread thinly and allow to air dry\n"
"5. Heat fix - pass through flame 2-3 times\n"
"6. Proceed with staining"),
("Q13. What is heat fixation? Why is it done?",
"Passing the air-dried smear slowly through a flame 2-3 times. Purpose:\n"
"• Kills the organism (biological safety)\n"
"• Fixes (adheres) bacteria to the slide so they don't wash off during staining\n"
"• Preserves bacterial morphology"),
]
for i, item in enumerate(qa_gram):
q, a = item
story.append(Paragraph(q, q_style))
if i == 1: # Q2 - Reagents table
story.append(make_table(
[["Step", "Reagent", "Purpose"],
["1", "Crystal Violet", "Primary stain"],
["2", "Gram's Iodine", "Mordant (fixes stain)"],
["3", "Acetone-Alcohol", "Decolorizer (CRITICAL step)"],
["4", "Safranin", "Counterstain (stains Gram-negative pink)"]],
col_widths=[1.5*cm, 5*cm, 9*cm]
))
elif i == 6: # Q7 - Arrangement table
story.append(make_table(
[["Arrangement", "Organism"],
["Cocci in clusters (grape-like)", "Staphylococcus"],
["Cocci in chains", "Streptococcus"],
["Cocci in pairs (diplococci)", "Neisseria, Streptococcus pneumoniae"],
["Bacilli (rods)", "E. coli, Klebsiella"],
["Comma-shaped", "Vibrio cholerae"]],
col_widths=[8*cm, 8*cm]
))
elif i == 7: # Q8 - Examples table
story.append(make_table(
[["Gram-Positive", "Gram-Negative"],
["Staphylococcus aureus", "Escherichia coli"],
["Streptococcus pyogenes", "Klebsiella pneumoniae"],
["Clostridium tetani", "Neisseria meningitidis"],
["Bacillus anthracis", "Pseudomonas aeruginosa"]],
col_widths=[8*cm, 8*cm]
))
else:
if a:
for line in a.split('\n'):
story.append(Paragraph(line, a_style))
story.append(Spacer(1, 0.2*cm))
story.append(PageBreak())
# ── PART B: ACID FAST STAIN ──────────────────────────────────────────────────
story.append(Paragraph(" PART B: ACID FAST STAIN (ZN STAIN) - VIVA QUESTIONS ", section_style))
story.append(Spacer(1, 0.2*cm))
qa_afb = [
("Q14. Who invented the Acid-Fast Stain (Ziehl-Neelsen)?",
"Ziehl introduced carbolfuchsin; Neelsen modified the technique. Hence called Ziehl-Neelsen (ZN) stain. Invented in 1882."),
("Q15. What is the principle of Acid-Fast Stain?",
"Mycobacteria have a HIGH LIPID (mycolic acid) content in their cell wall. This makes them:\n"
"• Stain poorly with ordinary dyes\n"
"• BUT once stained with carbolfuchsin (with heat), the dye penetrates the waxy lipid wall\n"
"• They then RESIST decolorization with strong acid-alcohol (3% HCl in 95% alcohol)\n"
"• Hence called 'Acid-Fast' bacteria\n"
"• Non-acid-fast bacteria lose the red stain and take up the blue counterstain"),
("Q16. What are the reagents used in ZN stain? In order.",
None), # Table follows
("Q17. What are the results of ZN stain?",
"• Acid-fast organisms (AFB) = RED/PINK against a BLUE background (POSITIVE)\n"
"• Non-acid-fast organisms = BLUE (take up counterstain - NEGATIVE)"),
("Q18. Why is heating used in ZN stain?",
"Heat helps carbolfuchsin PENETRATE the thick, waxy lipid (mycolic acid) cell wall of mycobacteria. "
"Without heat, the dye cannot enter the cell. Heating is done at 60°C for 5 minutes. "
"IMPORTANT: Do NOT allow slide to boil or dry out."),
("Q19. Why are Mycobacteria acid-fast?",
"Because their cell wall contains MYCOLIC ACID (a complex, long-chain fatty acid/wax). This waxy lipid:\n"
"1. Resists penetration by normal aqueous dyes\n"
"2. Once carbolfuchsin enters (with heat), the waxy wall traps it\n"
"3. Strong acid-alcohol cannot remove the dye\n"
"This property is unique to Mycobacterium and a few related organisms (Nocardia - partially acid-fast)"),
("Q20. Give examples of Acid-fast organisms.",
"• Strongly acid-fast: Mycobacterium tuberculosis, M. leprae, M. bovis\n"
"• Weakly/Partially acid-fast: Nocardia asteroides, Cryptosporidium oocysts"),
("Q21. What is the clinical use of ZN stain?",
"• Primary use: Diagnosis of TUBERCULOSIS (TB) - examining sputum smear for AFB\n"
"• Also used for: Leprosy (M. leprae in slit-skin smears)\n"
"• Sputum smear positivity requires at least 10,000 organisms per ml of sputum"),
("Q22. What are the types of Acid-Fast stain methods?",
None), # Table follows
("Q23. How do you report sputum AFB smear?",
None), # Table follows
]
for i, item in enumerate(qa_afb):
q, a = item
story.append(Paragraph(q, q_style))
if i == 2: # Q16 - Reagents
story.append(make_table(
[["Step", "Reagent", "Purpose"],
["1", "Carbolfuchsin (with heating)", "Primary stain - stains red"],
["2", "3% Acid-Alcohol (HCl + ethanol)", "Decolorizer"],
["3", "Loeffler's Methylene Blue", "Counterstain (blue background)"]],
col_widths=[1.5*cm, 6.5*cm, 8*cm]
))
elif i == 8: # Q22 - Types
story.append(make_table(
[["Method", "Feature", "Sensitivity"],
["Ziehl-Neelsen (ZN)", "Classic; uses HEAT with carbolfuchsin", "Standard"],
["Kinyoun (Cold method)", "No heat; uses STRONGER carbolfuchsin", "Similar to ZN"],
["Fluorochrome stain", "Uses auramine-rhodamine; fluorescence microscopy", "MOST SENSITIVE"]],
col_widths=[4.5*cm, 7*cm, 4.5*cm]
))
elif i == 9: # Q23 - Reporting
story.append(make_table(
[["Finding", "Report"],
["No AFB in 100 fields", "Negative (0)"],
["1-9 AFB per 100 fields", "Scanty (record exact number)"],
["10-99 AFB per 100 fields", "1+ (Positive)"],
["1-10 AFB per oil immersion field", "2+ (Positive)"],
[">10 AFB per oil immersion field", "3+ (Positive)"]],
col_widths=[9*cm, 7*cm]
))
else:
if a:
for line in a.split('\n'):
story.append(Paragraph(line, a_style))
story.append(Spacer(1, 0.2*cm))
story.append(PageBreak())
# ── PART C: COMPARISON TABLE ──────────────────────────────────────────────────
story.append(Paragraph(" PART C: COMPARISON - GRAM STAIN vs ACID FAST STAIN ", section_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Q24. Difference between Gram Stain and Acid-Fast (ZN) Stain?", q_style))
story.append(Spacer(1, 0.2*cm))
story.append(make_table(
[["Feature", "Gram Stain", "ZN (Acid-Fast) Stain"],
["Inventor", "Hans Christian Gram (1884)", "Ziehl & Neelsen (1882)"],
["Primary Stain", "Crystal Violet", "Carbolfuchsin"],
["Mordant", "Gram's Iodine", "Heat (60°C, 5 min)"],
["Decolorizer", "Acetone-Alcohol", "Acid-Alcohol (3% HCl)"],
["Counterstain", "Safranin (pink/red)", "Methylene Blue"],
["Positive Result", "Purple/Violet", "Red/Pink (AFB positive)"],
["Negative Result", "Pink/Red", "Blue"],
["Used For", "Most bacteria", "Mycobacteria (TB, leprosy)"],
["Critical Step", "Decolorization", "Heating with carbolfuchsin"]],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Q25. Why can't Mycobacteria be stained by Gram stain?", q_style))
for line in ["Mycobacteria have a very HIGH LIPID/MYCOLIC ACID content in their cell wall. Gram stain uses aqueous dyes "
"that cannot penetrate this waxy wall effectively. Even if they stain, they appear weakly Gram-positive. "
"Acid-fast stain with heat is required to stain them properly.",
"Key point: Mycobacteria are described as 'Gram-positive' structurally but are BETTER demonstrated by ZN stain."]:
story.append(Paragraph(line, a_style))
story.append(PageBreak())
# ── PART D: MODIFICATIONS OF GRAM STAIN ─────────────────────────────────────
story.append(Paragraph(" PART D: MODIFICATIONS OF GRAM STAIN ", section_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"The original Gram stain has several modifications, mainly differing in the primary stain, mordant, "
"decolorizer, and counterstain used. These were developed to overcome decolorization difficulties, "
"staining of tissue sections, and better identification of specific organisms.",
body_style
))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Summary Table of All Modifications", subsection_style))
story.append(make_table(
[["Modification", "Primary Stain", "Mordant", "Decolorizer", "Counterstain", "Special Use"],
["Original Gram", "Crystal Violet", "Gram's Iodine", "Ethanol", "Safranin", "Standard method"],
["Hucker's*", "Ammonium oxalate-\ncrystal violet", "Gram's Iodine", "Acetone-alcohol", "Safranin", "MOST WIDELY USED today"],
["Kopeloff &\nBeerman's", "Methyl violet +\nNa bicarbonate", "Iodine in\n4% NaOH", "Acetone or\nacetone-ethanol", "Basic Fuchsin", "Anaerobes;\ntissue sections"],
["Jensen's", "Methyl Violet", "Iodine + KI\nin water", "Absolute alcohol", "Neutral Red", "Neisseria spp"],
["Weigert's", "Carbol gentian\nviolet", "Gram's Iodine", "Aniline-xylol", "Carmalum\n(used BEFORE)", "Tissue sections;\nPneumocystis cysts"],
["Preston &\nMorrell's", "Ammonium oxalate-\ncrystal violet", "Lugol's iodine\n(applied twice)", "Iodine-acetone", "Standard", "Better decolorization\ncontrol"],
["Burke's", "Crystal Violet", "Gram's Iodine", "Acetone", "Safranin", "Faster technique"]],
col_widths=[2.7*cm, 3*cm, 2.5*cm, 2.8*cm, 2.5*cm, 3.5*cm]
))
story.append(Spacer(1, 0.4*cm))
# Individual explanations
mods = [
("1. Hucker's Modification (Most Important - Most Widely Used)", [
"Primary stain: AMMONIUM OXALATE-CRYSTAL VIOLET (instead of plain crystal violet)",
"The addition of ammonium oxalate stabilizes the dye and prevents pH from becoming acidic (iodine oxidizes and can lower pH; sodium bicarbonate/ammonium oxalate prevents this)",
"Decolorizer: Acetone-alcohol",
"Counterstain: Safranin",
"Why it's better: More consistent results, less over-decolorization, more stable staining",
]),
("2. Kopeloff & Beerman's Modification (For Anaerobes)", [
"Primary stain: Methyl violet + sodium bicarbonate",
"Mordant: Iodine dissolved in 4% NaOH (instead of standard iodine solution)",
"Decolorizer: Acetone alone or acetone-ethanol",
"Counterstain: BASIC FUCHSIN (instead of safranin)",
"Special use: Developed specifically for ANAEROBIC BACTERIA which decolorize too rapidly and falsely appear Gram-negative. Also useful for tissue sections.",
]),
("3. Jensen's Modification (For Neisseria)", [
"Primary stain: Methyl violet",
"Mordant: Iodine + potassium iodide in water",
"Decolorizer: Absolute alcohol",
"Counterstain: Neutral red (Sandiford's counterstain specifically for Neisseria spp.)",
"Special use: Better visualization of Neisseria gonorrhoeae and N. meningitidis",
]),
("4. Weigert's Modification (For Tissue Sections)", [
"Primary stain: Carbol gentian violet (saturated alcoholic gentian violet + 5% phenol)",
"Mordant: Gram's iodine",
"Decolorizer: ANILINE-XYLOL (unique - also clears the tissue)",
"Counterstain: Carmalum (carminic acid + potassium alum) - used BEFORE the primary stain! (reverse order)",
"Special use: Staining bacteria in TISSUE SECTIONS (histopathology); also used for Pneumocystis jirovecii cysts",
]),
("5. Preston & Morrell's Modification", [
"Primary stain: Ammonium oxalate-crystal violet",
"Mordant: Lugol's iodine (applied twice - washed with Lugol's, then treated again with iodine solution)",
"Decolorizer: Iodine-acetone",
"Developed to give better control over decolorization step",
]),
]
for title, points in mods:
story.append(Paragraph(title, subsection_style))
for pt in points:
story.append(Paragraph("• " + pt, body_style))
story.append(Spacer(1, 0.2*cm))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Why Were Modifications Needed?", subsection_style))
reasons = [
"Decolorization difficulty: Some Gram-positive bacteria (especially ANAEROBES and OLD CULTURES) decolorize too rapidly and falsely appear Gram-negative",
"Tissue sections require different dyes that can penetrate fixed tissue",
"Composition of growth medium and AGE OF CULTURE can change Gram reaction",
"Certain organisms (Neisseria, Pneumocystis) need tailored reagents for best results",
]
for r in reasons:
story.append(Paragraph("• " + r, body_style))
story.append(PageBreak())
# ── QUICK VIVA REFERENCE PAGE ────────────────────────────────────────────────
story.append(Paragraph(" QUICK VIVA REFERENCE ", section_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Modifications - Quick Recall", subsection_style))
story.append(make_table(
[["If examiner asks about...", "Answer"],
["Most widely used modification", "Hucker's modification"],
["Modification for anaerobes", "Kopeloff & Beerman's"],
["Modification for tissue sections", "Weigert's"],
["Modification for Neisseria", "Jensen's"],
["Unique feature of Weigert's", "Counterstain used BEFORE primary stain; aniline-xylol as decolorizer"],
["Unique feature of Kopeloff's", "Counterstain is BASIC FUCHSIN (not safranin); iodine in NaOH as mordant"],
["Unique feature of Hucker's", "Ammonium oxalate added to crystal violet for stability"]],
col_widths=[7*cm, 9*cm]
))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Gram Stain - Memory Aids", subsection_style))
story.append(make_table(
[["Mnemonic / Tip", "What it helps remember"],
["C-I-D-C (Crystal violet, Iodine, Decolorizer, Counterstain)", "Order of Gram stain reagents"],
["Gram+ve = Purple = Peptidoglycan thick", "Gram-positive result"],
["Gram-ve = Pink = Peripheral lipid (outer membrane)", "Gram-negative result"],
["'My Bacteria Are Fat' (Mycobacteria - waxy lipid wall)", "Why mycobacteria need ZN stain"]],
col_widths=[9*cm, 7*cm]
))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Acid Fast Stain - Memory Aids", subsection_style))
story.append(make_table(
[["Mnemonic / Tip", "What it helps remember"],
["'Red is Read' = AFB positive = TB suspected", "ZN stain positive result is RED"],
["C-A-M (Carbolfuchsin, Acid-alcohol, Methylene blue)", "Order of ZN stain reagents"],
["Mycolic acid = Waxy wall = Resists acid-alcohol", "Principle of acid-fastness"],
["3% HCl in 95% ethanol = Acid-alcohol decolorizer", "ZN decolorizer composition"]],
col_widths=[9*cm, 7*cm]
))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph(
"PRO TIP: In viva, always state the PRINCIPLE before the PROCEDURE. Examiners love when students explain WHY each step is done, not just WHAT is done.",
tip_style
))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#9fa8da')))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"Prepared by Orris AI | Sources: Jawetz Melnick & Adelberg's Medical Microbiology 28e, Sherris & Ryan's Medical Microbiology 8e, Park's Preventive & Social Medicine",
ParagraphStyle('footer', parent=styles['Normal'], fontSize=8, textColor=colors.grey, alignment=TA_CENTER)
))
doc.build(story)
print(f"PDF created successfully: {OUTPUT_PATH}")
cd /home/daytona/workspace/microbiology-viva && python generate_pdf.py
ls -lh /home/daytona/workspace/microbiology-viva/Microbiology_Viva_KNRUHS.pdf
Microbiology Viva KNRUHS
PDF Document · PDF
| Section | Content |
|---|---|
| Part A | 13 Gram Stain viva Q&A with tables |
| Part B | 10 Acid Fast Stain (ZN) viva Q&A with tables |
| Part C | Full comparison table: Gram Stain vs ZN Stain + Q25 on Mycobacteria |
| Part D | All 5 Modifications of Gram Stain - detailed with summary table |
| Quick Reference | Memory aids, mnemonics, and viva tips for last-minute revision |
Can you add gram positive cocci bacilli and gram negative cocci and bacilli And types of staining and why and for what?? And also give mee questions asked on OSPE and aetcom of microbiology knruhs Ospe full form also include all this in pdf only Givr as many as questions u have U can give me more questions in gram stain and acid fast stain too
KNRUHS 2nd year MBBS microbiology OSPE AETCOM questions practical viva Telangana
OSPE microbiology 2nd year MBBS questions staining gram stain AETCOM ethics microbiology
https://www.studocu.com/row/document/khyber-medical-universi…
AETCOM microbiology 2nd year MBBS ethics patient TB antimicrobial stewardship viva questions India
https://www.slideshare.net/slideshow/aetcom-microbiology-2nd…
~/microbiology-viva/generate_pdf_v2.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, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT_PATH = "/home/daytona/workspace/microbiology-viva/Microbiology_Viva_KNRUHS_v2.pdf"
doc = SimpleDocTemplate(
OUTPUT_PATH, pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm,
title="Microbiology Viva - KNRUHS 2nd Year MBBS - Complete Guide",
author="Orris AI"
)
styles = getSampleStyleSheet()
# ── Styles ──────────────────────────────────────────────────────────────────
def S(name, **kw):
return ParagraphStyle(name, parent=styles['Normal'], **kw)
TITLE = S('T', fontSize=22, textColor=colors.HexColor('#0d47a1'), alignment=TA_CENTER, fontName='Helvetica-Bold', spaceAfter=4)
SUBTITLE= S('ST', fontSize=11, textColor=colors.HexColor('#37474f'), alignment=TA_CENTER, fontName='Helvetica', spaceAfter=3)
SEC = S('SEC', fontSize=13, textColor=colors.white, backColor=colors.HexColor('#0d47a1'), spaceBefore=12, spaceAfter=6, fontName='Helvetica-Bold', leading=20, leftIndent=-8, rightIndent=-8)
SUBSEC = S('SS', fontSize=11.5, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4, fontName='Helvetica-Bold')
Q = S('Q', fontSize=10.5, textColor=colors.HexColor('#b71c1c'), spaceBefore=8, spaceAfter=2, fontName='Helvetica-Bold', leftIndent=8)
A = S('A', fontSize=10, textColor=colors.HexColor('#1b5e20'), spaceBefore=2, spaceAfter=3, fontName='Helvetica', leftIndent=18, leading=14)
BODY = S('B', fontSize=10, textColor=colors.HexColor('#212121'), spaceBefore=2, spaceAfter=2, fontName='Helvetica', leading=14, leftIndent=8)
NOTE = S('N', fontSize=9.5, textColor=colors.HexColor('#4a148c'), spaceBefore=4, spaceAfter=4, fontName='Helvetica-Oblique', leftIndent=8, backColor=colors.HexColor('#f3e5f5'), borderPad=5)
TIP = S('TIP', fontSize=10, textColor=colors.HexColor('#e65100'), spaceBefore=5, spaceAfter=5, fontName='Helvetica-Bold', leftIndent=8, backColor=colors.HexColor('#fff3e0'), borderPad=7)
OSPE_Q = S('OQ', fontSize=10.5, textColor=colors.HexColor('#1a237e'), spaceBefore=8, spaceAfter=2, fontName='Helvetica-Bold', leftIndent=8)
OSPE_A = S('OA', fontSize=10, textColor=colors.HexColor('#004d40'), spaceBefore=2, spaceAfter=3, fontName='Helvetica', leftIndent=18, leading=14)
FOOTER = S('F', fontSize=8, textColor=colors.grey, alignment=TA_CENTER)
def tbl(data, widths=None, hdr=colors.HexColor('#1565c0')):
t = Table(data, colWidths=widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,0), hdr),
('TEXTCOLOR',(0,0),(-1,0), colors.white),
('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),
('FONTSIZE',(0,0),(-1,0), 9.5),
('FONTNAME',(0,1),(-1,-1),'Helvetica'),
('FONTSIZE',(0,1),(-1,-1), 9),
('ALIGN',(0,0),(-1,-1),'LEFT'),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.HexColor('#e8eaf6'), colors.white]),
('GRID',(0,0),(-1,-1), 0.5, colors.HexColor('#9fa8da')),
('TOPPADDING',(0,0),(-1,-1), 5),
('BOTTOMPADDING',(0,0),(-1,-1), 5),
('LEFTPADDING',(0,0),(-1,-1), 6),
('RIGHTPADDING',(0,0),(-1,-1), 6),
]))
return t
def qa(q_text, a_lines, style_q=Q, style_a=A):
items = [Paragraph(q_text, style_q)]
for line in a_lines:
items.append(Paragraph(line, style_a))
items.append(Spacer(1, 0.15*cm))
return items
story = []
# ════════════════════════════════════════════════════════════════
# COVER PAGE
# ════════════════════════════════════════════════════════════════
story += [
Spacer(1, 1.5*cm),
Paragraph("MICROBIOLOGY VIVA", TITLE),
Paragraph("2nd Year MBBS | KNRUHS - Telangana University", SUBTITLE),
Spacer(1, 0.3*cm),
HRFlowable(width="100%", thickness=3, color=colors.HexColor('#0d47a1')),
Spacer(1, 0.3*cm),
Paragraph("COMPLETE PRACTICAL GUIDE", S('cp', fontSize=14, textColor=colors.HexColor('#1565c0'), alignment=TA_CENTER, fontName='Helvetica-Bold')),
Spacer(1, 0.4*cm),
Paragraph("Topics Covered:", S('tc', fontSize=11, textColor=colors.HexColor('#37474f'), alignment=TA_CENTER, fontName='Helvetica-Bold')),
Spacer(1, 0.2*cm),
]
cover_items = [
["Part A", "Gram Stain - Viva Questions (25+ Q&A)"],
["Part B", "Acid Fast Stain (ZN Stain) - Viva Questions (15+ Q&A)"],
["Part C", "Gram Stain vs Acid Fast Stain - Comparison"],
["Part D", "Modifications of Gram Stain (All 5 types)"],
["Part E", "Types of Staining - Simple, Differential, Special Purpose"],
["Part F", "Gram-Positive Cocci & Bacilli - Classification + Examples"],
["Part G", "Gram-Negative Cocci & Bacilli - Classification + Examples"],
["Part H", "OSPE - Objective Structured Practical Exam Questions"],
["Part I", "AETCOM - Attitude, Ethics & Communication Questions"],
["Part J", "Quick Viva Reference & Memory Aids"],
]
story.append(tbl([["Section", "Content"]] + cover_items, widths=[3*cm, 13*cm], hdr=colors.HexColor('#0d47a1')))
story += [
Spacer(1, 0.5*cm),
HRFlowable(width="100%", thickness=1, color=colors.HexColor('#9fa8da')),
Paragraph("Sources: Jawetz Melnick & Adelberg's Medical Microbiology 28e | Sherris & Ryan's Medical Microbiology 8e | Park's Preventive & Social Medicine | NMC AETCOM Guidelines", FOOTER),
PageBreak(),
]
# ════════════════════════════════════════════════════════════════
# PART A: GRAM STAIN VIVA
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART A: GRAM STAIN - VIVA QUESTIONS ", SEC))
story += qa("Q1. Who invented the Gram stain? When?",
["Hans Christian Gram, a Danish bacteriologist, invented it in 1884.",
"He discovered it accidentally while trying to stain bacteria in lung tissue of pneumonia patients."])
story += qa("Q2. What are the reagents/steps of Gram stain in order?", [""])
story.append(tbl([["Step","Reagent","Role","Time"],
["1","Crystal Violet","Primary stain - stains ALL bacteria purple","1 min"],
["2","Gram's Iodine","Mordant - forms CV-Iodine complex","1 min"],
["3","Acetone-Alcohol (95%)","Decolorizer - MOST CRITICAL step","5-10 sec"],
["4","Safranin","Counterstain - stains Gram-negative pink","1 min"]],
widths=[1.5*cm, 4.5*cm, 8*cm, 2*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q3. What is the principle of Gram stain?",
["Based on CELL WALL STRUCTURE differences:",
"• Gram-POSITIVE: THICK peptidoglycan wall (20-80 nm) → retains CV-iodine complex after decolorization → appear PURPLE",
"• Gram-NEGATIVE: THIN peptidoglycan (2-7 nm) + outer lipopolysaccharide (LPS) membrane → alcohol dissolves outer membrane → CV-iodine washes out → takes safranin → appear PINK/RED"])
story += qa("Q4. What is a mordant? Name the mordant in Gram stain.",
["A mordant is a substance that fixes/intensifies the stain by forming an insoluble complex with the dye.",
"Mordant in Gram stain: GRAM'S IODINE (Lugol's iodine - iodine + potassium iodide in water)",
"It forms a large Crystal Violet-Iodine (CVI) complex that is trapped inside Gram-positive cells."])
story += qa("Q5. What is the decolorizer? Why is it the most critical step?",
["Decolorizer: Acetone-alcohol (or absolute ethanol)",
"It is MOST CRITICAL because:",
"• Over-decolorization → Gram-positive appear falsely Gram-NEGATIVE",
"• Under-decolorization → Gram-negative appear falsely Gram-POSITIVE",
"Rule: Decolorize until only a faint pink tinge remains (usually 5-10 seconds)"])
story += qa("Q6. What is heat fixation? Why is it done?",
["Passing air-dried smear slowly through a flame 2-3 times.",
"Purpose: (1) Kills the organism - biosafety, (2) Adheres bacteria to slide so they don't wash off during staining, (3) Preserves morphology"])
story += qa("Q7. What is the color of Gram-positive vs Gram-negative bacteria?",
["Gram-POSITIVE = PURPLE / VIOLET (retain crystal violet)",
"Gram-NEGATIVE = PINK / RED (take up safranin counterstain)"])
story += qa("Q8. What are the differences in cell wall between Gram-positive and Gram-negative bacteria?", [""])
story.append(tbl([["Feature","Gram-Positive","Gram-Negative"],
["Peptidoglycan layer","THICK (20-80 nm)","THIN (2-7 nm)"],
["Outer membrane","ABSENT","PRESENT (LPS layer)"],
["Teichoic acids","PRESENT","ABSENT"],
["Periplasmic space","Narrow","Wide"],
["Lipid content","LOW","HIGH"],
["Sensitivity to penicillin","More sensitive","Less sensitive"],
["Endotoxin (LPS)","ABSENT","PRESENT"]],
widths=[5*cm, 5.5*cm, 5.5*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q9. What organisms do NOT stain well with Gram stain and why?",
["• Mycobacteria - high mycolic acid/lipid content → need ZN (acid-fast) stain",
"• Mycoplasma - NO cell wall → cannot be stained by Gram stain",
"• Rickettsia & Chlamydia - obligate intracellular organisms → need Giemsa/special stains",
"• Treponema - too thin (0.1-0.2 micron diameter) → need dark-field microscopy",
"• Legionella - stains poorly, need silver impregnation or DIF stain"])
story += qa("Q10. What are Gram-variable organisms?",
["Organisms that may stain either Gram-positive or Gram-negative depending on conditions:",
"• Bacillus (old cultures) | • Clostridium | • Gardnerella vaginalis",
"Reason: Age of culture, medium composition, over/under-decolorization"])
story += qa("Q11. What is the arrangement of cocci and their clinical examples?", [""])
story.append(tbl([["Arrangement","Description","Organism"],
["Clusters (bunch of grapes)","Irregular clusters","Staphylococcus aureus"],
["Chains","Linear chains","Streptococcus pyogenes"],
["Diplococci (pairs - lancet shaped)","Two cocci together","Streptococcus pneumoniae"],
["Diplococci (kidney-shaped pairs)","Bean-shaped pairs, intracellular","Neisseria gonorrhoeae / meningitidis"],
["Tetrads (groups of 4)","Square arrangement","Micrococcus"],
["Sarcinae (groups of 8)","Cube arrangement","Sarcina"]],
widths=[4*cm, 4.5*cm, 7.5*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q12. What is the counterstain? Can it be changed?",
["Standard counterstain: SAFRANIN (pink/red)",
"Alternatives: Dilute carbol fuchsin (used in some modifications - gives better contrast for faint Gram-negatives)",
"Safranin stains decolorized Gram-negative bacteria so they become visible"])
story += qa("Q13. What is the clinical significance of Gram stain?",
["• Rapid preliminary identification of bacteria (results in 15-20 min)",
"• Guides empirical antibiotic therapy before culture results are available",
"• Direct smear from specimens: sputum, CSF, pus, urine, blood culture",
"• Helps differentiate Gram+ve infections (S. aureus) from Gram-ve (E. coli, Klebsiella)",
"• Identifies bacterial morphology: cocci vs bacilli, arrangement, spores, capsules"])
story += qa("Q14. What are causes of false Gram stain results?",
["False Gram-NEGATIVE (Gram+ve appears -ve):",
"• Over-decolorization | • Old culture (>24 hrs) | • Dead bacteria | • Antibiotic-treated organisms",
"False Gram-POSITIVE (Gram-ve appears +ve):",
"• Under-decolorization | • Too thick smear | • Improper washing"])
story += qa("Q15. What is the magnification used to read Gram stain?",
["100x oil immersion objective (total magnification = 100 x 10 eyepiece = 1000x)",
"Immersion oil is used to increase the refractive index and improve resolution."])
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART B: ACID FAST STAIN
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART B: ACID FAST STAIN (ZN STAIN) - VIVA QUESTIONS ", SEC))
story += qa("Q16. Who invented Acid-Fast (Ziehl-Neelsen) stain? When?",
["• Robert Koch first used carbolfuchsin in 1882 to stain M. tuberculosis",
"• Franz Ziehl introduced the phenol-carbolfuchsin combination",
"• Friedrich Neelsen refined the method with acid-alcohol decolorization",
"• Hence called Ziehl-Neelsen (ZN) stain"])
story += qa("Q17. What are the reagents of ZN stain in order?", [""])
story.append(tbl([["Step","Reagent","Action","Time"],
["1","Carbolfuchsin (with heating 60°C)","Primary stain - stains all bacteria red","5 min (hot)"],
["2","3% Acid-Alcohol (3% HCl + 95% ethanol)","Decolorizer - removes dye from non-AFB","Until faint pink"],
["3","Loeffler's Methylene Blue","Counterstain - stains background blue","1 min"]],
widths=[1.5*cm, 5.5*cm, 6.5*cm, 2.5*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q18. What is the principle of Acid-Fast staining?",
["Mycobacteria have HIGH LIPID (MYCOLIC ACID) content in their cell wall.",
"• Carbolfuchsin + heat: Heat loosens the waxy wall, allowing the dye to penetrate",
"• After staining: The dye is TRAPPED inside the lipid-rich wall",
"• Acid-alcohol cannot remove the dye → bacteria remain RED → called ACID-FAST",
"• Non-AFB: lose dye with acid-alcohol → take up methylene blue → appear BLUE"])
story += qa("Q19. What are the results of ZN stain?",
["• AFB POSITIVE (acid-fast organisms) = RED/PINK bacilli against BLUE background",
"• AFB NEGATIVE (non-acid-fast) = BLUE against blue background",
"Remember: 'RED is READ' = AFB positive = possible TB!"])
story += qa("Q20. Why is heating used in ZN stain? What temperature?",
["Heating at 60°C for 5 minutes allows carbolfuchsin to PENETRATE the thick, waxy mycolic acid cell wall.",
"Without heat, the dye cannot enter. Do NOT boil or let the slide dry out.",
"Alternative: Kinyoun's method uses STRONGER carbolfuchsin (no heat needed)"])
story += qa("Q21. What is mycolic acid? Why does it make bacteria acid-fast?",
["Mycolic acid = complex, long-chain (C60-C90) fatty acid found uniquely in Mycobacterium cell wall",
"• It forms a waxy, hydrophobic layer around the cell",
"• This waxy layer TRAPS carbolfuchsin once it enters (with heat)",
"• Strong acid-alcohol (3% HCl) CANNOT remove the dye from within this lipid layer",
"• Thus bacteria are said to be 'acid-fast' (resist acid decolorization)"])
story += qa("Q22. Examples of Acid-fast and Partially acid-fast organisms?", [""])
story.append(tbl([["Category","Organisms","Disease"],
["Strongly acid-fast","Mycobacterium tuberculosis","Tuberculosis (TB)"],
["Strongly acid-fast","Mycobacterium leprae","Leprosy (Hansen's disease)"],
["Strongly acid-fast","Mycobacterium bovis","Bovine TB"],
["Strongly acid-fast","M. avium complex (MAC)","Opportunistic in HIV"],
["Partially acid-fast","Nocardia asteroides","Nocardiosis"],
["Partially acid-fast","Cryptosporidium oocysts","Cryptosporidiosis (diarrhea)"],
["Partially acid-fast","Isospora oocysts","Isosporiasis"]],
widths=[4*cm, 6*cm, 6*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q23. What are the 3 methods of Acid-Fast staining?", [""])
story.append(tbl([["Method","Special Feature","Sensitivity","Use"],
["Ziehl-Neelsen (ZN)","HEAT with carbolfuchsin","Standard (60-70%)","Routine TB diagnosis"],
["Kinyoun (Cold)","NO heat, stronger dye concentration","Similar to ZN","Busy labs, no heating"],
["Fluorochrome (Auramine-Rhodamine)","Fluorescent dye, UV microscopy","MOST SENSITIVE (10x more)","High-volume TB screening"]],
widths=[3.5*cm, 4.5*cm, 3.5*cm, 4.5*cm]))
story.append(Spacer(1, 0.2*cm))
story += qa("Q24. How do you report AFB sputum smear?", [""])
story.append(tbl([["Finding","Report","Significance"],
["No AFB / 100 fields","0 (Negative)","TB unlikely"],
["1-9 AFB / 100 fields","Scanty (record exact no.)","Report to clinician"],
["10-99 AFB / 100 fields","1+ (Positive)","Smear positive TB"],
["1-10 AFB / oil immersion field","2+ (Positive)","Smear positive TB"],
[">10 AFB / oil immersion field","3+ (Positive)","Highly infectious TB"]],
widths=[5.5*cm, 4.5*cm, 6*cm]))
story.append(Spacer(1,0.2*cm))
story.append(Paragraph("Note: Sputum smear microscopy is positive only when >10,000 organisms/mL are present.", NOTE))
story += qa("Q25. What is the clinical use of ZN stain?",
["1. Diagnosis of PULMONARY TB - AFB smear of sputum",
"2. Diagnosis of LEPROSY - slit-skin smear, nasal scraping",
"3. Extra-pulmonary TB - CSF, pleural fluid, urine, biopsy",
"4. Monitoring treatment response - smear negativity shows response",
"5. Cryptosporidium in stool - modified ZN stain"])
story += qa("Q26. Why do Mycobacteria stain weakly Gram-positive but are better demonstrated by ZN stain?",
["Mycobacteria have a unique cell wall with HIGH LIPID/MYCOLIC ACID content.",
"• Gram stain uses aqueous dyes that CANNOT penetrate this waxy wall well",
"• ZN stain uses HEAT + phenol to forcibly drive carbolfuchsin into the waxy wall",
"• Once inside, the dye is trapped and resists acid-alcohol decolorization",
"Conclusion: ZN stain is SPECIFIC and SENSITIVE for Mycobacteria; Gram stain is NOT suitable."])
story += qa("Q27. What is the minimum number of organisms needed for a positive AFB smear?",
["At least 10,000 organisms per mL of sputum are needed for sputum smear positivity.",
"Fluorochrome stain is 10x more sensitive - can detect lower bacterial loads."])
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART C: COMPARISON TABLE
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART C: GRAM STAIN vs ACID FAST STAIN - COMPARISON ", SEC))
story.append(Spacer(1, 0.3*cm))
story.append(tbl([
["Feature","Gram Stain","ZN (Acid-Fast) Stain"],
["Invented by","Hans Christian Gram, 1884","Ziehl & Neelsen, 1882"],
["Primary stain","Crystal Violet (purple)","Carbolfuchsin (red)"],
["Mordant","Gram's Iodine","Heat (60°C, 5 min)"],
["Decolorizer","Acetone-Alcohol","3% Acid-Alcohol (HCl + ethanol)"],
["Counterstain","Safranin (pink)","Loeffler's Methylene Blue (blue)"],
["Positive result","Purple/Violet","Red/Pink (AFB+ve)"],
["Negative result","Pink/Red","Blue"],
["Used for","Most bacteria (Gram+ve and Gram-ve)","Mycobacteria (TB, leprosy)"],
["Time","15-20 min","30-40 min"],
["Principle","Cell wall peptidoglycan thickness","Mycolic acid content (acid-fastness)"],
["Critical step","Decolorization","Heating with carbolfuchsin"],
["Why Mycobacteria fail Gram stain","High lipid content blocks aqueous dyes","N/A - ZN is the correct stain"],
["Organisms not stained","Mycobacteria, Mycoplasma, Treponema","Non-mycobacterial organisms"]],
widths=[4.5*cm, 6*cm, 5.5*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART D: MODIFICATIONS OF GRAM STAIN
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART D: MODIFICATIONS OF GRAM STAIN ", SEC))
story.append(Paragraph("Summary Table", SUBSEC))
story.append(tbl([
["Modification","Primary Stain","Mordant","Decolorizer","Counterstain","Special Use"],
["Original Gram","Crystal Violet","Gram's Iodine","Ethanol","Safranin","Standard method"],
["Hucker's*","Ammonium oxalate-crystal violet","Gram's Iodine","Acetone-alcohol","Safranin","MOST WIDELY USED"],
["Kopeloff & Beerman's","Methyl violet + NaHCO3","Iodine in 4% NaOH","Acetone/acetone-ethanol","Basic Fuchsin","Anaerobes; tissue sections"],
["Jensen's","Methyl Violet","Iodine + KI in water","Absolute alcohol","Neutral Red","Neisseria spp"],
["Weigert's","Carbol gentian violet","Gram's Iodine","Aniline-xylol","Carmalum (used BEFORE primary stain)","Tissue sections; Pneumocystis cysts"],
["Preston & Morrell's","Ammonium oxalate-crystal violet","Lugol's iodine (x2)","Iodine-acetone","Standard","Better decolorization control"],
["Burke's","Crystal Violet","Gram's Iodine","Acetone","Safranin","Faster technique"]],
widths=[2.8*cm, 3.2*cm, 2.8*cm, 2.8*cm, 2.8*cm, 2.6*cm]))
story += [Spacer(1, 0.4*cm), Paragraph("Why Were Modifications Needed?", SUBSEC)]
for r in ["• Gram-positive anaerobes decolorize too rapidly → falsely appear Gram-negative",
"• Old cultures or damaged cells change their Gram reaction",
"• Tissue sections need dyes that penetrate fixed tissue (Weigert's)",
"• Certain organisms (Neisseria, Pneumocystis) need tailored reagents (Jensen's, Weigert's)",
"• Hucker's ammonium oxalate prevents pH drop caused by iodine oxidation → more stable staining"]:
story.append(Paragraph(r, BODY))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART E: TYPES OF STAINING
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART E: TYPES OF STAINING - Classification, Purpose & Examples ", SEC))
story += qa("Q. What are the types of staining used in microbiology?",
["Staining is classified into 3 main types based on purpose:"])
story.append(Paragraph("1. SIMPLE STAIN", SUBSEC))
story.append(tbl([
["Feature","Details"],
["Definition","Uses only ONE dye to stain bacteria"],
["Purpose","To study bacterial morphology, size, and arrangement only"],
["Does NOT differentiate","Between different types of bacteria"],
["Dyes used","Methylene blue, Crystal violet, Safranin, Carbol fuchsin, Malachite green"],
["Procedure","Fix smear → apply single dye → wash → dry → observe"],
["Result","All bacteria stain the SAME color as the dye used"],
["Examples of use","Quick morphological study; Loeffler's methylene blue for C. diphtheriae"],
["Advantage","Simple, fast, easy to perform"],
["Disadvantage","Cannot differentiate between different bacteria"]],
widths=[5*cm, 11*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("2. DIFFERENTIAL STAIN", SUBSEC)]
story.append(tbl([
["Feature","Details"],
["Definition","Uses TWO or more dyes to differentiate between types of bacteria"],
["Purpose","To classify bacteria based on cell wall/structural differences"],
["Key examples","Gram Stain, Ziehl-Neelsen (Acid-Fast) Stain"],
["Gram stain differentiates","Gram-positive (purple) vs Gram-negative (pink)"],
["ZN stain differentiates","Acid-fast (red) vs Non-acid-fast (blue)"],
["Advantage","Gives MORE information than simple stain - can classify bacteria"],
["Clinical importance","Guides immediate antibiotic therapy before culture results"]],
widths=[5*cm, 11*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("3. SPECIAL PURPOSE STAINS", SUBSEC)]
story.append(tbl([
["Stain","Demonstrates","Organisms/Structure","Result"],
["Capsule stain (Welch/India Ink)","Bacterial capsule","Klebsiella, Cryptococcus","Halo around bacteria"],
["Spore stain (Schaeffer-Fulton)","Endospores","Bacillus, Clostridium","Spores = Green; cells = Red"],
["Flagella stain (Leifson)","Flagella","Salmonella, Pseudomonas, E.coli","Visible flagella"],
["Giemsa stain","Intracellular organisms, parasites","Rickettsia, Chlamydia, Plasmodium","Purple-blue"],
["Albert's stain","Metachromatic granules (volutin)","Corynebacterium diphtheriae","Granules = Blue-black; body = Green"],
["Fontana's silver stain","Spirochetes","Treponema pallidum","Black against brown background"],
["PAS stain","Fungal cell wall polysaccharides","Fungi, Pneumocystis","Magenta/pink"],
["Acridine orange (Fluorochrome)","Nucleic acids","All bacteria","Bright orange under UV"],
["India ink (Negative stain)","Capsule","Cryptococcus neoformans","Clear halo = capsule"],
["Auramine-Rhodamine","Mycobacteria (fluorescent)","M. tuberculosis","Bright yellow-orange under UV - MOST SENSITIVE AFB"]],
widths=[3.8*cm, 3.5*cm, 3.5*cm, 5.2*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("4. NEGATIVE STAIN", SUBSEC)]
story.append(tbl([
["Feature","Details"],
["Definition","Stains the BACKGROUND (not the organism)"],
["Dyes used","India ink (nigrosin, Congo red)"],
["Purpose","Demonstrates structures difficult to stain (capsules), or fragile organisms"],
["Result","Bacteria appear CLEAR/WHITE against dark/colored background"],
["Example","India ink for Cryptococcus capsule; nigrosin for spirochetes"]],
widths=[5*cm, 11*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART F: GRAM-POSITIVE COCCI & BACILLI
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART F: GRAM-POSITIVE ORGANISMS - Classification & Examples ", SEC))
story += [Spacer(1, 0.2*cm), Paragraph("GRAM-POSITIVE COCCI", SUBSEC)]
story.append(tbl([
["Organism","Arrangement","Catalase","Special Feature","Disease"],
["Staphylococcus aureus","Clusters (grapes)","Positive","Coagulase positive; golden colonies","Boils, MRSA, food poisoning, toxic shock syndrome"],
["Staphylococcus epidermidis","Clusters","Positive","Coagulase negative; white colonies","Opportunistic; prosthetic valve endocarditis"],
["Staphylococcus saprophyticus","Clusters","Positive","Novobiocin resistant","UTI in young women"],
["Streptococcus pyogenes (Grp A)","Chains","Negative","Beta-hemolysis; bacitracin sensitive","Strep throat, rheumatic fever, scarlet fever"],
["Streptococcus agalactiae (Grp B)","Chains","Negative","Beta-hemolysis; CAMP test positive","Neonatal meningitis, sepsis"],
["Streptococcus pneumoniae","Diplococci (lancet)","Negative","Alpha-hemolysis; bile soluble","Pneumonia, meningitis, otitis media"],
["Enterococcus faecalis","Chains/pairs","Negative","Grows in 6.5% NaCl","UTI, endocarditis, nosocomial infections"],
["Neisseria gonorrhoeae*","Diplococci (kidney)","Positive","*Gram-NEGATIVE; intracellular","Gonorrhea, PID, neonatal ophthalmia"]],
widths=[3.5*cm, 3*cm, 1.8*cm, 4.2*cm, 4.5*cm]))
story.append(Paragraph("*Neisseria is Gram-NEGATIVE - included for comparison/common exam confusion!", NOTE))
story += [Spacer(1, 0.3*cm), Paragraph("GRAM-POSITIVE BACILLI (RODS)", SUBSEC)]
story.append(tbl([
["Organism","Spore","Aerobe/Anaerobe","Special Feature","Disease"],
["Bacillus anthracis","Yes (oval, central)","Aerobe","Box-car shaped; no hemolysis; virulence: anthrax toxin","Anthrax (cutaneous, pulmonary, GI)"],
["Bacillus cereus","Yes","Aerobe","Motile; hemolysis","Food poisoning (fried rice)"],
["Clostridium tetani","Yes (round, terminal - 'drumstick')","Strict anaerobe","Tetanospasmin toxin","Tetanus - lock jaw, opisthotonus"],
["Clostridium perfringens","Yes (oval, subterminal)","Strict anaerobe","Lecithinase (Nagler rxn+)","Gas gangrene, food poisoning"],
["Clostridium botulinum","Yes (oval, subterminal)","Strict anaerobe","Botulinumtoxin (most potent)","Botulism - flaccid paralysis"],
["Clostridium difficile","Yes","Strict anaerobe","Spores resist disinfectants","Pseudomembranous colitis (antibiotic-associated)"],
["Corynebacterium diphtheriae","No","Aerobe","Albert's stain: metachromatic granules; Chinese letter arrangement","Diphtheria - pseudomembrane, bull-neck"],
["Listeria monocytogenes","No","Facultative anaerobe","Tumbling motility at 25°C; cold enrichment","Listeriosis - meningitis in neonates, elderly, immunocompromised"],
["Lactobacillus","No","Facultative","Normal vaginal flora","Protects against vaginal infections; probiotics"]],
widths=[3.5*cm, 2*cm, 2.5*cm, 4.5*cm, 3.5*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART G: GRAM-NEGATIVE ORGANISMS
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART G: GRAM-NEGATIVE ORGANISMS - Classification & Examples ", SEC))
story += [Spacer(1, 0.2*cm), Paragraph("GRAM-NEGATIVE COCCI", SUBSEC)]
story.append(tbl([
["Organism","Arrangement","Special Feature","Disease"],
["Neisseria meningitidis","Diplococci (kidney-bean), intracellular","Oxidase+; capsule; ferments glucose & maltose","Meningococcal meningitis, Waterhouse-Friderichsen syndrome"],
["Neisseria gonorrhoeae","Diplococci (kidney-bean), intracellular","Oxidase+; no capsule; ferments glucose only","Gonorrhea, PID, neonatal ophthalmia"],
["Moraxella catarrhalis","Diplococci","Beta-lactamase producing; BRO-lactamase","Otitis media, sinusitis, COPD exacerbation"],
["Veillonella","Diplococci/clusters","ANAEROBIC Gram-negative cocci (unique!)","Dental caries (rare systemic infections)"]],
widths=[3.5*cm, 3.5*cm, 5*cm, 4*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("GRAM-NEGATIVE BACILLI (RODS)", SUBSEC)]
story.append(Paragraph("A. Enterobacteriaceae (Lactose Fermenters - grow on MacConkey agar as PINK colonies):", SUBSEC))
story.append(tbl([
["Organism","Key Feature","Disease"],
["Escherichia coli","Most common cause of UTI; IMVIC: ++--","UTI, traveler's diarrhea, neonatal meningitis, HUS (O157:H7)"],
["Klebsiella pneumoniae","Mucoid colonies; capsule; IMVIC: --++","Pneumonia (currant jelly sputum), UTI, nosocomial infections"],
["Proteus mirabilis","Swarming motility; urease+; fishy smell","UTI, kidney stones (struvite), wound infections"],
["Enterobacter cloacae","Nosocomial pathogen; AmpC beta-lactamase","Hospital-acquired UTI, bacteremia"],
["Citrobacter","IMVIC: +-+-","UTI, neonatal meningitis"]],
widths=[4*cm, 6*cm, 6*cm]))
story += [Spacer(1, 0.2*cm), Paragraph("B. Non-Lactose Fermenters (appear COLORLESS/PALE on MacConkey):", SUBSEC)]
story.append(tbl([
["Organism","Key Feature","Disease"],
["Salmonella typhi","H2S positive; no gas from glucose; Vi antigen","Typhoid fever; Widal test positive"],
["Salmonella (non-typhoidal)","H2S positive; gas from glucose","Food poisoning, gastroenteritis"],
["Shigella","Non-motile; no H2S; no gas","Bacillary dysentery (blood+mucus in stool)"],
["Pseudomonas aeruginosa","Bluish-green pigment (pyocyanin); grape-like odor; oxidase+","Burn infections, nosocomial pneumonia, CF lung disease, UTI"],
["Vibrio cholerae","Comma-shaped; oxidase+; rice-water stools","Cholera - profuse watery diarrhea, El Tor biotype"],
["Helicobacter pylori","S-shaped/spiral; urease+; microaerophilic","Peptic ulcer disease, gastric cancer"],
["Haemophilus influenzae","X and V factor requirement; capsule type b","Meningitis (children), epiglottitis, pneumonia"],
["Bordetella pertussis","Cough plate; Bordet-Gengou medium","Whooping cough (pertussis)"],
["Brucella","Intracellular; zoonosis; Malta fever","Brucellosis - undulant fever, arthritis"],
["Campylobacter jejuni","S-shaped; microaerophilic; oxidase+","Bloody diarrhea, Guillain-Barre syndrome (post-infection)"]],
widths=[4*cm, 6*cm, 6*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("IMPORTANT VIVA TABLE - Gram Reaction Quick Reference", SUBSEC)]
story.append(tbl([
["Category","Gram Reaction","Key Examples"],
["Cocci in clusters","Gram POSITIVE","Staphylococcus aureus, S. epidermidis"],
["Cocci in chains","Gram POSITIVE","Streptococcus pyogenes, S. agalactiae"],
["Diplococci (lancet-shaped)","Gram POSITIVE","Streptococcus pneumoniae"],
["Diplococci (kidney-shaped)","Gram NEGATIVE","Neisseria gonorrhoeae, N. meningitidis"],
["Spore-forming aerobic bacilli","Gram POSITIVE","Bacillus anthracis, B. cereus"],
["Spore-forming anaerobic bacilli","Gram POSITIVE","Clostridium tetani, C. perfringens"],
["Non-sporing bacilli (aerobe)","Gram POSITIVE","Corynebacterium diphtheriae, Listeria"],
["Enteric rods","Gram NEGATIVE","E. coli, Klebsiella, Salmonella, Shigella"],
["Curved/spiral rods","Gram NEGATIVE","Vibrio cholerae, Campylobacter, H. pylori"],
["Cannot be Gram stained","N/A - special stains needed","Mycobacteria (ZN), Treponema (dark field), Mycoplasma (no wall)"]],
widths=[4.5*cm, 3*cm, 8.5*cm]))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART H: OSPE QUESTIONS
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART H: OSPE QUESTIONS ", SEC))
story.append(Paragraph("OSPE = Objective Structured Practical Examination", SUBSEC))
story.append(tbl([
["Full Form","Meaning"],
["O","Objective - standardized, structured, consistent marking"],
["S","Structured - organized into stations with specific tasks"],
["P","Practical - tests hands-on practical skills, not just knowledge"],
["E","Examination - formal assessment with marks"]],
widths=[2*cm, 14*cm]))
story += [
Spacer(1, 0.3*cm),
Paragraph("Purpose of OSPE:", SUBSEC),
]
for b in ["• Assesses PSYCHOMOTOR SKILLS (how well you actually DO the procedure)",
"• Tests COGNITIVE KNOWLEDGE (understanding of principles, steps, results)",
"• Evaluates INTERPRETATION skills (ability to read and report stained slides)",
"• Each OSPE station is time-bound (usually 2-5 minutes per station)",
"• Common OSPE stations in Microbiology: Gram stain procedure, ZN stain, slide identification, media identification, sterilization equipment"]:
story.append(Paragraph(b, BODY))
story += [Spacer(1, 0.4*cm), Paragraph("OSPE STATION 1: Gram Stain Procedure", SUBSEC)]
for q, a_list in [
("Q. Label the reagents of Gram stain in order (given 4 bottles).",
["1. Crystal Violet - Primary stain (purple)",
"2. Gram's Iodine - Mordant",
"3. Acetone-Alcohol - Decolorizer",
"4. Safranin - Counterstain"]),
("Q. You are given a prepared Gram stained slide. What do you observe? What is your inference?",
["Observe: Colour (purple/pink), Shape (cocci/bacilli), Arrangement (clusters/chains/pairs)",
"Example inference: 'Purple cocci in clusters = Gram-positive cocci in clusters → Staphylococcus'",
"Another: 'Pink rods = Gram-negative bacilli → Enterobacteriaceae (e.g., E. coli, Klebsiella)'"]),
("Q. What error would occur if you forgot to add Gram's iodine?",
["All bacteria would be decolorized after alcohol step - no bacteria would retain any stain",
"Gram-positive organisms would appear GRAM-NEGATIVE (false result)",
"Iodine is needed to form the large Crystal Violet-Iodine complex that is too big to wash out of thick peptidoglycan"]),
("Q. A slide shows purple cocci in pairs (lancet-shaped). What is the organism?",
["Streptococcus pneumoniae (Gram-positive diplococci, lancet/flame-shaped)",
"Clinical significance: Common cause of pneumonia, meningitis, sinusitis"]),
("Q. What safety precaution must be taken before performing Gram stain on an unknown specimen?",
["Heat fixation kills the organism - biological safety precaution",
"Wear gloves and work in biosafety cabinet if material is suspected hazardous",
"Never put mouth-pipette; dispose of slides in sharps/biohazard container"]),
]:
story += qa(q, a_list, style_q=OSPE_Q, style_a=OSPE_A)
story += [Spacer(1, 0.3*cm), Paragraph("OSPE STATION 2: Acid Fast Stain", SUBSEC)]
for q, a_list in [
("Q. You are given a sputum smear ZN stained. You see red rods against blue background. Report your finding.",
["OBSERVATION: Acid-fast bacilli (AFB) seen - red/pink bacilli against blue background",
"INFERENCE: AFB POSITIVE (1+ / 2+ / 3+ depending on count)",
"SIGNIFICANCE: Suggestive of Mycobacterium tuberculosis infection",
"REPORTING: Count AFB per oil immersion fields to give 1+/2+/3+ grade"]),
("Q. Name 3 reagents of ZN stain and their roles.",
["1. Carbolfuchsin (with heat 60°C) - primary stain, penetrates waxy cell wall → stains red",
"2. 3% Acid-Alcohol (3% HCl + 95% ethanol) - decolorizer, removes dye from non-AFB",
"3. Loeffler's Methylene Blue - counterstain, stains non-AFB blue"]),
("Q. Why is oil immersion used to read AFB smear?",
["Oil immersion (100x objective) provides 1000x total magnification",
"AFB are thin rods (1-4 microns) - need high magnification to visualize clearly",
"Immersion oil fills the air gap between lens and slide, increasing numerical aperture and resolution"]),
("Q. What is the difference between a Gram-positive organism and an acid-fast organism regarding their cell wall?",
["Gram-positive: Thick peptidoglycan wall (20-80 nm); low lipid content; stains with crystal violet",
"Acid-fast organism (Mycobacteria): Thin peptidoglycan BUT very high MYCOLIC ACID (lipid) content; resists acid-alcohol decolorization",
"Key: Both have thick walls but the COMPOSITION differs - Gram+ve has peptidoglycan; AFB has mycolic acid"]),
]:
story += qa(q, a_list, style_q=OSPE_Q, style_a=OSPE_A)
story += [Spacer(1, 0.3*cm), Paragraph("OSPE STATION 3: Specimen & Equipment Identification", SUBSEC)]
for q, a_list in [
("Q. You are shown a hot air oven. What is it used for? What is the temperature and time?",
["Hot air oven = DRY HEAT sterilization",
"Temperature: 160°C for 1 hour OR 180°C for 30 minutes",
"Used for: Glassware, metal instruments, glass syringes, oils, powders (items that cannot be wetted)"]),
("Q. You are shown an autoclave. How does it work? What temperature?",
["Autoclave = MOIST HEAT sterilization under pressure",
"Temperature: 121°C at 15 psi (1 atm above atmospheric pressure) for 15 minutes",
"Used for: Culture media, surgical instruments, linen, rubber, biological waste"]),
("Q. You are shown a sputum container. How should a proper sputum sample be collected for TB testing?",
["Collect EARLY MORNING sputum (deepest cough, most bacilli)",
"Patient should rinse mouth with water first (not antiseptic mouthwash)",
"Collect 3-5 mL of mucoid/purulent sputum (not saliva) in wide-mouthed sterile container",
"Collect 3 samples on 3 consecutive days (spot-morning-spot)",
"Transport immediately to lab at 4°C if delay"]),
("Q. You are shown a MacConkey agar plate. What does it differentiate?",
["MacConkey agar is a SELECTIVE and DIFFERENTIAL medium",
"SELECTIVE: Contains bile salts and crystal violet - inhibits Gram-positive organisms",
"DIFFERENTIAL: Contains lactose + neutral red indicator",
"Lactose fermenters → produce acid → neutral red indicator → PINK colonies (e.g., E. coli, Klebsiella)",
"Non-lactose fermenters → COLORLESS/PALE colonies (e.g., Salmonella, Shigella, Pseudomonas)"]),
]:
story += qa(q, a_list, style_q=OSPE_Q, style_a=OSPE_A)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART I: AETCOM
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART I: AETCOM - ATTITUDE, ETHICS & COMMUNICATION ", SEC))
story.append(Paragraph("AETCOM = Attitude, Ethics and Communication", SUBSEC))
story.append(tbl([
["Letter","Full Form","Meaning in Medical Practice"],
["A","Attitude","Professional behavior, empathy, respect for patients and colleagues"],
["E","Ethics","Moral principles guiding medical decisions (autonomy, beneficence, non-maleficence, justice)"],
["T","T (part of AETCOM framework)","Teamwork, professionalism in healthcare settings"],
["C","Communication","Clear, compassionate, honest interaction with patients and healthcare team"],
["O","O (module)","Overall professional development and patient-centered care"],
["M","Module/Management","Integrating all above in clinical management"]],
widths=[1.5*cm, 4*cm, 10.5*cm]))
story += [
Spacer(1, 0.3*cm),
Paragraph("4 Cardinal Pillars of Bioethics:", SUBSEC),
]
story.append(tbl([
["Pillar","Definition","Example in Microbiology context"],
["Autonomy","Respect patient's right to make informed decisions","Always take informed consent before collecting specimen for HIV/TB testing"],
["Beneficence","Act in patient's best interest","Prescribe correct antibiotics based on culture sensitivity, not pressure"],
["Non-maleficence","Do no harm","Avoid unnecessary antibiotic prescriptions that harm the patient (resistance/side effects)"],
["Justice","Fair treatment for all patients","Equal access to TB DOTS program regardless of economic status"]],
widths=[3*cm, 5.5*cm, 7.5*cm]))
story += [Spacer(1, 0.4*cm), Paragraph("AETCOM CASE SCENARIO Q&A", SUBSEC)]
aetcom_cases = [
("Case 1: TB Diagnosis (Most Common AETCOM Question)",
"A 35-year-old man presents with persistent cough for 3 months, night sweats, and weight loss. "
"AFB sputum smear is positive. He is worried about social stigma if family comes to know.",
[("Q. What is your attitude towards this patient?",
["Show EMPATHY - understand his fear of stigma; be non-judgmental",
"Be supportive and reassuring; create a safe, confidential environment",
"Treat him with dignity regardless of social background"]),
("Q. What are the ethical issues in this case?",
["CONFIDENTIALITY: Do NOT disclose TB diagnosis to others without patient's consent",
"INFORMED CONSENT: Explain all tests and treatment before starting",
"AUTONOMY: Respect his right to ask questions and make treatment decisions",
"PUBLIC HEALTH DUTY: Mandatory notification to health authorities (legal obligation under Notifiable Diseases Act)"]),
("Q. What is contact tracing? Is it ethical to contact-trace without patient's consent?",
["Contact tracing = identifying and testing people who may have been exposed to TB",
"Ethical conflict: Patient confidentiality vs. Public health protection",
"Resolution: Counsel patient on importance of contact tracing; most patients agree when explained properly",
"If patient refuses, public health laws may override confidentiality to protect community"]),
("Q. How do you communicate the TB diagnosis to this patient?",
["Private setting - one-on-one, no other patients present",
"Use simple language (avoid jargon like 'AFB positive')",
"Explain: 'You have TB. It is curable with 6 months of medicines.'",
"Address stigma: 'TB is an infection like any other - it does not define your character'",
"Explain DOTS (Directly Observed Treatment Short-course) program",
"Encourage questions; give written information"])]),
("Case 2: Antibiotic Stewardship",
"A patient with viral upper respiratory infection (common cold) demands antibiotics. "
"He says: 'My neighbor got better quickly with antibiotics. Please give me some.'",
[("Q. What is your attitude in this situation?",
["Respectful and patient - do NOT dismiss the patient's concern",
"Adopt an EDUCATIVE approach - help them understand, not argue",
"Be empathetic: 'I understand you want to feel better quickly...'"]),
("Q. What are the ethical issues?",
["NON-MALEFICENCE: Prescribing unnecessary antibiotics harms the patient (side effects, resistance)",
"BENEFICENCE: Best action is to NOT prescribe antibiotics for viral illness",
"AUTONOMY vs BENEFICENCE conflict: Patient wants antibiotics but doctor knows it won't help",
"ANTIBIOTIC STEWARDSHIP: Ethical responsibility to society - overprescription causes resistant bacteria"]),
("Q. What is Antibiotic Stewardship? Why is it important?",
["Antibiotic stewardship = coordinated program to ensure antibiotics are used appropriately",
"RIGHT drug, RIGHT dose, RIGHT duration, RIGHT route for RIGHT patient",
"Importance: Prevents antimicrobial resistance (AMR), reduces side effects, lowers healthcare costs",
"AMR is a global crisis - predicted to kill 10 million people/year by 2050"]),
("Q. How do you communicate to the patient why you are not prescribing antibiotics?",
["'Your infection is caused by a virus. Antibiotics only kill bacteria, not viruses.'",
"'Taking antibiotics when not needed can actually make them stop working for you in future.'",
"'I'll prescribe medicines to relieve your symptoms - rest, fluids, and paracetamol will help you recover.'",
"If patient is unhappy, remain firm but compassionate - document your reasoning"])]),
("Case 3: HIV Testing & Confidentiality",
"A 28-year-old patient comes with recurrent infections. You suspect HIV. "
"His wife is in the waiting room. He says 'Do not tell my wife.'",
[("Q. What are the ethical issues?",
["CONFIDENTIALITY: HIV diagnosis is highly sensitive - must be kept confidential",
"PARTNER NOTIFICATION: His wife may be at risk - ethical duty to protect her",
"AUTONOMY: Patient's right to privacy vs wife's right to know her risk",
"HONESTY: Do not lie to the wife if she asks directly about husband's condition"]),
("Q. How do you handle partner notification?",
["Counsel the patient extensively about the importance of informing his wife",
"Offer to be present or facilitate the disclosure",
"If patient absolutely refuses, consult ethics committee / senior",
"In some jurisdictions, partner notification can be done by health authorities (anonymously)"]),
("Q. What is pre-test and post-test counseling in HIV?",
["PRE-TEST: Explain purpose of test, meaning of positive/negative results, consent, confidentiality",
"POST-TEST POSITIVE: Deliver result privately, allow time for reaction, explain treatment options (ART), support services, safe sex practices, partner testing",
"POST-TEST NEGATIVE: Explain 'window period', advise safe behavior to remain negative"])]),
("Case 4: Informed Consent for Lab Procedures",
"You need to collect blood from a patient for culture sensitivity testing. "
"The patient is anxious and says 'I don't want any tests done.'",
[("Q. What are the steps of taking informed consent?",
["1. DISCLOSE: Explain why the test is needed and what it involves",
"2. COMPREHENSION: Ensure patient understands (use simple language, ask them to repeat back)",
"3. VOLUNTARINESS: Consent must be given freely - no pressure or coercion",
"4. COMPETENCE: Patient must be mentally capable of deciding",
"5. DOCUMENTATION: Record consent in case notes"]),
("Q. Can you proceed without consent?",
["NO - proceeding without consent is assault (legally and ethically)",
"EXCEPTION: Emergency (unconscious patient, life-threatening situation)",
"EXCEPTION: Court order (e.g., forensic testing)",
"BEST APPROACH: Spend time explaining, address fears, get voluntary consent"])]),
("Case 5: Needle-Stick Injury in Lab (Common OSPE/AETCOM topic)",
"A lab technician pricks their finger with a needle used on an HIV-positive patient's blood sample.",
[("Q. What are the immediate steps?",
["1. Bleed the wound freely - do NOT squeeze",
"2. Wash with soap and water for 5 minutes",
"3. Apply antiseptic (betadine/spirit)",
"4. Report to supervisor IMMEDIATELY",
"5. Go to Occupational Health / Casualty"]),
("Q. What is PEP? When should it be given?",
["PEP = Post-Exposure Prophylaxis",
"Antiretroviral drugs given WITHIN 72 HOURS of HIV exposure to prevent infection",
"Earlier = better; ideally within 1-2 hours",
"Duration: 28 days",
"Effectiveness: ~80% effective if started promptly"]),
("Q. What are the ethical responsibilities of the lab in this scenario?",
["Maintain SAFETY standards - proper disposal of sharps in puncture-proof containers",
"REPORT: All needle-stick injuries must be reported (institutional duty)",
"DUTY OF CARE to the technician - provide immediate PEP, counseling, follow-up testing",
"CONFIDENTIALITY: Protect identity of source patient (HIV status) as far as possible"])]),
]
for case_title, scenario, qas in aetcom_cases:
story.append(Paragraph(case_title, SUBSEC))
story.append(Paragraph("SCENARIO: " + scenario, NOTE))
for q_text, a_list in qas:
story += qa(q_text, a_list, style_q=OSPE_Q, style_a=OSPE_A)
story.append(Spacer(1, 0.3*cm))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# PART J: QUICK REFERENCE
# ════════════════════════════════════════════════════════════════
story.append(Paragraph(" PART J: QUICK VIVA REFERENCE & MEMORY AIDS ", SEC))
story += [Spacer(1, 0.2*cm), Paragraph("Gram Stain - One-Line Memory Tricks", SUBSEC)]
story.append(tbl([
["Memory Aid","What it Helps Remember"],
["C-I-D-C","Crystal violet → Iodine → Decolorizer → Counterstain (order of reagents)"],
["'Gram+ve = Purple = Peptidoglycan'","Gram-positive = thick peptidoglycan = retains purple dye"],
["'Gram-ve = Pink = Peripheral LPS'","Gram-negative = outer LPS membrane loses purple → takes pink safranin"],
["'Decolorization = DANGER step'","Most critical step - over/under decolorization ruins the result"],
["'My Bacteria Are Fatty'","Mycobacteria have fatty/waxy cell wall → ZN stain, NOT Gram stain"],
["'SMEN' (organisms not stained by Gram)","Spirochetes, Mycobacteria, E (Ehrlichia/Rickettsia), Nocardia, Mycoplasma"]],
widths=[5*cm, 11*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("ZN Stain - One-Line Memory Tricks", SUBSEC)]
story.append(tbl([
["Memory Aid","What it Helps Remember"],
["C-A-M","Carbolfuchsin → Acid-alcohol → Methylene blue (order of ZN reagents)"],
["'RED is READ = TB suspected'","Red bacilli on ZN stain = AFB positive = possible Mycobacterium TB"],
["'3% HCl = 3-letter decolorizer'","3% HCl in 95% ethanol is the ZN decolorizer"],
["'Mycolic = Majestic wall'","Mycolic acid makes the cell wall impenetrable to ordinary dyes"],
["'Auramine = Most sensitive'","Fluorochrome (auramine-rhodamine) stain is 10x more sensitive than ZN"]],
widths=[5*cm, 11*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("Gram-Positive vs Gram-Negative - High-Yield Facts", SUBSEC)]
story.append(tbl([
["Question","Gram-Positive","Gram-Negative"],
["Cell wall peptidoglycan","THICK (20-80 nm)","THIN (2-7 nm)"],
["Outer membrane","ABSENT","PRESENT (LPS/endotoxin)"],
["Penicillin sensitivity","MORE sensitive","LESS sensitive"],
["Endotoxin (LPS)","ABSENT","PRESENT → septic shock"],
["Exotoxin production","COMMON (tetanus, diphtheria, botulinum)","Also produce (cholera, E.coli)"],
["Teichoic acids","PRESENT","ABSENT"],
["Color on Gram stain","PURPLE","PINK/RED"]],
widths=[5*cm, 5.5*cm, 5.5*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("Modifications Quick Recall", SUBSEC)]
story.append(tbl([
["If asked about...","Answer"],
["Most widely used modification of Gram stain","Hucker's modification (ammonium oxalate-crystal violet)"],
["Modification for anaerobes","Kopeloff & Beerman's (basic fuchsin counterstain; iodine in NaOH)"],
["Modification for tissue sections","Weigert's (aniline-xylol decolorizer; carmalum BEFORE primary stain)"],
["Modification for Neisseria","Jensen's (methyl violet; neutral red counterstain)"],
["Unique feature of Weigert's","Counterstain applied BEFORE primary stain (reverse order)"],
["Unique feature of Kopeloff's","Counterstain is BASIC FUCHSIN, not safranin; mordant is iodine in NaOH"]],
widths=[7*cm, 9*cm]))
story += [Spacer(1, 0.3*cm), Paragraph("OSPE Dos and Don'ts", SUBSEC)]
story.append(tbl([
["DO","DON'T"],
["State principle BEFORE procedure","Jump into steps without explaining why"],
["Name all reagents with their ROLES","Just list reagent names without functions"],
["Describe both what you SEE and what it MEANS","Only describe without giving inference"],
["Mention safety precautions (heat fixation, gloves)","Forget biological safety steps"],
["Grade AFB smear using + system","Just say 'few bacilli seen'"],
["In AETCOM: show empathy + knowledge","Be dismissive or avoid ethical discussion"]],
widths=[8*cm, 8*cm]))
story += [
Spacer(1, 0.4*cm),
Paragraph(
"PRO TIP FOR VIVA: Examiners love 3 things: (1) You know the PRINCIPLE behind each step, "
"(2) You can INTERPRET a slide and give clinical significance, "
"(3) You show PROFESSIONAL ATTITUDE in AETCOM scenarios. Master these and you will excel!",
TIP),
Spacer(1, 0.4*cm),
HRFlowable(width="100%", thickness=1, color=colors.HexColor('#9fa8da')),
Spacer(1, 0.2*cm),
Paragraph(
"Prepared by Orris AI | KNRUHS 2nd Year MBBS Microbiology Viva Guide | "
"Sources: Jawetz Melnick & Adelberg's 28e, Sherris & Ryan's 8e, Park's PSM, NMC AETCOM Guidelines",
FOOTER),
]
doc.build(story)
print(f"PDF created: {OUTPUT_PATH}")
cd /home/daytona/workspace/microbiology-viva && python generate_pdf_v2.py 2>&1
ls -lh /home/daytona/workspace/microbiology-viva/Microbiology_Viva_KNRUHS_v2.pdf
Microbiology Viva KNRUHS v2
PDF Document · PDF
| Part | Content | # of Q&A |
|---|---|---|
| A | Gram Stain Viva | 15 Q&A |
| B | Acid Fast Stain Viva | 12 Q&A |
| C | Gram Stain vs ZN Stain - Full comparison table | - |
| D | All 5 Modifications of Gram Stain | - |
| E | Types of Staining - Simple, Differential, Special, Negative | Full tables |
| F | Gram-Positive Cocci & Bacilli - all organisms, diseases, features | Full tables |
| G | Gram-Negative Cocci & Bacilli - Enterobacteriaceae + others | Full tables |
| H | OSPE questions - Gram stain station, ZN station, equipment, media identification | 15+ Q&A |
| I | AETCOM - 5 full case scenarios (TB, Antibiotic stewardship, HIV, Consent, Needle-stick) | 20+ Q&A |
| J | Quick Reference - Memory aids, mnemonics, Dos & Don'ts | - |