attachment
attachment

Questions gulor ans reference book soho dau & English ans gula ektu shortly and easy ans dau Banglay breafly bujhay dau

Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
এখন আমার কাছে সব তথ্য আছে। নিচে সব প্রশ্নের উত্তর দিচ্ছি।

Card 05 - Parasitology: Flagellates

Giardia intestinalis & Trichomonas vaginalis

Reference: Sherris & Ryan's Medical Microbiology, 8th Edition


Q1. Mention the different types of flagellate with their pathogenecity.

Short Answer: মানবদেহে মোট 8 প্রজাতির Luminal Flagellate পরজীবী থাকে, কিন্তু মাত্র 2টি রোগ তৈরি করে:
FlagellatePathogenicitySite
Giardia lamblia+ (Pathogenic)Intestine
Dientamoeba fragilis? (Uncertain)Intestine
Chilomastix mesnili− (Non-pathogenic)Intestine
Enteromonas hominisIntestine
Retortamonas intestinalisIntestine
Trichomonas hominisIntestine
Trichomonas tenaxMouth
Trichomonas vaginalis+ (Pathogenic)Vagina
বাংলায়: মানুষের মধ্যে 8টি Flagellate পাওয়া যায়। এদের মধ্যে শুধু Giardia lamblia (পেটে) এবং Trichomonas vaginalis (যোনিতে) রোগ ঘটায়। বাকিগুলো non-pathogenic।

Q2. What are the peculiarities of morphology of Giardia lamblia?

Short Answer:
  • আকার: Pear-shaped (নাশপাতির মতো), 10-20 μm লম্বা
  • Trophozoite: 2টি নিউক্লিয়াস আছে (characteristic "face-like" image দেখায়) - প্রতিটিতে একটি করে বড় karyosome
  • Cyst: ডিম্বাকৃতি (oval), 7-10 μm লম্বা, 4টি নিউক্লিয়াস থাকে
  • 6টি flagella থাকে
  • Ventral sucking disc থাকে - এটা দিয়ে ছোট অন্ত্রের দেওয়ালে লেগে থাকে
  • কোনো mouth নেই, পুষ্টি সরাসরি শরীরের ভেতর দিয়ে শোষণ করে
বাংলায়: Giardia দেখতে নাশপাতির মতো। দুটো নিউক্লিয়াসের কারণে মুখের মতো দেখায়। Ventral disc দিয়ে অন্ত্রে আটকে থাকে। Cyst-এ 4টি নিউক্লিয়াস থাকে।

Q3. What are the definitive host, intermediate host, mode of infection of Giardia lamblia?

Short Answer:
  • Definitive Host: মানুষ (+ কুকুর, বিড়াল, বিভার)
  • Intermediate Host: নেই (কোনো intermediate host লাগে না)
  • Mode of Infection: Feco-oral route - দূষিত পানি ও খাবারের মাধ্যমে Cyst গিলে সংক্রমণ হয়
  • 10-25টি Cyst খেলেই সংক্রমণ হয়
বাংলায়: মানুষ নিজেই Definitive host। কোনো intermediate host লাগে না। দূষিত পানি বা খাবার থেকে Cyst পেটে ঢুকে রোগ হয়।

Q4. What is infective form, pathogenic form, diagnostic form and virulence factors of Giardia lamblia?

Short Answer:
Formকী
Infective formCyst (4 nuclei)
Pathogenic formTrophozoite (পেটে রোগ তৈরি করে)
Diagnostic formCyst (মলে পাওয়া যায়); তীব্র অসুস্থতায় Trophozoiteও পাওয়া যায়
Virulence Factors:
  • Ventral sucking disc - অন্ত্রের দেওয়ালে আটকে থাকে
  • Variant Surface Proteins (VSPs) - immune escape করে
  • Proteinases & lectins - epithelial cell ক্ষতি করে
  • Cyst wall - পরিবেশে টিকে থাকে
বাংলায়: Cyst হলো সংক্রমণের form, Trophozoite রোগ তৈরি করে এবং মলে Cyst দেখে রোগ ধরা হয়। Ventral disc দিয়ে অন্ত্রে লেগে থেকে ক্ষতি করে।

Q5. What is steatorrhoea? How to diagnose giardiasis? What is string test?

Steatorrhoea: মলে অতিরিক্ত চর্বি নির্গত হওয়া। Giardia ছোট অন্ত্রে fat absorption বাধা দেয়, ফলে মল তৈলাক্ত, ফ্যাকাশে ও দুর্গন্ধযুক্ত হয়।
Diagnosis of Giardiasis:
  1. Stool examination - Cyst বা Trophozoite খোঁজা (সবচেয়ে সহজ)
  2. Stool Antigen test - ELISA দিয়ে Giardia antigen ধরা
  3. String test (Enterotest)
  4. Duodenal biopsy (কঠিন ক্ষেত্রে)
  5. PCR (সবচেয়ে sensitive)
String Test:
  • রোগী একটি gelatin capsule গিলে নেয়, যার ভেতরে একটি নাইলন সুতো থাকে
  • সুতোর এক প্রান্ত মুখের বাইরে আটকানো থাকে
  • 4-6 ঘণ্টা পর টেনে বের করলে সুতোয় duodenal fluid লাগানো থাকে
  • সেই fluid-এ Trophozoite খোঁজা হয়
বাংলায়: Steatorrhoea মানে মলে চর্বি বের হওয়া। String test-এ একটি সুতো পেটে পাঠিয়ে ছোট অন্ত্রের রস নিয়ে পরীক্ষা করা হয়।

Q6. Between Amoebiasis and Giardiasis, which is due to invasiveness? What is the pathogenesis of giardiasis?

Invasiveness:
  • Amoebiasis - INVASIVE (Entamoeba histolytica অন্ত্রের দেওয়ালে ঢুকে যায়, লিভারেও যায়)
  • Giardiasis - NON-INVASIVE (শুধু অন্ত্রের ভেতরে থাকে, দেওয়ালে ঢোকে না)
Pathogenesis of Giardiasis:
  1. Cyst খাওয়ার পর পেটে Trophozoite হয়
  2. Trophozoite Ventral disc দিয়ে Duodenum ও Jejunum-এর দেওয়ালে লেগে যায়
  3. Brush border enzyme নষ্ট করে → Malabsorption
  4. Fat ও Vitamin B12, Folate শোষণ কমে যায়
  5. ফলাফল: ডায়ারিয়া, Steatorrhoea, Weight loss
বাংলায়: Amoebiasis invasive রোগ (দেওয়াল ভেঙে ঢোকে), Giardiasis non-invasive (শুধু উপরে থাকে)। Giardia অন্ত্রে লেগে থেকে fat ও ভিটামিন শোষণ বন্ধ করে দেয়।

Q7. Name some parasitic STDs. Clinical significance of Trichomonas vaginalis?

Parasitic STDs:
  1. Trichomonas vaginalis - Trichomoniasis
  2. Phthirus pubis - Pubic lice (crabs)
  3. Sarcoptes scabiei - Scabies
Clinical Significance of T. vaginalis:
  • বিশ্বের সবচেয়ে common non-viral STD (বছরে >200 million case)
  • মহিলাদের: Vaginitis, হলুদ frothy discharge, যোনি চুলকানো, dysuria
  • "Strawberry cervix" - cervix-এ petechial hemorrhage দেখা যায় (characteristic)
  • পুরুষে: বেশিরভাগ asymptomatic, মাঝে মাঝে urethritis
  • HIV সংক্রমণের ঝুঁকি বাড়ায়
  • গর্ভাবস্থায় preterm birth-এর ঝুঁকি বাড়ায়
বাংলায়: T. vaginalis পৃথিবীর সবচেয়ে বেশি হওয়া non-viral যৌনরোগ। মহিলাদের যোনি প্রদাহ করে, পুরুষে সাধারণত উপসর্গ থাকে না।

Q8. Peculiarities of morphology of Trichomonas vaginalis?

Short Answer:
  • আকার: Oval, 7×15 μm
  • শুধু Trophozoite আছে - কোনো Cyst নেই (এটাই সবচেয়ে বড় peculiarity)
  • 5টি flagella:
    • 4টি সামনে থেকে বের হয়
    • 1টি পেছনে undulating membrane-এর কিনারায় চলে যায়
  • Undulating membrane থাকে (আধা-পথ পর্যন্ত)
  • Axostyle - মাঝখান দিয়ে একটি rod পেছনে বের হয়, attachment-এ সাহায্য করে
  • Costa - undulating membrane-এর নিচে cross-striated structure
  • 1টি nucleus থাকে (elongated)
  • Wet mount-এ jerky, non-directional নড়াচড়া করে
বাংলায়: T. vaginalis ডিম্বাকৃতি। এর 5টি flagella আছে, cyst নেই। Axostyle দিয়ে লেগে থাকে। Wet mount-এ ঝাঁকুনি দিয়ে নড়তে দেখা যায়।

Q9. How to treat Trichomoniasis? How to prevent?

Treatment:
  • Drug of choice: Metronidazole (বা Tinidazole)
    • Single dose: 2g oral একবারে
    • অথবা: 500mg দিনে 2 বার × 7 দিন
  • 95%-এর বেশি রোগী সুস্থ হয়
  • দুজনকেই (রোগী এবং partner) একসাথে চিকিৎসা করতে হবে
  • Metronidazole খাওয়ার সময় অ্যালকোহল খাওয়া যাবে না (disulfiram reaction)
  • গর্ভাবস্থার প্রথম trimester-এ ব্যবহার করা যাবে না
Prevention:
  • কনডম ব্যবহার
  • Sexual partner কমানো
  • নিয়মিত STD screening
  • Infected হলে partner-সহ চিকিৎসা
  • শেয়ার করা towel/washcloth এড়ানো
বাংলায়: Metronidazole দিয়ে চিকিৎসা হয়। রোগী ও তার সঙ্গী উভয়কে একসাথে চিকিৎসা করতে হবে। কনডম ব্যবহার করলে প্রতিরোধ করা যায়।

Q10. Modes of infection of Trichomoniasis? Pathogenesis? Why males are more asymptomatic than females?

Modes of Infection:
  1. Sexual intercourse (প্রধান - 99%)
  2. Shared washcloths/towels (বিরল)
  3. Newborn - মায়ের birth canal থেকে (বিরল)
