Questions gulor ans reference book soho dau & English ans gula ektu shortly and easy ans dau Banglay ar ektu bujhay dau
| Form | Size | Key Features |
|---|---|---|
| Trophozoite | 12-50 µm | Motile, ameboid; cytoplasm has outer hyaline + inner granular zone; contains ingested RBCs (pathognomonic); nucleus has central karyosome + fine peripheral chromatin |
| Cyst (mature) | 10-20 µm | 4 nuclei; chromatoid bars with rounded ends; glycogen vacuole |
| Precyst | Intermediate | 1-2 nuclei; transitional form |
| Role | Form | Reason |
|---|---|---|
| Infective | Mature Cyst (4-nucleated) | Acid-resistant wall survives stomach, releases trophozoite in duodenum |
| Pathogenic | Trophozoite | Invades intestinal wall, causes ulcers and tissue destruction |
| Diagnostic | Cyst (in formed stool) / Trophozoite (in diarrheal stool) | Trophozoite with RBC in liquid stool = pathognomonic of active disease |
| Feature | E. histolytica | E. coli | E. dispar |
|---|---|---|---|
| Trophozoite size | 12-50 µm | 20-30 µm | Same as E.h |
| Karyosome | Central, sharp | Eccentric, coarse | Central |
| Peripheral chromatin | Fine, even | Coarse, irregular | Fine, even |
| RBC in cytoplasm | Yes | No | No |
| Cyst nuclei | 1-4 | 1-8 | 1-4 |
| Chromatoid bars | Rounded ends | Splintered/frayed | Rounded |
| Pathogenic | Yes | No | No |
| Feature | Amoebic Dysentery | Bacillary Dysentery (Shigella) |
|---|---|---|
| Macroscopy | ||
| Stool | Scanty, blood-stained mucus; no pus | Copious, mucus + pus + blood |
| Odour | Offensive (foul) | Less offensive |
| Ulcer shape | Flask-shaped, discrete | Superficial, diffuse |
| Microscopy | ||
| Exudate | Mainly RBCs, few pus cells | Pus cells (neutrophils) predominant |
| Charcot-Leyden crystals | Present | Absent |
| Organism | E. histolytica trophozoites with RBC | Shigella bacilli |
| WBC in stool | Few | Many (neutrophils) |
Create a quick reference PDF on E. histolytica pathology
mkdir -p /tmp/workspace/entamoeba-pdf && ls /tmp/workspace/
~/entamoeba-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
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/entamoeba-pdf/Entamoeba_histolytica_Quick_Reference.pdf"
# ── Colors ──────────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3A5C")
MED_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
ACCENT_RED = colors.HexColor("#C0392B")
ACCENT_GRN = colors.HexColor("#1E8449")
ACCENT_ORG = colors.HexColor("#D35400")
PALE_YELLOW = colors.HexColor("#FFFDE7")
PALE_GREEN = colors.HexColor("#E8F5E9")
PALE_RED = colors.HexColor("#FDEDEC")
PALE_GREY = colors.HexColor("#F4F6F7")
WHITE = colors.white
BLACK = colors.black
DARK_GREY = colors.HexColor("#2C3E50")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent="Normal", **kwargs):
return ParagraphStyle(name, parent=styles[parent], **kwargs)
TITLE_ST = make_style("TITLE_ST", fontSize=22, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER,
leading=28, spaceAfter=2)
SUBTITLE_ST = make_style("SUBTITLE_ST", fontSize=11, textColor=LIGHT_BLUE,
fontName="Helvetica", alignment=TA_CENTER,
leading=16)
SECTION_ST = make_style("SECTION_ST", fontSize=12, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_LEFT,
leading=16, leftIndent=6)
BODY_ST = make_style("BODY_ST", fontSize=9, textColor=DARK_GREY,
fontName="Helvetica", leading=13, spaceAfter=3)
BODY_B_ST = make_style("BODY_B_ST", fontSize=9, textColor=DARK_GREY,
fontName="Helvetica-Bold", leading=13)
BULLET_ST = make_style("BULLET_ST", fontSize=9, textColor=DARK_GREY,
fontName="Helvetica", leading=13,
leftIndent=12, firstLineIndent=-8, spaceAfter=2)
SMALL_ST = make_style("SMALL_ST", fontSize=8, textColor=colors.HexColor("#555555"),
fontName="Helvetica", leading=11)
TH_ST = make_style("TH_ST", fontSize=8.5, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER, leading=11)
TD_ST = make_style("TD_ST", fontSize=8, textColor=DARK_GREY,
fontName="Helvetica", alignment=TA_CENTER, leading=11)
TD_L_ST = make_style("TD_L_ST", fontSize=8, textColor=DARK_GREY,
fontName="Helvetica", alignment=TA_LEFT, leading=11)
WARN_ST = make_style("WARN_ST", fontSize=8.5, textColor=ACCENT_RED,
fontName="Helvetica-Bold", leading=12)
KEY_ST = make_style("KEY_ST", fontSize=9, textColor=ACCENT_RED,
fontName="Helvetica-Bold", leading=13)
# ── Helpers ───────────────────────────────────────────────────────────────────
def section_header(title, color=DARK_BLUE):
tbl = Table([[Paragraph(title, SECTION_ST)]], colWidths=[17.6*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
return tbl
def bullet(text, bold_prefix=None):
if bold_prefix:
return Paragraph(f"<bullet>•</bullet> <b>{bold_prefix}</b> {text}", BULLET_ST)
return Paragraph(f"<bullet>•</bullet> {text}", BULLET_ST)
def kv_row(k, v, bg=WHITE):
return [Paragraph(f"<b>{k}</b>", TD_L_ST), Paragraph(v, TD_L_ST)]
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#BDC3C7"), spaceAfter=4, spaceBefore=4)
# ── Page template ─────────────────────────────────────────────────────────────
def add_page_decorations(canvas, doc):
canvas.saveState()
w, h = A4
# Header bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, h - 18*mm, w, 18*mm, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 8)
canvas.setFillColor(WHITE)
canvas.drawString(15*mm, h - 12*mm, "Entamoeba histolytica | Quick Reference")
canvas.drawRightString(w - 15*mm, h - 12*mm, "Parasitology | AMCB-08")
# Footer bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, 0, w, 10*mm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7)
canvas.setFillColor(LIGHT_BLUE)
canvas.drawString(15*mm, 3.5*mm, "Reference: Murray's Medical Microbiology 9e | Jawetz Medical Microbiology 28e")
canvas.drawRightString(w - 15*mm, 3.5*mm, f"Page {doc.page}")
canvas.restoreState()
# ── Build content ─────────────────────────────────────────────────────────────
story = []
# ===== COVER / TITLE BLOCK =====
cover_data = [[
Paragraph("Entamoeba histolytica", TITLE_ST),
], [
Paragraph("Quick Reference Guide | Parasitology (AMCB-08) | Rhizopoda", SUBTITLE_ST),
]]
cover_tbl = Table(cover_data, colWidths=[17.6*cm])
cover_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(cover_tbl)
story.append(Spacer(1, 8))
# ===== Q1 — MORPHOLOGICAL FORMS =====
story.append(section_header("1. Morphological Forms of E. histolytica"))
story.append(Spacer(1, 4))
morph_data = [
[Paragraph("Form", TH_ST), Paragraph("Size", TH_ST), Paragraph("Key Identifying Features", TH_ST)],
[Paragraph("Trophozoite\n(Vegetative)", TD_ST),
Paragraph("12–50 µm", TD_ST),
Paragraph("Motile ameboid form; outer hyaline ectoplasm + inner granular endoplasm; "
"nucleus with CENTRAL karyosome + fine even peripheral chromatin; "
"RBCs in cytoplasm (PATHOGNOMONIC)", TD_L_ST)],
[Paragraph("Pre-cyst", TD_ST),
Paragraph("10–20 µm", TD_ST),
Paragraph("Transitional form; glycogen vacuoles present; chromatoid bars appear; "
"1–2 nuclei; loses motility", TD_L_ST)],
[Paragraph("Mature Cyst\n(Quadrinucleate)", TD_ST),
Paragraph("10–20 µm", TD_ST),
Paragraph("Spherical, thick wall; 4 nuclei (each with central karyosome); "
"chromatoid bars with ROUNDED ends; glycogen vacuole disappears when mature", TD_L_ST)],
]
morph_tbl = Table(morph_data, colWidths=[2.8*cm, 1.8*cm, 13*cm])
morph_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("BACKGROUND", (0,1), (-1,1), PALE_YELLOW),
("BACKGROUND", (0,2), (-1,2), PALE_GREEN),
("BACKGROUND", (0,3), (-1,3), PALE_BLUE := colors.HexColor("#EBF5FB")),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("ROWBACKGROUNDS",(0,0), (-1,-1), [None]),
]))
story.append(morph_tbl)
story.append(Spacer(1, 6))
# ===== Q2 — INFECTIVE / PATHOGENIC / DIAGNOSTIC =====
story.append(section_header("2. Infective, Pathogenic & Diagnostic Forms", MED_BLUE))
story.append(Spacer(1, 4))
ipd_data = [
[Paragraph("Role", TH_ST), Paragraph("Form", TH_ST), Paragraph("Reason", TH_ST)],
[Paragraph("INFECTIVE", TD_ST), Paragraph("Mature Cyst (4-nucleated)", TD_ST),
Paragraph("Acid-resistant cyst wall survives gastric acid; excystation occurs in duodenum releasing trophozoites", TD_L_ST)],
[Paragraph("PATHOGENIC", TD_ST), Paragraph("Trophozoite", TD_ST),
Paragraph("Only form that invades intestinal wall; produces cytotoxins, proteases; causes flask-shaped ulcers and tissue destruction", TD_L_ST)],
[Paragraph("DIAGNOSTIC", TD_ST), Paragraph("Cyst (formed stool)\nTrophozoite (diarrheal stool)", TD_ST),
Paragraph("Trophozoite with RBC in liquid stool = pathognomonic for active invasive disease; cyst in formed stool = carrier state", TD_L_ST)],
]
ipd_tbl = Table(ipd_data, colWidths=[2.6*cm, 4.5*cm, 10.5*cm])
ipd_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("BACKGROUND", (0,1), (0,1), colors.HexColor("#FDEDEC")),
("BACKGROUND", (0,2), (0,2), colors.HexColor("#FEF9E7")),
("BACKGROUND", (0,3), (0,3), colors.HexColor("#E8F8F5")),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("TEXTCOLOR", (0,1), (0,1), ACCENT_RED),
("TEXTCOLOR", (0,2), (0,2), ACCENT_ORG),
("TEXTCOLOR", (0,3), (0,3), ACCENT_GRN),
]))
story.append(ipd_tbl)
story.append(Spacer(1, 6))
# ===== Q3 — HOST & MODE =====
story.append(section_header("3. Host & Mode of Infection", ACCENT_GRN))
story.append(Spacer(1, 4))
host_data = [
[Paragraph("<b>Definitive Host</b>", TD_L_ST), Paragraph("Humans only — no animal reservoir needed for life cycle", TD_L_ST)],
[Paragraph("<b>Intermediate Host</b>", TD_L_ST), Paragraph("NONE", TD_L_ST)],
[Paragraph("<b>Mode of Infection</b>", TD_L_ST), Paragraph("Feco-oral route — ingestion of mature cysts via contaminated water, food, vegetables; mechanical vectors: flies, cockroaches; oral-anal sexual contact", TD_L_ST)],
[Paragraph("<b>Infective Dose</b>", TD_L_ST), Paragraph("As few as 1 cyst can cause infection", TD_L_ST)],
]
host_tbl = Table(host_data, colWidths=[4*cm, 13.6*cm])
host_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), PALE_GREEN),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("ROWBACKGROUNDS",(0,0), (-1,-1), [PALE_GREEN, WHITE, PALE_GREEN, WHITE]),
]))
story.append(host_tbl)
story.append(Spacer(1, 6))
# ===== Q4 — LIFE CYCLE =====
story.append(section_header("4. Life Cycle & Flask-Shaped Ulcer Formation", DARK_BLUE))
story.append(Spacer(1, 4))
lc_steps = [
("1", "Cyst ingested", "Contaminated food/water; cyst survives gastric acid"),
("2", "Excystation", "In duodenum; gastric acid stimulates release of trophozoites; quadrinucleate cyst → 4 trophozoites"),
("3", "Colonization", "Trophozoites reach large intestine (cecum, ascending colon); multiply by binary fission"),
("4", "Invasion", "Trophozoite attaches via Gal/GalNAc lectin → releases cytotoxins → lytic necrosis of epithelium"),
("5", "Flask Ulcer", "Small entry point → narrow neck through mucosa → expanded necrotic area in SUBMUCOSA (flask shape)"),
("6", "Spread", "Lateral spread under mucosa; may penetrate muscularis → serosa → peritoneal cavity; portal vein → LIVER"),
("7", "Encystation", "Trophozoites → precysts → mature cysts → excreted in feces → complete cycle"),
]
lc_data = [[Paragraph(s, TH_ST), Paragraph(n, TH_ST), Paragraph(d, TH_ST)] for s,n,d in [("Step","Stage","Details")]]
for step, name, detail in lc_steps:
bg = PALE_YELLOW if int(step) % 2 == 0 else WHITE
lc_data.append([
Paragraph(f"<b>{step}</b>", TD_ST),
Paragraph(f"<b>{name}</b>", TD_L_ST),
Paragraph(detail, TD_L_ST),
])
lc_tbl = Table(lc_data, colWidths=[1*cm, 3*cm, 13.6*cm])
lc_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
("BACKGROUND", (0,4), (-1,4), colors.HexColor("#FEF9E7")),
("TEXTCOLOR", (0,4), (1,4), ACCENT_RED),
]))
story.append(lc_tbl)
story.append(Spacer(1, 8))
# ===== Q5 — VIRULENCE FACTORS =====
story.append(section_header("5. Virulence Factors", ACCENT_RED))
story.append(Spacer(1, 4))
vf_data = [
[Paragraph("Factor", TH_ST), Paragraph("Mechanism", TH_ST)],
[Paragraph("Gal/GalNAc Lectin", TD_L_ST), Paragraph("Mediates attachment to host colonic epithelium; essential for cytolysis to occur", TD_L_ST)],
[Paragraph("Amebapores", TD_L_ST), Paragraph("Pore-forming proteins that insert into host cell membranes → ion leakage → cell death", TD_L_ST)],
[Paragraph("Cysteine Proteases", TD_L_ST), Paragraph("Degrade extracellular matrix (collagen, fibronectin); inactivate complement; cleave IgA", TD_L_ST)],
[Paragraph("Phospholipase A", TD_L_ST), Paragraph("Degrades membrane phospholipids contributing to tissue damage", TD_L_ST)],
[Paragraph("Neutrophil Lysis", TD_L_ST), Paragraph("Trophozoites kill neutrophils → release toxic granule contents → amplifies tissue destruction", TD_L_ST)],
[Paragraph("Ca²⁺ Dysregulation", TD_L_ST), Paragraph("Irreversible increase in intracellular calcium → host cell membrane permeability changes → cell death", TD_L_ST)],
]
vf_tbl = Table(vf_data, colWidths=[4.5*cm, 13.1*cm])
vf_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), ACCENT_RED),
("ROWBACKGROUNDS",(0,1), (-1,-1), [PALE_RED, WHITE]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
]))
story.append(vf_tbl)
story.append(Spacer(1, 8))
# ===== PAGE BREAK =====
story.append(PageBreak())
# ===== Q6 — LESIONS & PATHOGENESIS =====
story.append(section_header("6. Lesions & Pathogenesis of Amoebiasis", DARK_BLUE))
story.append(Spacer(1, 4))
les_data = [
[Paragraph("Site", TH_ST), Paragraph("Lesion", TH_ST), Paragraph("Notes", TH_ST)],
[Paragraph("Cecum / Ascending colon", TD_L_ST), Paragraph("Flask-shaped ulcer (primary)", TD_L_ST),
Paragraph("Most common primary site; small mucosal opening, wide submucosal necrosis", TD_L_ST)],
[Paragraph("Sigmoid / Rectum", TD_L_ST), Paragraph("Secondary ulcers", TD_L_ST),
Paragraph("Later lesions due to caudal spread", TD_L_ST)],
[Paragraph("Intestinal wall", TD_L_ST), Paragraph("Ameboma", TD_L_ST),
Paragraph("Granulomatous tumor-like mass; may obstruct bowel lumen; mimics carcinoma on imaging", TD_L_ST)],
[Paragraph("Liver (right lobe)", TD_L_ST), Paragraph("Amebic liver abscess", TD_L_ST),
Paragraph("Most common extraintestinal site; ANCHOVY SAUCE (chocolate) pus; via portal vein; serologically positive", TD_L_ST)],
[Paragraph("Lung", TD_L_ST), Paragraph("Pleuropulmonary amoebiasis", TD_L_ST),
Paragraph("Direct extension from liver abscess through diaphragm; right-sided", TD_L_ST)],
[Paragraph("Brain / Spleen", TD_L_ST), Paragraph("Cerebral / Splenic abscess", TD_L_ST),
Paragraph("Rare; haematogenous spread; high mortality", TD_L_ST)],
]
les_tbl = Table(les_data, colWidths=[4*cm, 4*cm, 9.6*cm])
les_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, PALE_GREY, WHITE, PALE_YELLOW, WHITE, PALE_GREY]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("BACKGROUND", (0,4), (-1,4), colors.HexColor("#FEF9E7")),
("FONTNAME", (0,4), (1,4), "Helvetica-Bold"),
]))
story.append(les_tbl)
story.append(Spacer(1, 6))
# ===== Q7 — DIFFERENTIATION =====
story.append(section_header("7. E. histolytica vs E. coli vs E. dispar", DARK_BLUE))
story.append(Spacer(1, 4))
diff_data = [
[Paragraph("Feature", TH_ST), Paragraph("E. histolytica", TH_ST), Paragraph("E. coli", TH_ST), Paragraph("E. dispar", TH_ST)],
[Paragraph("Trophozoite size", TD_L_ST), Paragraph("12–50 µm", TD_ST), Paragraph("20–30 µm", TD_ST), Paragraph("12–50 µm", TD_ST)],
[Paragraph("Karyosome", TD_L_ST), Paragraph("Central, SHARP", TD_ST), Paragraph("Eccentric, coarse", TD_ST), Paragraph("Central, sharp", TD_ST)],
[Paragraph("Peripheral chromatin", TD_L_ST), Paragraph("Fine, even ring", TD_ST), Paragraph("Coarse, irregular/clumped", TD_ST), Paragraph("Fine, even ring", TD_ST)],
[Paragraph("RBC in cytoplasm", TD_L_ST), Paragraph("YES ✓ (pathognomonic)", TD_ST), Paragraph("NO", TD_ST), Paragraph("NO", TD_ST)],
[Paragraph("Cyst nuclei (max)", TD_L_ST), Paragraph("4", TD_ST), Paragraph("8", TD_ST), Paragraph("4", TD_ST)],
[Paragraph("Chromatoid bars", TD_L_ST), Paragraph("ROUNDED ends", TD_ST), Paragraph("Splintered/frayed", TD_ST), Paragraph("Rounded ends", TD_ST)],
[Paragraph("Pathogenic", TD_L_ST), Paragraph("YES", TD_ST), Paragraph("NO", TD_ST), Paragraph("NO", TD_ST)],
[Paragraph("Differentiation from E. dispar", TD_L_ST), Paragraph("PCR, isoenzyme (zymodeme), EIA antigen detection", TD_L_ST), Paragraph("—", TD_ST), Paragraph("Morphologically identical to E.h.", TD_ST)],
]
diff_tbl = Table(diff_data, colWidths=[4.2*cm, 4.5*cm, 4.5*cm, 4.4*cm])
diff_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, PALE_GREY]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TEXTCOLOR", (1,4), (1,4), ACCENT_GRN),
("FONTNAME", (1,4), (1,4), "Helvetica-Bold"),
("TEXTCOLOR", (1,7), (1,7), ACCENT_RED),
("FONTNAME", (1,7), (1,7), "Helvetica-Bold"),
]))
story.append(diff_tbl)
story.append(Spacer(1, 6))
# ===== Q8 — AMOEBOMA & HEPATIC DIAGNOSIS =====
story.append(section_header("8. Amoeboma + Extraintestinal Sites + Hepatic Amoebiasis Diagnosis", ACCENT_ORG))
story.append(Spacer(1, 4))
amoeboma_box = [
[Paragraph("AMOEBOMA", TH_ST)],
[Paragraph("• Granulomatous, tumor-like mass on intestinal wall\n"
"• Due to chronic infection → fibrosis + inflammatory reaction\n"
"• May block bowel lumen → intestinal obstruction\n"
"• Mimics carcinoma on X-ray / colonoscopy → biopsy needed to differentiate", TD_L_ST)],
]
amoeboma_tbl = Table(amoeboma_box, colWidths=[17.6*cm])
amoeboma_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), ACCENT_ORG),
("BACKGROUND", (0,1), (-1,1), colors.HexColor("#FEF5E7")),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(amoeboma_tbl)
story.append(Spacer(1, 4))
ext_col1 = [
Paragraph("<b>Extraintestinal Sites</b>", BODY_B_ST),
Paragraph("1. Liver (right lobe) — MOST COMMON", BULLET_ST),
Paragraph("2. Lung — pleuropulmonary", BULLET_ST),
Paragraph("3. Brain — cerebral abscess", BULLET_ST),
Paragraph("4. Spleen — splenic abscess", BULLET_ST),
Paragraph("5. Skin — cutaneous amoebiasis", BULLET_ST),
]
ext_col2 = [
Paragraph("<b>Hepatic Amoebiasis Diagnosis</b>", BODY_B_ST),
Paragraph("• Ultrasound / CT / MRI: right lobe abscess (elevation of right diaphragm)", BULLET_ST),
Paragraph("• Serology (EIA): strongly positive in >90% cases", BULLET_ST),
Paragraph("• Aspiration: ANCHOVY PASTE pus (bacteriologically sterile)", BULLET_ST),
Paragraph("• Stool microscopy: cysts/trophozoites (often negative)", BULLET_ST),
Paragraph("• Note: amebae are in abscess WALL, NOT in the pus", BULLET_ST),
]
ext_tbl = Table([[ext_col1, ext_col2]], colWidths=[8.5*cm, 9.1*cm])
ext_tbl.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 4),
]))
story.append(ext_tbl)
story.append(Spacer(1, 6))
# ===== Q9 — ANCHOVY SAUCE PUS =====
story.append(section_header("9. Anchovy Sauce Pus — Key Concepts", MED_BLUE))
story.append(Spacer(1, 4))
anch_data = [
[Paragraph("What is it?", TD_L_ST),
Paragraph("Chocolate-brown / dark reddish-brown pus from amebic liver abscess, resembling anchovy sauce in color and consistency", TD_L_ST)],
[Paragraph("Caused by?", TD_L_ST),
Paragraph("Entamoeba histolytica trophozoites — lytic necrosis of hepatic tissue produces liquefied necrotic material", TD_L_ST)],
[Paragraph("Can you isolate parasite from pus?", TD_L_ST),
Paragraph("NO — trophozoites are located at the WALL of the abscess, not in the central necrotic pus. Aspirated pus is bacteriologically sterile and ameba-free.", TD_L_ST)],
[Paragraph("How to isolate?", TD_L_ST),
Paragraph("Biopsy of abscess wall may demonstrate trophozoites; serology (EIA) is the practical diagnostic test", TD_L_ST)],
]
anch_tbl = Table(anch_data, colWidths=[4.5*cm, 13.1*cm])
anch_tbl.setStyle(TableStyle([
("ROWBACKGROUNDS",(0,0), (-1,-1), [LIGHT_BLUE, WHITE]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
("TEXTCOLOR", (0,2), (0,2), ACCENT_RED),
("FONTNAME", (0,2), (0,2), "Helvetica-Bold"),
]))
story.append(anch_tbl)
story.append(Spacer(1, 6))
# ===== Q10 — AMOEBIC vs BACILLARY DYSENTERY =====
story.append(section_header("10. Amoebic vs Bacillary Dysentery", DARK_BLUE))
story.append(Spacer(1, 4))
dys_data = [
[Paragraph("Feature", TH_ST), Paragraph("Amoebic Dysentery\n(E. histolytica)", TH_ST), Paragraph("Bacillary Dysentery\n(Shigella)", TH_ST)],
[Paragraph("MACROSCOPY", TH_ST), Paragraph("", TH_ST), Paragraph("", TH_ST)],
[Paragraph("Stool volume", TD_L_ST), Paragraph("Scanty", TD_ST), Paragraph("Copious", TD_ST)],
[Paragraph("Stool contents", TD_L_ST), Paragraph("Blood + mucus; little pus", TD_ST), Paragraph("Blood + mucus + PUS", TD_ST)],
[Paragraph("Odour", TD_L_ST), Paragraph("Offensive (foul)", TD_ST), Paragraph("Less offensive", TD_ST)],
[Paragraph("Ulcer shape", TD_L_ST), Paragraph("FLASK-shaped, discrete", TD_ST), Paragraph("Superficial, diffuse", TD_ST)],
[Paragraph("MICROSCOPY", TH_ST), Paragraph("", TH_ST), Paragraph("", TH_ST)],
[Paragraph("Predominant cells", TD_L_ST), Paragraph("RBCs > pus cells", TD_ST), Paragraph("Pus cells (neutrophils) predominant", TD_ST)],
[Paragraph("Charcot-Leyden crystals", TD_L_ST), Paragraph("PRESENT", TD_ST), Paragraph("Absent", TD_ST)],
[Paragraph("Organism seen", TD_L_ST), Paragraph("E. histolytica trophozoite with RBC", TD_ST), Paragraph("Shigella bacilli (Gram -ve)", TD_ST)],
[Paragraph("WBC in stool", TD_L_ST), Paragraph("Few", TD_ST), Paragraph("Many (neutrophils)", TD_ST)],
[Paragraph("MOST RELIABLE FINDING ★", TH_ST), Paragraph("Trophozoite with RBC in cytoplasm (PATHOGNOMONIC)", TH_ST), Paragraph("Culture of Shigella", TH_ST)],
]
dys_tbl = Table(dys_data, colWidths=[4.5*cm, 6.5*cm, 6.6*cm])
dys_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("BACKGROUND", (0,1), (-1,1), DARK_BLUE),
("BACKGROUND", (0,6), (-1,6), DARK_BLUE),
("BACKGROUND", (0,11), (-1,11), ACCENT_GRN),
("ROWBACKGROUNDS",(0,2), (-1,5), [WHITE, PALE_GREY]),
("ROWBACKGROUNDS",(0,7), (-1,10), [WHITE, PALE_GREY]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TEXTCOLOR", (0,1), (-1,1), LIGHT_BLUE),
("TEXTCOLOR", (0,6), (-1,6), LIGHT_BLUE),
("FONTNAME", (0,1), (-1,6), "Helvetica-Bold"),
]))
story.append(dys_tbl)
story.append(Spacer(1, 8))
# ===== QUICK MEMORY AIDS =====
story.append(section_header("★ Quick Memory Aids", ACCENT_GRN))
story.append(Spacer(1, 4))
mem_data = [
[Paragraph("Flask ulcer", BODY_B_ST), Paragraph("= small mucosal entry → narrow neck → wide submucosal necrosis", BODY_ST)],
[Paragraph("RBC in trophozoite", BODY_B_ST), Paragraph("= pathognomonic for E. histolytica (E. coli & E. dispar do NOT eat RBCs)", BODY_ST)],
[Paragraph("Cyst rule: 4 vs 8", BODY_B_ST), Paragraph("= E. histolytica max 4 nuclei; E. coli max 8 nuclei", BODY_ST)],
[Paragraph("Chromatoid bars", BODY_B_ST), Paragraph("= E. histolytica ROUNDED ends; E. coli SPLINTERED/frayed ends", BODY_ST)],
[Paragraph("Anchovy pus + no ameba", BODY_B_ST), Paragraph("= ameba at abscess WALL, not in the pus — cannot isolate from aspiration", BODY_ST)],
[Paragraph("E. dispar vs E. histolytica", BODY_B_ST), Paragraph("= morphologically identical; differentiate by PCR / zymodeme / EIA antigen stool test", BODY_ST)],
[Paragraph("Most reliable microscopy", BODY_B_ST), Paragraph("= trophozoite with ingested RBCs in diarrheal stool = pathognomonic for amoebic dysentery", BODY_ST)],
]
mem_tbl = Table(mem_data, colWidths=[4.2*cm, 13.4*cm])
mem_tbl.setStyle(TableStyle([
("ROWBACKGROUNDS", (0,0), (-1,-1), [PALE_GREEN, WHITE]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BDC3C7")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(mem_tbl)
story.append(Spacer(1, 6))
# ===== BUILD =====
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
topMargin=22*mm, bottomMargin=15*mm,
leftMargin=15*mm, rightMargin=15*mm,
)
doc.build(story, onFirstPage=add_page_decorations, onLaterPages=add_page_decorations)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/entamoeba-pdf && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/entamoeba-pdf/Entamoeba_histolytica_Quick_Reference.pdf
Entamoeba histolytica Quick Reference
PDF Document · PDF
| Section | Content |
|---|---|
| Q1 | Morphological forms table (Trophozoite, Pre-cyst, Mature Cyst) with sizes & features |
| Q2 | Infective / Pathogenic / Diagnostic forms - colour coded |
| Q3 | Host & mode of infection |
| Q4 | Life cycle 7-step table + flask ulcer formation |
| Q5 | All 6 virulence factors (Lectin, Amebapores, Proteases etc.) |
| Q6 | All lesions table (flask ulcer → ameboma → liver abscess → lung/brain) |
| Q7 | E. histolytica vs E. coli vs E. dispar - full comparison table |
| Q8 | Amoeboma definition + extraintestinal sites + hepatic amoebiasis diagnosis |
| Q9 | Anchovy sauce pus - what it is, why ameba can't be isolated |
| Q10 | Amoebic vs Bacillary dysentery (Macro + Micro comparison) |
| ★ Memory Aids | 7 key mnemonics for exam (flask ulcer, RBC rule, 4 vs 8 nuclei, etc.) |