abnormalities of would repair
| Factor | Mechanism |
|---|---|
| Diabetes mellitus | Defective keratinocyte function, impaired epithelialization, poor leukocyte function, microvascular disease |
| Malnutrition | Lack of substrate for collagen synthesis, protein deficiency, electrolyte abnormalities |
| Hypoxia / Hypoperfusion | Collagen hydroxylation requires oxygen as cofactor; fibroplasia is severely impaired |
| Anemia (profound, <15% hematocrit) | Reduced oxygen delivery; mild-moderate anemia does NOT significantly impair healing |
| Advanced age | Delay of ~1.9 days in epithelialization; decreased non-collagenous protein accumulation; no major impairment of collagen synthesis itself |
| Glucocorticoids (chronic/high dose) | Inhibit inflammation phase (neutrophil/macrophage migration, angiogenesis), reduce fibroblast proliferation, reduce collagen synthesis; vitamin A can partially reverse this |
| Chemotherapeutic drugs | Inhibit early cell proliferation, DNA/protein synthesis |
| Immunosuppression | Higher infection rates, failure of inflammatory phase |
| Smoking | Reduced tissue oxygenation, prolongs inflammatory phase, impairs reparative cell function |
| Feature | Hypertrophic Scar | Keloid |
|---|---|---|
| Boundaries | Within wound margins | Extends beyond wound margins |
| Onset | Weeks after injury | Months after injury |
| Regression | May regress spontaneously | Rarely regresses |
| Genetic predisposition | Less prominent | Strong (dark skin types) |
| Preferred sites | Burns, areas of tension | Earlobes, presternal, deltoid |
| Response to treatment | Good | Resistant, high recurrence |
| Abnormality | Category | Key Feature |
|---|---|---|
| Wound dehiscence | Deficient | Wound edges separate |
| Chronic ulcer | Deficient | No healing >4 weeks |
| Over-granulation | Deficient | Exuberant granulation tissue |
| Hypertrophic scar | Excessive | Within wound margins, reversible |
| Keloid | Excessive | Extends beyond wound, irreversible |
| Scar contracture | Excessive | Functional impairment over joints |
| Pyogenic granuloma | Aberrant | Vascular nodule, bleeds easily |
| Marjolin's ulcer | Malignant transformation | SCC in chronic wound |
make a pdf
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist"
~/wound-repair/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/wound-repair/Abnormalities_of_Wound_Repair.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Abnormalities of Wound Repair",
author="Orris Medical"
)
styles = getSampleStyleSheet()
# Custom styles
DEEP_BLUE = colors.HexColor("#1a3a5c")
MID_BLUE = colors.HexColor("#2e6da4")
LIGHT_BLUE = colors.HexColor("#d6e8f7")
ACCENT_RED = colors.HexColor("#b83232")
LIGHT_GREY = colors.HexColor("#f4f4f4")
TABLE_HEADER_BG = colors.HexColor("#2e6da4")
TABLE_ALT = colors.HexColor("#eaf3fb")
title_style = ParagraphStyle(
"DocTitle", parent=styles["Title"],
fontSize=22, textColor=DEEP_BLUE, spaceAfter=4,
fontName="Helvetica-Bold", alignment=TA_CENTER
)
subtitle_style = ParagraphStyle(
"DocSubtitle", parent=styles["Normal"],
fontSize=11, textColor=MID_BLUE, spaceAfter=16,
fontName="Helvetica", alignment=TA_CENTER
)
h1_style = ParagraphStyle(
"H1", parent=styles["Heading1"],
fontSize=14, textColor=colors.white, spaceAfter=6, spaceBefore=10,
fontName="Helvetica-Bold", backColor=DEEP_BLUE,
leftIndent=-0.5*cm, rightIndent=-0.5*cm,
borderPad=6
)
h2_style = ParagraphStyle(
"H2", parent=styles["Heading2"],
fontSize=12, textColor=DEEP_BLUE, spaceAfter=4, spaceBefore=10,
fontName="Helvetica-Bold", borderPad=3,
borderColor=MID_BLUE, leftIndent=0
)
h3_style = ParagraphStyle(
"H3", parent=styles["Heading3"],
fontSize=10.5, textColor=MID_BLUE, spaceAfter=2, spaceBefore=6,
fontName="Helvetica-Bold"
)
body_style = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, leading=14, spaceAfter=5,
fontName="Helvetica", alignment=TA_JUSTIFY, textColor=colors.HexColor("#222222")
)
bullet_style = ParagraphStyle(
"Bullet", parent=body_style,
leftIndent=14, bulletIndent=4, spaceAfter=3,
bulletText="\u2022"
)
caption_style = ParagraphStyle(
"Caption", parent=body_style,
fontSize=8, textColor=colors.grey, alignment=TA_CENTER, spaceAfter=2
)
note_style = ParagraphStyle(
"Note", parent=body_style,
fontSize=8.5, textColor=colors.HexColor("#555555"),
backColor=LIGHT_BLUE, borderPad=5, leftIndent=6
)
def h1(text):
return Paragraph(f" {text}", h1_style)
def h2(text):
return Paragraph(text, h2_style)
def h3(text):
return Paragraph(text, h3_style)
def body(text):
return Paragraph(text, body_style)
def bullet(text):
return Paragraph(f"<bullet>•</bullet>{text}", bullet_style)
def note(text):
return Paragraph(text, note_style)
def spacer(h=6):
return Spacer(1, h)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=MID_BLUE, spaceAfter=4, spaceBefore=4)
def make_table(headers, rows, col_widths=None):
data = [headers] + rows
if col_widths is None:
col_widths = [doc.width / len(headers)] * len(headers)
style = TableStyle([
("BACKGROUND", (0, 0), (-1, 0), TABLE_HEADER_BG),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 9),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 8.5),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, TABLE_ALT]),
("GRID", (0, 0), (-1, -1), 0.4, colors.HexColor("#aacde8")),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING", (0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
])
tbl = Table(data, colWidths=col_widths, repeatRows=1)
tbl.setStyle(style)
return tbl
# ─── Build story ────────────────────────────────────────────────────────────
story = []
# Title block
story.append(spacer(8))
story.append(Paragraph("Abnormalities of Wound Repair", title_style))
story.append(Paragraph("A Clinical & Pathological Overview", subtitle_style))
story.append(hr())
story.append(spacer(4))
story.append(body(
"Wound repair can deviate in two major directions: <b>deficient healing</b> (inadequate repair) "
"and <b>excessive healing</b> (overproduction of scar tissue). Both categories carry significant "
"clinical consequences and require different management strategies."
))
story.append(spacer(8))
# ══════════════════════════════════════════════
# SECTION A
# ══════════════════════════════════════════════
story.append(h1("A. Deficient / Impaired Wound Healing"))
story.append(spacer(4))
# 1. Delayed vs Impaired
story.append(h2("1. Delayed vs. Impaired Healing"))
story.append(body(
"Schwartz's Principles of Surgery distinguishes two clinically important patterns:"
))
rows = [
["<b>Delayed Healing</b>",
"Wound-breaking strength is initially below normal but eventually reaches normal levels. "
"Caused by nutritional deficiency, infection, or severe trauma — all reversible."],
["<b>Impaired / Chronic Healing</b>",
"The wound never achieves mechanical strength equivalent to normally healed wounds. "
"Seen in diabetes, chronic steroid use, and radiation-damaged tissue."],
]
# use Paragraph cells
rows_para = [[Paragraph(r[0], body_style), Paragraph(r[1], body_style)] for r in rows]
story.append(make_table(
[Paragraph("<b>Pattern</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Description</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold"))],
rows_para,
col_widths=[4.5*cm, 12*cm]
))
story.append(spacer(4))
story.append(note(
"\u26a0 A fully healed wound achieves only 75–80% of normal tissue strength even under ideal conditions."
))
story.append(spacer(8))
# 2. Systemic Factors
story.append(h2("2. Systemic Factors That Impair Healing"))
sys_rows = [
["Diabetes mellitus", "Defective keratinocyte function, impaired epithelialization, poor leukocyte function, microvascular disease"],
["Malnutrition", "Lack of substrate for collagen synthesis, protein deficiency, electrolyte imbalances"],
["Hypoxia / Hypoperfusion", "Collagen hydroxylation requires O\u2082 as cofactor; fibroplasia severely impaired"],
["Profound anemia (<15% Hct)", "Reduced O\u2082 delivery. Mild-moderate anemia does NOT significantly impair healing"],
["Advanced age", "~1.9-day delay in epithelialization; decreased non-collagenous protein accumulation"],
["Glucocorticoids (chronic)", "Inhibit inflammation, angiogenesis, fibroblast proliferation, collagen synthesis. Vitamin A can partially reverse"],
["Chemotherapeutic drugs", "Inhibit early cell proliferation, DNA and protein synthesis"],
["Immunosuppression", "Higher infection rates, failure of the inflammatory phase"],
["Smoking", "Reduced tissue oxygenation; prolongs and impairs reparative cellular functions"],
]
sys_rows_para = [
[Paragraph(f"<b>{r[0]}</b>", body_style), Paragraph(r[1], body_style)]
for r in sys_rows
]
story.append(make_table(
[Paragraph("<b>Factor</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Mechanism / Effect</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold"))],
sys_rows_para,
col_widths=[4.5*cm, 12*cm]
))
story.append(spacer(8))
# 3. Local Factors
story.append(h2("3. Local Factors That Impair Healing"))
local_items = [
"<b>Infection / wound contamination</b> — prolongs inflammation, causes tissue destruction",
"<b>Foreign bodies</b> — perpetuate inflammation, prevent closure",
"<b>Excessive wound tension</b> — leads to widened, thin, depressed scars or dehiscence",
"<b>Vascular insufficiency</b> (arterial or venous) — prevents adequate O\u2082/nutrient delivery",
"<b>Radiation damage</b> — endarteritis obliterans in irradiated tissue; impairs all phases",
"<b>Wound desiccation</b> — dry environment slows epithelialization",
]
for item in local_items:
story.append(bullet(item))
story.append(spacer(8))
# 4. Specific Complications
story.append(h2("4. Specific Complications of Deficient Healing"))
story.append(h3("a. Wound Dehiscence"))
story.append(body(
"Separation of wound edges — most common in abdominal wounds. Risk factors include infection, "
"obesity, malnutrition, steroid use, and poor surgical technique. <b>Evisceration</b> "
"(extrusion of abdominal contents) is a surgical emergency."
))
story.append(h3("b. Chronic Non-Healing Wounds / Ulcers"))
story.append(body(
"Defined as failure to heal after <b>4 weeks</b> of treatment. Pathogenesis: wound trapped in "
"a chronic inflammatory state with elevated MMPs that destroy growth factors and matrix. "
"Examples include diabetic foot ulcers, venous leg ulcers, pressure (decubitus) ulcers, and "
"ischemic ulcers."
))
story.append(h3("c. Over-Granulation ('Proud Flesh')"))
story.append(body(
"Wound populated by unstable, highly vascular granulation tissue — fragile and prone to "
"intermittent bleeding. Treatment: topical silver nitrate, topical corticosteroid, or formal excision."
))
story.append(h3("d. Fistula Formation"))
story.append(body(
"Abnormal epithelialized tract connecting two epithelial surfaces. Occurs when healing is "
"diverted by foreign material, infection, or distal obstruction."
))
story.append(spacer(10))
# ══════════════════════════════════════════════
# SECTION B
# ══════════════════════════════════════════════
story.append(h1("B. Excessive / Aberrant Healing"))
story.append(spacer(4))
# 1. Hypertrophic Scars
story.append(h2("1. Hypertrophic Scars"))
story.append(body(
"Raised, red, firm scar that remains <b>within the boundaries</b> of the original wound. "
"Caused by persistent mechanical tension and stimulatory growth factors — especially <b>TGF-\u03b2</b>. "
"The process is <b>reversible</b> when stimuli are removed."
))
story.append(spacer(3))
story.append(body("<b>Molecular changes:</b>"))
mol_items = [
"Elevated collagen synthesis, decreased collagen degradation",
"<b>Decreased MMP-1</b> (collagenase) and MMP-9",
"<b>Elevated MMP-2</b> (late tissue remodeling gelatinase)",
"Blocking TGF-\u03b2 with antibodies decreases scar fibrosis",
"Increased mechanical stress activates mechanotransduction pathways \u2192 promotes hypertrophic scarring",
]
for item in mol_items:
story.append(bullet(item))
story.append(spacer(3))
story.append(body(
"<b>Treatment:</b> Pressure garments, intralesional triamcinolone (10–40 mg/mL every 2–4 weeks), "
"silicone sheets/gels, surgical revision after 1 year if persistent. ~50–100% of patients respond "
"to steroids; up to 50% experience recurrence."
))
story.append(spacer(8))
# 2. Keloids
story.append(h2("2. Keloids"))
story.append(body(
"Scar tissue that <b>extends beyond the original wound borders</b> — the key distinguishing feature "
"from hypertrophic scars. Can be locally destructive and debilitating."
))
keloid_items = [
"<b>Genetically predisposed</b> — significantly more common in darker skin types (Fitzpatrick IV–VI)",
"May arise <b>months after</b> the original injury",
"Predilection for: earlobes, face, deltoid area, presternal region",
"Mechanism: TGF-\u03b2 switches on an <b>irreversible</b> fibroproliferative state",
"Collagen synthesis elevated with low degradation (similar enzyme pattern to hypertrophic scars)",
]
for item in keloid_items:
story.append(bullet(item))
story.append(spacer(3))
story.append(body(
"<b>Treatment:</b> More resistant than hypertrophic scars. Repeated surgical excision combined "
"with adjuvant <b>radiotherapy</b>, intralesional steroids, laser therapy. High recurrence rate."
))
story.append(spacer(8))
# Comparison table
story.append(h2("Hypertrophic Scar vs. Keloid: Key Differences"))
comp_rows = [
["Boundaries", "Within wound margins", "Extends beyond wound margins"],
["Onset", "Weeks after injury", "Months after injury"],
["Spontaneous regression", "May regress", "Rarely regresses"],
["Genetic predisposition", "Less prominent", "Strong (dark skin types)"],
["Preferred sites", "Burns, areas under tension", "Earlobes, presternal, deltoid"],
["Response to treatment", "Generally good", "Resistant, high recurrence"],
]
comp_rows_para = [
[Paragraph(f"<b>{r[0]}</b>", body_style),
Paragraph(r[1], body_style),
Paragraph(r[2], body_style)]
for r in comp_rows
]
comp_hdr = [
Paragraph("<b>Feature</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Hypertrophic Scar</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Keloid</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
]
story.append(make_table(comp_hdr, comp_rows_para, col_widths=[4*cm, 6.5*cm, 6*cm]))
story.append(spacer(8))
# 3. Scar Contracture
story.append(h2("3. Scar Contracture"))
story.append(body(
"Abnormal shortening of immature scar tissue causing <b>functional impairment</b>, particularly "
"across joints (flexion contracture) or the neck. Caused by excess myofibroblast activity "
"and poorly organized collagen remodeling."
))
story.append(body(
"<b>Treatment:</b> Z-plasty, skin grafting, or flap coverage to release tension and restore function."
))
story.append(spacer(8))
# 4. Pyogenic Granuloma
story.append(h2("4. Pyogenic Granuloma"))
story.append(body(
"Benign proliferation of capillary blood vessels following a traumatic wound. Presents as a "
"<b>painless red fleshy nodule</b> growing rapidly over weeks with intermittent bleeding. "
"Not a true granuloma (a misnomer). Treatment: topical silver nitrate or surgical excision."
))
story.append(spacer(8))
# 5. Marjolin's Ulcer
story.append(h2("5. Marjolin's Ulcer"))
story.append(body(
"Rare but aggressive <b>squamous cell carcinoma</b> arising within a chronic wound (pressure "
"sore, burn, chronic osteomyelitis). Develops due to chronic inflammatory environment driving "
"malignant transformation."
))
story.append(note(
"\u26a0 Key clinical point: High propensity for distant metastasis (behaves more aggressively than "
"de novo SCC). Any chronic wound with sudden phenotypic change requires early biopsy."
))
story.append(spacer(8))
# 6. Heritable Disorders
story.append(h2("6. Heritable Connective Tissue Disorders Affecting Wound Repair"))
hered_rows = [
["Ehlers-Danlos Syndrome", "Defective collagen cross-linking; fragile, hyperextensible skin; poor wound healing"],
["Osteogenesis Imperfecta", "Defective type I collagen; fragile bones and soft tissue"],
["Epidermolysis Bullosa", "Fragile skin blisters easily; wounds heal with significant scarring"],
["Acrodermatitis Enteropathica", "Zinc deficiency; zinc is cofactor for enzymes critical to wound healing"],
]
hered_para = [
[Paragraph(f"<b>{r[0]}</b>", body_style), Paragraph(r[1], body_style)]
for r in hered_rows
]
story.append(make_table(
[Paragraph("<b>Disorder</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Wound Healing Defect</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold"))],
hered_para,
col_widths=[5.5*cm, 11*cm]
))
story.append(spacer(12))
# ══════════════════════════════════════════════
# SUMMARY TABLE
# ══════════════════════════════════════════════
story.append(h1("Summary: Abnormalities of Wound Repair"))
story.append(spacer(4))
summary_rows = [
["Wound Dehiscence", "Deficient", "Wound edges separate; evisceration is emergency"],
["Chronic Ulcer", "Deficient", "No healing after >4 weeks; elevated MMP environment"],
["Over-Granulation", "Deficient", "Exuberant, fragile granulation tissue"],
["Hypertrophic Scar", "Excessive", "Within wound margins, may regress, responds to steroids"],
["Keloid", "Excessive", "Extends beyond wound margins, irreversible, resistant"],
["Scar Contracture", "Excessive", "Functional impairment across joints"],
["Pyogenic Granuloma", "Aberrant", "Benign vascular nodule; intermittent bleeding"],
["Marjolin's Ulcer", "Malignant transformation","SCC in chronic wound; high metastatic potential"],
]
summary_para = [
[Paragraph(f"<b>{r[0]}</b>", body_style),
Paragraph(r[1], body_style),
Paragraph(r[2], body_style)]
for r in summary_rows
]
summary_hdr = [
Paragraph("<b>Abnormality</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Category</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
Paragraph("<b>Key Feature</b>", ParagraphStyle("th", parent=body_style, textColor=colors.white, fontName="Helvetica-Bold")),
]
story.append(make_table(summary_hdr, summary_para, col_widths=[4.5*cm, 3.5*cm, 8.5*cm]))
story.append(spacer(12))
# References
story.append(hr())
story.append(Paragraph("<i>References</i>", ParagraphStyle("ref_h", parent=body_style, fontSize=9, textColor=DEEP_BLUE, fontName="Helvetica-Bold")))
refs = [
"Schwartz's Principles of Surgery, 11th Edition - Chapter 9: Wound Healing",
"Sabiston Textbook of Surgery: The Biological Basis of Modern Surgical Practice",
"Bailey and Love's Short Practice of Surgery, 28th Edition - Chapter 47",
"Mulholland and Greenfield's Surgery: Scientific Principles and Practice, 7th Edition",
"Fitzpatrick's Dermatology, 9th Edition",
]
for ref in refs:
story.append(Paragraph(f"\u2022 {ref}", ParagraphStyle("ref", parent=body_style, fontSize=8.5, textColor=colors.HexColor("#555555"))))
# Build PDF
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
python /home/daytona/workspace/wound-repair/generate_pdf.py
Abnormalities of Wound Repair
PDF Document · PDF
pdf is not downloading
ls -lh /home/daytona/workspace/wound-repair/Abnormalities_of_Wound_Repair.pdf
Abnormalities of Wound Repair
PDF Document · PDF