Pathogenesis:
  1. T. vaginalis যোনির squamous epithelium-এ সরাসরি লাগে
  2. Adhesins, lectin-binding proteins দিয়ে attach করে
  3. Proteinases ছাড়ে → epithelial cell নষ্ট হয়
  4. Neutrophilic inflammation + petechial hemorrhage হয়
  5. Toll-like receptor উদ্দীপিত হয় → প্রদাহজনক cytokine নির্গত হয়
  6. IgG এবং IgA ভাঙতে পারে → immune escape
Why Males are More Asymptomatic:
মহিলাপুরুষ
Vagina - warm, moist, পরজীবীর জন্য ideal environmentUrethra সরু, প্রস্রাবের সাথে জীবাণু ধুয়ে যায়
Low pH (acidic) - T. vaginalis পছন্দ করেUrine flow mechanically পরজীবী সরিয়ে দেয়
Squamous epithelium বেশি exposedSquamous epithelium কম exposed
বাংলায়: পুরুষের ক্ষেত্রে প্রস্রাবের সাথে জীবাণু ধুয়ে যায়, তাই উপসর্গ কম হয়। মহিলার যোনি উষ্ণ ও স্যাঁতসেঁতে হওয়ায় জীবাণু সেখানে বাড়তে পারে এবং প্রদাহ ঘটায়।

Reference: Sherris & Ryan's Medical Microbiology, 8th Edition (Chapter 53 - Flagellates) | Goodman & Gilman's Pharmacological Basis of Therapeutics (Trichomoniasis treatment)

Create a study guide PDF comparing Giardia vs Trichomonas pathology

Reading File
Running Command

mkdir -p /tmp/workspace/giardia-trichomonas && ls /tmp/workspace/

Writing File

~/giardia-trichomonas/create_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak

OUTPUT = "/tmp/workspace/giardia-trichomonas/Giardia_vs_Trichomonas_Study_Guide.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.8*cm,
    leftMargin=1.8*cm,
    topMargin=2*cm,
    bottomMargin=2*cm
)

styles = getSampleStyleSheet()

# ── Custom styles ──────────────────────────────────────────────────────────────
TEAL   = colors.HexColor("#007B7F")
GREEN  = colors.HexColor("#2E7D32")
PURPLE = colors.HexColor("#6A1B9A")
AMBER  = colors.HexColor("#E65100")
LIGHT_TEAL  = colors.HexColor("#E0F4F4")
LIGHT_GREEN = colors.HexColor("#E8F5E9")
LIGHT_PURPLE= colors.HexColor("#F3E5F5")
LIGHT_AMBER = colors.HexColor("#FFF3E0")
LIGHT_BLUE  = colors.HexColor("#E3F2FD")
DARK_GREY   = colors.HexColor("#263238")
MID_GREY    = colors.HexColor("#455A64")
ROW_ALT     = colors.HexColor("#F5F5F5")
WHITE       = colors.white

title_style = ParagraphStyle(
    "TitleStyle",
    parent=styles["Title"],
    fontSize=22,
    textColor=WHITE,
    alignment=TA_CENTER,
    spaceAfter=6,
    fontName="Helvetica-Bold",
)
subtitle_style = ParagraphStyle(
    "SubtitleStyle",
    parent=styles["Normal"],
    fontSize=11,
    textColor=colors.HexColor("#B2EBF2"),
    alignment=TA_CENTER,
    spaceAfter=4,
    fontName="Helvetica",
)
section_style = ParagraphStyle(
    "SectionStyle",
    parent=styles["Heading1"],
    fontSize=13,
    textColor=WHITE,
    fontName="Helvetica-Bold",
    spaceAfter=6,
    spaceBefore=10,
    leftIndent=0,
)
subsection_style = ParagraphStyle(
    "SubsectionStyle",
    parent=styles["Heading2"],
    fontSize=11,
    textColor=DARK_GREY,
    fontName="Helvetica-Bold",
    spaceAfter=4,
    spaceBefore=8,
)
body_style = ParagraphStyle(
    "BodyStyle",
    parent=styles["Normal"],
    fontSize=9.5,
    leading=14,
    textColor=DARK_GREY,
    fontName="Helvetica",
    spaceAfter=4,
)
bullet_style = ParagraphStyle(
    "BulletStyle",
    parent=styles["Normal"],
    fontSize=9.5,
    leading=13,
    textColor=DARK_GREY,
    fontName="Helvetica",
    leftIndent=14,
    bulletIndent=4,
    spaceAfter=2,
)
label_g = ParagraphStyle("LG", parent=styles["Normal"], fontSize=10,
    fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER,
    backColor=TEAL)
label_t = ParagraphStyle("LT", parent=styles["Normal"], fontSize=10,
    fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER,
    backColor=PURPLE)
table_header = ParagraphStyle("TH", parent=styles["Normal"], fontSize=9.5,
    fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER)
table_cell = ParagraphStyle("TC", parent=styles["Normal"], fontSize=9,
    fontName="Helvetica", textColor=DARK_GREY, alignment=TA_LEFT, leading=12)
table_cell_c = ParagraphStyle("TCC", parent=styles["Normal"], fontSize=9,
    fontName="Helvetica", textColor=DARK_GREY, alignment=TA_CENTER, leading=12)
note_style = ParagraphStyle("NoteStyle", parent=styles["Normal"], fontSize=8.5,
    textColor=MID_GREY, fontName="Helvetica-Oblique", spaceAfter=2,
    leftIndent=8)

W = A4[0] - 3.6*cm  # usable width

def section_banner(title, color):
    """Full-width coloured banner for section headings."""
    data = [[Paragraph(title, section_style)]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def info_box(text, bg):
    data = [[Paragraph(text, body_style)]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 7),
        ("BOTTOMPADDING", (0,0), (-1,-1), 7),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#B0BEC5")),
    ]))
    return t

def two_col_box(left_text, right_text, left_bg, right_bg, left_label="Giardia lamblia", right_label="Trichomonas vaginalis"):
    half = W / 2 - 0.1*cm
    def make_cell(label, text, bg, label_color):
        inner = [
            [Paragraph(f"<b>{label}</b>", ParagraphStyle("lbl", parent=styles["Normal"],
                fontSize=10, fontName="Helvetica-Bold", textColor=WHITE,
                alignment=TA_CENTER))],
            [Paragraph(text, body_style)],
        ]
        inner_t = Table(inner, colWidths=[half])
        inner_t.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (0,0), label_color),
            ("BACKGROUND",    (0,1), (0,1), bg),
            ("TOPPADDING",    (0,0), (-1,-1), 5),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 8),
            ("BOX", (0,0), (-1,-1), 0.4, colors.HexColor("#B0BEC5")),
        ]))
        return inner_t
    outer = [[make_cell(left_label, left_text, left_bg, TEAL),
              make_cell(right_label, right_text, right_bg, PURPLE)]]
    outer_t = Table(outer, colWidths=[half+0.1*cm, half+0.1*cm])
    outer_t.setStyle(TableStyle([
        ("LEFTPADDING",   (0,0), (-1,-1), 2),
        ("RIGHTPADDING",  (0,0), (-1,-1), 2),
        ("TOPPADDING",    (0,0), (-1,-1), 2),
        ("BOTTOMPADDING", (0,0), (-1,-1), 2),
    ]))
    return outer_t

# ── Comparison table helper ───────────────────────────────────────────────────
def comp_table(rows):
    """rows = list of (Feature, Giardia, Trichomonas)"""
    col_w = [4.5*cm, (W-4.5*cm)/2, (W-4.5*cm)/2]
    data = [
        [Paragraph("Feature", table_header),
         Paragraph("Giardia lamblia", table_header),
         Paragraph("Trichomonas vaginalis", table_header)]
    ]
    for i, (feat, g, t) in enumerate(rows):
        data.append([
            Paragraph(f"<b>{feat}</b>", table_cell),
            Paragraph(g, table_cell_c),
            Paragraph(t, table_cell_c),
        ])
    tbl = Table(data, colWidths=col_w, repeatRows=1)
    style = [
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#B0BEC5")),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    for i in range(1, len(data)):
        bg = WHITE if i % 2 == 1 else ROW_ALT
        style.append(("BACKGROUND", (0,i), (-1,i), bg))
    tbl.setStyle(TableStyle(style))
    return tbl

# ══════════════════════════════════════════════════════════════════════════════
# BUILD CONTENT
# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── COVER BANNER ─────────────────────────────────────────────────────────────
cover_data = [[
    Paragraph("Parasitology Study Guide", title_style),
    Paragraph("Giardia intestinalis  vs  Trichomonas vaginalis", subtitle_style),
    Paragraph("Card 05 · Second Term · AMCB-08 · Flagellates", subtitle_style),
]]
cover_tbl = Table(cover_data, colWidths=[W])
cover_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), TEAL),
    ("TOPPADDING",    (0,0), (-1,-1), 18),
    ("BOTTOMPADDING", (0,0), (-1,-1), 18),
    ("LEFTPADDING",   (0,0), (-1,-1), 14),
    ("RIGHTPADDING",  (0,0), (-1,-1), 14),
    ("ROUNDEDCORNERS", [6]),
]))
story.append(cover_tbl)
story.append(Spacer(1, 0.5*cm))

# ── QUICK REFERENCE TABLE ────────────────────────────────────────────────────
story.append(section_banner("QUICK REFERENCE COMPARISON", TEAL))
story.append(Spacer(1, 0.25*cm))

qr_rows = [
    ("Classification",      "Intestinal flagellate protozoan",         "Genital flagellate protozoan"),
    ("Synonym",             "G. intestinalis / G. duodenalis",          "—"),
    ("Shape",               "Pear-shaped (pyriform)",                   "Oval / piriform"),
    ("Size",                "10–20 μm (trophozoite)",                   "7×15 μm (trophozoite)"),
    ("Forms",               "Trophozoite + Cyst",                       "Trophozoite ONLY (no cyst)"),
    ("Nuclei",              "2 (trophozoite) / 4 (cyst)",               "1 (single elongated nucleus)"),
    ("Flagella",            "6 flagella",                               "5 flagella (4 anterior + 1 recurrent)"),
    ("Special Structure",   "Ventral sucking disc",                     "Axostyle, Costa, Undulating membrane"),
    ("Motility",            "Tumbling / falling-leaf",                  "Jerky, non-directional"),
    ("Infective Form",      "Cyst (4 nuclei)",                          "Trophozoite (no cyst stage)"),
    ("Pathogenic Form",     "Trophozoite",                              "Trophozoite"),
    ("Diagnostic Form",     "Cyst in stool (Trophozoite in diarrhea)",  "Trophozoite in vaginal/urethral discharge"),
    ("Definitive Host",     "Humans, dogs, cats, beavers",              "Humans only"),
    ("Intermediate Host",   "None",                                     "None"),
    ("Transmission",        "Feco-oral (contaminated water/food)",      "Sexual intercourse (STD)"),
    ("Site of Infection",   "Duodenum & Jejunum",                       "Vagina, urethra, prostate"),
    ("Invasive?",           "NON-INVASIVE",                             "NON-INVASIVE"),
    ("Disease",             "Giardiasis",                               "Trichomoniasis"),
    ("Treatment",           "Metronidazole / Tinidazole",               "Metronidazole / Tinidazole (single 2g dose)"),
]
story.append(comp_table(qr_rows))
story.append(Spacer(1, 0.3*cm))

