History taking for STOMA in surgery

Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Now I have comprehensive information. Let me compile a thorough, structured history-taking guide for a patient with a stoma.

History Taking for a Patient with a STOMA (Surgery)

This is a structured approach for taking a history from a patient who presents with a stoma - either as part of a surgical short case, OSCE, or clinical ward assessment.

1. Introduction & Setting the Scene

  • Introduce yourself, confirm patient identity
  • Establish rapport - acknowledge that living with a stoma can be emotionally taxing
  • Ask: "Can you tell me a bit about your stoma - when it was formed and why?"

2. Presenting Complaint

Identify the primary reason for the current consultation:
  • Routine review?
  • Problem with the stoma (leakage, pain, skin problems, change in output)?
  • Planning for stoma reversal?
  • Complication (hernia, prolapse, blockage)?

3. History of the Stoma

Indication / Why was it formed?

Ask about the underlying disease that necessitated the stoma:
  • Colorectal cancer (most common) - stage, site, neoadjuvant/adjuvant treatment
  • Inflammatory bowel disease - Crohn's disease or Ulcerative Colitis; previous flares, medical therapy (biologics, steroids, immunosuppressants)
  • Diverticular disease - Hartmann's procedure (sigmoid colostomy after emergency resection)
  • Trauma / Ischaemic colitis / Perforation
  • Familial Adenomatous Polyposis (FAP) - total proctocolectomy + end ileostomy
  • Obstruction / Volvulus (emergency stoma)
  • Faecal incontinence (permanent diverting colostomy)
  • Urological causes - urostomy/ileal conduit (bladder cancer, neurogenic bladder)

Type of Stoma

  • End stoma vs Loop stoma vs Double-barrel
  • Colostomy (left iliac fossa, flush, formed stool) vs Ileostomy (right iliac fossa, spout, liquid output) vs Urostomy/Ileal conduit
  • Temporary vs Permanent

Date of Formation

  • How long has the patient had the stoma?
  • Was reversal planned? Has reversal been discussed?

Type of Operation

  • Abdominoperineal resection (APR) - permanent end colostomy
  • Hartmann's procedure - end sigmoid colostomy ± possible reversal
  • Anterior resection with defunctioning loop ileostomy
  • Total proctocolectomy with end ileostomy (for IBD/FAP)
  • Hemicolectomy

4. Current Stoma Function - Key Questions

This is the core of a stoma history:

Output

  • Frequency - How many times a day does the bag fill?
  • Volume - Ileostomy normal output: ~500-800 mL/day. High output (>1500 mL/day) is problematic
  • Consistency - Liquid (ileostomy) / Formed (colostomy) / Watery diarrhoea?
  • Colour - Normal pink-brown / Green (bile, high ileostomy) / Black (bleeding, iron) / Blood-stained?
  • Odour - Excessive odour?
  • Flatus - Does the bag balloon with gas?

Appliance/Bag

  • Type of appliance being used (1-piece vs 2-piece, closed vs drainable)
  • How often do they change it?
  • Any leakage / difficulty maintaining the seal?
  • Does it "disappear" into abdominal folds when sitting? (Indicates poor stoma siting)

5. Stoma Complications - Systematic Review

Ask specifically about each:

Early Complications (within days-weeks post-op)

ComplicationAsk
Ischaemia/NecrosisWas the stoma ever purple/black after surgery?
High outputWas there excess fluid loss requiring IV fluids?
BleedingAny blood from or around the stoma?
DehydrationAdmissions for rehydration or electrolyte imbalance?

Late Complications (weeks-months-years)

ComplicationAsk
Skin irritation / Parastomal dermatitisSoreness, redness, rash around the stoma?
Parastomal herniaBulge around the stoma, especially on standing/coughing? Any discomfort? Any obstruction symptoms?
ProlapseHas the stoma ever protruded outward / fallen out?
RetractionHas the stoma sunk inwards? Trouble keeping the bag on?
Stenosis / StrictureNarrow output, pellet-shaped stool, difficulty with bag application?
BleedingFrom trauma (appliance) vs luminal GI source
FistulationAny discharge from skin around the stoma?
Parastomal pyoderma gangrenosumPainful ulceration around stoma? History of IBD?
From Bailey & Love: Stoma complications include skin irritation, stenosis, prolapse, parastomal hernia, retraction, bleeding, ischaemia, and fistulation.
From Fischer's Mastery of Surgery: Parastomal hernia can be diagnosed by history and physical exam; patients complain of a bulge around the stoma and secondary fitting problems with appliances.

6. Symptoms Related to the Underlying Disease

