Make IRB PRESENTATION WITH TITLE OF " A study of acute presentation of chronic renal failure case coming to the emergency medicine department of tertiary care teaching hospital "
"chronic kidney disease" AND "acute presentation" AND "emergency"
"chronic kidney disease" AND "emergency department"
IRB presentation template acute on chronic renal failure emergency department study protocol
"acute on chronic kidney disease" AND "emergency"
ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/irb-crf-presenta…
~/irb-crf-presentation/create_irb_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "A study of acute presentation of chronic renal failure case coming to the emergency medicine department of tertiary care teaching hospital";
// ─── BRAND PALETTE ───────────────────────────────────────────────────────────
const C = {
navy: "0A2342", // dominant bg for title / dark slides
teal: "1A7A8A", // accent headers
tealLight: "2AABB8", // sub-accent / bullets
amber: "E8A838", // highlight / emphasis
white: "FFFFFF",
offwhite: "F4F7F9",
textDark: "1A2535",
textGray: "4A5568",
tableHead: "1A7A8A",
tableRow1: "EBF4F6",
tableRow2: "FFFFFF",
red: "C0392B",
green: "1E8449",
};
// ─── HELPER: dark slide bg ────────────────────────────────────────────────────
function darkBg(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.navy } });
}
// ─── HELPER: section banner ───────────────────────────────────────────────────
function sectionBanner(slide, label) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.teal } });
slide.addText(label, {
x: 0.35, y: 0.1, w: 9.3, h: 0.8,
fontSize: 18, bold: true, color: C.white, valign: "middle",
fontFace: "Calibri", charSpacing: 1,
});
}
// ─── HELPER: light slide content area ────────────────────────────────────────
function lightBg(slide) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: C.offwhite } });
}
// ─── HELPER: accent bar ───────────────────────────────────────────────────────
function accentBar(slide, y = 0.95) {
slide.addShape(pres.ShapeType.rect, { x: 0.35, y, w: 0.08, h: 0.35, fill: { color: C.amber } });
}
// ─── HELPER: bullet list ──────────────────────────────────────────────────────
function bullets(slide, items, x, y, w, h, opts = {}) {
const richText = items.map((item, i) => ({
text: typeof item === "string" ? item : item.text,
options: {
bullet: { type: "bullet", code: "25AA", color: C.teal },
fontSize: opts.fontSize || 14,
color: opts.color || C.textDark,
bold: typeof item === "object" ? item.bold : false,
breakLine: i < items.length - 1,
indentLevel: typeof item === "object" && item.indent ? 1 : 0,
paraSpaceAfter: 3,
},
}));
slide.addText(richText, { x, y, w, h, fontFace: "Calibri", valign: "top" });
}
// ─── HELPER: two-column layout ───────────────────────────────────────────────
function twoCol(slide, leftItems, rightItems, titleLeft, titleRight) {
// Left column
slide.addText(titleLeft, { x: 0.35, y: 1.05, w: 4.5, h: 0.4, fontSize: 13, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(slide, leftItems, 0.35, 1.5, 4.3, 3.7, { fontSize: 13 });
// Right column
slide.addText(titleRight, { x: 5.15, y: 1.05, w: 4.5, h: 0.4, fontSize: 13, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(slide, rightItems, 5.15, 1.5, 4.5, 3.7, { fontSize: 13 });
// Divider
slide.addShape(pres.ShapeType.line, { x: 5.0, y: 1.1, w: 0, h: 4.2, line: { color: C.tealLight, width: 1, dashType: "dash" } });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
darkBg(s);
// Decorative teal band
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.8, w: 10, h: 1.1, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 4.9, w: 10, h: 0.725, fill: { color: "0D6476" } });
// Amber accent block
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.1, w: 0.18, h: 2.5, fill: { color: C.amber } });
s.addText("INSTITUTIONAL REVIEW BOARD", {
x: 0.4, y: 0.3, w: 9.2, h: 0.5,
fontSize: 13, color: C.tealLight, bold: true, charSpacing: 4, fontFace: "Calibri", align: "left",
});
s.addText("RESEARCH PROTOCOL PRESENTATION", {
x: 0.4, y: 0.72, w: 9.2, h: 0.38,
fontSize: 10, color: "A0C8D4", charSpacing: 2, fontFace: "Calibri", align: "left",
});
s.addText(
"A Study of Acute Presentation of\nChronic Renal Failure Cases Coming\nto the Emergency Medicine Department\nof a Tertiary Care Teaching Hospital",
{
x: 0.4, y: 1.1, w: 8.8, h: 2.55,
fontSize: 22, color: C.white, bold: true, fontFace: "Calibri", valign: "middle",
lineSpacingMultiple: 1.2,
}
);
s.addText("Principal Investigator: [Name, MD] · Department of Emergency Medicine", {
x: 0.35, y: 3.85, w: 9.3, h: 0.4, fontSize: 11, color: C.white, fontFace: "Calibri",
});
s.addText("Co-Investigators: [Names] · Institution: [Tertiary Care Teaching Hospital]", {
x: 0.35, y: 4.2, w: 9.3, h: 0.35, fontSize: 11, color: C.white, fontFace: "Calibri",
});
s.addText("Date of Submission: July 2026 · Protocol Version: 1.0", {
x: 0.35, y: 4.95, w: 9.3, h: 0.35, fontSize: 10, color: "C8E6EC", fontFace: "Calibri",
});
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — TABLE OF CONTENTS
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "PRESENTATION OUTLINE");
const items = [
"1. Background & Introduction",
"2. Problem Statement & Rationale",
"3. Review of Literature",
"4. Objectives of the Study",
"5. Hypothesis",
"6. Study Design & Methodology",
"7. Inclusion & Exclusion Criteria",
"8. Data Collection & Tools",
"9. Sample Size & Statistical Analysis",
"10. Ethical Considerations",
"11. Expected Outcomes & Significance",
"12. Timeline & Budget",
"13. References",
];
// Two-column layout for TOC
const left = items.slice(0, 7);
const right = items.slice(7);
const leftRich = left.map((t, i) => ({
text: t,
options: { bullet: false, fontSize: 13, color: C.textDark, breakLine: i < left.length - 1, paraSpaceAfter: 6 },
}));
const rightRich = right.map((t, i) => ({
text: t,
options: { bullet: false, fontSize: 13, color: C.textDark, breakLine: i < right.length - 1, paraSpaceAfter: 6 },
}));
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.1, w: 4.15, h: 4.1, fill: { color: "DAEDF1" }, line: { color: C.tealLight, width: 0.5 } });
s.addShape(pres.ShapeType.rect, { x: 5.5, y: 1.1, w: 4.15, h: 4.1, fill: { color: "DAEDF1" }, line: { color: C.tealLight, width: 0.5 } });
s.addText(leftRich, { x: 0.55, y: 1.2, w: 3.8, h: 3.9, fontFace: "Calibri", valign: "top" });
s.addText(rightRich, { x: 5.65, y: 1.2, w: 3.8, h: 3.9, fontFace: "Calibri", valign: "top" });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — BACKGROUND & INTRODUCTION
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "BACKGROUND & INTRODUCTION");
accentBar(s);
s.addText("Chronic Renal Failure (CRF) — A Growing Epidemic", {
x: 0.45, y: 1.05, w: 9.1, h: 0.4, fontSize: 15, bold: true, color: C.teal, fontFace: "Calibri",
});
bullets(s, [
"Chronic Kidney Disease (CKD) / Chronic Renal Failure (CRF) is defined as kidney damage or GFR < 60 mL/min/1.73m² for ≥ 3 months",
"Affects ~10–15% of the adult global population; estimated 850 million people worldwide (GBD 2019)",
"Leading causes: Diabetic nephropathy, hypertension, glomerulonephritis, obstructive uropathy",
"CRF patients are at high risk of acute decompensation requiring emergency care",
"Acute-on-CRF events — often the first clinical encounter — are associated with high morbidity and mortality",
"Emergency Medicine departments in tertiary care hospitals serve as the frontline for detecting and managing these acute episodes",
"Epidemiological data from Indian tertiary care hospitals on acute presentations of CRF remain limited",
], 0.35, 1.55, 9.3, 3.7, { fontSize: 13 });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — PROBLEM STATEMENT & RATIONALE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "PROBLEM STATEMENT & RATIONALE");
// Problem box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.05, w: 9.4, h: 1.1, fill: { color: "FEF3E2" }, line: { color: C.amber, width: 1.5 } });
s.addText([
{ text: "Problem Statement: ", options: { bold: true, color: C.red } },
{ text: "Acute presentations of chronic renal failure represent a significant yet under-characterized burden in the Emergency Medicine Departments of tertiary care teaching hospitals in India, with limited data on clinical profiles, precipitating factors, and short-term outcomes.", options: { color: C.textDark } },
], { x: 0.5, y: 1.1, w: 9.0, h: 1.0, fontSize: 12.5, fontFace: "Calibri", valign: "middle" });
s.addText("Rationale for the Study", { x: 0.45, y: 2.25, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(s, [
"High volume of undiagnosed CRF patients presenting in emergency with acute complications (fluid overload, uremia, hyperkalemia)",
"Delay in identification leads to increased ICU admissions, dialysis requirement, and in-hospital mortality",
"Existing literature from sub-Saharan Africa & South Asia shows 1-in-10 ED patients have community-acquired AKI on CKD",
"Data from the local population are sparse — a hospital-based study will generate region-specific evidence",
"Findings will guide triage protocols, resource allocation, and nephrology referral pathways",
], 0.35, 2.7, 9.3, 2.7, { fontSize: 13 });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — REVIEW OF LITERATURE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "REVIEW OF LITERATURE");
// Table headers
const tableData = [
[{ text: "Author (Year)", options: { bold: true, color: C.white } }, { text: "Study Design", options: { bold: true, color: C.white } }, { text: "Key Findings", options: { bold: true, color: C.white } }],
["Masina J et al. (2022)\nCureus", "Prospective observational\nTertiary hospital ED", "Clinical profile of adult patients with renal dysfunction in ED; hyperkalemia & uremia most common presenting complications"],
["Ehmann MR et al. (2021)\nAm J Kidney Dis", "Retrospective cohort\nED multicenter", "1-in-10 ED presentations have community-acquired AKI; 6.2× higher risk of dialysis, 2.2× in-hospital mortality"],
["Lawrence A et al. (2023)\nCureus, South India", "Prospective observational", "Hypertensive emergencies with renal dysfunction had 20–30% short-term mortality in south Indian tertiary care"],
["Kreitzer N et al. (2025)\nCardiorenal Med", "Consensus Panel — ED\nCKD & Heart Failure", "Hyperkalemia management in CKD/HF: ED consensus on monitoring, thresholds, and treatment escalation"],
["Profile & Outcome — Tanzania\nSpringer (2019)", "Descriptive cross-sectional\nUrban tertiary ED", "Profile, management, and outcomes of emergency renal failure; dialysis access & early intervention critical"],
];
s.addTable(tableData, {
x: 0.25, y: 1.05, w: 9.5, h: 4.4,
fontSize: 10.5, fontFace: "Calibri", valign: "middle",
rowH: 0.68,
border: { type: "solid", color: "B0D4DB", pt: 0.5 },
fill: { color: C.tableRow2 },
colW: [2.1, 2.0, 5.4],
});
// Override header row colors manually by pre-setting the first row
// (pptxgenjs applies options in the cell object already above)
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — OBJECTIVES
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "OBJECTIVES OF THE STUDY");
s.addText("Primary Objective", { x: 0.35, y: 1.1, w: 9.0, h: 0.4, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 0.35, y: 1.55, w: 9.3, h: 0.65, fill: { color: "D6EFF3" }, line: { color: C.tealLight, width: 0.8 } });
s.addText("To study the clinical profile, precipitating factors, and short-term outcomes of patients with acute presentation of chronic renal failure presenting to the Emergency Medicine Department of a tertiary care teaching hospital.", {
x: 0.5, y: 1.57, w: 9.0, h: 0.6, fontSize: 12.5, color: C.textDark, fontFace: "Calibri", valign: "middle",
});
s.addText("Secondary Objectives", { x: 0.35, y: 2.3, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(s, [
"To determine the prevalence of CRF cases among all patients presenting to the ED",
"To identify the most common precipitating/triggering factors for acute decompensation",
"To describe the spectrum of acute complications: uremia, hyperkalemia, fluid overload, metabolic acidosis",
"To evaluate the need for urgent renal replacement therapy (hemodialysis/peritoneal dialysis) in the ED",
"To assess short-term outcomes: ICU admission rate, in-hospital mortality, and dialysis initiation",
"To correlate clinical and biochemical parameters with disease severity (KDIGO staging)",
], 0.35, 2.75, 9.3, 2.6, { fontSize: 13 });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — HYPOTHESIS
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 1.0, fill: { color: C.teal } });
s.addText("HYPOTHESIS", { x: 0.35, y: 0.1, w: 9.3, h: 0.8, fontSize: 18, bold: true, color: C.white, valign: "middle", charSpacing: 1, fontFace: "Calibri" });
// Null box
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 1.15, w: 9.2, h: 1.45, fill: { color: "0D1E35" }, line: { color: C.amber, width: 1.5 } });
s.addText("H₀ (Null Hypothesis)", { x: 0.6, y: 1.2, w: 8.8, h: 0.38, fontSize: 13, bold: true, color: C.amber, fontFace: "Calibri" });
s.addText("There is no significant difference in the clinical profile, precipitating factors, and outcomes of acute presentations of CRF patients across different demographic groups and stages of CKD presenting to the ED.", {
x: 0.6, y: 1.6, w: 8.8, h: 0.9, fontSize: 12.5, color: C.white, fontFace: "Calibri",
});
// Alternate box
s.addShape(pres.ShapeType.rect, { x: 0.4, y: 2.75, w: 9.2, h: 1.45, fill: { color: "0D1E35" }, line: { color: C.tealLight, width: 1.5 } });
s.addText("H₁ (Alternate Hypothesis)", { x: 0.6, y: 2.8, w: 8.8, h: 0.38, fontSize: 13, bold: true, color: C.tealLight, fontFace: "Calibri" });
s.addText("There is a significant association between clinical and biochemical parameters (serum creatinine, urea, potassium, GFR stage, hemoglobin) and the severity of acute presentation, need for dialysis, and in-hospital mortality in CRF patients presenting to the ED.", {
x: 0.6, y: 3.2, w: 8.8, h: 0.9, fontSize: 12.5, color: C.white, fontFace: "Calibri",
});
s.addText("Level of Significance: α = 0.05", { x: 0.4, y: 4.3, w: 9.2, h: 0.4, fontSize: 12, color: C.amber, bold: true, fontFace: "Calibri", align: "right" });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — STUDY DESIGN & SETTING
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "STUDY DESIGN & SETTING");
// Info boxes
const boxes = [
{ label: "Study Type", value: "Hospital-based Observational\n(Cross-sectional / Prospective)", x: 0.3, color: C.teal },
{ label: "Study Setting", value: "Emergency Medicine Department\nTertiary Care Teaching Hospital", x: 3.65, color: "1E7B4E" },
{ label: "Study Duration", value: "18 Months\n(Jan 2026 – Jun 2027)", x: 7.0, color: C.red },
];
boxes.forEach(b => {
s.addShape(pres.ShapeType.rect, { x: b.x, y: 1.1, w: 3.0, h: 1.35, fill: { color: b.color }, roundedCorners: true });
s.addText(b.label, { x: b.x + 0.1, y: 1.15, w: 2.8, h: 0.38, fontSize: 11, bold: true, color: C.white, fontFace: "Calibri", align: "center" });
s.addText(b.value, { x: b.x + 0.1, y: 1.55, w: 2.8, h: 0.8, fontSize: 12, color: C.white, fontFace: "Calibri", align: "center", valign: "middle" });
});
s.addText("Study Population & Case Definition", { x: 0.35, y: 2.6, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(s, [
"All patients ≥ 18 years presenting to ED with known or newly identified CRF and any acute complaint",
"Case of 'Acute Presentation of CRF' = acute clinical event (uremia, hyperkalemia, fluid overload, hypertensive crisis, acidosis) in a patient with established or suspected CKD (Stage 3–5, GFR < 60 mL/min/1.73m²)",
"Diagnosis confirmed by clinical assessment + serum creatinine, urea, electrolytes, CBC, urinalysis, renal USG",
"Consecutive sampling of eligible patients over the study period",
], 0.35, 3.05, 9.3, 2.4, { fontSize: 13 });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — INCLUSION & EXCLUSION CRITERIA
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "INCLUSION & EXCLUSION CRITERIA");
twoCol(
s,
[
{ text: "INCLUSION CRITERIA", bold: true },
"Age ≥ 18 years, both sexes",
"Known diagnosis of CKD / CRF (Stage 3–5)",
"Presenting to ED with acute symptoms (dyspnea, vomiting, altered sensorium, chest pain, oliguria / anuria)",
"Willing to provide informed consent",
"Patients with first-time diagnosis of CRF in ED presenting with acute complications",
"Both previously on dialysis and non-dialysis CRF patients",
],
[
{ text: "EXCLUSION CRITERIA", bold: true },
"Acute Kidney Injury (AKI) without prior CKD history and no evidence of prior kidney damage",
"Patients with end-stage renal disease (ESRD) on regular scheduled dialysis without acute decompensation",
"Known malignancy with renal involvement as primary cause",
"Patients < 18 years (pediatric age group)",
"Patients / relatives refusing informed consent",
"Pregnant patients with obstetric causes of renal dysfunction",
],
"✔ Inclusion",
"✖ Exclusion"
);
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — DATA COLLECTION & TOOLS
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "DATA COLLECTION & TOOLS");
s.addText("Structured Case Record Form (CRF Proforma) — Parameters Collected", {
x: 0.35, y: 1.08, w: 9.3, h: 0.38, fontSize: 13.5, bold: true, color: C.teal, fontFace: "Calibri",
});
const tableData = [
[
{ text: "Domain", options: { bold: true, color: C.white, fill: { color: C.teal } } },
{ text: "Parameters", options: { bold: true, color: C.white, fill: { color: C.teal } } },
],
["Demographic Data", "Age, sex, address, occupation, BMI, educational status"],
["Chief Complaint", "Primary presenting complaint, duration, severity (VAS/modified scale)"],
["Clinical History", "Duration of CRF, prior dialysis, co-morbidities (DM, HTN, CAD), medications"],
["Vital Signs", "BP, HR, RR, SpO₂, Temperature, GCS, urine output (24h)"],
["Biochemical Parameters", "Serum creatinine, BUN/urea, Na⁺, K⁺, Ca²⁺, PO₄³⁻, Hb, CBC, ABG (pH, HCO₃⁻), LFT"],
["Imaging / ECG", "Renal USG (size, echogenicity, obstruction), Chest X-ray, 12-lead ECG"],
["Precipitating Factor", "Infection, NSAID use, dehydration, obstruction, contrast exposure, missed dialysis"],
["Treatment & Outcome", "Dialysis requirement, ICU admission, length of stay, mortality, discharge diagnosis"],
];
s.addTable(tableData, {
x: 0.25, y: 1.5, w: 9.5, h: 3.85,
fontSize: 11, fontFace: "Calibri", valign: "middle",
rowH: 0.42,
border: { type: "solid", color: "B0D4DB", pt: 0.5 },
colW: [2.6, 6.9],
});
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — SAMPLE SIZE & STATISTICAL ANALYSIS
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "SAMPLE SIZE & STATISTICAL ANALYSIS");
// Sample size box
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.08, w: 9.4, h: 1.2, fill: { color: "E8F5E9" }, line: { color: C.green, width: 1.5 } });
s.addText("Sample Size Calculation", { x: 0.5, y: 1.1, w: 9.0, h: 0.36, fontSize: 13, bold: true, color: C.green, fontFace: "Calibri" });
s.addText(
"Formula: n = Z²α/₂ × P(1–P) / d² | Z = 1.96 (95% CI) | P = 0.10 (prevalence of AKI on CKD in ED, Ehmann 2021) | d = 0.05 (precision)\n→ n = 1.96² × 0.10 × 0.90 / 0.05² ≈ 138 (+10% non-response = ~152 patients)",
{ x: 0.5, y: 1.48, w: 9.0, h: 0.72, fontSize: 11.5, color: C.textDark, fontFace: "Calibri", valign: "top" }
);
s.addText("Statistical Methods", { x: 0.35, y: 2.38, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
twoCol(
s,
[
"Descriptive statistics: Mean ± SD (continuous), frequency & percentage (categorical)",
"Chi-square test / Fisher's exact for categorical associations",
"Independent t-test / Mann-Whitney U for continuous variables",
],
[
"Multivariate logistic regression for predictors of mortality / dialysis need",
"Pearson / Spearman correlation for biochemical correlations",
"Software: SPSS v26 / STATA 17; p < 0.05 considered significant",
],
"Descriptive & Bivariate",
"Multivariate & Correlation"
);
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — ETHICAL CONSIDERATIONS
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "ETHICAL CONSIDERATIONS");
const cards = [
{ title: "IRB / IEC Approval", body: "Protocol submitted to Institutional Ethics Committee (IEC) as per ICMR / GCP guidelines. Study will commence only after formal written approval.", icon: "⚖" },
{ title: "Informed Consent", body: "Written informed consent obtained from all participants or legally authorized representatives in their preferred language. Right to withdraw guaranteed.", icon: "📋" },
{ title: "Confidentiality & Data Security", body: "Patient identifiers anonymized; data stored in password-protected database accessible only to investigators. HIPAA-equivalent data protection protocols followed.", icon: "🔒" },
{ title: "Risk-Benefit", body: "Observational study only — no additional procedures beyond standard care. Minimal risk to participants. Potential benefit through improved ED protocols.", icon: "⚕" },
{ title: "Vulnerable Populations", body: "No pediatric participants. Patients with altered sensorium — consent from next of kin. Pregnant patients excluded.", icon: "🛡" },
{ title: "Conflict of Interest", body: "No commercial funding. No conflict of interest declared by any investigator. Results will be published regardless of findings.", icon: "✅" },
];
cards.forEach((card, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const cx = 0.28 + col * 3.22;
const cy = 1.1 + row * 2.15;
s.addShape(pres.ShapeType.rect, { x: cx, y: cy, w: 3.0, h: 1.95, fill: { color: row === 0 ? "D6EFF3" : "E8F5E9" }, line: { color: C.tealLight, width: 0.7 }, roundedCorners: true });
s.addText(`${card.icon} ${card.title}`, { x: cx + 0.1, y: cy + 0.08, w: 2.8, h: 0.38, fontSize: 11.5, bold: true, color: C.teal, fontFace: "Calibri" });
s.addText(card.body, { x: cx + 0.1, y: cy + 0.48, w: 2.8, h: 1.35, fontSize: 10.5, color: C.textDark, fontFace: "Calibri", valign: "top" });
});
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 13 — EXPECTED OUTCOMES & SIGNIFICANCE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "EXPECTED OUTCOMES & SIGNIFICANCE");
s.addText("Expected Study Outcomes", { x: 0.35, y: 1.08, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
bullets(s, [
"Establish the prevalence and clinical profile of acute CRF presentations in the tertiary ED setting",
"Identify the top 3–5 precipitating factors (infection, dehydration, NSAID use, obstruction) for acute decompensation",
"Determine in-hospital mortality rates and factors independently predicting adverse outcomes",
"Generate CKD stage-specific complication profiles relevant to South Asian / Indian populations",
"Estimate the proportion of patients requiring emergent hemodialysis initiation in the ED",
], 0.35, 1.55, 9.3, 2.2, { fontSize: 13 });
s.addText("Clinical & Public Health Significance", { x: 0.35, y: 3.85, w: 9.0, h: 0.38, fontSize: 14, bold: true, color: C.teal, fontFace: "Calibri" });
// Three significance cards
const sigCards = [
{ h: "Protocol Development", b: "Findings will guide ED triage and CRF management protocols at the institution" },
{ h: "Training & Education", b: "Raises awareness among ED physicians about early identification of CRF complications" },
{ h: "Policy & Planning", b: "Data will support nephrology resource planning and dialysis infrastructure in tertiary hospitals" },
];
sigCards.forEach((c, i) => {
const cx = 0.28 + i * 3.22;
s.addShape(pres.ShapeType.rect, { x: cx, y: 4.25, w: 3.0, h: 1.1, fill: { color: C.teal }, roundedCorners: true });
s.addText(c.h, { x: cx + 0.1, y: 4.27, w: 2.8, h: 0.35, fontSize: 11, bold: true, color: C.white, fontFace: "Calibri", align: "center" });
s.addText(c.b, { x: cx + 0.1, y: 4.62, w: 2.8, h: 0.65, fontSize: 10, color: C.white, fontFace: "Calibri", align: "center", valign: "top" });
});
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 14 — STUDY TIMELINE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "STUDY TIMELINE & BUDGET");
s.addText("Proposed Timeline (18 Months)", { x: 0.35, y: 1.08, w: 9.0, h: 0.36, fontSize: 13.5, bold: true, color: C.teal, fontFace: "Calibri" });
const phases = [
{ phase: "Phase 1\nMonth 1–2", activity: "IEC submission & approval, staff training, CRF proforma finalization, pilot study (20 cases)", color: C.teal },
{ phase: "Phase 2\nMonth 3–14", activity: "Active data collection, consecutive enrolment, data entry & quality checks, interim analysis at Month 8", color: "1E7B4E" },
{ phase: "Phase 3\nMonth 15–16", activity: "Data cleaning, statistical analysis, result interpretation, correlation with biochemical parameters", color: "8B5E02" },
{ phase: "Phase 4\nMonth 17–18", activity: "Report writing, manuscript preparation, dissemination, poster / oral presentation, journal submission", color: C.red },
];
phases.forEach((p, i) => {
const y = 1.52 + i * 0.87;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 1.55, h: 0.72, fill: { color: p.color } });
s.addText(p.phase, { x: 0.3, y, w: 1.55, h: 0.72, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", fontFace: "Calibri" });
s.addShape(pres.ShapeType.rect, { x: 1.95, y, w: 7.65, h: 0.72, fill: { color: "F0F8FA" }, line: { color: C.tealLight, width: 0.5 } });
s.addText(p.activity, { x: 2.05, y, w: 7.45, h: 0.72, fontSize: 11.5, color: C.textDark, fontFace: "Calibri", valign: "middle" });
});
// Budget summary
s.addText("Estimated Budget", { x: 0.35, y: 5.08, w: 4.5, h: 0.35, fontSize: 12, bold: true, color: C.teal, fontFace: "Calibri" });
s.addText("Source of Funding: Self-funded / Institutional Grant Application\nApproximate Budget: ₹ 80,000 – 1,20,000 (stationery, investigations, data analysis, publication fees)", {
x: 0.35, y: 5.28, w: 9.4, h: 0.35, fontSize: 10.5, color: C.textGray, fontFace: "Calibri",
});
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 15 — REFERENCES
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s);
sectionBanner(s, "REFERENCES");
const refs = [
"1. Masina J, Moolla M, Motara F. Clinical Profile of Adult Patients Presenting With Renal Dysfunction to a Tertiary Hospital Emergency Department. Cureus. 2022;14(2):e22218. PMID: 35265412",
"2. Ehmann MR, et al. Community-Acquired AKI — incidence, risk factors, outcomes. Am J Kidney Dis. 2021.",
"3. Kreitzer N, Albert NM, Amin AN, et al. EMCREG-International Consensus Panel on Management of Hyperkalemia in CKD and Heart Failure. Cardiorenal Med. 2025. PMID: 39809248",
"4. Lawrence A, Syriac S, Umesh S, et al. Short-Term Mortality Associated With Hypertensive Emergencies. Cureus. 2023. PMID: 37753009",
"5. National Kidney Foundation. KDIGO 2022 Clinical Practice Guideline for Evaluation and Management of CKD. Kidney Int. 2022.",
"6. Johnson CA, Levey AS, et al. Clinical practice guidelines for CKD in adults. Am Fam Physician. 2004;70:1091–1097.",
"7. Levey AS, et al. National Kidney Foundation. A more accurate method to estimate GFR from serum creatinine: MDRD study. Ann Intern Med. 1999;130:461–470.",
"8. GBD Chronic Kidney Disease Collaboration. Global, regional, and national burden of CKD. Lancet. 2020;395:709–733.",
"9. Brenner BM (ed). Brenner & Rector's The Kidney, 10th ed. Philadelphia: Elsevier Saunders; 2016.",
"10. Profile and outcome of patients with emergency complications of renal failure in an urban ED, Tanzania. BMC Emerg Med. 2019;19:25.",
];
const richRefs = refs.map((r, i) => ({
text: r,
options: { fontSize: 10, color: C.textDark, breakLine: i < refs.length - 1, paraSpaceAfter: 2 },
}));
s.addText(richRefs, { x: 0.35, y: 1.1, w: 9.3, h: 4.35, fontFace: "Calibri", valign: "top" });
}
// ═════════════════════════════════════════════════════════════════════════════
// SLIDE 16 — CLOSING SLIDE
// ═════════════════════════════════════════════════════════════════════════════
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.8, w: 10, h: 1.825, fill: { color: C.teal } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 1.2, w: 10, h: 0.12, fill: { color: C.amber } });
s.addShape(pres.ShapeType.rect, { x: 0, y: 3.68, w: 10, h: 0.12, fill: { color: C.amber } });
s.addText("Thank You", {
x: 0, y: 1.5, w: 10, h: 1.1,
fontSize: 44, bold: true, color: C.white, align: "center", fontFace: "Calibri", charSpacing: 6,
});
s.addText("We welcome your questions, comments, and guidance.", {
x: 0.5, y: 2.65, w: 9, h: 0.55,
fontSize: 16, color: "A0C8D4", align: "center", fontFace: "Calibri",
});
s.addText("Principal Investigator: [Name, MD, DNB] · Emergency Medicine", {
x: 0, y: 3.85, w: 10, h: 0.45, fontSize: 13, color: C.white, align: "center", fontFace: "Calibri",
});
s.addText("[Institution Name] · [Email] · [Contact]", {
x: 0, y: 4.35, w: 10, h: 0.38, fontSize: 12, color: C.white, align: "center", fontFace: "Calibri",
});
s.addText("Protocol Version 1.0 · July 2026", {
x: 0, y: 4.8, w: 10, h: 0.38, fontSize: 10, color: "90B8C4", align: "center", fontFace: "Calibri",
});
}
// ─── WRITE FILE ───────────────────────────────────────────────────────────────
const outputPath = "/home/daytona/workspace/irb-crf-presentation/IRB_CRF_Emergency_Presentation.pptx";
pres.writeFile({ fileName: outputPath })
.then(() => console.log("✅ Presentation saved: " + outputPath))
.catch(err => { console.error("❌ Error:", err); process.exit(1); });
cd /home/daytona/workspace/irb-crf-presentation && node create_irb_ppt.js
IRB CRF Emergency Presentation
Presentation · PPTX
| # | Slide | Key Content |
|---|---|---|
| 1 | Title Slide | Full study title, PI, co-investigators, date, protocol version |
| 2 | Table of Contents | 13-item outline in two-column layout |
| 3 | Background & Introduction | CKD definition, global burden (~850M), leading causes, why ED matters |
| 4 | Problem Statement & Rationale | Highlighted problem box + 5 rationale bullets |
| 5 | Review of Literature | Formatted table with 5 key studies (Masina 2022, Ehmann 2021, Lawrence 2023, Kreitzer 2025, Tanzania study) |
| 6 | Objectives | Primary + 6 secondary objectives |
| 7 | Hypothesis | H₀ and H₁ on dark background, significance level α = 0.05 |
| 8 | Study Design & Setting | 3 info boxes (type, setting, duration) + case definition |
| 9 | Inclusion & Exclusion Criteria | Two-column layout with clear criteria |
| 10 | Data Collection & Tools | Table covering 8 domains: demographics, vitals, biochemistry, imaging, outcomes |
| 11 | Sample Size & Statistics | Formula-based calculation (n ≈ 152), descriptive + multivariate methods |
| 12 | Ethical Considerations | 6 cards: IRB approval, consent, confidentiality, risk-benefit, vulnerable populations, COI |
| 13 | Expected Outcomes & Significance | 5 outcomes + 3 significance cards |
| 14 | Timeline & Budget | 4-phase Gantt-style timeline (18 months) + budget estimate |
| 15 | References | 10 numbered references (textbook + PubMed-sourced) |
| 16 | Closing / Thank You | Dark accent slide with PI contact placeholders |
[Name, MD] - Principal Investigator[Names] - Co-investigators[Tertiary Care Teaching Hospital] - Your institution[Email] and [Contact] on the closing slideGenerate a protocol document (Word DOCX) with full study methods
ls /home/daytona/workspace/irb-crf-presentation/ && node -e "require('docx'); co…
~/irb-crf-presentation/create_protocol_docx.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
Header, Footer, AlignmentType, HeadingLevel, BorderStyle, WidthType,
ShadingType, VerticalAlign, PageNumber, NumberFormat, UnderlineType,
PageBreak, LevelFormat, convertInchesToTwip, TabStopType, TabStopPosition,
} = require("docx");
const fs = require("fs");
// ─── COLOURS ──────────────────────────────────────────────────────────────────
const TEAL = "1A7A8A";
const NAVY = "0A2342";
const AMBER = "E8A838";
const LGRAY = "F2F7F9";
const MGRAY = "D6EFF3";
const WHITE = "FFFFFF";
const BLACK = "1A2535";
const DGRAY = "4A5568";
// ─── HELPERS ──────────────────────────────────────────────────────────────────
const pt = (n) => n * 20; // half-points (twips for font size)
const cm = (n) => convertInchesToTwip(n / 2.54);
function h1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: pt(14), after: pt(6) },
children: [
new TextRun({ text, bold: true, color: WHITE, size: pt(14), font: "Calibri" }),
],
shading: { type: ShadingType.SOLID, color: TEAL, fill: TEAL },
indent: { left: cm(0.3), right: cm(0.3) },
});
}
function h2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: pt(10), after: pt(4) },
children: [
new TextRun({ text, bold: true, color: TEAL, size: pt(13), font: "Calibri" }),
],
border: { bottom: { color: TEAL, size: 6, style: BorderStyle.SINGLE } },
});
}
function h3(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_3,
spacing: { before: pt(8), after: pt(3) },
children: [
new TextRun({ text, bold: true, color: NAVY, size: pt(12), font: "Calibri", underline: { type: UnderlineType.SINGLE, color: AMBER } }),
],
});
}
function body(text, opts = {}) {
return new Paragraph({
spacing: { before: pt(3), after: pt(3), line: 360, lineRule: "auto" },
indent: opts.indent ? { left: cm(0.5) } : {},
alignment: AlignmentType.JUSTIFIED,
children: [
new TextRun({ text, size: pt(11), font: "Calibri", color: BLACK, ...opts }),
],
});
}
function bullet(text, level = 0) {
return new Paragraph({
bullet: { level },
spacing: { before: pt(2), after: pt(2), line: 320, lineRule: "auto" },
alignment: AlignmentType.JUSTIFIED,
children: [
new TextRun({ text, size: pt(11), font: "Calibri", color: BLACK }),
],
});
}
function numbered(text, level = 0) {
return new Paragraph({
numbering: { reference: "main-numbering", level },
spacing: { before: pt(2), after: pt(2), line: 320, lineRule: "auto" },
alignment: AlignmentType.JUSTIFIED,
children: [
new TextRun({ text, size: pt(11), font: "Calibri", color: BLACK }),
],
});
}
function emptyLine() {
return new Paragraph({ children: [new TextRun({ text: "" })], spacing: { before: pt(3), after: pt(3) } });
}
function pageBreak() {
return new Paragraph({ children: [new PageBreak()] });
}
function infoBox(label, value) {
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
rows: [
new TableRow({
children: [
new TableCell({
width: { size: 30, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: TEAL },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: label, bold: true, color: WHITE, size: pt(11), font: "Calibri" })] })],
}),
new TableCell({
width: { size: 70, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: LGRAY },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: value, size: pt(11), font: "Calibri", color: BLACK })] })],
}),
],
}),
],
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
bottom: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
left: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
right: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "B0D4DB" },
},
});
}
function twoColTable(leftHeader, rightHeader, leftItems, rightItems) {
const maxRows = Math.max(leftItems.length, rightItems.length);
const dataRows = [];
for (let i = 0; i < maxRows; i++) {
dataRows.push(
new TableRow({
children: [
new TableCell({
width: { size: 50, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: i % 2 === 0 ? LGRAY : WHITE },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: leftItems[i] || "", size: pt(10.5), font: "Calibri", color: BLACK })] })],
}),
new TableCell({
width: { size: 50, type: WidthType.PERCENTAGE },
shading: { type: ShadingType.SOLID, color: i % 2 === 0 ? LGRAY : WHITE },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: rightItems[i] || "", size: pt(10.5), font: "Calibri", color: BLACK })] })],
}),
],
})
);
}
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
tableHeader: true,
children: [
new TableCell({
shading: { type: ShadingType.SOLID, color: TEAL },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: leftHeader, bold: true, color: WHITE, size: pt(11), font: "Calibri" })] })],
}),
new TableCell({
shading: { type: ShadingType.SOLID, color: TEAL },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.2), right: cm(0.2) },
children: [new Paragraph({ children: [new TextRun({ text: rightHeader, bold: true, color: WHITE, size: pt(11), font: "Calibri" })] })],
}),
],
}),
...dataRows,
],
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
bottom: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
left: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
right: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "B0D4DB" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "B0D4DB" },
},
});
}
function dataTable(headers, rows) {
const headerRow = new TableRow({
tableHeader: true,
children: headers.map(h =>
new TableCell({
shading: { type: ShadingType.SOLID, color: TEAL },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.15), right: cm(0.15) },
children: [new Paragraph({ children: [new TextRun({ text: h, bold: true, color: WHITE, size: pt(10.5), font: "Calibri" })] })],
})
),
});
const dataRows = rows.map((row, ri) =>
new TableRow({
children: row.map(cell =>
new TableCell({
shading: { type: ShadingType.SOLID, color: ri % 2 === 0 ? LGRAY : WHITE },
margins: { top: cm(0.1), bottom: cm(0.1), left: cm(0.15), right: cm(0.15) },
children: [new Paragraph({ children: [new TextRun({ text: cell, size: pt(10.5), font: "Calibri", color: BLACK })] })],
})
),
})
);
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [headerRow, ...dataRows],
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
bottom: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
left: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
right: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
insideH: { style: BorderStyle.SINGLE, size: 2, color: "B0D4DB" },
insideV: { style: BorderStyle.SINGLE, size: 2, color: "B0D4DB" },
},
});
}
// ─── TITLE PAGE ───────────────────────────────────────────────────────────────
const titlePage = [
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: pt(30), after: pt(6) },
children: [new TextRun({ text: "STUDY PROTOCOL", bold: true, size: pt(10), font: "Calibri", color: TEAL, characterSpacing: 200 })],
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: pt(6), after: pt(10) },
shading: { type: ShadingType.SOLID, color: NAVY },
children: [
new TextRun({ text: "A Study of Acute Presentation of Chronic Renal Failure Cases\nComing to the Emergency Medicine Department of a\nTertiary Care Teaching Hospital", bold: true, size: pt(18), font: "Calibri", color: WHITE, break: 0 }),
],
indent: { left: cm(0.3), right: cm(0.3) },
}),
emptyLine(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: pt(6), after: pt(4) },
children: [new TextRun({ text: "Protocol Version: 1.0 | Date: July 2026", size: pt(11), font: "Calibri", color: DGRAY })],
}),
new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "ICMR/GCP Compliant Observational Study Protocol", size: pt(11), font: "Calibri", color: TEAL, bold: true })] }),
emptyLine(),
infoBox("Principal Investigator", "[Name, MD/MS, DNB] — Department of Emergency Medicine"),
infoBox("Co-Investigator(s)", "[Name(s), Qualification] — Department of Nephrology / Internal Medicine"),
infoBox("Institution", "[Tertiary Care Teaching Hospital Name], [City], [State], India"),
infoBox("Department", "Department of Emergency Medicine"),
infoBox("Study Type", "Hospital-based, Prospective Observational Descriptive Study"),
infoBox("Study Duration", "18 Months (January 2026 – June 2027)"),
infoBox("IEC Reference No.", "[To be filled after IEC approval]"),
infoBox("CTRI Registration", "[To be filled — www.ctri.nic.in]"),
emptyLine(),
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Submitted to: Institutional Ethics Committee (IEC)", size: pt(10.5), font: "Calibri", color: DGRAY, italics: true })],
}),
pageBreak(),
];
// ─── SECTION 1: ABBREVIATIONS ─────────────────────────────────────────────────
const abbreviations = [
h1("ABBREVIATIONS"),
emptyLine(),
dataTable(
["Abbreviation", "Full Form"],
[
["AKI", "Acute Kidney Injury"],
["CKD", "Chronic Kidney Disease"],
["CRF", "Chronic Renal Failure"],
["ED", "Emergency Department"],
["ESRD", "End-Stage Renal Disease"],
["GFR", "Glomerular Filtration Rate"],
["eGFR", "Estimated Glomerular Filtration Rate"],
["KDIGO", "Kidney Disease: Improving Global Outcomes"],
["RRT", "Renal Replacement Therapy"],
["HD", "Hemodialysis"],
["PD", "Peritoneal Dialysis"],
["IEC", "Institutional Ethics Committee"],
["IRB", "Institutional Review Board"],
["ICMR", "Indian Council of Medical Research"],
["GCP", "Good Clinical Practice"],
["CTRI", "Clinical Trials Registry — India"],
["BP", "Blood Pressure"],
["HR", "Heart Rate"],
["GCS", "Glasgow Coma Scale"],
["ABG", "Arterial Blood Gas"],
["BUN", "Blood Urea Nitrogen"],
["CBC", "Complete Blood Count"],
["USG", "Ultrasonography"],
["ECG", "Electrocardiogram"],
["ICU", "Intensive Care Unit"],
["SPSS", "Statistical Package for Social Sciences"],
["CI", "Confidence Interval"],
["SD", "Standard Deviation"],
["CRF Proforma", "Case Record Form Proforma"],
]
),
pageBreak(),
];
// ─── SECTION 2: INTRODUCTION ──────────────────────────────────────────────────
const introduction = [
h1("1. INTRODUCTION AND BACKGROUND"),
emptyLine(),
h2("1.1 Overview of Chronic Kidney Disease / Chronic Renal Failure"),
body("Chronic Kidney Disease (CKD), also termed Chronic Renal Failure (CRF) when advanced, is defined as abnormalities of kidney structure or function, present for more than 3 months, with implications for health. The diagnostic criteria include either a Glomerular Filtration Rate (GFR) of less than 60 mL/min/1.73m² for ≥ 3 months or markers of kidney damage (albuminuria ≥ 30 mg/24h, abnormal urinary sediment, electrolyte disorders due to tubular disorders, histological abnormalities, structural abnormalities detected by imaging, or history of kidney transplant) persisting for ≥ 3 months (KDIGO 2022)."),
emptyLine(),
body("The National Kidney Foundation classifies CKD into five stages based on GFR:"),
dataTable(
["Stage", "Description", "GFR (mL/min/1.73m²)"],
[
["1", "Kidney damage with normal or increased GFR", "≥ 90"],
["2", "Kidney damage with mildly decreased GFR", "60–89"],
["3a / 3b", "Moderately decreased GFR", "45–59 / 30–44"],
["4", "Severely decreased GFR", "15–29"],
["5 (ESRD)", "Kidney failure", "< 15 or on dialysis"],
]
),
emptyLine(),
h2("1.2 Epidemiology"),
body("CKD is a major public health problem affecting an estimated 850 million people worldwide, representing approximately 10–15% of the adult population globally (GBD CKD Collaboration, Lancet 2020). In India, the prevalence of CKD is estimated at 800–1,300 per million population, with diabetic nephropathy and hypertensive nephrosclerosis emerging as the leading causes, surpassing traditional causes such as chronic glomerulonephritis and obstructive uropathy."),
emptyLine(),
body("Despite high prevalence, a substantial proportion of patients remain undiagnosed until they present with an acute decompensation to the Emergency Department (ED). Studies from tertiary care hospitals in South Asia and sub-Saharan Africa demonstrate that approximately 1 in 10 patients presenting to the ED for any medical reason have community-acquired Acute Kidney Injury (AKI), often superimposed on underlying CKD — a phenomenon termed 'Acute-on-CRF.'"),
emptyLine(),
h2("1.3 Acute Presentations of CRF — Clinical Significance"),
body("Patients with CRF frequently present to the Emergency Department with life-threatening acute complications including:"),
bullet("Uremic encephalopathy and pericarditis"),
bullet("Hyperkalemia with cardiac dysrhythmias (ECG changes, VF/VT risk)"),
bullet("Acute pulmonary edema / hypertensive urgency or emergency"),
bullet("Severe metabolic acidosis (high anion gap)"),
bullet("Profound anemia with cardiovascular decompensation"),
bullet("Acute-on-chronic renal failure precipitated by infection, dehydration, nephrotoxins, or urinary obstruction"),
emptyLine(),
body("These presentations require rapid triage, diagnostic evaluation, and often emergent initiation of renal replacement therapy. Studies demonstrate that admitted patients with AKI on CKD have 1.9-fold increased odds of ICU admission, 6.2-fold increased odds of dialysis initiation, and 2.2-fold increased odds of in-hospital mortality (Ehmann et al., American Journal of Kidney Diseases, 2021)."),
emptyLine(),
h2("1.4 Rationale for the Study"),
body("Despite the high burden of CRF in India, there is a paucity of hospital-based data specifically examining the clinical profile, precipitating factors, and short-term outcomes of patients presenting acutely to the Emergency Medicine Department of tertiary care teaching hospitals in the Indian context. Existing data are largely from nephrology units (inpatient) or dialysis centers and do not capture the spectrum of first-point-of-contact ED presentations."),
emptyLine(),
body("There is a clear need to:"),
bullet("Quantify the burden of acute CRF presentations in the tertiary ED setting"),
bullet("Characterize the clinical, biochemical, and outcome profile of this cohort"),
bullet("Identify modifiable precipitating factors amenable to preventive interventions"),
bullet("Generate institution-specific data to inform triage protocols and resource allocation"),
emptyLine(),
body("This protocol describes a hospital-based, prospective observational study to address this gap."),
pageBreak(),
];
// ─── SECTION 3: OBJECTIVES ────────────────────────────────────────────────────
const objectives = [
h1("2. OBJECTIVES"),
emptyLine(),
h2("2.1 Primary Objective"),
body("To study the clinical profile, precipitating factors, and short-term outcomes of patients presenting with acute manifestations of Chronic Renal Failure (CRF) to the Emergency Medicine Department of a tertiary care teaching hospital."),
emptyLine(),
h2("2.2 Secondary Objectives"),
numbered("To determine the prevalence of CRF cases among all patients presenting to the Emergency Medicine Department during the study period."),
numbered("To identify the most common precipitating and triggering factors for acute decompensation of CRF."),
numbered("To describe the spectrum of acute complications: uremia, hyperkalemia, fluid overload, hypertensive crisis, and metabolic acidosis."),
numbered("To evaluate the indication and urgency for renal replacement therapy (hemodialysis / peritoneal dialysis) at the time of ED presentation."),
numbered("To assess short-term outcomes: ICU admission rate, in-hospital mortality, length of hospital stay, and dialysis initiation."),
numbered("To correlate clinical and biochemical parameters (serum creatinine, BUN, potassium, GFR stage, hemoglobin, pH) with disease severity and adverse outcomes."),
numbered("To determine the proportion of patients presenting with previously undiagnosed CRF in the ED."),
emptyLine(),
h2("2.3 Hypothesis"),
h3("Null Hypothesis (H₀)"),
body("There is no significant difference in the clinical profile, precipitating factors, and outcomes of patients presenting with acute CRF across different demographic groups, CKD stages, and etiological categories presenting to the Emergency Medicine Department."),
emptyLine(),
h3("Alternate Hypothesis (H₁)"),
body("There is a significant association between clinical and biochemical parameters (serum creatinine, BUN, potassium, GFR stage, hemoglobin, pH) and the severity of acute presentation, requirement for renal replacement therapy, and in-hospital mortality in patients with CRF presenting to the Emergency Medicine Department."),
emptyLine(),
body("Level of significance: α = 0.05 (two-tailed)."),
pageBreak(),
];
// ─── SECTION 4: METHODOLOGY ───────────────────────────────────────────────────
const methodology = [
h1("3. STUDY DESIGN AND METHODOLOGY"),
emptyLine(),
h2("3.1 Study Design"),
body("Hospital-based, prospective, observational, descriptive and analytical cross-sectional study."),
emptyLine(),
h2("3.2 Study Setting"),
body("The study will be conducted in the Emergency Medicine Department (EMD) of [Tertiary Care Teaching Hospital Name], [City], India — a tertiary care teaching hospital with an annual ED census of approximately [X,000] patients per year and a dedicated Nephrology unit with hemodialysis facilities."),
emptyLine(),
h2("3.3 Study Duration"),
body("18 months: January 2026 to June 2027 (including 2-month preparatory phase, 12-month data collection, and 4-month analysis and write-up phase)."),
emptyLine(),
h2("3.4 Study Population"),
body("All patients aged ≥ 18 years presenting to the Emergency Medicine Department with known or newly suspected/diagnosed CRF (CKD Stage 3–5, eGFR < 60 mL/min/1.73m²) along with an acute clinical presentation warranting emergency evaluation."),
emptyLine(),
h2("3.5 Case Definition"),
body("A case of 'Acute Presentation of CRF' is defined as:"),
bullet("Patient with known CKD/CRF (Stage 3–5) OR newly identified kidney damage (eGFR < 60 mL/min/1.73m² with evidence of chronicity ≥ 3 months on imaging or prior records) AND"),
bullet("Presenting to the ED with one or more acute symptoms/signs attributable to renal failure: oliguria/anuria, edema, hypertensive emergency, uremic symptoms (vomiting, altered sensorium, pericardial rub, asterixis), features of fluid overload (pulmonary edema, raised JVP), hyperkalemia (palpitations, weakness, ECG changes), or metabolic acidosis (deep Kussmaul breathing, vomiting)."),
emptyLine(),
h2("3.6 Inclusion Criteria"),
bullet("Age ≥ 18 years (both sexes)"),
bullet("Known diagnosis of CKD/CRF Stage 3–5 (eGFR < 60 mL/min/1.73m²) — confirmed by prior records or current investigations"),
bullet("Presenting to the Emergency Medicine Department with any acute symptom/complication attributable to CRF"),
bullet("Willing to provide written informed consent (self or legally authorized representative)"),
bullet("Both previously dialysis-dependent and non-dialysis CRF patients included"),
bullet("Patients with first-time diagnosis of CRF in the ED presenting with acute complications (provided evidence of chronicity is established)"),
emptyLine(),
h2("3.7 Exclusion Criteria"),
bullet("Acute Kidney Injury (AKI) without prior CKD history and no evidence of prior kidney damage (estimated duration < 3 months)"),
bullet("ESRD patients presenting only for scheduled dialysis without acute decompensation"),
bullet("Primary malignancy with renal involvement as the primary cause of dysfunction"),
bullet("Age < 18 years (pediatric patients — separate ethical considerations apply)"),
bullet("Patients or legally authorized representatives refusing informed consent"),
bullet("Pregnant patients with obstetric etiology of renal dysfunction (e.g., eclampsia, HELLP)"),
bullet("Post-renal transplant patients (distinct pathophysiology requiring separate study)"),
emptyLine(),
h2("3.8 Sampling Method"),
body("Consecutive (purposive) sampling: All eligible patients presenting to the ED during the study period who fulfil inclusion/exclusion criteria will be enrolled. This method ensures the study captures the true spectrum of acute CRF presentations in the ED without selection bias."),
pageBreak(),
];
// ─── SECTION 5: SAMPLE SIZE ───────────────────────────────────────────────────
const sampleSize = [
h1("4. SAMPLE SIZE CALCULATION"),
emptyLine(),
h2("4.1 Sample Size Formula"),
body("The sample size is calculated using the formula for estimation of population proportion:"),
emptyLine(),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: pt(6), after: pt(6) },
shading: { type: ShadingType.SOLID, color: LGRAY },
children: [
new TextRun({ text: "n = Z²α/₂ × P(1 – P) / d²", bold: true, size: pt(14), font: "Calibri", color: NAVY }),
],
}),
emptyLine(),
body("Where:"),
bullet("Z α/₂ = 1.96 (for 95% confidence interval)"),
bullet("P = 0.10 — estimated prevalence of AKI on CKD among all ED presentations (Ehmann et al., Am J Kidney Dis, 2021)"),
bullet("d = 0.05 — absolute precision / margin of error"),
emptyLine(),
body("Calculation:"),
body("n = (1.96)² × 0.10 × 0.90 / (0.05)²", { bold: true, indent: true }),
body("n = 3.8416 × 0.09 / 0.0025", { indent: true }),
body("n = 0.3457 / 0.0025", { indent: true }),
body("n = 138.3 ≈ 139 patients", { indent: true, bold: true }),
emptyLine(),
body("Adding 10% for anticipated non-response/dropout:"),
body("Final sample size = 139 + 14 = 153 patients (rounded to 160 for operational convenience).", { bold: true }),
emptyLine(),
body("The study will enrol a minimum of 160 eligible patients over the 12-month active data collection period. If enrolment falls short, the collection period may be extended by up to 2 months with IEC notification."),
pageBreak(),
];
// ─── SECTION 6: DATA COLLECTION ───────────────────────────────────────────────
const dataCollection = [
h1("5. DATA COLLECTION"),
emptyLine(),
h2("5.1 Data Collection Tool"),
body("A pre-designed, validated, structured Case Record Form (CRF Proforma) will be used for data collection. The proforma will be pilot-tested on 20 patients during Phase 1 (Months 1–2) and refined before full-scale use. All data will be collected by the principal investigator or trained co-investigators within 6 hours of patient presentation to the ED."),
emptyLine(),
h2("5.2 CRF Proforma — Data Domains"),
h3("Domain A: Patient Identification & Demographics"),
dataTable(
["Parameter", "Details / Scale"],
[
["Patient Study ID", "Unique alphanumeric code (no name recorded in data sheet)"],
["Age", "Years (continuous)"],
["Sex", "Male / Female / Transgender"],
["Address / Residence", "Urban / Rural / Semi-urban"],
["Education", "Illiterate / Primary / Secondary / Graduate / Post-graduate"],
["Occupation", "Unemployed / Unskilled / Skilled / Professional / Retired"],
["Body Mass Index (BMI)", "kg/m² — Underweight (<18.5) / Normal / Overweight / Obese"],
["Socioeconomic Status", "Modified Kuppuswamy Scale (updated 2024)"],
]
),
emptyLine(),
h3("Domain B: Presenting Complaints & History"),
dataTable(
["Parameter", "Details / Scale"],
[
["Chief Complaint", "Free text + coded (oliguria, edema, dyspnea, vomiting, altered sensorium, chest pain, weakness)"],
["Duration of Chief Complaint", "Hours / Days"],
["Known CRF", "Yes / No; if yes — duration in months/years, stage if known"],
["Prior Dialysis History", "Yes / No; type (HD/PD); frequency; last dialysis date"],
["Prior Hospitalization for CRF", "Number of admissions, last admission date"],
["Co-morbidities", "Diabetes Mellitus, Hypertension, CAD, CHF, Liver disease, Recurrent UTI, Nephrolithiasis, others"],
["Current Medications", "Antihypertensives, diuretics, NSAIDs, aminoglycosides, ACE-I/ARB, immunosuppressants, contrast exposure"],
["Compliance to Medications/Dialysis", "Compliant / Non-compliant / Irregular"],
]
),
emptyLine(),
h3("Domain C: Clinical Examination Findings"),
dataTable(
["Parameter", "Normal Range / Scale"],
[
["Blood Pressure (mmHg)", "Systolic / Diastolic; Hypertensive emergency (SBP >180 or DBP >120)"],
["Heart Rate (bpm)", "< 60 / 60–100 / > 100"],
["Respiratory Rate (/min)", "< 12 / 12–20 / > 20"],
["SpO₂ (%)", "< 90 / 90–94 / ≥ 95"],
["Temperature (°F/°C)", "Febrile (> 38°C) / Afebrile"],
["Glasgow Coma Scale (GCS)", "3–15; E, V, M sub-scores"],
["Pallor", "Present (mild/moderate/severe) / Absent"],
["Edema", "Absent / Pitting pedal / Anasarca"],
["Jugular Venous Pressure", "Normal / Raised"],
["Auscultation — Chest", "Clear / Crackles / Wheeze / Pleural effusion"],
["Cardiovascular Examination", "Normal / Pericardial rub / Irregular rhythm"],
["Urine Output (mL/24h)", "Anuric (<100) / Oliguric (100–400) / Non-oliguric (>400)"],
["Asterixis (Flapping Tremor)", "Present / Absent"],
["Uremic Fetor", "Present / Absent"],
]
),
emptyLine(),
h3("Domain D: Biochemical Investigations"),
dataTable(
["Investigation", "Unit / Normal Range"],
[
["Serum Creatinine", "mg/dL (Normal: 0.7–1.2)"],
["Blood Urea / BUN", "mg/dL (Urea: 15–45; BUN: 7–20)"],
["eGFR", "mL/min/1.73m² (CKD-EPI equation)"],
["Serum Sodium (Na⁺)", "mEq/L (135–145)"],
["Serum Potassium (K⁺)", "mEq/L (3.5–5.0)"],
["Serum Calcium (Ca²⁺)", "mg/dL (8.5–10.5)"],
["Serum Phosphate (PO₄³⁻)", "mg/dL (2.5–4.5)"],
["Serum Bicarbonate (HCO₃⁻)", "mEq/L (22–26)"],
["Arterial Blood Gas (ABG)", "pH, pCO₂, pO₂, HCO₃⁻, Base Excess"],
["Serum Albumin", "g/dL (3.5–5.0)"],
["Hemoglobin (Hb)", "g/dL"],
["Total Leucocyte Count (TLC)", "/mm³"],
["Platelet Count", "/mm³"],
["Serum LDH / CRP", "mg/L — for infection screening"],
["Blood Culture / Urine Culture", "If sepsis suspected"],
["Random Blood Glucose", "mg/dL"],
["Serum Uric Acid", "mg/dL"],
["Liver Function Tests", "T. bilirubin, ALT, AST, ALP — to rule out hepatorenal"],
]
),
emptyLine(),
h3("Domain E: Imaging & Electrocardiogram"),
dataTable(
["Investigation", "Parameters Assessed"],
[
["Renal Ultrasonography (USG)", "Bilateral renal size, cortical echogenicity, corticomedullary differentiation, hydronephrosis, calculi, cysts"],
["Chest X-Ray (PA / AP)", "Cardiomegaly (CTR), pulmonary edema, pleural effusion, pericardial effusion"],
["12-Lead ECG", "Rate, rhythm, PR interval, QRS duration, peaked T waves (hyperkalemia), ST changes"],
["2D Echocardiography", "Only if clinically indicated — pericardial effusion, LV function"],
["CT KUB (Plain)", "Only if obstructive uropathy suspected and USG inconclusive"],
]
),
emptyLine(),
h3("Domain F: Precipitating Factors"),
dataTable(
["Category", "Specific Factors"],
[
["Infective", "Urinary tract infection, sepsis, pneumonia, cellulitis, peritonitis"],
["Volume Depletion", "Diarrhea, vomiting, inadequate fluid intake, diuretic overuse, haemorrhage"],
["Nephrotoxins", "NSAID use, aminoglycoside antibiotics, contrast agents, herbal medicines"],
["Obstruction", "BPH, urolithiasis, pelvic malignancy, stricture urethra, blocked catheter"],
["Vascular", "Accelerated hypertension, renal artery stenosis, vasculitis"],
["Dietary Indiscretion", "High potassium diet, high protein diet, excess fluid"],
["Non-compliance", "Missed medications, missed dialysis sessions"],
["Others", "Surgical procedures, blood transfusion reactions, cardiac events (CHF decompensation)"],
]
),
emptyLine(),
h3("Domain G: Treatment Received & Short-Term Outcome"),
dataTable(
["Parameter", "Options"],
[
["Emergency Management", "IV fluids, furosemide, calcium gluconate, sodium bicarbonate, insulin+dextrose, salbutamol nebulization, dialysis"],
["Dialysis Indicated", "Yes / No; type — Emergent HD / PD / SLED / CRRT"],
["Time to Dialysis (hours)", "From ED arrival to first dialysis"],
["ICU Admission", "Yes / No"],
["Length of ICU Stay", "Days"],
["Length of Hospital Stay", "Days"],
["Discharge Status", "Improved / Discharged against medical advice (DAMA) / Death"],
["Cause of Death", "Hyperkalemia / Pulmonary edema / Sepsis / Uremia / Multi-organ failure / Other"],
["Follow-up Plan", "Nephrology OPD / Chronic dialysis / Renal transplant work-up"],
]
),
pageBreak(),
];
// ─── SECTION 7: STATISTICAL ANALYSIS ─────────────────────────────────────────
const stats = [
h1("6. STATISTICAL ANALYSIS PLAN"),
emptyLine(),
h2("6.1 Data Entry and Management"),
body("Data will be entered into a Microsoft Excel spreadsheet (double entry with verification) and exported to SPSS Version 26 (IBM Corp.) or STATA Version 17 for statistical analysis. Data validation checks will be applied. Missing data will be handled using case-wise deletion for descriptive analysis and multiple imputation for regression models where appropriate."),
emptyLine(),
h2("6.2 Descriptive Statistics"),
bullet("Continuous variables: Mean ± Standard Deviation (SD) for normally distributed data; Median and Interquartile Range (IQR) for skewed distributions. Normality will be assessed using the Kolmogorov-Smirnov test and Shapiro-Wilk test for smaller samples."),
bullet("Categorical variables: Frequency (n) and Percentage (%). Proportions with 95% Confidence Intervals (CIs)."),
bullet("Graphical representation: Bar charts, pie charts, histograms, and box plots as appropriate."),
emptyLine(),
h2("6.3 Analytical / Inferential Statistics"),
dataTable(
["Comparison", "Statistical Test", "Notes"],
[
["Two categorical variables", "Chi-square test", "Fisher's exact test if any cell < 5"],
["Continuous variable: two groups", "Independent samples t-test", "Mann-Whitney U if non-normal"],
["Continuous variable: > two groups", "One-way ANOVA", "Kruskal-Wallis if non-normal"],
["Correlation: two continuous", "Pearson correlation", "Spearman if non-normal"],
["Predictors of mortality / dialysis", "Binary logistic regression", "Multivariate — adjusted ORs with 95% CI"],
["Predictors of ICU admission", "Binary logistic regression", "Adjusted for age, sex, comorbidity"],
["Biochemical severity correlation", "Spearman / Pearson rho", "Creatinine, K⁺, GFR vs. outcome"],
]
),
emptyLine(),
h2("6.4 Significance and Reporting"),
body("A p-value of < 0.05 (two-tailed) will be considered statistically significant. Results will be reported as per STROBE (Strengthening the Reporting of Observational Studies in Epidemiology) guidelines. Odds Ratios (ORs) with 95% Confidence Intervals will be reported for all logistic regression models."),
pageBreak(),
];
// ─── SECTION 8: ETHICAL CONSIDERATIONS ───────────────────────────────────────
const ethics = [
h1("7. ETHICAL CONSIDERATIONS"),
emptyLine(),
h2("7.1 IEC / IRB Approval"),
body("The study protocol, informed consent form, data collection tools, and participant information sheet will be submitted to the Institutional Ethics Committee (IEC) for review and approval prior to commencement of any study activity. The study will be registered with the Clinical Trials Registry — India (CTRI) before enrolment. Any protocol amendments will be resubmitted to the IEC for approval."),
emptyLine(),
h2("7.2 Informed Consent"),
body("Written informed consent will be obtained from all eligible participants or their legally authorized representative (LAR — in case of altered sensorium or incapacity) prior to enrolment. The consent process will include:"),
bullet("Explanation of study purpose, procedures, risks, and benefits in the participant's preferred language"),
bullet("Assurance that participation is voluntary and withdrawal will not affect clinical care"),
bullet("Provision of the Participant Information Sheet in regional language"),
bullet("Adequate time for questions and deliberation before signing"),
bullet("Thumb impression accepted for illiterate participants with independent witness"),
emptyLine(),
h2("7.3 Confidentiality and Data Protection"),
body("Patient identifiers (name, hospital number, phone number) will be replaced with unique study codes in all data records. Master linkage files will be kept separately under lock and key (physical) and password-protected encryption (digital), accessible only to the PI. No identifiable participant data will be included in any publications or presentations. Data will be retained for 5 years post-publication as per ICMR guidelines and then destroyed."),
emptyLine(),
h2("7.4 Risk-Benefit Assessment"),
body("This is a purely observational study. No additional procedures, investigations, or interventions will be performed beyond routine standard of care. The only additional burden on participants is the time taken for history recording and consent (approximately 15–20 minutes). Potential benefit includes improvement of institutional ED protocols benefiting future CRF patients."),
emptyLine(),
h2("7.5 Vulnerable Populations"),
body("Patients with altered sensorium (GCS < 15) will have consent obtained from their legally authorized representative. Pregnant patients are excluded. Pediatric patients (< 18 years) are excluded. All participants retain the right to withdraw at any time without affecting their clinical care."),
emptyLine(),
h2("7.6 Conflict of Interest"),
body("The investigators declare no financial or non-financial conflict of interest. This study does not involve any pharmaceutical or device company funding. Results will be submitted for publication irrespective of findings, as a commitment to scientific transparency."),
pageBreak(),
];
// ─── SECTION 9: TIMELINE ──────────────────────────────────────────────────────
const timeline = [
h1("8. STUDY TIMELINE"),
emptyLine(),
dataTable(
["Phase", "Period", "Activities"],
[
["Phase 1 — Preparation", "Months 1–2\n(Jan–Feb 2026)", "IEC submission and approval; CTRI registration; literature review finalization; CRF proforma design and validation; pilot study on 20 cases; staff training; data management setup"],
["Phase 2 — Data Collection", "Months 3–14\n(Mar 2026 – Feb 2027)", "Active consecutive enrolment of eligible patients; data entry and quality checks; interim analysis at Month 8 (safety and feasibility review); IEC progress reports"],
["Phase 3 — Analysis", "Months 15–16\n(Mar–Apr 2027)", "Data cleaning and validation; statistical analysis; result interpretation; sub-group analyses; correlation with outcomes"],
["Phase 4 — Dissemination", "Months 17–18\n(May–Jun 2027)", "Report writing; manuscript preparation; IRB final report; dissemination via poster/oral presentation; journal submission (target: peer-reviewed nephrology or EM journal)"],
]
),
pageBreak(),
];
// ─── SECTION 10: BUDGET ───────────────────────────────────────────────────────
const budget = [
h1("9. BUDGET"),
emptyLine(),
dataTable(
["S.No.", "Item", "Estimated Cost (INR)"],
[
["1", "Stationery (proforma printing, consent forms, record files)", "₹ 5,000"],
["2", "Data entry and management (software, storage)", "₹ 5,000"],
["3", "Statistical analysis software (SPSS/STATA license or charges)", "₹ 15,000"],
["4", "Publication / open-access fees", "₹ 30,000"],
["5", "Poster / presentation materials (conferences)", "₹ 10,000"],
["6", "Contingency (10%)", "₹ 10,000"],
["", "Total Estimated Budget", "₹ 75,000"],
]
),
emptyLine(),
body("Source of Funding: Self-funded / Institutional intramural research grant (application pending). No external or pharmaceutical company funding."),
pageBreak(),
];
// ─── SECTION 11: REFERENCES ───────────────────────────────────────────────────
const references = [
h1("10. REFERENCES"),
emptyLine(),
body("1. KDIGO 2022 Clinical Practice Guideline for Evaluation and Management of Chronic Kidney Disease. Kidney International. 2022;102(3S):S1–S314."),
emptyLine(),
body("2. GBD Chronic Kidney Disease Collaboration. Global, regional, and national burden of chronic kidney disease, 1990–2017: a systematic analysis for the Global Burden of Disease Study 2017. Lancet. 2020;395(10225):709–733."),
emptyLine(),
body("3. Masina J, Moolla M, Motara F. Clinical Profile of Adult Patients Presenting With Renal Dysfunction to a Tertiary Hospital Emergency Department. Cureus. 2022;14(2):e22218. PMID: 35265412."),
emptyLine(),
body("4. Ehmann MR, Klein EY, Marcozzi D, et al. Incidence, epidemiology, and outcomes associated with community-acquired acute kidney injury in the emergency department. American Journal of Kidney Diseases. 2021. [Reported in Renal and Urology News, 2021]."),
emptyLine(),
body("5. Kreitzer N, Albert NM, Amin AN, et al. EMCREG-International Multidisciplinary Consensus Panel on Management of Hyperkalemia in Chronic Kidney Disease and Heart Failure. Cardiorenal Medicine. 2025. PMID: 39809248."),
emptyLine(),
body("6. Lawrence A, Syriac S, Umesh S, et al. Short-Term Mortality Associated With Hypertensive Emergencies: A Prospective Observational Cohort Study From South India. Cureus. 2023;15(8). PMID: 37753009."),
emptyLine(),
body("7. Johnson CA, Levey AS, Coresh J, et al. Clinical practice guidelines for chronic kidney disease in adults: Part II. Glomerular filtration rate, proteinuria, and other markers. American Family Physician. 2004;70(6):1091–1097."),
emptyLine(),
body("8. Brenner BM (Editor). Brenner & Rector's The Kidney. 10th Edition. Philadelphia: Elsevier Saunders; 2016. [Textbook of Family Medicine 9th ed. cited for CKD staging]."),
emptyLine(),
body("9. Levey AS, Stevens LA, Schmid CH, et al. A new equation to estimate glomerular filtration rate. Annals of Internal Medicine. 2009;150(9):604–612. [CKD-EPI equation]."),
emptyLine(),
body("10. Ruiz-Ortega M, Rayego-Mateos S, Lamas S, et al. Targeting the progression of chronic kidney disease. Nature Reviews Nephrology. 2020;16(5):269–288."),
emptyLine(),
body("11. van Haalen H, Jackson J, Spinowitz B, et al. Impact of chronic kidney disease and anemia on health-related quality of life and work productivity: analysis of multinational real-world data. BMC Nephrology. 2020;21(1):88."),
emptyLine(),
body("12. Indian Council of Medical Research (ICMR). National Ethical Guidelines for Biomedical and Health Research Involving Human Participants. New Delhi: ICMR; 2017."),
emptyLine(),
body("13. von Elm E, Altman DG, Egger M, et al. The Strengthening the Reporting of Observational Studies in Epidemiology (STROBE) statement: guidelines for reporting observational studies. Lancet. 2007;370(9596):1453–1457."),
emptyLine(),
body("14. Profile and outcome of patients with emergency complications of renal failure presenting to an urban emergency department of a tertiary hospital in Tanzania. BMC Emergency Medicine. 2019;19(1):25."),
pageBreak(),
];
// ─── SECTION 12: APPENDICES ───────────────────────────────────────────────────
const appendices = [
h1("APPENDIX A — PARTICIPANT INFORMATION SHEET (TEMPLATE)"),
emptyLine(),
body("Study Title: A Study of Acute Presentation of Chronic Renal Failure Cases Coming to the Emergency Medicine Department of a Tertiary Care Teaching Hospital"),
emptyLine(),
body("Principal Investigator: [Name], [Designation], Department of Emergency Medicine, [Hospital Name]", { italics: true }),
emptyLine(),
body("Dear Participant / Family Member,"),
emptyLine(),
body("You/your family member is being invited to participate in a medical research study. Please read this information carefully before deciding whether to participate. Participation is entirely voluntary."),
emptyLine(),
body("Purpose of the Study: We are conducting this study to understand how patients with chronic kidney disease (long-term kidney failure) present to the emergency department when they develop sudden worsening of their condition. This will help us improve emergency care for such patients."),
emptyLine(),
body("What will happen if you participate: We will collect information about your symptoms, past medical history, physical examination findings, and the results of blood tests and imaging already performed as part of your routine emergency care. No additional tests will be done for the purpose of this study."),
emptyLine(),
body("Risks: There are no additional risks. Your participation involves only sharing of medical information already collected for your care."),
emptyLine(),
body("Benefits: You will not receive any direct benefit or payment. The results may help improve emergency care for future patients with kidney disease."),
emptyLine(),
body("Confidentiality: Your name and personal information will be kept strictly confidential. Only a study code number will be used in all records."),
emptyLine(),
body("Voluntary Participation: Participation is voluntary. You may withdraw at any time without affecting your medical care."),
emptyLine(),
body("Contact for Questions: [PI Name, Phone, Email]"),
emptyLine(),
pageBreak(),
h1("APPENDIX B — INFORMED CONSENT FORM (TEMPLATE)"),
emptyLine(),
body("I, _________________________ (Name of participant / LAR), have read / had read to me the Participant Information Sheet for the above study. I have had the opportunity to ask questions and have received satisfactory answers. I voluntarily agree to participate in this study."),
emptyLine(),
body("I understand that:"),
bullet("My participation is voluntary and I may withdraw at any time without affecting my medical care"),
bullet("My personal data will be kept confidential and used only for this research"),
bullet("No additional procedures will be performed beyond routine clinical care"),
emptyLine(),
body("Signature / Thumb Impression of Participant or LAR: _________________________"),
emptyLine(),
body("Date: _________________________"),
emptyLine(),
body("Name of Witness (if applicable): _________________________ Signature: _________________________"),
emptyLine(),
body("Signature of Investigator: _________________________ Date: _________________________"),
emptyLine(),
pageBreak(),
h1("APPENDIX C — KDIGO CKD STAGING REFERENCE"),
emptyLine(),
dataTable(
["GFR Category", "GFR (mL/min/1.73m²)", "Terms Used", "Albuminuria Categories"],
[
["G1", "≥ 90", "Normal or high", "A1: < 30 mg/g; A2: 30–300 mg/g; A3: > 300 mg/g"],
["G2", "60–89", "Mildly decreased", ""],
["G3a", "45–59", "Mildly to moderately decreased", ""],
["G3b", "30–44", "Moderately to severely decreased", ""],
["G4", "15–29", "Severely decreased", ""],
["G5", "< 15", "Kidney failure (ESRD)", ""],
]
),
];
// ─── ASSEMBLE DOCUMENT ────────────────────────────────────────────────────────
const allChildren = [
...titlePage,
...abbreviations,
...introduction,
...objectives,
...methodology,
...sampleSize,
...dataCollection,
...stats,
...ethics,
...timeline,
...budget,
...references,
...appendices,
];
const doc = new Document({
numbering: {
config: [
{
reference: "main-numbering",
levels: [
{
level: 0,
format: LevelFormat.DECIMAL,
text: "%1.",
alignment: AlignmentType.START,
style: { paragraph: { indent: { left: convertInchesToTwip(0.4), hanging: convertInchesToTwip(0.25) } } },
},
],
},
],
},
styles: {
default: {
document: {
run: { font: "Calibri", size: pt(11), color: BLACK },
},
},
},
sections: [
{
properties: {
page: {
margin: { top: cm(2.5), bottom: cm(2.5), left: cm(3), right: cm(2.5) },
},
},
headers: {
default: new Header({
children: [
new Paragraph({
border: { bottom: { color: TEAL, size: 6, style: BorderStyle.SINGLE } },
children: [
new TextRun({ text: "STUDY PROTOCOL — Acute Presentation of CRF in Emergency Medicine Department | Version 1.0 | July 2026", size: pt(9), color: DGRAY, font: "Calibri", italics: true }),
],
}),
],
}),
},
footers: {
default: new Footer({
children: [
new Paragraph({
border: { top: { color: TEAL, size: 6, style: BorderStyle.SINGLE } },
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "[Tertiary Care Teaching Hospital] | Department of Emergency Medicine | Page ", size: pt(9), color: DGRAY, font: "Calibri" }),
new TextRun({ children: [new PageNumber()], size: pt(9), color: DGRAY, font: "Calibri" }),
],
}),
],
}),
},
children: allChildren,
},
],
});
const outPath = "/home/daytona/workspace/irb-crf-presentation/CRF_Study_Protocol.docx";
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync(outPath, buf);
console.log("✅ Protocol document saved: " + outPath);
}).catch(err => { console.error("❌ Error:", err); process.exit(1); });
cd /home/daytona/workspace/irb-crf-presentation && node create_protocol_docx.js …
node -e "const d = require('docx'); console.log(Object.keys(d).filter(k => k.toL…
node -e "const { PageNumber, PageNumberElement } = require('docx'); console.log(…
~/irb-crf-presentation/create_protocol_docx.js
Error: String not found in file: ' PageNumber, PageBreak, LevelFormat, convertInchesToTwip, TabStopType, TabStopPosition,
} = require("docx");'~/irb-crf-presentation/create_protocol_docx.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/irb-crf-presentation/create_protocol_docx.js'
cd /home/daytona/workspace/irb-crf-presentation && node create_protocol_docx.js …
~/irb-crf-presentation/create_protocol_docx.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/irb-crf-presentation/create_protocol_docx.js'
~/irb-crf-presentation/create_protocol_docx.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/irb-crf-presentation/create_protocol_docx.js'
cd /home/daytona/workspace/irb-crf-presentation && node create_protocol_docx.js …
python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/worksp…
# Validate structurally using pandoc pandoc /home/daytona/workspace/irb-crf-pres…
CRF Study Protocol
Word Document · DOCX
| Section | Content |
|---|---|
| Title Page | Full title, PI/Co-I details, institution, study type, duration, IEC & CTRI placeholders |
| Abbreviations | 29-term reference table (AKI, CKD, CRF, KDIGO, CTRI, ABG, etc.) |
| 1. Introduction & Background | CKD definition, 5-stage classification table, global/Indian epidemiology, clinical significance of acute presentations, rationale |
| 2. Objectives | Primary objective, 7 secondary objectives (numbered), null & alternate hypothesis with α = 0.05 |
| 3. Study Design & Methodology | Study type, setting, duration, population, case definition, inclusion criteria (6), exclusion criteria (7), sampling method |
| 4. Sample Size Calculation | Full formula with workings — n ≈ 153, rounded to 160 patients (based on Ehmann 2021 prevalence P=0.10) |
| 5. Data Collection | 7 domains with detailed parameter tables: Demographics, Presenting Complaints/History, Clinical Examination, Biochemical Investigations (17 parameters), Imaging/ECG, Precipitating Factors (8 categories), Treatment & Outcome |
| 6. Statistical Analysis Plan | Data entry, descriptive stats, analytical tests table (chi-square, t-test, ANOVA, logistic regression), STROBE reporting |
| 7. Ethical Considerations | IEC/IRB, informed consent procedure, data protection, risk-benefit, vulnerable populations, conflict of interest |
| 8. Study Timeline | 4-phase Gantt table across 18 months |
| 9. Budget | Itemized budget — estimated ₹ 75,000 |
| 10. References | 14 numbered references (KDIGO 2022, GBD 2020, PubMed-sourced papers) |
| Appendix A | Participant Information Sheet template |
| Appendix B | Informed Consent Form template |
| Appendix C | KDIGO CKD staging reference table |
[Name, MD/MS, DNB] - PI name and qualifications[Tertiary Care Teaching Hospital Name] - your institution[City], [State] - locationStudy of Acute Presentation of Chronic Renal Failure Cases Coming to the Emergency Medicine Department of a Tertiary Care Teaching Hospital
cd /home/daytona/skills/pptx && python scripts/thumbnail.py /home/daytona/worksp…
cd /home/daytona/skills/pptx && python -m markitdown /home/daytona/workspace/att…
cp /home/daytona/skills/pptx/thumbnails.jpg /home/daytona/workspace/irb-crf-pres…
cd /home/daytona/skills/pptx && python scripts/office/unpack.py /home/daytona/wo…
cd /home/daytona/skills/pptx && timeout 90 python scripts/office/unpack.py /home…
mkdir -p /home/daytona/workspace/irb-crf-presentation/template_unpacked && cd /h…
ls -la /home/daytona/workspace/attachments/5c979982-d35b-424a-90b6-1b968d898e5b/
python3 -c " import zipfile, os src = '/home/daytona/workspace/attachments/5c979…
python3 << 'PYEOF' import shutil, os src = '/home/daytona/workspace/attachments/…
python3 << 'PYEOF' import shutil, os src = '/home/daytona/workspace/attachments/…
python3 << 'PYEOF' import io, os src = '/home/daytona/workspace/attachments/5c97…
python3 << 'PYEOF' from pptx import Presentation from pptx.util import Inches, P…
python3 << 'PYEOF' import zipfile src = '/home/daytona/workspace/irb-crf-present…
python3 << 'PYEOF' import zipfile src = '/home/daytona/workspace/irb-crf-present…
~/irb-crf-presentation/populate_template.py
"""
Populate NHL IRB Template with CRF Study content.
Directly modifies slide XML inside the PPTX ZIP.
"""
import zipfile, io, re, os
SRC = '/home/daytona/workspace/irb-crf-presentation/NHL_CRF_IRB.pptx'
DST = '/home/daytona/workspace/irb-crf-presentation/NHL_CRF_IRB_Filled.pptx'
# ─── XML helpers ──────────────────────────────────────────────────────────────
NS = 'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"'
def esc(t):
return t.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"')
def bullet_para(text, bold=False, size=1600):
"""Single bullet paragraph XML."""
b = '<a:b/>' if bold else ''
return (
f'<a:p>'
f'<a:pPr marL="342900" indent="-342900"><a:buChar char="•"/></a:pPr>'
f'<a:r><a:rPr lang="en-IN" sz="{size}" dirty="0">{b}</a:rPr>'
f'<a:t>{esc(text)}</a:t></a:r>'
f'</a:p>'
)
def sub_bullet_para(text, size=1400):
"""Sub-bullet paragraph XML."""
return (
f'<a:p>'
f'<a:pPr marL="685800" indent="-342900" lvl="1"><a:buChar char="–"/></a:pPr>'
f'<a:r><a:rPr lang="en-IN" sz="{size}" dirty="0"></a:rPr>'
f'<a:t>{esc(text)}</a:t></a:r>'
f'</a:p>'
)
def plain_para(text, bold=False, size=1500, align=''):
"""Plain (non-bullet) paragraph."""
b = '<a:b/>' if bold else ''
algn = f' algn="{align}"' if align else ''
return (
f'<a:p>'
f'<a:pPr{algn}/>'
f'<a:r><a:rPr lang="en-IN" sz="{size}" dirty="0">{b}</a:rPr>'
f'<a:t>{esc(text)}</a:t></a:r>'
f'</a:p>'
)
def build_txBody(paras_xml, fit=True):
"""Wrap paragraph XMLs in a txBody."""
autofit = '<a:normAutofit/>' if fit else ''
body = f'<a:bodyPr>{autofit}</a:bodyPr><a:lstStyle/>'
return '<p:txBody>' + body + ''.join(paras_xml) + '</p:txBody>'
def replace_txbody(slide_xml, shape_name, new_txbody_inner):
"""Replace the txBody content of a named shape."""
# Strategy: find the sp containing the name, replace its txBody
# We'll use a targeted regex
pattern = re.compile(
r'(<p:sp>.*?<p:cNvPr[^>]*name="' + re.escape(shape_name) + r'".*?<p:txBody>)'
r'(.*?)'
r'(</p:txBody>)',
re.DOTALL
)
def repl(m):
return m.group(1) + new_txbody_inner + m.group(3)
result, n = pattern.subn(repl, slide_xml)
if n == 0:
print(f" WARNING: shape '{shape_name}' not found for replacement")
return result
# ─── SLIDE CONTENT ────────────────────────────────────────────────────────────
SLIDES = {}
# ── SLIDE 1: Title ──────────────────────────────────────────────────────────
SLIDES[1] = {
'ctrTitle': [
plain_para(
'A Study of Acute Presentation of Chronic Renal Failure Cases Coming to the '
'Emergency Medicine Department of a Tertiary Care Teaching Hospital',
bold=True, size=2000, align='ctr'
)
],
'subTitle': [
plain_para('Presented by: [Name, MD/MS/DNB] — Department of Emergency Medicine', size=1400, align='ctr'),
plain_para('Guide: [Name, Qualification] — Department of Nephrology', size=1400, align='ctr'),
plain_para('Department: Emergency Medicine', size=1400, align='ctr'),
plain_para('Institution: Smt. NHL Municipal Medical College & SVP Hospital, Ahmedabad', size=1400, align='ctr'),
plain_para('Protocol Version 1.0 | July 2026', size=1200, align='ctr'),
]
}
# ── SLIDE 2: Introduction ────────────────────────────────────────────────────
SLIDES[2] = {
'Title 1': [plain_para('Introduction', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Background & Rationale', bold=True, size=1600),
sub_bullet_para('CKD/CRF defined as GFR < 60 mL/min/1.73m2 for ≥ 3 months (KDIGO 2022)'),
sub_bullet_para('Affects ~850 million people globally (GBD 2019); prevalence 10–15% adults'),
sub_bullet_para('Leading causes: Diabetic nephropathy, Hypertension, Glomerulonephritis, Obstructive uropathy'),
sub_bullet_para('CRF patients are at high risk of acute decompensation requiring emergency care'),
sub_bullet_para('Acute-on-CRF events: first clinical encounter in up to 30–40% of CRF patients'),
sub_bullet_para('1 in 10 ED presentations have community-acquired AKI (Ehmann et al., 2021)'),
sub_bullet_para('Admitted AKI-on-CKD: 6.2x risk of dialysis, 2.2x in-hospital mortality'),
bullet_para('Research Question & Hypothesis', bold=True, size=1600),
sub_bullet_para('What is the clinical profile, precipitating factors, and short-term outcome of CRF patients presenting acutely to the ED of a tertiary care hospital?'),
sub_bullet_para('H0: No significant association between clinical/biochemical parameters and adverse outcomes in acute CRF presentations'),
sub_bullet_para('H1: Significant association exists between severity markers (creatinine, K+, GFR, pH) and mortality/dialysis need'),
]
}
# ── SLIDE 3: Aims & Objectives ───────────────────────────────────────────────
SLIDES[3] = {
'Title 1': [plain_para('Aims & Objectives', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Aim', bold=True, size=1600),
sub_bullet_para('To study acute presentations of CRF in the Emergency Medicine Department of a tertiary care teaching hospital'),
bullet_para('Primary Objective', bold=True, size=1600),
sub_bullet_para('To study clinical profile, precipitating factors and short-term outcomes of CRF cases presenting acutely to the ED'),
bullet_para('Secondary Objectives', bold=True, size=1600),
sub_bullet_para('Determine prevalence of CRF among all ED presentations during the study period'),
sub_bullet_para('Identify most common precipitating/triggering factors for acute decompensation'),
sub_bullet_para('Describe spectrum of acute complications: uremia, hyperkalemia, fluid overload, acidosis'),
sub_bullet_para('Evaluate need for urgent renal replacement therapy (hemodialysis/peritoneal dialysis)'),
sub_bullet_para('Assess short-term outcomes: ICU admission, in-hospital mortality, dialysis initiation'),
sub_bullet_para('Correlate biochemical parameters (creatinine, BUN, K+, GFR stage, Hb, pH) with disease severity'),
]
}
# ── SLIDE 4: Methodology ─────────────────────────────────────────────────────
SLIDES[4] = {
'Title 1': [plain_para('Methodology', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Study Design & Setting', bold=True, size=1600),
sub_bullet_para('Hospital-based, prospective, observational, descriptive & analytical study'),
sub_bullet_para('Setting: Emergency Medicine Department, NHL Municipal Medical College & SVP Hospital, Ahmedabad'),
sub_bullet_para('Duration: 18 months (January 2026 – June 2027)'),
bullet_para('Inclusion & Exclusion Criteria', bold=True, size=1600),
sub_bullet_para('Inclusion: Age ≥ 18 yrs, known/newly diagnosed CRF (CKD Stage 3–5, eGFR < 60), acute presentation, informed consent'),
sub_bullet_para('Exclusion: AKI without prior CKD, ESRD on scheduled dialysis only, < 18 years, pregnancy with obstetric cause, refusal of consent'),
bullet_para('Sample Size & Sampling Method', bold=True, size=1600),
sub_bullet_para('Formula: n = Z2(alpha/2) x P(1-P) / d2 | Z=1.96, P=0.10, d=0.05 => n=138; +10% non-response = 160 patients'),
sub_bullet_para('Consecutive (purposive) sampling of all eligible ED presentations'),
bullet_para('Study Procedures', bold=True, size=1600),
sub_bullet_para('Structured CRF Proforma: demographics, history, vitals, biochemistry (creatinine, BUN, K+, ABG), imaging (USG kidney, CXR, ECG)'),
sub_bullet_para('Data collected within 6 hours of ED presentation by trained investigators'),
bullet_para('Outcome Measures', bold=True, size=1600),
sub_bullet_para('Primary: Clinical profile, precipitating factors | Secondary: ICU admission, dialysis initiation, in-hospital mortality'),
]
}
# ── SLIDE 5: Ethical Considerations ─────────────────────────────────────────
SLIDES[5] = {
'Title 1': [plain_para('Ethical Considerations', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Informed Consent Process', bold=True, size=1600),
sub_bullet_para('Written informed consent obtained from all participants or legally authorized representative (LAR)'),
sub_bullet_para('Consent provided in preferred language; Participant Information Sheet (PIS) given in regional language'),
sub_bullet_para('Thumb impression accepted for illiterate participants with independent witness'),
sub_bullet_para('Participation voluntary — right to withdraw at any time without affecting clinical care'),
sub_bullet_para('Consent from LAR for patients with altered sensorium (GCS < 15)'),
bullet_para('Confidentiality Measures', bold=True, size=1600),
sub_bullet_para('Patient identifiers replaced by unique study codes in all data records'),
sub_bullet_para('Master linkage file kept under lock and key; digital data in password-protected encrypted storage'),
sub_bullet_para('No identifiable information in any publication or presentation'),
sub_bullet_para('Data retained for 5 years post-publication (ICMR guidelines), then destroyed'),
sub_bullet_para('IEC/IRB approval obtained before commencement; CTRI registration completed'),
sub_bullet_para('Observational only — no additional procedures beyond standard care; minimal risk to participants'),
sub_bullet_para('No conflict of interest declared; no pharmaceutical company funding'),
]
}
# ── SLIDE 6: Data Analysis ────────────────────────────────────────────────────
SLIDES[6] = {
'Title 1': [plain_para('Data Analysis', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Statistical Methods', bold=True, size=1600),
sub_bullet_para('Software: SPSS Version 26 / STATA Version 17; p < 0.05 (two-tailed) = statistically significant'),
sub_bullet_para('Data entry: MS Excel (double-entry with validation); exported for analysis'),
bullet_para('Descriptive Statistics', bold=True, size=1600),
sub_bullet_para('Continuous: Mean ± SD (normal) or Median + IQR (skewed); normality by Kolmogorov-Smirnov/Shapiro-Wilk'),
sub_bullet_para('Categorical: Frequency (n) and Percentage (%) with 95% Confidence Intervals'),
bullet_para('Inferential Statistics', bold=True, size=1600),
sub_bullet_para('Chi-square / Fisher\'s exact test: categorical associations'),
sub_bullet_para('Independent t-test / Mann-Whitney U: two-group continuous comparisons'),
sub_bullet_para('One-way ANOVA / Kruskal-Wallis: comparisons across > 2 groups'),
sub_bullet_para('Pearson / Spearman correlation: biochemical parameter correlations'),
sub_bullet_para('Binary logistic regression (multivariate): predictors of mortality, dialysis initiation, ICU admission'),
bullet_para('Reporting Standard', bold=True, size=1600),
sub_bullet_para('STROBE guidelines (Strengthening the Reporting of Observational Studies in Epidemiology)'),
sub_bullet_para('Odds Ratios with 95% CIs reported for all regression models'),
]
}
# ── SLIDE 7: Proforma / Case Record Form ─────────────────────────────────────
SLIDES[7] = {
'Title 1': [plain_para('Proforma / Case Record Form', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('Structure of the Data Collection Tool', bold=True, size=1600),
sub_bullet_para('Domain A — Demographics: Age, sex, BMI, education, occupation, socioeconomic status (Kuppuswamy scale)'),
sub_bullet_para('Domain B — History: CRF duration, prior dialysis, co-morbidities (DM, HTN, CAD), medications, compliance'),
sub_bullet_para('Domain C — Clinical Examination: BP, HR, RR, SpO2, GCS, pallor, edema, JVP, urine output, asterixis, uremic fetor'),
sub_bullet_para('Domain D — Biochemistry: Serum creatinine, BUN, eGFR, Na+, K+, Ca2+, PO43-, HCO3-, ABG, Hb, CBC, RBS, albumin, LFT'),
sub_bullet_para('Domain E — Imaging & ECG: Renal USG (bilateral size, echogenicity, hydronephrosis), CXR (cardiomegaly, pulmonary edema), 12-lead ECG (hyperkalemia changes)'),
sub_bullet_para('Domain F — Precipitating Factors: Infection, dehydration, NSAID/nephrotoxin use, obstruction, missed dialysis, dietary indiscretion, vascular event'),
sub_bullet_para('Domain G — Treatment & Outcome: Dialysis type (HD/PD/CRRT), time to dialysis, ICU admission, length of stay, discharge status, cause of death'),
sub_bullet_para('Pilot-tested on 20 cases (Phase 1, Months 1–2) before full-scale use; data collected within 6 hours of ED arrival'),
]
}
# ── SLIDE 8: Informed Consent Form ───────────────────────────────────────────
SLIDES[8] = {
'Title 1': [plain_para('Informed Consent Form (ICF)', bold=True, size=2000)],
'Content Placeholder 2': [
bullet_para('In All Required Languages', bold=True, size=1600),
sub_bullet_para('Languages: English, Gujarati, Hindi (regional language versions prepared and IEC-approved)'),
bullet_para('ICF Components', bold=True, size=1600),
sub_bullet_para('Study title and purpose explained in simple non-technical language'),
sub_bullet_para('Nature of participation: history recording + data from routine investigations only (no additional procedures)'),
sub_bullet_para('Risks: None beyond routine clinical care (observational study only)'),
sub_bullet_para('Benefits: No direct personal benefit; contributes to improved ED protocols for future CRF patients'),
sub_bullet_para('Confidentiality: No identifying information used; study code only'),
sub_bullet_para('Voluntariness: Right to withdraw at any time without affecting medical care or any penalty'),
sub_bullet_para('Contact: PI name, phone number, and institutional ethics committee contact for queries/complaints'),
bullet_para('Consent Procedure', bold=True, size=1600),
sub_bullet_para('Adequate time given; questions invited before signing'),
sub_bullet_para('Signed consent by participant OR thumb impression with independent witness (illiterate participants)'),
sub_bullet_para('LAR consent for patients with GCS < 15 or incapacity; assent if feasible'),
sub_bullet_para('Copy of signed ICF provided to participant/family; original retained by PI'),
]
}
# ── SLIDE 9: References ────────────────────────────────────────────────────
SLIDES[9] = {
'Title 1': [plain_para('References (Vancouver Style)', bold=True, size=2000)],
'Content Placeholder 2': [
plain_para('1. KDIGO 2022 Clinical Practice Guideline for CKD. Kidney Int. 2022;102(3S):S1–S314.', size=1300),
plain_para('2. GBD CKD Collaboration. Global burden of CKD, 1990–2017. Lancet. 2020;395:709–733.', size=1300),
plain_para('3. Masina J, Moolla M, Motara F. Clinical profile of adult patients with renal dysfunction in ED. Cureus. 2022;14(2):e22218. PMID: 35265412.', size=1300),
plain_para('4. Ehmann MR, et al. Community-acquired AKI in the ED: incidence and outcomes. Am J Kidney Dis. 2021.', size=1300),
plain_para('5. Kreitzer N, et al. EMCREG Consensus on hyperkalemia in CKD and HF. Cardiorenal Med. 2025. PMID: 39809248.', size=1300),
plain_para('6. Lawrence A, et al. Short-term mortality with hypertensive emergencies. Cureus. 2023. PMID: 37753009.', size=1300),
plain_para('7. Johnson CA, Levey AS, et al. Clinical practice guidelines for CKD. Am Fam Physician. 2004;70:1091–1097.', size=1300),
plain_para('8. Levey AS, et al. New equation to estimate GFR (CKD-EPI). Ann Intern Med. 2009;150:604–612.', size=1300),
plain_para('9. Profile & outcome of CRF emergency complications, Tanzania. BMC Emerg Med. 2019;19:25.', size=1300),
plain_para('10. ICMR. National Ethical Guidelines for Biomedical and Health Research. New Delhi: ICMR; 2017.', size=1300),
plain_para('11. von Elm E, et al. STROBE statement. Lancet. 2007;370(9596):1453–1457.', size=1300),
]
}
# ─── APPLY CHANGES TO ZIP ─────────────────────────────────────────────────────
SHAPE_MAP_BY_PH = {
'ctrTitle': 'ctrTitle',
'subTitle': 'subTitle',
}
def make_paras_xml(paras_list):
return ''.join(paras_list)
def replace_ph_content(slide_xml, ph_type, paras_xml):
"""Replace content inside a placeholder by type (ctrTitle, subTitle, title, body)."""
# Find sp with ph type
pattern = re.compile(
r'(<p:txBody>)'
r'(<a:bodyPr[^/]*/?>|<a:bodyPr>.*?</a:bodyPr>)' # bodyPr
r'(<a:lstStyle/>)' # lstStyle
r'(.*?)' # existing paragraphs
r'(</p:txBody>)',
re.DOTALL
)
# We need to find the right txBody — match the entire sp block that contains ph type
sp_pattern = re.compile(
r'(<p:sp>(?:(?!</p:sp>).)*?<a:ph type="' + re.escape(ph_type) + r'"[^>]*/?>(?:(?!</p:sp>).)*?<p:txBody>)'
r'(<a:bodyPr[^/]*/?>|<a:bodyPr>.*?</a:bodyPr>)?'
r'(<a:lstStyle/>)?'
r'(.*?)'
r'(</p:txBody>)',
re.DOTALL
)
def repl(m):
bodypr = m.group(2) or '<a:bodyPr><a:normAutofit/></a:bodyPr>'
lstStyle = m.group(3) or '<a:lstStyle/>'
return m.group(1) + bodypr + lstStyle + paras_xml + m.group(5)
result, n = sp_pattern.subn(repl, slide_xml)
return result, n
def replace_shape_content(slide_xml, shape_name, paras_xml):
"""Replace content of a shape identified by its cNvPr name attribute."""
sp_pattern = re.compile(
r'(<p:sp>(?:(?!</p:sp>).)*?<p:cNvPr[^>]*name="' + re.escape(shape_name) + r'"[^>]*/?>(?:(?!</p:sp>).)*?<p:txBody>)'
r'(<a:bodyPr[^/]*/?>|<a:bodyPr>.*?</a:bodyPr>)?'
r'(<a:lstStyle/>)?'
r'(.*?)'
r'(</p:txBody>)',
re.DOTALL
)
def repl(m):
bodypr = m.group(2) or '<a:bodyPr><a:normAutofit/></a:bodyPr>'
lstStyle = m.group(3) or '<a:lstStyle/>'
return m.group(1) + bodypr + lstStyle + paras_xml + m.group(5)
result, n = sp_pattern.subn(repl, slide_xml)
if n == 0:
print(f" WARNING: shape '{shape_name}' not found")
return result, n
# Read source PPTX into memory
with open(SRC, 'rb') as f:
src_data = f.read()
src_buf = io.BytesIO(src_data)
dst_buf = io.BytesIO()
with zipfile.ZipFile(src_buf, 'r') as zin, zipfile.ZipFile(dst_buf, 'w', zipfile.ZIP_DEFLATED) as zout:
for item in zin.infolist():
data = zin.read(item.filename)
if item.filename == 'ppt/slides/slide1.xml':
xml = data.decode('utf-8')
content = SLIDES[1]
# Slide 1: ctrTitle + subTitle placeholders
for ph_type, paras in [('ctrTitle', content['ctrTitle']), ('subTitle', content['subTitle'])]:
paras_xml = make_paras_xml(paras)
xml, n = replace_ph_content(xml, ph_type, paras_xml)
print(f"Slide 1 {ph_type}: {n} replacements")
data = xml.encode('utf-8')
elif item.filename in [f'ppt/slides/slide{i}.xml' for i in range(2, 10)]:
slide_num = int(re.search(r'slide(\d+)', item.filename).group(1))
xml = data.decode('utf-8')
content = SLIDES.get(slide_num, {})
for shape_name, paras in content.items():
paras_xml = make_paras_xml(paras)
xml, n = replace_shape_content(xml, shape_name, paras_xml)
print(f"Slide {slide_num} '{shape_name}': {n} replacements")
data = xml.encode('utf-8')
zout.writestr(item, data)
with open(DST, 'wb') as f:
f.write(dst_buf.getvalue())
print(f"\n✅ Saved: {DST} ({os.path.getsize(DST):,} bytes)")
cd /home/daytona/workspace/irb-crf-presentation && python3 populate_template.py …
python3 << 'PYEOF' # Fix slide 1 title — inspect its actual ph XML and do a simp…
python3 << 'PYEOF' import zipfile, io, re, os src = '/home/daytona/workspace/ir…
Make ppt presentation
ls -la /home/daytona/workspace/irb-crf-presentation/ && python3 -c " import zipf…
NHL CRF IRB Final
Presentation · PPTX
| Slide | Title | Content Summary |
|---|---|---|
| 1 | Title Slide | Full study title, PI/Guide/Department/Institution, Protocol v1.0, July 2026 |
| 2 | Introduction | Background & Rationale (CKD epidemiology, global burden, ED risk data) + Research Question & Hypothesis (H0/H1) |
| 3 | Aims & Objectives | Aim + Primary Objective + 6 Secondary Objectives |
| 4 | Methodology | Study design/setting/duration, Inclusion/Exclusion criteria, Sample size calculation (n=160), Study procedures, Outcome measures |
| 5 | Ethical Considerations | Informed consent process (LAR, languages, thumb impression) + Confidentiality measures (coding, encryption, ICMR guidelines) |
| 6 | Data Analysis | Statistical methods (SPSS/STATA), Descriptive stats, Inferential tests table, Multivariate logistic regression, STROBE reporting |
| 7 | Proforma / Case Record Form | All 7 data domains: Demographics, History, Clinical Exam, Biochemistry, Imaging/ECG, Precipitating Factors, Treatment & Outcome |
| 8 | Informed Consent Form (ICF) | Languages (English/Gujarati/Hindi), ICF components, consent procedure |
| 9 | References (Vancouver Style) | 11 numbered references (KDIGO 2022, GBD 2020, PubMed-sourced papers) |
[Name, MD/MS/DNB] and [Guide Name] on Slide 1 with the actual investigator names before submission.