I have exam tomorrow this are laq ans this question in most simple way with proper heading and pointwise easy ans
| Feature | Dry Gangrene | Wet Gangrene | Gas Gangrene |
|---|---|---|---|
| Cause | Gradual arterial occlusion (atherosclerosis) | Infection + putrefaction superimposed | Gas-forming organisms (Clostridium) |
| Appearance | Dry, shrivelled, black | Swollen, moist, foul-smelling | Crepitus on palpation |
| Zone of demarcation | Clear, neat | Poorly defined | Spreads rapidly |
| Common in | Elderly, atherosclerosis | Diabetic foot | Diabetic foot, trauma |
| Feature | Gastric Ulcer | Duodenal Ulcer |
|---|---|---|
| Location | Lesser curvature | 1st part duodenum |
| Pain timing | During meals (food-pain) | 2-3 hrs after food, night pain (relieved by food) |
| Acid secretion | Normal or low | High |
| H. pylori | Present | Very common (~95%) |
| Malignancy risk | Yes - must biopsy | Very rare |
| Age | Older | Younger |
| Feature | Benign | Malignant |
|---|---|---|
| History | Long history of PUD | Short history, rapid progression |
| Age | Any | Older |
| Weight loss | Less | Significant |
| Endoscopy | Smooth narrowing, ulcer | Irregular, friable mass |
| Biopsy | Negative | Positive for malignancy |
| Feature | Ulcerative Colitis | Crohn's Disease |
|---|---|---|
| Location | Colon + rectum only (continuous from rectum) | Any part of GIT (mouth to anus) |
| Depth | Mucosal only | Transmural (full thickness) |
| Pattern | Continuous | Skip lesions |
| Rectal involvement | Always | Rectal sparing common |
| Fistulae/Abscesses | Rare | Common |
| Granulomas | No | Yes (non-caseating) |
| Cobblestone | Pseudopolyps | True cobblestone |
| Malignancy risk | High | Low |
| Surgery | Curative | Palliative |
| Type | Nature | Malignant Potential |
|---|---|---|
| Hyperplastic | Non-neoplastic | Nil |
| Tubular adenoma | Neoplastic | Low |
| Tubulovillous adenoma | Neoplastic | Moderate |
| Villous adenoma | Neoplastic | High (40%) |
| Inflammatory pseudopolyp | Non-neoplastic | Nil |
| Hamartomatous | Non-neoplastic | Low |
100 adenomatous polyps carpet the colon
Sources: Bailey & Love's Short Practice of Surgery (28th Ed.), Pye's Surgical Handicraft (22nd Ed.), Robbins Pathologic Basis of Disease, Sleisenger & Fordtran's GI & Liver Disease
Create a study guide PDF I can download and print
ls /home/daytona/workspace/ 2>/dev/null && mkdir -p /home/daytona/workspace/surg…
~/surgery-study-guide/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, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/home/daytona/workspace/surgery-study-guide/Surgery_LAQ_Study_Guide.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm,
leftMargin=1.8*cm,
topMargin=2*cm,
bottomMargin=2*cm,
title="Surgery LAQ Study Guide",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# Custom styles
DARK_BLUE = colors.HexColor("#1a3a5c")
MED_BLUE = colors.HexColor("#1976D2")
LIGHT_BLUE = colors.HexColor("#E3F2FD")
ACCENT = colors.HexColor("#0288D1")
GREEN = colors.HexColor("#2E7D32")
GREEN_BG = colors.HexColor("#E8F5E9")
ORANGE = colors.HexColor("#E65100")
ORANGE_BG = colors.HexColor("#FFF3E0")
GREY_BG = colors.HexColor("#F5F5F5")
WHITE = colors.white
RED = colors.HexColor("#C62828")
cover_title = ParagraphStyle("cover_title", fontSize=28, textColor=WHITE,
spaceAfter=6, alignment=TA_CENTER, fontName="Helvetica-Bold", leading=34)
cover_sub = ParagraphStyle("cover_sub", fontSize=14, textColor=colors.HexColor("#B3E5FC"),
spaceAfter=4, alignment=TA_CENTER, fontName="Helvetica")
cover_note = ParagraphStyle("cover_note", fontSize=10, textColor=colors.HexColor("#E1F5FE"),
spaceAfter=4, alignment=TA_CENTER, fontName="Helvetica-Oblique")
h1 = ParagraphStyle("h1", fontSize=14, textColor=WHITE, spaceAfter=4, spaceBefore=10,
fontName="Helvetica-Bold", alignment=TA_LEFT, leading=18,
backColor=DARK_BLUE, borderPadding=(5,8,5,8), leftIndent=0)
h2 = ParagraphStyle("h2", fontSize=11, textColor=DARK_BLUE, spaceAfter=3, spaceBefore=7,
fontName="Helvetica-Bold", leading=14, borderPadding=(3,6,3,6),
backColor=LIGHT_BLUE, leftIndent=0)
h3 = ParagraphStyle("h3", fontSize=10, textColor=MED_BLUE, spaceAfter=2, spaceBefore=5,
fontName="Helvetica-Bold", leading=13)
body = ParagraphStyle("body", fontSize=9, textColor=colors.black, spaceAfter=2,
fontName="Helvetica", leading=13, alignment=TA_JUSTIFY)
bullet = ParagraphStyle("bullet", fontSize=9, textColor=colors.black, spaceAfter=1,
fontName="Helvetica", leading=13, leftIndent=14, firstLineIndent=-10)
note_box = ParagraphStyle("note_box", fontSize=8.5, textColor=GREEN, spaceAfter=2,
fontName="Helvetica-Oblique", leading=12, leftIndent=8,
backColor=GREEN_BG, borderPadding=(4,6,4,6))
warn_box = ParagraphStyle("warn_box", fontSize=8.5, textColor=ORANGE, spaceAfter=2,
fontName="Helvetica-Bold", leading=12, leftIndent=8,
backColor=ORANGE_BG, borderPadding=(4,6,4,6))
footer_style = ParagraphStyle("footer", fontSize=7.5, textColor=colors.grey,
alignment=TA_CENTER, fontName="Helvetica-Oblique")
def B(text): return f"<b>{text}</b>"
def I(text): return f"<i>{text}</i>"
def C(text, col): return f'<font color="{col}">{text}</font>'
def head1(text):
return [Paragraph(f" {text}", h1), Spacer(1, 3)]
def head2(text):
return [Paragraph(f" {text}", h2)]
def head3(text):
return [Paragraph(text, h3)]
def para(text):
return Paragraph(text, body)
def bp(text):
return Paragraph(f"• {text}", bullet)
def space(n=4):
return Spacer(1, n)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#BBDEFB"), spaceAfter=3)
def make_table(headers, rows, col_widths=None):
data = [headers] + rows
if not col_widths:
n = len(headers)
w = (A4[0] - 3.6*cm) / n
col_widths = [w] * n
tbl = Table(data, colWidths=col_widths, repeatRows=1)
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 8.5),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 8),
("BACKGROUND", (0,1), (-1,-1), GREY_BG),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#B0BEC5")),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("WORDWRAP", (0,0), (-1,-1), True),
]))
return tbl
# ─── PAGE HEADER / FOOTER ─────────────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
# header bar
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, A4[1]-1.1*cm, A4[0], 1.1*cm, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 9)
canvas.setFillColor(WHITE)
canvas.drawString(1.8*cm, A4[1]-0.75*cm, "SURGERY LAQ STUDY GUIDE")
canvas.drawRightString(A4[0]-1.8*cm, A4[1]-0.75*cm, "Arterial | Lymphatic | Peritoneum | GIT")
# footer
canvas.setFillColor(colors.HexColor("#90A4AE"))
canvas.rect(0, 0, A4[0], 1.0*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7.5)
canvas.setFillColor(WHITE)
canvas.drawCentredString(A4[0]/2, 0.35*cm, f"Page {doc.page} | For exam preparation only | Sources: Bailey & Love, Pye's Surgical Handicraft, Robbins Pathology")
canvas.restoreState()
def on_first_page(canvas, doc):
# No header/footer on cover
pass
# ─── CONTENT ──────────────────────────────────────────────────────────────────
story = []
# ═══════════════════ COVER PAGE ═══════════════════════════════════════════════
cover_bg = ParagraphStyle("cb", fontSize=10, backColor=DARK_BLUE, leading=1)
# Blue cover rectangle using table trick
cover_data = [[""]]
cover_tbl = Table(cover_data, colWidths=[A4[0]-3.6*cm], rowHeights=[4*cm])
cover_tbl.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), DARK_BLUE),
("GRID",(0,0),(-1,-1),0,DARK_BLUE),
]))
title_style = ParagraphStyle("ts", fontSize=30, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, leading=36, spaceAfter=6)
sub_style = ParagraphStyle("ss", fontSize=14, textColor=colors.HexColor("#B3E5FC"),
fontName="Helvetica", alignment=TA_CENTER, leading=18, spaceAfter=4)
date_style = ParagraphStyle("ds", fontSize=10, textColor=colors.HexColor("#80DEEA"),
fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=2)
story.append(Spacer(1, 2.5*cm))
story.append(Paragraph("SURGERY", title_style))
story.append(Paragraph("LAQ Study Guide", sub_style))
story.append(Spacer(1, 0.4*cm))
story.append(HRFlowable(width="60%", thickness=2, color=ACCENT, spaceAfter=8,
hAlign="CENTER"))
story.append(Paragraph("Arterial System • Lymphatic System", sub_style))
story.append(Paragraph("Peritoneum • Stomach • Intestines", sub_style))
story.append(Spacer(1, 0.6*cm))
story.append(Paragraph("Exam Preparation Edition | July 2026", date_style))
story.append(Spacer(1, 1.0*cm))
toc_box_data = [[
Paragraph(
"<b>Topics Covered:</b><br/>"
"1. Gangrene – Types & Management<br/>"
"2. Hodgkin's Disease & Non-Hodgkin's Lymphoma<br/>"
"3. Burkitt's Tumour & Sarcoidosis<br/>"
"4. Peritonitis<br/>"
"5. Gastritis<br/>"
"6. Peptic Ulcer Disease<br/>"
"7. Gastric Outlet Obstruction<br/>"
"8. Haematemesis<br/>"
"9. Gastric Carcinoma<br/>"
"10. Ulcerative Colitis<br/>"
"11. Crohn's Disease<br/>"
"12. Small Intestinal Malignancies<br/>"
"13. Intestinal Polyposis",
ParagraphStyle("toc_p", fontSize=9.5, textColor=DARK_BLUE,
fontName="Helvetica", leading=16))
]]
toc_tbl = Table(toc_box_data, colWidths=[12*cm])
toc_tbl.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), LIGHT_BLUE),
("BOX",(0,0),(-1,-1),1.5,MED_BLUE),
("LEFTPADDING",(0,0),(-1,-1),12),
("RIGHTPADDING",(0,0),(-1,-1),12),
("TOPPADDING",(0,0),(-1,-1),12),
("BOTTOMPADDING",(0,0),(-1,-1),12),
]))
story.append(toc_tbl)
story.append(Spacer(1, 1*cm))
story.append(Paragraph(I("Compiled from: Bailey & Love's Surgery (28th Ed.), Pye's Surgical Handicraft (22nd Ed.), Robbins Pathology"), footer_style))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# Q1 — GANGRENE
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q1. GANGRENE – Types & Management")
story += head2("Definition")
story.append(bp("Death of macroscopic tissue with black discoloration due to breakdown of haemoglobin → iron sulphide"))
story.append(bp("Usually affects the most distal part of a limb due to arterial obstruction (thrombosis / embolus / arteritis)"))
story.append(space())
story += head2("Types")
story.append(make_table(
[B("Feature"), B("Dry Gangrene"), B("Wet Gangrene"), B("Gas Gangrene")],
[
["Cause", "Gradual arterial occlusion (atherosclerosis)", "Infection + putrefaction superimposed", "Gas-forming organisms (Clostridium)"],
["Appearance", "Dry, shrivelled, black", "Swollen, moist, foul-smelling", "Crepitus on palpation"],
["Demarcation", "Clear, neat", "Poorly defined, proximal", "Spreads rapidly"],
["Common in", "Elderly, atherosclerosis", "Diabetic foot", "Diabetic foot, trauma"],
],
col_widths=[3*cm, 4.5*cm, 4.5*cm, 4.5*cm]
))
story.append(space())
story += head2("Management")
story.append(bp(B("Conservative:") + " Clean wound; wait for line of demarcation to form"))
story.append(bp(B("Vascular surgery:") + " Embolectomy / bypass graft to restore blood supply"))
story.append(bp(B("Amputation:") + " Once line of demarcation is clear"))
story.append(bp(B("Antibiotics:") + " Penicillin + Metronidazole for wet/gas gangrene"))
story.append(bp(B("Hyperbaric oxygen:") + " For gas gangrene"))
story.append(bp(B("Debridement:") + " Urgent for gas gangrene (surgical emergency)"))
story.append(bp(B("Diabetic control:") + " Strict blood glucose management"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q2 — HODGKIN'S & NHL
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q2. HODGKIN'S DISEASE & NON-HODGKIN'S LYMPHOMA")
story += head2("Hodgkin's Lymphoma (HL) – Pathology")
story.append(bp("Malignancy of lymphoid tissue; " + B("Reed-Sternberg (RS) cell") + " is hallmark – large binucleated 'owl-eye' cell"))
story.append(bp("4 subtypes: Nodular sclerosis (most common), Mixed cellularity, Lymphocyte-rich, Lymphocyte-depleted"))
story.append(space(3))
story += head3("Clinical Features")
story.append(bp("Painless enlargement of lymph nodes (usually cervical first)"))
story.append(bp(B("B symptoms:") + " Fever, night sweats, weight loss >10%"))
story.append(bp("Pel-Ebstein fever (cyclical fever)"))
story.append(bp("Alcohol-induced pain at nodal sites (characteristic of HL)"))
story.append(bp("Pruritis, splenomegaly, hepatomegaly"))
story.append(space(3))
story += head3("Ann Arbor Staging")
story.append(make_table(
[B("Stage"), B("Description")],
[
["Stage I", "Single lymph node region"],
["Stage II", "Two or more regions, same side of diaphragm"],
["Stage III", "Both sides of diaphragm involved"],
["Stage IV", "Diffuse: liver, bone marrow involved"],
["A/B suffix", "A = no B symptoms; B = B symptoms present"],
],
col_widths=[3*cm, 13.5*cm]
))
story.append(space(3))
story += head3("Investigations")
story.append(bp("Excisional lymph node biopsy (gold standard)"))
story.append(bp("CBC: anaemia, elevated ESR; LDH, uric acid elevated"))
story.append(bp("CT chest/abdomen/pelvis for staging; PET scan"))
story.append(bp("Bone marrow biopsy in advanced disease"))
story.append(space(3))
story += head3("Treatment")
story.append(bp("Stage I & II: ABVD chemotherapy (Adriamycin, Bleomycin, Vinblastine, Dacarbazine) + Radiotherapy"))
story.append(bp("Stage III & IV: ABVD or BEACOPP"))
story.append(bp("Prognosis: Excellent – >80% 5-year survival"))
story.append(space(5))
story += head2("Non-Hodgkin's Lymphoma (NHL)")
story.append(bp("Heterogeneous group; arise from B cells (85%) or T cells (15%)"))
story.append(bp("NO Reed-Sternberg cells; extra-nodal involvement common"))
story.append(make_table(
[B("Grade"), B("Type"), B("Example")],
[
["Low-grade (indolent)", "Follicular lymphoma", "Good prognosis, incurable"],
["High-grade (aggressive)", "DLBCL", "Most common; potentially curable"],
["Very high-grade", "Burkitt's lymphoma", "Extremely aggressive"],
],
col_widths=[5*cm, 5*cm, 6.5*cm]
))
story.append(space(3))
story.append(bp(B("Treatment:") + " Rituximab (anti-CD20) + CHOP chemotherapy (R-CHOP); Stem cell transplant for relapse"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q3 — BURKITT'S & SARCOIDOSIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q3. BURKITT'S TUMOUR & SARCOIDOSIS")
story += head2("Burkitt's Lymphoma – Pathology")
story.append(bp("Highly aggressive B-cell NHL; " + B("t(8;14) translocation") + " → c-MYC oncogene overexpression"))
story.append(bp(B("'Starry sky' appearance") + " on histology (macrophages eating apoptotic tumour cells)"))
story.append(bp("Associated with EBV (Epstein-Barr Virus)"))
story.append(space(3))
story += head3("Types & C/F")
story.append(make_table(
[B("Type"), B("Association"), B("Clinical Features")],
[
["Endemic (African)", "EBV; children", "Jaw / facial bone swelling"],
["Sporadic", "No EBV", "Abdominal mass (ileocaecal), ascites"],
["Immunodeficiency-related", "HIV", "Any site"],
],
col_widths=[4.5*cm, 4.5*cm, 7.5*cm]
))
story.append(space(3))
story += head3("Investigations & Diagnosis")
story.append(bp("Biopsy: starry sky pattern; Ki-67 nearly 100%"))
story.append(bp("LDH very elevated; FISH for c-MYC rearrangement; CD20+, CD10+"))
story.append(bp(B("Treatment:") + " Intensive chemo (CODOX-M/IVAC) + CNS prophylaxis"))
story.append(space(5))
story += head2("Sarcoidosis")
story.append(bp("Multisystem granulomatous disease of unknown cause"))
story.append(bp(B("Hallmark:") + " Non-caseating granulomas on biopsy"))
story.append(space(3))
story += head3("C/F (Multi-System)")
story.append(make_table(
[B("System"), B("Manifestation")],
[
["Lungs", "Bilateral hilar lymphadenopathy (BHL), pulmonary infiltrates, dyspnoea"],
["Skin", "Erythema nodosum, lupus pernio"],
["Eyes", "Anterior uveitis (most common eye manifestation)"],
["Joints", "Arthralgia, polyarthritis"],
["Nervous", "Facial palsy, peripheral neuropathy"],
["Heart", "Arrhythmias, heart block"],
["Kidneys", "Hypercalciuria, renal calculi"],
],
col_widths=[4*cm, 12.5*cm]
))
story.append(space(3))
story += head3("Diagnosis")
story.append(bp("CXR: Bilateral hilar lymphadenopathy; Serum ACE elevated (~60%); Serum calcium elevated"))
story.append(bp("BAL: CD4/CD8 ratio >3.5"))
story.append(bp(B("Gold standard:") + " Tissue biopsy showing non-caseating granuloma"))
story.append(bp(B("Löfgren syndrome:") + " BHL + erythema nodosum + arthritis (acute sarcoidosis)"))
story.append(space(3))
story += head3("Treatment")
story.append(bp("Mild: Observation"))
story.append(bp("Symptomatic: Oral corticosteroids (prednisolone) – first line"))
story.append(bp("Steroid-sparing: Methotrexate, Azathioprine"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q4 — PERITONITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q4. PERITONITIS")
story += head2("Types")
story.append(make_table(
[B("Type"), B("Definition"), B("Organisms")],
[
["Primary (SBP)", "No obvious intra-abdominal source; occurs in cirrhosis/nephrotic syndrome", "E. coli, Klebsiella, Streptococcus"],
["Secondary", "Perforation of viscus, trauma, appendicitis, etc.", "Mixed (E. coli, Bacteroides, Enterococcus)"],
["Tertiary", "Persistent despite treatment", "Resistant organisms, fungi"],
],
col_widths=[3.5*cm, 8*cm, 5*cm]
))
story.append(space(4))
story += head2("Pathophysiology")
story.append(bp("Bacterial contamination → inflammatory response → fluid exudation → ileus → sepsis → multi-organ failure"))
story.append(space(3))
story += head2("C/F")
story.append(bp("Sudden severe abdominal pain (worse on movement)"))
story.append(bp(B("Rigidity") + " (board-like abdomen) – guarding"))
story.append(bp(B("Rebound tenderness") + " (Blumberg's sign)"))
story.append(bp("Absent bowel sounds (paralytic ileus)"))
story.append(bp("Fever, tachycardia, hypotension (septic shock in late stages)"))
story.append(bp("Shallow breathing (diaphragmatic splinting)"))
story.append(space(3))
story += head2("Investigations + Role of Paracentesis")
story.append(bp("CBC: Leucocytosis; CRP elevated"))
story.append(bp("CXR: " + B("Free gas under diaphragm") + " (perforation)"))
story.append(bp("CT abdomen: Best investigation – identifies cause and extent"))
story.append(bp(B("Paracentesis (Diagnostic):") + " WBC >250 cells/mm³ (PMN) → confirms SBP; Culture & sensitivity; Protein, glucose, LDH"))
story.append(space(3))
story += head2("Indications for Laparotomy")
story.append(bp("Perforated viscus / bowel strangulation"))
story.append(bp("Failure of conservative management / worsening clinical condition"))
story.append(space(3))
story += head2("Complications")
story.append(bp("Septicaemia / septic shock / multi-organ failure"))
story.append(bp("Residual abscess; intestinal adhesions; obstruction"))
story.append(space(3))
story += head2("Treatment")
story.append(bp(B("Conservative:") + " IV fluids, broad-spectrum IV antibiotics, NGT, catheter"))
story.append(bp(B("Surgical:") + " Peritoneal washout + repair/remove source (e.g., Graham's patch for perforation, appendicectomy)"))
story.append(bp(B("SBP:") + " IV Cefotaxime; prophylaxis with oral Norfloxacin"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q5 — GASTRITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q5. GASTRITIS")
story += head2("Classification / Types")
story.append(make_table(
[B("Type"), B("Cause"), B("Key Features")],
[
["H. pylori (Type B)", "H. pylori infection", "Most common; antrum; peptic ulcer, cancer risk"],
["Autoimmune (Type A)", "Anti-parietal cell antibodies", "Body/fundus; achlorhydria; pernicious anaemia"],
["Erosive/Stress", "NSAIDs, alcohol, burns, head injury", "Curling's ulcer (burns), Cushing's (head injury)"],
["Reflux gastritis", "Bile reflux, post-gastric surgery", "Distinct histology; after gastrectomy"],
["Eosinophilic", "Allergic", "Eosinophilic infiltrate on biopsy"],
],
col_widths=[3.5*cm, 6.5*cm, 6.5*cm]
))
story.append(space(3))
story += head2("Role of H. pylori")
story.append(bp("Gram-negative spiral organism; produces " + B("urease") + " → ammonia → damages mucosa"))
story.append(bp("Causes chronic antral gastritis → peptic ulcer → gastric cancer"))
story.append(bp("Dx: Urea breath test, CLO test (rapid urease test on biopsy), stool antigen, serology"))
story.append(space(3))
story += head2("Role of NSAIDs")
story.append(bp("Inhibit COX-1 → ↓ prostaglandins → ↓ mucus & bicarbonate → mucosal damage"))
story.append(space(3))
story += head2("Investigations & Treatment")
story.append(bp("Upper GI Endoscopy + biopsy; CLO test"))
story.append(bp(B("H. pylori eradication:") + " Triple therapy – PPI + Amoxicillin + Clarithromycin (14 days)"))
story.append(bp("NSAIDs-related: Stop NSAID + PPI; Autoimmune: B12 injections IM"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q6 — PEPTIC ULCER
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q6. PEPTIC ULCER DISEASE")
story += head2("Gastric vs Duodenal Ulcer")
story.append(make_table(
[B("Feature"), B("Gastric Ulcer"), B("Duodenal Ulcer")],
[
["Location", "Lesser curvature of stomach", "1st part of duodenum"],
["Pain", "During meals (food-pain)", "2–3 hrs after food; night pain (relieved by food)"],
["Acid", "Normal or low", "High"],
["H. pylori", "Present", "Very common (~95%)"],
["Malignancy", "Yes – must always biopsy", "Very rare"],
["Common age", "Older patients", "Younger adults"],
],
col_widths=[3.5*cm, 7*cm, 6*cm]
))
story.append(space(3))
story += head2("Etiological Factors")
story.append(bp(B("Most important:") + " H. pylori, NSAIDs"))
story.append(bp("Smoking, alcohol, stress (ICU ulcers)"))
story.append(bp("Zollinger-Ellison syndrome (gastrinoma – very high acid)"))
story.append(bp("Blood group O – increased risk"))
story.append(space(3))
story += head2("Indications for Surgical Intervention")
story.append(bp("Perforation (emergency – Graham's omental patch)"))
story.append(bp("Haemorrhage not responding to endoscopic treatment"))
story.append(bp("Obstruction (pyloric stenosis)"))
story.append(bp("Suspected malignancy; failure of medical treatment"))
story.append(space(3))
story += head2("Complications")
story.append(bp("Perforation | Haemorrhage | Pyloric stenosis | Penetration (into pancreas) | Malignant change"))
story.append(space(3))
story += head2("Preventive Strategies")
story.append(bp("H. pylori eradication; avoid NSAIDs (use COX-2 inhibitors + PPI if needed)"))
story.append(bp("Stop smoking and alcohol; PPI prophylaxis for high-risk patients"))
story.append(space(3))
story += head2("Treatment")
story.append(bp(B("Medical:") + " PPI (Omeprazole) + H. pylori eradication (triple therapy)"))
story.append(bp(B("Bleeding:") + " Endoscopic adrenaline injection, clips, heater probe; surgery if fails"))
story.append(bp(B("Perforation:") + " Emergency laparotomy + Graham's omental patch closure"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q7 — GASTRIC OUTLET OBSTRUCTION
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q7. GASTRIC OUTLET OBSTRUCTION (GOO)")
story += head2("Common Causes")
story.append(bp(B("Benign:") + " PUD with pyloric scarring (most common), hypertrophic pyloric stenosis (infants), Crohn's disease"))
story.append(bp(B("Malignant:") + " Carcinoma of stomach antrum, carcinoma of head of pancreas, duodenal carcinoma"))
story.append(space(3))
story += head2("C/F")
story.append(bp(B("Projectile vomiting") + " – non-bilious; contains old food eaten days ago"))
story.append(bp("Epigastric fullness, distension, weight loss, dehydration"))
story.append(bp(B("Succussion splash") + " (fluid sloshing on shaking patient's abdomen)"))
story.append(bp("Visible gastric peristalsis; " + B("Metabolic alkalosis") + " (hypochloraemic, hypokalaemic)"))
story.append(space(3))
story += head2("Benign vs Malignant GOO")
story.append(make_table(
[B("Feature"), B("Benign"), B("Malignant")],
[
["History", "Long history of PUD symptoms", "Short history, rapid progression"],
["Weight loss", "Less prominent", "Significant"],
["Endoscopy", "Smooth narrowing, adjacent ulcer", "Irregular, friable mass"],
["Biopsy", "Negative for malignancy", "Positive for carcinoma"],
],
col_widths=[3.5*cm, 7*cm, 6*cm]
))
story.append(space(3))
story += head2("Surgical Options")
story.append(bp(B("Benign:") + " Endoscopic balloon dilatation OR Gastrojejunostomy / Antrectomy + vagotomy"))
story.append(bp(B("Malignant:") + " Gastrectomy (curative) OR Gastrojejunostomy (palliative bypass)"))
story.append(space(3))
story += head2("Conservative / Home Treatment")
story.append(bp("NG tube decompression; IV fluids + electrolyte correction (replace Cl⁻ and K⁺)"))
story.append(bp("PPI, H. pylori eradication; nutritional support; endoscopic dilatation for benign stricture"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q8 — HAEMATEMESIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q8. HAEMATEMESIS (Upper GI Bleeding)")
story += head2("Common Causes")
story.append(make_table(
[B("Cause"), B("Notes")],
[
["Peptic ulcer disease", "Most common (~50%); duodenal > gastric"],
["Oesophageal varices", "Portal hypertension; liver cirrhosis; massive bleed"],
["Mallory-Weiss tear", "Forceful vomiting; mucosal tear at GOJ"],
["Erosive gastritis", "NSAIDs, alcohol, stress"],
["Gastric carcinoma", "Often with weight loss, chronic symptoms"],
["Dieulafoy's lesion", "Abnormal submucosal artery; massive bleed"],
],
col_widths=[5.5*cm, 11*cm]
))
story.append(space(3))
story += head2("Management – ABCDE Resuscitation First")
story.append(bp("Airway, Breathing, Circulation; 2 large-bore IV cannulas"))
story.append(bp("IV fluids (crystalloids) → blood transfusion; cross-match; CBC, LFT, coagulation"))
story.append(bp("Foley catheter (monitor urine output); NGT (assess bleed)"))
story.append(space(3))
story += head2("Endoscopic Techniques for Haemorrhage Control")
story.append(bp("Endoscopic injection: Adrenaline (1:10,000) + sclerosant"))
story.append(bp("Haemoclips; heater probe / electrocautery (thermal therapy)"))
story.append(bp("Band ligation for varices"))
story.append(bp("TIPSS (Transjugular Intrahepatic Portosystemic Shunt) – refractory variceal bleed"))
story.append(space(3))
story += head2("Pharmacological (Home) Therapy")
story.append(bp("PPI IV infusion (Pantoprazole / Omeprazole)"))
story.append(bp("Octreotide / Somatostatin – variceal bleed"))
story.append(bp("Antibiotics (Norfloxacin) – variceal bleed in cirrhosis"))
story.append(bp("H. pylori eradication if PUD confirmed"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q9 — GASTRIC CARCINOMA
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q9. GASTRIC CARCINOMA")
story += head2("Epidemiology & Risk Factors")
story.append(bp("5th most common cancer worldwide; high incidence in Japan, East Asia, Eastern Europe"))
story.append(bp("Male > Female (2:1); peak age 50–70 years"))
story.append(bp(B("RF:") + " H. pylori (most important), high salt/smoked food diet, smoking, atrophic gastritis, pernicious anaemia, family history, blood group A, prior gastric surgery"))
story.append(space(3))
story += head2("Types")
story.append(make_table(
[B("Type"), B("Features"), B("Prognosis")],
[
["Intestinal type", "Well-differentiated; expanding pattern; distal stomach", "Better"],
["Diffuse type", "Poorly differentiated; infiltrates wall; Linitis plastica (leather bottle stomach)", "Worse"],
],
col_widths=[4*cm, 9*cm, 3.5*cm]
))
story.append(space(3))
story += head2("C/F – Metastatic Signs (Imp!)")
story.append(bp(B("Virchow's node") + " – left supraclavicular lymph node (Troisier's sign)"))
story.append(bp(B("Sister Mary Joseph's nodule") + " – umbilical metastasis"))
story.append(bp(B("Blumer's shelf") + " – rectal shelf on PR examination"))
story.append(bp(B("Krukenberg tumour") + " – ovarian metastasis"))
story.append(space(3))
story += head2("Diagnosis & TNM Staging")
story.append(bp("Upper GI Endoscopy + biopsy (gold standard); CT CAP; EUS for T-staging; PET scan"))
story.append(make_table(
[B("TNM"), B("Description")],
[
["T1", "Mucosa / submucosa (early gastric cancer)"],
["T2", "Muscularis propria"],
["T3", "Subserosal/serosa"],
["T4", "Adjacent organs"],
["N0/N1/N2/N3", "0 / 1–2 / 3–6 / 7+ regional nodes"],
["M0/M1", "No / distant metastasis"],
],
col_widths=[3.5*cm, 13*cm]
))
story.append(space(3))
story += head2("Treatment")
story.append(bp(B("Curative:") + " Total/subtotal gastrectomy + D2 lymphadenectomy"))
story.append(bp(B("Perioperative chemo:") + " FLOT regimen (preferred); ECF (Epirubicin, Cisplatin, 5-FU)"))
story.append(bp(B("Targeted:") + " Trastuzumab for HER2-positive gastric cancer"))
story.append(bp(B("Palliative:") + " Gastrojejunostomy, stenting, palliative chemo/RT"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q10 — ULCERATIVE COLITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q10. ULCERATIVE COLITIS (UC)")
story += head2("UC vs Crohn's Disease – Key Differences")
story.append(make_table(
[B("Feature"), B("Ulcerative Colitis"), B("Crohn's Disease")],
[
["Location", "Colon + rectum only", "Any part of GIT (mouth to anus)"],
["Depth", "Mucosal only", "Transmural (full thickness)"],
["Pattern", "Continuous from rectum", "Skip lesions"],
["Rectal involvement", "Always present", "Rectal sparing common"],
["Fistulae/abscesses", "Rare", "Common"],
["Granulomas", "Absent", "Non-caseating granulomas"],
["Malignancy risk", "High (UC)", "Lower (CD)"],
["Surgery", "Curative (proctocolectomy)", "Palliative (recurrence)"],
],
col_widths=[4*cm, 6.5*cm, 6*cm]
))
story.append(space(3))
story += head2("Pathology & C/F")
story.append(bp("Mucosal oedema, ulceration, friable mucosa; inflammatory pseudopolyps"))
story.append(bp(B("Main symptom:") + " Bloody diarrhoea with mucus; abdominal cramps; tenesmus"))
story.append(bp("Weight loss, anaemia, fever"))
story.append(space(3))
story += head2("Extra-Intestinal Manifestations")
story.append(make_table(
[B("System"), B("Manifestation")],
[
["Joints", "Peripheral arthropathy, ankylosing spondylitis"],
["Eyes", "Uveitis, episcleritis"],
["Skin", "Erythema nodosum, pyoderma gangrenosum"],
["Liver", "Primary Sclerosing Cholangitis (PSC) – most specific for UC"],
],
col_widths=[4*cm, 12.5*cm]
))
story.append(space(3))
story += head2("Complications")
story.append(bp(B("Toxic megacolon") + " – colon dilates >6 cm; life-threatening; emergency colectomy"))
story.append(bp("Perforation; massive haemorrhage; " + B("colorectal carcinoma") + " (~20% risk after 10 years)"))
story.append(space(3))
story += head2("Diagnosis")
story.append(bp("Colonoscopy + biopsy: crypt abscesses, goblet cell depletion"))
story.append(bp("Barium enema: loss of haustra, " + B("'lead-pipe' colon")))
story.append(bp("AXR: rule out toxic megacolon; CRP, ESR, CBC"))
story.append(space(3))
story += head2("Medical Treatment")
story.append(bp(B("Mild-moderate:") + " 5-ASA (Mesalazine, Sulphasalazine) – oral + enema"))
story.append(bp(B("Moderate-severe:") + " Systemic corticosteroids (prednisolone)"))
story.append(bp(B("Maintenance:") + " Azathioprine / 6-Mercaptopurine"))
story.append(bp(B("Biologics:") + " Infliximab (anti-TNF), Vedolizumab"))
story.append(bp(B("Surgery (curative):") + " Total proctocolectomy + ileal pouch-anal anastomosis (IPAA)"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q11 — CROHN'S DISEASE
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q11. CROHN'S DISEASE")
story += head2("Epidemiology & R/F")
story.append(bp("Bimodal peak: 15–30 and 55–70 years; more common in developed countries"))
story.append(bp(B("Smoking increases risk") + " (opposite to UC where smoking is protective!)"))
story.append(bp("Genetic: NOD2 mutation, HLA associations; Jewish populations higher risk"))
story.append(space(3))
story += head2("Pathophysiology")
story.append(bp("Transmural inflammation → fissures → fistulae and strictures"))
story.append(bp("Skip lesions; " + B("non-caseating granulomas") + " (hallmark histology)"))
story.append(bp("Terminal ileum most commonly affected site"))
story.append(space(3))
story += head2("C/F & Extra-Intestinal Manifestations")
story.append(bp("Chronic diarrhoea (may not be bloody); RIF pain; weight loss; fever"))
story.append(bp("Perianal disease: fistulae, abscesses, skin tags"))
story.append(bp("Same EIM as UC + extra: gallstones, renal oxalate calculi"))
story.append(space(3))
story += head2("Diagnosis")
story.append(bp("Colonoscopy + ileoscopy + biopsy (transmural granulomas)"))
story.append(bp(B("Kantor's string sign") + " on barium: terminal ileal stricture"))
story.append(bp("MRI enterography; ASCA positive; calprotectin elevated"))
story.append(space(3))
story += head2("CD vs Other Causes of Chronic Diarrhoea")
story.append(make_table(
[B("Condition"), B("Differentiating Feature")],
[
["Intestinal TB", "Caseating granulomas; AFB positive; CBNAAT positive"],
["IBS", "No inflammation; normal colonoscopy; young female"],
["Coeliac disease", "Anti-TTG antibody; villous atrophy; proximal small bowel"],
["Infective", "Acute onset; stool culture positive"],
],
col_widths=[5*cm, 11.5*cm]
))
story.append(space(3))
story += head2("Complications")
story.append(bp("Fistulae (entero-enteral, enterocutaneous, enterovesical)"))
story.append(bp("Strictures → bowel obstruction; intra-abdominal abscesses"))
story.append(bp("Malabsorption; B12 deficiency; anaemia; short bowel syndrome"))
story.append(space(3))
story += head2("Treatment")
story.append(bp(B("Induction:") + " Corticosteroids (prednisolone) or Budesonide"))
story.append(bp(B("Maintenance:") + " Azathioprine / Methotrexate"))
story.append(bp(B("Biologics:") + " Infliximab, Adalimumab (anti-TNF) for moderate-severe disease"))
story.append(bp(B("Perianal disease:") + " Metronidazole + Ciprofloxacin"))
story.append(bp(B("Surgery:") + " Resection of affected segment (not curative – disease recurs)"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q12 — SMALL INTESTINAL MALIGNANCIES
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q12. SMALL INTESTINAL MALIGNANCIES")
story += head2("Epidemiology & R/F")
story.append(bp("Rare (2–3% of all GI malignancies); more common in males, age >60"))
story.append(bp(B("RF:") + " Crohn's disease, coeliac disease, FAP, Lynch syndrome, Peutz-Jeghers syndrome"))
story.append(space(3))
story += head2("Types")
story.append(make_table(
[B("Type"), B("Location"), B("Key Feature")],
[
["Adenocarcinoma (most common, ~40%)", "Duodenum / proximal jejunum", "Adenoma-carcinoma sequence"],
["Carcinoid / NETs", "Ileum (most common)", "Serotonin excess → carcinoid syndrome"],
["GIST", "Anywhere in GIT", "c-KIT mutation; CD117+"],
["Lymphoma", "Ileum / jejunum", "Associated with Crohn's, coeliac disease"],
],
col_widths=[5.5*cm, 4.5*cm, 6.5*cm]
))
story.append(space(3))
story += head2("Carcinoid Syndrome")
story.append(bp("Flushing, watery diarrhoea, bronchospasm, right-sided valvular disease"))
story.append(bp("Diagnosed by: " + B("24-hr urine 5-HIAA") + ", serum Chromogranin A, Octreotide scan"))
story.append(space(3))
story += head2("Diagnosis & Treatment")
story.append(bp("CT enterography; capsule endoscopy; double-balloon enteroscopy; biopsy"))
story.append(bp(B("Adenocarcinoma:") + " Wide local resection + lymph node dissection + FOLFOX chemotherapy"))
story.append(bp(B("Carcinoid/NETs:") + " Resection + Octreotide/Lanreotide + PRRT"))
story.append(bp(B("GIST:") + " Resection + Imatinib (KIT inhibitor – targeted therapy)"))
story.append(bp(B("Lymphoma:") + " Chemotherapy (CHOP regimen)"))
story.append(space(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q13 — INTESTINAL POLYPOSIS
# ═══════════════════════════════════════════════════════════════════════════════
story += head1("Q13. INTESTINAL POLYPOSIS")
story += head2("Types of Intestinal Polyps")
story.append(make_table(
[B("Type"), B("Nature"), B("Malignant Potential")],
[
["Hyperplastic", "Non-neoplastic", "Nil"],
["Tubular adenoma", "Neoplastic", "Low (~5%)"],
["Tubulovillous adenoma", "Neoplastic", "Moderate (~22%)"],
["Villous adenoma", "Neoplastic", "High (~40%)"],
["Inflammatory pseudopolyp", "Non-neoplastic", "Nil"],
["Hamartomatous", "Non-neoplastic", "Low"],
],
col_widths=[5.5*cm, 4.5*cm, 6.5*cm]
))
story.append(space(3))
story += head2("Polyposis Syndromes")
story.append(make_table(
[B("Syndrome"), B("Gene"), B("Key Feature"), B("Treatment")],
[
["FAP", "APC (chr 5q21); AD", ">100 adenomas; 100% malignant transformation; osteomas, CHRPE (Gardner's)", "Prophylactic colectomy by age 20–25"],
["Peutz-Jeghers", "STK11/LKB1; AD", "Hamartomatous polyps; mucocutaneous pigmentation (lips, fingers)", "Surveillance + polypectomy"],
["Juvenile Polyposis", "SMAD4/BMPR1A", "Hamartomas; rectal bleeding in children", "Surveillance + colectomy"],
["MAP", "MUTYH; AR", "10–100 adenomas; CRC risk", "Surveillance"],
],
col_widths=[3*cm, 3.5*cm, 6.5*cm, 3.5*cm]
))
story.append(space(3))
story += head2("C/F")
story.append(bp("Often asymptomatic (found on screening)"))
story.append(bp("Rectal bleeding; change in bowel habits"))
story.append(bp("Mucus diarrhoea with hypokalaemia (villous adenoma – 'Secretary polyp')"))
story.append(bp("Large polyps: obstruction, intussusception"))
story.append(space(3))
story += head2("Diagnosis")
story.append(bp(B("Colonoscopy (gold standard)") + " – visualize and biopsy"))
story.append(bp("CT colonoscopy (virtual colonoscopy); faecal occult blood test (screening)"))
story.append(bp("Genetic testing: APC gene for FAP"))
story.append(space(3))
story += head2("Management & Treatment")
story.append(bp(B("Single polyp:") + " Endoscopic polypectomy (snare excision)"))
story.append(bp(B("FAP:") + " Total proctocolectomy with IPAA (curative)"))
story.append(bp(B("Chemopreventive:") + " Sulindac / COX-2 inhibitors reduce polyp burden in FAP"))
story.append(bp(B("Surveillance:") + " Regular colonoscopy; genetic counselling for familial syndromes"))
story.append(space(3))
story += head2("Complications")
story.append(bp("Malignant transformation (adenoma-carcinoma sequence)"))
story.append(bp("Bleeding; obstruction; intussusception; electrolyte imbalance"))
story.append(space(12))
# ─── Last page note ────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=MED_BLUE, spaceAfter=6))
story.append(Paragraph(
B("Sources: ") + "Bailey & Love's Short Practice of Surgery (28th Ed.) | Pye's Surgical Handicraft (22nd Ed.) | "
"Robbins Pathologic Basis of Disease | Sleisenger & Fordtran's GI & Liver Disease",
ParagraphStyle("src", fontSize=8, textColor=colors.grey, fontName="Helvetica-Oblique",
alignment=TA_CENTER, leading=12)
))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Good luck on your exam! You've got this.",
ParagraphStyle("gl", fontSize=11, textColor=MED_BLUE, fontName="Helvetica-Bold",
alignment=TA_CENTER)
))
# ─── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/surgery-study-guide && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/surgery-study-guide/Surgery_LAQ_Study_Guide.pdf
Surgery LAQ Study Guide
PDF Document · PDF
These are also laq ans this each in most most most easy way and score best easy understanding heading and point wise I have exam tomorrow
| Stage | Dukes | Description |
|---|---|---|
| T1/T2 N0 M0 | A | Confined to bowel wall |
| T3/T4 N0 M0 | B | Through bowel wall, no nodes |
| Any T, N+ M0 | C | Node involvement |
| Any T, Any N, M1 | D | Distant metastasis |
| Sign | Description |
|---|---|
| McBurney's point tenderness | Maximum tenderness at 1/3 between ASIS and umbilicus |
| Rovsing's sign | Palpation of left iliac fossa causes pain in right iliac fossa |
| Psoas sign | Pain on extending right hip (retrocaecal appendix) |
| Obturator sign | Pain on internal rotation of flexed right hip (pelvic appendix) |
| Rebound tenderness | Suggests peritonism |
| Feature | Acute Liver Failure | Chronic Liver Failure |
|---|---|---|
| Onset | Days to weeks | Months to years |
| Cause | Paracetamol OD, viral hepatitis (A, E), drugs | Cirrhosis (alcohol, HBV, HCV, NAFLD) |
| Liver size | Normal or enlarged | Small, nodular, shrunken |
| Jaundice | Rapid onset | Gradual |
| Encephalopathy | Early, prominent | Late |
| Coagulopathy | Severe, early | Present |
| Portal HTN | Absent | Present (varices, ascites) |
| Prognosis | Can recover completely if cause removed | Progressive, irreversible |
| Type | Nature | Key Feature |
|---|---|---|
| Haemangioma | Vascular; most common benign liver tumour | Blood-filled spaces; "Stop sign" on MRI |
| Hepatic adenoma | Benign hepatocyte tumour | Associated with OCP use; risk of rupture & malignancy |
| Focal Nodular Hyperplasia (FNH) | Hyperplastic hepatocytes | "Central scar" on CT/MRI; no malignant potential |
| Simple hepatic cyst | Congenital | Fluid-filled; no symptoms unless large |
| Hydatid cyst | Echinococcus granulosus | Dog-acquired; "daughter cysts" on USS |
"If the gallbladder is palpable and the patient is jaundiced, the cause is unlikely to be gallstones"
| Stage | Description |
|---|---|
| T1 | Confined to mucosa (T1a) or muscle (T1b) |
| T2 | Perimuscular connective tissue (T2a: peritoneal; T2b: hepatic side) |
| T3 | Perforates serosa / invades liver / 1 adjacent organ |
| T4 | Main portal vein/hepatic artery or ≥2 organs |
| N+ | Regional lymph nodes |
| M1 | Distant metastasis |
| Category | Examples |
|---|---|
| Myeloproliferative | CML, polycythaemia vera, myelofibrosis |
| Infection | Malaria (most common worldwide), EBV (mono), typhoid, TB, leishmaniasis |
| Autoimmune | SLE, rheumatoid arthritis (Felty's syndrome), haemolytic anaemia |
| Metabolic/Storage | Gaucher's disease, Niemann-Pick disease, amyloidosis |
| Infiltrative / Haematological | Lymphoma (most common in West), leukaemia, multiple myeloma |
| Portal HTN | Cirrhosis, portal vein thrombosis (congestive splenomegaly) |
| Stage | Description |
|---|---|
| IA | T1 N0 M0 - ≤2cm confined to pancreas |
| IB | T2 N0 M0 - >2cm confined to pancreas |
| IIA | T3 N0 M0 - beyond pancreas, no vessel involvement |
| IIB | T1-3 N1 M0 - regional nodes positive |
| III | T4 Any N M0 - major vessel invasion (unresectable) |
| IV | Any T Any N M1 - distant metastasis |
Sources: Bailey & Love's Surgery (28th Ed.) | Harrison's Principles of Internal Medicine | Schwartz's Principles of Surgery | Robbins Pathology
Yes
~/surgery-study-guide/generate_pdf2.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/surgery-study-guide/Surgery_LAQ_Study_Guide_Part2.pdf"
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=2.2*cm, bottomMargin=2*cm,
title="Surgery LAQ Study Guide Part 2",
author="Orris Medical"
)
# ── Colours ──────────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1a3a5c")
MED_BLUE = colors.HexColor("#1976D2")
LIGHT_BLUE = colors.HexColor("#E3F2FD")
ACCENT = colors.HexColor("#0288D1")
GREEN = colors.HexColor("#2E7D32")
GREEN_BG = colors.HexColor("#E8F5E9")
ORANGE = colors.HexColor("#E65100")
ORANGE_BG = colors.HexColor("#FFF3E0")
GREY_BG = colors.HexColor("#F5F5F5")
WHITE = colors.white
RED = colors.HexColor("#C62828")
PURPLE = colors.HexColor("#6A1B9A")
PURPLE_BG = colors.HexColor("#F3E5F5")
TEAL = colors.HexColor("#00695C")
TEAL_BG = colors.HexColor("#E0F2F1")
# ── Styles ────────────────────────────────────────────────────────────────────
h1 = ParagraphStyle("h1", fontSize=13, textColor=WHITE, spaceAfter=4, spaceBefore=10,
fontName="Helvetica-Bold", backColor=DARK_BLUE, borderPadding=(5,8,5,8), leading=17)
h2 = ParagraphStyle("h2", fontSize=10.5, textColor=DARK_BLUE, spaceAfter=3, spaceBefore=6,
fontName="Helvetica-Bold", backColor=LIGHT_BLUE, borderPadding=(3,6,3,6), leading=14)
h3 = ParagraphStyle("h3", fontSize=9.5, textColor=MED_BLUE, spaceAfter=2, spaceBefore=4,
fontName="Helvetica-Bold", leading=13)
body = ParagraphStyle("body", fontSize=8.5, textColor=colors.black, spaceAfter=1,
fontName="Helvetica", leading=12, alignment=TA_JUSTIFY)
bullet = ParagraphStyle("bullet", fontSize=8.5, textColor=colors.black, spaceAfter=1,
fontName="Helvetica", leading=12, leftIndent=13, firstLineIndent=-10)
bullet2 = ParagraphStyle("bullet2", fontSize=8, textColor=colors.HexColor("#333333"), spaceAfter=1,
fontName="Helvetica", leading=11, leftIndent=24, firstLineIndent=-10)
note = ParagraphStyle("note", fontSize=8, textColor=GREEN, spaceAfter=2, fontName="Helvetica-Oblique",
leading=11, leftIndent=6, backColor=GREEN_BG, borderPadding=(3,5,3,5))
warn = ParagraphStyle("warn", fontSize=8, textColor=ORANGE, spaceAfter=2, fontName="Helvetica-Bold",
leading=11, leftIndent=6, backColor=ORANGE_BG, borderPadding=(3,5,3,5))
imp = ParagraphStyle("imp", fontSize=8, textColor=RED, spaceAfter=2, fontName="Helvetica-Bold",
leading=11, leftIndent=6, backColor=colors.HexColor("#FFEBEE"), borderPadding=(3,5,3,5))
footer_style = ParagraphStyle("footer", fontSize=7, textColor=colors.grey,
alignment=TA_CENTER, fontName="Helvetica-Oblique")
def B(t): return f"<b>{t}</b>"
def I(t): return f"<i>{t}</i>"
def H1(text):
return [Paragraph(f" {text}", h1), Spacer(1,3)]
def H2(text):
return [Paragraph(f" {text}", h2)]
def H3(text):
return [Paragraph(text, h3)]
def bp(text):
return Paragraph(f"• {text}", bullet)
def bp2(text):
return Paragraph(f" – {text}", bullet2)
def sp(n=4):
return Spacer(1, n)
def hr():
return HRFlowable(width="100%", thickness=0.4, color=colors.HexColor("#BBDEFB"), spaceAfter=2)
def tbl(headers, rows, col_widths=None):
data = [headers] + rows
if not col_widths:
n = len(headers); w = (A4[0]-3.6*cm)/n
col_widths = [w]*n
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0), MED_BLUE),
("TEXTCOLOR",(0,0),(-1,0), WHITE),
("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),
("FONTSIZE",(0,0),(-1,0),8),
("FONTNAME",(0,1),(-1,-1),"Helvetica"),
("FONTSIZE",(0,1),(-1,-1),7.5),
("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, GREY_BG]),
("GRID",(0,0),(-1,-1),0.4,colors.HexColor("#B0BEC5")),
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("TOPPADDING",(0,0),(-1,-1),3),
("BOTTOMPADDING",(0,0),(-1,-1),3),
("LEFTPADDING",(0,0),(-1,-1),4),
("RIGHTPADDING",(0,0),(-1,-1),4),
("WORDWRAP",(0,0),(-1,-1),True),
]))
return t
# ── Header / Footer ───────────────────────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, A4[1]-1.1*cm, A4[0], 1.1*cm, fill=1, stroke=0)
canvas.setFont("Helvetica-Bold", 8.5)
canvas.setFillColor(WHITE)
canvas.drawString(1.8*cm, A4[1]-0.75*cm, "SURGERY LAQ STUDY GUIDE – PART 2")
canvas.drawRightString(A4[0]-1.8*cm, A4[1]-0.75*cm, "Q13–Q28 | Intestine · Liver · Pancreas · Pleura")
canvas.setFillColor(colors.HexColor("#90A4AE"))
canvas.rect(0, 0, A4[0], 1.0*cm, fill=1, stroke=0)
canvas.setFont("Helvetica", 7)
canvas.setFillColor(WHITE)
canvas.drawCentredString(A4[0]/2, 0.35*cm,
f"Page {doc.page} | For exam preparation only | Sources: Bailey & Love, Harrison's, Schwartz's Surgery, Robbins Pathology")
canvas.restoreState()
def on_first_page(canvas, doc):
pass
# ── STORY ─────────────────────────────────────────────────────────────────────
story = []
# ═══ COVER ════════════════════════════════════════════════════════════════════
title_s = ParagraphStyle("ts",fontSize=28,textColor=WHITE,fontName="Helvetica-Bold",
alignment=TA_CENTER,leading=34,spaceAfter=4)
sub_s = ParagraphStyle("ss",fontSize=13,textColor=colors.HexColor("#B3E5FC"),
fontName="Helvetica",alignment=TA_CENTER,leading=17,spaceAfter=3)
date_s = ParagraphStyle("ds",fontSize=9.5,textColor=colors.HexColor("#80DEEA"),
fontName="Helvetica-Oblique",alignment=TA_CENTER,spaceAfter=2)
story.append(Spacer(1,2.5*cm))
story.append(Paragraph("SURGERY", title_s))
story.append(Paragraph("LAQ Study Guide – Part 2", sub_s))
story.append(Spacer(1,0.3*cm))
story.append(HRFlowable(width="55%",thickness=2,color=ACCENT,spaceAfter=8,hAlign="CENTER"))
story.append(Paragraph("Large Intestine • Liver • Biliary • Spleen", sub_s))
story.append(Paragraph("Pancreas • Anorectal • Pleura", sub_s))
story.append(Spacer(1,0.5*cm))
story.append(Paragraph("Exam Preparation Edition | July 2026", date_s))
story.append(Spacer(1,0.8*cm))
toc_data = [[Paragraph(
"<b>Topics:</b><br/>"
"13. Large Intestinal Malignancy & Intestinal Diverticula<br/>"
"14. Intestinal Obstruction<br/>"
"15. Appendicitis<br/>"
"16 & 17. Ano-Rectal Diseases – Fissure in Ano<br/>"
"18. Acute & Chronic Liver Insufficiency<br/>"
"19. Portal HTN & Oesophageal Varices<br/>"
"20. Benign Liver Tumours<br/>"
"21. Hepatocellular Carcinoma<br/>"
"22. Surgical Jaundice (Courvoisier's Law)<br/>"
"23. Carcinoma of Gall Bladder<br/>"
"24. Splenomegaly<br/>"
"25. Acute Pancreatitis<br/>"
"26. Chronic Pancreatitis<br/>"
"27. Carcinoma of Pancreas<br/>"
"28. Pleural Effusion & Pleural Tapping",
ParagraphStyle("tp",fontSize=9,textColor=DARK_BLUE,fontName="Helvetica",leading=15))
]]
toc_t = Table(toc_data, colWidths=[12*cm])
toc_t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1),LIGHT_BLUE),
("BOX",(0,0),(-1,-1),1.5,MED_BLUE),
("LEFTPADDING",(0,0),(-1,-1),12),("RIGHTPADDING",(0,0),(-1,-1),12),
("TOPPADDING",(0,0),(-1,-1),10),("BOTTOMPADDING",(0,0),(-1,-1),10),
]))
story.append(toc_t)
story.append(Spacer(1,0.8*cm))
story.append(Paragraph(I("Sources: Bailey & Love's Surgery (28th Ed.) · Harrison's Medicine · Schwartz's Surgery · Robbins Pathology"), footer_style))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# Q13 – LARGE INTESTINAL MALIGNANCY
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q13. LARGE INTESTINAL MALIGNANCY (Colorectal Carcinoma)")
story += H2("Epidemiology & Risk Factors")
story.append(bp("3rd most common cancer worldwide; peak age >50; Male = Female"))
story.append(bp(B("RF:") + " High-fat/low-fibre diet, obesity, smoking, alcohol, family history, IBD, FAP, Lynch syndrome (HNPCC), previous polyps"))
story.append(sp(3))
story += H2("Pathology")
story.append(bp("95% Adenocarcinomas; arise via adenoma-carcinoma sequence (polyp → cancer over 10-15 years)"))
story.append(bp(B("APC gene mutation") + " → uncontrolled cell growth"))
story.append(bp("Macroscopic: Polypoid (right colon) / Annular/Apple-core (left colon) / Ulcerating"))
story.append(sp(3))
story += H2("C/F by Location")
story.append(tbl(
[B("Location"), B("Clinical Features")],
[
["Right colon", "Anaemia, fatigue, occult bleeding, palpable mass (wide lumen = late obstruction)"],
["Left colon", "Change in bowel habits, fresh rectal bleeding, pencil-thin stools, obstruction"],
["Rectum", "Tenesmus, rectal bleeding, mucus PR, feeling of incomplete evacuation"],
],
col_widths=[3.5*cm, 13*cm]
))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp("Colonoscopy + biopsy (gold standard); CT colonoscopy; CT CAP for staging"))
story.append(bp("CEA (tumour marker for monitoring); FBC: anaemia; Faecal occult blood (screening)"))
story.append(sp(3))
story += H2("Dukes / TNM Staging")
story.append(tbl(
[B("Dukes"), B("Stage"), B("Description")],
[
["A", "T1/T2 N0 M0", "Confined to bowel wall"],
["B", "T3/T4 N0 M0", "Through bowel wall, no nodes"],
["C", "Any T N+ M0", "Lymph node involvement"],
["D", "Any T Any N M1", "Distant metastasis (liver most common)"],
],
col_widths=[2.5*cm, 4.5*cm, 9.5*cm]
))
story.append(sp(3))
story += H2("Treatment")
story.append(bp(B("Surgery (curative):") + " Right hemicolectomy / Left hemicolectomy / Anterior resection (upper rectum) / APR (lower rectum)"))
story.append(bp(B("Adjuvant chemo:") + " FOLFOX (Oxaliplatin + 5-FU) for Stage III/IV"))
story.append(bp(B("Targeted:") + " Bevacizumab (anti-VEGF), Cetuximab (anti-EGFR) for metastatic disease"))
story.append(bp(B("Rectal cancer:") + " Neoadjuvant chemoradiotherapy to downstage before surgery"))
story.append(sp(3))
story += H2("Preventive Measures")
story.append(bp("High-fibre diet; avoid red/processed meat; regular colonoscopy from age 50 (40 if FH)"))
story.append(bp("Aspirin reduces risk; early removal of polyps"))
story.append(sp(3))
story += H2("Intestinal Diverticula")
story.append(bp(B("Meckel's Diverticulum – Rule of 2s:") + " 2% population, 2 feet from ileocaecal valve, 2 inches long, 2 years peak age, 2x in males; remnant of vitello-intestinal duct"))
story.append(bp("Colonic diverticulosis: Sigmoid most common; increased intraluminal pressure + muscle weakness"))
story.append(bp(B("Complicated diverticulitis:") + " Abscess, perforation, fistula (colovesical → pneumaturia), obstruction, bleeding"))
story.append(bp(B("Treatment:") + " Acute: NPO + IV antibiotics (Metronidazole + Ciprofloxacin); Elective surgery: Hartmann's procedure for recurrent attacks"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q14 – INTESTINAL OBSTRUCTION
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q14. INTESTINAL OBSTRUCTION")
story += H2("Classification & Common Causes")
story.append(tbl(
[B("Type"), B("Subtype"), B("Common Examples")],
[
["Mechanical", "Intraluminal", "Foreign body, faecalith, gallstone ileus"],
["Mechanical", "Intramural", "Stricture (Crohn's/TB/cancer), intussusception"],
["Mechanical", "Extraluminal", "Adhesions (MOST COMMON), hernias, volvulus"],
["Functional", "Paralytic ileus", "Post-surgery, peritonitis, electrolyte imbalance"],
],
col_widths=[3.5*cm, 4*cm, 9*cm]
))
story.append(sp(3))
story += H2("Pathophysiology")
story.append(bp("Obstruction → distension → ↑ secretion → fluid/electrolyte loss → dehydration → ischaemia → perforation → sepsis"))
story.append(sp(3))
story += H2("C/F – 4 Cardinal Features")
story.append(Paragraph(" 1. " + B("Colicky abdominal pain") + " 2. " + B("Vomiting") + " 3. " + B("Distension") + " 4. " + B("Absolute constipation"), body))
story.append(sp(2))
story.append(tbl(
[B("Feature"), B("Small Bowel"), B("Large Bowel")],
[
["Vomiting", "Early, bilious/faeculent", "Late, faeculent"],
["Distension", "Mild, central", "Marked, peripheral"],
["Pain", "Periumbilical, frequent", "Lower abdominal, less frequent"],
],
col_widths=[4*cm, 6*cm, 6.5*cm]
))
story.append(sp(3))
story.append(Paragraph(B("⚠ Signs of STRANGULATION (= SURGICAL EMERGENCY):"), warn))
story.append(bp("Continuous severe pain (no relief between episodes)"))
story.append(bp("Fever, tachycardia, signs of sepsis / peritonism"))
story.append(bp("Localised tenderness + rigidity; raised WBC + lactate"))
story.append(Paragraph(B("Strangulation window = 6 hours; after 6 hrs bowel becomes gangrenous → mortality rises sharply"), imp))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp("AXR: Dilated loops + air-fluid levels (mechanical); gas throughout (paralytic ileus)"))
story.append(bp(B("CT abdomen/pelvis (gold standard):") + " Identifies level, cause, strangulation signs"))
story.append(bp("Gastrografin follow-through: Small bowel (also therapeutic); Contrast enema: Large bowel"))
story.append(sp(3))
story += H2("Initial Management (Drip & Suck)")
story.append(bp("IV fluids + NG tube decompression; Nil by mouth; Catheterize; Correct electrolytes; Analgesia; Antibiotics if strangulation suspected"))
story.append(sp(3))
story += H2("Surgical Intervention")
story.append(bp("Adhesions: Adhesiolysis | Hernia: Repair + bowel resection if strangulated"))
story.append(bp("Volvulus: Endoscopic decompression first; surgery if fails | Cancer: Resection / Hartmann's"))
story.append(bp("Intussusception (child): Pneumatic/hydrostatic reduction; surgery if fails"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q15 – APPENDICITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q15. APPENDICITIS")
story += H2("Epidemiology & Etiology")
story.append(bp("Most common acute surgical emergency; Peak age 10-30 yrs; Male > Female; Lifetime risk 7-8%"))
story.append(bp("Obstruction of lumen → stasis → bacterial overgrowth → inflammation → perforation"))
story.append(bp(B("Causes of obstruction:") + " Faecoliths (most common), lymphoid hyperplasia, parasites, tumours"))
story.append(sp(3))
story += H2("Pathology (Progression)")
story.append(bp("Simple/Catarrhal → Suppurative → Gangrenous → Perforated"))
story.append(bp("If walled off = Appendix mass/abscess; If not = Generalised peritonitis"))
story.append(sp(3))
story += H2("C/F")
story.append(bp(B("Classic:") + " Periumbilical pain migrating to Right Iliac Fossa (McBurney's point)"))
story.append(bp("Nausea, vomiting; " + B("Anorexia (very characteristic)") + "; Low-grade fever"))
story.append(sp(3))
story += H2("Clinical Signs (Important!)")
story.append(tbl(
[B("Sign"), B("Description")],
[
["McBurney's tenderness", "Max tenderness at 1/3 between ASIS and umbilicus"],
["Rovsing's sign", "LIF palpation causes pain in RIF"],
["Psoas sign", "Pain on extending right hip (retrocaecal appendix)"],
["Obturator sign", "Pain on internal rotation of flexed right hip (pelvic appendix)"],
["Rebound tenderness", "Suggests peritonism / perforation"],
],
col_widths=[5*cm, 11.5*cm]
))
story.append(sp(3))
story += H2("Investigations & Diagnosis")
story.append(bp("FBC: Leucocytosis; CRP elevated; USS: appendix >6mm, non-compressible"))
story.append(bp(B("CT abdomen/pelvis (gold standard):") + " Thickened appendix + periappendiceal fat stranding"))
story.append(bp(B("Alvarado score ≥7:") + " High probability → operate"))
story.append(sp(3))
story += H2("Differential Diagnosis")
story.append(bp("Mesenteric adenitis (children) | Meckel's diverticulitis | Ovarian cyst/ectopic/PID (females)"))
story.append(bp("UTI / ureteric colic | Crohn's disease | Caecal carcinoma (elderly) | Psoas abscess"))
story.append(sp(3))
story += H2("Treatment")
story.append(bp(B("Surgical:") + " Laparoscopic appendicectomy (preferred) or Open (grid-iron incision)"))
story.append(bp(B("Conservative (uncomplicated):") + " IV antibiotics (Co-amoxiclav + Metronidazole) – some centres"))
story.append(bp(B("Perforated:") + " Laparoscopic washout + appendicectomy + antibiotics"))
story.append(sp(3))
story += H2("Complications")
story.append(bp("Perforation → peritonitis | Appendix abscess | Adhesions → bowel obstruction later | Portal pyaemia (rare)"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q16/17 – FISSURE IN ANO
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q16 & Q17. ANO-RECTAL DISEASES – FISSURE IN ANO")
story += H2("Definition & Etiopathogenesis")
story.append(bp("Longitudinal tear/ulcer in the anal canal below the dentate line"))
story.append(bp("Hard stool → tear → internal sphincter spasm → ↓ blood supply → poor healing → chronic fissure"))
story.append(bp(B("Posterior midline") + " (90%) due to poor vascularity; Anterior – more in females"))
story.append(bp(B("Multiple/lateral fissures:") + " Suspect Crohn's, TB, syphilis, HIV"))
story.append(sp(3))
story += H2("Types")
story.append(tbl(
[B("Type"), B("Duration"), B("Features")],
[
["Acute", "<6 weeks", "Fresh tear, bleeds, no fibrous induration"],
["Chronic", ">6 weeks", "Sentinel pile (external skin tag), hypertrophied anal papilla, exposed internal sphincter at base"],
],
col_widths=[3*cm, 3.5*cm, 10*cm]
))
story.append(sp(3))
story += H2("C/F")
story.append(bp("Severe anal pain during and after defaecation (knife-cutting/tearing)"))
story.append(bp("Bright red rectal bleeding on paper/pan; Constipation (avoids defaecation due to pain)"))
story.append(bp("Visible sentinel pile (skin tag at anal margin)"))
story.append(sp(3))
story += H2("Non-Surgical Treatment")
story.append(bp(B("Stool softeners:") + " Lactulose, ispaghula, high-fibre diet, warm sitz baths"))
story.append(bp(B("GTN 0.2% ointment:") + " Chemical sphincterotomy; relaxes internal sphincter; SE = headache"))
story.append(bp(B("Diltiazem 2% cream:") + " Calcium channel blocker; fewer headaches than GTN"))
story.append(bp(B("Botulinum toxin injection:") + " Into internal sphincter; relaxes spasm; good for chronic fissure"))
story.append(sp(3))
story += H2("Surgical Treatment")
story.append(Paragraph(B("Lateral Internal Sphincterotomy (LIS) = Gold Standard Surgery"), imp))
story.append(bp("Cut lateral portion of internal anal sphincter → relieves spasm permanently"))
story.append(bp("Risk: Minor faecal incontinence"))
story.append(bp("Lord's procedure (anal dilation) – no longer recommended; high incontinence risk"))
story.append(sp(3))
story += H2("Other Ano-Rectal Diseases – Home Therapies")
story.append(bp(B("Haemorrhoids:") + " High-fibre diet, sitz baths, stool softeners, topical steroid cream (Proctosedyl) → Band ligation / Sclerotherapy / Haemorrhoidectomy"))
story.append(bp(B("Perianal Abscess:") + " I&D (Incision & Drainage) – " + B("cannot be treated with antibiotics alone")))
story.append(bp(B("Fistula in Ano:") + " Fistulotomy / Fistulectomy / Seton placement"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q18 – ACUTE & CHRONIC LIVER INSUFFICIENCY
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q18. ACUTE & CHRONIC LIVER INSUFFICIENCY")
story += H2("Acute vs Chronic – Key Differences")
story.append(tbl(
[B("Feature"), B("Acute Liver Failure"), B("Chronic Liver Failure")],
[
["Onset", "Days to weeks", "Months to years"],
["Cause", "Paracetamol OD, viral hepatitis A/E, drugs", "Cirrhosis (alcohol, HBV, HCV, NAFLD)"],
["Liver size", "Normal or enlarged", "Small, nodular, shrunken"],
["Portal HTN", "Absent", "Present (varices, ascites)"],
["Encephalopathy", "Early, prominent", "Late stage"],
["Prognosis", "Can recover if cause removed", "Progressive, irreversible"],
],
col_widths=[4*cm, 6.5*cm, 6*cm]
))
story.append(sp(3))
story += H2("Pathophysiology")
story.append(bp("Hepatocyte destruction → loss of: Protein synthesis (albumin, clotting factors) / Detoxification (↑ ammonia → encephalopathy) / Bile production (jaundice) / Glycogen storage (hypoglycaemia)"))
story.append(bp("Portal hypertension → ascites, varices, splenomegaly"))
story.append(sp(3))
story += H2("Diagnostic Tests")
story.append(bp("LFT: ↑ bilirubin, ALT, AST; ↓ albumin | PT/INR: ↑ (clotting factor synthesis ↓)"))
story.append(bp("Blood ammonia ↑ (encephalopathy) | USS: liver size, ascites | Viral markers: HBsAg, Anti-HCV, Anti-HAV IgM"))
story.append(bp("Paracetamol level (if OD) | Liver biopsy if needed | EEG for encephalopathy grading"))
story.append(sp(3))
story += H2("Complications")
story.append(bp(B("Acute:") + " Cerebral oedema (leading cause of death), coagulopathy, hypoglycaemia, renal failure, sepsis, MOF"))
story.append(bp(B("Chronic:") + " Ascites, SBP, hepatic encephalopathy, variceal bleeding, hepatorenal syndrome, HCC, coagulopathy"))
story.append(sp(3))
story += H2("Home (Medical) Therapies")
story.append(bp(B("Acute:") + " N-acetylcysteine (paracetamol OD); Entecavir (HBV); IV glucose; FFP + Vit K; Lactulose; ICU; Liver transplant (King's College Criteria)"))
story.append(bp(B("Chronic:") + " Treat cause (stop alcohol, antivirals) | Ascites: Salt restriction + Spironolactone ± Furosemide | Encephalopathy: Lactulose + Rifaximin | SBP prophylaxis: Norfloxacin | Liver transplant"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q19 – PORTAL HTN & OESOPHAGEAL VARICES
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q19. PORTAL HYPERTENSION & OESOPHAGEAL VARICES")
story += H2("Etiology")
story.append(tbl(
[B("Type"), B("Causes")],
[
["Pre-hepatic", "Portal vein thrombosis, splenic vein thrombosis"],
["Hepatic (MOST COMMON)", "Cirrhosis (alcohol, viral hepatitis, NASH), schistosomiasis"],
["Post-hepatic", "Budd-Chiari syndrome, constrictive pericarditis, right heart failure"],
],
col_widths=[4.5*cm, 12*cm]
))
story.append(sp(3))
story += H2("How Portal HTN Leads to Oesophageal Varices")
story.append(bp("Normal portal pressure = 5-10 mmHg; Portal HTN = >12 mmHg"))
story.append(bp("Cirrhosis → scarring → ↑ intrahepatic resistance → ↑ portal pressure → blood seeks alternative collateral routes"))
story.append(bp("Portal vein → left gastric (coronary) vein → " + B("oesophageal submucosal veins dilate = VARICES")))
story.append(bp("Varices = thin-walled, high-pressure veins → rupture → massive haematemesis"))
story.append(bp(B("Other collaterals:") + " Rectal varices, caput medusae (umbilicus), haemorrhoids"))
story.append(sp(3))
story += H2("Clinical Signs / Symptoms")
story.append(bp("Jaundice, spider naevi, palmar erythema, gynaecomastia"))
story.append(bp("Ascites, splenomegaly, caput medusae (dilated veins around umbilicus)"))
story.append(bp("Haematemesis (variceal bleed), hepatic encephalopathy, peripheral oedema"))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp("OGD: See + grade varices (I-IV) | USS Doppler: Portal vein >13mm, reversed flow"))
story.append(bp("CT/MRI angiography; Liver biopsy; HVPG >10mmHg = clinically significant portal HTN"))
story.append(sp(3))
story += H2("Management of Variceal Bleeding")
story.append(Paragraph(B("Step 1 – Immediate Resuscitation:"), h3))
story.append(bp("ABC; IV access; Blood transfusion (target Hb 7-8 g/dL – " + B("do NOT over-transfuse") + ")"))
story.append(bp(B("Terlipressin IV") + " ASAP – reduces portal pressure | " + B("IV Ceftriaxone") + " (mandatory antibiotics in cirrhosis)"))
story.append(bp("Correct coagulopathy: FFP + Vitamin K"))
story.append(sp(2))
story.append(Paragraph(B("Step 2 – Endoscopy within 12 hours:"), h3))
story.append(bp(B("Band ligation (EVL)") + " = gold standard | Sclerotherapy if band ligation unavailable"))
story.append(sp(2))
story.append(Paragraph(B("Step 3 – Rescue (if above fails):"), h3))
story.append(bp(B("Sengstaken-Blakemore tube:") + " Balloon tamponade (temporary, max 24 hrs)"))
story.append(bp(B("TIPSS") + " (Transjugular Intrahepatic Portosystemic Shunt): Creates portal-hepatic vein shunt; risk = encephalopathy"))
story.append(sp(2))
story.append(Paragraph(B("Secondary Prevention:"), h3))
story.append(bp("Beta-blockers (Propranolol/Carvedilol) + repeat band ligation every 2-4 weeks until varices obliterated"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q20 – BENIGN LIVER TUMOURS
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q20. BENIGN LIVER TUMOURS")
story += H2("Classification & C/F")
story.append(tbl(
[B("Type"), B("Key Feature"), B("Diagnosis"), B("Treatment")],
[
["Haemangioma\n(most common)", "Blood-filled spaces; asymptomatic", "MRI: Peripheral nodular enhancement (\"stop sign\")", "Observe; resect if symptomatic"],
["Hepatic Adenoma", "OCP use; risk of rupture & malignancy", "CT/MRI: fat content", "Stop OCP; resect"],
["Focal Nodular\nHyperplasia (FNH)", "\"Central scar\" on MRI; no malignant potential", "MRI: Central scar with spoke-wheel pattern", "Observe (no treatment needed)"],
["Simple Hepatic Cyst", "Congenital, fluid-filled", "USS: anechoic", "Observe; aspirate if large"],
["Hydatid Cyst", "Echinococcus; dog-acquired; daughter cysts", "USS: snowstorm; ELISA positive", "PAIR procedure + Albendazole; surgery"],
],
col_widths=[3.5*cm, 4*cm, 4.5*cm, 4.5*cm]
))
story.append(sp(3))
story.append(Paragraph(B("Most benign liver tumours are asymptomatic – found incidentally on imaging."), note))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q21 – HEPATOCELLULAR CARCINOMA
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q21. HEPATOCELLULAR CARCINOMA (HCC)")
story += H2("Risk Factors")
story.append(bp("Chronic HBV (most common worldwide) | Chronic HCV | Liver cirrhosis (any cause)"))
story.append(bp("Alcohol | NAFLD/NASH | " + B("Aflatoxin B1") + " (contaminated groundnuts – Aspergillus)"))
story.append(bp("Haemochromatosis, Wilson's disease | Male > Female; Age >50"))
story.append(sp(3))
story += H2("C/F")
story.append(bp(B("Early:") + " Asymptomatic; detected on surveillance USS"))
story.append(bp(B("Late:") + " RUQ pain/fullness, weight loss, worsening liver failure (jaundice, ascites, encephalopathy), haemoperitoneum if rupture"))
story.append(bp(B("Paraneoplastic:") + " Hypoglycaemia, polycythaemia, hypercalcaemia"))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp(B("AFP >400 ng/mL:") + " Highly suggestive (not always elevated)"))
story.append(bp("USS every 6 months: Surveillance in cirrhotics"))
story.append(bp(B("CT triphasic:") + " Arterial enhancement + venous washout = " + B("hallmark of HCC (no biopsy needed if CT/MRI diagnostic)")))
story.append(bp("MRI with contrast (more sensitive); Biopsy if imaging inconclusive"))
story.append(bp(B("Milan Criteria (for transplant):") + " Single nodule ≤5cm OR up to 3 nodules each ≤3cm; no vascular invasion; no metastasis"))
story.append(sp(3))
story += H2("Treatment")
story.append(tbl(
[B("Stage"), B("Treatment")],
[
["Early (resectable)", "Surgical resection OR Liver transplant (if within Milan criteria)"],
["Very early / small", "Radiofrequency ablation (RFA)"],
["Intermediate", "TACE (Transarterial Chemoembolisation)"],
["Advanced/metastatic", "Sorafenib (targeted) OR Atezolizumab + Bevacizumab (now 1st line)"],
],
col_widths=[5*cm, 11.5*cm]
))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q22 – SURGICAL JAUNDICE
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q22. SURGICAL JAUNDICE (Obstructive Jaundice)")
story += H2("Causes")
story.append(tbl(
[B("Level"), B("Causes")],
[
["Intraluminal (inside duct)", "Gallstones (MOST COMMON), parasites (Ascaris)"],
["Intramural (wall of duct)", "Cholangiocarcinoma, stricture (post-traumatic), PSC"],
["Extramural (outside duct)", "CA head of pancreas (PAINLESS jaundice), enlarged nodes, Mirizzi's syndrome, chronic pancreatitis"],
],
col_widths=[5*cm, 11.5*cm]
))
story.append(sp(3))
story += H2("Pathophysiology")
story.append(bp("Bile duct obstruction → conjugated bilirubin backs up → jaundice + dark urine + pale stools"))
story.append(bp("Bile salts in skin → intense pruritus | No bile in gut → fat malabsorption + steatorrhoea + Vit K deficiency"))
story.append(sp(3))
story += H2("C/F")
story.append(bp("Deep jaundice; pruritus; dark urine (Coca-Cola); pale/clay stools"))
story.append(bp("Colicky pain = gallstones; " + B("Painless progressive jaundice = MALIGNANCY until proven otherwise")))
story.append(bp(B("Charcot's triad:") + " Jaundice + Fever + RUQ pain = Cholangitis (emergency)"))
story.append(sp(3))
story.append(Paragraph(B("★ COURVOISIER'S LAW (Very Important Exam Fact!):"), imp))
story.append(Paragraph(
I('"If the gallbladder is palpable AND the patient is jaundiced, the cause is UNLIKELY to be gallstones"'),
ParagraphStyle("q", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica-Oblique",
leading=13, leftIndent=10, backColor=LIGHT_BLUE, borderPadding=(4,6,4,6), spaceAfter=3)
))
story.append(bp("Gallstones → GB is fibrotic/shrunken (cannot distend)"))
story.append(bp("Cancer (head of pancreas) → GB was previously healthy → distends (Courvoisier's sign +ve = malignant obstruction)"))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp("LFT: ↑ direct bilirubin, ALP, GGT | USS: First investigation – dilated ducts, stones, mass"))
story.append(bp(B("MRCP:") + " Best non-invasive biliary imaging | CT abdomen: Mass lesion, staging"))
story.append(bp(B("ERCP:") + " Diagnostic + therapeutic (stent, stone removal) | PTC if ERCP fails"))
story.append(sp(3))
story += H2("Complications")
story.append(bp("Cholangitis → septic shock | Biliary cirrhosis | Acute pancreatitis | Renal failure | Coagulopathy (Vit K malabsorption)"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q23 – CA OF GALL BLADDER
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q23. CARCINOMA OF GALL BLADDER")
story += H2("Risk Factors & Pathophysiology")
story.append(bp(B("Gallstones (most important;") + " >90% have gallstones) | Chronic cholecystitis | Choledochal cysts"))
story.append(bp("Female > Male (3:1); Age >60 | Obesity | Salmonella typhi chronic carriers"))
story.append(bp("Chronic stone irritation → mucosal dysplasia → Adenocarcinoma (~95%) | Dense fibrous stroma"))
story.append(sp(3))
story += H2("C/F")
story.append(bp(B("Early:") + " Asymptomatic; found incidentally at cholecystectomy (incidental gallbladder cancer)"))
story.append(bp(B("Late:") + " RUQ pain (dull, persistent), jaundice (CBD compression), weight loss, palpable RUQ mass, Courvoisier's +ve"))
story.append(sp(3))
story += H2("Diagnosis")
story.append(bp("USS: GB wall thickening >3mm, polyps >1cm, loss of GB wall planes | CT CAP for staging"))
story.append(bp("CA 19-9, CEA (tumour markers) | MRCP/ERCP if biliary obstruction | PET for occult mets"))
story.append(sp(3))
story += H2("TNM Staging")
story.append(tbl(
[B("Stage"), B("Description")],
[
["T1a/T1b", "Confined to mucosa (T1a) or muscle layer (T1b)"],
["T2", "Perimuscular connective tissue – peritoneal side (T2a) or hepatic side (T2b)"],
["T3", "Perforates serosa / invades liver / 1 adjacent organ"],
["T4", "Main portal vein/hepatic artery or ≥2 adjacent organs"],
["N+", "Regional lymph node metastasis"],
["M1", "Distant metastasis"],
],
col_widths=[3*cm, 13.5*cm]
))
story.append(sp(3))
story += H2("Treatment")
story.append(bp(B("T1a:") + " Simple cholecystectomy (curative)"))
story.append(bp(B("T1b/T2:") + " Extended cholecystectomy (GB + 2cm liver margin + lymph node dissection)"))
story.append(bp(B("T3/T4 (advanced):") + " Palliative surgery / biliary stenting + Gemcitabine + Cisplatin"))
story.append(bp(B("Adjuvant:") + " Capecitabine for resected disease"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q24 – SPLENOMEGALY
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q24. SPLENOMEGALY")
story += H2("Causes (MIAMI Mnemonic)")
story.append(tbl(
[B("Letter"), B("Category"), B("Examples")],
[
["M", "Myeloproliferative", "CML, polycythaemia vera, myelofibrosis"],
["I", "Infection", "Malaria (worldwide #1), EBV (mono), typhoid, TB, leishmaniasis"],
["A", "Autoimmune", "SLE, Felty's syndrome (RA), haemolytic anaemia"],
["M", "Metabolic/Storage", "Gaucher's, Niemann-Pick, amyloidosis"],
["I", "Infiltrative/Haematological", "Lymphoma (most common in West), leukaemia, myeloma"],
["+", "Portal HTN", "Cirrhosis, portal vein thrombosis (congestive splenomegaly)"],
],
col_widths=[1.5*cm, 5*cm, 10*cm]
))
story.append(sp(3))
story += H2("C/F")
story.append(bp("Left abdominal fullness / heaviness; early satiety; left shoulder tip pain (diaphragm irritation)"))
story.append(bp(B("Hypersplenism:") + " Anaemia, thrombocytopenia, leucopenia"))
story.append(bp(B("Massive splenomegaly (below umbilicus):") + " Malaria, leishmaniasis, CML, myelofibrosis"))
story.append(sp(3))
story += H2("Examination")
story.append(bp("Enlarges towards right iliac fossa; moves with respiration; cannot get above it; notch on medial border"))
story.append(sp(3))
story += H2("Initial Diagnostic Workup")
story.append(bp("FBC: Anaemia, thrombocytopenia; Peripheral blood smear: Malaria parasites, blast cells"))
story.append(bp("LFT: Liver disease | USS abdomen: Confirm splenomegaly + liver + portal vein | Malaria RDT / thick film"))
story.append(sp(3))
story += H2("Advanced Diagnostic Tools")
story.append(bp("CT abdomen: Size, texture, lymph nodes | Bone marrow biopsy: Haematological malignancy"))
story.append(bp("Flow cytometry: Leukaemia/lymphoma phenotyping | PET scan: Lymphoma staging"))
story.append(sp(3))
story += H2("Therapies")
story.append(bp("Treat underlying cause (antimalarials, chemo, antivirals, etc.)"))
story.append(bp(B("Splenectomy indications:") + " Hypersplenism, hereditary spherocytosis, ITP, trauma, lymphoma"))
story.append(bp(B("Post-splenectomy:") + " Vaccines (Pneumococcus, Meningococcus, HiB) + " + B("lifelong Penicillin V") + " prophylaxis"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q25 – ACUTE PANCREATITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q25. ACUTE PANCREATITIS")
story += H2("Etiology (GET SMASHED)")
story.append(tbl(
[B("Letter"), B("Cause")],
[
["G", "Gallstones (most common, ~40%)"],
["E", "Ethanol/Alcohol (~35%)"],
["T", "Trauma"],
["S", "Steroids"],
["M", "Mumps / Infections"],
["A", "Autoimmune"],
["S", "Scorpion sting (rare)"],
["H", "Hyperlipidaemia / Hypercalcaemia"],
["E", "ERCP (post-procedure)"],
["D", "Drugs (azathioprine, thiazides, NSAIDs)"],
],
col_widths=[2*cm, 14.5*cm]
))
story.append(sp(3))
story += H2("Pathophysiology")
story.append(bp("Premature activation of trypsinogen → trypsin → activates other pancreatic enzymes → " + B("autodigestion of pancreas")))
story.append(bp("Release of cytokines → systemic inflammatory response → ARDS, renal failure, shock"))
story.append(sp(3))
story += H2("C/F")
story.append(bp("Sudden severe " + B("epigastric pain radiating to the back") + " (belt-like)"))
story.append(bp("Nausea, vomiting; fever, tachycardia; reduced bowel sounds"))
story.append(bp(B("Cullen's sign:") + " Periumbilical bruising | " + B("Grey Turner's sign:") + " Flank bruising (both = severe necrotising pancreatitis)"))
story.append(sp(3))
story += H2("Investigations")
story.append(bp(B("Serum lipase (preferred):") + " More sensitive and specific; stays elevated longer"))
story.append(bp(B("Serum amylase:") + " >3x normal (diagnostic if >1000 IU/L); falls after 3 days"))
story.append(bp("FBC: Leucocytosis; ↑ haematocrit | LFT: ↑ ALP/bilirubin (gallstone cause) | ↓ Ca (saponification) | ↑ glucose"))
story.append(bp(B("CT abdomen (contrast-enhanced):") + " Best for complications; shows necrosis – done if Ranson ≥3"))
story.append(sp(3))
story += H2("Severity Scoring (Ranson's Criteria)")
story.append(tbl(
[B("At Admission"), B("At 48 Hours")],
[
["Age >55", "BUN rise >5"],
["WBC >16,000", "PaO2 <60 mmHg"],
["Glucose >11 mmol/L", "Ca <2 mmol/L"],
["LDH >350 IU/L", "Haematocrit fall >10%"],
["AST >250 IU/L", "Base deficit >4; Fluid >6L"],
],
col_widths=[8*cm, 8.5*cm]
))
story.append(Paragraph("Score ≥3 = " + B("SEVERE pancreatitis"), imp))
story.append(sp(3))
story += H2("Complications")
story.append(bp(B("Local:") + " Pancreatic necrosis (sterile/infected), pseudocyst, abscess, walled-off necrosis"))
story.append(bp(B("Systemic:") + " ARDS, AKI, DIC, septic shock, multi-organ failure"))
story.append(sp(3))
story += H2("Indications for Surgical Intervention")
story.append(bp(B("Infected pancreatic necrosis:") + " Step-up approach: Antibiotics (Meropenem) → Percutaneous drainage → VARD → Open necrosectomy"))
story.append(bp(B("Gallstone pancreatitis:") + " Cholecystectomy after recovery (same admission or within 2 weeks)"))
story.append(bp(B("Persistent pseudocyst >6 weeks:") + " Endoscopic/surgical cystgastrostomy | Abdominal compartment syndrome: Decompressive laparotomy"))
story.append(sp(3))
story += H2("Home (Medical) Treatment")
story.append(bp(B("Aggressive IV fluids (Ringer's Lactate) = most important treatment")))
story.append(bp("Analgesia (IV Morphine/Pethidine); Nil by mouth; Monitor + correct electrolytes"))
story.append(bp(B("Early enteral nutrition") + " via nasojejunal tube (better than TPN – prevents bacterial translocation)"))
story.append(bp("Antibiotics: ONLY if infected necrosis (NOT prophylactic); PPI"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q26 – CHRONIC PANCREATITIS
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q26. CHRONIC PANCREATITIS")
story += H2("Etiology / Risk Factors")
story.append(bp(B("Most common:") + " Chronic alcohol abuse (70-80%)"))
story.append(bp("Tropical pancreatitis (cassava toxin – young patients in developing countries)"))
story.append(bp("Hereditary (PRSS1, SPINK1 mutations) | Autoimmune (IgG4-related) | Idiopathic"))
story.append(bp("Hyperlipidaemia, hypercalcaemia, obstructive, smoking (independent RF)"))
story.append(sp(3))
story += H2("Pathophysiology")
story.append(bp("Repeated inflammation → irreversible fibrosis → destruction of exocrine and endocrine tissue"))
story.append(bp("Exocrine loss → malabsorption, steatorrhoea | Endocrine loss → diabetes mellitus"))
story.append(bp("Duct obstruction → ductal hypertension → " + B("chronic pain")))
story.append(sp(3))
story += H2("C/F")
story.append(bp(B("Chronic upper abdominal pain") + " radiating to back – worse after meals and alcohol"))
story.append(bp(B("Steatorrhoea") + " (fatty, foul-smelling, floating stools)"))
story.append(bp(B("Diabetes mellitus") + " (fragile/brittle – occurs late)"))
story.append(bp("Weight loss, malnutrition; jaundice if bile duct strictured"))
story.append(sp(3))
story += H2("Investigations")
story.append(bp("USS: Calcifications, dilated duct, pseudocysts"))
story.append(bp(B("CT abdomen:") + " Pancreatic calcifications (pathognomonic!), atrophy, ductal dilation"))
story.append(bp(B("MRCP/ERCP:") + " 'Chain of lakes' (dilated + strictured duct alternating)"))
story.append(bp("Faecal elastase: Low (<100 µg/g = severe exocrine insufficiency) | IgG4: Autoimmune"))
story.append(sp(3))
story += H2("Complications")
story.append(bp("Pseudocyst (most common) | Pancreatic ascites | Splenic vein thrombosis → segmental portal HTN"))
story.append(bp("Bile duct stricture | Duodenal obstruction | Narcotic addiction | Pancreatic cancer (rare)"))
story.append(sp(3))
story += H2("Surgical Intervention – Indications")
story.append(bp("Intractable pain unresponsive to medical management"))
story.append(bp("Dilated pancreatic duct >6mm | Complications (pseudocyst, biliary/duodenal obstruction) | Suspected malignancy"))
story.append(tbl(
[B("Operation"), B("Indication")],
[
["Lateral pancreaticojejunostomy (Puestow procedure)", "Dilated duct disease (most common)"],
["Whipple's procedure (Pancreaticoduodenectomy)", "Head disease / mass"],
["Frey's procedure", "Local head resection + lateral pancreaticojejunostomy"],
["Total pancreatectomy + islet autotransplant", "Last resort"],
],
col_widths=[8.5*cm, 8*cm]
))
story.append(sp(3))
story += H2("Home (Medical) Treatment")
story.append(bp(B("Pain:") + " NSAIDs → weak opioids → strong opioids; Pregabalin; Coeliac plexus block"))
story.append(bp(B("Steatorrhoea:") + " Pancreatic enzyme replacement (Creon) with every meal"))
story.append(bp(B("Diabetes:") + " Insulin (fragile; monitor closely)"))
story.append(bp(B("Lifestyle:") + " " + B("Stop alcohol + smoking (most important!)") + "; small frequent meals; low-fat diet"))
story.append(bp("Fat-soluble vitamin supplementation (A, D, E, K)"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q27 – CA OF PANCREAS
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q27. CARCINOMA OF PANCREAS")
story += H2("Epidemiology & Risk Factors")
story.append(bp("4th most common cause of cancer death; 5-year survival <10% (worst prognosis)"))
story.append(bp("90% are ductal adenocarcinomas; 70% in head; peak age 60-80 years; Male > Female"))
story.append(bp(B("RF:") + " Smoking (most important modifiable RF), chronic pancreatitis, diabetes, obesity, family history, BRCA2 mutation, Lynch syndrome"))
story.append(sp(3))
story += H2("Pathology")
story.append(bp("Dense desmoplastic stroma (makes chemotherapy hard to penetrate)"))
story.append(bp("Perineural invasion common (cause of severe back pain)"))
story.append(bp(B("K-RAS mutation") + " present in >90% | IPMN (Intraductal Papillary Mucinous Neoplasm) = precursor lesion"))
story.append(sp(3))
story += H2("C/F by Location")
story.append(tbl(
[B("Location (70%)"), B("Head of Pancreas"), B("Body/Tail (30%)")],
[
["Pain", "Less prominent", "Severe back/epigastric pain (late, often unresectable)"],
["Jaundice", "Painless progressive jaundice (classic)", "Absent (late or never)"],
["Signs", "Courvoisier's +ve, pale stools, dark urine, pruritus", "Weight loss, palpable mass"],
],
col_widths=[3.5*cm, 7*cm, 6*cm]
))
story.append(bp("New-onset diabetes; Trousseau's sign (migratory thrombophlebitis); depression (paraneoplastic)"))
story.append(sp(3))
story += H2("Investigations")
story.append(bp("USS: First; dilated ducts, mass"))
story.append(bp(B("CT pancreas protocol (triple phase) = gold standard:") + " 'Double-duct sign' (dilated pancreatic duct + CBD); assess resectability"))
story.append(bp(B("EUS + FNA:") + " Best for small tumours and tissue sampling | MRCP/ERCP: Biliary anatomy + stenting"))
story.append(bp("CA 19-9: Tumour marker (monitoring) | PET scan: Metastases | Diagnostic laparoscopy: Before laparotomy"))
story.append(sp(3))
story += H2("TNM Staging")
story.append(tbl(
[B("Stage"), B("Description")],
[
["IA", "T1 N0 M0 – ≤2cm confined to pancreas"],
["IB", "T2 N0 M0 – >2cm confined to pancreas"],
["IIA", "T3 N0 M0 – beyond pancreas, no vessel involvement"],
["IIB", "T1-3 N1 M0 – regional nodes positive"],
["III", "T4 Any N M0 – major vessel invasion (UNRESECTABLE)"],
["IV", "Any T Any N M1 – distant metastasis"],
],
col_widths=[2.5*cm, 14*cm]
))
story.append(sp(3))
story += H2("Surgical Intervention")
story.append(Paragraph(B("Whipple's Procedure (Pancreaticoduodenectomy) = Gold Standard for Resectable Head Tumours"), imp))
story.append(bp("Removes: Head of pancreas + duodenum + CBD + gallbladder + distal stomach"))
story.append(bp("5-year survival after resection ~20%"))
story.append(bp(B("Distal pancreatectomy + splenectomy:") + " For body/tail tumours"))
story.append(bp(B("Palliative bypass:") + " Choledochojejunostomy + Gastrojejunostomy (for unresectable – relieves jaundice + prevents GOO)"))
story.append(sp(3))
story += H2("Home (Medical) Therapies")
story.append(bp(B("Chemotherapy:") + " Gemcitabine + Abraxane (nab-paclitaxel); FOLFIRINOX (fit patients)"))
story.append(bp("Biliary stenting (ERCP) for palliation | Pancreatic enzyme replacement (Creon) | Coeliac plexus block for pain"))
story.append(bp("Nutritional support; Insulin for diabetes"))
story.append(sp(8))
# ═══════════════════════════════════════════════════════════════════════════════
# Q28 – PLEURAL EFFUSION & PLEURAL TAPPING
# ═══════════════════════════════════════════════════════════════════════════════
story += H1("Q28. PLEURAL EFFUSION & PLEURAL TAPPING")
story += H2("Causes of Pleural Effusion")
story.append(tbl(
[B("Type"), B("Mechanism"), B("Common Causes")],
[
["Transudate\n(Protein <25 g/L)", "Hydrostatic pressure ↑ or oncotic pressure ↓", "Heart failure (most common), liver cirrhosis, nephrotic syndrome, hypothyroidism"],
["Exudate\n(Protein >35 g/L)", "Inflammation / increased capillary permeability", "Pneumonia, malignancy (lung/breast/mesothelioma), TB, PE, RA/SLE, pancreatitis (left-sided)"],
],
col_widths=[3.5*cm, 5*cm, 8*cm]
))
story.append(sp(2))
story.append(Paragraph(B("Light's Criteria (Exudate if ANY one met):"), h3))
story.append(bp("Pleural protein / serum protein >0.5"))
story.append(bp("Pleural LDH / serum LDH >0.6"))
story.append(bp("Pleural LDH >2/3 upper limit of normal serum LDH"))
story.append(sp(3))
story += H2("Indications for Pleural Tapping (Thoracentesis)")
story.append(bp(B("Diagnostic:") + " All undiagnosed effusions needing fluid analysis"))
story.append(bp(B("Therapeutic:") + " Large effusion causing dyspnoea/respiratory compromise"))
story.append(bp("Empyema (infected pleural fluid); Haemothorax; Malignant effusion symptom relief"))
story.append(sp(3))
story += H2("Contraindications")
story.append(bp("Uncooperative patient | Coagulopathy (INR >2 or platelets <50,000) – relative"))
story.append(bp("Skin infection at puncture site | Effusion <1cm on USS | On mechanical ventilation (relative)"))
story.append(sp(3))
story += H2("Complications of Pleural Tapping")
story.append(bp(B("Pneumothorax (most common)") + " | Haemothorax (intercostal vessel laceration)"))
story.append(bp(B("Re-expansion pulmonary oedema") + " (if >1.5L drained too rapidly – most dangerous)"))
story.append(bp("Infection / empyema | Organ perforation (liver, spleen) | Air embolism (rare) | Dry tap"))
story.append(sp(3))
story += H2("Technique")
story.append(bp(B("Site:") + " Triangle of safety (anterior axillary line, posterior axillary line, 5th-6th ICS)"))
story.append(bp(B("Needle ABOVE the rib") + " (to avoid neurovascular bundle running under each rib)"))
story.append(bp("USS guidance mandatory (reduces complications by >50%)"))
story.append(bp(B("Drain maximum 1–1.5 L per session") + " to prevent re-expansion pulmonary oedema"))
story.append(sp(3))
story += H2("Home (Medical) Treatment")
story.append(bp(B("Transudate:") + " Diuretics (heart failure), treat liver/renal disease, albumin replacement"))
story.append(bp(B("Exudate/Infection:") + " Antibiotics + chest drain"))
story.append(bp(B("TB:") + " ATT (anti-TB treatment) + steroids for large effusion"))
story.append(bp(B("Malignant:") + " Repeated tapping OR " + B("pleurodesis") + " (talc/tetracycline) to seal pleural space"))
story.append(bp(B("Empyema:") + " Chest drain + IV antibiotics; VATS (Video-Assisted Thoracoscopic Surgery) if loculated"))
story.append(sp(10))
# ── Final line ─────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=MED_BLUE, spaceAfter=6))
story.append(Paragraph(
B("Sources: ") + "Bailey & Love's Surgery (28th Ed.) | Harrison's Principles of Internal Medicine | "
"Schwartz's Surgery | Robbins Pathology",
ParagraphStyle("src", fontSize=7.5, textColor=colors.grey, fontName="Helvetica-Oblique",
alignment=TA_CENTER, leading=11)
))
story.append(Spacer(1,4))
story.append(Paragraph(
"Best of luck for your exam tomorrow! You've prepared well.",
ParagraphStyle("gl", fontSize=11, textColor=MED_BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER)
))
# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page)
print(f"PDF created: {OUTPUT}")
Failed to create session: unauthorized: authentication failed: Bearer token is invalid
We encountered an error while processing your request. Please try again or reach out to us for help.
Ans all the questions this with definition for each in simple sipme easy laq format heading and pointwise to score max marks easy format