# ── MORPHOLOGY ───────────────────────────────────────────────────────────────
story.append(section_banner("MORPHOLOGY IN DETAIL", GREEN))
story.append(Spacer(1, 0.25*cm))

g_morph = (
    "<b>Trophozoite:</b> Pear-shaped, 10–20 μm. Two nuclei with prominent karyosomes — "
    "gives a characteristic 'face-like' image. Six flagella. Ventral sucking disc for attachment "
    "to intestinal wall. Falls in 'tumbling leaf' motion.<br/><br/>"
    "<b>Cyst:</b> Oval, 7–10 μm. Contains 4 nuclei and axonemes. Resistant to chlorination. "
    "Infective dose: as few as 10–25 cysts."
)
t_morph = (
    "<b>Trophozoite only</b> (no cyst stage): Oval, 7×15 μm. One elongated nucleus anteriorly. "
    "Five flagella — 4 exit anteriorly, 1 runs along undulating membrane. "
    "<b>Axostyle</b> bisects the cell longitudinally and protrudes posteriorly (aids attachment). "
    "<b>Costa</b> — cross-striated structure along undulating membrane base. "
    "Wet mount: jerky, non-directional movement."
)
story.append(two_col_box(g_morph, t_morph, LIGHT_TEAL, LIGHT_PURPLE))
story.append(Spacer(1, 0.3*cm))

# ── PATHOGENESIS ─────────────────────────────────────────────────────────────
story.append(section_banner("PATHOGENESIS", PURPLE))
story.append(Spacer(1, 0.25*cm))

g_path = (
    "1. Cyst ingested → excysts in duodenum → Trophozoites<br/>"
    "2. Trophozoites attach via <b>ventral disc</b> to jejunal epithelium<br/>"
    "3. Damage to brush border → ↓ disaccharidase & digestive enzymes<br/>"
    "4. Fat &amp; vitamin (B12, folate) malabsorption → <b>Steatorrhoea</b><br/>"
    "5. Osmotic diarrhoea, weight loss, bloating<br/>"
    "6. <b>Non-invasive</b> — does NOT penetrate intestinal wall"
)
t_path = (
    "1. Trophozoite contacts squamous epithelium of vagina/urethra<br/>"
    "2. <b>Adhesins + lectin-binding proteins</b> mediate attachment<br/>"
    "3. <b>Proteinases</b> released → contact-dependent cytolysis<br/>"
    "4. Neutrophilic infiltration + petechial haemorrhages<br/>"
    "5. Toll-like receptors → pro-inflammatory cytokines → CD4+ response<br/>"
    "6. Degrades IgG &amp; IgA → immune evasion<br/>"
    "7. ↑ HIV susceptibility; ↑ preterm birth risk"
)
story.append(two_col_box(g_path, t_path, LIGHT_GREEN, LIGHT_PURPLE))
story.append(Spacer(1, 0.3*cm))

# ── VIRULENCE FACTORS ─────────────────────────────────────────────────────────
story.append(section_banner("VIRULENCE FACTORS", AMBER))
story.append(Spacer(1, 0.25*cm))

vf_rows = [
    ("Attachment",       "Ventral sucking disc",                   "Adhesins, laminin-binding proteins, lectins"),
    ("Tissue damage",    "Brush border enzyme disruption",          "Proteinases → cytolysis (contact-dependent)"),
    ("Immune evasion",   "Variant Surface Proteins (VSPs)",         "IgG/IgA degradation; phenotypic antigenic variation"),
    ("Other",            "Cyst wall (environmental resistance)",    "200 kDa glycoprotein (contact-independent damage)"),
]
story.append(comp_table(vf_rows))
story.append(Spacer(1, 0.3*cm))

# ── CLINICAL FEATURES ─────────────────────────────────────────────────────────
story.append(section_banner("CLINICAL FEATURES", colors.HexColor("#00695C")))
story.append(Spacer(1, 0.25*cm))

g_clin = (
    "• <b>Acute:</b> Explosive, foul-smelling watery diarrhoea<br/>"
    "• Abdominal cramps, bloating, flatulence<br/>"
    "• Nausea, anorexia<br/>"
    "• <b>Chronic:</b> Steatorrhoea, malabsorption<br/>"
    "• Weight loss, growth retardation (children)<br/>"
    "• Vitamin B12 &amp; folate deficiency<br/>"
    "• <b>No fever</b> (non-invasive)"
)
t_clin = (
    "<b>Women (75% symptomatic):</b><br/>"
    "• Yellow, frothy, malodorous vaginal discharge<br/>"
    "• Vulvar itching/burning (50%), dyspareunia (50%)<br/>"
    "• Dysuria (50%)<br/>"
    "• 'Strawberry cervix' — petechial haemorrhages (characteristic)<br/>"
    "• Symptoms worsen during menses/pregnancy<br/><br/>"
    "<b>Men (mostly asymptomatic):</b><br/>"
    "• Mild urethritis, scant discharge<br/>"
    "• Prostatitis (occasionally)"
)
story.append(two_col_box(g_clin, t_clin, LIGHT_TEAL, LIGHT_PURPLE))
story.append(Spacer(1, 0.3*cm))

# ── WHY MALES ASYMPTOMATIC ────────────────────────────────────────────────────
story.append(section_banner("WHY ARE MALES MORE ASYMPTOMATIC IN TRICHOMONIASIS?", PURPLE))
story.append(Spacer(1, 0.25*cm))

why_rows = [
    ("Factor",             "Females",                                        "Males"),
    ("Environment",        "Warm, moist vagina — ideal for T. vaginalis",    "Narrow urethra — less hospitable"),
    ("Mechanical flushing","No voiding to remove organisms",                  "Urine flow mechanically flushes organisms out"),
    ("pH",                 "Acidic vaginal pH favours T. vaginalis growth",   "Urethral pH less favourable"),
    ("Epithelium",         "Large exposed squamous epithelium",               "Less squamous epithelium exposed"),
    ("Outcome",            "75% symptomatic vaginitis",                       ">50% asymptomatic; may self-clear"),
]

col_w2 = [4.5*cm, (W-4.5*cm)/2, (W-4.5*cm)/2]
data2 = [
    [Paragraph("Factor", table_header),
     Paragraph("Females", table_header),
     Paragraph("Males", table_header)]
]
for i, row in enumerate(why_rows[1:]):
    data2.append([Paragraph(f"<b>{row[0]}</b>", table_cell),
                  Paragraph(row[1], table_cell),
                  Paragraph(row[2], table_cell)])
tbl2 = Table(data2, colWidths=col_w2, repeatRows=1)
s2 = [
    ("BACKGROUND", (0,0), (-1,0), PURPLE),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#B0BEC5")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]
for i in range(1, len(data2)):
    s2.append(("BACKGROUND", (0,i), (-1,i), WHITE if i%2==1 else ROW_ALT))
tbl2.setStyle(TableStyle(s2))
story.append(tbl2)
story.append(Spacer(1, 0.3*cm))

# ── DIAGNOSIS ────────────────────────────────────────────────────────────────
story.append(section_banner("DIAGNOSIS", TEAL))
story.append(Spacer(1, 0.25*cm))

diag_rows = [
    ("Best specimen",   "Stool (cyst/trophozoite)",                           "Vaginal discharge / urethral exudate / urine sediment"),
    ("Microscopy",      "Stool wet mount — cysts; diarrheal stool — trophozoites", "Wet mount — motile trophozoites (jerky motion)"),
    ("Sensitivity",     "Stool microscopy ~50–70%; improves with 3 samples",   "Wet mount 50–60%; less sensitive in asymptomatic"),
    ("Staining",        "Trichrome, iron-haematoxylin, DFA",                   "Giemsa / Papanicolaou (limited help)"),
    ("Antigen test",    "ELISA antigen test (high sensitivity)",               "Direct immunofluorescent antibody (70–90%)"),
    ("Special test",    "String test (Enterotest)",                            "NAA/PCR — most sensitive method"),
    ("Culture",         "Available but rarely used",                           "Artificial media, anaerobic, pH 5.5–6.0 (rarely used)"),
    ("Gold standard",   "PCR",                                                 "PCR / NAA"),
]
story.append(comp_table(diag_rows))
story.append(Spacer(1, 0.15*cm))

story.append(info_box(
    "<b>String Test (Enterotest):</b> Patient swallows a gelatin capsule containing a coiled nylon string "
    "— one end taped to the cheek. After 4–6 hours it is retrieved. The bile-stained distal portion "
    "carries duodenal fluid which is examined for Giardia trophozoites. Useful when stool microscopy is negative.",
    LIGHT_BLUE
))
story.append(Spacer(1, 0.3*cm))

# ── TREATMENT & PREVENTION ───────────────────────────────────────────────────
story.append(section_banner("TREATMENT & PREVENTION", GREEN))
story.append(Spacer(1, 0.25*cm))

tx_rows = [
    ("Drug of choice",    "Metronidazole or Tinidazole",                "Metronidazole or Tinidazole"),
    ("Dosing",            "Metronidazole 250–500 mg TDS × 5–7 days\nTinidazole 2g single dose", "Metronidazole 2g single dose OR 500 mg BD × 7 days"),
    ("Cure rate",         "~90–95%",                                    ">95%"),
    ("Partner treatment", "Not routinely required",                     "BOTH partners must be treated simultaneously"),
    ("Pregnancy",         "Avoid in 1st trimester; use after if needed", "Avoid in 1st trimester"),
    ("Alcohol",           "Avoid (disulfiram-like reaction)",            "Avoid (disulfiram-like reaction)"),
    ("Prevention",        "Boil/filter water; hand hygiene; food safety", "Condom use; reduce sexual partners; STI screening"),
    ("Resistance",        "Rare",                                        "Metronidazole-resistant strains exist → use Tinidazole"),
]
story.append(comp_table(tx_rows))
story.append(Spacer(1, 0.3*cm))

# ── STEATORRHOEA BOX ────────────────────────────────────────────────────────
story.append(section_banner("KEY CONCEPTS", AMBER))
story.append(Spacer(1, 0.2*cm))

boxes = [
    (LIGHT_AMBER, "<b>Steatorrhoea</b>",
     "Passage of abnormally high amounts of fat in stool (pale, greasy, foul-smelling, floats). "
     "In Giardiasis, Trophozoites damage duodenal brush border → ↓ lipase activity + ↓ fat absorption "
     "→ fat passes undigested into stool."),
    (LIGHT_GREEN, "<b>Amoebiasis vs Giardiasis — Invasiveness</b>",
     "<b>Amoebiasis (E. histolytica):</b> INVASIVE — penetrates intestinal wall, causes flask-shaped ulcers, "
     "spreads to liver (amoebic abscess).<br/>"
     "<b>Giardiasis:</b> NON-INVASIVE — remains in intestinal lumen, no ulcers, no liver involvement."),
    (LIGHT_PURPLE, "<b>Parasitic STDs</b>",
     "1. <i>Trichomonas vaginalis</i> — Trichomoniasis<br/>"
     "2. <i>Phthirus pubis</i> — Pubic lice (crabs)<br/>"
     "3. <i>Sarcoptes scabiei</i> — Scabies<br/>"
     "<b>T. vaginalis</b> is the most common curable non-viral STD worldwide (>200 million cases/year)."),
    (LIGHT_BLUE, "<b>Strawberry Cervix</b>",
     "Characteristic but uncommon finding in Trichomoniasis. "
     "Petechial haemorrhages on the cervix give it a red, granular, friable appearance resembling a strawberry. "
     "Highly specific when present."),
]

for bg, title, text in boxes:
    data = [[Paragraph(title, subsection_style)], [Paragraph(text, body_style)]]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (0,0), bg),
        ("BACKGROUND",    (0,1), (0,1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("BOX",           (0,0), (-1,-1), 0.5, colors.HexColor("#B0BEC5")),
        ("LINEBELOW",     (0,0), (-1,0), 0.8, colors.HexColor("#90A4AE")),
    ]))
    story.append(t)
    story.append(Spacer(1, 0.15*cm))

