Give me detailed information about mesh used in different hernia repair based on standard textbook and make a pdf of it
mkdir -p /home/daytona/workspace/hernia-mesh-pdf
~/hernia-mesh-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib import colors
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 BaseDocTemplate, Frame, PageTemplate
OUTPUT = "/home/daytona/workspace/hernia-mesh-pdf/Mesh_in_Hernia_Repair.pdf"
# ── page setup ──────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2.2*cm, rightMargin=2.2*cm,
topMargin=2.5*cm, bottomMargin=2.5*cm,
title="Mesh in Hernia Repair",
author="Orris Medical Reference",
)
W, H = A4
# ── colour palette ───────────────────────────────────────────────────────────
NAVY = colors.HexColor("#0D2B55")
TEAL = colors.HexColor("#1A6E77")
LIGHT_BG = colors.HexColor("#EAF4F6")
ACCENT = colors.HexColor("#E67E22")
TABLE_HDR = colors.HexColor("#1A6E77")
TABLE_ALT = colors.HexColor("#F0F8F9")
WHITE = colors.white
GREY_TEXT = colors.HexColor("#4A4A4A")
RULE_COL = colors.HexColor("#1A6E77")
# ── styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
cover_title = ParagraphStyle("cover_title",
fontName="Helvetica-Bold", fontSize=28, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=8)
cover_sub = ParagraphStyle("cover_sub",
fontName="Helvetica", fontSize=14, textColor=colors.HexColor("#B8DDE1"),
alignment=TA_CENTER, spaceAfter=4)
cover_src = ParagraphStyle("cover_src",
fontName="Helvetica-Oblique", fontSize=10, textColor=colors.HexColor("#93C9CE"),
alignment=TA_CENTER)
h1 = ParagraphStyle("h1",
fontName="Helvetica-Bold", fontSize=16, textColor=NAVY,
spaceBefore=18, spaceAfter=6, borderPad=4)
h2 = ParagraphStyle("h2",
fontName="Helvetica-Bold", fontSize=13, textColor=TEAL,
spaceBefore=12, spaceAfter=4)
h3 = ParagraphStyle("h3",
fontName="Helvetica-BoldOblique", fontSize=11, textColor=ACCENT,
spaceBefore=8, spaceAfter=3)
body = ParagraphStyle("body",
fontName="Helvetica", fontSize=10, textColor=GREY_TEXT,
leading=15, alignment=TA_JUSTIFY, spaceAfter=6)
bullet = ParagraphStyle("bullet",
fontName="Helvetica", fontSize=10, textColor=GREY_TEXT,
leading=14, leftIndent=16, bulletIndent=4,
spaceAfter=3, alignment=TA_LEFT)
note_style = ParagraphStyle("note",
fontName="Helvetica-Oblique", fontSize=9, textColor=colors.HexColor("#5C5C5C"),
leftIndent=12, spaceAfter=4, leading=13)
source_style = ParagraphStyle("source",
fontName="Helvetica-Oblique", fontSize=8, textColor=colors.HexColor("#888888"),
spaceAfter=2, leading=11)
def rule(): return HRFlowable(width="100%", thickness=1, color=RULE_COL, spaceAfter=6)
def thin_rule(): return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC"), spaceAfter=4)
def heading1(txt): return [rule(), Paragraph(txt, h1)]
def heading2(txt): return [Paragraph(txt, h2)]
def heading3(txt): return [Paragraph(txt, h3)]
def para(txt): return Paragraph(txt, body)
def bul(txt): return Paragraph(f"• {txt}", bullet)
def src(txt): return Paragraph(f"<i>Source: {txt}</i>", source_style)
def note(txt): return Paragraph(txt, note_style)
def make_table(data, col_widths=None, header_rows=1):
tbl = Table(data, colWidths=col_widths, repeatRows=header_rows)
n_rows = len(data)
row_bg = [(('BACKGROUND', (0, i), (-1, i), TABLE_ALT) if i % 2 == 0
else ('BACKGROUND', (0, i), (-1, i), WHITE))
for i in range(header_rows, n_rows)]
style = TableStyle([
('BACKGROUND', (0, 0), (-1, header_rows-1), TABLE_HDR),
('TEXTCOLOR', (0, 0), (-1, header_rows-1), WHITE),
('FONTNAME', (0, 0), (-1, header_rows-1), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, header_rows-1), 9),
('ALIGN', (0, 0), (-1, -1), 'LEFT'),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
('FONTNAME', (0, header_rows), (-1, -1), 'Helvetica'),
('FONTSIZE', (0, header_rows), (-1, -1), 9),
('ROWBACKGROUND', (0, header_rows), (-1, -1), [TABLE_ALT, WHITE]),
('GRID', (0, 0), (-1, -1), 0.4, colors.HexColor("#BBBBBB")),
('TOPPADDING', (0, 0), (-1, -1), 5),
('BOTTOMPADDING', (0, 0), (-1, -1), 5),
('LEFTPADDING', (0, 0), (-1, -1), 6),
('RIGHTPADDING', (0, 0), (-1, -1), 6),
('ROWBACKGROUND', (0, header_rows), (-1, -1), [TABLE_ALT, WHITE]),
] + row_bg)
tbl.setStyle(style)
return tbl
# ── content ──────────────────────────────────────────────────────────────────
story = []
# ─── COVER PAGE ─────────────────────────────────────────────────────────────
# Draw a coloured banner manually via a Table
cover_data = [[Paragraph("MESH IN HERNIA REPAIR", cover_title)],
[Paragraph("A Comprehensive Surgical Reference", cover_sub)],
[Spacer(1, 0.3*cm)],
[Paragraph("Types · Properties · Positioning · Hernia-Specific Applications", cover_sub)],
[Spacer(1, 0.5*cm)],
[Paragraph("Based on Bailey & Love's Surgery 28e · Sabiston Surgery 21e · Fischer's Mastery of Surgery 8e<br/>"
"Mulholland & Greenfield's Surgery 7e · Current Surgical Therapy 14e", cover_src)],
]
cover_tbl = Table(cover_data, colWidths=[16*cm])
cover_tbl.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, -1), NAVY),
('TOPPADDING', (0, 0), (-1, -1), 14),
('BOTTOMPADDING', (0, 0), (-1, -1), 14),
('LEFTPADDING', (0, 0), (-1, -1), 20),
('RIGHTPADDING', (0, 0), (-1, -1), 20),
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
('ROUNDEDCORNERS', [8, 8, 8, 8]),
]))
story.append(Spacer(1, 1.5*cm))
story.append(cover_tbl)
story.append(Spacer(1, 0.8*cm))
# Quick-reference box
intro_box_data = [[
Paragraph(
"<b>Key Principle:</b> Closure of a hernia defect alone carries a high recurrence rate. "
"Reinforcement with a non-absorbable mesh significantly reduces — but does not eliminate — recurrence. "
"Understanding mesh technology is therefore essential for every hernia surgeon.",
ParagraphStyle("box_body", fontName="Helvetica", fontSize=10,
textColor=NAVY, leading=14, alignment=TA_JUSTIFY)
)
]]
intro_box = Table(intro_box_data, colWidths=[16*cm])
intro_box.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, -1), LIGHT_BG),
('TOPPADDING', (0, 0), (-1, -1), 10),
('BOTTOMPADDING', (0, 0), (-1, -1), 10),
('LEFTPADDING', (0, 0), (-1, -1), 14),
('RIGHTPADDING', (0, 0), (-1, -1), 14),
('BOX', (0, 0), (-1, -1), 1.5, TEAL),
]))
story.append(intro_box)
story.append(Spacer(1, 0.4*cm))
date_style = ParagraphStyle("date", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.grey, alignment=TA_CENTER)
story.append(Paragraph("Prepared June 2026 | Orris Medical Reference", date_style))
story.append(PageBreak())
# ─── SECTION 1: What is Mesh? ────────────────────────────────────────────────
story += heading1("1. What is Mesh in Hernia Repair?")
story.append(para(
"The term <b>mesh</b> refers to a prosthetic material — either a net or flat sheet — used to "
"strengthen a hernia repair. Mesh may be employed in three main ways:"
))
for b in [
"<b>Bridge a defect:</b> Mesh is fixed as a tension-free patch directly over the defect, relying on generous overlap onto surrounding strong tissue.",
"<b>Plug a defect:</b> A plug of mesh is pushed into the defect. Now largely abandoned due to 'meshoma' formation, migration, erosion into adjacent organs, and fistula.",
"<b>Augment a repair:</b> The defect is first closed with sutures and mesh is then added for reinforcement in a tension-free manner (currently the preferred approach).",
]:
story.append(bul(b))
story.append(para(
"Suturing mesh edge-to-edge into a defect (<i>inlay</i>) with no overlap is <b>not recommended</b>. "
"Primary closure followed by tension-free mesh reinforcement is the modern standard."
))
story.append(src("Bailey & Love's Short Practice of Surgery, 28th Edition, p. 1084"))
story.append(Spacer(1, 0.3*cm))
# ─── SECTION 2: Mesh Types ───────────────────────────────────────────────────
story += heading1("2. Classification of Mesh Types")
story += heading2("2.1 By Gross Structure")
story.append(para(
"Meshes are broadly divided by their physical architecture:"
))
structure_data = [
["Type", "Description", "Tissue Integration", "Fixation Required"],
["Net mesh\n(woven/knitted)", "Porous structure with spaces between filaments", "Native tissue ingrowth between strands; integrated within months", "Glue, sutures, tacks/staples — or none (extraperitoneal repair)"],
["Sheet mesh\n(non-porous)", "Flat, impermeable sheet with perforations", "No ingrowth; encapsulated by fibrous tissue over time", "Strong, non-absorbable fixation mandatory to prevent migration"],
]
story.append(make_table(structure_data, col_widths=[3.5*cm, 4.5*cm, 4.5*cm, 4*cm]))
story.append(src("Bailey & Love's Surgery 28e"))
story.append(Spacer(1, 0.3*cm))
story += heading2("2.2 Synthetic Mesh")
story.append(para(
"The vast majority of meshes in current use are <b>synthetic polymers</b>. "
"Three materials dominate:"
))
synth_data = [
["Material", "Chemical Nature", "Key Properties", "Notable Behaviour"],
["Polypropylene (PP)", "Inert, hydrophobic monofilament", "Does not generate immune response; resists bacterial ingrowth", "Most widely used; available in light, mid, and heavyweight variants"],
["Polyester (PE)", "Hydrophilic; often multifilament", "Encourages microvascular ingrowth; strong", "Multifilament structure less tolerant of infection; must be removed if infected"],
["Polytetrafluoroethylene (PTFE / ePTFE)", "Flat laminar sheets; microporous", "Very inert; resistant to both tissue ingrowth and adhesion formation", "Excellent adhesion barrier but cannot withstand infection — must be removed; newer monofilament PTFE hybrids show promise"],
]
story.append(make_table(synth_data, col_widths=[3.5*cm, 3.5*cm, 4.5*cm, 5*cm]))
story.append(src("Bailey & Love's Surgery 28e, p. 1085; Mulholland & Greenfield's Surgery 7e, p. 3672"))
story.append(Spacer(1, 0.3*cm))
story += heading2("2.3 Biological Mesh")
story.append(para(
"<b>Biological meshes</b> are sheets of sterilised, decellularised connective tissue derived from:"
))
for b in [
"Human or animal dermis",
"Bovine pericardium",
"Porcine intestinal submucosa",
]:
story.append(bul(b))
story.append(para(
"They provide a <b>scaffold</b> to encourage neovascular ingrowth, fibroblast infiltration, "
"and new collagen deposition. Host enzymes eventually break down the implant and replace it "
"with autologous fibrous tissue (tissue remodelling). "
"However, in the presence of infection, some biologic meshes degrade rapidly before remodelling "
"can occur, leading to early recurrence. Chemically cross-linked products resist this breakdown "
"but at the cost of slower remodelling. They are <b>expensive</b> and their precise role in "
"abdominal wall repair is still evolving."
))
story.append(note("Hernia recurrence with biologic mesh can reach up to 21% in some series "
"(Sleisenger & Fordtran's GI & Liver Disease)."))
story.append(src("Bailey & Love's Surgery 28e, p. 1085; Sleisenger & Fordtran's GI & Liver Disease"))
story.append(Spacer(1, 0.3*cm))
story += heading2("2.4 Absorbable / Biosynthetic Mesh")
story.append(para(
"<b>Rapidly absorbable synthetic meshes</b> (polyglycolic acid, collagen, polyhydroxybutyrate) "
"are used only for <i>temporary abdominal wall closure</i> and short-term buttressing — "
"<b>not</b> for definitive hernia repair, as they absorb too quickly and induce minimal collagen deposition."
))
story.append(para(
"<b>Slowly absorbable biosynthetic meshes</b> are designed to be gradually degraded and replaced "
"by strong native collagenous fibrosis. They are biologic or biosynthetic mesh and are preferred over "
"permanent synthetic mesh in contaminated/potentially contaminated fields. Long-term outcomes remain to be established."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1086; Current Surgical Therapy 14e"))
story.append(Spacer(1, 0.3*cm))
# ─── SECTION 3: Mesh Properties ─────────────────────────────────────────────
story += heading1("3. Key Mesh Properties")
story.append(para(
"Beyond material composition, the <b>physical properties</b> of a mesh determine its clinical behaviour. "
"These are often poorly understood but are critically important."
))
story += heading2("3.1 Pore Size")
pore_data = [
["Category", "Pore Size", "Clinical Implications"],
["Microporous", "< 100 µm", "Higher bacterial adherence; impedes host immunity; creates bridging fibrosis; stiff; more chronic pain risk"],
["Small-pore", "100–600 µm", "Intermediate; common in heavy-weight meshes"],
["Medium-pore", "600–1,000 µm", "Better bacterial clearance"],
["Large-pore", "1,000–2,000 µm", "Preferred: better tissue integration, less contracture, better infection tolerance"],
["Very large-pore", "≥ 2,000 µm", "Maximum flexibility; lowest foreign body reaction"],
]
story.append(make_table(pore_data, col_widths=[3.5*cm, 3.5*cm, 9.5*cm]))
story.append(para(
"<b>Current recommendation:</b> Pore size of <b>≥ 1 mm (1,000 µm)</b> in all directions is preferred "
"to promote elastic collagen ingrowth and minimise chronic pain and contracture."
))
story.append(src("Mulholland & Greenfield's Surgery 7e, p. 3672–3673; Bailey & Love's Surgery 28e, p. 1085"))
story.append(Spacer(1, 0.2*cm))
story += heading2("3.2 Mesh Density / Weight")
density_data = [
["Category", "Density", "Strength", "Infection Tolerance", "Recurrence Risk"],
["Ultra lightweight", "< 35 g/m²", "Lower", "High", "Higher (ventral)"],
["Lightweight", "35–50 g/m²", "Moderate", "High", "Moderate"],
["Mid-weight", "50–90 g/m²", "Good", "Moderate", "Moderate"],
["Heavyweight", "> 90 g/m²", "Highest (small pore)", "Low — infection = usually explant", "Lowest"],
]
story.append(make_table(density_data, col_widths=[3.5*cm, 3*cm, 2.8*cm, 3.2*cm, 4*cm]))
story.append(note(
"All currently available heavyweight meshes are also small-pore. "
"Light/ultra-light weight meshes are associated with higher recurrence in ventral hernia repair "
"but are better tolerated in terms of infection and patient comfort."
))
story.append(src("Mulholland & Greenfield's Surgery 7e, p. 3673"))
story.append(Spacer(1, 0.2*cm))
story += heading2("3.3 Mesh Contracture ('Shrinkage')")
story.append(para(
"The mesh itself does not shrink. Rather, progressive contraction of fibrous tissue growing into the mesh "
"('mesh contracture') reduces the effective coverage area — by <b>more than 50%</b> in some cases. "
"Dense/heavyweight meshes provoke a greater fibrous reaction, leading to collagen contraction, "
"mesh stiffening, impaired abdominal wall elasticity, foreign body sensation, and pain. "
"Thin-stranded, large-pore meshes are preferred for their better integration and less contracture."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1085"))
story.append(Spacer(1, 0.2*cm))
story += heading2("3.4 Filament Structure")
struct_data = [
["Structure", "Example Materials", "Infection Tolerance", "Notes"],
["Monofilament, large-pore", "Polypropylene", "Good — can often be salvaged", "Preferred for contaminated/potentially contaminated fields"],
["Multifilament", "Polyester", "Poor — typically must be removed", "Greater risk in infected fields"],
["Microporous laminar", "ePTFE (expanded PTFE)", "Very poor — must be removed", "Best adhesion barrier; no infection tolerance"],
["Composite (dual-layer)", "PP + anti-adhesive barrier", "Poor — usually must be removed", "Designed for intraperitoneal placement"],
["Monofilament PTFE hybrid", "Newer knitted PTFE", "Likely better (limited data)", "Behaves more like monofilament PP/PE"],
]
story.append(make_table(struct_data, col_widths=[3.5*cm, 3.5*cm, 3.5*cm, 6*cm]))
story.append(src("Mulholland & Greenfield's Surgery 7e, p. 3673"))
story.append(Spacer(1, 0.3*cm))
story += heading2("3.5 Barrier Coatings (Tissue-Separating Mesh)")
story.append(para(
"Standard meshes placed within the peritoneal cavity promote <b>unwanted adhesions</b> to bowel, "
"risking obstruction, erosion, and fistulation. "
"Anti-adhesive barrier meshes have one 'sticky' (parietal) side and one 'slippery' (visceral) side. "
"Common barrier materials include:"
))
for b in ["Polycellulose", "Collagen", "PTFE (on one surface)", "Oxidised regenerated cellulose"]:
story.append(bul(b))
story.append(para(
"<b>No barrier is 100% effective</b> at preventing adhesions. "
"Current practice avoids intraperitoneal mesh placement whenever possible, "
"preferring extraperitoneal positions."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1086; Mulholland & Greenfield's Surgery 7e, p. 3673"))
story.append(PageBreak())
# ─── SECTION 4: Mesh Positioning ─────────────────────────────────────────────
story += heading1("4. Positioning the Mesh")
story.append(para(
"The strength of a mesh repair depends on <b>host-tissue ingrowth</b>. "
"Mesh should be laid tension-free on a firm, well-vascularised tissue bed "
"with <b>generous overlap</b> of the hernia zone. Five positions are described:"
))
pos_data = [
["Position", "Location", "Advantages", "Disadvantages / Notes"],
["Onlay", "On top of muscle/fascia in subcutaneous space", "Technically straightforward; large surface for overlap", "Higher wound complication risk; seroma; relies on closure of defect below"],
["Inlay", "Edge-to-edge within the defect (no overlap)", "— (Not recommended)", "No overlap = high recurrence; NOT recommended"],
["Sublay (retromuscular)", "Immediately deep to muscle layers in abdominal wall; retrorectus/Rives-Stoppa", "Intra-abdominal pressure helps fix mesh; best outcomes for ventral hernias", "More complex dissection; longer operative time"],
["Extraperitoneal", "Between posterior fascia and peritoneum", "Avoids intraperitoneal complications; used in TEP/TAPP inguinal repair", "Technical expertise required"],
["Intraperitoneal (IPOM)", "Inside peritoneal cavity, requires anti-adhesive mesh", "Laparoscopic access; avoids re-entering old scars", "Risk of adhesions/obstruction/fistula; tissue-separating mesh mandatory; try to avoid when possible"],
]
story.append(make_table(pos_data, col_widths=[3.2*cm, 3.5*cm, 4.5*cm, 5.3*cm]))
story.append(src("Bailey & Love's Surgery 28e, p. 1086"))
story.append(Spacer(1, 0.5*cm))
# ─── SECTION 5: Hernia-Specific Applications ─────────────────────────────────
story += heading1("5. Mesh in Specific Hernia Repairs")
# 5.1 Inguinal Hernia
story += heading2("5.1 Inguinal Hernia")
story.append(para(
"Inguinal hernia is the most common hernia and the most common surgical procedure worldwide. "
"Mesh-based repair has superseded pure tissue repairs due to significantly lower recurrence rates. "
"Multiple approaches exist:"
))
story += heading3("a) Lichtenstein Tension-Free Repair (Open Flat Mesh)")
story.append(para(
"First described in the 1980s; now the <b>most common operation for inguinal hernia</b> in high-income countries. "
"A flat piece of <b>polypropylene mesh (8 × 15 cm)</b> is placed over the posterior wall of the inguinal canal, "
"behind the spermatic cord. The mesh is slit to wrap around the cord at the deep inguinal ring. "
"Loose sutures secure it to the inguinal ligament and conjoint tendon. "
"The medial edge overlaps the pubic tubercle by at least 2 cm; fixation directly into the periosteum of "
"the pubic tubercle is avoided to minimise chronic pain."
))
story.append(para(
"<b>Mesh characteristics:</b> Flat, lightweight/mid-weight polypropylene; "
"large-pore preferred to reduce foreign body sensation. "
"Commercially pre-formed prostheses or custom-trimmed mesh are both acceptable."
))
story.append(para(
"<b>Outcomes:</b> Lower recurrence vs. tissue repairs; chronic groin pain in up to 20% "
"(reduced with large-pore, lightweight mesh and careful nerve preservation)."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1090; Sabiston Surgery 21e, p. 1688"))
story += heading3("b) Mesh Plug Repair")
story.append(para(
"A cone-shaped polypropylene plug is inserted into the hernia defect, followed by a flat onlay patch. "
"Simple to insert, requires little fixation. However, the plug can solidify into a <b>'meshoma'</b> "
"causing chronic pain, and may migrate or erode into adjacent structures (bladder, bowel). "
"<b>Not recommended</b> by the 2018 European Hernia Society guidelines for groin hernia."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1090; Fischer's Mastery of Surgery 8e"))
story += heading3("c) Open Preperitoneal Repair (Stoppa / Rives-Stoppa)")
story.append(para(
"A large mesh prosthesis (polypropylene or polyester) is introduced via midline infraumbilical incision "
"into the preperitoneal space, extending into the Space of Retzius, beyond the obturator foramen, "
"and posterolateral to the pelvic brim. Intra-abdominal pressure distributes evenly across the wide mesh, "
"keeping it in position. Useful for bilateral hernias and multiple recurrences."
))
story.append(src("Sabiston Surgery 21e, p. 1688"))
story += heading3("d) Laparoscopic Repair — TEP and TAPP")
story.append(para(
"Both totally extraperitoneal (TEP) and transabdominal preperitoneal (TAPP) techniques place a "
"<b>10 × 15 cm mesh</b> (or larger) in the preperitoneal plane, just deep to the abdominal wall. "
"The mesh must cover:"
))
for b in ["Hesselbach's triangle (direct space)", "The deep inguinal ring (indirect space)", "The femoral canal"]:
story.append(bul(b))
story.append(para(
"<b>Mesh characteristics:</b> Lightweight to mid-weight polypropylene; large-pore preferred. "
"No fixation may be required in extraperitoneal repair; tacks, staples, or glue used if needed. "
"Self-expanding preformed polypropylene patches are also used in some posterior approaches."
))
story.append(para(
"<b>Advantages over open:</b> Reduced acute and chronic pain (up to 5 years), faster return to activity, "
"fewer wound complications. Particularly beneficial for bilateral hernias and recurrent hernias "
"after prior open repair."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1091; Sabiston Surgery 21e, p. 1688–1689"))
story.append(Spacer(1, 0.3*cm))
# 5.2 Femoral Hernia
story += heading2("5.2 Femoral Hernia")
story.append(para(
"Femoral hernias have a high risk of strangulation. Mesh repair is preferred when bowel is viable. "
"The preperitoneal approach with mesh placed in the extraperitoneal space is favoured as it covers "
"all three potential groin hernia sites (indirect, direct, femoral) simultaneously — "
"particularly important given femoral hernias often coexist with occult inguinal hernias."
))
story.append(para(
"In the emergent setting with contamination, primary suture repair or biologic/biosynthetic mesh "
"should be considered over permanent synthetic mesh."
))
story.append(src("Bailey & Love's Surgery 28e; Mulholland & Greenfield's Surgery 7e"))
story.append(Spacer(1, 0.3*cm))
# 5.3 Incisional / Ventral Hernia
story += heading2("5.3 Incisional and Ventral Hernia")
story.append(para(
"Incisional hernias carry the highest recurrence rates of all abdominal wall hernias, and mesh "
"reinforcement is considered mandatory for any defect that cannot be closed primarily under no tension."
))
story += heading3("a) Open Retromuscular (Rives-Stoppa) Repair")
story.append(para(
"The current gold-standard for large incisional hernias. "
"The mesh is placed in the retromuscular (sublay) position deep to the rectus abdominis muscle. "
"Components separation (external oblique release, or transversus abdominus release for larger defects) "
"achieves fascial closure before mesh is placed. "
"<b>Mesh of choice:</b> Midweight polypropylene (large-pore), providing strong ingrowth without "
"excessive contracture."
))
story.append(src("Fischer's Mastery of Surgery 8e, p. 5913"))
story += heading3("b) Laparoscopic Intraperitoneal Onlay Mesh (IPOM)")
story.append(para(
"Mesh is placed laparoscopically within the peritoneal cavity. "
"<b>Must use composite/tissue-separating mesh</b> — a dual-surface prosthesis with a macroporous "
"polypropylene or polyester side (facing the fascia) and an anti-adhesive barrier (facing the bowel). "
"Risk of adhesions, obstruction, and fistula persists. "
"IPOM is now being replaced by extraperitoneal laparoscopic techniques wherever possible."
))
story.append(src("Bailey & Love's Surgery 28e, p. 1086; Fischer's Mastery of Surgery 8e"))
story += heading3("c) Open Onlay Repair")
story.append(para(
"Mesh placed on top of the repaired fascia in the subcutaneous space. "
"Technically easier but higher wound complication and seroma rates. "
"Requires large subcutaneous flap dissection. Used when sublay space cannot be developed."
))
story += heading3("d) Bridging Repair (Open Abdomen / Complex Cases)")
story.append(para(
"When fascial closure is impossible (loss of domain, open abdomen), mesh is used to "
"bridge the defect and protect viscera. "
"<b>Biologic or biosynthetic absorbable mesh</b> is strongly preferred over permanent synthetic mesh in "
"this setting, as infectious/fistula/erosion complications are prohibitive with permanent mesh in "
"a contaminated or critical environment."
))
story.append(src("Current Surgical Therapy 14e, p. 1424"))
story.append(Spacer(1, 0.3*cm))
# 5.4 Umbilical / Epigastric
story += heading2("5.4 Umbilical and Epigastric Hernia")
story.append(para(
"Small defects (< 1 cm) may be repaired primarily without mesh. For defects ≥ 1–2 cm, "
"mesh reinforcement is recommended to reduce recurrence. Mesh is placed either in the sublay "
"(preperitoneal or retromuscular) or onlay position depending on defect size and surgeon preference. "
"Lightweight large-pore polypropylene is the standard mesh for these repairs."
))
story.append(src("Fischer's Mastery of Surgery 8e; Sabiston Surgery 21e"))
story.append(Spacer(1, 0.3*cm))
# 5.5 Parastomal Hernia
story += heading2("5.5 Parastomal Hernia")
story.append(para(
"Parastomal hernias are common after stoma formation. Mesh repair options include:"
))
para_data = [
["Technique", "Mesh Type / Position", "Notes"],
["Intraperitoneal onlay (IPOM / keyhole)", "Composite anti-adhesive mesh; keyhole or modified Sugarbaker technique", "Laparoscopic access; mesh must have anti-adhesive barrier; most published data here"],
["Sublay (retromuscular)", "Standard polypropylene or polyester — sublay position", "Excellent tissue coverage; benefits of standard incisional hernia sublay repair apply"],
["Prophylactic mesh at stoma formation", "Lightweight PP or biologic mesh", "Controversial; multicentre RCTs underway; some data support reduced hernia incidence"],
]
story.append(make_table(para_data, col_widths=[4*cm, 5.5*cm, 7*cm]))
story.append(src("Fischer's Mastery of Surgery 8e; Sleisenger & Fordtran's GI & Liver Disease"))
story.append(Spacer(1, 0.3*cm))
# 5.6 Hiatal / Paraesophageal Hernia
story += heading2("5.6 Hiatal and Paraesophageal Hernia")
story.append(para(
"Mesh reinforcement of hiatal hernia repair reduces recurrence rates, particularly for large "
"(Type III/IV) paraesophageal hernias. "
"Most surgeons are wary of synthetic mesh close to the oesophagus and therefore "
"<b>biological products are favoured</b>. "
"A keyhole-shaped biologic mesh is placed around the oesophageal hiatus after crural closure. "
"Mesh shape (keyhole vs. U-shape) is an area of ongoing debate."
))
story.append(src("Sleisenger & Fordtran's GI & Liver Disease"))
story.append(Spacer(1, 0.3*cm))
# 5.7 Obstructed Hernia
story += heading2("5.7 Hernia Repair in the Setting of Obstruction or Contamination")
story.append(para(
"Permanent synthetic mesh should generally be avoided in contaminated fields. "
"In cases of obstructed hernia with viable bowel and no contamination, synthetic mesh may be used. "
"When bowel resection is required, options include:"
))
for b in [
"Primary suture repair (accepting higher recurrence risk)",
"Biologic mesh (preferred — allows tissue remodelling even in contaminated fields)",
"Biosynthetic slowly absorbable mesh (emerging data)",
"Macroporous monofilament polypropylene (limited salvage data in contaminated fields)",
]:
story.append(bul(b))
story.append(note(
"Macroporous monofilament polypropylene mesh placed extraperitoneally was salvaged in 72.2% of infected cases "
"in one study (Fischer's Mastery of Surgery 8e). Microporous, composite, multifilament, or "
"intraperitoneal mesh cannot be salvaged and must be removed."
))
story.append(src("Mulholland & Greenfield's Surgery 7e; Fischer's Mastery of Surgery 8e; Current Surgical Therapy 14e"))
story.append(PageBreak())
# ─── SECTION 6: Summary Table ────────────────────────────────────────────────
story += heading1("6. Quick-Reference Summary: Mesh by Hernia Type")
summary_data = [
["Hernia Type", "Preferred Mesh", "Position", "Key Considerations"],
["Inguinal — open (Lichtenstein)", "Lightweight PP, large-pore", "Preperitoneal (posterior wall onlay)", "8×15 cm; slit for cord; avoid pubic tubercle fixation"],
["Inguinal — laparoscopic (TEP/TAPP)", "Lightweight PP, large-pore", "Extraperitoneal", "≥10×15 cm; covers all 3 spaces; may need no fixation"],
["Inguinal — Stoppa/preperitoneal", "PP or polyester", "Extraperitoneal (preperitoneal)", "Large sheet; bilateral coverage; distributes IAP"],
["Femoral", "PP or composite", "Preperitoneal", "Cover all 3 groin spaces; biologic if contaminated"],
["Incisional/Ventral — Rives-Stoppa", "Mid-weight PP, large-pore", "Sublay (retromuscular)", "Gold standard; component separation as needed"],
["Incisional/Ventral — IPOM", "Composite (anti-adhesive barrier)", "Intraperitoneal", "Dual-surface mandatory; being replaced by extraperitoneal"],
["Umbilical/Epigastric", "Lightweight PP", "Sublay or onlay", "Mesh for defects ≥1–2 cm"],
["Parastomal", "Composite or PP (sublay)", "Intraperitoneal or sublay", "Keyhole or Sugarbaker; prophylactic use controversial"],
["Hiatal/Paraesophageal", "Biologic (bovine/porcine)", "Hiatal reinforcement", "Biologic preferred; synthetic risks oesophageal erosion"],
["Contaminated / bowel resection", "Biologic or biosynthetic", "As required", "Avoid permanent synthetic; biologic allows remodelling"],
["Open abdomen (bridging)", "Biologic or biosynthetic absorbable", "Bridge / fascial substitute", "Permanent synthetic contraindicated; temporary cover"],
]
story.append(make_table(summary_data, col_widths=[4*cm, 4*cm, 3.5*cm, 5*cm]))
story.append(Spacer(1, 0.5*cm))
# ─── SECTION 7: Complications ─────────────────────────────────────────────────
story += heading1("7. Complications of Mesh Repair")
comp_data = [
["Complication", "Mechanism / Notes", "Prevention / Management"],
["Mesh infection", "Bacterial colonisation; higher risk with small-pore, multifilament, composite, or intraperitoneal mesh", "Large-pore monofilament PP tolerable; others typically require explantation"],
["Chronic pain", "Nerve entrapment; heavy/small-pore mesh contracture; meshoma from plugs", "Lightweight large-pore mesh; careful nerve identification; avoid mesh plug"],
["Seroma", "Fluid collection in dead space especially with onlay", "Minimise dissection; drain if needed"],
["Adhesions / bowel obstruction", "Intraperitoneal mesh provokes adhesions to bowel", "Avoid IP placement; use composite mesh if IP position unavoidable (Figure: adhesions to IP mesh)"],
["Mesh erosion / fistula", "IP mesh erodes into viscera; plug migration", "Extraperitoneal placement; avoid plugs; composite mesh if IP"],
["Hernia recurrence", "Inadequate overlap, mesh contracture, lightweight mesh in ventral repair", "≥5 cm overlap; large-pore mesh; adequate fixation"],
["Meshoma", "Solidified plug forming hard fibrous mass", "Avoid plug repair; excision if symptomatic"],
]
story.append(make_table(comp_data, col_widths=[3.5*cm, 6.5*cm, 6.5*cm]))
story.append(src("Bailey & Love's Surgery 28e; Fischer's Mastery of Surgery 8e; Mulholland & Greenfield's Surgery 7e"))
story.append(Spacer(1, 0.5*cm))
# ─── SECTION 8: Summary box ──────────────────────────────────────────────────
story += heading1("8. Key Practice Points (Summary Box)")
key_points = [
"Non-absorbable mesh reduces but does not eliminate recurrence — technique and positioning matter as much as material.",
"Large-pore (≥1 mm), lightweight mesh is preferred for better tissue integration, less contracture, and reduced chronic pain.",
"Heavyweight / small-pore mesh is the strongest but least infection-tolerant and most prone to contracture.",
"Monofilament polypropylene is the most versatile — tolerates infection better than multifilament polyester or PTFE.",
"PTFE (ePTFE) offers the best adhesion barrier but must be removed if infected.",
"Tissue-separating (composite) mesh is mandatory for intraperitoneal placement — but IP placement should be avoided when possible.",
"Biological mesh is preferred near the oesophagus, in contaminated fields, and in open-abdomen bridging repairs.",
"Mesh plugs are largely abandoned due to meshoma, migration, and erosion complications.",
"Inlay repair (edge-to-edge, no overlap) is not recommended.",
"The Lichtenstein repair remains the standard for open inguinal hernia; TEP/TAPP offer less chronic pain.",
"Sublay (Rives-Stoppa) positioning with component separation is the standard for large incisional hernias.",
"Mesh contracture can reduce coverage area by >50% — always plan for generous overlap.",
]
kp_data = [[f"{i+1}.", Paragraph(pt, body)] for i, pt in enumerate(key_points)]
kp_tbl = Table(kp_data, colWidths=[0.6*cm, 15.9*cm])
kp_tbl.setStyle(TableStyle([
('VALIGN', (0, 0), (-1, -1), 'TOP'),
('FONTNAME', (0, 0), (0, -1), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, -1), 9),
('TEXTCOLOR', (0, 0), (0, -1), TEAL),
('TOPPADDING', (0, 0), (-1, -1), 3),
('BOTTOMPADDING', (0, 0), (-1, -1), 3),
]))
story.append(kp_tbl)
story.append(Spacer(1, 0.5*cm))
# ─── References ──────────────────────────────────────────────────────────────
story += heading1("References")
refs = [
"Bailey & Love's Short Practice of Surgery, 28th Edition. CRC Press/Taylor & Francis, 2023. Chapter 64: Hernias.",
"Sabiston Textbook of Surgery: The Biological Basis of Modern Surgical Practice, 21st Edition. Elsevier, 2022. Chapter 82: Abdominal Wall Hernias.",
"Fischer's Mastery of Surgery, 8th Edition. Wolters Kluwer, 2023. Section on Abdominal Wall Hernias.",
"Mulholland & Greenfield's Surgery: Scientific Principles and Practice, 7th Edition. Wolters Kluwer, 2022. Chapter 72: Inguinal Hernias; Chapter on Abdominal Wall Reconstruction.",
"Current Surgical Therapy, 14th Edition. Elsevier, 2023. Chapter on Tissue Rearrangement and Mesh.",
"Sleisenger & Fordtran's Gastrointestinal and Liver Disease, 11th Edition. Elsevier, 2021.",
]
for i, r in enumerate(refs, 1):
story.append(Paragraph(f"{i}. {r}", ParagraphStyle("ref", fontName="Helvetica", fontSize=9,
textColor=GREY_TEXT, leading=13, spaceAfter=4,
leftIndent=14, firstLineIndent=-14)))
story.append(Spacer(1, 1*cm))
story.append(thin_rule())
story.append(Paragraph(
"This document was compiled for educational purposes from standard surgical textbooks. "
"Clinical decisions should always be guided by current guidelines, local protocols, and individual patient assessment.",
ParagraphStyle("footer", fontName="Helvetica-Oblique", fontSize=8,
textColor=colors.grey, alignment=TA_CENTER, leading=11)
))
# ─── BUILD ────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/hernia-mesh-pdf && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/hernia-mesh-pdf/Mesh_in_Hernia_Repair.pdf
| Hernia | Preferred Mesh | Position |
|---|---|---|
| Inguinal - Lichtenstein | Lightweight PP (8×15 cm) | Posterior wall / preperitoneal |
| Inguinal - TEP/TAPP | Lightweight PP (≥10×15 cm) | Extraperitoneal |
| Incisional - Rives-Stoppa | Mid-weight PP | Sublay/retromuscular |
| Incisional - IPOM | Composite anti-adhesive | Intraperitoneal |
| Parastomal | Composite/PP | IP or sublay |
| Hiatal/paraesophageal | Biologic | Hiatal reinforcement |
| Contaminated/bowel resection | Biologic or biosynthetic | As required |
| Open abdomen (bridging) | Biologic or biosynthetic | Bridging |
Mesh in Hernia Repair
PDF Document · PDF
Give me a detailed information on mesh used in different types of hernia repair based on stands textbook & make pdf of it
ls /home/daytona/workspace/hernia-mesh-pdf/
~/hernia-mesh-pdf/generate_v2.py
"""
Mesh in Hernia Repair — Comprehensive Surgical Reference PDF v2
Sources: Bailey & Love 28e · Sabiston 21e · Fischer's Mastery 8e
Mulholland & Greenfield 7e · Current Surgical Therapy 14e
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether, ListFlowable, ListItem
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
from reportlab.platypus.flowables import BalancedColumns
OUTPUT = "/home/daytona/workspace/hernia-mesh-pdf/Mesh_in_Hernia_Repair_v2.pdf"
W, H = A4
# ── colour palette ─────────────────────────────────────────────────────────
NAVY = colors.HexColor("#0A2342")
TEAL = colors.HexColor("#0E6B74")
TEAL_LT = colors.HexColor("#C8E8EB")
GOLD = colors.HexColor("#C97B22")
GOLD_LT = colors.HexColor("#FDF3E3")
RED_WARN = colors.HexColor("#C0392B")
GREEN_OK = colors.HexColor("#1A7A4A")
GREY_DARK = colors.HexColor("#3A3A3A")
GREY_MID = colors.HexColor("#666666")
GREY_LIGHT = colors.HexColor("#F4F6F7")
WHITE = colors.white
TABLE_HDR = colors.HexColor("#0E6B74")
TABLE_ALT = colors.HexColor("#EBF5F6")
RULE_COL = colors.HexColor("#0E6B74")
COVER_BG = colors.HexColor("#0A2342")
# ── doc setup ─────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2.0*cm, rightMargin=2.0*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Mesh in Hernia Repair — Comprehensive Surgical Reference",
author="Orris Medical Reference",
subject="Surgical Mesh — Types, Properties, Hernia-Specific Applications",
)
CONTENT_W = W - 4.0*cm # 16.97 cm usable
# ── paragraph styles ───────────────────────────────────────────────────────
def S(name, **kw):
base = ParagraphStyle(name)
for k, v in kw.items():
setattr(base, k, v)
return base
BODY = S("body", fontName="Helvetica", fontSize=10, textColor=GREY_DARK,
leading=15, alignment=TA_JUSTIFY, spaceAfter=5)
BULLET = S("bullet", fontName="Helvetica", fontSize=10, textColor=GREY_DARK,
leading=14, leftIndent=16, firstLineIndent=0, spaceAfter=3, bulletIndent=4)
NOTE = S("note", fontName="Helvetica-Oblique", fontSize=9, textColor=GREY_MID,
leading=13, leftIndent=10, spaceAfter=4)
WARN = S("warn", fontName="Helvetica-Bold", fontSize=9, textColor=RED_WARN,
leading=13, leftIndent=10, spaceAfter=4)
SRCSTYLE= S("src", fontName="Helvetica-Oblique", fontSize=8, textColor=GREY_MID,
leading=11, spaceAfter=3)
H1STYLE = S("h1", fontName="Helvetica-Bold", fontSize=15, textColor=NAVY,
spaceBefore=14, spaceAfter=5)
H2STYLE = S("h2", fontName="Helvetica-Bold", fontSize=12, textColor=TEAL,
spaceBefore=10, spaceAfter=4)
H3STYLE = S("h3", fontName="Helvetica-BoldOblique", fontSize=10.5, textColor=GOLD,
spaceBefore=7, spaceAfter=3)
CAPTION = S("cap", fontName="Helvetica-Oblique", fontSize=8.5, textColor=GREY_MID,
leading=12, alignment=TA_CENTER, spaceAfter=4)
BOX_BODY= S("box_body", fontName="Helvetica", fontSize=10, textColor=NAVY,
leading=14, alignment=TA_JUSTIFY)
REF_S = S("ref", fontName="Helvetica", fontSize=9, textColor=GREY_DARK,
leading=12, leftIndent=14, firstLineIndent=-14, spaceAfter=4)
FOOTER = S("footer", fontName="Helvetica-Oblique", fontSize=8,
textColor=GREY_MID, alignment=TA_CENTER, leading=11)
TOC_S = S("toc", fontName="Helvetica", fontSize=10, textColor=GREY_DARK,
leading=16, leftIndent=6, spaceAfter=0)
TOC_MAIN= S("toc_main", fontName="Helvetica-Bold", fontSize=10.5, textColor=NAVY,
leading=18, spaceAfter=0)
# ── helpers ────────────────────────────────────────────────────────────────
def rule(w="100%", t=1.2, c=RULE_COL, sb=4):
return HRFlowable(width=w, thickness=t, color=c, spaceAfter=sb, spaceBefore=2)
def thin_rule():
return HRFlowable(width="100%", thickness=0.4, color=colors.HexColor("#CCCCCC"), spaceAfter=4)
def h1(txt, num=""):
label = f"{num}. {txt}" if num else txt
return [rule(), Paragraph(label, H1STYLE)]
def h2(txt):
return [Paragraph(txt, H2STYLE)]
def h3(txt):
return [Paragraph(txt, H3STYLE)]
def p(txt):
return Paragraph(txt, BODY)
def bl(txt, indent=0):
st = ParagraphStyle("bl2", parent=BULLET, leftIndent=16+indent*12, firstLineIndent=0)
return Paragraph(f"• {txt}", st)
def src(txt):
return Paragraph(f"<i>■ Source: {txt}</i>", SRCSTYLE)
def note(txt):
return Paragraph(f"<i>Note: {txt}</i>", NOTE)
def warn(txt):
return Paragraph(f"⚠ {txt}", WARN)
def spacer(h=0.25):
return Spacer(1, h*cm)
def info_box(content_paras, bg=TEAL_LT, border=TEAL):
data = [[c] for c in content_paras]
tbl = Table([[p] for p in content_paras], colWidths=[CONTENT_W - 0.6*cm])
tbl.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('BOX', (0,0), (-1,-1), 1.5, border),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 12),
('RIGHTPADDING', (0,0), (-1,-1), 12),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
return tbl
def warn_box(content_paras):
return info_box(content_paras, bg=colors.HexColor("#FDEDEC"), border=RED_WARN)
def gold_box(content_paras):
return info_box(content_paras, bg=GOLD_LT, border=GOLD)
def tbl(data, col_widths=None, header_rows=1, zebra=True):
t = Table(data, colWidths=col_widths, repeatRows=header_rows)
n = len(data)
style_cmds = [
('BACKGROUND', (0,0), (-1, header_rows-1), TABLE_HDR),
('TEXTCOLOR', (0,0), (-1, header_rows-1), WHITE),
('FONTNAME', (0,0), (-1, header_rows-1), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1, header_rows-1), 9),
('FONTNAME', (0, header_rows), (-1,-1), 'Helvetica'),
('FONTSIZE', (0, header_rows), (-1,-1), 9),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.35, colors.HexColor("#BBCCCC")),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('ROWBACKGROUND', (0, header_rows), (-1,-1), [TABLE_ALT, WHITE]),
]
if zebra:
for i in range(header_rows, n):
bg = TABLE_ALT if i % 2 == 0 else WHITE
style_cmds.append(('BACKGROUND', (0,i), (-1,i), bg))
t.setStyle(TableStyle(style_cmds))
return t
# ═══════════════════════════════════════════════════════════════════════════════
# STORY
# ═══════════════════════════════════════════════════════════════════════════════
story = []
# ─────────────────────────────────────────────────────────────────────────────
# COVER PAGE
# ─────────────────────────────────────────────────────────────────────────────
cover_title_s = S("ct", fontName="Helvetica-Bold", fontSize=30, textColor=WHITE,
alignment=TA_CENTER, leading=36)
cover_sub_s = S("cs", fontName="Helvetica", fontSize=14, textColor=colors.HexColor("#A8D5DA"),
alignment=TA_CENTER, leading=20)
cover_src_s = S("csrc", fontName="Helvetica-Oblique", fontSize=10,
textColor=colors.HexColor("#7AB8BE"), alignment=TA_CENTER, leading=14)
cover_tag_s = S("ctag", fontName="Helvetica-Bold", fontSize=11,
textColor=colors.HexColor("#FFD580"), alignment=TA_CENTER, leading=16)
def cover_row(para): return [para]
cover_items = [
[spacer(1.0)],
[Paragraph("MESH IN HERNIA REPAIR", cover_title_s)],
[spacer(0.2)],
[Paragraph("A Comprehensive Surgical Reference", cover_sub_s)],
[spacer(0.5)],
[rule(w="60%", t=1.5, c=colors.HexColor("#1A9BAA"), sb=0)],
[spacer(0.4)],
[Paragraph("Mesh Types · Material Properties · Positioning", cover_tag_s)],
[Paragraph("Inguinal · Incisional · Ventral · Femoral · Umbilical", cover_tag_s)],
[Paragraph("Parastomal · Hiatal · Contaminated Fields", cover_tag_s)],
[spacer(0.6)],
[Paragraph(
"Based on standard surgical textbooks:<br/>"
"<b>Bailey & Love's Surgery 28e · Sabiston Textbook of Surgery 21e</b><br/>"
"<b>Fischer's Mastery of Surgery 8e · Mulholland & Greenfield's Surgery 7e</b><br/>"
"<b>Current Surgical Therapy 14e</b>",
cover_src_s)],
[spacer(0.6)],
[Paragraph("June 2026 | Orris Medical Reference", cover_src_s)],
[spacer(1.5)],
]
cover_tbl_obj = Table([[row[0]] for row in cover_items], colWidths=[CONTENT_W])
cover_tbl_obj.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), COVER_BG),
('TOPPADDING', (0,0), (-1,-1), 0),
('BOTTOMPADDING', (0,0), (-1,-1), 0),
('LEFTPADDING', (0,0), (-1,-1), 24),
('RIGHTPADDING', (0,0), (-1,-1), 24),
]))
story.append(cover_tbl_obj)
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# TABLE OF CONTENTS
# ─────────────────────────────────────────────────────────────────────────────
story.append(Paragraph("Table of Contents", H1STYLE))
story.append(rule())
toc_entries = [
("1.", "Introduction: The Role of Mesh in Hernia Surgery"),
("2.", "Classification of Mesh Types"),
(" 2.1", "By Gross Structure: Net vs. Sheet Mesh"),
(" 2.2", "Synthetic Mesh — Polypropylene, Polyester, PTFE"),
(" 2.3", "Biological Mesh"),
(" 2.4", "Absorbable and Biosynthetic Mesh"),
("3.", "Key Mesh Properties"),
(" 3.1", "Pore Size"),
(" 3.2", "Density and Weight"),
(" 3.3", "Filament Structure (Mono vs. Multi)"),
(" 3.4", "Mesh Contracture"),
(" 3.5", "Barrier Coatings / Tissue-Separating Mesh"),
(" 3.6", "Mesh Fixation Methods"),
("4.", "Mesh Positioning in the Abdominal Wall"),
("5.", "Mesh in Specific Hernia Repairs"),
(" 5.1", "Inguinal Hernia (Indirect & Direct)"),
(" 5.2", "Femoral Hernia"),
(" 5.3", "Incisional / Ventral Hernia"),
(" 5.4", "Umbilical and Epigastric Hernia"),
(" 5.5", "Parastomal Hernia"),
(" 5.6", "Hiatal and Paraesophageal Hernia"),
(" 5.7", "Hernia in Contaminated / Emergency Settings"),
(" 5.8", "Open Abdomen — Bridging Repair"),
("6.", "Component Separation and Mesh"),
("7.", "Complications of Mesh Repair"),
("8.", "Quick-Reference Summary Table"),
("9.", "Key Practice Points"),
("10.", "References"),
]
for num, title in toc_entries:
row_data = [[Paragraph(num, TOC_MAIN if "." in num and " " not in num else TOC_S),
Paragraph(title, TOC_MAIN if "." in num and " " not in num else TOC_S)]]
t = Table(row_data, colWidths=[1.4*cm, CONTENT_W - 1.4*cm])
t.setStyle(TableStyle([
('TOPPADDING', (0,0), (-1,-1), 1),
('BOTTOMPADDING', (0,0), (-1,-1), 1),
('LEFTPADDING', (0,0), (-1,-1), 0),
('RIGHTPADDING', (0,0), (-1,-1), 0),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(t)
story.append(thin_rule())
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 1 — INTRODUCTION
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Introduction: The Role of Mesh in Hernia Surgery", "1")
story.append(spacer(0.15))
story.append(info_box([
Paragraph("<b>Fundamental principle:</b> Closure of a hernia defect alone is associated with a "
"high recurrence rate. Reinforcement with a non-absorbable mesh reduces — but does not "
"eliminate — recurrence. With improved techniques and new mesh materials it is hoped "
"that recurrence after surgery will fall further. Mesh repair has become so important "
"in hernia surgery that some understanding of mesh technology is essential for every "
"modern surgeon.", BOX_BODY)
]))
story.append(spacer(0.2))
story.append(p("The term <b>mesh</b> refers to prosthetic material — either a net or a flat sheet — "
"used to strengthen a hernia repair. Mesh can be used to:"))
for item in [
"<b>Bridge a defect:</b> The mesh is fixed as a tension-free patch over the defect, relying on generous overlap onto strong surrounding tissues.",
"<b>Plug a defect:</b> A cone-shaped plug of mesh is pushed into the defect. This technique has been largely abandoned (see Section 5.1).",
"<b>Augment a repair:</b> The defect is first closed with sutures and mesh is then added for reinforcement — placed in a tension-free manner. This is currently the optimal approach.",
]:
story.append(bl(item))
story.append(p("Suturing mesh edge-to-edge into a defect (<i>inlay</i>), with no overlap, is "
"<b>not recommended</b> — it is effectively no more than a suture repair at each "
"mesh–tissue interface. Simple bridging of a hernia defect requires a generous "
"overlap onto strong tissues around the defect to reduce recurrence risk."))
story.append(src("Bailey & Love's Short Practice of Surgery, 28th Edition (Bailey & Love 28e), p. 1084"))
story.append(spacer(0.3))
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 2 — CLASSIFICATION
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Classification of Mesh Types", "2")
story.append(spacer(0.1))
# 2.1 Gross structure
story += h2("2.1 By Gross Structure: Net vs. Sheet Mesh")
story.append(p("All meshes can be categorised first by their macroscopic architecture:"))
struct_data = [
["Type", "Architecture", "Tissue Integration", "Fixation Requirement", "Examples"],
["Net mesh\n(woven / knitted)",
"Porous lattice; open spaces between filaments",
"Native tissue ingrowth between filament strands; fully integrated within months",
"Glue, sutures, tacks/staples — or no fixation in extraperitoneal repair",
"Polypropylene knit, polyester mesh"],
["Sheet mesh\n(non-porous / perforated)",
"Flat solid sheet, optionally perforated with holes",
"No ingrowth; eventually encapsulated by host fibrous tissue",
"Strong non-absorbable fixation mandatory to prevent migration",
"Expanded PTFE (ePTFE) sheets"],
]
story.append(tbl(struct_data, col_widths=[2.8*cm, 3.2*cm, 4.0*cm, 3.5*cm, 3.2*cm]))
story.append(src("Bailey & Love 28e"))
story.append(spacer(0.25))
# 2.2 Synthetic Mesh
story += h2("2.2 Synthetic Mesh")
story.append(p("Most meshes used today are <b>synthetic, non-absorbable polymers</b>. Three materials dominate:"))
synth_data = [
["Material", "Chemical Nature", "Filament Type", "Key Properties", "Behaviour / Limitations"],
["Polypropylene\n(PP)",
"Inert thermoplastic polymer; hydrophobic",
"Monofilament (standard); some braided variants",
"• No immune response\n• Resists bacterial ingrowth\n• Very strong\n• Stimulates fibrous tissue ingrowth",
"• Most widely used material worldwide\n• Tolerates infection best (macroporous monofilament)\n• Available in light, mid and heavyweight\n• Mesh contracture can reduce size >50%"],
["Polyester\n(PE / Dacron)",
"Polyethylene terephthalate; hydrophilic",
"Typically multifilament",
"• Hydrophilic — encourages microvascular ingrowth\n• Very strong\n• Good long-term dimensional stability",
"• Multifilament structure is infection-intolerant — usually requires removal if infected\n• Used in Stoppa / preperitoneal repairs\n• Some newer monofilament PE meshes available"],
["Polytetrafluoro-\nethylene\n(PTFE / ePTFE)",
"Fluorocarbon polymer; chemically very inert; hydrophobic",
"Laminar microporous sheets (traditional); newer monofilament knitted hybrid",
"• Excellent adhesion barrier\n• Resistant to both tissue ingrowth AND adhesion\n• Inert; no immune reaction",
"• Traditional ePTFE: microporous laminar — must be removed if infected; encapsulated not integrated\n• Newer monofilament PTFE hybrid: behaves more like PP; limited clinical data\n• Best anti-adhesion surface for intraperitoneal use"],
]
story.append(tbl(synth_data, col_widths=[2.4*cm, 3.0*cm, 2.6*cm, 3.8*cm, 5.0*cm]))
story.append(src("Bailey & Love 28e, p. 1085; Mulholland & Greenfield's Surgery 7e (M&G 7e), p. 3672"))
story.append(spacer(0.25))
# 2.3 Biological Mesh
story += h2("2.3 Biological Mesh")
story.append(p("Biological meshes are sheets of <b>sterilised, decellularised connective tissue</b> "
"derived from animal or human sources. They act as a scaffold for host tissue regeneration."))
bio_data = [
["Source", "Examples", "Cross-Linked?", "Key Characteristics"],
["Human dermis", "AlloDerm, FlexHD", "No (native) or Yes (AlloDerm RTU)", "Closest to human tissue matrix; high cost"],
["Porcine dermis", "Strattice, Permacol, XenMatrix", "Permacol: Yes; others: No",
"Most commonly used biologic; cross-linking increases resistance to enzymatic degradation but slows remodelling"],
["Porcine intestinal submucosa (SIS)", "Surgisis", "No",
"Multi-layer ECM; rapidly remodels; weaker long-term"],
["Bovine pericardium", "Tutomesh, Veritas", "Varies",
"Good tensile strength; used in hiatal, chest wall and complex abdominal repairs"],
["Porcine pericardium", "Meso-BioMatrix", "No", "Emerging product; limited long-term data"],
]
story.append(tbl(bio_data, col_widths=[3.5*cm, 4.0*cm, 3.0*cm, 6.2*cm]))
story.append(p("The biological implant ideally provides a scaffold to encourage "
"<b>neovascular ingrowth, fibroblast infiltration and new collagen deposition</b>. "
"Host enzymes gradually break down the scaffold and replace it with autologous fibrous tissue. "
"However, this is not uniform:"))
for item in [
"<b>Non-cross-linked biologic mesh</b> — remodels faster but can weaken before remodelling is complete, especially in infected fields, leading to early hernia recurrence.",
"<b>Cross-linked biologic mesh</b> — more resistant to enzymatic breakdown; useful where infection is present, but slower remodelling and higher recurrence rates in some studies.",
"Recurrence rates with biologic mesh can reach <b>up to 21%</b> in some series.",
"Biologic mesh is <b>expensive</b>; precise role in abdominal wall repair is still being defined by RCTs.",
]:
story.append(bl(item))
story.append(src("Bailey & Love 28e, p. 1085; Sleisenger & Fordtran's GI & Liver Disease, 11e"))
story.append(spacer(0.25))
# 2.4 Absorbable / Biosynthetic
story += h2("2.4 Absorbable and Biosynthetic Mesh")
abs_data = [
["Type", "Materials", "Absorption", "Approved Uses", "Limitations"],
["Rapidly absorbable synthetic",
"Polyglycolic acid (PGA), collagen, polyhydroxybutyrate",
"Weeks",
"Temporary abdominal wall closure; short-term suture line buttressing",
"NOT for definitive hernia repair — absorbed too quickly; minimal lasting collagen deposition"],
["Slowly absorbable / biosynthetic",
"TIGR Matrix (PGA + PTMC), BioA (PGA + trimethylene carbonate), Phasix (poly-4-HB)",
"12–36 months (product-dependent)",
"Clean-contaminated or contaminated fields; bridge to definitive repair",
"Long-term outcomes not fully established; higher cost than synthetic; lower recurrence data vs. permanent PP still emerging"],
]
story.append(tbl(abs_data, col_widths=[2.6*cm, 3.6*cm, 2.4*cm, 3.4*cm, 4.7*cm]))
story.append(warn("Rapidly absorbable meshes are contraindicated for definitive hernia repair."))
story.append(src("Bailey & Love 28e, p. 1086; Current Surgical Therapy 14e (CST 14e)"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 3 — MESH PROPERTIES
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Key Mesh Properties", "3")
story.append(p("Beyond material composition, the <b>physical and structural properties</b> of a mesh "
"are the most critical determinants of clinical performance. "
"These properties are often poorly understood yet are of utmost importance."))
story.append(spacer(0.1))
# 3.1 Pore Size
story += h2("3.1 Pore Size")
story.append(p("Pore size — the space between filaments — is increasingly recognised as "
"<b>among the most important characteristics</b>, particularly regarding infection risk."))
pore_data = [
["Category", "Pore Size", "Bacterial Clearance", "Fibrosis / Stiffness", "Clinical Effect"],
["Microporous", "< 100 µm",
"Poor — bacteria adhere; host immunity impeded",
"Bridging fibrosis across pores; increased mesh stiffness",
"Greater chronic pain; poorly infection-tolerant; must be removed if infected"],
["Small-pore", "100–600 µm",
"Limited",
"Significant; common in heavyweight meshes",
"Strong but stiff; high contracture risk"],
["Medium-pore", "600–1,000 µm",
"Moderate",
"Less bridging fibrosis",
"Intermediate balance"],
["Large-pore", "1,000–2,000 µm",
"Good — macrophage and leukocyte access",
"Minimal bridging; granuloma around fibres stays isolated",
"Preferred: infection-tolerant; flexible; less chronic pain"],
["Very large-pore", "≥ 2,000 µm",
"Excellent",
"Minimal",
"Best flexibility; least foreign body reaction; weakest"],
]
story.append(tbl(pore_data, col_widths=[2.4*cm, 2.4*cm, 3.4*cm, 3.4*cm, 4.6*cm]))
story.append(gold_box([
Paragraph("<b>Recommendation:</b> A pore size of <b>≥ 1 mm (1,000 µm) in all directions</b> is recommended "
"to promote collagen ingrowth that is not only strong but also elastic, and to minimise "
"the risk of chronic pain and mesh contracture.", BOX_BODY)
]))
story.append(src("M&G 7e, p. 3572–3573; Bailey & Love 28e, p. 1085"))
story.append(spacer(0.25))
# 3.2 Density / Weight
story += h2("3.2 Density and Weight")
story.append(p("Mesh density (material mass ÷ area) is determined by fibre thickness, filament "
"construct, and pore size. Heavy-weight mesh is stiffer and less infection-tolerant; "
"lighter meshes are more comfortable but may increase recurrence risk in large ventral defects."))
density_data = [
["Category", "Density", "Infection Tolerance", "Stiffness", "Recurrence Risk", "Best Use"],
["Ultra lightweight", "< 35 g/m²", "High", "Very low", "Higher (ventral)", "Inguinal TEP/TAPP"],
["Lightweight", "35–50 g/m²", "High", "Low", "Moderate", "Inguinal; small ventral"],
["Mid-weight", "50–90 g/m²", "Moderate", "Moderate", "Low-moderate", "Most ventral/incisional"],
["Heavyweight", "> 90 g/m²", "Low — must explant", "High", "Lowest", "Avoided where possible; only if structural strength critical"],
]
story.append(tbl(density_data, col_widths=[3.0*cm, 2.4*cm, 3.0*cm, 2.4*cm, 3.0*cm, 3.0*cm]))
story.append(note("All currently available heavyweight meshes are also small-pore. Light/ultra-lightweight meshes "
"have been shown in several studies to have a higher risk of recurrence for ventral hernia repair, "
"though they are better tolerated in terms of infection and comfort."))
story.append(src("M&G 7e, p. 3573"))
story.append(spacer(0.25))
# 3.3 Filament structure
story += h2("3.3 Filament Structure: Monofilament vs. Multifilament")
fil_data = [
["Structure", "Example Materials", "Infection Behaviour", "Notes"],
["Monofilament, large-pore",
"Polypropylene (standard)",
"BEST — macroporous monofilament generally tolerates infection without requiring removal; "
"salvaged in 65–72% of infected cases (extraperitoneal position)",
"Preferred for contaminated or potentially contaminated fields"],
["Multifilament",
"Polyester (most); some PP",
"POOR — interstices harbour bacteria; typically must be removed if infected",
"High risk in infected fields; use with caution"],
["Microporous laminar",
"ePTFE (traditional)",
"VERY POOR — must be removed; cannot withstand infection",
"Excellent adhesion barrier; zero infection tolerance"],
["Composite (dual-layer)",
"PP + anti-adhesive barrier (e.g. Proceed, Physiomesh, Parietex Composite)",
"POOR — generally must be removed; composite structure behaves like microporous/multifilament",
"Designed for IPOM; limited infection tolerance"],
["Monofilament PTFE hybrid (new)",
"OviTex, newer knitted PTFE",
"Likely moderate (limited data)",
"Behaves more like monofilament PP; preliminary evidence promising"],
]
story.append(tbl(fil_data, col_widths=[3.0*cm, 3.0*cm, 5.5*cm, 5.2*cm]))
story.append(src("M&G 7e, p. 3573; Fischer's Mastery of Surgery 8e (Fischer 8e)"))
story.append(spacer(0.25))
# 3.4 Mesh contracture
story += h2("3.4 Mesh Contracture ('Shrinkage')")
story.append(p("The mesh itself does not shrink. 'Mesh contracture' refers to the <b>progressive "
"contraction of host fibrous tissue</b> that grows into and around the mesh. "
"This process can:"))
for item in [
"Reduce the effective coverage area by <b>more than 50%</b> in some cases.",
"Lead to hernia recurrence if coverage over the defect is lost.",
"Cause mesh stiffening, impaired elasticity/mobility of the abdominal wall, foreign body sensation and chronic pain.",
]:
story.append(bl(item))
story.append(p("Dense or heavyweight meshes provoke a <b>greater fibrous reaction</b>, accelerating "
"contracture. Thin-stranded, large-pore meshes are preferred because they have "
"better tissue integration, less contracture, less foreign body reaction, "
"more flexibility and improved patient comfort."))
story.append(warn("Always plan for generous mesh overlap (minimum 3–5 cm on all sides) to account for contracture."))
story.append(src("Bailey & Love 28e, p. 1085"))
story.append(spacer(0.25))
# 3.5 Barrier coatings
story += h2("3.5 Barrier Coatings — Tissue-Separating Mesh")
story.append(p("Standard meshes placed within the peritoneal cavity promote <b>unwanted adhesions</b> "
"to bowel, causing obstruction, mesh erosion, and enterocutaneous fistulation. "
"Anti-adhesive barrier meshes are designed for intraperitoneal placement "
"with a dual-surface architecture:"))
col_data = [
[Paragraph("<b>Parietal (fascia-facing) side</b>", BODY),
Paragraph("<b>Visceral (bowel-facing) side</b>", BODY)],
[Paragraph("Macroporous PP, polyester, or PTFE\nStimulates fibrous ingrowth and tissue fixation", BODY),
Paragraph("Anti-adhesive barrier:\n• Polycellulose\n• Oxidised regenerated cellulose\n• Collagen\n• PTFE layer\n• Omega-3 fatty acid film", BODY)],
]
c = Table(col_data, colWidths=[CONTENT_W/2-0.1*cm, CONTENT_W/2-0.1*cm])
c.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), TABLE_HDR),
('TEXTCOLOR', (0,0), (-1,0), WHITE),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#BBCCCC")),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('BACKGROUND', (0,1), (-1,-1), TABLE_ALT),
]))
story.append(c)
story.append(warn("No anti-adhesive barrier is 100% effective. Intraperitoneal mesh placement remains "
"associated with bowel obstruction, mesh erosion and fistulation. "
"Current practice avoids intraperitoneal placement whenever possible."))
story.append(src("Bailey & Love 28e, p. 1086; M&G 7e, p. 3573"))
story.append(spacer(0.25))
# 3.6 Fixation
story += h2("3.6 Mesh Fixation Methods")
story.append(p("Adequate fixation keeps mesh in position during the critical early period before "
"tissue ingrowth secures the prosthesis. The method depends on the approach and position:"))
fix_data = [
["Method", "Materials", "Absorption?", "Best For", "Risks / Notes"],
["Non-absorbable sutures",
"Prolene, Ethibond, nylon",
"Permanent",
"Open repairs (Lichtenstein, Stoppa); pubic tubercle area fixation",
"Chronic pain if nerves entrapped; standard for Lichtenstein"],
["Absorbable sutures",
"Vicryl, PDS",
"Weeks–months",
"Temporary/supplemental fixation; extraperitoneal repair",
"Less chronic pain risk; may allow early mesh movement"],
["Tacks / Staples (mechanical)",
"Titanium or absorbable tacks (ProtackTM, AbsorbaTackTM)",
"Permanent or 3–6 months",
"Laparoscopic TEP/TAPP; IPOM",
"Risk of nerve entrapment/chronic pain; absorbable preferred in groin"],
["Fibrin glue (biological sealant)",
"Tisseel, Evicel",
"Absorbed",
"Laparoscopic inguinal repair (fixation equivalent to tacks in RCTs)",
"Less pain than tacks; no nerve injury; higher cost; limited holding in large defects"],
["Self-fixating mesh",
"ProGrip (PP + PGA microgrips), Parietex ProGrip",
"PGA grips absorb over months",
"Open or laparoscopic inguinal/ventral repair",
"Eliminates separate fixation step; comparable recurrence rates"],
["No fixation",
"—",
"N/A",
"TEP extraperitoneal repair (mesh held by extraperitoneal pressure)",
"Evidence supports no-fixation in TEP for primary unilateral inguinal hernia"],
["Transfascial sutures (suture passer)",
"PDS or Prolene (0-gauge)",
"Absorbable or permanent",
"Open retrorectus/sublay repair; IPOM",
"4–6 peripheral sutures secure mesh to anterior rectus sheath"],
]
story.append(tbl(fix_data, col_widths=[2.8*cm, 2.6*cm, 2.0*cm, 3.4*cm, 5.0*cm]))
story.append(src("Bailey & Love 28e; Sabiston Textbook of Surgery 21e (Sabiston 21e); CST 14e"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 4 — POSITIONING
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Mesh Positioning in the Abdominal Wall", "4")
story.append(p("The strength of a mesh repair depends primarily on <b>host-tissue ingrowth</b>. "
"Mesh should be laid tension-free on a firm, well-vascularised tissue bed with "
"<b>generous overlap</b> of the hernia zone. Five positions are described, "
"in order of depth from superficial to deep:"))
pos_data = [
["Position", "Anatomical Plane", "Mechanical Advantage", "Preferred?", "Main Risks"],
["1. Onlay\n(suprafascial)",
"Superficial to the closed muscle/fascial repair, within the subcutaneous space",
"Technically easy; large area for overlap possible",
"Less preferred",
"Wound complications (skin ischaemia from large flaps); seroma; exposed in wound breakdown; relies entirely on defect closure below"],
["2. Inlay\n(bridging only)",
"Edge-to-edge within the defect — no overlap",
"None — no mechanical benefit",
"NOT recommended",
"High recurrence (equivalent to suture repair); no overlap onto strong tissue"],
["3. Sublay\n(retromuscular / Rives-Stoppa)",
"Between posterior rectus sheath and rectus abdominis; extends into preperitoneal space",
"Intra-abdominal pressure forces mesh against abdominal wall — self-reinforcing; excellent tissue bed",
"Preferred for ventral/incisional hernia",
"More complex dissection; potential posterior sheath injury; drain required"],
["4. Extraperitoneal\n(preperitoneal)",
"Between posterior fascia/transversalis fascia and peritoneum",
"Mechanical advantage of intra-abdominal pressure; avoids peritoneal cavity entirely",
"Preferred for inguinal (TEP/TAPP); also for Stoppa repair",
"Requires expertise; risk of peritoneal breach"],
["5. Intraperitoneal\n(IPOM)",
"Inside the peritoneal cavity, in contact with bowel",
"Good overlap; laparoscopic access to whole abdominal wall",
"Avoid if possible; use only when extraperitoneal impossible",
"Adhesions; bowel obstruction; mesh erosion; fistulation; MUST use composite mesh"],
]
story.append(tbl(pos_data, col_widths=[2.4*cm, 4.0*cm, 3.5*cm, 2.4*cm, 4.4*cm]))
story.append(p("Meshes placed deep to the abdominal wall muscle layers — sublay and extraperitoneal — "
"have a <b>mechanical advantage</b> over onlay positioning because intra-abdominal "
"pressure helps to keep the mesh in place. Both are generally preferred."))
story.append(src("Bailey & Love 28e, p. 1086"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 5 — HERNIA-SPECIFIC
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Mesh in Specific Hernia Repairs", "5")
# 5.1 Inguinal
story += h2("5.1 Inguinal Hernia (Indirect & Direct)")
story.append(p("Inguinal hernia is the most common hernia worldwide, approximately 10 times more "
"common in men. Mesh-based tension-free repair has superseded pure tissue repairs "
"(Bassini, Shouldice) due to significantly lower recurrence rates. "
"Several mesh approaches are available:"))
story += h3("a) Lichtenstein Tension-Free Open Flat Mesh Repair")
story.append(p("First described in the 1980s and now the <b>most common inguinal hernia operation "
"in high-income countries</b>. After dissection and management of the hernia sac, "
"a flat piece of mesh is placed over the posterior wall of the inguinal canal."))
licht_box_items = [
Paragraph("<b>Mesh specifications:</b>", BOX_BODY),
Paragraph("• Size: <b>8 × 15 cm</b> (standard); may be customised or pre-formed commercially", BOX_BODY),
Paragraph("• Material: <b>Lightweight to mid-weight polypropylene</b>; large-pore preferred", BOX_BODY),
Paragraph("• Configuration: Flat sheet with a slit cut in the distal lateral edge to accommodate the spermatic cord", BOX_BODY),
Paragraph("<b>Technique key points:</b>", BOX_BODY),
Paragraph("• Mesh placed behind the spermatic cord, over the posterior inguinal wall", BOX_BODY),
Paragraph("• Medial edge overlaps the pubic tubercle by <b>at least 2 cm</b>", BOX_BODY),
Paragraph("• Infero-lateral edge sutured to shelving edge of inguinal ligament starting lateral to pubic tubercle", BOX_BODY),
Paragraph("• Supero-medial edge secured to conjoint tendon with interrupted sutures", BOX_BODY),
Paragraph("• Tails of the slit are sutured together around the cord, forming a new deep ring", BOX_BODY),
Paragraph("• <b>Avoid fixation directly into pubic tubercle periosteum</b> — risk of osteitis and chronic pain", BOX_BODY),
Paragraph("• Careful identification and preservation of ilioinguinal nerve and genital branch of genitofemoral nerve", BOX_BODY),
]
story.append(info_box(licht_box_items))
story.append(p("<b>Outcomes:</b> Lower recurrence vs. tissue repairs; chronic groin pain in up to <b>20%</b> "
"(significantly reduced with lightweight large-pore mesh and careful nerve preservation). "
"Acute pain scores similar to tissue repair at 2 years."))
story.append(src("Bailey & Love 28e, p. 1090; Sabiston 21e, p. 1688"))
story.append(spacer(0.2))
story += h3("b) Mesh Plug Repair (Largely Abandoned)")
story.append(p("A cone-shaped polypropylene plug is inserted into the hernia defect, followed by "
"a flat onlay patch. Although simple to place:"))
for item in [
"The plug can solidify into a hard mass — <b>'meshoma'</b> — causing chronic pain.",
"Migration and erosion into adjacent structures (urinary bladder, bowel) are recognised complications.",
"<b>Not recommended</b> by the 2018 European Hernia Society (EHS) groin hernia guidelines.",
"Three-dimensional meshes and hernia systems similarly lack evidence of superiority over flat Lichtenstein mesh.",
]:
story.append(bl(item))
story.append(src("Bailey & Love 28e, p. 1090; Fischer 8e"))
story.append(spacer(0.2))
story += h3("c) Open Preperitoneal Repair — Stoppa / Rives-Stoppa")
story.append(p("A large <b>polypropylene or polyester</b> mesh prosthesis is introduced via midline "
"infraumbilical incision into the preperitoneal space. Blunt dissection creates an "
"extraperitoneal pocket extending into the Space of Retzius, beyond the obturator "
"foramen, and posterolateral to the pelvic brim. "
"Intra-abdominal pressure distributes evenly across the wide mesh, keeping it in place. "
"Useful for bilateral hernias and recurrent hernias after multiple prior open repairs."))
story.append(src("Sabiston 21e, p. 1688; M&G 7e"))
story.append(spacer(0.2))
story += h3("d) Laparoscopic Repair: TEP and TAPP")
story.append(p("Both the <b>totally extraperitoneal (TEP)</b> and the "
"<b>transabdominal preperitoneal (TAPP)</b> approaches place mesh in the preperitoneal "
"plane, just deep to the abdominal wall. In TEP, the extraperitoneal space is developed "
"without entering the peritoneal cavity. In TAPP, the peritoneum is incised "
"laparoscopically to create the same space."))
lap_data = [
["Parameter", "TEP", "TAPP"],
["Peritoneal entry", "None", "Yes — then repaired"],
["Mesh size", "≥ 10 × 15 cm", "≥ 10 × 15 cm"],
["Mesh type", "Lightweight PP, large-pore; polypropylene or polyester", "Same — composite not required (extraperitoneal)"],
["Coverage", "Hesselbach's triangle + deep inguinal ring + femoral canal", "Same"],
["Fixation", "Often none required; tacks, glue or self-gripping mesh optional", "Tacks, fibrin glue or sutures to close peritoneum"],
["Chronic pain", "Lower than Lichtenstein in multiple trials", "Similar to TEP"],
["Return to activity", "Faster than open", "Faster than open"],
["Learning curve", "Long; initial higher conversion rate", "Longer; but anatomical view easier for some"],
]
story.append(tbl(lap_data, col_widths=[3.5*cm, 6.2*cm, 6.0*cm]))
story.append(p("<b>Advantages of laparoscopic over open approach:</b> Reduced acute and chronic pain "
"(up to 5 years), more rapid return to full activity, reduced wound complications. "
"Of particular benefit in bilateral hernias and in patients with recurrence after "
"prior open surgery."))
story.append(src("Bailey & Love 28e, p. 1091; Sabiston 21e, p. 1688–1689"))
story.append(spacer(0.3))
# 5.2 Femoral
story += h2("5.2 Femoral Hernia")
story.append(p("Femoral hernias carry a <b>high risk of strangulation</b> and are more common in women. "
"Open mesh repair is preferred when bowel is viable and the field is clean. "
"The preperitoneal approach with mesh placed in the extraperitoneal space is favoured, "
"as it covers all three potential groin hernia spaces simultaneously. "
"Options include:"))
for item in [
"Laparoscopic TEP or TAPP — covers direct, indirect, and femoral spaces with a single large mesh.",
"Open preperitoneal (Stoppa) repair — useful for recurrent or bilateral femoral hernias.",
"In an emergency setting with bowel resection and contamination — prefer <b>primary suture repair or biologic/biosynthetic mesh</b> over permanent synthetic mesh.",
]:
story.append(bl(item))
story.append(src("Bailey & Love 28e; M&G 7e"))
story.append(spacer(0.3))
# 5.3 Incisional / Ventral
story += h2("5.3 Incisional and Ventral Hernia")
story.append(p("Incisional hernias carry the highest recurrence rates of all abdominal wall hernias. "
"Mesh reinforcement is <b>mandatory</b> for any defect that cannot be closed "
"primarily under no tension. The position, size, and type of mesh are critical."))
story += h3("a) Open Retromuscular Repair — Rives-Stoppa (Gold Standard)")
story.append(p("The <b>current gold standard</b> for moderate to large incisional hernias. "
"Posterior rectus sheath is incised, rectus is separated from the sheath posteriorly, "
"and a mesh is placed in the retromuscular (sublay) space. "
"This plane extends into the prevesical/retropubic space of Retzius medially and to "
"the retro-inguinal space of Bogros laterally, allowing wide mesh coverage."))
for item in [
"<b>Mesh of choice:</b> Mid-weight polypropylene (large-pore); or polyester in the same position.",
"Posterior rectus sheath and peritoneum are closed first with running polyglactin (Vicryl) suture.",
"<b>Fixation:</b> 4–6 transfascial sutures (0-PDS) on periphery of mesh secured to anterior rectus sheath via suture passer; running looped PDS to reapproximate linea alba.",
"Drains placed between mesh and rectus muscle (especially with biologic mesh).",
"Component separation (ACS or TAR) added if defect cannot be closed without tension (see Section 6).",
]:
story.append(bl(item))
story.append(src("CST 14e, p. 715; Sabiston 21e, p. 1652"))
story.append(spacer(0.2))
story += h3("b) Laparoscopic Intraperitoneal Onlay Mesh (IPOM)")
story.append(p("Mesh is placed laparoscopically within the peritoneal cavity. "
"<b>Tissue-separating composite mesh is mandatory</b> — dual-surface prosthesis "
"with macroporous PP/polyester on the parietal side and anti-adhesive barrier on the visceral side. "
"Defects are bridged directly or after fascial closure with sutures."))
for item in [
"Fixation: Transfascial sutures + peripheral tacks or fibrin glue.",
"IPOM is being increasingly replaced by extraperitoneal laparoscopic techniques (eTEP/rTEP) wherever possible.",
"Risk of adhesions, obstruction, and fistula persists with all intraperitoneal mesh — minimise IP dwell time.",
]:
story.append(bl(item))
story.append(src("Bailey & Love 28e, p. 1086; Fischer 8e"))
story.append(spacer(0.2))
story += h3("c) Onlay Repair")
story.append(p("Mesh placed on top of the repaired fascia in the subcutaneous space. "
"Technically straightforward but associated with significantly higher wound complication "
"and seroma rates (large skin flap dissection required). "
"Used when sublay space cannot be safely developed or in resource-limited settings."))
story.append(src("Bailey & Love 28e; Sabiston 21e"))
story.append(spacer(0.2))
story += h3("d) Open Incisional Hernia: Technical Steps (Fischer 8e)")
story.append(p("All open mesh incisional hernia repairs begin similarly:"))
for item in [
"Patient supine; Foley catheter and orogastric tube placed.",
"Incision extends past the hernia defect; adhesiolysis frees anterior abdominal wall.",
"All prior intraperitoneal mesh removed to reduce infection/fistula risk.",
"Bowel inspected; enterolysis only if obstruction present preoperatively.",
"Component separation performed if needed for tension-free fascial closure.",
"Mesh placed in chosen plane (sublay preferred); wide overlap on all sides.",
]:
story.append(bl(item))
story.append(src("Fischer 8e, p. 5913"))
story.append(spacer(0.3))
# 5.4 Umbilical / Epigastric
story += h2("5.4 Umbilical and Epigastric Hernia")
story.append(p("Small umbilical defects (< 1 cm) in adults may be repaired primarily without mesh with acceptable recurrence rates. "
"For defects <b>≥ 1–2 cm</b>, mesh reinforcement is recommended to reduce recurrence."))
umb_data = [
["Defect Size", "Recommended Approach", "Mesh Type", "Position"],
["< 1 cm", "Primary suture repair acceptable", "None required", "—"],
["1–2 cm", "Mesh preferred", "Lightweight PP (large-pore)", "Sublay (preperitoneal) or onlay"],
["> 2 cm", "Mesh mandatory", "Mid-weight PP or polyester", "Sublay preferred; IPOM if laparoscopic"],
["Large / recurrent", "Treat as incisional hernia", "As per incisional hernia protocol", "Sublay / retromuscular with component separation if needed"],
]
story.append(tbl(umb_data, col_widths=[2.5*cm, 4.5*cm, 4.5*cm, 4.2*cm]))
story.append(src("Fischer 8e; Sabiston 21e"))
story.append(spacer(0.3))
# 5.5 Parastomal
story += h2("5.5 Parastomal Hernia")
story.append(p("Parastomal hernias occur in 30–50% of patients with a permanent stoma. "
"They are technically challenging to repair with high recurrence rates. "
"Mesh is essential for all but the smallest repairs:"))
para_data = [
["Technique", "Mesh Type / Characteristics", "Position", "Key Notes"],
["Laparoscopic Keyhole / IPOM",
"Composite anti-adhesive mesh; keyhole cut around stoma or separate disc",
"Intraperitoneal",
"Most published data; risk of adhesions around stoma; composite mesh mandatory"],
["Sugarbaker technique (modified IPOM)",
"Composite anti-adhesive mesh; no keyhole cut",
"Intraperitoneal (bowel lateralised)",
"Lower recurrence than keyhole in some series; stoma lateralised under mesh"],
["Sublay (retromuscular)",
"Standard PP or polyester",
"Retromuscular / sublay",
"Excellent tissue coverage; benefits of Rives-Stoppa positioning; complex dissection"],
["Prophylactic mesh at stoma formation",
"Lightweight PP (large-pore) or biologic",
"Sublay or onlay at time of stoma formation",
"Controversial; some RCT evidence supports reduced parastomal hernia incidence; multicentre trials ongoing"],
]
story.append(tbl(para_data, col_widths=[3.2*cm, 4.2*cm, 2.8*cm, 5.5*cm]))
story.append(src("Fischer 8e; Sleisenger & Fordtran's GI & Liver Disease 11e (S&F 11e)"))
story.append(spacer(0.3))
# 5.6 Hiatal
story += h2("5.6 Hiatal and Paraesophageal Hernia")
story.append(p("Mesh reinforcement of the hiatal closure reduces recurrence rates, particularly for "
"<b>large Type III/IV paraesophageal hernias</b>. "
"The hiatal region presents unique challenges for mesh selection:"))
for item in [
"Proximity to the oesophagus means that erosion or stricture from synthetic mesh is a recognised complication.",
"<b>Biological mesh is preferred</b> near the oesophagus — most surgeons are wary of placing permanent synthetic mesh close to the oesophageal wall.",
"Keyhole-shaped biologic mesh is placed around the oesophageal hiatus after primary crural closure.",
"Mesh shape (keyhole vs. U-shape vs. posterior reinforcement only) remains an area of debate.",
"In one described technique: Dor fundoplication + keyhole biologic mesh closure of diaphragm + temporary gastrostomy tube (as a pexy) for large paraesophageal hernias.",
]:
story.append(bl(item))
story.append(src("S&F 11e"))
story.append(spacer(0.3))
# 5.7 Contaminated / Emergency
story += h2("5.7 Hernia Repair in Contaminated / Emergency Settings")
story.append(p("The choice of mesh in contaminated fields is critically important. "
"The 'contamination spectrum' guides mesh selection:"))
cont_data = [
["Contamination Level", "Field Examples", "Preferred Mesh", "Permanent Synthetic?"],
["Clean", "Elective inguinal/ventral, no bowel entry", "PP or polyester (synthetic)", "Yes"],
["Clean-contaminated", "Elective bowel surgery without spillage", "PP (macroporous monofilament) or biosynthetic", "Acceptable with caution"],
["Contaminated", "Obstructed hernia with viable bowel, minimal spillage", "Biologic or biosynthetic absorbable preferred; macroporous PP extraperitoneal acceptable",
"Macroporous PP extraperitoneal only"],
["Dirty / infected", "Strangulated/gangrenous bowel, frank contamination, established infection", "Biologic mesh or primary suture repair", "Contraindicated"],
]
story.append(tbl(cont_data, col_widths=[3.0*cm, 4.5*cm, 5.5*cm, 3.7*cm]))
story.append(note("Macroporous monofilament PP placed in an extraperitoneal position was salvaged in 72.2% of "
"infected cases in one large study. Infected composite, microporous PP, multifilament polyester, "
"or intraperitoneal mesh could NOT be salvaged and required removal (Fischer 8e)."))
story.append(p("In obstructed hernia repair with bowel that requires resection, the safest approach is:"))
for item in [
"Reduce contamination risk: bowel anastomosis or stoma as appropriate.",
"Repair the hernia primarily (suture) and defer definitive mesh repair as a staged procedure.",
"If mesh must be used acutely: <b>macroporous monofilament PP (extraperitoneal only)</b> or biologic mesh.",
]:
story.append(bl(item))
story.append(src("M&G 7e; Fischer 8e; CST 14e"))
story.append(spacer(0.3))
# 5.8 Open Abdomen
story += h2("5.8 Open Abdomen — Bridging Mesh Repair")
story.append(p("When fascial closure is impossible (e.g., loss of domain, abdominal compartment syndrome, "
"massive visceral oedema), a bridging mesh strategy allows preservation of native tissue "
"planes while protecting viscera. Goals include:"))
for item in [
"Preserve fascial integrity and limit further retraction of abdominal musculature.",
"Prevent abdominal fluid and protein losses.",
"Protect viscera and facilitate epithelial closure (with advancement flaps or skin grafting).",
"Avoid compromise of future abdominal wall reconstruction attempts.",
]:
story.append(bl(item))
story.append(gold_box([
Paragraph("<b>Mesh of choice for open abdomen bridging:</b> <b>Biologic or biosynthetic absorbable mesh</b>. "
"Permanent synthetic mesh (PP, polyester, ePTFE) is contraindicated in this setting — "
"infectious, fistula, and intestinal erosion complications are prohibitive in the "
"physiologically compromised, contaminated open abdomen.", BOX_BODY)
]))
story.append(src("CST 14e, p. 1424"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 6 — COMPONENT SEPARATION
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Component Separation and Mesh", "6")
story.append(p("Component separation techniques are used when the hernia defect is too large for "
"primary midline fascial closure even after standard retrorectus dissection. "
"These techniques <b>increase the available length of medial rectus migration</b>, "
"allowing tension-free closure before mesh reinforcement."))
cs_data = [
["Technique", "Approach", "Medialization Achieved", "Mesh Placement", "Wound Complications"],
["Anterior Component\nSeparation (ACS)\n(Ramirez 1990)",
"Release of external oblique aponeurosis 2 cm lateral to semilunar line; large subcutaneous skin flaps",
"Up to 5–10 cm per side (bilateral 10–20 cm total)",
"Surgeon's preferred plane (sublay, onlay); mesh secured to lateral edges of divided EO fascia with 0-PDS",
"HIGH — large skin flaps cause SSI, seroma, flap necrosis; now less favoured"],
["Perforator-sparing ACS",
"As above but preserving peri-umbilical perforators in a 3-cm radius",
"Similar to standard ACS",
"Same",
"Lower wound complications than standard ACS; technically more demanding"],
["Endoscopic ACS",
"Small semilunar incisions; balloon dissector; EO divided laparoscopically",
"Similar",
"Same",
"Significantly lower wound complications; no large flaps"],
["Transversus Abdominis\nRelease (TAR)\nPosterior CS\n(Novitsky 2012)",
"Extension of retrorectus dissection; transversus abdominis muscle divided medially to semilunar line; preperitoneal plane developed widely",
"Up to 8 cm per side (bilateral ~16 cm total)",
"Large mesh in retromuscular / preperitoneal sublay plane; direct contact with closed posterior sheath",
"LOWER — no skin flaps; no external oblique release; dramatically fewer SSI/SSO"],
]
story.append(tbl(cs_data, col_widths=[2.8*cm, 4.0*cm, 2.8*cm, 3.5*cm, 3.6*cm]))
story.append(p("TAR allows wide retromuscular mesh placement and can be performed via minimally "
"invasive robotic or laparoscopic approaches. It has rapidly become the preferred "
"technique where ACS was previously used. Key rule: never release both external oblique "
"(ACS) AND transversus abdominis (TAR) simultaneously — this destabilises the "
"abdominal wall."))
story.append(src("Sabiston 21e, p. 1652–1653; CST 14e, p. 715–716; M&G 7e"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 7 — COMPLICATIONS
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Complications of Mesh Repair", "7")
story.append(p("While mesh significantly reduces hernia recurrence, it introduces specific complications "
"that must be understood and actively prevented:"))
comp_data = [
["Complication", "Mechanism", "Risk Factors", "Prevention / Management"],
["Mesh infection\n(SSO — surgical site occurrence)",
"Bacterial colonisation of prosthetic material",
"Small-pore or microporous mesh; multifilament; composite; IP placement; contaminated field",
"Use large-pore monofilament PP; avoid IP mesh; biologic/biosynthetic in contaminated fields; debridement + antibiotics + VAC may salvage macroporous PP"],
["Chronic groin pain\n(post-herniorrhaphy inguinodynia)",
"Nerve entrapment in mesh/sutures; heavy/stiff mesh contracture; meshoma",
"Heavy-weight mesh; small-pore mesh; nerve injury; plug repair; female sex; younger age; high preoperative VAS pain",
"Lightweight large-pore mesh; careful ilioinguinal/GF nerve identification; avoid plugs; TEP/TAPP preferred over open for chronic pain"],
["Seroma",
"Fluid accumulation in dead space from dissection",
"Large subcutaneous flaps (onlay); extensive adhesiolysis; obese patients",
"Minimise dissection; drain where appropriate; conservative management in most cases"],
["Adhesion formation\n/ Bowel obstruction",
"Intraperitoneal mesh promotes visceral adhesions; bowel kinks around mesh edge",
"IP mesh placement; any mesh without anti-adhesive coating in peritoneal cavity",
"Extraperitoneal placement preferred; composite mesh if IP unavoidable; (see Figure: adhesions causing obstruction)"],
["Mesh erosion\n/ Enterocutaneous fistula",
"Intraperitoneal mesh erodes into bowel/bladder over months to years; plug migration into hollow viscus",
"IP composite mesh; mesh plugs; intraperitoneal PTFE; prior radiotherapy",
"Extraperitoneal mesh placement; avoid plugs; complete removal of eroded mesh + bowel repair; partial excision has 3× higher SSO rate"],
["Hernia recurrence",
"Inadequate overlap; mesh contracture; infection leading to mesh dissolution/removal; lightweight mesh in large defects",
"Small mesh; insufficient overlap; heavyweight mesh contracture; infection",
"≥ 5 cm overlap all sides; mid-weight large-pore mesh for ventral repair; biologic in contaminated"],
["Meshoma",
"Plug becomes solid fibrous mass causing pain and pressure effects",
"Mesh plug repair",
"Avoid plug technique; surgical excision if symptomatic"],
["Osteitis pubis",
"Fixation suture placed directly into pubic tubercle periosteum",
"Lichtenstein repair with periosteal fixation",
"Avoid periosteal fixation; start suture line lateral to tubercle"],
]
story.append(tbl(comp_data, col_widths=[2.8*cm, 3.8*cm, 3.4*cm, 5.7*cm]))
story.append(src("Bailey & Love 28e; Fischer 8e; M&G 7e; CST 14e"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 8 — QUICK-REFERENCE TABLE
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Quick-Reference Summary: Mesh by Hernia Type", "8")
qr_data = [
["Hernia Type / Procedure", "Preferred Mesh Material", "Mesh Size / Form", "Position", "Key Points"],
["Inguinal — Lichtenstein (open)",
"Lightweight PP, large-pore",
"8 × 15 cm flat; slit for cord",
"Posterior inguinal wall (preperitoneal plane anterior approach)",
"Overlap pubic tubercle ≥ 2 cm; no periosteal fixation; nerve preservation"],
["Inguinal — TEP (laparoscopic)",
"Lightweight PP, large-pore",
"≥ 10 × 15 cm flat",
"Extraperitoneal preperitoneal",
"No fixation often sufficient; covers all 3 groin spaces"],
["Inguinal — TAPP (laparoscopic)",
"Lightweight PP, large-pore",
"≥ 10 × 15 cm flat",
"Extraperitoneal preperitoneal (peritoneum closed over)",
"Tacks or fibrin glue; peritoneum re-approximated"],
["Inguinal — Stoppa / open preperitoneal",
"PP or polyester",
"Large sheet (bilateral coverage)",
"Preperitoneal",
"For bilateral / recurrent hernias; IAP distributes load"],
["Femoral — elective",
"PP or composite (laparoscopic)",
"As inguinal lap mesh",
"Preperitoneal (TEP/TAPP preferred)",
"Cover all 3 groin spaces"],
["Femoral — emergency / contaminated",
"Biologic or biosynthetic; or primary suture",
"As required",
"Preperitoneal if possible",
"Avoid permanent synthetic if bowel resected"],
["Incisional — Rives-Stoppa sublay",
"Mid-weight PP (large-pore); or polyester",
"Large; ≥ 5 cm overlap all sides",
"Retromuscular / sublay",
"Gold standard; component separation if needed; 4–6 transfascial PDS sutures"],
["Incisional — Open onlay",
"PP or polyester",
"Large; wide overlap",
"Onlay (suprafascial)",
"Higher wound complications; drains mandatory; less preferred"],
["Incisional — IPOM (laparoscopic)",
"Composite anti-adhesive dual-surface mesh",
"≥ 5 cm overlap all sides",
"Intraperitoneal",
"Composite mesh mandatory; increasingly replaced by eTEP"],
["Umbilical / Epigastric ≥ 1–2 cm",
"Lightweight PP",
"Small; ≥ 3–4 cm overlap",
"Sublay or onlay",
"Mesh for defects ≥ 1–2 cm; sublay preferred"],
["Parastomal — IPOM keyhole",
"Composite anti-adhesive",
"Large; covers all parastomal tissue",
"Intraperitoneal",
"Composite mandatory; keyhole or Sugarbaker"],
["Parastomal — sublay",
"PP or polyester",
"Large",
"Retromuscular",
"Complex dissection; best long-term results"],
["Parastomal — prophylactic",
"Lightweight PP or biologic",
"Doughnut configuration at stoma formation",
"Sublay or onlay",
"Controversial; RCT data maturing"],
["Hiatal / Paraesophageal",
"BIOLOGIC (bovine/porcine pericardium or dermis)",
"Keyhole shape around hiatus",
"Hiatal reinforcement (on diaphragm)",
"Synthetic avoided near oesophagus — erosion risk"],
["Contaminated (clean-contaminated)",
"Macroporous monofilament PP (extraperitoneal) or biosynthetic",
"As required",
"Extraperitoneal preferred",
"Avoid multifilament, composite, intraperitoneal"],
["Dirty / infected field",
"BIOLOGIC or biosynthetic absorbable",
"As required",
"Extraperitoneal if possible",
"Permanent synthetic contraindicated"],
["Open abdomen bridging",
"BIOLOGIC or biosynthetic absorbable",
"Bridge defect",
"Fascial substitute / bridge",
"Permanent synthetic absolutely contraindicated"],
]
story.append(tbl(qr_data, col_widths=[3.5*cm, 3.2*cm, 2.5*cm, 2.8*cm, 4.7*cm]))
story.append(src("Bailey & Love 28e · Sabiston 21e · Fischer 8e · M&G 7e · CST 14e"))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 9 — KEY PRACTICE POINTS
# ─────────────────────────────────────────────────────────────────────────────
story += h1("Key Practice Points", "9")
kp_data_text = [
("Mesh is essential", "Non-absorbable mesh reinforcement is now the standard for most adult hernia repairs. Mesh reduces — but does not eliminate — recurrence. Technique, overlap, and positioning matter as much as material choice."),
("Large-pore is best", "A pore size of ≥ 1,000 µm is recommended for better tissue integration, less contracture, reduced bridging fibrosis, and superior infection tolerance."),
("Lightweight mesh preferred", "Lightweight to mid-weight mesh (35–90 g/m²) is preferred over heavyweight. Heavyweight mesh produces greater contracture, stiffness, and chronic pain — avoid unless structural requirements demand it."),
("Monofilament is infection-tolerant", "Monofilament polypropylene (macroporous, large-pore) is the most infection-tolerant synthetic mesh — salvageable in the majority of infected extraperitoneal cases. Multifilament polyester and ePTFE generally cannot be salvaged."),
("Avoid intraperitoneal mesh when possible", "IP placement is associated with adhesions, bowel obstruction, erosion, and fistulation. Extraperitoneal positioning is always preferred. If IP is unavoidable, composite tissue-separating mesh is mandatory."),
("Mesh contracture can exceed 50%", "Plan for ≥ 3–5 cm overlap on all sides. Contracture reduces effective coverage — insufficient overlap is a leading cause of recurrence."),
("Biologic mesh for contaminated fields and the oesophagus", "In contaminated/dirty fields, biologic or biosynthetic absorbable mesh is preferred over permanent synthetic. Near the oesophagus, biologic mesh is standard to prevent erosion."),
("Mesh plugs are abandoned", "Plug repair causes meshoma, migration, and erosion. Not recommended by EHS 2018 guidelines. Flat mesh is preferred over any 3D construct."),
("Inlay repair is not recommended", "Edge-to-edge inlay (no overlap) provides no mechanical benefit over suture repair alone. Always ensure generous mesh overlap onto strong surrounding tissue."),
("Lichtenstein is the open inguinal standard", "The 8 × 15 cm flat polypropylene Lichtenstein repair remains the most common open inguinal operation worldwide. TEP/TAPP offer equivalent recurrence rates with less chronic pain."),
("Rives-Stoppa sublay is the standard for large ventral/incisional hernias", "Retromuscular mesh placement with component separation (TAR preferred over ACS for wound complication rates) is the gold standard for complex incisional hernia reconstruction."),
("Cost is not quality", "Expensive biologic or composite meshes are not universally superior. A simple non-absorbable large-pore synthetic mesh is the safest and most cost-effective implant for clean hernia repair."),
("TAR over ACS", "Transversus abdominis release (posterior component separation) has lower wound complication rates than anterior component separation and allows wide retromuscular mesh placement. Preferred technique when component separation is needed."),
]
for i, (title, text) in enumerate(kp_data_text):
row = [[
Paragraph(f"<b>{i+1}</b>", S("kpnum", fontName="Helvetica-Bold", fontSize=12,
textColor=WHITE, alignment=TA_CENTER)),
Paragraph(f"<b>{title}:</b> {text}", BODY)
]]
t = Table(row, colWidths=[0.8*cm, CONTENT_W - 0.8*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,-1), TEAL),
('BACKGROUND', (1,0), (1,-1), GREY_LIGHT if i % 2 == 0 else WHITE),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('BOX', (0,0), (-1,-1), 0.3, colors.HexColor("#BBCCCC")),
]))
story.append(KeepTogether([t, spacer(0.08)]))
story.append(spacer(0.3))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# SECTION 10 — REFERENCES
# ─────────────────────────────────────────────────────────────────────────────
story += h1("References", "10")
story.append(rule())
refs = [
("Bailey & Love 28e",
"Williams NS, Bulstrode CJK, O'Connell PR (eds). Bailey & Love's Short Practice of Surgery, "
"28th Edition. CRC Press / Taylor & Francis, 2023. Chapter 64: Hernias."),
("Sabiston 21e",
"Townsend CM, Beauchamp RD, Evers BM, Mattox KL (eds). Sabiston Textbook of Surgery: "
"The Biological Basis of Modern Surgical Practice, 21st Edition. Elsevier, 2022. "
"Chapter 82: Abdominal Wall Hernias; Chapter 44: Abdominal Wall."),
("Fischer 8e",
"Fischer JE et al. (eds). Fischer's Mastery of Surgery, 8th Edition. Wolters Kluwer, 2023. "
"Sections on Abdominal Wall Hernias, Open and Laparoscopic Hernia Repair."),
("M&G 7e",
"Mulholland MW, Lillemoe KD, Doherty GM et al. (eds). Mulholland & Greenfield's Surgery: "
"Scientific Principles and Practice, 7th Edition. Wolters Kluwer, 2022. "
"Chapters 72–73: Inguinal Hernia; Chapter on Abdominal Wall Reconstruction."),
("CST 14e",
"Cameron JL, Cameron AM (eds). Current Surgical Therapy, 14th Edition. Elsevier, 2023. "
"Chapters on Open Incisional Hernia Repair; Tissue Rearrangement and Mesh; "
"Open Abdomen Management."),
("S&F 11e",
"Feldman M, Friedman LS, Brandt LJ (eds). Sleisenger & Fordtran's Gastrointestinal "
"and Liver Disease, 11th Edition. Elsevier, 2021."),
("EHS Guidelines 2018",
"Miserez M, Peeters E, Aufenacker T, et al. Update with level 1 studies of the European "
"Hernia Society guidelines on the treatment of inguinal hernia in adult patients. "
"Hernia 2014;18(2):151–63. (Referenced within Bailey & Love 28e.)"),
]
for abbr, full in refs:
story.append(Paragraph(
f"<b>[{abbr}]</b> {full}",
REF_S
))
story.append(spacer(0.6))
story.append(thin_rule())
story.append(Paragraph(
"This document was prepared for educational purposes from standard peer-reviewed surgical textbooks. "
"Clinical decisions should always be guided by current guidelines, local protocols, and individual patient assessment. "
"Prepared June 2026 | Orris Medical Reference.",
FOOTER
))
# ─────────────────────────────────────────────────────────────────────────────
# BUILD
# ─────────────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated: {OUTPUT}")
print(f"Pages: approximately 12–14 (multi-page reference document)")