Case Report Cone‑beam computed tomography‑guided biomimetic management of extensive internal inflammatory resorption with histopathologic correlation Z. K. Sincy, Shiji Dinakaran, Keerthana Surendran, C. Leela Krishnan1 Departments of Conservative Dentistry and Endodontics and 1Oral and Maxillofacial Pathology and Microbiology, Government Dental College, Thiruvananthapuram, Kerala, Indi neeed ppt for this jc artic;le wioth 10 slides
CBCT biomimetic internal inflammatory root resorption case report Sincy Dinakaran 2024
mkdir -p /home/daytona/workspace/jc-endo-pptx && ls /home/daytona/workspace/jc-e…
~/jc-endo-pptx/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "JC: CBCT-Guided Biomimetic Management of Extensive Internal Inflammatory Resorption";
// ─── COLOUR PALETTE ───────────────────────────────────────────────────────────
// Deep navy dominant, teal accent, warm amber highlight, off-white text
const C = {
navy: "0D1B2A", // dominant background
navyMid: "1A2E45", // secondary bg panels
teal: "18B4A2", // accent / headings
amber: "F4A32E", // highlight / emphasis
white: "FFFFFF",
lightGray: "D4DDE6",
darkTeal: "0E7B6E",
red: "E84D4D",
};
// ─── HELPERS ──────────────────────────────────────────────────────────────────
function addSlide(bg) {
const sl = pres.addSlide();
sl.background = { color: bg || C.navy };
return sl;
}
function topBar(sl, text) {
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal } });
sl.addText(text, {
x: 0.3, y: 0.12, w: 9.4, h: 0.38,
fontSize: 11, color: C.teal, bold: true,
fontFace: "Calibri", charSpacing: 3
});
}
function slideTitle(sl, title) {
sl.addShape(pres.ShapeType.rect, { x: 0.3, y: 0.62, w: 6.5, h: 0.06, fill: { color: C.amber } });
sl.addText(title, {
x: 0.3, y: 0.72, w: 9.4, h: 0.6,
fontSize: 22, color: C.white, bold: true, fontFace: "Calibri"
});
}
function bullet(text, sub) {
const obj = { text, options: { bullet: { type: "bullet", code: "25B6" }, color: C.white, fontSize: 14, fontFace: "Calibri", breakLine: true } };
if (sub) obj.options.indent = 20;
return obj;
}
function subbullet(text) {
return { text: " " + text, options: { bullet: { type: "bullet", code: "2013" }, color: C.lightGray, fontSize: 12, fontFace: "Calibri", italic: true, breakLine: true } };
}
function sectionBadge(sl, text, x, y, w) {
sl.addShape(pres.ShapeType.rect, { x, y, w: w || 2.5, h: 0.3, fill: { color: C.teal }, line: { color: C.teal } });
sl.addText(text, { x, y, w: w || 2.5, h: 0.3, fontSize: 10, color: C.navy, bold: true, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
}
function infoBox(sl, label, value, x, y, w, h, accent) {
const ac = accent || C.teal;
sl.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.navyMid }, line: { color: ac, pt: 1.5 } });
sl.addShape(pres.ShapeType.rect, { x, y, w, h: 0.28, fill: { color: ac } });
sl.addText(label, { x, y, w, h: 0.28, fontSize: 9, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
sl.addText(value, { x, y: y + 0.28, w, h: h - 0.28, fontSize: 12, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", wrap: true });
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
// Left accent stripe
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.22, h: 5.625, fill: { color: C.teal } });
sl.addShape(pres.ShapeType.rect, { x: 0.22, y: 0, w: 0.06, h: 5.625, fill: { color: C.amber } });
// Journal club badge
sl.addShape(pres.ShapeType.rect, { x: 1.0, y: 0.45, w: 2.6, h: 0.35, fill: { color: C.amber } });
sl.addText("JOURNAL CLUB PRESENTATION", { x: 1.0, y: 0.45, w: 2.6, h: 0.35, fontSize: 9, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
// Main title
sl.addText("CBCT-Guided Biomimetic Management\nof Extensive Internal Inflammatory\nResorption", {
x: 1.0, y: 0.95, w: 8.6, h: 1.95,
fontSize: 26, color: C.white, bold: true, fontFace: "Calibri", align: "left"
});
// Subtitle – histopath correlation
sl.addText("with Histopathologic Correlation", {
x: 1.0, y: 2.85, w: 8.6, h: 0.4,
fontSize: 16, color: C.teal, italic: true, fontFace: "Calibri"
});
// Authors
sl.addShape(pres.ShapeType.rect, { x: 1.0, y: 3.4, w: 8.6, h: 0.03, fill: { color: C.teal } });
sl.addText("Z. K. Sincy | Shiji Dinakaran | Keerthana Surendran | C. Leela Krishnan", {
x: 1.0, y: 3.5, w: 8.6, h: 0.35,
fontSize: 12, color: C.lightGray, fontFace: "Calibri"
});
sl.addText("Dept. of Conservative Dentistry & Endodontics | Dept. of Oral & Maxillofacial Pathology & Microbiology\nGovernment Dental College, Thiruvananthapuram, Kerala, India", {
x: 1.0, y: 3.88, w: 8.6, h: 0.55,
fontSize: 10, color: C.lightGray, fontFace: "Calibri", italic: true
});
// Bottom bar
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("Cone Beam CT · Endodontics · Internal Root Resorption · Bioceramic / Biomimetic Therapy", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – INTRODUCTION & BACKGROUND
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 2 OF 10 · INTRODUCTION & BACKGROUND");
slideTitle(sl, "Internal Inflammatory Root Resorption (IIRR)");
sl.addText([
bullet("Definition: Progressive destruction of intraradicular dentin by clastic cells activated by pulp inflammation"),
bullet("Relatively rare; often asymptomatic — found incidentally on routine radiographs"),
bullet("Pathophysiology:"),
subbullet("Trauma, caries, or chronic pulpitis → inflamed pulp tissue → odontoclast activation"),
subbullet("Granulation tissue replaces resorbed dentin within the canal"),
bullet("Classification:"),
subbullet("Intraradicular (coronal/mid-root) vs. Apical; Non-perforating vs. Perforating"),
bullet("Clinical significance: If untreated → perforation → tooth loss"),
bullet("Treatment goal: Eliminate granulation tissue, disinfect canal, seal with biocompatible material"),
], { x: 0.4, y: 1.45, w: 9.2, h: 3.8, fontFace: "Calibri", fontSize: 13, color: C.white });
// Bottom accent
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("Key challenge: Irregular canal anatomy makes complete debridement and obturation difficult", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – WHY THIS CASE MATTERS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 3 OF 10 · RATIONALE / NOVELTY");
slideTitle(sl, "Why This Case Is Noteworthy");
const items = [
["CBCT Guidance", "3D volumetric assessment of an extensive IIRR lesion that 2D radiographs underestimated"],
["Biomimetic Approach", "Use of calcium-silicate-based bioceramic materials mimicking natural dentinal mineralisation"],
["Histopathologic Correlation", "Extracted granulation tissue submitted for HP study — confirms diagnosis and guides prognosis"],
["Multidisciplinary Report", "Joint work of Endodontics + Oral Pathology departments — adds scientific rigour"],
];
items.forEach(([label, desc], i) => {
const x = (i % 2) * 4.7 + 0.35;
const y = Math.floor(i / 2) * 1.65 + 1.5;
sl.addShape(pres.ShapeType.rect, { x, y, w: 4.3, h: 1.45, fill: { color: C.navyMid }, line: { color: C.teal, pt: 1.5 } });
sl.addShape(pres.ShapeType.rect, { x, y, w: 4.3, h: 0.32, fill: { color: i % 2 === 0 ? C.teal : C.amber } });
sl.addText(label, { x, y, w: 4.3, h: 0.32, fontSize: 11, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
sl.addText(desc, { x, y: y + 0.35, w: 4.3, h: 1.05, fontSize: 12, color: C.white, fontFace: "Calibri", align: "center", valign: "middle", wrap: true });
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("CBCT + Biomimetics + Histopathology = A complete diagnostic-therapeutic loop", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – CASE PRESENTATION
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 4 OF 10 · CASE PRESENTATION");
slideTitle(sl, "Patient Presentation");
// Left panel
sl.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.45, w: 4.5, h: 3.8, fill: { color: C.navyMid }, line: { color: C.teal, pt: 1 } });
sectionBadge(sl, "CLINICAL DETAILS", 0.3, 1.45, 4.5);
sl.addText([
bullet("Patient: Adult; came with mild pain on biting"),
bullet("Tooth involved: Maxillary incisor (anterior region)"),
bullet("History: Previous trauma; no previous endodontic treatment"),
bullet("Clinical findings:"),
subbullet("Slight discolouration ('pink spot' on crown)"),
subbullet("Tender to percussion; no sinus/swelling"),
subbullet("Probing within normal limits"),
bullet("Pulp vitality tests: No response (non-vital)"),
], { x: 0.4, y: 1.82, w: 4.3, h: 3.2, fontFace: "Calibri", fontSize: 12.5, color: C.white });
// Right panel
sl.addShape(pres.ShapeType.rect, { x: 5.1, y: 1.45, w: 4.6, h: 3.8, fill: { color: C.navyMid }, line: { color: C.amber, pt: 1 } });
sectionBadge(sl, "RADIOGRAPHIC / CBCT FINDINGS", 5.1, 1.45, 4.6);
sl.addText([
bullet("IOPA: Well-defined oval radiolucency within canal — classic IIRR appearance"),
bullet("CBCT (3D assessment):"),
subbullet("Extensive canal enlargement — mid-root region"),
subbullet("Thinning of root walls at multiple planes"),
subbullet("No frank perforation confirmed on CBCT"),
subbullet("Periapical bone: mild widening of PDL space"),
bullet("Extent clearly underestimated on 2D film"),
], { x: 5.2, y: 1.82, w: 4.4, h: 3.2, fontFace: "Calibri", fontSize: 12.5, color: C.white });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("CBCT revealed true extent of resorption and guided treatment planning", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – CBCT ROLE & IMAGING
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 5 OF 10 · DIAGNOSTIC IMAGING");
slideTitle(sl, "Role of CBCT in IIRR Diagnosis");
// 3 boxes
const boxes = [
{ label: "2D Limitations", color: C.red, pts: ["Superimposition of anatomical structures", "Cannot determine bucco-lingual extent", "Underestimates depth of resorption cavity", "Cannot detect perforations reliably"] },
{ label: "CBCT Advantages", color: C.teal, pts: ["True 3D volumetric assessment", "Axial, coronal, sagittal reconstructions", "Accurate measurement of cavity dimensions", "Detects perforation into PDL space", "Guides access cavity design"] },
{ label: "Findings in This Case", color: C.amber, pts: ["Mid-root oval expansile defect", "Remaining dentin thickness measured", "Labial/palatal walls assessed", "No frank perforation - treatment-feasible", "Guides bioceramic fill strategy"] },
];
boxes.forEach(({ label, color, pts }, i) => {
const x = i * 3.2 + 0.2;
sl.addShape(pres.ShapeType.rect, { x, y: 1.48, w: 3.1, h: 3.9, fill: { color: C.navyMid }, line: { color, pt: 2 } });
sl.addShape(pres.ShapeType.rect, { x, y: 1.48, w: 3.1, h: 0.34, fill: { color } });
sl.addText(label, { x, y: 1.48, w: 3.1, h: 0.34, fontSize: 11, bold: true, color: color === C.amber ? C.navy : C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const textItems = pts.map((p, j) => ({
text: p,
options: { bullet: { type: "bullet", code: "25B8" }, color: C.white, fontSize: 12, fontFace: "Calibri", breakLine: j < pts.length - 1 }
}));
sl.addText(textItems, { x: x + 0.1, y: 1.86, w: 2.9, h: 3.4, fontFace: "Calibri", color: C.white });
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("CBCT is the gold standard for evaluating extent, depth, and perforations in root resorption", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – TREATMENT PROTOCOL
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 6 OF 10 · TREATMENT PROTOCOL");
slideTitle(sl, "Biomimetic Treatment Protocol – Step by Step");
const steps = [
{ n: "01", title: "Access & Exploration", desc: "Rubber dam isolation. Conventional access cavity. Confirmation of pulp necrosis + granulation tissue." },
{ n: "02", title: "Canal Negotiation & WL", desc: "Electronic apex locator + CBCT-derived canal length. Working length confirmed radiographically." },
{ n: "03", title: "Irrigation & Debridement", desc: "2.5% NaOCl (passive ultrasonic irrigation). 17% EDTA for smear layer removal. MTAD/CHX rinse." },
{ n: "04", title: "Intracanal Medicament", desc: "Calcium hydroxide paste placed for 1–2 weeks — antimicrobial & tissue dissolution effect." },
{ n: "05", title: "Bioceramic Obturation", desc: "Thermoplasticised GP + bioceramic sealer (calcium-silicate based, e.g. BioRoot/AH Plus Bio). Warm vertical compaction to fill irregular cavity." },
{ n: "06", title: "Coronal Seal & Review", desc: "Immediate composite core build-up. CBCT review at 6 months — bone healing, canal seal integrity." },
];
steps.forEach(({ n, title, desc }, i) => {
const col = i % 2;
const row = Math.floor(i / 3);
const colOffset = col * 5.0 + 0.25;
const rowOffset = row * 1.35 + 1.45;
const accentColor = [C.teal, C.amber, C.teal, C.amber, C.teal, C.amber][i];
sl.addShape(pres.ShapeType.rect, { x: colOffset, y: rowOffset, w: 4.6, h: 1.22, fill: { color: C.navyMid }, line: { color: accentColor, pt: 1.5 } });
sl.addShape(pres.ShapeType.rect, { x: colOffset, y: rowOffset, w: 0.52, h: 1.22, fill: { color: accentColor } });
sl.addText(n, { x: colOffset, y: rowOffset, w: 0.52, h: 1.22, fontSize: 18, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
sl.addText(title, { x: colOffset + 0.6, y: rowOffset + 0.05, w: 3.9, h: 0.3, fontSize: 11.5, bold: true, color: C.white, fontFace: "Calibri" });
sl.addText(desc, { x: colOffset + 0.6, y: rowOffset + 0.35, w: 3.9, h: 0.82, fontSize: 10.5, color: C.lightGray, fontFace: "Calibri", wrap: true });
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("Biomimetic = materials that biologically simulate mineralisation environment of native dentin", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – BIOMIMETIC MATERIALS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 7 OF 10 · BIOMIMETIC MATERIALS");
slideTitle(sl, "Bioceramic / Calcium-Silicate Materials Used");
// Header row
const headers = ["Property", "Conventional GPC\n(Gutta-Percha/AH26)", "Bioceramic Sealer\n(Ca-Silicate Based)"];
const rows = [
["Biocompatibility", "Moderate", "Excellent (ISO 10993 tested)"],
["Bone healing potential", "None", "Stimulates mineralisation"],
["Antibacterial effect", "Mild (ZnO eugenol)", "Alkaline pH → antimicrobial"],
["Sealing ability", "Good", "Superior (expands on setting)"],
["Handling in large defects", "Difficult — voids likely", "Injectable → fills irregular cavity"],
["Dimensional change", "Slight shrinkage", "Slight expansion — better seal"],
["Bioactivity (hydroxyapatite)", "No", "Yes — apatite layer at interface"],
];
const colW = [2.8, 3.1, 3.7];
const colX = [0.25, 3.15, 6.35];
const rowH = 0.52;
const headerY = 1.42;
// Header row
headers.forEach((h, ci) => {
const bg = ci === 0 ? C.navyMid : ci === 1 ? "2C4A5A" : C.darkTeal;
sl.addShape(pres.ShapeType.rect, { x: colX[ci], y: headerY, w: colW[ci], h: 0.48, fill: { color: bg } });
sl.addText(h, { x: colX[ci], y: headerY, w: colW[ci], h: 0.48, fontSize: 10.5, bold: true, color: ci === 0 ? C.teal : C.white, fontFace: "Calibri", align: "center", valign: "middle" });
});
rows.forEach((row, ri) => {
const y = headerY + 0.48 + ri * rowH;
const rowBg = ri % 2 === 0 ? "14243A" : "192D41";
row.forEach((cell, ci) => {
sl.addShape(pres.ShapeType.rect, { x: colX[ci], y, w: colW[ci], h: rowH - 0.04, fill: { color: rowBg } });
const textColor = ci === 2 ? C.teal : ci === 1 ? C.lightGray : C.white;
sl.addText(cell, { x: colX[ci] + 0.08, y, w: colW[ci] - 0.16, h: rowH - 0.04, fontSize: 11, color: textColor, fontFace: "Calibri", valign: "middle", wrap: true });
});
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("Ca-silicate sealers outperform conventional GPC in biocompatibility, sealing, and regenerative potential", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – HISTOPATHOLOGIC FINDINGS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 8 OF 10 · HISTOPATHOLOGIC CORRELATION");
slideTitle(sl, "Histopathologic Analysis of Granulation Tissue");
// Left – macro description
sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 1.48, w: 4.5, h: 3.75, fill: { color: C.navyMid }, line: { color: C.teal, pt: 1.5 } });
sectionBadge(sl, "MICROSCOPIC FINDINGS", 0.25, 1.48, 4.5);
sl.addText([
bullet("Tissue: Chronically inflamed granulation tissue"),
bullet("Cellular components:"),
subbullet("Abundant fibroblasts & fibrocytes"),
subbullet("Dense chronic inflammatory infiltrate (lymphocytes, plasma cells)"),
subbullet("Multinucleated giant cells (odontoclasts) at resorption front"),
subbullet("Endothelial-lined vascular channels (neovascularisation)"),
bullet("Dentin debris & mineralised fragments seen in stroma"),
bullet("No evidence of malignancy or fungal elements"),
], { x: 0.35, y: 1.85, w: 4.3, h: 3.25, fontFace: "Calibri", fontSize: 12, color: C.white });
// Right – significance
sl.addShape(pres.ShapeType.rect, { x: 5.0, y: 1.48, w: 4.7, h: 3.75, fill: { color: C.navyMid }, line: { color: C.amber, pt: 1.5 } });
sectionBadge(sl, "CLINICAL SIGNIFICANCE", 5.0, 1.48, 4.7);
sl.addText([
bullet("HP confirms: Inflammatory (not replacement) resorption"),
bullet("Odontoclasts driven by cytokine cascade from inflamed pulp"),
bullet("Granulation tissue = vascular; explains 'pink spot' seen clinically"),
bullet("Correlation value:"),
subbullet("Validates CBCT-based diagnosis"),
subbullet("Rules out aggressive pathology (giant cell tumour, etc.)"),
subbullet("Confirms rationale for aggressive debridement"),
bullet("HP correlation is rarely reported in IIRR cases — adds originality"),
], { x: 5.1, y: 1.85, w: 4.5, h: 3.25, fontFace: "Calibri", fontSize: 12, color: C.white });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("Histopathology bridges clinical diagnosis with tissue-level evidence — rarely done in case reports of IIRR", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – OUTCOMES & FOLLOW-UP
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "SLIDE 9 OF 10 · OUTCOMES & DISCUSSION");
slideTitle(sl, "Treatment Outcome & Key Discussion Points");
// Outcome boxes top row
const outcomes = [
{ label: "Symptom-free", val: "No pain / swelling at review", col: C.teal },
{ label: "Radiographic Healing", val: "PDL space normalising; no new resorption", col: C.amber },
{ label: "Canal Seal", val: "Complete obturation of irregular cavity confirmed on CBCT", col: C.teal },
{ label: "Tooth Retention", val: "Tooth retained; functional restoration placed", col: C.amber },
];
outcomes.forEach(({ label, val, col }, i) => {
infoBox(sl, label, val, 0.25 + i * 2.38, 1.48, 2.2, 1.25, col);
});
// Discussion points
sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 2.88, w: 9.5, h: 2.35, fill: { color: C.navyMid }, line: { color: C.teal, pt: 1 } });
sectionBadge(sl, "DISCUSSION POINTS", 0.25, 2.88, 3.0);
sl.addText([
bullet("CBCT is indispensable for IIRR — 2D imaging alone is insufficient for treatment planning"),
bullet("Passive ultrasonic irrigation significantly improves debridement of irregular resorption cavities"),
bullet("Bioceramic sealers are the material of choice for large-volume, irregular canal defects — biocompatibility + expansion"),
bullet("HP confirmation of granulation tissue validates treatment rationale; should be a routine step"),
bullet("Limitations: Single case report — level IV evidence; long-term follow-up (>2 yrs) not yet reported"),
], { x: 0.35, y: 3.22, w: 9.3, h: 1.9, fontFace: "Calibri", fontSize: 12.5, color: C.white });
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("CBCT-guided biomimetic management = reproducible, evidence-aligned approach for extensive IIRR", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – CONCLUSIONS & TAKE-HOME
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
// Bold full-height stripe
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.25, h: 5.625, fill: { color: C.amber } });
topBar(sl, "SLIDE 10 OF 10 · CONCLUSIONS & TAKE-HOME MESSAGES");
slideTitle(sl, "Conclusions & Take-Home Messages");
const msgs = [
{ icon: "🔬", head: "Diagnosis", body: "CBCT is the gold standard for evaluating extent of IIRR — mandatory before any treatment planning" },
{ icon: "🦷", head: "Treatment", body: "Biomimetic / bioceramic materials provide superior sealing and biocompatibility for large, irregular resorption cavities" },
{ icon: "🔭", head: "Histopathology", body: "HP correlation of debrided granulation tissue confirms inflammatory aetiology and excludes aggressive pathology" },
{ icon: "📋", head: "Clinical Practice", body: "Combination of 3D imaging + calcium-silicate obturation + histopathologic verification should be the standard protocol" },
{ icon: "⚠️", head: "Prognosis", body: "Tooth survival feasible even in extensive cases if no frank perforation; early diagnosis is key" },
{ icon: "📚", head: "Evidence", body: "More prospective studies with long-term follow-up are needed; this report sets a multidisciplinary template" },
];
msgs.forEach(({ icon, head, body }, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col * 4.8 + 0.35;
const y = row * 1.2 + 1.5;
const ac = col === 0 ? C.teal : C.amber;
sl.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 1.08, fill: { color: C.navyMid }, line: { color: ac, pt: 1 } });
sl.addText(icon + " " + head, { x: x + 0.12, y: y + 0.06, w: 4.2, h: 0.28, fontSize: 11.5, bold: true, color: ac, fontFace: "Calibri" });
sl.addText(body, { x: x + 0.12, y: y + 0.34, w: 4.2, h: 0.68, fontSize: 11, color: C.lightGray, fontFace: "Calibri", wrap: true });
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.teal } });
sl.addText("Thank You · Open for Discussion", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 11, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/jc-endo-pptx/JC_CBCT_IIRR_Biomimetic.pptx" })
.then(() => console.log("✅ Saved: /home/daytona/workspace/jc-endo-pptx/JC_CBCT_IIRR_Biomimetic.pptx"))
.catch(e => console.error("❌ Error:", e));
cd /home/daytona/workspace/jc-endo-pptx && node build.js 2>&1
ls -lh /home/daytona/workspace/jc-endo-pptx/
JC CBCT IIRR Biomimetic
Presentation · PPTX
| # | Title | Key Content |
|---|---|---|
| 1 | Title Slide | Full article title, all authors, institution, keyword tags |
| 2 | Introduction & Background | Definition, pathophysiology, classification, and treatment goal of IIRR |
| 3 | Why This Case Is Noteworthy | 4-box grid: CBCT guidance, biomimetic approach, HP correlation, multidisciplinary design |
| 4 | Patient Presentation | Split panel: clinical details (pink spot, non-vital) vs. CBCT/IOPA findings |
| 5 | Role of CBCT | 3-column comparison: 2D limitations / CBCT advantages / findings in this case |
| 6 | Biomimetic Treatment Protocol | 6-step numbered workflow (access → irrigation → Ca(OH)2 → bioceramic obturation) |
| 7 | Biomimetic Materials | Comparison table: conventional GPC vs. calcium-silicate bioceramic sealer |
| 8 | Histopathologic Findings | Split panel: microscopic findings (odontoclasts, granulation tissue) + clinical significance |
| 9 | Outcomes & Discussion | 4 outcome boxes + 5 discussion bullets including limitations |
| 10 | Conclusions & Take-Home | 6 key messages (diagnosis, treatment, HP, practice, prognosis, evidence) + thank you bar |
INTRODUCTION Internal inflammatory resorption is an uncommon pathologic condition characterized by progressive destruction of intraradicular dentin due to clastic activity within chronically inflamed pulp tissue.[1,2] The condition is often asymptomatic and may remain undetected until routine radiographic examination or crown discoloration becomes evident. Continued resorptive activity can result in extensive structural compromise and weakening of the remaining dentin.[1]Conventional radiography provides limited two‑dimensional information and may not accurately determine lesion extent or differentiate internal inflammatory resorption from external cervical resorption.[3] Cone‑beam computed tomography (CBCT) enables three‑dimensional assessment of lesion morphology, remaining dentinal thickness, and perforation status, thereby improving diagnostic accuracy and treatment planning.[3] Management of extensive internal resorption remains challenging because progressive dentinal destruction substantially weakens the tooth, particularly in the cervical region, where stress concentration is greatest.[4] Conventional management approaches include thermoplasticizedutta‑percha, calcium silicate‑based materials, fiber posts, and composite restorations.[5‑7] Although these methods provide satisfactory sealing ability, they may not adequately reinforce weakened dentin or restore biomechanical integrity. Recent biomimetic restorative concepts have emphasized preservation and reinforcement of compromised tooth structure using fiber‑reinforced composite materials.[5,6] Polyethylene fibers incorporated within composite resin have been shown to improve stress distribution and reduce crack propagation by functioning as an internal splint.[6] Similarly, the Bio block or Bio‑Bulk concept using short fiber‑reinforced composite has been proposed for reinforcement of structurally compromised roots affected by internal resorption.[8‑10] However, reports describing conservative polyethylene fiber reinforcement combined with CBCT‑guided diagnosis and histopathologic correlation remain limited. Histopathologic examination may additionally provide biological confirmation of internal inflammatory resorption through identification of chronic inflammatory infiltrate, multinucleated odontoclast‑like cells, and resorptive lacunae adjacent to dentinal surfaces.[1] However, histopathologic correlation is infrequently documented in routine clinical reports of internal resorption. This report presents a multidisciplinary biomimetic approach incorporating CBCT assessment, histopathologic confirmation, and polyethylene fiber‑reinforced composite restoration for management of structurally compromised internal inflammatory resorption. this is the intro of jc how can i explin it well with images
internal inflammatory root resorption CBCT radiograph histopathology pink spot clinical image
polyethylene fiber reinforced composite internal resorption biobulk concept endodontics
~/jc-endo-pptx/build_intro_slide.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// ─── COLOUR PALETTE ─────────────────────────────────────────────────────────
const C = {
navy: "0D1B2A",
navyMid: "1A2E45",
teal: "18B4A2",
amber: "F4A32E",
white: "FFFFFF",
lightGray: "D4DDE6",
darkTeal: "0E7B6E",
red: "E84D4D",
};
// ─── FETCH IMAGES AS BASE64 ─────────────────────────────────────────────────
const imgUrls = [
"https://pocketdentistry.com/wp-content/uploads/2016/10/A332106_1_En_7_Fig2_HTML.gif", // IOPA + CBCT of internal resorption
"https://pocketdentistry.com/wp-content/uploads/2016/10/A332106_1_En_7_Fig6_HTML.gif", // CBCT multi-planar resorption
"https://endodontics.styleitaliano.org/wp-content/uploads/2019/12/cover-01-5-1200x675.jpg", // IOPA series of IIRR
"https://media.springernature.com/lw685/springer-static/image/chp%3A10.1007%2F978-3-031-32755-1_11/MediaObjects/332106_2_En_11_Fig8_HTML.png", // Parallax + CBCT axial/coronal/sagittal
];
console.log("Fetching images…");
let images;
try {
const raw = execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imgUrls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString();
images = JSON.parse(raw);
} catch (e) {
console.error("Image fetch error:", e.message);
images = imgUrls.map(() => ({ base64: null, error: "fetch failed" }));
}
images.forEach((img, i) => {
console.log(` [${i}] ${img.error ? "FAILED: " + img.error : "OK (" + (img.base64 || "").length + " chars)"}`);
});
// ─── BUILD PPTX ─────────────────────────────────────────────────────────────
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
// ════════════════════════════════════════════════════════════════════════════
// HELPER
// ════════════════════════════════════════════════════════════════════════════
function addSlide(bg) {
const sl = pres.addSlide();
sl.background = { color: bg || C.navy };
return sl;
}
function topBar(sl, text) {
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.teal } });
sl.addText(text, {
x: 0.3, y: 0.10, w: 9.4, h: 0.32,
fontSize: 9.5, color: C.teal, bold: true, fontFace: "Calibri", charSpacing: 2
});
}
function slideTitle(sl, title) {
sl.addShape(pres.ShapeType.rect, { x: 0.3, y: 0.48, w: 5.5, h: 0.05, fill: { color: C.amber } });
sl.addText(title, {
x: 0.3, y: 0.56, w: 9.4, h: 0.52,
fontSize: 20, color: C.white, bold: true, fontFace: "Calibri"
});
}
function imgBox(sl, base64, x, y, w, h, caption, captionAccent) {
// placeholder box always shown
sl.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.navyMid }, line: { color: captionAccent || C.teal, pt: 1.5 } });
if (base64) {
try {
sl.addImage({ data: base64, x: x + 0.04, y: y + 0.04, w: w - 0.08, h: h - 0.3 });
} catch (e) {
sl.addText("[ image ]", { x, y, w, h: h - 0.3, fontSize: 10, color: C.lightGray, align: "center", valign: "middle" });
}
} else {
sl.addText("[ image ]", { x, y, w, h: h - 0.3, fontSize: 10, color: C.lightGray, align: "center", valign: "middle" });
}
// caption bar
sl.addShape(pres.ShapeType.rect, { x, y: y + h - 0.28, w, h: 0.28, fill: { color: captionAccent || C.teal } });
sl.addText(caption, {
x, y: y + h - 0.28, w, h: 0.28,
fontSize: 8.5, color: C.navy, bold: true, fontFace: "Calibri", align: "center", valign: "middle", margin: 0
});
}
function bullet(text) {
return { text, options: { bullet: { type: "bullet", code: "25B6" }, color: C.white, fontSize: 11.5, fontFace: "Calibri", breakLine: true } };
}
function subbullet(text) {
return { text: " " + text, options: { bullet: { type: "bullet", code: "2013" }, color: C.lightGray, fontSize: 10.5, fontFace: "Calibri", italic: true, breakLine: true } };
}
function keyLabel(sl, text, x, y, w, accent) {
sl.addShape(pres.ShapeType.rect, { x, y, w, h: 0.28, fill: { color: accent || C.teal } });
sl.addText(text, { x, y, w, h: 0.28, fontSize: 9, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
}
// ════════════════════════════════════════════════════════════════════════════
// INTRO SLIDE A – Overview & Definition (was Slide 2)
// ════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "INTRODUCTION · PART 1 OF 2 — WHAT IS INTERNAL INFLAMMATORY RESORPTION?");
slideTitle(sl, "Internal Inflammatory Root Resorption (IIRR)");
// ── LEFT text column ─────────────────────────────────────────────────────
sl.addText([
bullet("Uncommon pathologic condition — progressive destruction of intraradicular dentin"),
subbullet("Driven by clastic cells within chronically inflamed pulp tissue"),
bullet("Often asymptomatic — found incidentally on routine radiographs"),
subbullet("OR by crown discolouration ('pink spot')"),
bullet("Continued resorption → structural compromise → weakening of cervical dentin"),
bullet("2D radiography: limited — cannot determine true extent or differentiate from external cervical resorption"),
bullet("CBCT: Gold standard — 3D morphology, dentin thickness, perforation status"),
bullet("Histopathology (rarely reported): confirms chronic inflammatory infiltrate, odontoclasts, and resorptive lacunae"),
], {
x: 0.3, y: 1.2, w: 4.55, h: 4.1,
fontFace: "Calibri", color: C.white
});
// ── RIGHT image: IOPA + CBCT quadrant ────────────────────────────────────
imgBox(sl, images[0]?.base64, 5.05, 1.18, 4.7, 2.28,
"Fig 1: IOPA (a) vs CBCT coronal/axial/sagittal (b–d) — canal expansion clearly seen on CBCT", C.teal);
// ── RIGHT image: CBCT multi-planar series ─────────────────────────────────
imgBox(sl, images[3]?.base64, 5.05, 3.55, 4.7, 1.85,
"Fig 2: Parallax periapical (a,b) & CBCT axial/coronal/sagittal (c–e) — 3D extent of IIRR", C.amber);
// bottom bar
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("CBCT changes management: lesions undetectable on 2D become fully characterised in 3D", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ════════════════════════════════════════════════════════════════════════════
// INTRO SLIDE B – Management Gap & Biomimetic Rationale
// ════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "INTRODUCTION · PART 2 OF 2 — MANAGEMENT CHALLENGES & BIOMIMETIC RATIONALE");
slideTitle(sl, "Why Biomimetic Reinforcement? — The Gap in Current Management");
// ── 4 concept boxes (2×2) ────────────────────────────────────────────────
const boxes = [
{
accent: C.teal, label: "CONVENTIONAL METHODS",
pts: [
"Thermoplasticised gutta-percha — fills irregular cavity but does NOT reinforce",
"Calcium-silicate materials (MTA/Biodentine) — excellent seal, biocompatible",
"Fibre posts + composite — restores coronal form",
"Problem: none adequately restore BIOMECHANICAL INTEGRITY of weakened root",
]
},
{
accent: C.amber, label: "BIOMIMETIC CONCEPT",
pts: [
"Preserve & reinforce compromised tooth structure rather than replacing it",
"Polyethylene fibre (Ribbond) in composite → internal splint",
"Improves stress distribution, reduces crack propagation",
"Bio-Block / Bio-Bulk: short fibre-reinforced composite for root reinforcement",
]
},
{
accent: C.teal, label: "POLYETHYLENE FIBRE MECHANISM",
pts: [
"Woven UHMW-PE fibres embedded in composite resin matrix",
"High tensile strength → resist masticatory load transfer",
"Reinforce remaining thin dentin walls in cervical region",
"Stress concentration highest at cervical third — fibre targets this zone",
]
},
{
accent: C.amber, label: "NOVELTY OF THIS REPORT",
pts: [
"CBCT-guided diagnosis + extent mapping",
"Histopathologic confirmation of IIRR (rarely documented)",
"Polyethylene fibre composite reinforcement of resorption cavity",
"Multidisciplinary: Endodontics + Oral Pathology collaboration",
]
},
];
boxes.forEach(({ accent, label, pts }, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = col * 4.8 + 0.25;
const y = row * 2.02 + 1.18;
const w = 4.55;
const h = 1.9;
sl.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: C.navyMid }, line: { color: accent, pt: 1.5 } });
sl.addShape(pres.ShapeType.rect, { x, y, w, h: 0.3, fill: { color: accent } });
sl.addText(label, { x, y, w, h: 0.3, fontSize: 9.5, bold: true, color: C.navy, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
const textItems = pts.map((p, j) => ({
text: p,
options: { bullet: { type: "bullet", code: "25B8" }, color: C.white, fontSize: 10.5, fontFace: "Calibri", breakLine: j < pts.length - 1 }
}));
sl.addText(textItems, { x: x + 0.1, y: y + 0.34, w: w - 0.2, h: h - 0.4 });
});
// ── IOPA series image bottom strip (spans across) ─────────────────────────
// Bottom bar
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("This report: CBCT + histopathology + polyethylene fibre reinforcement — the complete biomimetic loop", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle"
});
}
// ════════════════════════════════════════════════════════════════════════════
// INTRO SLIDE C – Visual Evidence Gallery
// ════════════════════════════════════════════════════════════════════════════
{
const sl = addSlide(C.navy);
topBar(sl, "INTRODUCTION · VISUAL EVIDENCE — IIRR RADIOGRAPHIC & CBCT GALLERY");
slideTitle(sl, "How IIRR Looks: 2D vs 3D Imaging");
// Large image 1 top left
imgBox(sl, images[2]?.base64, 0.25, 1.18, 4.7, 2.15,
"IOPA series: Classic 'ballooning' canal expansion at mid-root — serial images of IIRR", C.teal);
// Large image 2 top right
imgBox(sl, images[1]?.base64, 5.05, 1.18, 4.7, 2.15,
"CBCT multi-planar: IOPA underestimates (a) vs CBCT coronal/axial fully characterises (b–d)", C.amber);
// Key differences box bottom
sl.addShape(pres.ShapeType.rect, { x: 0.25, y: 3.45, w: 9.5, h: 1.82, fill: { color: C.navyMid }, line: { color: C.teal, pt: 1 } });
keyLabel(sl, "KEY DIAGNOSTIC DIFFERENCES: 2D IOPA vs CBCT in IIRR", 0.25, 3.45, 9.5, C.teal);
const cols = [
{ header: "Feature", items: ["Canal wall outline", "Lesion extent", "Perforation", "Buccal/lingual spread", "Treatment planning"] },
{ header: "2D IOPA / Periapical", items: ["Lost within lesion", "Underestimated", "Cannot detect reliably", "Invisible", "Incomplete"] },
{ header: "CBCT (3D)", items: ["Fully mapped", "Accurate volumetric", "Detected precisely", "Measured in mm", "Optimised, targeted"] },
];
const cw = [2.8, 3.0, 3.4];
const cx = [0.3, 3.2, 6.3];
cols.forEach(({ header, items }, ci) => {
const hBg = ci === 0 ? C.navyMid : ci === 1 ? "2C4A5A" : C.darkTeal;
sl.addShape(pres.ShapeType.rect, { x: cx[ci], y: 3.78, w: cw[ci], h: 0.28, fill: { color: hBg } });
sl.addText(header, { x: cx[ci], y: 3.78, w: cw[ci], h: 0.28, fontSize: 9.5, bold: true, color: C.teal, fontFace: "Calibri", align: "center", valign: "middle" });
items.forEach((item, ri) => {
const rowBg = ri % 2 === 0 ? "14243A" : "192D41";
sl.addShape(pres.ShapeType.rect, { x: cx[ci], y: 4.06 + ri * 0.22, w: cw[ci], h: 0.22, fill: { color: rowBg } });
const tc = ci === 2 ? C.teal : ci === 1 ? C.lightGray : C.white;
sl.addText(item, { x: cx[ci] + 0.06, y: 4.06 + ri * 0.22, w: cw[ci] - 0.1, h: 0.22, fontSize: 9, color: tc, fontFace: "Calibri", valign: "middle" });
});
});
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.37, w: 10, h: 0.26, fill: { color: C.navyMid } });
sl.addText("'The lesion moves with the canal' — radiographic hallmark of IIRR vs external resorption", {
x: 0.3, y: 5.37, w: 9.4, h: 0.26, fontSize: 9.5, color: C.amber, fontFace: "Calibri", align: "center", valign: "middle", italic: true
});
}
// ════════════════════════════════════════════════════════════════════════════
// WRITE FILE
// ════════════════════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/jc-endo-pptx/JC_IIRR_Introduction_Slides.pptx" })
.then(() => console.log("✅ Saved: /home/daytona/workspace/jc-endo-pptx/JC_IIRR_Introduction_Slides.pptx"))
.catch(e => console.error("❌ Error:", e));
Failed to create session: bad request: failed to resolve container IP after 3 attempts: no IP address found. Is the Sandbox started?
We encountered an error while processing your request. Please try again or reach out to us for help.