# ── MNEMONICS ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 0.1*cm))
story.append(section_banner("MNEMONICS & MEMORY TIPS", colors.HexColor("#BF360C")))
story.append(Spacer(1, 0.2*cm))

mnemonics = [
    ("Giardia has 2 faces",    "2 nuclei → looks like a face = 'Giardia smiles at you'"),
    ("Giardia cyst has 4 N",   "4 Nuclei in cyst → '4 doors to infect'"),
    ("Trichomonas = NO CYST",  "T for Trichomonas = T for Trophozoite-only"),
    ("T. vaginalis 5 Flagella","4 go forward, 1 goes back = '4+1 = Five'"),
    ("Both treated by METRO",  "Metro goes to BOTH stations: Giardia-town & Trichomo-town"),
    ("Males flush T. vaginalis","URINE = natural flushing system → asymptomatic in males"),
    ("Strawberry cervix",      "Petechial haemorrhages = red dots = strawberry pattern"),
    ("Steatorrhoea",           "Fat floats → 'STEA = FAT floats, cannot be absorbed'"),
]

mn_data = [[Paragraph("Tip", table_header), Paragraph("Memory Hook", table_header)]]
for tip, hook in mnemonics:
    mn_data.append([Paragraph(f"<b>{tip}</b>", table_cell), Paragraph(hook, table_cell)])
mn_tbl = Table(mn_data, colWidths=[6*cm, W-6*cm], repeatRows=1)
mn_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#BF360C")),
    ("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#B0BEC5")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 7),
    ("RIGHTPADDING",  (0,0), (-1,-1), 7),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    *[("BACKGROUND", (0,i), (-1,i), WHITE if i%2==1 else ROW_ALT) for i in range(1, len(mn_data))],
]))
story.append(mn_tbl)
story.append(Spacer(1, 0.3*cm))

# ── FOOTER ───────────────────────────────────────────────────────────────────
story.append(HRFlowable(width=W, thickness=0.5, color=colors.HexColor("#B0BEC5")))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
    "Reference: Sherris &amp; Ryan's Medical Microbiology, 8th Ed. | "
    "Goodman &amp; Gilman's Pharmacological Basis of Therapeutics | "
    "Card 05 · AMCB-08 Parasitology",
    note_style
))

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

cd /tmp/workspace/giardia-trichomonas && python create_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/giardia-trichomonas/

Your study guide PDF is ready! Here's the download link:

Giardia vs Trichomonas Study Guide

PDF Document · PDF


PDF-এ কী কী আছে:
SectionContent
Quick Reference Table18-row side-by-side comparison (morphology, host, transmission, treatment)
Morphology in DetailTrophozoite + Cyst details for both organisms
PathogenesisStep-by-step mechanism for both, side by side
Virulence FactorsAttachment, tissue damage, immune evasion
Clinical FeaturesSymptoms for women vs men in Trichomoniasis
Why Males AsymptomaticTable explaining 5 key reasons
DiagnosisAll methods including String Test explanation
Treatment & PreventionDrug doses, cure rates, partner treatment
Key ConceptsSteatorrhoea, Invasiveness, Strawberry Cervix, Parasitic STDs
Mnemonics8 easy memory tricks for exam
Reference: Sherris & Ryan's Medical Microbiology, 8th Ed. | Goodman & Gilman's Pharmacological Basis of Therapeutics

Ans gulo English a age dau & sathe sathe banglay describe koro

আগের উত্তরগুলোই এখন English-first format-এ, সাথে বাংলা description দিচ্ছি - textbook থেকে সরাসরি।

Card 05 — Parasitology: Flagellates

Giardia intestinalis & Trichomonas vaginalis

📖 Ref: Sherris & Ryan's Medical Microbiology, 8th Ed.


Q1. Mention the different types of flagellate with their pathogenecity.

English Answer: Eight species of luminal flagellates parasitize humans. Of these, only two are pathogenic:
FlagellatePathogenicitySite
Giardia lamblia+ (Pathogenic)Intestine
Dientamoeba fragilis? (Uncertain)Intestine
Chilomastix mesnili− (Non-pathogenic)Intestine
Enteromonas hominisIntestine
Retortamonas intestinalisIntestine
Trichomonas hominisIntestine
Trichomonas tenaxMouth
Trichomonas vaginalis+ (Pathogenic)Vagina
  • Giardia and Trichomonas vaginalis are non-invasive luminal flagellates causing disease of low morbidity and cosmopolitan distribution
  • Leishmania and Trypanosoma are invasive hemoflagellates causing highly morbid, potentially lethal diseases — they require an insect intermediate host
বাংলায় বিস্তারিত: মানুষের শরীরে ৮টি Flagellate পরজীবী থাকতে পারে। এদের মধ্যে শুধু Giardia lamblia (পেটে) এবং Trichomonas vaginalis (যোনিতে) রোগ তৈরি করে। বাকি ৬টি non-pathogenic — অর্থাৎ এগুলো থাকলেও রোগ হয় না। LeishmaniaTrypanosoma হলো blood-borne invasive parasite যেগুলো পোকার মাধ্যমে ছড়ায় এবং গুরুতর রোগ করে।

Q2. What are the peculiarities of morphology of Giardia lamblia?

English Answer:
Trophozoite (active/pathogenic form):
  • Shape: Pear-shaped (pyriform), 10–20 μm long
  • 2 nuclei — each with a prominent karyosome → gives characteristic "old man's face" appearance
  • 6 flagella (2 anterior, 2 posterior, 2 ventral)
  • Ventral sucking disc — a concave adhesive disc for attachment to intestinal epithelium
  • Axostyle runs longitudinally
  • Rudimentary cytostome (mouth aperture)
  • Motion: Tumbling/falling-leaf motility
  • No cyst wall, feeds by absorption through body surface
Cyst (infective/resistant form):
  • Shape: Oval, 7–10 μm
  • 4 nuclei (doubled before encystation)
  • Contains axonemes and median bodies
  • Thick wall — resistant to chlorination, survives in cold water for months
  • Infective dose: as few as 10–25 cysts
বাংলায় বিস্তারিত: Giardia-র দুটো রূপ আছে — Trophozoite ও Cyst।
Trophozoite দেখতে নাশপাতির মতো। এর ২টি নিউক্লিয়াস আছে যেগুলো দেখতে মানুষের চোখের মতো — তাই পুরো পরজীবীটি "মুখের মতো" দেখায়। পেটের নিচের দিকে একটি Ventral sucking disc আছে যেটা দিয়ে ছোট অন্ত্রের দেওয়ালে শক্ত হয়ে লেগে থাকে। ৬টি flagella দিয়ে পাতার মতো ঘুরতে ঘুরতে নড়ে।
Cyst হলো ডিম্বাকৃতি, ছোট (৭-১০ μm), ৪টি নিউক্লিয়াস আছে। এটি খুব শক্ত — পানিতে মাসের পর মাস বেঁচে থাকে, ক্লোরিনেও নষ্ট হয় না। মাত্র ১০-২৫টি cyst খেলেই সংক্রমণ হয়।

Q3. What are the definitive host, intermediate host, mode of infection of Giardia lamblia?

English Answer:
ParameterDetails
Definitive HostHumans (also dogs, cats, beavers — zoonotic reservoir)
Intermediate HostNone — no intermediate host required
Infective FormCyst (4 nuclei)
Mode of InfectionFeco-oral route
VehicleContaminated water (most common), contaminated food, person-to-person
Infective doseAs few as 10–25 cysts
Route in detail: Cyst ingested → survives gastric acid → excysts in duodenum → 2 trophozoites per cyst emerge → colonize jejunum → some re-encyst → passed in stool → contaminate water/food → cycle repeats
বাংলায় বিস্তারিত: Giardia-র কোনো intermediate host লাগে না। মানুষই এর Definitive host। কুকুর, বিড়াল, বিভার (beaver) প্রাণীও এই পরজীবী বহন করতে পারে — তাই এটি zoonotic রোগও।
সংক্রমণের পথ হলো feco-oral — দূষিত পানি বা খাবারের মাধ্যমে Cyst পেটে যায়। পেটের অ্যাসিডে টিকে থেকে Duodenum-এ এসে ২টি Trophozoite-এ পরিণত হয়। এরপর Jejunum-এ বসবাস করে রোগ তৈরি করে। কিছু Trophozoite আবার Cyst হয়ে মলের সাথে বের হয়ে পরিবেশ দূষিত করে।