Always assess whether the original disease is controlled:
  • Cancer: Any recurrence symptoms? (weight loss, change in bowel habit in residual bowel, haematochezia, PR mucus)
  • IBD: Any active disease in residual bowel? (Crohn's recurrence at stoma site after proctocolectomy occurs in ~30%)
  • Diverticular: Any pain, fever, new discharge?

7. Impact on Quality of Life

This is often neglected but is extremely important:
  • Body image - How does the patient feel about having the stoma? Any anxiety, depression?
  • Clothing - Does it affect what they wear (belt line, tight waistbands)?
  • Diet - Foods that increase output, cause blockage, or odour? (e.g. mushrooms, popcorn = blockage risk for ileostomy)
  • Physical activity - Any restrictions?
  • Sexual function - Impotence/retrograde ejaculation (post-pelvic surgery), dyspareunia
  • Social life - Embarrassment, noise (flatus), odour concerns
  • Sleep - Waking to empty bag at night?
  • Occupation - Return to work?

8. Past Medical History

  • Prior abdominal surgeries (adhesions, previous stoma, previous anastomosis)
  • Radiation to the abdomen/pelvis (increases ischaemia and stenosis risk)
  • Obesity (makes stoma siting difficult; increases hernia risk)
  • Diabetes (impaired wound healing)
  • Steroid / immunosuppressant use (IBD - impairs healing)
  • Renal function (high ileostomy output can cause dehydration and renal failure)
  • Incontinence history (relevant if stoma reversal is planned)

9. Drug History

  • Antimotility agents: Loperamide, codeine (to slow ileostomy output)
  • Oral rehydration therapy (high output ileostomy)
  • Proton pump inhibitors (reduce high output)
  • Somatostatin analogues (octreotide - for very high output)
  • Iron supplements (black stool - confusing output colour)
  • Biologics/Steroids (ongoing IBD treatment)
  • Anticoagulants (bleeding risk)

10. Family History

  • Colorectal cancer (hereditary syndromes - FAP, Lynch syndrome)
  • IBD
  • Psoriasis (if considering parastomal pyoderma gangrenosum)

11. Social History

  • Who performs stoma care? Patient independently or carer/nurse?
  • Living alone? Access to stoma nurse/supplies?
  • Smoking (impairs wound healing, increases Crohn's activity)
  • Alcohol
  • Employment / activities

12. Review of Systems

  • Fluid balance: Thirst, dark urine, pre-renal AKI (especially ileostomy)
  • Nutritional status: Weight loss, fatigue, micronutrient deficiency (B12, zinc, folate - especially ileostomy/short gut)
  • Obstruction: Abdominal distension, colicky pain, reduced/absent output, nausea/vomiting
  • Infection: Fever, abdominal pain, tenderness around stoma site

13. Previous Stoma Reversal Discussion

  • Has reversal been planned/attempted?
  • Are there any contraindications? (Residual cancer, incontinence, poor sphincter function, ongoing pelvic sepsis)
  • Schwartz: Prior anorectal trauma and incontinence history must be obtained before considering low anastomosis/reversal

Summary: Mnemonic for Stoma History (STOMAI)

LetterDomain
S - Site & TypeIleostomy / Colostomy / Urostomy; End / Loop; Temporary / Permanent
T - Time & IndicationWhen formed; Underlying disease (cancer, IBD, diverticular)
O - OutputVolume, consistency, colour, frequency
M - Management of applianceType of bag, leakage, skin care, stoma nurse involvement
A - Adverse effects / ComplicationsHernia, prolapse, retraction, stenosis, skin problems
I - ImpactQoL, diet, sexual function, psychological, reversal plans

Sources:
  • Bailey and Love's Short Practice of Surgery, 28th Edition - Stoma section, Stoma Complications
  • Sabiston Textbook of Surgery - Stoma Types, preoperative planning, stoma nurse role
  • Fischer's Mastery of Surgery, 8th Ed. - Complications and Management, ileostomy care
  • Schwartz's Principles of Surgery, 11th Ed. - Ostomies/Stomas, preoperative marking, incontinence history

Create a printable patient history form for stoma assessment

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"

Running Command

mkdir -p /tmp/workspace/stoma-form && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import mm, cm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT from reportlab.pdfgen import canvas from reportlab.platypus.flowables import Flowable OUTPUT = "/tmp/workspace/stoma-form/Stoma_Patient_History_Form.pdf" # ── colours ────────────────────────────────────────────────────────────────── DARK_TEAL = colors.HexColor("#1B5E6E") MID_TEAL = colors.HexColor("#2A7F93") LIGHT_TEAL = colors.HexColor("#D4EEF4") PALE_TEAL = colors.HexColor("#EEF7FA") LIGHT_GREY = colors.HexColor("#F5F5F5") MID_GREY = colors.HexColor("#CCCCCC") DARK_GREY = colors.HexColor("#444444") WHITE = colors.white BOX_LINE = colors.HexColor("#AAAAAA") W, H = A4 # 595.27 x 841.89 pt # ── document ────────────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUTPUT, pagesize=A4, topMargin=18*mm, bottomMargin=14*mm, leftMargin=16*mm, rightMargin=16*mm ) styles = getSampleStyleSheet() def style(name, parent="Normal", **kw): s = ParagraphStyle(name, parent=styles[parent], **kw) return s S = { "title": style("title", fontSize=18, textColor=WHITE, leading=22, fontName="Helvetica-Bold", alignment=TA_CENTER), "subtitle": style("sub", fontSize=10, textColor=WHITE, leading=14, fontName="Helvetica", alignment=TA_CENTER), "sechead": style("sec", fontSize=9.5, textColor=WHITE, leading=13, fontName="Helvetica-Bold", alignment=TA_LEFT), "label": style("lbl", fontSize=8.5, textColor=DARK_GREY, leading=12, fontName="Helvetica-Bold"), "body": style("bod", fontSize=8, textColor=DARK_GREY, leading=11, fontName="Helvetica"), "small": style("sml", fontSize=7.5, textColor=DARK_GREY, leading=10, fontName="Helvetica"), "note": style("nte", fontSize=7, textColor=colors.HexColor("#777777"), leading=10, fontName="Helvetica-Oblique"), "footer": style("ftr", fontSize=7, textColor=colors.HexColor("#999999"), leading=9, fontName="Helvetica", alignment=TA_CENTER), } usable_w = W - 32*mm # 163mm # ── helpers ─────────────────────────────────────────────────────────────────── def spacer(h=3): return Spacer(1, h*mm) def line_field(label, w=None, lines=1): """A labelled underline field.""" fw = w or usable_w rows = [] rows.append(Paragraph(label, S["label"])) for _ in range(lines): rows.append(HRFlowable(width=fw, thickness=0.5, color=BOX_LINE, spaceAfter=2, spaceBefore=1)) return rows def section_header(text): """Coloured section banner.""" data = [[Paragraph(text, S["sechead"])]] t = Table(data, colWidths=[usable_w]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_TEAL), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("ROWBACKGROUNDS", (0,0), (-1,-1), [DARK_TEAL]), ])) return t def checkbox_row(items, cols=None): """Row of labelled checkboxes.""" cols = cols or len(items) col_w = usable_w / cols row_data = [] for item in items: row_data.append(Paragraph(f"☐ {item}", S["body"])) # Pad to fill cols while len(row_data) < cols: row_data.append(Paragraph("", S["body"])) t = Table([row_data], colWidths=[col_w]*cols) t.setStyle(TableStyle([ ("TOPPADDING", (0,0), (-1,-1), 2), ("BOTTOMPADDING", (0,0), (-1,-1), 2), ("LEFTPADDING", (0,0), (-1,-1), 3), ("RIGHTPADDING", (0,0), (-1,-1), 3), ])) return t def info_grid(pairs, cols=2): """Grid of label: ________ fields.""" col_w = usable_w / cols rows = [] row = [] for i, (lbl, w_pct) in enumerate(pairs): inner_w = col_w * (w_pct or 1.0) cell = [Paragraph(lbl, S["label"]), HRFlowable(width=inner_w - 10, thickness=0.5, color=BOX_LINE, spaceBefore=1, spaceAfter=2)] row.append(cell) if len(row) == cols or i == len(pairs)-1: while len(row) < cols: row.append(Paragraph("", S["body"])) rows.append(row) row = [] t = Table(rows, colWidths=[col_w]*cols) t.setStyle(TableStyle([ ("TOPPADDING", (0,0), (-1,-1), 2), ("BOTTOMPADDING", (0,0), (-1,-1), 2), ("LEFTPADDING", (0,0), (-1,-1), 4), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return t def shaded_box(content_rows, bg=PALE_TEAL, pad=4): """Wrap a list of flowables in a shaded box via a 1-cell Table.""" inner = [[r] for r in content_rows] # Flatten into single cell using nested Table trick t = Table([[content_rows]], colWidths=[usable_w]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("TOPPADDING", (0,0), (-1,-1), pad), ("BOTTOMPADDING", (0,0), (-1,-1), pad), ("LEFTPADDING", (0,0), (-1,-1), pad+2), ("RIGHTPADDING", (0,0), (-1,-1), pad+2), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return t def notes_box(label="Notes / Additional comments:", lines=3, w=None): fw = w or usable_w items = [Paragraph(label, S["label"])] for _ in range(lines): items.append(HRFlowable(width=fw-8, thickness=0.5, color=BOX_LINE, spaceAfter=3, spaceBefore=1)) return shaded_box(items, bg=LIGHT_GREY) def complication_table(rows_data): """3-col table: Complication | Present | Details.""" header = [ Paragraph("Complication", S["label"]), Paragraph("Present?", S["label"]), Paragraph("Details / Duration", S["label"]), ] data = [header] for comp in rows_data: data.append([ Paragraph(comp, S["body"]), Paragraph("☐ Yes ☐ No ☐ ?", S["small"]), HRFlowable(width=60*mm, thickness=0.5, color=BOX_LINE), ]) cw = [70*mm, 28*mm, 65*mm] t = Table(data, colWidths=cw, repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (2,0), MID_TEAL), ("TEXTCOLOR", (0,0), (2,0), WHITE), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_TEAL]), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) return t # ═══════════════════════════════════════════════════════════════════════════════ # BUILD STORY # ═══════════════════════════════════════════════════════════════════════════════ story = [] # ── HEADER BANNER ───────────────────────────────────────────────────────────── header_data = [[ Paragraph("STOMA PATIENT HISTORY ASSESSMENT FORM", S["title"]), Paragraph("Surgical / Colorectal / Stoma Therapy Unit", S["subtitle"]), ]] header_t = Table( [[Paragraph("STOMA PATIENT HISTORY ASSESSMENT FORM", S["title"])], [Paragraph("Surgical · Colorectal · Stoma Therapy Unit", S["subtitle"])]], colWidths=[usable_w] ) header_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), DARK_TEAL), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ])) story.append(header_t) story.append(spacer(3)) # ── PATIENT DEMOGRAPHICS ────────────────────────────────────────────────────── story.append(section_header("SECTION 1 — PATIENT DEMOGRAPHICS")) story.append(spacer(2)) demo_data = [ [ [Paragraph("Patient Name:", S["label"]), HRFlowable(width=75*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Date of Birth:", S["label"]), HRFlowable(width=36*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("MRN / Hospital No.:", S["label"]), HRFlowable(width=36*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], [ [Paragraph("Clinician / Nurse:", S["label"]), HRFlowable(width=75*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Date of Assessment:", S["label"]), HRFlowable(width=36*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Ward / Clinic:", S["label"]), HRFlowable(width=36*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], ] demo_t = Table(demo_data, colWidths=[90*mm, 50*mm, 53*mm]) demo_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), PALE_TEAL), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(demo_t) story.append(spacer(3)) # ── SECTION 2 — STOMA DETAILS ───────────────────────────────────────────────── story.append(section_header("SECTION 2 — STOMA DETAILS")) story.append(spacer(2)) # Type of stoma story.append(Paragraph("2.1 Type of Stoma:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Ileostomy", "Colostomy (sigmoid)", "Colostomy (transverse)", "Urostomy / Ileal conduit", "Other:___________"], cols=3)) story.append(spacer(2)) story.append(Paragraph("2.2 Configuration:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["End (terminal)", "Loop", "Double-barrel", "End-loop", "Continent (reservoir)"], cols=3)) story.append(spacer(2)) story.append(Paragraph("2.3 Permanence:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Temporary (diverting)", "Permanent", "Unknown at time of formation"], cols=3)) story.append(spacer(2)) # Dates and operation op_data = [ [ [Paragraph("Date stoma formed:", S["label"]), HRFlowable(width=38*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Duration (approx.):", S["label"]), HRFlowable(width=38*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Planned reversal date:", S["label"]), HRFlowable(width=38*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], [ [Paragraph("Operation performed:", S["label"]), HRFlowable(width=108*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], Paragraph("", S["body"]), [Paragraph("Surgeon:", S["label"]), HRFlowable(width=38*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], ] op_t = Table(op_data, colWidths=[58*mm, 53*mm, 52*mm]) op_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), LIGHT_GREY), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ("SPAN", (0,1), (1,1)), ])) story.append(op_t) story.append(spacer(2)) story.append(Paragraph("2.4 Indication / Underlying Diagnosis:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Colorectal cancer", "Rectal cancer (APR)", "Crohn's disease", "Ulcerative colitis"], cols=4)) story.append(checkbox_row(["Diverticular disease (Hartmann's)", "FAP / Polyposis", "Trauma / Emergency", "Bladder cancer (urostomy)"], cols=4)) story.append(checkbox_row(["Ischaemic colitis", "Volvulus / Obstruction", "Faecal incontinence", "Other:___________"], cols=4)) story.append(spacer(3)) # ── SECTION 3 — STOMA OUTPUT ────────────────────────────────────────────────── story.append(section_header("SECTION 3 — STOMA OUTPUT & FUNCTION")) story.append(spacer(2)) output_data = [ [ [Paragraph("Bag change frequency (per day):", S["label"]), HRFlowable(width=52*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Estimated output volume (mL/day):", S["label"]), HRFlowable(width=52*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], ] out_t = Table(output_data, colWidths=[83*mm, 80*mm]) out_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), PALE_TEAL), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(out_t) story.append(spacer(2)) story.append(Paragraph("3.1 Output Consistency:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Formed/solid", "Semi-formed / Soft", "Loose / Mushy", "Watery / Liquid", "Mucus only", "No output (nil)"], cols=3)) story.append(spacer(2)) story.append(Paragraph("3.2 Output Colour:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Normal brown", "Yellow / Green (bile)", "Dark / Black", "Blood-stained (bright red)", "Offensive odour"], cols=3)) story.append(spacer(2)) story.append(Paragraph("3.3 High Output Ileostomy (>1500 mL/day)?", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Yes — currently", "Yes — previously (resolved)", "No", "On antimotility agents (loperamide/codeine)"], cols=4)) story.append(spacer(2)) story.append(Paragraph("3.4 Flatus / Wind:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Minimal", "Moderate (bag balloons occasionally)", "Excessive / Problematic", "Filter in use"], cols=4)) story.append(spacer(3)) # ── SECTION 4 — APPLIANCE ───────────────────────────────────────────────────── story.append(section_header("SECTION 4 — APPLIANCE & SKIN MANAGEMENT")) story.append(spacer(2)) story.append(Paragraph("4.1 Appliance Type:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["1-piece closed bag", "1-piece drainable bag", "2-piece (flange + bag)", "Urostomy / Drainable"], cols=4)) story.append(spacer(2)) story.append(Paragraph("4.2 Appliance Fit & Leakage:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Good seal — no leakage", "Occasional minor leakage", "Frequent leakage — major problem", "Cannot maintain seal (retraction/folds)"], cols=2)) story.append(spacer(2)) story.append(Paragraph("4.3 Peristomal Skin Condition:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Healthy / Intact", "Mild erythema / Irritation", "Excoriation / Erosion", "Active ulceration"], cols=4)) story.append(checkbox_row(["Rash / Candidal infection", "Bleeding on contact", "Hyperplasia (thickened skin)", "Pyoderma gangrenosum"], cols=4)) story.append(spacer(2)) story.append(Paragraph("4.4 Who manages stoma care?", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Patient independently", "Family / Carer", "District nurse / Community stoma nurse", "Requires hospital-based assistance"], cols=2)) story.append(spacer(2)) story.append(notes_box("4.5 Appliance / Skin Notes:", lines=2)) story.append(spacer(3)) # ── SECTION 5 — COMPLICATIONS ───────────────────────────────────────────────── story.append(section_header("SECTION 5 — STOMA COMPLICATIONS")) story.append(spacer(2)) story.append(Paragraph( "Tick all that apply. Early = within 30 days; Late = >30 days post-op.", S["note"])) story.append(spacer(2)) comps = [ "Stoma ischaemia / Necrosis (early)", "Stoma retraction (sinks below skin level)", "Stoma prolapse (protrudes excessively)", "Stomal stenosis / Stricture (narrow output)", "Parastomal hernia (bulge around stoma)", "Peristomal skin irritation / Parastomal dermatitis", "Parastomal pyoderma gangrenosum", "Stoma bleeding (peristomal or intraluminal)", "Stoma fistula / Enterocutaneous fistula", "High output / Dehydration / Renal impairment", "Obstruction (food bolus / adhesional)", "Parastomal wound infection / Abscess", ] story.append(complication_table(comps)) story.append(spacer(3)) # ── SECTION 6 — UNDERLYING DISEASE REVIEW ──────────────────────────────────── story.append(section_header("SECTION 6 — UNDERLYING DISEASE REVIEW")) story.append(spacer(2)) story.append(Paragraph("6.1 Evidence of disease recurrence / activity?", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["No signs of recurrence", "Suspected — investigation pending", "Confirmed recurrence / active IBD", "N/A"], cols=4)) story.append(spacer(2)) story.append(Paragraph("6.2 Symptoms in residual bowel / pelvis:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["PR bleeding / Mucus discharge", "Pelvic pain", "Significant weight loss", "Tenesmus"], cols=4)) story.append(spacer(2)) story.append(notes_box("Disease activity / Recent investigations:", lines=2)) story.append(spacer(3)) # ── SECTION 7 — PMH, MEDICATIONS, ALLERGIES ────────────────────────────────── story.append(section_header("SECTION 7 — PAST MEDICAL HISTORY, MEDICATIONS & ALLERGIES")) story.append(spacer(2)) story.append(Paragraph("7.1 Relevant Past Medical History:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Inflammatory bowel disease", "Diabetes mellitus", "Renal impairment / CKD", "Pelvic irradiation"], cols=4)) story.append(checkbox_row(["Obesity (BMI >30)", "Previous abdominal surgery (adhesions)", "Cardiovascular disease", "Immunosuppressed"], cols=4)) story.append(spacer(2)) story.append(notes_box("Other significant PMH:", lines=2)) story.append(spacer(2)) story.append(Paragraph("7.2 Current Medications (stoma-relevant):", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Loperamide", "Codeine / Opioids", "Oral rehydration salts", "Omeprazole / PPI"], cols=4)) story.append(checkbox_row(["Octreotide", "Biologics (infliximab etc.)", "Steroids / Immunosuppressants", "Anticoagulants / Aspirin"], cols=4)) story.append(spacer(2)) story.append(notes_box("Other medications / Dosages:", lines=2)) story.append(spacer(2)) story.append(Paragraph("7.3 Known Allergies:", S["label"])) story.append(spacer(1)) allergy_t = Table( [[HRFlowable(width=usable_w-10, thickness=0.5, color=BOX_LINE, spaceAfter=1)]], colWidths=[usable_w] ) story.append(allergy_t) story.append(spacer(3)) # ── SECTION 8 — SOCIAL HISTORY & QoL ───────────────────────────────────────── story.append(section_header("SECTION 8 — SOCIAL HISTORY & QUALITY OF LIFE")) story.append(spacer(2)) qol_data = [ ["Domain", "Not a problem", "Mild concern", "Significant impact"], ["Body image / Self-esteem", "☐", "☐", "☐"], ["Sexual function / Intimacy", "☐", "☐", "☐"], ["Clothing / Physical appearance", "☐", "☐", "☐"], ["Diet restriction (blockage, odour)", "☐", "☐", "☐"], ["Physical activity / Exercise", "☐", "☐", "☐"], ["Social activities / Embarrassment", "☐", "☐", "☐"], ["Sleep disturbance (emptying at night)", "☐", "☐", "☐"], ["Return to work / Occupation", "☐", "☐", "☐"], ["Psychological distress / Depression", "☐", "☐", "☐"], ] qol_col_w = [85*mm, 30*mm, 30*mm, 38*mm] qol_t = Table(qol_data, colWidths=qol_col_w, repeatRows=1) qol_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (3,0), MID_TEAL), ("TEXTCOLOR", (0,0), (3,0), WHITE), ("FONTNAME", (0,0), (3,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 8), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_TEAL]), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 5), ("RIGHTPADDING", (0,0), (-1,-1), 5), ("ALIGN", (1,0), (-1,-1), "CENTER"), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(qol_t) story.append(spacer(2)) story.append(Paragraph("8.1 Smoking:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["Non-smoker", "Ex-smoker", "Current smoker — _____ pack-years"], cols=3)) story.append(spacer(2)) story.append(Paragraph("8.2 Alcohol intake:", S["label"])) story.append(spacer(1)) story.append(checkbox_row(["None", "Occasional / Social", "Regular (specify units/week):__________"], cols=3)) story.append(spacer(3)) # ── SECTION 9 — REVERSAL PLANNING ──────────────────────────────────────────── story.append(section_header("SECTION 9 — STOMA REVERSAL / FUTURE SURGICAL PLANNING")) story.append(spacer(2)) story.append(checkbox_row(["Reversal planned", "Reversal discussed — decision pending", "Reversal NOT planned", "Already reversed"], cols=4)) story.append(spacer(2)) story.append(Paragraph("9.1 Pre-reversal checklist (if applicable):", S["label"])) story.append(spacer(1)) rev_checks = [ ("Anastomosis healed (imaging / contrast enema confirmed)", "☐"), ("Oncological treatment completed (chemo/radiotherapy)", "☐"), ("No active pelvic sepsis / fistula", "☐"), ("Anorectal function / continence assessed", "☐"), ("Sphincter function satisfactory (manometry / clinical exam)", "☐"), ("Patient medically fit for anaesthesia", "☐"), ("Nutritional status optimised", "☐"), ] rev_data = [[Paragraph(item, S["body"]), Paragraph(chk, S["body"])] for item, chk in rev_checks] rev_t = Table(rev_data, colWidths=[145*mm, 18*mm]) rev_t.setStyle(TableStyle([ ("ROWBACKGROUNDS", (0,0), (-1,-1), [WHITE, LIGHT_TEAL]), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("ALIGN", (1,0), (1,-1), "CENTER"), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(rev_t) story.append(spacer(3)) # ── SECTION 10 — CLINICIAN SUMMARY ─────────────────────────────────────────── story.append(section_header("SECTION 10 — CLINICIAN SUMMARY & PLAN")) story.append(spacer(2)) story.append(notes_box("Key findings and clinical impression:", lines=3)) story.append(spacer(2)) story.append(notes_box("Action plan / Referrals / Follow-up:", lines=3)) story.append(spacer(2)) sign_data = [ [ [Paragraph("Clinician Signature:", S["label"]), HRFlowable(width=55*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Print Name:", S["label"]), HRFlowable(width=55*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], [Paragraph("Date:", S["label"]), HRFlowable(width=30*mm, thickness=0.5, color=BOX_LINE, spaceAfter=1, spaceBefore=1)], ], ] sign_t = Table(sign_data, colWidths=[72*mm, 68*mm, 43*mm]) sign_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), LIGHT_GREY), ("BOX", (0,0), (-1,-1), 0.5, BOX_LINE), ("INNERGRID", (0,0), (-1,-1), 0.3, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 4), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(sign_t) story.append(spacer(2)) # ── FOOTER NOTE ─────────────────────────────────────────────────────────────── story.append(HRFlowable(width=usable_w, thickness=0.5, color=MID_TEAL)) story.append(spacer(1)) story.append(Paragraph( "This form is for clinical documentation only and should be filed in the patient medical record. " "All assessments should be reviewed by a qualified clinician or enterostomal therapy (ET/WOCN) nurse.", S["footer"] )) # ── BUILD PDF ───────────────────────────────────────────────────────────────── def add_page_numbers(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 7) canvas.setFillColor(colors.HexColor("#999999")) canvas.drawRightString(W - 16*mm, 8*mm, f"Page {doc.page} | Stoma Patient History Form | {doc.build.__module__}") canvas.drawString(16*mm, 8*mm, "CONFIDENTIAL — Patient Medical Record") canvas.restoreState() def add_page_footer(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 7) canvas.setFillColor(colors.HexColor("#999999")) canvas.drawRightString(W - 16*mm, 8*mm, f"Page {doc.page}") canvas.drawString(16*mm, 8*mm, "CONFIDENTIAL — Patient Medical Record") canvas.restoreState() doc.build(story, onFirstPage=add_page_footer, onLaterPages=add_page_footer) print("SUCCESS:", OUTPUT) PYEOF

Running Command

python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/stoma-form/Stoma_Patient_History_Form.pdf') as pdf: print(f'Pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): txt = page.extract_text() print(f'--- Page {i+1} (first 200 chars) ---') print(txt[:200] if txt else '[no text layer]') "

Running Command

ls -lh /tmp/workspace/stoma-form/Stoma_Patient_History_Form.pdf

Your printable stoma patient history form is ready:

Stoma Patient History Form

PDF Document · PDF


What's included (4 A4 pages):
SectionContents
1 - DemographicsPatient name, DOB, MRN, clinician, ward, date
2 - Stoma DetailsType (ileostomy/colostomy/urostomy), configuration (end/loop/double-barrel), permanence, date formed, operation, indication with checkboxes (cancer, IBD, diverticular, trauma, FAP, etc.)
3 - Output & FunctionBag change frequency, estimated volume, consistency, colour, high-output flag, flatus assessment
4 - Appliance & SkinAppliance type, seal/leakage grading, peristomal skin condition (incl. pyoderma gangrenosum), who manages care
5 - ComplicationsFull table (12 complications) with Yes/No/? tick boxes and a details/duration field for each
6 - Underlying DiseaseRecurrence/activity check, residual bowel symptoms
7 - PMH, Medications & AllergiesRelevant comorbidities, stoma-relevant drugs (loperamide, octreotide, biologics, anticoagulants)
8 - Social History & QoL9-domain impact table (body image, sexual function, diet, sleep, occupation, etc.), smoking, alcohol
9 - Reversal PlanningReversal status + 7-item pre-reversal checklist
10 - Clinician SummaryFree-text findings, action plan, signature block
The form uses a teal colour scheme, is designed for A4 printing, and includes "CONFIDENTIAL - Patient Medical Record" in the footer of every page.

Types of stoma

Reading File
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Loading Image
Loading Image
Reading File
Finding Sources
I now have comprehensive material from multiple authoritative sources. Let me compile the full, well-structured answer.

Types of Stoma

A stoma is an opening surgically created between a hollow organ and the surface of the body. Stomas can be classified by several overlapping criteria.

Classification Framework

Stomas can be differentiated by:
  1. Origin - which part of the GI/urinary tract
  2. Configuration - how it is constructed (end, loop, double-barrel)
  3. Duration - temporary vs permanent
  4. Continence - incontinent vs continent

I. By Origin / Content Drained

A. ILEOSTOMY

Formed from the ileum (small bowel), usually sited in the right iliac fossa. Characterised by a spout (projects 2-4 cm from skin) - first described by Brooke (1952) - which is necessary to protect the peristomal skin from the irritant liquid effluent.
FeatureDetail
PositionRight iliac fossa
OutputLiquid to semi-liquid, 500-800 mL/day
AppearanceSpouted (2-4 cm protrusion)
RiskDehydration, electrolyte imbalances, renal failure
OdourLess offensive than colostomy
Clinical photo - spouted ileostomy in the right iliac fossa:
Spouted ileostomy in the right iliac fossa
Figure 74.8 from Bailey & Love - Spouted ileostomy in the right iliac fossa
Indications:
  • Ulcerative colitis / Crohn's disease (after proctocolectomy)
  • Familial adenomatous polyposis (FAP)
  • Colorectal cancer
  • Protecting a distal colorectal anastomosis (loop ileostomy)

B. COLOSTOMY

Formed from the colon, usually sited in the left iliac fossa (for sigmoid/descending colostomy). Unlike an ileostomy, a colostomy is flush with the skin (no spout needed) because the effluent is formed and non-irritant.
FeatureDetail
PositionLeft iliac fossa (sigmoid/descending); right flank (caecal/ascending); epigastric (transverse)
OutputFormed to semi-formed stool
AppearanceFlush with skin (no spout)
RiskConstipation, obstruction, prolapse (esp. transverse)
Types by site in the colon:
TypeSiteEffluentNotes
Ascending colostomyAscending colonLiquid - semi-liquidRarely used; high output
Transverse colostomyTransverse colonSemi-formedAvoided - prone to prolapse, sits at belt line
Descending colostomyDescending colonSemi-formedAcceptable alternative
Sigmoid colostomySigmoid colonFormedMost common; Hartmann's procedure
Descending and left-sided colostomies are usually preferable because most of the colon remains in circuit, allowing more colonic water absorption, producing more formed effluent. - Sabiston Textbook of Surgery
Transverse loop colostomies should seldom be used because they are large and very prone to prolapse, and it can be difficult to maintain pouch adherence because they are frequently located around the patient's belt line. - Sabiston

C. JEJUNOSTOMY

Formed from the jejunum (proximal small bowel).
  • Output is watery, bilious, and very high volume
  • Patients at high risk of dehydration, severe electrolyte imbalances, and malnutrition
  • Usually requires parenteral hydration and nutrition
  • Created in: Crohn's disease, trauma, ischaemic bowel, prior extensive bowel resections

D. UROSTOMY (Ileal Conduit)

A segment of ileum is used as a conduit to divert urine to the abdominal surface; the ureters are implanted into the ileal segment.
  • Sited in the right iliac fossa
  • Drains urine continuously (incontinent)
  • Requires a drainable urostomy bag
  • Indications: bladder cancer (radical cystectomy), neurogenic bladder, pelvic exenteration

II. By Configuration

1. End Stoma (Terminal Stoma)

The bowel is completely divided. The proximal end is brought through the abdominal wall, everted, and sutured to the skin. The distal bowel is either:
  • Removed (e.g. abdominoperineal resection - no distal bowel remains)
  • Closed and left in the abdomen - Hartmann's procedure (Hartmann's pouch)
  • Brought out as a mucous fistula
