Tommorow is my 2md year mbbs micro exam I am in MP shah government medical clg , સૌરાષ્ટ્ર university, so I want gen lab diagnosis from bacteria virus fungi and parasite
Key concept: Sensitivity = ability to rule OUT (SNOUT). Specificity = ability to rule IN/confirm (SPIN).
| Method | Bacteria | Virus | Fungi | Parasite |
|---|---|---|---|---|
| Microscopy | Gram stain, ZN | Inclusion bodies, EM | KOH, LPCB, India ink | Giemsa, wet mount, ZN (Crypto) |
| Culture medium | Blood agar, MacConkey, LJ | Cell lines (HeLa, Vero) | Sabouraud agar | NNN (Leishmania), RPMI (Malaria) |
| Antigen | Latex agglutination | ELISA, RDT | CrAg, Galactomannan, Beta-D-glucan | Malaria RDT, ELISA (stool Ag) |
| Serology | Widal, ASO, VDRL | ELISA, Western Blot, HAI, Neutralization | Precipitin, IDT | IHA, ELISA, EITB |
| Molecular | GeneXpert/PCR | RT-PCR (gold standard) | PCR (Aspergillus, PCP) | PCR (malaria, Leishmania) |
| Special | AST/Sensitivity | CD4, viral load | Germ tube, urease, CHROMagar | Scotch tape test, string test |
Create a quick reference PDF summary for revision
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/micro-revision && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, PageBreak) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate OUTPUT = "/tmp/workspace/micro-revision/Micro_Lab_Diagnosis_Revision.pdf" # ── Colour palette ────────────────────────────────────────────────────────── C_BACT = colors.HexColor("#1A5276") # deep blue – bacteria C_VIRUS = colors.HexColor("#7B241C") # deep red – virus C_FUNGI = colors.HexColor("#1E8449") # deep green – fungi C_PARA = colors.HexColor("#6C3483") # deep purple – parasite C_HEAD = colors.HexColor("#154360") # title dark blue C_WARN = colors.HexColor("#F39C12") # amber – high yield C_LITE = colors.HexColor("#EBF5FB") # very light blue – row bg C_WHITE = colors.white C_DARK = colors.HexColor("#1C2833") # ── Document ───────────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUTPUT, pagesize=A4, leftMargin=1.5*cm, rightMargin=1.5*cm, topMargin=1.8*cm, bottomMargin=1.5*cm, title="General Lab Diagnosis – Microbiology Revision", author="MP Shah Medical College" ) W = A4[0] - 3*cm # usable width styles = getSampleStyleSheet() # Custom paragraph styles def ps(name, parent="Normal", **kw): return ParagraphStyle(name, parent=styles[parent], **kw) title_s = ps("MyTitle", fontSize=17, textColor=C_HEAD, alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=2) sub_s = ps("MySub", fontSize=9, textColor=colors.HexColor("#555555"), alignment=TA_CENTER, spaceAfter=6) sect_s = ps("MySect", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold", spaceAfter=3, spaceBefore=6, leftIndent=4, leading=16) sub2_s = ps("MySub2", fontSize=9, textColor=C_DARK, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=4) body_s = ps("MyBody", fontSize=7.8, textColor=C_DARK, leading=11, spaceAfter=1, leftIndent=6) bullet_s = ps("MyBullet", fontSize=7.8, textColor=C_DARK, leading=11, leftIndent=14, firstLineIndent=-8, spaceAfter=1) warn_s = ps("MyWarn", fontSize=8, textColor=colors.HexColor("#7D6608"), fontName="Helvetica-Bold", leading=11, leftIndent=6, spaceAfter=1) small_s = ps("MySmall", fontSize=7, textColor=colors.HexColor("#555555"), leading=10, spaceAfter=1) def section_header(text, color): """Coloured section banner.""" tbl = Table([[Paragraph(text, sect_s)]], colWidths=[W]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), color), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 8), ("ROUNDEDCORNERS", [4]), ])) return tbl def subsection(text): return Paragraph(f"▶ {text}", sub2_s) def bullet(text): return Paragraph(f"• {text}", bullet_s) def body(text): return Paragraph(text, body_s) def warn(text): return Paragraph(f"⚡ {text}", warn_s) def sp(h=4): return Spacer(1, h) def hr(): return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC"), spaceAfter=4) # ─────────────────────────── CONTENT ──────────────────────────────────────── story = [] # ── TITLE PAGE ────────────────────────────────────────────────────────────── story.append(sp(10)) story.append(Paragraph("GENERAL LABORATORY DIAGNOSIS", title_s)) story.append(Paragraph("Bacteriology • Virology • Mycology • Parasitology", sub_s)) story.append(Paragraph("2nd Year MBBS Microbiology | Quick Revision Notes", sub_s)) story.append(Paragraph("MP Shah Government Medical College, Saurashtra University", sub_s)) story.append(sp(4)) story.append(HRFlowable(width="100%", thickness=2, color=C_HEAD, spaceAfter=8)) # ── OVERVIEW BOX ──────────────────────────────────────────────────────────── overview_data = [ [Paragraph("<b>5 UNIVERSAL METHODS</b>", ps("x", fontSize=8, textColor=C_WHITE, fontName="Helvetica-Bold"))], [Paragraph("① Microscopy ② Culture ③ Antigen Detection ④ Serology (Antibody) ⑤ Molecular / PCR", ps("y", fontSize=8, textColor=C_WHITE, leading=12))] ] ov_tbl = Table(overview_data, colWidths=[W]) ov_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), C_HEAD), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) story.append(ov_tbl) story.append(sp(6)) # ── KEY CONCEPT ───────────────────────────────────────────────────────────── kc_data = [[ Paragraph("<b>SENSITIVITY</b> = Rule OUT (SNOUT) – Few false negatives", ps("kc", fontSize=8, textColor=C_DARK)), Paragraph("<b>SPECIFICITY</b> = Rule IN / Confirm (SPIN) – Few false positives", ps("kc2", fontSize=8, textColor=C_DARK)), Paragraph("<b>IgM</b> = Acute/Current <b>IgG</b> = Past/Immune <b>4× rise</b> = Active", ps("kc3", fontSize=8, textColor=C_DARK)), ]] kc_tbl = Table(kc_data, colWidths=[W/3]*3) kc_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), colors.HexColor("#D6EAF8")), ("BACKGROUND", (1,0), (1,0), colors.HexColor("#D5F5E3")), ("BACKGROUND", (2,0), (2,0), colors.HexColor("#FDEBD0")), ("BOX", (0,0), (-1,-1), 0.5, colors.grey), ("INNERGRID",(0,0), (-1,-1), 0.5, colors.grey), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(kc_tbl) story.append(sp(8)) # ═══════════════════════════════════════════════════════════════════════ # A. BACTERIA # ═══════════════════════════════════════════════════════════════════════ story.append(section_header("A. BACTERIA — General Lab Diagnosis", C_BACT)) story.append(sp(4)) # Microscopy story.append(subsection("1. MICROSCOPY")) story.append(bullet("<b>Gram stain</b> – Most important: G+ve = purple (thick peptidoglycan); G-ve = pink")) story.append(bullet("<b>ZN (Ziehl-Neelsen)</b> – Acid-fast bacilli: M. tuberculosis (red rods on blue bg)")) story.append(bullet("<b>Albert's stain</b> – C. diphtheriae metachromatic (Babes-Ernst) granules")) story.append(bullet("<b>India ink</b> – Cryptococcus capsule (clear halo)")) story.append(bullet("<b>Dark-field microscopy</b> – Treponema pallidum (syphilis)")) story.append(sp(3)) # Culture media table story.append(subsection("2. CULTURE MEDIA")) story.append(sp(2)) media_header = [ Paragraph("<b>Medium</b>", ps("mh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Type</b>", ps("mh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Organism / Use</b>", ps("mh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), ] media_rows = [ ["Blood Agar", "General", "Most bacteria; shows α/β/γ hemolysis"], ["Chocolate Agar", "General", "Fastidious: Haemophilus, Neisseria"], ["Nutrient Broth", "General", "Blood cultures, sterile site specimens"], ["MacConkey Agar", "Selective", "G-ve rods; Lac+ = pink (E. coli)"], ["Hektoen Enteric", "Selective", "Salmonella & Shigella"], ["Selenite F Broth", "Selective", "Salmonella enrichment"], ["Martin-Lewis/TM", "Selective", "N. gonorrhoeae, N. meningitidis"], ["LJ / Middlebrook", "Special", "M. tuberculosis (6-8 wks, 37°C)"], ["TCBS Agar", "Special", "Vibrio cholerae (yellow), V. parahaemolyticus (blue-green)"], ["BCYE Agar", "Special", "Legionella spp."], ["Regan-Lowe", "Special", "Bordetella pertussis"], ["Tinsdale Agar", "Special", "C. diphtheriae (black colonies)"], ["Campylobacter BA", "Special", "Campylobacter jejuni (42°C, microaerophilic)"], ] def cell(txt, bold=False, color=C_DARK): fn = "Helvetica-Bold" if bold else "Helvetica" return Paragraph(txt, ps("mc", fontSize=7.2, textColor=color, fontName=fn, leading=10)) tbl_data = [media_header] for i, (m, t, u) in enumerate(media_rows): tc = colors.HexColor("#154360") if t=="Special" else ( colors.HexColor("#196F3D") if t=="Selective" else C_DARK) tbl_data.append([cell(m, bold=True), cell(t, color=tc), cell(u)]) media_tbl = Table(tbl_data, colWidths=[W*0.27, W*0.15, W*0.58]) media_style = [ ("BACKGROUND", (0,0), (-1,0), C_BACT), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#EBF5FB"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#AED6F1")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#D6EAF8")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ] media_tbl.setStyle(TableStyle(media_style)) story.append(media_tbl) story.append(sp(4)) story.append(subsection("3. ANTIGEN DETECTION")) story.append(bullet("<b>Latex agglutination</b> – Rapid: CSF antigens (Meningococcus, H. influenzae b, Pneumococcus)")) story.append(bullet("<b>ELISA/EIA</b> – Very sensitive; sandwich method for antigens")) story.append(bullet("<b>Direct IF</b> – FITC-labeled Ab directly on specimen")) story.append(bullet("<b>Indirect IF</b> – Unlabeled specific Ab + FITC-labeled anti-Ig (more versatile)")) story.append(sp(3)) story.append(subsection("4. SEROLOGY (Antibody Detection)")) story.append(bullet("<b>Widal test</b> – Salmonella typhi (O + H agglutinins)")) story.append(bullet("<b>ASO titre</b> – Streptococcal infection (post-streptococcal disease)")) story.append(bullet("<b>VDRL / RPR</b> – Syphilis screening (non-treponemal)")) story.append(bullet("<b>TPHA / FTA-ABS</b> – Syphilis confirmation (treponemal)")) story.append(sp(3)) story.append(subsection("5. MOLECULAR (PCR / NAA)")) story.append(bullet("GeneXpert / CBNAAT – M. tuberculosis + rifampicin resistance (2 hrs)")) story.append(bullet("Multiplex PCR – Blood culture ID, respiratory panels")) story.append(bullet("<b>AST (disc diffusion / MIC)</b> – Only from culture isolates; Kirby-Bauer method")) story.append(sp(6)) story.append(hr()) # ═══════════════════════════════════════════════════════════════════════ # B. VIRUSES # ═══════════════════════════════════════════════════════════════════════ story.append(section_header("B. VIRUSES — General Lab Diagnosis", C_VIRUS)) story.append(sp(4)) story.append(body("<b>Key fact:</b> Viruses are obligate intracellular – they CANNOT grow on artificial media. They need living cells.")) story.append(sp(3)) story.append(subsection("1. MICROSCOPY")) inc_data = [ [Paragraph("<b>Inclusion Body</b>", ps("ih", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Location</b>", ps("ih", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Virus</b>", ps("ih", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["Negri bodies", "Intracytoplasmic", "Rabies (neurons / Purkinje)"], ["Guarnieri bodies", "Intracytoplasmic", "Smallpox / Vaccinia"], ["Torres bodies", "Intracytoplasmic", "Yellow fever"], ["Owl-eye inclusions", "Intranuclear", "CMV"], ["Cowdry type A", "Intranuclear", "HSV, Varicella-Zoster"], ["Henderson-Paterson", "Intracytoplasmic", "Molluscum contagiosum"], ] def vcell(txt, bold=False): return Paragraph(txt, ps("vc", fontSize=7.2, textColor=C_DARK, fontName="Helvetica-Bold" if bold else "Helvetica", leading=10)) inc_tbl_data = [[inc_data[0][0], inc_data[0][1], inc_data[0][2]]] for row in inc_data[1:]: inc_tbl_data.append([vcell(row[0], bold=True), vcell(row[1]), vcell(row[2])]) inc_tbl = Table(inc_tbl_data, colWidths=[W*0.32, W*0.3, W*0.38]) inc_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_VIRUS), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#FDEDEC"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#F1948A")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#FADBD8")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(inc_tbl) story.append(sp(4)) story.append(subsection("2. CELL CULTURE (Virus Isolation)")) story.append(bullet("<b>Primary</b> – Monkey kidney, human amnion (e.g., Polio, Influenza)")) story.append(bullet("<b>Diploid cell strains</b> – WI-38, MRC-5 (human embryonic lung)")) story.append(bullet("<b>Continuous lines</b> – HeLa (HPV/cervical), Hep-2, Vero, BHK-21")) story.append(bullet("<b>CPE (Cytopathic Effect)</b> – Cell rounding, syncytia, lysis, ballooning")) story.append(bullet("<b>Haemagsorption</b> – Influenza, Parainfluenza (RBCs adhere to infected cells)")) story.append(bullet("<b>Shell vial assay</b> – Rapid culture for CMV (24-48 h vs. weeks)")) story.append(sp(3)) story.append(subsection("3. ANTIGEN DETECTION")) story.append(bullet("ELISA – HBsAg, HIV p24, Rotavirus/Adenovirus in stool")) story.append(bullet("IF (Immunofluorescence) – Influenza, RSV in respiratory specimens")) story.append(bullet("Rapid antigen tests – Influenza, COVID-19, RSV (lateral flow)")) story.append(sp(3)) story.append(subsection("4. SEROLOGY")) serol_data = [ [Paragraph("<b>Test</b>", ps("sh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Use / Virus</b>", ps("sh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["ELISA", "HIV, HBV, HCV, Dengue – screening"], ["Western Blot", "HIV confirmation (detects Abs to multiple proteins)"], ["HAI (Haemagglutination Inhibition)", "Influenza, Mumps, Rubella"], ["Neutralization test", "Most SPECIFIC serological test; virus + Ab → blocks CPE"], ["CFT (Complement Fixation)", "Influenza, Rickettsial diseases"], ["IgM ELISA", "Acute infection: Dengue, Hepatitis A, Rubella, Toxoplasma"], ] def scell(txt, bold=False): return Paragraph(txt, ps("sc", fontSize=7.2, textColor=C_DARK, fontName="Helvetica-Bold" if bold else "Helvetica", leading=10)) serol_tbl_data = [serol_data[0]] for row in serol_data[1:]: serol_tbl_data.append([scell(row[0], bold=True), scell(row[1])]) serol_tbl = Table(serol_tbl_data, colWidths=[W*0.38, W*0.62]) serol_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_VIRUS), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#FDEDEC"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#F1948A")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#FADBD8")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(serol_tbl) story.append(sp(4)) story.append(subsection("5. MOLECULAR (PCR) — GOLD STANDARD FOR VIRUSES")) story.append(bullet("<b>RT-PCR</b> – RNA viruses: HIV viral load, HCV, Influenza, SARS-CoV-2")) story.append(bullet("<b>Real-time qPCR</b> – Quantitative: HIV/CMV viral load monitoring")) story.append(bullet("<b>Multiplex PCR</b> – Respiratory, GI, CNS panels simultaneously")) story.append(sp(4)) # HIV / HBV markers hiv_hbv_data = [ [Paragraph("<b>HIV Markers</b>", ps("hh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>HBV Markers</b>", ps("hh2", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], [ Paragraph("• ELISA → Western Blot (confirm)\n• p24 Ag = early window\n• CD4 count + Viral load = monitoring", ps("hb", fontSize=7.2, textColor=C_DARK, leading=11)), Paragraph("• HBsAg = infection marker\n• HBeAg = high infectivity\n• Anti-HBs = immunity\n• Anti-HBc IgM = acute", ps("hb2", fontSize=7.2, textColor=C_DARK, leading=11)), ] ] hiv_tbl = Table(hiv_hbv_data, colWidths=[W/2, W/2]) hiv_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), colors.HexColor("#922B21")), ("BACKGROUND", (1,0), (1,0), colors.HexColor("#1A5276")), ("BOX", (0,0), (-1,-1), 0.5, colors.grey), ("INNERGRID",(0,0), (-1,-1), 0.5, colors.grey), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(hiv_tbl) story.append(sp(6)) story.append(hr()) # ═══════════════════════════════════════════════════════════════════════ # C. FUNGI # ═══════════════════════════════════════════════════════════════════════ story.append(section_header("C. FUNGI — General Lab Diagnosis", C_FUNGI)) story.append(sp(4)) story.append(subsection("1. MICROSCOPY (Most Important First Step)")) micro_fungi = [ [Paragraph("<b>Stain/Method</b>", ps("fh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Use</b>", ps("fh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Fungi Detected</b>", ps("fh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["KOH preparation", "Destroys host cells; leaves fungal elements", "Dermatophytes, Candida (any fungus)"], ["India ink", "Negative stain (clear halo in CSF)", "Cryptococcus neoformans capsule"], ["Gram stain", "G+ve yeast + pseudohyphae", "Candida spp."], ["Calcofluor white", "Fluorescent; binds chitin (very sensitive)", "All fungi"], ["GMS (Gomori)", "Histology; fungal walls black", "Aspergillus, PCP, all fungi in tissue"], ["PAS stain", "Fungi stain magenta/red in tissue", "All fungi in tissue"], ["LPCB", "Stain fungal structures from culture", "Identification of mold morphology"], ] def fcell(txt, bold=False): return Paragraph(txt, ps("fc", fontSize=7.2, textColor=C_DARK, fontName="Helvetica-Bold" if bold else "Helvetica", leading=10)) fungi_micro_data = [micro_fungi[0]] for row in micro_fungi[1:]: fungi_micro_data.append([fcell(row[0], bold=True), fcell(row[1]), fcell(row[2])]) fungi_micro_tbl = Table(fungi_micro_data, colWidths=[W*0.22, W*0.4, W*0.38]) fungi_micro_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_FUNGI), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#EAFAF1"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#82E0AA")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#A9DFBF")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(fungi_micro_tbl) story.append(sp(4)) story.append(subsection("2. CULTURE")) story.append(bullet("<b>Sabouraud Dextrose Agar (SDA)</b> – Universal fungal medium; low pH 5.6; 25-30°C")) story.append(bullet("<b>SDA + Cycloheximide + Chloramphenicol</b> – Selective for dermatophytes")) story.append(bullet("<b>CHROMagar Candida</b> – Color-coded species ID: C. albicans = green, C. tropicalis = blue")) story.append(bullet("<b>Birdseed/Niger seed agar</b> – Cryptococcus (brown colonies due to melanin)")) story.append(bullet("<b>BHIB (Brain Heart Infusion)</b> – Dimorphic fungi conversion")) story.append(sp(2)) story.append(warn("DIMORPHIC FUNGI rule: Mold at 25°C (room), Yeast at 37°C (body) — 'M at Room, Y in You'")) story.append(bullet("Dimorphic fungi: Histoplasma, Blastomyces, Sporothrix, Coccidioides, Paracoccidioides")) story.append(sp(3)) story.append(subsection("3. SPECIAL TESTS (High Yield!)")) spec_f = [ [Paragraph("<b>Test</b>", ps("fh2", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Result / Use</b>", ps("fh2", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["Germ tube test (serum, 37°C, 2-3 h)", "POSITIVE only in Candida albicans"], ["Urease test", "+ve: Cryptococcus; –ve: Candida"], ["Cryptococcal Ag (CrAg) – Latex/LFA", "Capsular polysaccharide Ag in CSF/serum – most sensitive for Crypto"], ["Galactomannan ELISA", "Aspergillus Ag in serum/BAL"], ["Beta-D-Glucan (BDG) assay", "Pan-fungal (Candida, Aspergillus, PCP) – NOT Cryptococcus or Mucor"], ["MALDI-TOF", "Rapid species ID from culture colonies"], ] spec_f_data = [spec_f[0]] for row in spec_f[1:]: spec_f_data.append([fcell(row[0], bold=True), fcell(row[1])]) spec_f_tbl = Table(spec_f_data, colWidths=[W*0.45, W*0.55]) spec_f_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_FUNGI), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#EAFAF1"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#82E0AA")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#A9DFBF")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(spec_f_tbl) story.append(sp(6)) story.append(hr()) # ═══════════════════════════════════════════════════════════════════════ # D. PARASITES # ═══════════════════════════════════════════════════════════════════════ story.append(section_header("D. PARASITES — General Lab Diagnosis", C_PARA)) story.append(sp(4)) story.append(subsection("1. MICROSCOPY — CORNERSTONE of Parasitology")) story.append(bullet("<b>Direct wet mount (saline + iodine)</b> – Stool: trophozoites, cysts, eggs, larvae")) story.append(bullet("<b>Concentration methods:</b> Formol-ether (cysts/eggs); Zinc sulfate flotation (cysts)")) story.append(bullet("<b>Permanent stains (stool):</b> Trichrome, Iron-hematoxylin – protozoan morphology")) story.append(sp(3)) # Blood parasites table bp_data = [ [Paragraph("<b>Plasmodium sp.</b>", ps("ph", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>RBC changes</b>", ps("ph", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Special feature</b>", ps("ph", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["P. vivax", "Enlarged; Schuffner's dots", "Ameboid trophozoites; benign tertian"], ["P. falciparum", "Normal size; NO enlargement", "Multiple rings/RBC; banana gametocytes; cerebral malaria"], ["P. malariae", "Normal/smaller; Ziemann's dots", "Band-form trophozoites; quartan malaria"], ["P. ovale", "Oval/fimbriated; James' dots", "Resembles vivax; benign tertian"], ] def pcell(txt, bold=False): return Paragraph(txt, ps("pc", fontSize=7.2, textColor=C_DARK, fontName="Helvetica-Bold" if bold else "Helvetica", leading=10)) bp_tbl_data = [bp_data[0]] for row in bp_data[1:]: bp_tbl_data.append([pcell(row[0], bold=True), pcell(row[1]), pcell(row[2])]) bp_tbl = Table(bp_tbl_data, colWidths=[W*0.2, W*0.33, W*0.47]) bp_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_PARA), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#F5EEF8"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#C39BD3")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#D7BDE2")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(bp_tbl) story.append(sp(3)) story.append(bullet("<b>Thick blood film</b> – Sensitive; for low parasitemia detection")) story.append(bullet("<b>Thin blood film</b> – Species identification; morphological detail")) story.append(bullet("<b>Giemsa stain</b> – Standard for all blood parasites")) story.append(bullet("<b>Modified ZN stain</b> – Cryptosporidium, Cyclospora, Isospora oocysts (acid-fast = pink/red)")) story.append(sp(3)) # Body fluid parasites bf_data = [ [Paragraph("<b>Site/Specimen</b>", ps("bfh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Parasite(s)</b>", ps("bfh", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))], ["CSF", "Trypanosoma (sleeping sickness); Naegleria (PAME) – motile trophozoites"], ["Skin snip", "Onchocerca volvulus microfilaria"], ["Urine", "Schistosoma haematobium eggs (terminal spine)"], ["Sputum", "Paragonimus westermani eggs; Strongyloides larvae"], ["LN / BM aspirate", "Leishmania – LD bodies (amastigotes in macrophages); Giemsa"], ["Perianal (scotch tape)", "Enterobius vermicularis (pinworm) eggs – morning sample"], ] def bfcell(txt, bold=False): return Paragraph(txt, ps("bfc", fontSize=7.2, textColor=C_DARK, fontName="Helvetica-Bold" if bold else "Helvetica", leading=10)) bf_tbl_data = [bf_data[0]] for row in bf_data[1:]: bf_tbl_data.append([bfcell(row[0], bold=True), bfcell(row[1])]) bf_tbl = Table(bf_tbl_data, colWidths=[W*0.28, W*0.72]) bf_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_PARA), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#F5EEF8"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#C39BD3")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#D7BDE2")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(bf_tbl) story.append(sp(4)) story.append(subsection("2. CULTURE MEDIA for Parasites")) story.append(bullet("<b>NNN medium</b> – Leishmania (transforms to promastigotes)")) story.append(bullet("<b>Diamond's medium</b> – Trichomonas vaginalis")) story.append(bullet("<b>Robinson's medium</b> – Entamoeba histolytica")) story.append(sp(3)) story.append(subsection("3. RAPID / ANTIGEN / SEROLOGY TESTS")) story.append(bullet("<b>Malaria RDT</b> – HRP-2 (P. falciparum), pLDH, aldolase")) story.append(bullet("<b>ELISA</b> – Giardia Ag, E. histolytica Ag in stool; Toxoplasma IgM/IgG")) story.append(bullet("<b>IHA</b> – Amoebiasis (Indirect Haemagglutination)")) story.append(bullet("<b>EITB / ELISA</b> – Cysticercosis (Taenia solium)")) story.append(bullet("<b>Latex agglutination</b> – Echinococcus (hydatid cyst)")) story.append(sp(3)) story.append(subsection("4. SPECIAL PARASITE-SPECIFIC TESTS (High Yield)")) special_p = [ ["Scotch tape / Graham's test", "Enterobius vermicularis – perianal swab, early morning"], ["String test (Enterotest)", "Giardia lamblia – trophozoites from duodenum"], ["Filariae blood timing", "Wuchereria bancrofti: midnight; Loa loa: midday (noon)"], ["Xenodiagnosis", "Trypanosoma cruzi – uninfected bug fed on patient"], ["Buffy coat exam", "Trypanosoma, Microfilaria in blood"], ["Malaria PCR", "Most sensitive; species confirmation"], ["Toxoplasma PCR", "Amniotic fluid (congenital), CSF (encephalitis)"], ] sp_tbl_data = [[Paragraph("<b>Test</b>", ps("sph", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold")), Paragraph("<b>Parasite / Purpose</b>", ps("sph", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold"))]] for row in special_p: sp_tbl_data.append([pcell(row[0], bold=True), pcell(row[1])]) sp_para_tbl = Table(sp_tbl_data, colWidths=[W*0.35, W*0.65]) sp_para_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_PARA), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#F5EEF8"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#C39BD3")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#D7BDE2")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(sp_para_tbl) story.append(sp(6)) story.append(hr()) # ═══════════════════════════════════════════════════════════════════════ # MASTER COMPARISON TABLE # ═══════════════════════════════════════════════════════════════════════ story.append(PageBreak()) story.append(Paragraph("MASTER COMPARISON TABLE", title_s)) story.append(Paragraph("General Lab Diagnosis — Bacteria vs Virus vs Fungi vs Parasite", sub_s)) story.append(sp(4)) h_s = ps("mth", fontSize=7.5, textColor=C_WHITE, fontName="Helvetica-Bold", leading=10) d_s = ps("mtd", fontSize=7, textColor=C_DARK, fontName="Helvetica", leading=10) d_bold = ps("mtdb", fontSize=7, textColor=C_DARK, fontName="Helvetica-Bold", leading=10) master = [ # Header [Paragraph("Method", h_s), Paragraph("BACTERIA", h_s), Paragraph("VIRUS", h_s), Paragraph("FUNGI", h_s), Paragraph("PARASITE", h_s)], # Rows [Paragraph("Artificial Culture", d_bold), Paragraph("YES – all std media", d_s), Paragraph("NO – needs living cells", d_s), Paragraph("YES – SDA (25-30°C)", d_s), Paragraph("Rarely – NNN, Diamond's", d_s)], [Paragraph("Key Microscopy", d_bold), Paragraph("Gram stain, ZN (AFB)", d_s), Paragraph("Inclusion bodies; EM", d_s), Paragraph("KOH, India ink, LPCB", d_s), Paragraph("Giemsa, wet mount", d_s)], [Paragraph("Selective Medium", d_bold), Paragraph("MacConkey, TM agar", d_s), Paragraph("—", d_s), Paragraph("SDA+Cycloheximide", d_s), Paragraph("—", d_s)], [Paragraph("Special Medium", d_bold), Paragraph("LJ (MTB), TCBS (Vibrio)\nBCYE (Legionella)", d_s), Paragraph("HeLa, Vero, WI-38\nShell vial (CMV)", d_s), Paragraph("Birdseed (Crypto)\nBHIB (dimorphics)", d_s), Paragraph("NNN (Leishmania)\nRPMI (Plasmodium)", d_s)], [Paragraph("Antigen Detection", d_bold), Paragraph("Latex agglutination\n(CSF meningitis Ags)", d_s), Paragraph("ELISA (HBsAg, HIV p24)\nRapid Ag tests", d_s), Paragraph("CrAg, Galactomannan\nBeta-D-Glucan", d_s), Paragraph("Malaria RDT (HRP-2)\nGiardia ELISA", d_s)], [Paragraph("Key Serology", d_bold), Paragraph("Widal, ASO\nVDRL → TPHA", d_s), Paragraph("ELISA, Western blot\nHAI, Neutralization", d_s), Paragraph("Precipitin, IDT\n(Histoplasma, Aspergillus)", d_s), Paragraph("IHA (amoeba)\nEITB (cysticercosis)", d_s)], [Paragraph("Molecular (PCR)", d_bold), Paragraph("GeneXpert/CBNAAT (TB)\nMultiplex blood culture", d_s), Paragraph("RT-PCR, qPCR\n** GOLD STANDARD **", d_s), Paragraph("Aspergillus PCR\nPCP (P. jirovecii)", d_s), Paragraph("Malaria PCR\nLeishmania, Toxoplasma", d_s)], [Paragraph("Best Rapid Test", d_bold), Paragraph("Gram stain + Culture", d_s), Paragraph("Multiplex RT-PCR", d_s), Paragraph("KOH + CrAg / BDG", d_s), Paragraph("Thick blood film\nMalaria RDT", d_s)], ] col_w = [W*0.18, W*0.205, W*0.205, W*0.205, W*0.205] master_tbl = Table(master, colWidths=col_w, repeatRows=1) master_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_HEAD), ("BACKGROUND", (1,0), (1,0), C_BACT), ("BACKGROUND", (2,0), (2,0), C_VIRUS), ("BACKGROUND", (3,0), (3,0), C_FUNGI), ("BACKGROUND", (4,0), (4,0), C_PARA), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.HexColor("#F2F3F4"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.8, colors.HexColor("#888888")), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(master_tbl) story.append(sp(8)) # ── HIGH-YIELD BOX ────────────────────────────────────────────────────────── story.append(HRFlowable(width="100%", thickness=1.5, color=C_WARN, spaceAfter=4)) story.append(Paragraph("HIGH-YIELD EXAM POINTS", ps("hyt", fontSize=11, textColor=C_WARN, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4))) hy_items = [ "Only bacteria & fungi grow on artificial media — viruses MUST use living cells (cell lines)", "PCR/NAA = foremost method for viruses; also gold standard for MTB (GeneXpert)", "KOH = best FIRST step for any suspected fungal skin/nail infection", "Thick blood film = sensitive for malaria; Thin film = species identification", "Giemsa stain = blood parasites (malaria, Trypanosoma, Leishmania, microfilaria)", "Modified ZN (acid-fast) = Cryptosporidium, Cyclospora, Isospora oocysts (pink/red)", "India ink = Cryptococcus capsule (clear halo in CSF — negative stain)", "Germ tube test (+ve) = Candida albicans ONLY (human serum, 37°C, 2-3 h)", "Beta-D-Glucan does NOT detect Cryptococcus or Mucor/Zygomycetes", "IgM = acute/current; IgG = past/immunity; 4-fold rise in paired IgG = active infection", "Neutralization test = MOST specific serological test for viruses", "Sabouraud agar: incubated at 25-30°C (room temp) for most fungi (not 37°C!)", "Dimorphic fungi: Mold at 25°C → Yeast at 37°C ('M at Room, Y in You')", "Scotch tape test (morning, perianal) = Enterobius vermicularis pinworm eggs", "Wuchereria bancrofti = midnight blood; Loa loa = midday blood (periodicity!)", ] hy_data = [] for i, item in enumerate(hy_items): num = Paragraph(f"<b>{i+1}.</b>", ps("hyn", fontSize=7.5, textColor=C_HEAD, fontName="Helvetica-Bold")) txt = Paragraph(item, ps("hyt2", fontSize=7.5, textColor=C_DARK, leading=11)) hy_data.append([num, txt]) hy_tbl = Table(hy_data, colWidths=[W*0.05, W*0.95]) hy_tbl.setStyle(TableStyle([ ("ROWBACKGROUNDS", (0,0), (-1,-1), [colors.HexColor("#FEF9E7"), C_WHITE]), ("BOX", (0,0), (-1,-1), 0.5, C_WARN), ("INNERGRID",(0,0), (-1,-1), 0.3, colors.HexColor("#FDEBD0")), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(hy_tbl) story.append(sp(6)) # ── FOOTER NOTE ───────────────────────────────────────────────────────────── story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey, spaceAfter=4)) story.append(Paragraph( "Source: Sherris & Ryan's Medical Microbiology, 8th Ed. | Henry's Clinical Diagnosis & Management by Laboratory Methods | " "Prepared for 2nd Year MBBS Microbiology Exam — MP Shah GMC, Saurashtra University | July 2026", ps("foot", fontSize=6.5, textColor=colors.grey, alignment=TA_CENTER) )) # ── BUILD PDF ──────────────────────────────────────────────────────────────── doc.build(story) print("SUCCESS:", OUTPUT) PYEOF
Why taking so long
Micro Lab Diagnosis Revision
PDF Document · PDF
Can u create this thing from the apurba shastry , take it as a reference and give dort of details
Upload Apurba Sastry PDF for direct extraction
Why unable to uplaod