Q4. What is infective form, pathogenic form, diagnostic form and what are the virulence factors of Giardia lamblia?

English Answer:
FormWhich oneWhy
Infective formCystResistant to environment; survives to be ingested
Pathogenic formTrophozoiteAttaches to gut wall, causes malabsorption & diarrhoea
Diagnostic formCyst (routine) / Trophozoite (in acute/watery diarrhoea)Cysts shed in formed stool; trophozoites in liquid stool
Virulence Factors:
FactorRole
Ventral sucking discAttaches firmly to jejunal brush border — physical blockade of absorption
Variant Surface Proteins (VSPs)Antigenic variation — escapes host immune recognition
Proteinases & lectinsDamage epithelial cells, degrade mucus layer
Brush border enzyme disruptionReduces disaccharidase activity → malabsorption
Cyst wall (β-giardin)Environmental resistance — survives chlorination
বাংলায় বিস্তারিত:
  • Infective form = Cyst কারণ এটি পরিবেশে টিকে থাকে ও মুখ দিয়ে শরীরে ঢোকে।
  • Pathogenic form = Trophozoite কারণ এটি অন্ত্রে লেগে থেকে ক্ষতি করে।
  • Diagnostic form = Cyst — সাধারণ মলে Cyst দেখা যায়; তীব্র পাতলা পায়খানায় Trophozoite।
Virulence-এর মূল কারণ হলো Ventral disc — এটি অন্ত্রের সূক্ষ্ম আঙুলের মতো অংশে (brush border) লেগে যায় এবং পুষ্টি শোষণ বাধা দেয়। VSP দিয়ে রোগ প্রতিরোধ ব্যবস্থাকে ফাঁকি দেয়।

Q5. What is steatorrhoea? How to diagnose giardiasis? What is string test?

English Answer:
Steatorrhoea:
Passage of abnormally large amounts of fat in stool — stool appears pale, greasy, bulky, foul-smelling, and floats in the toilet.
In Giardiasis: Trophozoites damage the brush border of duodenum/jejunum → ↓ lipase & brush border enzyme activity → fat passes undigested → steatorrhoea + fat-soluble vitamin deficiency (A, D, E, K) + Vitamin B12/folate deficiency
Diagnosis of Giardiasis:
MethodDetails
1. Stool microscopyCysts in formed stool; Trophozoites in watery stool. Examine 3 samples on alternate days
2. Stool antigen testELISA for Giardia antigen — sensitivity ~94%, specificity ~97%
3. String test (Enterotest)See below
4. Duodenal biopsyGold standard for tissue confirmation; rarely done
5. PCRMost sensitive — gold standard for research/difficult cases
String Test (Enterotest):
  1. Patient swallows a gelatin capsule containing a coiled nylon string
  2. One end of the string is taped to the outside of the cheek
  3. After 4–6 hours, the string is pulled out
  4. The bile-stained distal end carries duodenal fluid
  5. That fluid is examined under microscope for Giardia trophozoites
  6. Used when stool exam is repeatedly negative but Giardiasis is suspected
বাংলায় বিস্তারিত: Steatorrhoea মানে মলে চর্বি বের হওয়া। স্বাভাবিকের চেয়ে বেশি fat মলে থাকলে সেটা ফ্যাকাশে, তৈলাক্ত, দুর্গন্ধযুক্ত হয় এবং পানিতে ভাসে। Giardia অন্ত্রের হজমকারী enzyme নষ্ট করে দেয় বলে চর্বি হজম হয় না।
Diagnosis: সবচেয়ে সহজ হলো মলে Cyst খোঁজা। তিনদিন আলাদা আলাদা sample দিলে ধরার সম্ভাবনা বাড়ে।
String Test: রোগী একটি ক্যাপসুল গিলে নেয় যার মধ্যে একটি সুতো আছে। সুতোর এক মাথা মুখের বাইরে রাখা হয়। ৪-৬ ঘণ্টা পরে টেনে বের করলে সুতোর ডগায় ছোট অন্ত্রের রস লেগে থাকে — সেখানে Trophozoite দেখা যায়।

Q6. Between Amoebiasis and Giardiasis, which is due to invasiveness? What is the pathogenesis of giardiasis?

English Answer:
Invasiveness:
  • Amoebiasis (Entamoeba histolytica) = INVASIVE → penetrates intestinal wall → flask-shaped ulcers → haematogenous spread → liver abscess
  • Giardiasis (Giardia lamblia) = NON-INVASIVE → stays in intestinal lumen → no ulcers, no systemic spread
Pathogenesis of Giardiasis (step by step):
Step 1: Cysts ingested → excyst in duodenum → 2 trophozoites per cyst
Step 2: Trophozoites attach via ventral sucking disc to the microvilli of duodenum and jejunum
Step 3: Physical blockade + direct injury → brush border enzyme reduction (↓ lactase, sucrase, maltase)
Step 4: ↓ Fat digestion and absorption → steatorrhoea
Step 5: ↓ Absorption of Vitamin B12, folate, fat-soluble vitamins
Step 6: Osmotic diarrhoea, bloating, flatulence, abdominal cramps
Step 7: Chronic infection → malnutrition, weight loss, growth retardation (especially in children)
Note: No tissue invasion, no fever, no blood in stool — key features distinguishing Giardiasis from Amoebiasis
বাংলায় বিস্তারিত: Amoebiasis invasive রোগ — E. histolytica অন্ত্রের দেওয়াল ভেদ করে ঢোকে, ক্ষত তৈরি করে, এমনকি লিভারেও যায়।
Giardiasis non-invasive — Giardia শুধু অন্ত্রের ভেতরে থাকে, দেওয়ালে ঢোকে না।
Giardiasis-এর রোগ হওয়ার কারণ: Trophozoite অন্ত্রে লেগে হজমের enzyme কমিয়ে দেয় → চর্বি ও ভিটামিন শোষণ হয় না → ডায়ারিয়া, ওজন কমা, দুর্বলতা। জ্বর হয় না, রক্ত পায়খানা হয় না।

Q7. Name some parasitic STDs. What is the clinical significance of Trichomonas vaginalis?

English Answer:
Parasitic STDs:
  1. Trichomonas vaginalis — Trichomoniasis
  2. Phthirus pubis — Pubic lice (crabs)
  3. Sarcoptes scabiei — Scabies
Clinical Significance of T. vaginalis:
  • Most common curable non-viral STD in the world — >200 million cases/year; ~8 million in USA annually
  • In Women (75% symptomatic):
    • Yellow, frothy, malodorous vaginal discharge
    • Vulvar itching, burning, dyspareunia, dysuria
    • "Strawberry cervix" — petechial haemorrhages on the cervix (characteristic but uncommon)
    • Symptoms fluctuate, worsen during menses/pregnancy
  • In Men (mostly asymptomatic):
    • Mild urethritis, scant non-purulent discharge
    • Occasionally prostatitis or epididymitis
  • Systemic significance:
    • ↑ Risk of HIV acquisition (due to genital inflammation)
    • ↑ Risk of preterm birth in pregnant women
    • Co-infection with other STIs is common
বাংলায় বিস্তারিত: Parasitic STD মানে যৌন মিলনে ছড়ানো পরজীবী রোগ। T. vaginalis পৃথিবীর সবচেয়ে সাধারণ (কিন্তু সারানো যায় এমন) যৌনরোগ।
মহিলাদের যোনিতে প্রদাহ হয়, হলুদ ফেনাযুক্ত দুর্গন্ধযুক্ত স্রাব হয়। "Strawberry cervix" হলো cervix-এ লাল লাল দাগ পড়া — এটি এই রোগের বিশেষ চিহ্ন। পুরুষে সাধারণত কোনো উপসর্গ থাকে না। এটি HIV সংক্রমণের ঝুঁকিও বাড়িয়ে দেয়।

Q8. What are the peculiarities of morphology of Trichomonas vaginalis?

English Answer:
Key peculiarity: EXISTS ONLY AS TROPHOZOITE — NO CYST STAGE
FeatureDetails
ShapeOval / piriform
Size7 × 15 μm (occasionally up to 30 μm in asymptomatic patients)
Nucleus1 single elongated nucleus (anterior) with small cytostome
Flagella5 total — 4 exit anteriorly; 1 bends posteriorly along undulating membrane
Undulating membraneRuns only halfway along the body (abbreviated)
CostaCross-striated rod along the base of the undulating membrane
AxostyleMicrotubule-containing rod that bisects the cell and protrudes from the posterior end — aids attachment
CystABSENT — only trophozoite stage exists
MotilityJerky, non-directional (tumbling motion) — seen in wet mount
StainingIdentified in unstained wet mounts by axostyle + jerky motility
CultureGrows on artificial media, anaerobic conditions, pH 5.5–6.0
বাংলায় বিস্তারিত: T. vaginalis-এর সবচেয়ে বড় বৈশিষ্ট্য হলো এর শুধু Trophozoite আছে, কোনো Cyst নেই। তাই এটি কখনো মলে পাওয়া যায় না — শুধু যোনি বা মূত্রনালীর স্রাবে পাওয়া যায়।
আকারে ডিম্বাকৃতি। ৫টি flagella আছে — ৪টি সামনে থেকে বের হয়, ১টি পেছনে undulating membrane ধরে চলে যায়। Axostyle হলো একটি কাঠির মতো গঠন যা শরীরের মাঝখান দিয়ে গিয়ে পিছন দিকে বেরিয়ে থাকে — এটি দিয়ে আটকে থাকে। Wet mount-এ ঝাঁকুনি দিয়ে এলোমেলোভাবে নড়তে দেখা যায়।

Q9. How will you treat a case of Trichomoniasis? How can it be prevented?