The distal closed bowel continues to produce mucus; patients occasionally discharge this per anus.
Key operations producing an end stoma:
  • Hartmann's procedure → end sigmoid colostomy
  • Abdominoperineal resection (APR) → permanent end colostomy
  • Total proctocolectomy → permanent end ileostomy

2. Loop Stoma

A loop of bowel is brought to the surface above skin level without dividing it completely. The bowel is partially opened (usually transversely) and both the proximal (afferent) and distal (efferent) limbs are everted and matured. The proximal limb is everted to a greater height to encourage output into the bag. A supporting rod or bridge is placed underneath for the first few days.
  • Used mainly for temporary diversion
  • Easily reversible (bowel continuity remains)
  • Loop ileostomy - preferred for defunctioning low rectal anastomosis or ileal pouch; easy to bring to surface; small, odourless
  • Loop colostomy - larger and more prone to prolapse; transverse loop colostomy should be avoided
A loop ileostomy is often used for defunctioning a low rectal anastomosis or an ileal pouch. A knuckle of ileum is exteriorised through a skin trephine in the right iliac fossa... This allows near-perfect defunctioning, but also the possibility of restoration of continuity. - Bailey & Love
Note: Traditional loop colostomies are NOT always completely diverting (some faecal stream can reflux into the distal limb).

