15 year female with 8mm renal stone
pediatric urolithiasis management kidney stones children
PMID: 41263325
8mm renal stone pediatric 15 year old management treatment guidelines 2025
| Finding | Condition to Consider |
|---|---|
| Growth failure / rickets | dRTA, Dent disease, hereditary hypophosphatemic rickets |
| Ocular abnormalities | Familial hypomagnesemia with hypercalciuria |
| Family history of renal disease or nephrocalcinosis | Cystinuria, primary hyperoxaluria, Dent disease |
| Elevated creatinine | Dent disease, cystinuria, primary hyperoxaluria |
| Hypokalemia + acidosis | Distal renal tubular acidosis (dRTA) |
| Abnormal urinary crystals | Cystinuria |
| Nephrocalcinosis on imaging | Primary hyperoxaluria, dRTA, Dent disease |
"In pediatric patients with asymptomatic and non-obstructing renal stones, clinicians may utilize active surveillance with periodic ultrasonography." (Expert opinion)
| Stone Burden | Recommended Intervention |
|---|---|
| Total renal stone burden ≤20 mm (includes 8mm) | SWL or URS as first-line |
| Total renal stone burden >20 mm | PCNL or SWL (with stent/nephrostomy) |
| Open/laparoscopic/robotic surgery | Not routinely recommended unless anatomic abnormality |
| Stone Type | Preventive Measure |
|---|---|
| Calcium oxalate (most common) | Increase fluid intake; reduce sodium/oxalate diet; thiazide for hypercalciuria; potassium citrate for hypocitraturia |
| Uric acid | Urinary alkalinization (potassium citrate); allopurinol |
| Cystine | High fluid intake; alkalinization; D-penicillamine or tiopronin for severe cases |
| Struvite (infection) | Eradicate infection (Proteus, Klebsiella); surgical stone removal; acetohydroxamic acid (rarely used in children) |
Post operative notes after renal stne
| Name: | [Patient Name] |
| Age / Sex: | 15 years / Female |
| MRN: | [######] |
| Date of Admission: | [DD/MM/YYYY] |
| Date of Discharge: | [DD/MM/YYYY] |
| Length of Stay: | [X] days |
| Admitting Consultant: | [Pediatric Urologist Name] |
| Primary Team: | Pediatric Urology |
| Investigation | Result |
|---|---|
| Urinalysis | [Hematuria, no infection / UTI present - treated] |
| Urine culture | [Negative / Organism - treated with antibiotics] |
| Serum creatinine | [X] µmol/L (normal) |
| Serum calcium | [X] mmol/L |
| Serum uric acid | [X] mmol/L |
| eGFR | [X] mL/min/1.73m² |
| FBC | [Hb X g/dL, WBC X, Platelets X] |
| Coagulation (PT/APTT) | Within normal limits |
| Non-contrast CT KUB | 8mm calculus, [location], HU [X], no significant hydronephrosis / [degree] hydronephrosis |
| Renal USS | [Findings] |
| Medication | Dose | Frequency | Duration |
|---|---|---|---|
| Ibuprofen (with food) | 400mg | TDS | 5 days (for pain) |
| Paracetamol | 500-1000mg | QDS PRN | 5 days |
| Tamsulosin 0.4mg (if DJ stent in situ) | 0.4mg | OD nocte | Until stent removal |
| [Antibiotics - if urine culture positive] | [As per sensitivity] | [As directed] | [Course] |
| Potassium citrate (if hypocitraturia confirmed) | [10-20 mEq] | BD | Ongoing (nephrology review) |
| Increased fluid intake (target urine output >2L/day) | - | - | Lifelong |
| Appointment | Timeframe | Purpose |
|---|---|---|
| Pediatric Urology | 2 weeks post-discharge | Wound check, review stone analysis result, DJ stent removal scheduling |
| Repeat imaging (USS KUB) | 4-6 weeks | Confirm stone clearance, check for residual fragments |
| Pediatric Nephrology | 6-8 weeks | 24-hour urine metabolic workup (calcium, oxalate, citrate, uric acid, cystine, sodium, creatinine) |
| Dietitian | Within 1 month | Dietary counselling for stone prevention |
| Stone composition result | 2-3 weeks | To guide long-term preventive therapy |
Note: This is a template. All bracketed fields [like this] must be filled in with actual patient data before use. This document should not be used as a clinical document without completion and countersignature by a licensed clinician.
Generate Word document version of this discharge summary
mkdir -p /home/daytona/workspace/renal-stone-discharge && ls /home/daytona/works…
~/renal-stone-discharge/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, VerticalAlign,
ShadingType, Header, Footer, PageNumber, NumberFormat, UnderlineType,
PageBreak
} = require('docx');
const fs = require('fs');
// ── helpers ──────────────────────────────────────────────────────────────────
const BLUE = "1F4E79"; // dark navy
const LBLUE = "D6E4F0"; // light blue shading
const GREY = "F2F2F2"; // light grey shading
const WHITE = "FFFFFF";
function heading1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 280, after: 100 },
children: [
new TextRun({
text,
bold: true,
size: 28,
color: WHITE,
font: "Calibri",
})
],
shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE },
indent: { left: 120, right: 120 },
});
}
function heading2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 200, after: 60 },
children: [
new TextRun({
text,
bold: true,
size: 24,
color: BLUE,
font: "Calibri",
})
],
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: BLUE } },
});
}
function para(text, opts = {}) {
return new Paragraph({
spacing: { after: 80 },
children: [
new TextRun({
text,
size: 20,
font: "Calibri",
bold: opts.bold || false,
italics: opts.italic || false,
color: opts.color || "000000",
})
],
indent: opts.indent ? { left: 200 } : {},
alignment: opts.center ? AlignmentType.CENTER : AlignmentType.LEFT,
});
}
function bullet(text) {
return new Paragraph({
bullet: { level: 0 },
spacing: { after: 60 },
children: [new TextRun({ text, size: 20, font: "Calibri" })],
});
}
function noteItalic(text) {
return new Paragraph({
spacing: { after: 60 },
children: [new TextRun({ text, size: 18, italics: true, color: "555555", font: "Calibri" })],
});
}
function spacer() {
return new Paragraph({ spacing: { after: 60 }, children: [new TextRun("")] });
}
// ── tables ────────────────────────────────────────────────────────────────────
function labelValueTable(rows) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: rows.map(([label, value]) =>
new TableRow({
children: [
new TableCell({
width: { size: 35, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, fill: LBLUE },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({ children: [new TextRun({ text: label, bold: true, size: 20, font: "Calibri" })] })],
}),
new TableCell({
width: { size: 65, type: WidthType.PERCENTAGE },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({ children: [new TextRun({ text: value, size: 20, font: "Calibri" })] })],
}),
],
})
),
});
}
function columnTable(headers, rows, colWidths) {
const headerRow = new TableRow({
tableHeader: true,
children: headers.map((h, i) =>
new TableCell({
width: { size: colWidths[i], type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, fill: BLUE },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({ children: [new TextRun({ text: h, bold: true, size: 20, color: WHITE, font: "Calibri" })] })],
})
),
});
const dataRows = rows.map((row, ri) =>
new TableRow({
children: row.map((cell, i) =>
new TableCell({
width: { size: colWidths[i], type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, fill: ri % 2 === 0 ? WHITE : GREY },
margins: { top: 60, bottom: 60, left: 120, right: 120 },
children: [new Paragraph({ children: [new TextRun({ text: cell, size: 20, font: "Calibri" })] })],
})
),
})
);
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [headerRow, ...dataRows],
});
}
// ── DOCUMENT ──────────────────────────────────────────────────────────────────
const children = [
// ── TITLE ──
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 120 },
children: [new TextRun({ text: "DISCHARGE SUMMARY", bold: true, size: 40, color: BLUE, font: "Calibri" })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 60 },
children: [new TextRun({ text: "Pediatric Urology Department", size: 22, color: "444444", font: "Calibri", italics: true })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 200 },
children: [new TextRun({ text: "[Hospital Name] | [Address] | [Phone]", size: 18, color: "888888", font: "Calibri" })],
}),
// ── PATIENT DETAILS ──
heading1("PATIENT DETAILS"),
spacer(),
labelValueTable([
["Name:", "[Patient Name]"],
["Age / Sex:", "15 Years / Female"],
["MRN:", "[######]"],
["Date of Admission:", "[DD/MM/YYYY]"],
["Date of Discharge:", "[DD/MM/YYYY]"],
["Length of Stay:", "[X] days"],
["Admitting Consultant:", "[Pediatric Urologist Name]"],
["Primary Team:", "Pediatric Urology"],
]),
spacer(),
// ── DIAGNOSIS ──
heading1("DIAGNOSIS"),
spacer(),
labelValueTable([
["Primary Diagnosis:", "Right/Left renal calculus, [upper/lower pole], 8mm"],
["Procedure Performed:", "Percutaneous Nephrolithotomy (PCNL) — Mini/Standard"],
["ICD-10 Code:", "N20.0 — Calculus of kidney"],
]),
spacer(),
// ── PRESENTING COMPLAINT ──
heading1("PRESENTING COMPLAINT"),
spacer(),
para("The patient presented with a [X]-day history of right/left flank pain, associated with hematuria and nausea. Imaging confirmed an 8mm calculus in the [location] of the right/left kidney with [mild/no] hydronephrosis."),
spacer(),
// ── RELEVANT HISTORY ──
heading1("RELEVANT HISTORY"),
spacer(),
columnTable(
["Parameter", "Details"],
[
["Past Medical History", "No known chronic illness / [specify if relevant]"],
["Family History", "[Positive/Negative] for urolithiasis"],
["Allergies", "NKDA / [specify]"],
["Medications Pre-Admission", "None / [specify]"],
["Previous Stone Episodes", "First episode / Prior history"],
],
[30, 70]
),
spacer(),
// ── PRE-OP INVESTIGATIONS ──
heading1("PRE-OPERATIVE INVESTIGATIONS"),
spacer(),
columnTable(
["Investigation", "Result"],
[
["Urinalysis", "[Hematuria, no infection / UTI present - treated]"],
["Urine Culture", "[Negative / Organism - treated with antibiotics]"],
["Serum Creatinine", "[X] µmol/L (normal)"],
["Serum Calcium", "[X] mmol/L"],
["Serum Uric Acid", "[X] mmol/L"],
["eGFR", "[X] mL/min/1.73m²"],
["FBC", "Hb [X] g/dL, WBC [X], Platelets [X]"],
["Coagulation (PT/APTT)", "Within normal limits"],
["Non-contrast CT KUB", "8mm calculus, [location], HU [X], [degree] hydronephrosis"],
["Renal Ultrasound", "[Findings]"],
],
[40, 60]
),
spacer(),
// ── PROCEDURE DETAILS ──
heading1("PROCEDURE DETAILS"),
spacer(),
columnTable(
["Field", "Details"],
[
["Date of Surgery", "[DD/MM/YYYY]"],
["Anaesthesia", "General anaesthesia"],
["Position", "Prone / Modified supine (flank-free)"],
["Surgeon", "[Name]"],
["Assistant", "[Name]"],
["Anaesthetist", "[Name]"],
],
[30, 70]
),
spacer(),
heading2("Operative Findings"),
bullet("Access: [Fluoroscopic / Ultrasound-guided] percutaneous access to [calyx]"),
bullet("Tract size: Mini-PCNL (14-18Fr) / Standard PCNL (24-30Fr)"),
bullet("Stone: Single calculus, 8mm, [upper/lower pole], [appearance: white/yellow/hard]"),
bullet("Lithotripsy: [Pneumatic / Holmium laser / Ultrasonic] — good fragmentation achieved"),
bullet("Stone clearance: Complete / Residual fragments <2mm"),
bullet("Nephrostomy tube placed: Yes [X Fr] / No (tubeless PCNL)"),
bullet("Ureteral (DJ) stent placed: Yes [X Fr, X cm] / No"),
bullet("Estimated blood loss: [X] mL"),
bullet("Intra-operative complications: None / [specify]"),
bullet("Stone sent for: Composition analysis"),
spacer(),
// ── POST-OP COURSE ──
heading1("POST-OPERATIVE COURSE"),
spacer(),
columnTable(
["Day", "Clinical Notes"],
[
["Day 0\n(Day of Surgery)", "Recovered from anaesthesia without immediate complications. Haemodynamically stable. IV fluids maintained. Urinary catheter in situ draining clear/blood-stained urine."],
["Day 1", "Vitals stable; afebrile. Nephrostomy tube draining [X] mL serous/blood-stained fluid. Adequate urine output. IV paracetamol + ketorolac; transitioned to oral analgesia. Tolerating oral fluids and diet. Post-op Hb [X] g/dL — no significant drop."],
["Day 2", "Nephrostomy tube clamped for [X] hours; patient comfortable. Check imaging (X-ray KUB/USS): no residual significant fragments / minor residual <2mm. Nephrostomy tube removed. Mobilising independently."],
["Day 3\n(Discharge)", "Vitals: Temp [X]°C, HR [X] bpm, BP [X/X] mmHg, SpO2 [X]%. Nephrostomy site clean and dry. No fever; no signs of infection. Urinalysis: mild haematuria (expected) / clear. Pain well controlled on oral analgesia. Tolerating full diet and fluids. Fit for discharge."],
],
[18, 82]
),
spacer(),
// ── MEDICATIONS ON DISCHARGE ──
heading1("MEDICATIONS ON DISCHARGE"),
spacer(),
columnTable(
["Medication", "Dose", "Frequency", "Duration"],
[
["Ibuprofen (with food)", "400mg", "TDS", "5 days"],
["Paracetamol", "500–1000mg", "QDS PRN", "5 days"],
["Tamsulosin 0.4mg\n(if DJ stent in situ)", "0.4mg", "OD nocte", "Until stent removal"],
["Antibiotics (if culture +ve)", "As per sensitivity", "As directed", "[Course]"],
["Potassium citrate\n(if hypocitraturia confirmed)", "10–20 mEq", "BD", "Ongoing — nephrology review"],
["Increased fluid intake", "Target urine output >2L/day", "—", "Lifelong"],
],
[28, 22, 22, 28]
),
spacer(),
// ── DISCHARGE INSTRUCTIONS ──
heading1("DISCHARGE INSTRUCTIONS"),
spacer(),
heading2("Activity"),
bullet("Rest at home for 1–2 weeks; avoid strenuous activity or contact sports for 4 weeks"),
bullet("May return to school after 1–2 weeks if comfortable"),
bullet("No heavy lifting or vigorous exercise until review"),
spacer(),
heading2("Diet and Fluids"),
bullet("Drink 2–3 litres of water per day (most important preventive measure)"),
bullet("Reduce salt and animal protein intake"),
bullet("Avoid excess oxalate-rich foods (spinach, nuts, chocolate) pending stone composition result"),
bullet("Do NOT restrict dietary calcium"),
spacer(),
heading2("Wound Care"),
bullet("Nephrostomy site: keep clean and dry; remove dressing after 48 hours"),
bullet("No bathing/swimming until site healed (~5–7 days)"),
bullet("Watch for signs of infection: redness, discharge, swelling, or fever"),
spacer(),
heading2("DJ Stent (if placed)"),
bullet("Patient and parent counselled: urinary frequency, urgency, mild dysuria, and blood-tinged urine are expected"),
bullet("Stent removal scheduled: [Date] — cystoscopy under LA/sedation"),
bullet("Do NOT miss the stent removal appointment — retained stents cause serious complications"),
spacer(),
heading2("When to Seek Urgent Medical Attention"),
bullet("Fever >38°C"),
bullet("Severe flank or abdominal pain"),
bullet("Inability to pass urine"),
bullet("Frank, heavy bleeding per urethra"),
bullet("Signs of wound infection (pus, spreading redness)"),
spacer(),
// ── FOLLOW-UP PLAN ──
heading1("FOLLOW-UP PLAN"),
spacer(),
columnTable(
["Appointment", "Timeframe", "Purpose"],
[
["Pediatric Urology", "2 weeks", "Wound check, stone analysis result review, DJ stent removal scheduling"],
["Repeat Imaging (USS KUB)", "4–6 weeks", "Confirm stone clearance, check for residual fragments"],
["Pediatric Nephrology", "6–8 weeks", "24-hour urine metabolic workup (calcium, oxalate, citrate, uric acid, cystine)"],
["Dietitian", "Within 1 month", "Dietary counselling for stone prevention"],
["Stone Composition Result", "2–3 weeks", "To guide long-term preventive therapy"],
],
[28, 22, 50]
),
spacer(),
// ── RECURRENCE PREVENTION ──
heading1("STONE RECURRENCE PREVENTION"),
spacer(),
para("Recurrence risk in pediatric patients is approximately 50% within 5 years without metabolic workup and preventive treatment. A full metabolic evaluation is mandatory at the nephrology follow-up.", { bold: false }),
spacer(),
heading2("Common Causes to Exclude"),
columnTable(
["Stone Type / Metabolic Cause", "Preventive Measure"],
[
["Idiopathic hypercalciuria (30–50% of cases)", "Increased fluids, reduced sodium, thiazide diuretics"],
["Hypocitraturia", "Potassium citrate supplementation"],
["Hyperoxaluria (primary or enteric)", "Restrict oxalate diet; pyridoxine (primary)"],
["Hyperuricosuria", "Urinary alkalinisation; allopurinol"],
["Cystinuria", "High fluid intake; alkalinisation; D-penicillamine for severe cases"],
["Distal renal tubular acidosis (dRTA)", "Potassium citrate supplementation"],
],
[48, 52]
),
spacer(),
// ── CONDITION AT DISCHARGE ──
heading1("CONDITION AT DISCHARGE"),
spacer(),
para("Stable / Good", { bold: true }),
spacer(),
// ── SIGNATURES ──
heading1("AUTHORISATION & SIGNATURES"),
spacer(),
columnTable(
["Role", "Name", "Date", "Signature"],
[
["Discharging Registrar", "[Dr. Name]", "[DD/MM/YYYY]", "________________"],
["Countersigning Consultant", "[Dr. Name]", "[DD/MM/YYYY]", "________________"],
],
[25, 25, 25, 25]
),
spacer(),
spacer(),
noteItalic("IMPORTANT: This is a template. All fields shown in [brackets] must be completed with actual patient data before clinical use. This document is not valid as a clinical record until signed by a licensed clinician."),
];
// ── BUILD DOCUMENT ──────────────────────────────────────────────────────────
const doc = new Document({
creator: "Orris AI",
title: "PCNL Discharge Summary — Pediatric Urology",
description: "Post-operative discharge summary for 15F with 8mm renal stone (PCNL)",
styles: {
default: {
document: {
run: { font: "Calibri", size: 20 },
},
},
},
sections: [
{
properties: {
page: {
margin: { top: 720, bottom: 720, left: 900, right: 900 },
},
},
headers: {
default: new Header({
children: [
new Paragraph({
alignment: AlignmentType.RIGHT,
children: [
new TextRun({ text: "DISCHARGE SUMMARY — PCNL | Pediatric Urology", size: 16, color: "888888", font: "Calibri" }),
],
}),
],
}),
},
footers: {
default: new Footer({
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "Page ", size: 16, color: "888888", font: "Calibri" }),
new TextRun({ children: [PageNumber.CURRENT], size: 16, color: "888888", font: "Calibri" }),
new TextRun({ text: " of ", size: 16, color: "888888", font: "Calibri" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 16, color: "888888", font: "Calibri" }),
new TextRun({ text: " | CONFIDENTIAL — For authorised clinical use only", size: 16, color: "888888", font: "Calibri" }),
],
}),
],
}),
},
children,
},
],
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/renal-stone-discharge/PCNL_Discharge_Summary.docx", buffer);
console.log("SUCCESS: file written");
}).catch(err => {
console.error("ERROR:", err.message);
process.exit(1);
});
cd /home/daytona/workspace/renal-stone-discharge && node generate.js
python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/worksp…
cd /home/daytona/workspace/renal-stone-discharge && python3 -c " import zipfile,…
PCNL Discharge Summary
Word Document · DOCX
[bracketed fields] need to be filled in with the actual patient data before clinical use.