English Answer:
Treatment:
RegimenDetails
Drug of choiceMetronidazole OR Tinidazole
Single doseMetronidazole 2g oral (single dose) OR Tinidazole 2g oral (single dose)
AlternativeMetronidazole 500mg twice daily × 7 days
Cure rate>95% of all infections cured
Partner treatmentMANDATORY — both sexual partners must be treated simultaneously to prevent reinfection
ResistanceMetronidazole-resistant strains exist → use Tinidazole (better tolerated, effective)
PregnancyAvoid in 1st trimester; treat after if symptomatic
AlcoholStrictly avoid — disulfiram-like reaction (nausea, vomiting, flushing)
BreastfeedingDiscontinue breastfeeding for 12–24h after single dose Metronidazole
Prevention:
MethodDetails
Condom useMost effective barrier method
Treat both partnersPrevents reinfection cycle
Reduce sexual partnersDirectly reduces transmission risk
Regular STI screeningEspecially in high-risk groups
Avoid shared towels/washclothsNon-sexual transmission possible
RetestingRetest all sexually active women 3 months after initial treatment (high reinfection rate)
বাংলায় বিস্তারিত: চিকিৎসার প্রধান ওষুধ হলো Metronidazole — একবারে ২g খেলেই ৯৫%-এর বেশি সুস্থ হয়। রোগী এবং তার সঙ্গী উভয়কে একই সময়ে চিকিৎসা করতে হবে — না হলে রোগ আবার আসবে। Metronidazole খাওয়ার সময় অ্যালকোহল খেলে বমি ও শরীর খারাপ হবে। গর্ভাবস্থার প্রথম তিন মাসে এই ওষুধ দেওয়া যাবে না।
প্রতিরোধের জন্য কনডম ব্যবহার সবচেয়ে কার্যকর।

Q10. What are the modes of infection of Trichomoniasis? Pathogenesis? Why males are more asymptomatic than females?

English Answer:
Modes of Infection:
RouteDetails
1. Sexual intercourse (primary)Direct contact with infected genital secretions — >99% of cases
2. Shared fomitesShared washcloths, wet towels — uncommon but possible (organism survives hours outside host)
3. Vertical (birth canal)Female neonates can acquire T. vaginalis during passage through infected birth canal
Pathogenesis (Step by Step):
Step 1: T. vaginalis contacts squamous epithelium of vagina/urethra/cervix
Step 2: Adhesins, laminin-binding proteins, lectin-binding carbohydrates → firm attachment to epithelial cells
Step 3: Proteinases secreted → contact-dependent cytolysis of epithelial cells
Step 4: A 200 kDa glycoprotein also causes contact-independent cell damage
Step 5: Epithelial destruction → neutrophilic inflammatory reaction + petechial haemorrhages
Step 6: Toll-like receptors (TLRs) on vaginal epithelium are triggered → ↑ pro-inflammatory cytokines (IL-6, IL-8, TNF) → neutrophil & CD4+ T-cell infiltration
Step 7: T. vaginalis degrades IgG and IgA via proteinases → immune evasion
Step 8: Phenotypic antigenic variation of surface proteins → further immune escape
Result: Chronic vaginitis, pH changes, ↑ HIV susceptibility, ↑ risk of preterm birth

Why Males are More Asymptomatic Than Females:
FactorFemalesMales
EnvironmentWarm, moist vagina — ideal pH (3.8–4.5, acidic) for T. vaginalis growthNarrow urethra, less hospitable environment
Mechanical flushingNo regular flushing mechanismUrine flow mechanically washes organisms out from urethra — key reason
EpitheliumLarge area of exposed squamous epitheliumLess exposed squamous epithelium
pHAcidic vaginal pH favours organism growthUrethral pH less favourable
HormonalOestrogen-influenced vaginal environment supports colonisationNo comparable hormonal support
Outcome75% develop symptomatic vaginitis>50% asymptomatic; many self-clear
Key point: The most important reason is voiding of urine in males, which mechanically removes T. vaginalis from the urethra before significant colonisation can occur.
বাংলায় বিস্তারিত:
সংক্রমণের পথ: প্রায় সব ক্ষেত্রেই (৯৯%) যৌন মিলনের মাধ্যমে ছড়ায়। তবে ভেজা তোয়ালে বা কাপড় ভাগ করলেও ছড়াতে পারে (পরজীবী শরীরের বাইরে কয়েক ঘণ্টা বেঁচে থাকে)। মায়ের জন্মনালী থেকে নবজাতক মেয়ে শিশুও সংক্রমিত হতে পারে।
Pathogenesis: T. vaginalis যোনির দেওয়ালে লেগে proteinase ছাড়ে → কোষ নষ্ট হয় → প্রদাহ হয় → লাল দাগ পড়ে (strawberry cervix)। এটি IgG ও IgA ভেঙে দিয়ে রোগ প্রতিরোধ ব্যবস্থাকে ফাঁকি দেয়।
পুরুষে কেন কম উপসর্গ: সবচেয়ে বড় কারণ হলো প্রস্রাব — পুরুষের মূত্রনালী সরু এবং প্রতিবার প্রস্রাবের সময় পরজীবী ধুয়ে যায়। মহিলার যোনি উষ্ণ, স্যাঁতসেঁতে এবং অ্যাসিডিক — এই পরিবেশ পরজীবীর বেড়ে ওঠার জন্য আদর্শ। তাই মহিলারা বেশি অসুস্থ হন, পুরুষ অনেক সময় বুঝতেই পারেন না তিনি infected।

📖 Reference: Sherris & Ryan's Medical Microbiology, 8th Edition — Chapter 53: Flagellates | Goodman & Gilman's Pharmacological Basis of Therapeutics — Trichomoniasis

Create a quick reference cheat sheet PDF for exam

Writing File

~/giardia-trichomonas/create_cheatsheet.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
)

OUTPUT = "/tmp/workspace/giardia-trichomonas/Cheatsheet_Giardia_Trichomonas.pdf"

# ── Page setup: A4, tight margins ─────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.2*cm, leftMargin=1.2*cm,
    topMargin=1.1*cm, bottomMargin=1.1*cm,
)
W = A4[0] - 2.4*cm

# ── Palette ───────────────────────────────────────────────────────────────────
TEAL      = colors.HexColor("#00838F")
TEAL_LT   = colors.HexColor("#E0F7FA")
PURPLE    = colors.HexColor("#6A1B9A")
PURPLE_LT = colors.HexColor("#F3E5F5")
GREEN     = colors.HexColor("#2E7D32")
GREEN_LT  = colors.HexColor("#E8F5E9")
AMBER     = colors.HexColor("#E65100")
AMBER_LT  = colors.HexColor("#FFF8E1")
RED       = colors.HexColor("#B71C1C")
RED_LT    = colors.HexColor("#FFEBEE")
BLUE      = colors.HexColor("#1565C0")
BLUE_LT   = colors.HexColor("#E3F2FD")
GREY_LT   = colors.HexColor("#F5F5F5")
GREY_MID  = colors.HexColor("#90A4AE")
DARK      = colors.HexColor("#212121")
WHITE     = colors.white

# ── Styles ────────────────────────────────────────────────────────────────────
SS = getSampleStyleSheet()

def sty(name, **kw):
    base = kw.pop("parent", SS["Normal"])
    return ParagraphStyle(name, parent=base, **kw)

H_BANNER  = sty("hbanner",  fontSize=8.5, fontName="Helvetica-Bold",
                textColor=WHITE, alignment=TA_CENTER)
H_TH      = sty("hth",      fontSize=8,   fontName="Helvetica-Bold",
                textColor=WHITE, alignment=TA_CENTER)
H_CELL    = sty("hcell",    fontSize=7.8, fontName="Helvetica",
                textColor=DARK,  alignment=TA_LEFT,   leading=10)
H_CELLB   = sty("hcellb",   fontSize=7.8, fontName="Helvetica-Bold",
                textColor=DARK,  alignment=TA_LEFT,   leading=10)
H_CELLC   = sty("hcellc",   fontSize=7.8, fontName="Helvetica",
                textColor=DARK,  alignment=TA_CENTER, leading=10)
H_SMALL   = sty("hsmall",   fontSize=7,   fontName="Helvetica-Oblique",
                textColor=GREY_MID, alignment=TA_CENTER)
H_TITLE   = sty("htitle",   fontSize=13,  fontName="Helvetica-Bold",
                textColor=WHITE,  alignment=TA_CENTER)
H_SUB     = sty("hsub",     fontSize=8,   fontName="Helvetica",
                textColor=colors.HexColor("#B2EBF2"), alignment=TA_CENTER)
H_MNE     = sty("hmne",     fontSize=7.8, fontName="Helvetica-Bold",
                textColor=AMBER,  alignment=TA_LEFT)
H_MNE2    = sty("hmne2",    fontSize=7.5, fontName="Helvetica",
                textColor=DARK,   alignment=TA_LEFT,  leading=10)

# ── Helpers ───────────────────────────────────────────────────────────────────
TP = 4   # top/bottom cell padding
LP = 5   # left/right cell padding

def banner(text, color, w=None):
    w = w or W
    t = Table([[Paragraph(text, H_BANNER)]], colWidths=[w])
    t.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), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ]))
    return t

def grid(headers, rows, col_widths, header_color=TEAL, alt=GREY_LT):
    data = [[Paragraph(h, H_TH) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), H_CELLB if i == 0 else H_CELLC)
                     for i, c in enumerate(row)])
    t = Table(data, colWidths=col_widths, repeatRows=1)
    style = [
        ("BACKGROUND",    (0,0), (-1,0), header_color),
        ("GRID",          (0,0), (-1,-1), 0.3, GREY_MID),
        ("TOPPADDING",    (0,0), (-1,-1), TP),
        ("BOTTOMPADDING", (0,0), (-1,-1), TP),
        ("LEFTPADDING",   (0,0), (-1,-1), LP),
        ("RIGHTPADDING",  (0,0), (-1,-1), LP),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    for i in range(1, len(data)):
        style.append(("BACKGROUND", (0,i), (-1,i),
                       WHITE if i % 2 == 1 else alt))
    t.setStyle(TableStyle(style))
    return t

def two_box(left_title, left_body, right_title, right_body,
            lc=TEAL, rc=PURPLE, lbg=TEAL_LT, rbg=PURPLE_LT):
    hw = W / 2 - 0.15*cm
    def make(title, body, tc, bg):
        inner = [
            [Paragraph(title, sty("_", fontSize=8, fontName="Helvetica-Bold",
                                  textColor=WHITE, alignment=TA_CENTER))],
            [Paragraph(body,  H_CELL)],
        ]
        t = Table(inner, colWidths=[hw])
        t.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (0,0), tc),
            ("BACKGROUND",    (0,1), (0,1), bg),
            ("TOPPADDING",    (0,0), (-1,-1), 4),
            ("BOTTOMPADDING", (0,0), (-1,-1), 4),
            ("LEFTPADDING",   (0,0), (-1,-1), 5),
            ("RIGHTPADDING",  (0,0), (-1,-1), 5),
            ("BOX",           (0,0), (-1,-1), 0.3, GREY_MID),
        ]))
        return t
    outer = Table(
        [[make(left_title, left_body, lc, lbg),
          make(right_title, right_body, rc, rbg)]],
        colWidths=[hw + 0.15*cm, hw + 0.15*cm]
    )
    outer.setStyle(TableStyle([
        ("LEFTPADDING",   (0,0), (-1,-1), 1),
        ("RIGHTPADDING",  (0,0), (-1,-1), 1),
        ("TOPPADDING",    (0,0), (-1,-1), 1),
        ("BOTTOMPADDING", (0,0), (-1,-1), 1),
    ]))
    return outer