3. Double-Barrel Stoma

The bowel is completely divided and both ends are brought through the abdominal wall at the same site (or occasionally separately), creating two adjacent openings:
  • Proximal limb = functional stoma (output)
  • Distal limb = mucous fistula (mucus only)
Typically used in:
  • Emergency cases
  • Cases with significant intra-abdominal inflammation
  • Where complete division is required intraoperatively

4. End-Loop Stoma

A hybrid construction: the bowel is divided, and the proximal limb is brought through the abdominal wall as a loop with a short efferent (distal) limb.
  • Allows for less tension on the mesentery
  • Particularly useful in obese patients with a large amount of subcutaneous fat
  • Matured similarly to a loop stoma
  • Provides the benefits of an end stoma (complete diversion) with the technical ease of a loop stoma

5. Continent Stoma (Reservoir)

An intra-abdominal pouch is created with a valve mechanism so the patient can self-catheterise the stoma at regular intervals rather than wearing an external bag.
Examples:
  • Kock pouch (continent ileostomy) - ileal reservoir with a nipple valve
  • Mitrofanoff - catheterisable channel using the appendix or tapered ileum (urological)
  • Indiana pouch - continent urinary diversion
Advantages: no external appliance needed Disadvantages: technically complex, valve failure requiring revision is common

