What are chief complaints of varicose veins
| Class | Finding |
|---|---|
| C1 | Telangiectasias / reticular veins |
| C2 | Varicose veins |
| C3 | Edema |
| C4a | Pigmentation or eczema |
| C4b | Lipodermatosclerosis |
| C5 | Healed venous ulcer |
| C6 | Active venous ulcer |
What risk factors increase the likelihood of developing varicose veins?
| Age Group | Prevalence of Trunk Varicosities |
|---|---|
| 18-24 years | 11.5% |
| 25-34 years | 14.6% |
| 35-44 years | 28.8% |
| 45-54 years | 41.9% |
| 55-64 years | 55.7% |
| Risk Factor | Strength of Evidence |
|---|---|
| Age | Strong |
| Female sex | Strong |
| Pregnancy / Multiparity | Strong |
| Family history | Strong |
| Obesity | Strong |
| Tall stature | Moderate |
| Prolonged standing | Inconclusive |
| Prior DVT (secondary VV) | Strong (for secondary type) |
| HRT | Moderate / Mixed |
| OCP use | Inconclusive |
| Ethnicity | Moderate |
| Constipation | Weak / Inconclusive |
Prepare a notes on varicose veins including all the latest theory and practical rguhs questions In pdf format
RGUHS surgery varicose veins past year questions theory practical
https://www.scribd.com/document/272946304/MS-General-Surgery…
mkdir -p /home/daytona/workspace/varicose-veins-notes && ls /home/daytona/workspace/varicose-veins-notes
~/varicose-veins-notes/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
OUTPUT = "/home/daytona/workspace/varicose-veins-notes/Varicose_Veins_RGUHS_Notes.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm
)
# ── Colour palette ──────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3557")
MED_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
ACCENT = colors.HexColor("#E84545")
GOLD = colors.HexColor("#F0A500")
PALE_YELLOW = colors.HexColor("#FFFBEA")
PALE_GREEN = colors.HexColor("#EAF7EA")
PALE_RED = colors.HexColor("#FFF0F0")
WHITE = colors.white
GREY_LINE = colors.HexColor("#AAAAAA")
DARK_TEXT = colors.HexColor("#1C1C1C")
styles = getSampleStyleSheet()
# ── Custom paragraph styles ──────────────────────────────────────
cover_title = ParagraphStyle(
"cover_title", fontSize=28, leading=34,
textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold"
)
cover_sub = ParagraphStyle(
"cover_sub", fontSize=14, leading=18,
textColor=colors.HexColor("#D0E8FF"), alignment=TA_CENTER, fontName="Helvetica"
)
cover_tag = ParagraphStyle(
"cover_tag", fontSize=11, leading=15,
textColor=GOLD, alignment=TA_CENTER, fontName="Helvetica-Bold"
)
h1 = ParagraphStyle(
"h1", fontSize=15, leading=20, spaceBefore=14, spaceAfter=4,
textColor=WHITE, fontName="Helvetica-Bold", backColor=DARK_BLUE,
leftIndent=-4, rightIndent=-4, borderPad=6
)
h2 = ParagraphStyle(
"h2", fontSize=12, leading=16, spaceBefore=10, spaceAfter=3,
textColor=DARK_BLUE, fontName="Helvetica-Bold",
borderPad=2
)
h3 = ParagraphStyle(
"h3", fontSize=10.5, leading=14, spaceBefore=7, spaceAfter=2,
textColor=MED_BLUE, fontName="Helvetica-Bold"
)
body = ParagraphStyle(
"body", fontSize=9.5, leading=14, spaceBefore=2, spaceAfter=2,
textColor=DARK_TEXT, fontName="Helvetica", alignment=TA_JUSTIFY
)
bullet_style = ParagraphStyle(
"bullet_style", fontSize=9.5, leading=13, spaceBefore=1, spaceAfter=1,
textColor=DARK_TEXT, fontName="Helvetica",
leftIndent=14, firstLineIndent=-10
)
important_box = ParagraphStyle(
"important_box", fontSize=9.5, leading=13, spaceBefore=4, spaceAfter=4,
textColor=colors.HexColor("#7B0000"), fontName="Helvetica-Bold",
backColor=PALE_RED, borderPad=6, leftIndent=4, rightIndent=4
)
note_style = ParagraphStyle(
"note_style", fontSize=9, leading=13, spaceBefore=2, spaceAfter=2,
textColor=colors.HexColor("#005700"), fontName="Helvetica-Oblique",
backColor=PALE_GREEN, borderPad=4, leftIndent=4
)
q_header = ParagraphStyle(
"q_header", fontSize=11, leading=15, spaceBefore=6, spaceAfter=3,
textColor=WHITE, fontName="Helvetica-Bold", backColor=ACCENT,
leftIndent=-4, rightIndent=-4, borderPad=5
)
q_style = ParagraphStyle(
"q_style", fontSize=9.5, leading=14, spaceBefore=3, spaceAfter=2,
textColor=DARK_TEXT, fontName="Helvetica",
leftIndent=14, firstLineIndent=-10
)
footer_note = ParagraphStyle(
"footer_note", fontSize=8, leading=11,
textColor=colors.grey, fontName="Helvetica-Oblique", alignment=TA_CENTER
)
tag_style = ParagraphStyle(
"tag_style", fontSize=8, leading=11,
textColor=WHITE, fontName="Helvetica-Bold",
backColor=MED_BLUE, borderPad=3
)
def HR():
return HRFlowable(width="100%", thickness=1, color=GREY_LINE, spaceAfter=4, spaceBefore=4)
def section(title):
return [Spacer(1, 6), Paragraph(f" {title}", h1), Spacer(1, 4)]
def subsection(title):
return [Paragraph(title, h2)]
def subsubsection(title):
return [Paragraph(title, h3)]
def p(text):
return Paragraph(text, body)
def b(text):
return Paragraph(f"• {text}", bullet_style)
def imp(text):
return Paragraph(f"⚠ {text}", important_box)
def note(text):
return Paragraph(f"✎ {text}", note_style)
def spacer(h=4):
return Spacer(1, h)
story = []
# ═══════════════════════════════════════════════════════════════
# COVER PAGE
# ═══════════════════════════════════════════════════════════════
cover_bg = Table(
[[Paragraph("VARICOSE VEINS", cover_title)],
[Spacer(1, 10)],
[Paragraph("Comprehensive Study Notes", cover_sub)],
[Spacer(1, 6)],
[Paragraph("Theory + Clinical Examination + RGUHS Past Year Questions", cover_tag)],
[Spacer(1, 30)],
[Paragraph("General Surgery | MBBS / MS Examination Preparation", cover_sub)],
[Spacer(1, 8)],
[Paragraph("Based on: Bailey & Love (28th Ed) • Schwartz's Surgery (11th Ed)", cover_sub)],
[Paragraph("Pfenninger & Fowler • Fitzpatrick's Dermatology • Gray's Anatomy", cover_sub)],
[Spacer(1, 40)],
[Paragraph("RGUHS — Rajiv Gandhi University of Health Sciences", cover_tag)],
[Spacer(1, 6)],
[Paragraph("July 2026", cover_sub)],
],
colWidths=[17*cm]
)
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 20),
("RIGHTPADDING", (0,0), (-1,-1), 20),
("ROUNDEDCORNERS", (0,0), (-1,-1), [12,12,12,12]),
]))
story.append(Spacer(1, 1.5*cm))
story.append(cover_bg)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════
# 1. DEFINITION & INTRODUCTION
# ═══════════════════════════════════════════════════════════════
story += section("1. DEFINITION & INTRODUCTION")
story.append(p(
"Varicose veins are abnormally dilated, tortuous, elongated superficial veins of the lower "
"limb resulting from persistent venous hypertension and valvular incompetence. They represent "
"one of the most common conditions causing physical impairment in quality of life, with an "
"adult prevalence of 30–50%."
))
story.append(spacer())
story += subsection("Classification")
data = [
[Paragraph("<b>Type</b>", body), Paragraph("<b>Description</b>", body)],
[Paragraph("Primary (Idiopathic)", body), Paragraph("Intrinsic weakness of venous wall or valvular incompetence; no underlying deep vein disease", body)],
[Paragraph("Secondary", body), Paragraph("Due to deep vein obstruction (post-DVT), pelvic tumours, AV fistula, or pregnancy", body)],
[Paragraph("Congenital", body), Paragraph("Klippel-Trenaunay syndrome, absent/absent valves", body)],
]
t = Table(data, colWidths=[5*cm, 12*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BLUE),
("BACKGROUND", (0,2), (-1,2), WHITE),
("BACKGROUND", (0,3), (-1,3), LIGHT_BLUE),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(t)
# ═══════════════════════════════════════════════════════════════
# 2. SURGICAL ANATOMY
# ═══════════════════════════════════════════════════════════════
story += section("2. SURGICAL ANATOMY")
story += subsection("Superficial Venous System of Lower Limb")
story.append(b("<b>Great Saphenous Vein (GSV):</b> Longest vein in the body. Originates at the dorsal venous arch of the foot, ascends medially, passes anterior to medial malleolus, and drains into the common femoral vein at the saphenofemoral junction (SFJ) in the femoral triangle, 3.5 cm below and lateral to the pubic tubercle."))
story.append(b("<b>Small Saphenous Vein (SSV):</b> Originates posterior to the lateral malleolus, ascends the posterior calf, and drains into the popliteal vein at the saphenopopliteal junction (SPJ) in the popliteal fossa."))
story.append(b("<b>Perforating (Communicating) veins:</b> Connect the superficial to the deep system. Important ones: Cockett's perforators (posterior tibial), Boyd's perforator (upper medial calf), Dodd's/Hunterian perforators (thigh)."))
story.append(b("<b>Deep veins:</b> Femoral, popliteal, posterior tibial, anterior tibial — run within muscle compartments."))
story.append(spacer(4))
story += subsection("Venous Valve Anatomy")
story.append(p(
"Veins of the lower limb contain bicuspid valves that permit only proximal (centripetal) flow. "
"The SFJ valve is the most proximal valve of the superficial system. When it becomes incompetent, "
"blood refluxes from the common femoral vein into the GSV, progressively dilating it and rendering "
"distal valves incompetent — creating a self-propagating cycle of venous hypertension."
))
story.append(note("Key: Perforating vein valves allow flow from superficial to deep only. Incompetence causes reverse flow (deep → superficial), raising superficial venous pressure."))
# ═══════════════════════════════════════════════════════════════
# 3. PATHOPHYSIOLOGY
# ═══════════════════════════════════════════════════════════════
story += section("3. PATHOPHYSIOLOGY")
story.append(p(
"Normal venous return from the lower limb depends on three mechanisms: (1) the calf muscle pump, "
"(2) competent venous valves, and (3) low intra-abdominal pressure. Failure of any of these leads "
"to venous hypertension."
))
story += subsection("Three Pathophysiologic States")
story.append(b("<b>Valvular Insufficiency:</b> Most common cause. Valve leaflets fail to coapt due to primary wall dilation or post-thrombotic damage. Allows retrograde (reflux) blood flow, increasing distal hydrostatic pressure."))
story.append(b("<b>Venous Obstruction:</b> Increased resistance to outflow. Causes include post-DVT scarring, iliac vein compression (May-Thurner syndrome), pelvic masses."))
story.append(b("<b>Calf Muscle Pump Failure:</b> Reduced ambulatory venous pressure lowering. Seen in immobility, neurological conditions, ankle joint stiffness."))
story.append(spacer(4))
story += subsection("Mechanism of Varicosity Formation")
story.append(p(
"The initiating event in primary varicose veins is now believed to be intrinsic dilation of the "
"vein wall (not valve failure first). This dilation prevents cusp coaptation, allowing retrograde "
"flow. Sustained venous hypertension causes: (1) further vein wall dilation, (2) elongation and "
"tortuosity, (3) progressive distal valve incompetence, and (4) eventually tissue changes "
"(lipodermatosclerosis, ulceration)."
))
story.append(imp("Current evidence challenges the classical 'descending incompetence' theory. Reflux can start at any venous segment — not necessarily from the SFJ downward. ~40% of patients with varicose veins have a competent SFJ."))
# ═══════════════════════════════════════════════════════════════
# 4. RISK FACTORS
# ═══════════════════════════════════════════════════════════════
story += section("4. RISK FACTORS")
data2 = [
[Paragraph("<b>Risk Factor</b>", body), Paragraph("<b>Detail / Evidence</b>", body), Paragraph("<b>Strength</b>", body)],
["Age", "Prevalence: 11.5% (18–24 yrs) → 55.7% (55–64 yrs) — Edinburgh Vein Study", "Strong"],
["Female sex", "Higher prevalence; women 4× more likely than nulliparous men for telangiectasias", "Strong"],
["Pregnancy / Multiparity", ">3 pregnancies: saphenous VV 35.5% vs 12% in nulliparous women", "Strong"],
["Family history", "Familial susceptibility well established; genetic vein wall defects", "Strong"],
["Obesity (↑BMI)", "Increased intra-abdominal pressure + venous stasis", "Strong"],
["Tall stature", "Greater hydrostatic pressure column", "Moderate"],
["Prolonged standing", "Occupation-related; inconclusive but accepted clinically", "Moderate"],
["Prior DVT", "Post-thrombotic valve destruction → secondary varicose veins", "Strong"],
["HRT / OCP", "Mixed evidence; large studies (Jukkola) show no significant OCP risk", "Inconclusive"],
["Constipation", "Raised intra-abdominal pressure with straining", "Weak"],
]
t2 = Table(data2, colWidths=[4.5*cm, 9.5*cm, 3*cm])
t2.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTSIZE", (0,0), (-1,-1), 9),
]))
story.append(t2)
# ═══════════════════════════════════════════════════════════════
# 5. CLINICAL FEATURES
# ═══════════════════════════════════════════════════════════════
story += section("5. CLINICAL FEATURES")
story += subsection("A. Symptoms (Chief Complaints)")
symp_data = [
[Paragraph("<b>Symptom</b>", body), Paragraph("<b>Character</b>", body)],
["Aching / Pain", "Dull ache, heaviness, throbbing, burning or 'bursting' sensation — worsens with prolonged standing, improves with elevation"],
["Cosmetic deformity", "Visible, tortuous, bulging subcutaneous veins — most common presenting complaint"],
["Ankle swelling", "Mild dependent oedema; worsens towards evening"],
["Itching (Pruritus)", "Over varicosities; more common with skin complications"],
["Leg fatigue", "Early tiredness, especially after prolonged activity"],
["Cramps", "Nocturnal muscle cramps — common in calf"],
["Heaviness", "Constant sensation of leg heaviness throughout the day"],
]
t3 = Table(symp_data, colWidths=[5*cm, 12*cm])
t3.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(t3)
story.append(spacer(6))
story += subsection("B. Signs on Examination")
story.append(b("<b>Tortuous dilated subcutaneous veins:</b> Clinically obvious in standing position. GSV system involved in ~60% of cases (medial thigh/calf varicosities). SSV system in ~20% (posterolateral calf)."))
story.append(b("<b>Saphena varix:</b> Dilation at SFJ presenting as a groin lump — disappears on lying down; has a cough impulse. Can mimic inguinal hernia or lymph node."))
story.append(b("<b>Ankle flare (Malleolar flare):</b> Fan-shaped dilated intradermal venules around the medial malleolus — sign of significant deep or perforator incompetence."))
story.append(b("<b>Skin changes (advanced disease):</b> Haemosiderin pigmentation (brown), lipodermatosclerosis (woody hardening), atrophie blanche, venous eczema."))
story.append(b("<b>Venous ulceration:</b> Above the medial malleolus (gaiter area). Shallow, irregular, sloping edges, granulating base."))
story += subsection("C. CEAP Classification (Clinical-Etiological-Anatomical-Pathophysiological)")
ceap_data = [
[Paragraph("<b>Class</b>", body), Paragraph("<b>Clinical Finding</b>", body)],
["C0", "No visible or palpable signs of venous disease"],
["C1", "Telangiectasias (spider veins) and/or reticular veins"],
["C2", "Varicose veins (≥3 mm diameter)"],
["C3", "Oedema attributable to venous disease"],
["C4a", "Skin pigmentation or venous eczema"],
["C4b", "Lipodermatosclerosis or atrophie blanche"],
["C5", "Healed venous ulcer"],
["C6", "Active venous ulcer"],
["S/A", "Symptomatic (S) or Asymptomatic (A)"],
]
t4 = Table(ceap_data, colWidths=[3*cm, 14*cm])
t4.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(t4)
# ═══════════════════════════════════════════════════════════════
# 6. CLINICAL TESTS (PRACTICAL EXAMINATION)
# ═══════════════════════════════════════════════════════════════
story.append(PageBreak())
story += section("6. CLINICAL TESTS — PRACTICAL EXAMINATION")
story.append(note("Note: Tourniquet tests and hand-held Doppler have been largely abandoned in favour of duplex ultrasound. However, they remain important for RGUHS practical examinations."))
story += subsection("A. Trendelenburg Test (Brodie-Trendelenburg Test)")
story.append(p("<b>Purpose:</b> To identify the site of incompetence — SFJ, SPJ, or perforators."))
story.append(p("<b>Method:</b>"))
story.append(b("Patient lies supine. Leg elevated 45° to empty veins."))
story.append(b("Saphenous opening compressed with thumb at SFJ (or tourniquet applied at upper thigh)."))
story.append(b("Patient asked to stand quickly."))
story.append(spacer(4))
test_data = [
[Paragraph("<b>Observation</b>", body), Paragraph("<b>Interpretation</b>", body)],
["Veins remain empty with compression; fill rapidly when compression released",
"SFJ incompetence (positive Trendelenburg) — reflux from above"],
["Veins fill from below even with compression maintained",
"Perforator incompetence — reflux from below (mid-thigh or calf perforators)"],
["Veins fill both with and without compression",
"Multiple sites of incompetence"],
]
t5 = Table(test_data, colWidths=[8.5*cm, 8.5*cm])
t5.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t5)
story.append(spacer(6))
story += subsection("B. Multiple Tourniquet Test (Ochsner-Mahorner / Fegan's Method)")
story.append(p("Multiple tourniquets applied at sequential levels with the patient supine and leg elevated. Patient stands — the segment between two tourniquets that fills first indicates a perforator incompetence at that level."))
story.append(spacer(4))
story += subsection("C. Schwartz Test (Percussion Test / Tap Test)")
story.append(b("Patient standing. Examiner places one hand on the lower varicosity."))
story.append(b("Other hand taps the vein proximally."))
story.append(b("A fluid impulse palpated distally indicates the column of blood is uninterrupted — confirms varicose veins with incompetent valves."))
story.append(spacer(4))
story += subsection("D. Morrissey's Cough Test (Auscultation Impulse Test)")
story.append(p("A Doppler probe or stethoscope placed over the SFJ. A distinct 'whoosh' audible on coughing indicates SFJ incompetence. Replaced by duplex ultrasound in modern practice."))
story.append(spacer(4))
story += subsection("E. Fegan's Test (for Perforators)")
story.append(p("Patient stands until veins fill. Examiner palpates along the medial aspect of the calf for defects (gaps) in deep fascia — sites of incompetent perforators. Tender fascial gaps indicate perforator incompetence."))
story.append(spacer(4))
story += subsection("F. Perthes' Test (for Deep Vein Patency)")
story.append(p("<b>Purpose:</b> To assess whether the deep veins are patent before treatment, as surgery is contraindicated if deep veins are blocked."))
story.append(b("Tourniquet applied at mid-thigh with patient standing (veins full)."))
story.append(b("Patient asked to walk briskly for several minutes."))
story.append(b("<b>Normal / Deep veins patent:</b> Superficial veins collapse (blood drains into deep veins via perforators)."))
story.append(b("<b>Deep veins obstructed:</b> Superficial veins become MORE distended and painful — indicates deep vein obstruction; surgery contraindicated."))
story.append(imp("Always perform Perthes' test before planning varicose vein surgery to exclude deep vein obstruction."))
# ═══════════════════════════════════════════════════════════════
# 7. INVESTIGATIONS
# ═══════════════════════════════════════════════════════════════
story += section("7. INVESTIGATIONS")
story += subsection("A. Duplex Ultrasound Scanning (Gold Standard)")
story.append(p(
"Duplex ultrasound (B-mode + colour/spectral Doppler) is now mandatory for all patients "
"before any intervention. Tourniquet tests and hand-held Doppler have been abandoned in "
"favour of this imaging."
))
story.append(b("Performed with patient standing (weight on opposite limb, leg externally rotated)."))
story.append(b("Transducer: 7.5–13 MHz high-frequency linear array probe."))
story.append(b("Reflux defined as: retrograde flow ≥0.5 sec in superficial/crural veins; ≥1 sec in proximal deep veins."))
story.append(b("'Mickey Mouse' sign: transverse view at groin showing CFV + CFA + GSV (CFV medial to CFA, GSV medial to CFV)."))
story.append(spacer(4))
story.append(p("<b>Key information obtained:</b>"))
story.append(b("Presence and distribution of reflux in superficial and deep systems"))
story.append(b("Exact sites of SFJ, SPJ, and perforator incompetence"))
story.append(b("Deep vein patency / obstruction"))
story.append(b("Diameter and tortuosity of GSV/SSV (determines suitability for endovenous ablation)"))
story.append(b("Presence of previous DVT (post-thrombotic changes)"))
story.append(spacer(4))
story += subsection("B. Other Investigations")
story.append(b("<b>Venography (ascending/descending):</b> Largely replaced by duplex. Used in complex/recurrent cases."))
story.append(b("<b>CT/MR venography:</b> For pelvic source of reflux, May-Thurner syndrome, congenital anomalies."))
story.append(b("<b>Plethysmography:</b> Air plethysmography, photoplethysmography — functional assessment of venous hypertension; mainly used in research."))
story.append(b("<b>Ambulatory venous pressure (AVP):</b> Direct measurement via dorsal foot vein cannula; the reference standard for venous insufficiency assessment but invasive."))
# ═══════════════════════════════════════════════════════════════
# 8. COMPLICATIONS
# ═══════════════════════════════════════════════════════════════
story.append(PageBreak())
story += section("8. COMPLICATIONS")
comp_data = [
[Paragraph("<b>Type</b>", body), Paragraph("<b>Complications</b>", body)],
["Acute", "• Bleeding (rupture of superficial varix)\n• Superficial thrombophlebitis (thrombosis with inflammation)"],
["Chronic skin changes", "• Lipodermatosclerosis (woody induration of gaiter area)\n• Haemosiderin pigmentation (brown discolouration)\n• Stasis/venous eczema\n• Atrophie blanche (white scarring)"],
["Ulceration", "• Venous leg ulcer — medial gaiter area, above medial malleolus\n• Represents end-stage chronic venous insufficiency"],
["Haematological", "• Superficial vein thrombosis (thrombophlebitis)\n• Can extend to DVT via SFJ"],
["Haemorrhage", "• Varix may rupture spontaneously or after minor trauma\n• Profuse — due to high venous pressure; controlled by limb elevation + pressure"],
]
t6 = Table(comp_data, colWidths=[4.5*cm, 12.5*cm])
t6.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, PALE_RED]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(t6)
# ═══════════════════════════════════════════════════════════════
# 9. TREATMENT
# ═══════════════════════════════════════════════════════════════
story += section("9. TREATMENT")
story += subsection("A. Conservative Management")
story.append(b("<b>Compression stockings/hosiery:</b> Class II (20–30 mmHg) for mild symptoms; Class III (30–40 mmHg) for severe disease. First-line treatment; relieved symptoms in many patients."))
story.append(b("Weight reduction, leg elevation, regular walking."))
story.append(b("Avoidance of prolonged standing."))
story.append(note("Indications for intervention: symptoms worsening despite compression, lipodermatosclerosis, active/healed venous ulcer, thrombophlebitis, bleeding."))
story.append(spacer(6))
story += subsection("B. Endovenous Thermal Ablation (FIRST-LINE INTERVENTIONAL)")
story.append(p(
"Endovenous ablation has revolutionised varicose vein treatment. "
"It is now preferred over open surgery for most patients with truncal reflux."
))
story.append(p("<b>1. Endovenous Laser Ablation (EVLA/EVLT)</b>"))
story.append(b("Laser fibre inserted percutaneously under ultrasound guidance."))
story.append(b("Tumescent anaesthesia injected perivenously."))
story.append(b("Energy delivery ~60–80 J/cm as fibre withdrawn."))
story.append(b("Heat causes endothelial destruction → fibrosis → occlusion."))
story.append(b("Wavelengths: 810–1470 nm (longer wavelengths target water in vein wall)."))
story.append(spacer(4))
story.append(p("<b>2. Radiofrequency Ablation (RFA)</b>"))
story.append(b("Catheter delivers radiofrequency energy (85°C) to vein wall."))
story.append(b("ClosureFast system: 7-cm treatment cycles of 20 seconds each."))
story.append(b("Similar efficacy to EVLA; less post-procedural pain."))
story.append(spacer(6))
story += subsection("C. Non-Thermal Ablation")
story.append(p("<b>1. Ultrasound-Guided Foam Sclerotherapy (UGFS)</b>"))
story.append(b("Sclerosant (sodium tetradecyl sulphate or polidocanol) mixed with air in 1:3 or 1:4 ratio using Tessari method (two syringes + 3-way tap)."))
story.append(b("Foam maximises endothelial contact and displaces blood."))
story.append(b("Less effective than thermal ablation for GSV; preferred for tributaries and recurrent veins."))
story.append(b("Risk: visual disturbance, stroke (in PFO patients), skin necrosis."))
story.append(spacer(4))
story.append(p("<b>2. Cyanoacrylate Glue (VenaSeal)</b>"))
story.append(b("Medical-grade cyanoacrylate injected into lumen under ultrasound; no tumescent anaesthesia required."))
story.append(b("No post-procedure compression needed."))
story.append(b("Good early results; long-term data emerging."))
story.append(spacer(4))
story.append(p("<b>3. Mechanochemical Ablation (MOCA / ClariVein)</b>"))
story.append(b("Rotating wire damages endothelium while simultaneously injecting sclerosant."))
story.append(b("Non-thermal; no tumescent anaesthesia required."))
story.append(spacer(6))
story += subsection("D. Surgical Treatment (Open Surgery)")
story.append(p(
"Still used when endovenous techniques are not feasible (very tortuous, large diameter, "
"or patient preference). Principle: eliminate sites of reflux."
))
story.append(b("<b>High ligation and stripping of GSV:</b> SFJ flush ligation + stripping GSV from groin to knee (not below knee — to avoid saphenous nerve damage)."))
story.append(b("<b>Multiple phlebectomies (Stab avulsion / Hook phlebectomy):</b> Tributary varices avulsed through 2–3 mm stab incisions."))
story.append(b("<b>SSV surgery:</b> SPJ ligation (complex — variable anatomy; always requires pre-operative duplex marking)."))
story.append(b("<b>Subfascial Endoscopic Perforator Surgery (SEPS):</b> Endoscopic division of incompetent perforators. Used in severe CVI with healed/active ulceration."))
story.append(spacer(4))
story.append(imp("Surgery for varicose veins is CONTRAINDICATED if deep veins are obstructed (Perthes' test positive) — superficial veins act as collateral drainage."))
story += subsection("E. Sclerotherapy (Injection Sclerotherapy)")
story.append(b("Sclerosant injected directly into vein → endothelial damage → thrombosis → fibrosis."))
story.append(b("Agents: Sodium tetradecyl sulphate (STS), polidocanol, hypertonic saline."))
story.append(b("Concentrations: 0.1–0.25% for telangiectasias; higher for larger veins."))
story.append(b("Compression applied post-injection for 3–5 days, then stockings for 2 weeks."))
story.append(b("Complications: Pigmentation, skin necrosis, DVT, anaphylaxis."))
# ═══════════════════════════════════════════════════════════════
# 10. COMPARISON TABLE
# ═══════════════════════════════════════════════════════════════
story += section("10. TREATMENT COMPARISON")
comp_t = [
[Paragraph("<b>Modality</b>", body), Paragraph("<b>Mechanism</b>", body), Paragraph("<b>Anaesthesia</b>", body), Paragraph("<b>Key Advantage</b>", body)],
["EVLA", "Laser thermal energy", "Tumescent (local)", "Excellent long-term results"],
["RFA", "Radiofrequency thermal", "Tumescent (local)", "Less post-op pain vs EVLA"],
["UGFS", "Chemical sclerosant (foam)", "None needed", "Cheap; good for tributaries"],
["Cyanoacrylate", "Adhesive occlusion", "Local (minimal)", "No compression needed"],
["MOCA", "Mechanical + chemical", "None / local", "No heat, no tumescence"],
["Surgery (L+S)", "Remove vein physically", "General/spinal", "Definitive; long track record"],
["Sclerotherapy", "Chemical sclerosant (liquid)", "None", "Telangiectasias/spider veins"],
]
tc = Table(comp_t, colWidths=[3.5*cm, 4.5*cm, 3.5*cm, 5.5*cm])
tc.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(tc)
# ═══════════════════════════════════════════════════════════════
# 11. RGUHS PAST YEAR QUESTIONS
# ═══════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(Paragraph(" RGUHS PAST YEAR QUESTIONS", q_header))
story.append(Spacer(1, 6))
story += subsection("THEORY QUESTIONS — Long Answer (10 Marks)")
long_qs = [
"1. Describe the anatomy of the great saphenous vein. Discuss the clinical features, investigations, and management of varicose veins. (Most Repeated)",
"2. A 35-year-old woman presents with dilated tortuous veins on the medial aspect of both legs for 3 years. Describe the pathophysiology, clinical examination, and treatment options for varicose veins.",
"3. Discuss the surgical anatomy relevant to varicose vein surgery. Describe the Trendelenburg operation and its complications.",
"4. Write in detail about the CEAP classification of chronic venous disease. Discuss the management of venous leg ulcer.",
"5. Describe the complications of varicose veins. How would you manage a patient with lipodermatosclerosis and a non-healing venous ulcer?",
"6. Discuss the endovenous treatment options for varicose veins with their mechanisms and comparative outcomes.",
"7. Enumerate the clinical tests for varicose veins. Explain the Trendelenburg test, Perthes' test, and Fegan's test in detail.",
]
for q in long_qs:
story.append(Paragraph(q, q_style))
story.append(Spacer(1, 3))
story.append(HR())
story += subsection("THEORY QUESTIONS — Short Answer (5 Marks)")
short_qs = [
"1. Briefly describe the pathophysiology of varicose veins.",
"2. What is saphena varix? How does it differ from inguinal hernia?",
"3. Write a note on duplex ultrasound assessment of varicose veins.",
"4. What is the Trendelenburg test? What are its interpretations?",
"5. Write a note on foam sclerotherapy.",
"6. What is Perthes' test? Why is it important?",
"7. Describe the CEAP classification of varicose veins.",
"8. Enumerate the complications of varicose veins.",
"9. Write a note on endovenous laser ablation (EVLA).",
"10. What are the indications for surgical treatment of varicose veins?",
"11. Describe the anatomy of the saphenofemoral junction.",
"12. Write a short note on venous leg ulcer.",
"13. What are the risk factors for varicose veins?",
"14. Describe Fegan's technique for identification of incompetent perforators.",
"15. What are the contraindications for varicose vein surgery?",
]
for q in short_qs:
story.append(Paragraph(q, q_style))
story.append(Spacer(1, 2))
story.append(HR())
story += subsection("PRACTICAL / VIVA QUESTIONS")
viva_data = [
[Paragraph("<b>Topic</b>", body), Paragraph("<b>Expected Viva Questions</b>", body)],
["Clinical exam of VV",
"• How do you examine a patient with varicose veins?\n"
"• What is the patient position for VV examination?\n"
"• What do you look for in the groin?"],
["Trendelenburg test",
"• How do you perform the Trendelenburg test?\n"
"• What are the possible outcomes and interpretations?\n"
"• What does a negative Trendelenburg indicate?"],
["Perthes' test",
"• Why is Perthes' test done?\n"
"• What happens if Perthes' test is positive?\n"
"• Can you still operate on this patient?"],
["Duplex ultrasound",
"• What does 'Mickey Mouse sign' mean?\n"
"• How long must reflux last to be significant in GSV?\n"
"• What is the position for scanning?"],
["Surgical anatomy",
"• Where does the GSV drain?\n"
"• How far is the SFJ from the pubic tubercle?\n"
"• What structures are at risk during SFJ ligation?"],
["Treatment",
"• What is the treatment of choice for GSV reflux?\n"
"• When would you do foam sclerotherapy vs laser?\n"
"• What is tumescent anaesthesia?"],
["Complications",
"• Why does a venous ulcer form above the medial malleolus?\n"
"• What is lipodermatosclerosis?\n"
"• How would you manage a suddenly bleeding varicosity?"],
]
tv = Table(viva_data, colWidths=[4.5*cm, 12.5*cm])
tv.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, PALE_YELLOW]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("FONTSIZE", (0,0), (-1,-1), 9),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tv)
# ═══════════════════════════════════════════════════════════════
# 12. HIGH-YIELD POINTS / MEMORY AIDS
# ═══════════════════════════════════════════════════════════════
story.append(PageBreak())
story += section("12. HIGH-YIELD POINTS & MEMORY AIDS")
story += subsection("Must-Know Facts for RGUHS")
hq = [
"GSV is the LONGEST vein in the body — drains into common femoral vein at SFJ (3.5 cm below and lateral to pubic tubercle).",
"SSV drains into popliteal vein at SPJ (variable — always need pre-op duplex marking).",
"Reflux duration for significance: ≥0.5 sec (superficial veins), ≥1.0 sec (deep veins).",
"GSV is stripped from groin to KNEE only (not to ankle — saphenous nerve injury risk below knee).",
"Perthes' test positive → deep veins obstructed → surgery CONTRAINDICATED (superficial veins = collateral).",
"Saphena varix = dilated SFJ → disappears when lying down, cough impulse present, can mimic hernia.",
"Venous ulcer: Medial gaiter area, above medial malleolus, shallow sloping edges, granulating base.",
"'Mickey Mouse' sign on duplex: CFV + CFA + GSV arrangement at groin (CFV medial).",
"Tessari method for foam: 1:3 or 1:4 sclerosant:air, vigorously mixed between two syringes via 3-way tap.",
"Ankle flare (malleolar flare) = intradermal venules around medial malleolus → sign of significant perforator/deep incompetence.",
"CEAP C2 = varicose veins; C4b = lipodermatosclerosis; C6 = active ulcer.",
"Post-thrombotic syndrome = secondary varicose veins after DVT — due to valve destruction and obstruction.",
"Current theory: Initiating event in primary VV = vein wall dilation (NOT valve failure first).",
"~40% of varicose vein patients have a COMPETENT SFJ — classical 'descending incompetence' theory challenged.",
]
for idx, item in enumerate(hq, 1):
story.append(Paragraph(f"<b>{idx}.</b> {item}", bullet_style))
story.append(Spacer(1, 2))
story.append(spacer(8))
story += subsection("Mnemonic: Causes of Varicose Veins — 'FATTOP'")
mnemonic_data = [
["F", "Family history (genetic)"],
["A", "Age (increasing)"],
["T", "Thrombosis (DVT — secondary VV)"],
["T", "Tall stature / Tumours (pelvic)"],
["O", "Obesity / Occupation (prolonged standing)"],
["P", "Pregnancy (multiple)"],
]
tm = Table(mnemonic_data, colWidths=[2*cm, 15*cm])
tm.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,-1), GOLD),
("TEXTCOLOR", (0,0), (0,-1), DARK_BLUE),
("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 11),
("ROWBACKGROUNDS", (0,0), (-1,-1), [PALE_YELLOW, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (0,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(tm)
story.append(spacer(8))
story += subsection("Mnemonic: Tests for Varicose Veins — 'TFPMS'")
tests_data = [
["T", "Trendelenburg test (SFJ/perforator incompetence)"],
["F", "Fegan's test (perforator sites — fascial gaps)"],
["P", "Perthes' test (deep vein patency)"],
["M", "Morrissey's cough test (SFJ — Doppler whoosh)"],
["S", "Schwartz/Tap test (column of blood continuity)"],
]
ts2 = Table(tests_data, colWidths=[2*cm, 15*cm])
ts2.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,-1), MED_BLUE),
("TEXTCOLOR", (0,0), (0,-1), WHITE),
("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 11),
("ROWBACKGROUNDS", (0,0), (-1,-1), [LIGHT_BLUE, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (0,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(ts2)
# ═══════════════════════════════════════════════════════════════
# FOOTER
# ═══════════════════════════════════════════════════════════════
story.append(Spacer(1, 16))
story.append(HR())
story.append(Paragraph(
"Sources: Bailey & Love's Short Practice of Surgery (28th Ed) | Schwartz's Principles of Surgery (11th Ed) | "
"Pfenninger & Fowler's Procedures for Primary Care (3rd Ed) | Fitzpatrick's Dermatology (5th Ed) | "
"Mulholland & Greenfield's Surgery (7th Ed) | Gray's Anatomy for Students",
footer_note
))
story.append(Paragraph(
"Prepared for RGUHS General Surgery Examination | July 2026 | For educational use only",
footer_note
))
# BUILD
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/varicose-veins-notes && python generate_pdf.py
ls -lh /home/daytona/workspace/varicose-veins-notes/Varicose_Veins_RGUHS_Notes.pdf
Varicose Veins RGUHS Notes
PDF Document · PDF
| Section | Content |
|---|---|
| 1. Definition & Introduction | Definition, primary/secondary/congenital classification |
| 2. Surgical Anatomy | GSV, SSV, SFJ, SPJ, perforating veins, valve anatomy |
| 3. Pathophysiology | Three pathophysiologic states, mechanism of varicosity formation, current theory challenging classical descending incompetence |
| 4. Risk Factors | Tabulated with evidence strength (Edinburgh Vein Study data) |
| 5. Clinical Features | Symptoms table, signs, CEAP classification table (C0–C6) |
| 6. Clinical Tests (Practical Exam) | Trendelenburg, Multiple Tourniquet, Schwartz, Morrissey's, Fegan's, Perthes' tests - with methods and interpretations |
| 7. Investigations | Duplex ultrasound (gold standard), Mickey Mouse sign, reflux duration criteria, venography, plethysmography |
| 8. Complications | Acute + chronic, haemorrhage, thrombophlebitis, ulceration |
| 9. Treatment | Conservative → EVLA → RFA → UGFS/foam → Cyanoacrylate → MOCA → Surgery (L+S) → Sclerotherapy |
| 10. Treatment Comparison Table | All modalities side by side |
| 11. RGUHS Past Year Questions | 7 Long Answer (10 marks) + 15 Short Answer (5 marks) + Viva table with 7 topic categories |
| 12. High-Yield Points + Mnemonics | 14 must-know facts + FATTOP (causes) + TFPMS (tests) mnemonics |