def colored_box(title, body, tc, bg):
    data = [
        [Paragraph(title, sty("_cb", fontSize=8, fontName="Helvetica-Bold",
                              textColor=WHITE, alignment=TA_LEFT))],
        [Paragraph(body, H_CELL)],
    ]
    t = Table(data, colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (0,0), tc),
        ("BACKGROUND",    (0,1), (0,1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 7),
        ("RIGHTPADDING",  (0,0), (-1,-1), 7),
        ("BOX",           (0,0), (-1,-1), 0.3, GREY_MID),
    ]))
    return t

SP = lambda h=0.12: Spacer(1, h*cm)

# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── TOP BANNER ────────────────────────────────────────────────────────────────
top = Table(
    [[Paragraph("⚡ QUICK REFERENCE CHEAT SHEET", H_TITLE)],
     [Paragraph("Parasitology · Card 05 · AMCB-08  |  Giardia intestinalis  vs  Trichomonas vaginalis", H_SUB)],
     [Paragraph("Ref: Sherris & Ryan's Medical Microbiology, 8th Ed.", H_SMALL)]],
    colWidths=[W]
)
top.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), TEAL),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 3),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
]))
story += [top, SP(0.18)]

# ══ SECTION 1: MASTER COMPARISON ════════════════════════════════════════════
story += [banner("① MASTER COMPARISON TABLE", TEAL), SP(0.1)]

cw = [3.6*cm, (W-3.6*cm)/2, (W-3.6*cm)/2]
rows = [
    ("Classification",    "Intestinal flagellate",              "Genital flagellate"),
    ("Synonym",           "G. intestinalis / G. duodenalis",    "—"),
    ("Shape",             "Pear-shaped (pyriform)",             "Oval / piriform"),
    ("Size",              "10–20 μm (trophozoite)",             "7×15 μm (trophozoite)"),
    ("Forms",             "Trophozoite + Cyst",                 "Trophozoite ONLY ★"),
    ("Nuclei",            "2 (tropho) / 4 (cyst)",             "1 (single nucleus)"),
    ("Flagella",          "6",                                  "5  (4 anterior + 1 recurrent)"),
    ("Special structure", "Ventral sucking disc",               "Axostyle + Costa + Undulating membrane"),
    ("Motility",          "Tumbling / falling-leaf",            "Jerky, non-directional"),
    ("Infective form",    "Cyst (4 nuclei)",                    "Trophozoite (no cyst)"),
    ("Pathogenic form",   "Trophozoite",                        "Trophozoite"),
    ("Diagnostic form",   "Cyst (formed stool)\nTrophozoite (watery stool)", "Trophozoite in vaginal/urethral discharge"),
    ("Definitive host",   "Human, dog, cat, beaver",            "Human only"),
    ("Inter. host",       "None",                               "None"),
    ("Transmission",      "Feco-oral (water/food)",             "Sexual intercourse (STD)"),
    ("Site",              "Duodenum & Jejunum",                 "Vagina / urethra / prostate"),
    ("Invasive?",         "NON-INVASIVE",                       "NON-INVASIVE"),
    ("Disease",           "Giardiasis",                         "Trichomoniasis"),
    ("Tx drug",           "Metronidazole / Tinidazole",         "Metronidazole 2 g single dose ★"),
]
story += [grid(["Feature", "Giardia lamblia", "Trichomonas vaginalis"], rows, cw), SP(0.18)]

# ══ SECTION 2: MORPHOLOGY ════════════════════════════════════════════════════
story += [banner("② MORPHOLOGY AT A GLANCE", GREEN), SP(0.1)]
story += [two_box(
    "Giardia lamblia — Morphology",
    "<b>TROPHOZOITE:</b> Pear-shaped, 10–20 μm. <b>2 nuclei</b> → 'face-like' image. "
    "6 flagella. <b>Ventral sucking disc</b> (attachment). Tumbling motility.<br/>"
    "<b>CYST:</b> Oval, 7–10 μm. <b>4 nuclei</b> + axonemes. Thick wall — survives "
    "chlorination. Infective dose: 10–25 cysts.",
    "Trichomonas vaginalis — Morphology",
    "<b>TROPHOZOITE ONLY</b> (no cyst). Oval, 7×15 μm. <b>1 nucleus</b> (elongated). "
    "<b>5 flagella</b> (4 anterior + 1 along undulating membrane). "
    "<b>Axostyle</b> protrudes posteriorly (attachment). <b>Costa</b> along undulating membrane. "
    "Jerky non-directional motility on wet mount.",
), SP(0.18)]

# ══ SECTION 3: PATHOGENESIS ══════════════════════════════════════════════════
story += [banner("③ PATHOGENESIS", PURPLE), SP(0.1)]
story += [two_box(
    "Giardiasis — Pathogenesis",
    "1. Cyst ingested → excysts in duodenum → 2 trophozoites<br/>"
    "2. Attach via <b>ventral disc</b> to jejunal microvilli<br/>"
    "3. ↓ Brush border enzymes (lactase, sucrase)<br/>"
    "4. ↓ Fat & vitamin absorption → <b>STEATORRHOEA</b><br/>"
    "5. Osmotic diarrhoea, bloating, weight loss<br/>"
    "6. <b>NO invasion, NO fever, NO blood in stool</b>",
    "Trichomoniasis — Pathogenesis",
    "1. Trophozoite contacts squamous epithelium<br/>"
    "2. <b>Adhesins + lectin proteins</b> → attachment<br/>"
    "3. <b>Proteinases</b> → contact-dependent cytolysis<br/>"
    "4. Neutrophilic inflammation + petechial haemorrhages<br/>"
    "5. TLR activation → pro-inflammatory cytokines<br/>"
    "6. Degrades IgG & IgA → <b>immune evasion</b><br/>"
    "7. ↑ HIV risk, ↑ preterm birth risk",
    lc=PURPLE, rc=GREEN, lbg=PURPLE_LT, rbg=GREEN_LT,
), SP(0.18)]

# ══ SECTION 4: CLINICAL + DIAGNOSIS (side by side) ══════════════════════════
story += [banner("④ CLINICAL FEATURES  &  DIAGNOSIS", BLUE), SP(0.1)]

hw = W / 2 - 0.15*cm

# Clinical
clin_g = (
    "• Explosive foul-smelling watery diarrhoea<br/>"
    "• Abdominal cramps, bloating, flatulence<br/>"
    "• Steatorrhoea (pale, greasy, floating stool)<br/>"
    "• Weight loss, malnutrition (children)<br/>"
    "• Vit B12 / folate deficiency<br/>"
    "• <b>No fever, no blood</b>"
)
clin_t = (
    "<b>Women (75% symptomatic):</b><br/>"
    "• Yellow frothy malodorous discharge<br/>"
    "• Vulvar itch/burn, dyspareunia, dysuria<br/>"
    "• <b>Strawberry cervix</b> ★ (petechial haemorrhages)<br/>"
    "<b>Men (&gt;50% asymptomatic):</b><br/>"
    "• Mild urethritis, scant discharge<br/>"
    "• Urine flushes organisms → self-limiting"
)

# Diagnosis
diag_g = (
    "• <b>Stool microscopy</b> × 3 samples (alternate days)<br/>"
    "• Cysts in formed stool; trophozoites in watery stool<br/>"
    "• <b>ELISA antigen test</b> (sens ~94%)<br/>"
    "• <b>String test</b> (Enterotest) — if stool −ve<br/>"
    "• PCR — most sensitive (gold standard)"
)
diag_t = (
    "• <b>Wet mount</b> of vaginal discharge (motile trophozo.)<br/>"
    "• Sensitivity 50–60% (wet mount)<br/>"
    "• <b>Direct immunofluorescence</b> (70–90%)<br/>"
    "• <b>PCR / NAA</b> — most sensitive ★<br/>"
    "• Culture: anaerobic, pH 5.5–6.0 (rarely used)"
)

def quad_cell(title, body, tc, bg, w):
    inner = [
        [Paragraph(title, sty("_q", fontSize=7.8, fontName="Helvetica-Bold",
                              textColor=WHITE, alignment=TA_LEFT))],
        [Paragraph(body, H_CELL)],
    ]
    t = Table(inner, colWidths=[w])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (0,0), tc),
        ("BACKGROUND", (0,1), (0,1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("BOX", (0,0), (-1,-1), 0.3, GREY_MID),
    ]))
    return t

quad = Table([
    [quad_cell("Giardia — Clinical", clin_g, TEAL, TEAL_LT, hw),
     quad_cell("Trichomonas — Clinical", clin_t, PURPLE, PURPLE_LT, hw)],
    [quad_cell("Giardia — Diagnosis", diag_g, GREEN, GREEN_LT, hw),
     quad_cell("Trichomonas — Diagnosis", diag_t, BLUE, BLUE_LT, hw)],
], colWidths=[hw+0.15*cm, hw+0.15*cm])
quad.setStyle(TableStyle([
    ("LEFTPADDING",   (0,0), (-1,-1), 1),
    ("RIGHTPADDING",  (0,0), (-1,-1), 1),
    ("TOPPADDING",    (0,0), (-1,-1), 1),
    ("BOTTOMPADDING", (0,0), (-1,-1), 1),
]))
story += [quad, SP(0.18)]

# ══ SECTION 5: KEY CONCEPTS ROW ══════════════════════════════════════════════
story += [banner("⑤ KEY CONCEPTS  &  IMPORTANT DEFINITIONS", AMBER), SP(0.1)]

kw = W / 3 - 0.2*cm

