Treatment for burns superficial but 2 boils fluid filled on arm
superficial burn treatment fluid-filled blisters first aid management
| Feature | Your Burn |
|---|---|
| Blisters present? | Yes - confirms partial-thickness (2nd degree) |
| Pain level | Likely very painful (good sign - nerve endings intact) |
| Expected healing | 14-21 days without scarring |
| Skin color | Red, moist under blister |
Important note: This is general medical information. If the burn was caused by chemicals, electricity, or fire in an enclosed space, or if you have any underlying health conditions (diabetes, immunosuppression), see a doctor promptly rather than managing at home.
Create a quick reference PDF of burn wound care steps
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /home/daytona/workspace/burn-wound-care && python3 -c "from reportlab.l…
~/burn-wound-care/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.platypus.flowables import HRFlowable
OUTPUT = "/home/daytona/workspace/burn-wound-care/Burn_Wound_Care_Quick_Reference.pdf"
# ── Colours ──────────────────────────────────────────────────────────────────
RED = colors.HexColor("#C0392B")
ORANGE = colors.HexColor("#E67E22")
DARK_BLUE = colors.HexColor("#1A3A5C")
LIGHT_BG = colors.HexColor("#F5F8FC")
WARN_BG = colors.HexColor("#FFF3CD")
WARN_BORDER = colors.HexColor("#FFC107")
GREEN = colors.HexColor("#1E8449")
GREEN_BG = colors.HexColor("#EAFAF1")
RED_BG = colors.HexColor("#FDEDEC")
GREY_LINE = colors.HexColor("#BDC3C7")
WHITE = colors.white
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
TITLE = style("Title",
fontName="Helvetica-Bold", fontSize=20, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=4)
SUBTITLE = style("Subtitle",
fontName="Helvetica", fontSize=11, textColor=colors.HexColor("#D6EAF8"),
alignment=TA_CENTER, spaceAfter=0)
SECTION_HEAD = style("SectionHead",
fontName="Helvetica-Bold", fontSize=12, textColor=WHITE,
alignment=TA_LEFT, spaceAfter=0, leftIndent=6)
BODY = style("Body",
fontName="Helvetica", fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
spaceAfter=3, leading=14)
BODY_BOLD = style("BodyBold",
fontName="Helvetica-Bold", fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
spaceAfter=3, leading=14)
STEP_NUM = style("StepNum",
fontName="Helvetica-Bold", fontSize=13, textColor=DARK_BLUE,
alignment=TA_CENTER)
STEP_TITLE = style("StepTitle",
fontName="Helvetica-Bold", fontSize=10, textColor=DARK_BLUE, leading=13)
STEP_BODY = style("StepBody",
fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#34495E"),
leading=13, spaceAfter=2)
WARN_TITLE = style("WarnTitle",
fontName="Helvetica-Bold", fontSize=9.5, textColor=colors.HexColor("#856404"))
WARN_BODY = style("WarnBody",
fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#856404"), leading=13)
INFECT_TITLE = style("InfectTitle",
fontName="Helvetica-Bold", fontSize=9.5, textColor=RED)
INFECT_BODY = style("InfectBody",
fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#922B21"), leading=13)
FOOTER = style("Footer",
fontName="Helvetica-Oblique", fontSize=7.5, textColor=colors.HexColor("#95A5A6"),
alignment=TA_CENTER)
# ── Helpers ───────────────────────────────────────────────────────────────────
def header_cell(text, bg=DARK_BLUE):
return Paragraph(text, SECTION_HEAD)
def section_table(title_text, content_rows, bg=DARK_BLUE, col_widths=None, page_width=17*cm):
"""Wrap content rows inside a titled section box."""
# Title row
title_para = Paragraph(title_text, SECTION_HEAD)
title_data = [[title_para]]
title_tbl = Table(title_data, colWidths=[page_width])
title_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
if col_widths is None:
col_widths = [page_width]
content_tbl = Table(content_rows, colWidths=col_widths)
content_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_BG),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("LINEBELOW", (0,0), (-1,-2), 0.3, GREY_LINE),
("BOX", (0,0), (-1,-1), 0.5, GREY_LINE),
]))
return [title_tbl, content_tbl]
def bullet(text, bold_prefix=""):
if bold_prefix:
return Paragraph(f"<b>{bold_prefix}</b> {text}", STEP_BODY)
return Paragraph(f"\u2022 {text}", STEP_BODY)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=GREY_LINE, spaceAfter=6, spaceBefore=6)
# ── Document ──────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=1.5*cm, bottomMargin=2*cm,
title="Burn Wound Care – Quick Reference",
author="Orris Medical Reference"
)
W = A4[0] - 4*cm # usable width (17 cm)
story = []
# ══ TITLE BANNER ═══════════════════════════════════════════════════════════════
banner_data = [[
Paragraph("🔥 BURN WOUND CARE", TITLE),
],[
Paragraph("Quick Reference Guide | Superficial & Partial-Thickness Burns", SUBTITLE),
]]
banner = Table(banner_data, colWidths=[W])
banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,0), 12),
("BOTTOMPADDING", (0,1), (-1,1), 12),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
]))
story.append(banner)
story.append(Spacer(1, 6))
# ══ BURN DEPTH TABLE ══════════════════════════════════════════════════════════
depth_head = [
Paragraph("BURN DEPTH CLASSIFICATION", SECTION_HEAD)
]
story.append(Table([[depth_head[0]]], colWidths=[W],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), RED),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),8),
])
))
def cell(t, bold=False, align=TA_LEFT, color=colors.HexColor("#2C3E50")):
s = ParagraphStyle("c", fontName="Helvetica-Bold" if bold else "Helvetica",
fontSize=8.5, textColor=color, alignment=align, leading=12)
return Paragraph(t, s)
depth_rows = [
[cell("Degree", bold=True), cell("Features", bold=True), cell("Blisters?", bold=True), cell("Healing", bold=True)],
[cell("1st – Superficial"), cell("Red, painful, dry"), cell("No"), cell("~7 days")],
[cell("2nd – Superficial Partial\n(your case if blisters present)", bold=True, color=RED),
cell("Red, moist, very painful", bold=True, color=RED),
cell("YES", bold=True, color=RED),
cell("14–21 days, minimal scar", bold=True, color=RED)],
[cell("2nd – Deep Partial"), cell("Pale/white, less pain"), cell("May blister"), cell("3–8 weeks, may scar")],
[cell("3rd – Full Thickness"), cell("Charred/leathery, no pain"), cell("No"), cell("Months; needs graft")],
]
depth_tbl = Table(depth_rows, colWidths=[4.5*cm, 5.5*cm, 2.5*cm, 4.5*cm])
depth_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#D5D8DC")),
("BACKGROUND", (0,2), (-1,2), colors.HexColor("#FDEDEC")),
("BACKGROUND", (0,1), (-1,1), LIGHT_BG),
("BACKGROUND", (0,3), (-1,3), LIGHT_BG),
("BACKGROUND", (0,4), (-1,4), colors.HexColor("#F2F3F4")),
("LINEBELOW", (0,0), (-1,-1), 0.4, GREY_LINE),
("BOX", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(depth_tbl)
story.append(Spacer(1, 8))
# ══ STEP-BY-STEP WOUND CARE ════════════════════════════════════════════════════
steps_head = Paragraph("STEP-BY-STEP WOUND CARE", SECTION_HEAD)
story.append(Table([[steps_head]], colWidths=[W],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),8),
])
))
steps = [
("1", "COOL THE BURN",
["Run cool (not ice cold) water over burn for 10–20 minutes immediately.",
"Do NOT use ice, butter, toothpaste, or oil — these worsen tissue damage.",
"Remove jewellery/watches near burn before swelling begins."]),
("2", "PAIN RELIEF",
["Give oral ibuprofen (400–600 mg) or paracetamol before wound care.",
"Adequate analgesia is required before cleaning — do not skip this step."]),
("3", "CLEAN THE WOUND",
["Wash gently with mild soap and water or dilute antiseptic solution.",
"Pat dry with a clean cloth or sterile gauze — do not rub."]),
("4", "BLISTER MANAGEMENT",
["Small intact blisters on non-mobile areas → LEAVE INTACT (natural barrier).",
"Large blisters or blisters over joints → drain/debride by a healthcare provider.",
"If a blister ruptures → trim loose dead skin; treat exposed area as open wound.",
"Never forcefully pop blisters at home."]),
("5", "APPLY TOPICAL AGENT",
["Apply thin layer of bacitracin ointment OR triple antibiotic ointment.",
"Avoid silver sulfadiazine on the face (causes grey skin staining).",
"Silver sulfadiazine contraindicated in infants < 2 months."]),
("6", "DRESS THE WOUND",
["Cover with a non-stick sterile dressing or low-adherent gauze.",
"Consider hydrocolloid or foam dressings for fewer changes and less pain.",
"Dressing goal: protect epithelium, reduce evaporation, minimise infection."]),
("7", "ELEVATE THE LIMB",
["Elevate the burned arm for 24–48 hours to prevent oedema.",
"Keep elevated above the level of the heart when resting."]),
("8", "FOLLOW-UP DRESSING CHANGES",
["Change dressing every 24–48 hours (or sooner if wet/soiled).",
"Reassess burn depth at each change.",
"Expected healing for superficial partial-thickness: 14–21 days."]),
("9", "TETANUS CHECK",
["Confirm tetanus immunisation is current.",
"Administer tetanus toxoid ± immunoglobulin if uncertain or overdue."]),
]
def step_row(num, title, bullets):
num_para = Paragraph(num, STEP_NUM)
title_para = Paragraph(title, STEP_TITLE)
body_paras = [title_para] + [Paragraph(f"\u2022 {b}", STEP_BODY) for b in bullets]
return [num_para, body_paras]
step_data = []
for s in steps:
num_p = Paragraph(s[0], STEP_NUM)
content = [Paragraph(s[1], STEP_TITLE)] + [Paragraph(f"\u2022 {b}", STEP_BODY) for b in s[2]]
step_data.append([num_p, content])
step_tbl = Table(step_data, colWidths=[1.2*cm, W - 1.2*cm])
step_tbl.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("LINEBELOW", (0,0), (-1,-2), 0.3, GREY_LINE),
("BACKGROUND", (0,0), (-1,-1), LIGHT_BG),
("BACKGROUND", (0,1), (-1,1), WHITE),
("BACKGROUND", (0,3), (-1,3), WHITE),
("BACKGROUND", (0,5), (-1,5), WHITE),
("BACKGROUND", (0,7), (-1,7), WHITE),
("BOX", (0,0), (-1,-1), 0.5, GREY_LINE),
]))
story.append(step_tbl)
story.append(Spacer(1, 8))
# ══ DO NOT USE ════════════════════════════════════════════════════════════════
donot_head = Paragraph("❌ DO NOT APPLY TO BURNS", SECTION_HEAD)
story.append(Table([[donot_head]], colWidths=[W],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#922B21")),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),8),
])
))
donot_items = [
["Ice or ice water", "Causes frostbite; worsens tissue damage"],
["Butter / cooking oil", "Traps heat; promotes infection"],
["Toothpaste", "No evidence; may cause infection"],
["Egg white / raw egg", "Infection risk (Salmonella)"],
["Alcohol / spirit", "Causes severe pain; dries wound"],
["Adhesive tape directly on wound", "Damages fragile healing skin on removal"],
]
def dno_cell(t, bold=False):
return Paragraph(t, ParagraphStyle("dn",
fontName="Helvetica-Bold" if bold else "Helvetica",
fontSize=9, textColor=colors.HexColor("#922B21"), leading=12))
donot_rows = [[dno_cell(a, bold=True), dno_cell(b)] for a, b in donot_items]
donot_tbl = Table(donot_rows, colWidths=[6*cm, W-6*cm])
donot_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), RED_BG),
("LINEBELOW", (0,0), (-1,-2), 0.3, GREY_LINE),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#E74C3C")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(donot_tbl)
story.append(Spacer(1, 8))
# ══ TWO-COLUMN LOWER SECTION ═══════════════════════════════════════════════════
# Left: Signs of infection | Right: When to seek care
def make_inner_table(title, items, title_bg, item_color, bg_color, border_color):
t_para = Paragraph(title, ParagraphStyle("ih",
fontName="Helvetica-Bold", fontSize=9.5, textColor=WHITE,
alignment=TA_LEFT))
title_row = Table([[t_para]], colWidths=[(W/2) - 0.3*cm])
title_row.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), title_bg),
("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8),
]))
rows = [[Paragraph(f"\u2022 {it}", ParagraphStyle("ib",
fontName="Helvetica", fontSize=8.8, textColor=item_color, leading=13))]
for it in items]
body = Table(rows, colWidths=[(W/2) - 0.3*cm])
body.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), bg_color),
("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
("LEFTPADDING",(0,0),(-1,-1),8),
("LINEBELOW",(0,0),(-1,-2),0.3, border_color),
("BOX",(0,0),(-1,-1),0.5, border_color),
]))
return [title_row, body]
infect_signs = [
"Increasing redness, swelling, or warmth",
"Pus or cloudy fluid from wound",
"Fever (temperature > 38°C)",
"Pain worsening after 48 hours",
"Red streaks spreading from wound",
"Foul / offensive smell",
]
when_seek = [
"Burn larger than your palm",
"Burns on face, hands, feet, genitals, or joints",
"Circumferential (wrapping) burn on limb",
"Chemical, electrical, or inhalation burns",
"Tetanus immunisation uncertain",
"Infants, elderly, diabetics, immunocompromised",
"Pain not controlled with oral analgesics",
"Any signs of infection (see left column)",
]
left_tables = make_inner_table("⚠ SIGNS OF INFECTION", infect_signs,
RED, colors.HexColor("#922B21"), RED_BG, colors.HexColor("#E74C3C"))
right_tables = make_inner_table("🏥 WHEN TO SEEK MEDICAL CARE", when_seek,
ORANGE, colors.HexColor("#784212"), WARN_BG, WARN_BORDER)
two_col = Table(
[[left_tables, right_tables]],
colWidths=[W/2, W/2]
)
two_col.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING",(0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (0,-1), 4),
("LEFTPADDING", (0,0), (1,-1), 4),
]))
story.append(two_col)
story.append(Spacer(1, 10))
# ══ TOPICAL AGENT QUICK TABLE ══════════════════════════════════════════════════
toa_head = Paragraph("TOPICAL AGENTS AT A GLANCE", SECTION_HEAD)
story.append(Table([[toa_head]], colWidths=[W],
style=TableStyle([
("BACKGROUND",(0,0),(-1,-1), DARK_BLUE),
("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8),
])
))
def tc(t, bold=False, color=colors.HexColor("#2C3E50")):
return Paragraph(t, ParagraphStyle("tc",
fontName="Helvetica-Bold" if bold else "Helvetica",
fontSize=8.5, textColor=color, leading=12))
toa_rows = [
[tc("Agent", bold=True), tc("Use", bold=True), tc("Notes / Cautions", bold=True)],
[tc("Bacitracin ointment"), tc("Face, small burns"), tc("Safe, widely available")],
[tc("Triple antibiotic ointment"),tc("Minor burns"), tc("Neomycin may cause allergy in some")],
[tc("Silver sulfadiazine 1%"), tc("Partial-thickness burns"), tc("Avoid on face; avoid in infants <2 mo; delays healing vs newer dressings")],
[tc("Hydrocolloid dressing"), tc("Superficial partial burns"),tc("Fewer changes; good pain relief; promotes healing")],
[tc("Foam / hydro-fiber dressing"),tc("Moderate burns"), tc("Antimicrobial variants available; less frequent changes")],
]
toa_tbl = Table(toa_rows, colWidths=[4.5*cm, 4*cm, W-8.5*cm])
toa_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#D5D8DC")),
("LINEBELOW", (0,0), (-1,-1), 0.3, GREY_LINE),
("BOX", (0,0), (-1,-1), 0.5, GREY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("BACKGROUND", (0,1), (-1,1), LIGHT_BG),
("BACKGROUND", (0,3), (-1,3), LIGHT_BG),
("BACKGROUND", (0,5), (-1,5), LIGHT_BG),
]))
story.append(toa_tbl)
story.append(Spacer(1, 10))
# ══ FOOTER ═════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.6, color=DARK_BLUE, spaceBefore=4, spaceAfter=4))
story.append(Paragraph(
"Source: Tintinalli's Emergency Medicine | Sabiston Textbook of Surgery | "
"American Burn Association Guidelines • For clinical use only • "
"Always refer to specialist for major, chemical, electrical, or inhalation burns.",
FOOTER
))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
python3 /home/daytona/workspace/burn-wound-care/generate_pdf.py
ls -lh /home/daytona/workspace/burn-wound-care/
Burn Wound Care Quick Reference
PDF Document · PDF