III. By Duration

TypeDescriptionExample
Temporary (defunctioning)Created to divert the faecal stream while a distal anastomosis heals or disease is treated; planned for reversalLoop ileostomy after anterior resection
PermanentNo planned reversal; bowel continuity cannot or will not be restoredAPR end colostomy, total proctocolectomy end ileostomy

Ghost Ileostomy (Special Case)

A loop of ileum is prepared and marked, then sutured beneath the abdominal wall without being opened. It is not immediately functional but acts as a "safety net" - if an anastomotic leak occurs postoperatively, it can be rapidly converted to a functioning ileostomy without a return to theatre for bowel preparation.

IV. Summary Comparison Table

FeatureIleostomyColostomyUrostomy
Bowel segmentIleumColon (sigmoid/transverse/desc.)Ileum (conduit)
PositionRight iliac fossaLeft iliac fossa (sigmoid)Right iliac fossa
AppearanceSpouted (2-4 cm)FlushSpouted/flush
OutputLiquid, 500-1500 mL/dayFormed to semi-formedUrine, continuous
OdourLessMoreUrine
Skin riskHigh (alkaline/enzyme-rich effluent)LowerHigh (urine)
Electrolyte riskHigh (dehydration, Na/K loss)LowLow
Bag typeDrainableClosed or drainableDrainable (urostomy)
ReversalYes (loop) or No (end after TPC)Yes (Hartmann's) or No (APR)No (usually permanent)

Siting of a Stoma

Regardless of type, proper preoperative marking by a stoma care nurse is essential. The ideal site:
  • Within the rectus abdominis muscle (reduces hernia risk)
  • Visible to the patient (below the belt line, away from bony prominences, skin folds, the umbilicus, and scars)
  • Assessed in standing, sitting, and bending positions
  • Avoids the patient's waistband/clothing preferences

Sources:
  • Bailey and Love's Short Practice of Surgery, 28th Ed. - Stomas, Loop ileostomy, End-ileostomy
  • Sabiston Textbook of Surgery - Stoma Types, Colostomy
  • Fischer's Mastery of Surgery, 8th Ed. - Stoma Anatomy and Physiology, Alternative Configurations
  • Maingot's Abdominal Operations - Ileostomy
This is a shared conversation. Sign in to Orris to start your own chat.