def kbox(title, body, tc, bg, w):
    inner = [
        [Paragraph(title, sty("_k", fontSize=7.8, fontName="Helvetica-Bold",
                              textColor=WHITE, alignment=TA_CENTER))],
        [Paragraph(body, H_CELL)],
    ]
    t = Table(inner, colWidths=[w])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (0,0), tc),
        ("BACKGROUND", (0,1), (0,1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("BOX",           (0,0), (-1,-1), 0.3, GREY_MID),
    ]))
    return t

k1 = kbox("STEATORRHOEA",
          "Pale, greasy, foul-smelling, floating stool. "
          "Fat unabsorbed due to brush border enzyme ↓ by Giardia trophozoite. "
          "Leads to fat-soluble vitamin deficiency (A,D,E,K) + B12/folate deficiency.",
          AMBER, AMBER_LT, kw)
k2 = kbox("STRING TEST (Enterotest)",
          "Gelatin capsule + coiled nylon string — one end taped to cheek. "
          "Swallowed, left 4–6h. Withdrawn → bile-stained tip carries duodenal fluid. "
          "Examined for Giardia trophozoites. Used when stool exam is negative.",
          BLUE, BLUE_LT, kw)
k3 = kbox("STRAWBERRY CERVIX",
          "Petechial haemorrhages on cervix → red, granular, friable appearance. "
          "Characteristic but uncommon finding in Trichomoniasis. "
          "Highly specific when present.",
          RED, RED_LT, kw)

k_row = Table([[k1, k2, k3]], colWidths=[kw+0.2*cm, kw+0.2*cm, kw+0.2*cm])
k_row.setStyle(TableStyle([
    ("LEFTPADDING",   (0,0), (-1,-1), 1),
    ("RIGHTPADDING",  (0,0), (-1,-1), 1),
    ("TOPPADDING",    (0,0), (-1,-1), 1),
    ("BOTTOMPADDING", (0,0), (-1,-1), 1),
]))
story += [k_row, SP(0.18)]

# ══ SECTION 6: WHY MALES ASYMPTOMATIC + TREATMENT ════════════════════════════
story += [banner("⑥ WHY MALES ASYMPTOMATIC  |  TREATMENT  |  PREVENTION", GREEN), SP(0.1)]

# Why males — small table
why_rows = [
    ("Mechanical flushing", "No flushing", "Urine flow washes organisms out ★"),
    ("Environment",         "Warm, moist vagina — ideal",  "Narrow urethra, less hospitable"),
    ("pH",                  "Acidic (3.8–4.5) — favours growth", "Less favourable urethral pH"),
    ("Epithelium",          "Large exposed squamous area",  "Less exposed squamous area"),
    ("Outcome",             "75% symptomatic vaginitis",    ">50% asymptomatic; self-clear"),
]
cw2 = [3.8*cm, (W-3.8*cm)/2, (W-3.8*cm)/2]
story += [grid(["Factor", "Females", "Males "], why_rows, cw2, header_color=PURPLE), SP(0.12)]

# Treatment table
tx_rows = [
    ("Drug of choice",   "Metronidazole OR Tinidazole",             "Metronidazole 2 g single dose OR Tinidazole 2 g"),
    ("Alt. regimen",     "Metronidazole 500 mg TDS × 5–7 days",     "Metronidazole 500 mg BD × 7 days"),
    ("Cure rate",        "~90–95%",                                  ">95%"),
    ("Both partners",    "Not routinely required",                   "MANDATORY — treat simultaneously ★"),
    ("Pregnancy",        "Avoid 1st trimester",                      "Avoid 1st trimester"),
    ("Alcohol",          "AVOID — disulfiram reaction",              "AVOID — disulfiram reaction"),
    ("Prevention",       "Boil/filter water; hand hygiene; food safety", "Condoms; reduce partners; STI screening; retest at 3 months"),
]
story += [grid(["", "Giardia", "Trichomonas"], tx_rows, cw, header_color=GREEN), SP(0.18)]

# ══ SECTION 7: VIRULENCE + AMOEBIASIS vs GIARDIASIS ══════════════════════════
story += [banner("⑦ VIRULENCE FACTORS  &  AMOEBIASIS vs GIARDIASIS", TEAL), SP(0.1)]

vf_rows = [
    ("Attachment",     "Ventral sucking disc",                   "Adhesins, laminin-binding proteins, lectin-carbohydrates"),
    ("Cell damage",    "Brush border enzyme disruption",          "Proteinases → contact-dependent cytolysis"),
    ("Immune evasion", "Variant Surface Proteins (VSPs)",         "IgG/IgA degradation; phenotypic antigenic variation"),
    ("Other",          "Cyst wall — environmental resistance",    "200 kDa glycoprotein (contact-independent damage)"),
]
story += [grid(["Factor", "Giardia", "Trichomonas"], vf_rows, cw), SP(0.1)]

story += [two_box(
    "Amoebiasis (E. histolytica) — INVASIVE",
    "• Penetrates intestinal wall<br/>"
    "• Flask-shaped ulcers → bloody diarrhoea<br/>"
    "• Haematogenous spread → liver abscess<br/>"
    "• Fever present<br/>"
    "• Blood & mucus in stool",
    "Giardiasis (G. lamblia) — NON-INVASIVE",
    "• Stays in intestinal lumen only<br/>"
    "• No ulcers, no tissue invasion<br/>"
    "• No systemic spread<br/>"
    "• NO fever<br/>"
    "• NO blood in stool — only fatty diarrhoea",
    lc=RED, rc=TEAL, lbg=RED_LT, rbg=TEAL_LT,
), SP(0.18)]

# ══ SECTION 8: MNEMONICS ══════════════════════════════════════════════════════
story += [banner("⑧ MNEMONICS & EXAM MEMORY TRICKS", AMBER), SP(0.1)]

mn_data = [
    [Paragraph("Mnemonic", H_TH), Paragraph("Hook", H_TH)],
    [Paragraph("Giardia = 2 faces", H_CELLB),
     Paragraph("2 nuclei → 'Giardia smiles at you'  |  Cyst = 4 nuclei = '4 doors to infect'", H_CELL)],
    [Paragraph("Trichomonas = NO CYST", H_CELLB),
     Paragraph("T = Trophozoite-only  |  No cyst → transmitted only by sex / direct contact", H_CELL)],
    [Paragraph("5 Flagella of T. vaginalis", H_CELLB),
     Paragraph("'4 go forward, 1 turns back'  →  4+1 = Five", H_CELL)],
    [Paragraph("METRO goes to BOTH stations", H_CELLB),
     Paragraph("Metronidazole treats BOTH Giardia AND Trichomonas", H_CELL)],
    [Paragraph("Males FLUSH T. vaginalis", H_CELLB),
     Paragraph("Urine = natural flushing system → asymptomatic in males", H_CELL)],
    [Paragraph("Strawberry Cervix", H_CELLB),
     Paragraph("Petechial dots = red seeds on strawberry → Trichomonas vaginitis", H_CELL)],
    [Paragraph("STEA-torrhoea = FAT", H_CELLB),
     Paragraph("Fat floats, pale, greasy → brush border enzymes ↓ by Giardia", H_CELL)],
    [Paragraph("Invasive vs Non-invasive", H_CELLB),
     Paragraph("Amoeba INVADES (liver abscess), Giardia STAYS in lumen (no fever, no blood)", H_CELL)],
    [Paragraph("Feco-oral Flagellate", H_CELLB),
     Paragraph("Giardia = Water-borne  |  Trichomonas = Sex-borne  (different routes!)", H_CELL)],
]
mn_tbl = Table(mn_data, colWidths=[4.2*cm, W-4.2*cm], repeatRows=1)
mn_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), AMBER),
    ("GRID",          (0,0), (-1,-1), 0.3, GREY_MID),
    ("TOPPADDING",    (0,0), (-1,-1), TP),
    ("BOTTOMPADDING", (0,0), (-1,-1), TP),
    ("LEFTPADDING",   (0,0), (-1,-1), LP),
    ("RIGHTPADDING",  (0,0), (-1,-1), LP),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    *[("BACKGROUND", (0,i), (-1,i), WHITE if i%2==1 else AMBER_LT)
      for i in range(1, len(mn_data))],
]))
story += [mn_tbl, SP(0.12)]

# ══ FOOTER ════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width=W, thickness=0.4, color=GREY_MID))
story.append(SP(0.08))
footer = Table([[
    Paragraph("★ = High-yield exam point", H_SMALL),
    Paragraph("Ref: Sherris & Ryan's Medical Microbiology 8th Ed.  |  Goodman & Gilman's Pharmacology", H_SMALL),
    Paragraph("Card 05 · Second Term · AMCB-08", H_SMALL),
]], colWidths=[W/3, W/3, W/3])
footer.setStyle(TableStyle([
    ("TOPPADDING",    (0,0), (-1,-1), 1),
    ("BOTTOMPADDING", (0,0), (-1,-1), 1),
    ("LEFTPADDING",   (0,0), (-1,-1), 2),
    ("RIGHTPADDING",  (0,0), (-1,-1), 2),
]))
story.append(footer)

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"Cheatsheet saved: {OUTPUT}")
Running Command

cd /tmp/workspace/giardia-trichomonas && python create_cheatsheet.py 2>&1

Running Command

ls -lh /tmp/workspace/giardia-trichomonas/

তোমার cheat sheet তৈরি হয়ে গেছে! Download করো:

Cheatsheet Giardia Trichomonas

PDF Document · PDF


Cheat Sheet-এ কী কী আছে (সব একটি পেজে):
SectionContent
① Master Comparison Table১৯টি feature — morphology থেকে treatment পর্যন্ত পাশাপাশি
② Morphology at a GlanceTrophozoite ও Cyst — দুটো color-box-এ side by side
③ PathogenesisStep-by-step, দুটো organism আলাদা color-এ
④ Clinical Features + Diagnosis৪টি box — Clinical (G), Clinical (T), Diagnosis (G), Diagnosis (T)
⑤ Key ConceptsSteatorrhoea · String Test · Strawberry Cervix — সংক্ষেপে
⑥ Why Males Asymptomatic + TreatmentTable + full treatment comparison
⑦ Virulence + Amoebiasis vs GiardiasisInvasive vs Non-invasive clearly
⑧ Mnemonics৯টি memory trick — exam-এ দ্রুত মনে করার জন্য
★ = High-yield exam point দিয়ে সবচেয়ে গুরুত্বপূর্ণ জিনিসগুলো mark করা আছে।
This is a shared conversation. Sign in to Orris to start your own chat.