Dental plaque hypothesis for 5 marks bds final year exam notes
dental plaque hypothesis nonspecific specific ecological BDS final year notes
https://periobasics.com/critical-analysis-of-various-plaque-…

| Complex | Bacteria | Association |
|---|---|---|
| Red | P. gingivalis, T. denticola, T. forsythia | Strongly disease-associated |
| Orange | Fusobacterium, Prevotella intermedia | Bridge between early and red complex |
| Yellow/Green/Purple | S. sanguis, Capnocytophaga | Early colonizers, health-associated |
| Hypothesis | Key Concept | Treatment Focus | Limitation |
|---|---|---|---|
| Non-specific | All plaque is harmful | Mechanical removal | Ignores individual susceptibility |
| Specific | Only select bacteria cause disease | Targeted antibiotics | Bacteria present without disease |
| Ecological | Dysbiosis / environmental shift | Restore balance | Difficult to quantify ecological shifts |
| Keystone pathogen | Low-abundance bacteria drive dysbiosis | Disrupt keystone | Any species can be a keystone |
Generate a comparison table (PPT) of all four hypotheses easy to understand
mkdir -p /home/daytona/workspace/dental-plaque-ppt && ls /home/daytona/workspace…
~/dental-plaque-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "Dental Plaque Hypotheses";
pres.author = "BDS Final Year";
// ─── PALETTE ───────────────────────────────────────────────────────────────
const C = {
navy: "0F2D4A", // dominant dark
teal: "0D7377", // accent 1
sky: "14A9AD", // accent 2
mint: "32E0C4", // highlight
cream: "F5F5F0", // slide bg
white: "FFFFFF",
gray: "64748B",
lgray: "E2E8F0",
// hypothesis colours
h1: "E74C3C", // Non-specific – red
h2: "2980B9", // Specific – blue
h3: "27AE60", // Ecological – green
h4: "8E44AD", // Keystone – purple
h1l: "FADBD8",
h2l: "D6EAF8",
h3l: "D5F5E3",
h4l: "E8DAEF",
};
// ─── HELPERS ────────────────────────────────────────────────────────────────
function titleSlide(pres, C) {
const s = pres.addSlide();
// full dark background
s.background = { color: C.navy };
// top accent bar
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.18, fill: { color: C.mint }, line: { color: C.mint } });
// big title
s.addText("DENTAL PLAQUE\nHYPOTHESES", {
x: 0.8, y: 1.2, w: 11.7, h: 2.4,
fontSize: 52, bold: true, color: C.white,
fontFace: "Calibri", align: "center", valign: "middle",
charSpacing: 3,
});
// subtitle
s.addText("A Comparative Overview for BDS Final Year", {
x: 0.8, y: 3.5, w: 11.7, h: 0.6,
fontSize: 20, color: C.mint, fontFace: "Calibri", align: "center",
});
// four coloured dots representing 4 hypotheses
const dots = [C.h1, C.h2, C.h3, C.h4];
const labels = ["Non-Specific", "Specific", "Ecological", "Keystone Pathogen"];
dots.forEach((col, i) => {
const cx = 2.5 + i * 2.2;
s.addShape(pres.shapes.OVAL, { x: cx, y: 4.5, w: 0.35, h: 0.35, fill: { color: col }, line: { color: col } });
s.addText(labels[i], { x: cx - 0.4, y: 4.95, w: 1.2, h: 0.3, fontSize: 9, color: C.lgray, align: "center" });
});
// bottom bar
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 7.3, w: 13.3, h: 0.2, fill: { color: C.teal }, line: { color: C.teal } });
}
// Slide 2 – Overview / what is plaque
function overviewSlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.cream };
// heading bar
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.navy }, line: { color: C.navy } });
s.addText("What is Dental Plaque?", {
x: 0.4, y: 0, w: 12.5, h: 0.85,
fontSize: 24, bold: true, color: C.white, valign: "middle",
});
// definition box
s.addShape(pres.shapes.RECTANGLE, {
x: 0.4, y: 1.1, w: 12.5, h: 1.15,
fill: { color: C.navy }, line: { color: C.navy },
shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.12 },
});
s.addText([
{ text: "DEFINITION: ", options: { bold: true, color: C.mint } },
{ text: "An adherent deposit on the tooth surface composed almost entirely of bacteria from normal oral flora. Dental plaque is the most prevalent and densest human biofilm.", options: { color: C.white } },
], { x: 0.6, y: 1.15, w: 12.1, h: 1.05, fontSize: 13, valign: "middle" });
// stages row – 4 boxes
const stages = [
{ n: "1", title: "Pellicle\nFormation", body: "Salivary proteins coat\nthe tooth surface" },
{ n: "2", title: "Early\nColonizers", body: "Gram +ve aerobes\nStreptococci, Actinomyces\n(0-2 days)" },
{ n: "3", title: "Late\nColonizers", body: "Gram −ve anaerobes\nP. gingivalis, Treponema\n(2-4 days +)" },
{ n: "4", title: "Mature\nBiofilm", body: "Glucan polymers bind\nbiofilm; 300-400 species\nin mature plaque" },
];
const cols = ["2980B9", "27AE60", "E74C3C", "8E44AD"];
stages.forEach((st, i) => {
const x = 0.4 + i * 3.15;
s.addShape(pres.shapes.RECTANGLE, { x, y: 2.55, w: 3.0, h: 4.55, fill: { color: C.white }, line: { color: cols[i], pt: 2 } });
s.addShape(pres.shapes.RECTANGLE, { x, y: 2.55, w: 3.0, h: 0.7, fill: { color: cols[i] }, line: { color: cols[i] } });
s.addText(st.n, { x, y: 2.55, w: 0.55, h: 0.7, fontSize: 20, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(st.title, { x: x + 0.55, y: 2.55, w: 2.45, h: 0.7, fontSize: 12, bold: true, color: C.white, valign: "middle" });
s.addText(st.body, { x: x + 0.15, y: 3.35, w: 2.7, h: 3.55, fontSize: 11.5, color: C.navy, valign: "top" });
});
}
// Slide 3 – Individual hypothesis cards (2x2 grid)
function fourCardsSlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.cream };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.navy }, line: { color: C.navy } });
s.addText("The Four Plaque Hypotheses – At a Glance", {
x: 0.4, y: 0, w: 12.5, h: 0.85, fontSize: 24, bold: true, color: C.white, valign: "middle",
});
const hyps = [
{
num: "01", name: "Non-Specific\nPlaque Hypothesis",
year: "1930s – 1976", col: C.h1, light: C.h1l,
icon: "⚠️",
who: "Loesche (1976)",
concept: "All plaque accumulation → disease\nQuantity of plaque drives severity",
bacteria: "ALL bacteria equally responsible",
treat: "Mechanical plaque removal\n(scaling + oral hygiene)",
limit: "Can't explain why some with\nheavy plaque stay disease-free",
},
{
num: "02", name: "Specific\nPlaque Hypothesis",
year: "1976", col: C.h2, light: C.h2l,
icon: "🎯",
who: "Loesche (1976)",
concept: "Only SELECT bacteria cause disease\nShift: Gram +ve → Gram −ve anaerobes",
bacteria: "P. gingivalis, T. denticola\nA. actinomycetemcomitans",
treat: "Targeted antimicrobial\ntherapy",
limit: "Pathogens can be present\nwithout causing disease",
},
{
num: "03", name: "Ecological\nPlaque Hypothesis",
year: "1994", col: C.h3, light: C.h3l,
icon: "🌿",
who: "Marsh (1994)",
concept: "Environmental changes → dysbiosis\nImbalance in microbial community",
bacteria: "Pathogens emerge from\nexisting flora under stress",
treat: "Restore ecological balance\n(control inflammation, pH)",
limit: "Difficult to quantify\necological shifts precisely",
},
{
num: "04", name: "Keystone Pathogen\nHypothesis",
year: "2012", col: C.h4, light: C.h4l,
icon: "🔑",
who: "Hajishengallis (2012)",
concept: "Low-abundance bacteria with\ndisproportionately LARGE impact",
bacteria: "P. gingivalis\n(subverts innate immunity)",
treat: "Target keystone pathogen\nto disrupt dysbiotic cascade",
limit: "Any species can be a\nkeystone; not always predictable",
},
];
const positions = [
{ x: 0.25, y: 1.0 },
{ x: 6.9, y: 1.0 },
{ x: 0.25, y: 4.05 },
{ x: 6.9, y: 4.05 },
];
hyps.forEach((h, i) => {
const { x, y } = positions[i];
const w = 6.3, cardH = 2.9;
// card background
s.addShape(pres.shapes.RECTANGLE, {
x, y, w, h: cardH,
fill: { color: C.white },
line: { color: h.col, pt: 2 },
shadow: { type: "outer", color: "000000", blur: 5, offset: 2, angle: 135, opacity: 0.1 },
});
// top colour bar
s.addShape(pres.shapes.RECTANGLE, { x, y, w, h: 0.55, fill: { color: h.col }, line: { color: h.col } });
// number badge
s.addShape(pres.shapes.OVAL, { x: x + 0.1, y: y + 0.1, w: 0.38, h: 0.38, fill: { color: C.white }, line: { color: C.white } });
s.addText(h.num, { x: x + 0.1, y: y + 0.1, w: 0.38, h: 0.38, fontSize: 9, bold: true, color: h.col, align: "center", valign: "middle" });
// title
s.addText(h.name, { x: x + 0.58, y, w: w - 0.7, h: 0.55, fontSize: 13, bold: true, color: C.white, valign: "middle" });
// year chip
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x + w - 1.1, y: y + 0.12, w: 0.95, h: 0.28, fill: { color: C.white }, line: { color: C.white }, rectRadius: 0.05 });
s.addText(h.year, { x: x + w - 1.1, y: y + 0.12, w: 0.95, h: 0.28, fontSize: 7.5, color: h.col, bold: true, align: "center", valign: "middle" });
// body rows
const rows = [
{ label: "Concept", val: h.concept },
{ label: "Key Bug", val: h.bacteria },
{ label: "Treatment", val: h.treat },
{ label: "Limitation", val: h.limit },
];
rows.forEach((r, ri) => {
const ry = y + 0.62 + ri * 0.55;
s.addShape(pres.shapes.RECTANGLE, { x, y: ry, w: 1.3, h: 0.52, fill: { color: h.light }, line: { color: h.light } });
s.addText(r.label.toUpperCase(), { x: x + 0.05, y: ry, w: 1.2, h: 0.52, fontSize: 8, bold: true, color: h.col, valign: "middle", align: "left" });
s.addText(r.val, { x: x + 1.35, y: ry, w: w - 1.45, h: 0.52, fontSize: 9.5, color: C.navy, valign: "middle" });
});
});
}
// Slide 4 – Big comparison TABLE
function comparisonTableSlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.cream };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.navy }, line: { color: C.navy } });
s.addText("Side-by-Side Comparison Table", {
x: 0.4, y: 0, w: 12.5, h: 0.85, fontSize: 24, bold: true, color: C.white, valign: "middle",
});
const hCols = [C.h1, C.h2, C.h3, C.h4];
const hNames = ["Non-Specific\n(1930s-1976)", "Specific\n(1976)", "Ecological\n(1994)", "Keystone Pathogen\n(2012)"];
const rows = [
["Criterion", "Non-Specific\n(1930s-1976)", "Specific\n(1976)", "Ecological\n(1994)", "Keystone Pathogen\n(2012)"],
["Core Idea", "All plaque causes disease by bulk accumulation", "Only select bacteria cause disease", "Ecological imbalance (dysbiosis) drives disease", "Low-abundance 'keystone' bugs hijack immunity"],
["Key Bacteria", "All oral flora equally", "P. gingivalis, T. denticola, A. actinomycetemcomitans", "Endogenous flora shift under stress", "P. gingivalis (prototype)"],
["Mechanism", "Bulk acid/toxin production by total plaque mass", "Shift Gram +ve → Gram −ve anaerobes; specific virulence", "Environmental stress → overgrowth of pathogens", "Subverts complement & TLR signalling → dysbiosis"],
["Treatment Focus", "Mechanical removal (scaling & oral hygiene)", "Targeted antibiotics vs. specific pathogens", "Restore balance: control pH & inflammation", "Disrupt keystone to collapse dysbiotic community"],
["Host Role", "Minimal (not considered)", "Minimal", "Acknowledged (immune status affects ecology)", "Central – immune disruption is the key event"],
["Strength", "Simple; explains gingivitis with plaque accumulation", "Explains site-specific & aggressive disease", "Explains why pathogens present without disease", "Explains low-abundance impact; modern dysbiosis model"],
["Limitation", "Ignores host variation & microbial specificity", "Pathogens present in healthy mouths too", "Hard to quantify ecological triggers", "Any species can be a keystone; not always predictable"],
["Current Status", "Largely abandoned", "Partially accepted", "Widely accepted – foundation of modern periodontology", "Most current; under active research"],
];
// column widths: criterion col wider
const colW = [2.3, 2.65, 2.65, 2.65, 2.65];
const tableData = rows.map((row, ri) => {
return row.map((cell, ci) => {
// header row
if (ri === 0) {
if (ci === 0) return { text: cell, options: { fill: { color: C.navy }, color: C.white, bold: true, fontSize: 11, align: "center", valign: "middle" } };
return { text: cell, options: { fill: { color: hCols[ci - 1] }, color: C.white, bold: true, fontSize: 10, align: "center", valign: "middle" } };
}
// criterion column
if (ci === 0) return { text: cell, options: { fill: { color: C.navy }, color: C.mint, bold: true, fontSize: 9.5, align: "left", valign: "middle" } };
// alternating row shading
const lightCols = [C.h1l, C.h2l, C.h3l, C.h4l];
const bg = ri % 2 === 0 ? lightCols[ci - 1] : C.white;
return { text: cell, options: { fill: { color: bg }, color: C.navy, fontSize: 9, align: "left", valign: "middle" } };
});
});
s.addTable(tableData, {
x: 0.15, y: 1.0, w: 12.95,
colW: colW,
rowH: 0.64,
border: { pt: 1, color: C.lgray },
autoPage: false,
});
}
// Slide 5 – Evolution timeline
function timelineSlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.teal }, line: { color: C.teal } });
s.addText("Evolution of Plaque Hypotheses – Timeline", {
x: 0.4, y: 0, w: 12.5, h: 0.85, fontSize: 24, bold: true, color: C.white, valign: "middle",
});
// horizontal timeline bar
s.addShape(pres.shapes.RECTANGLE, { x: 0.8, y: 3.4, w: 11.7, h: 0.1, fill: { color: C.mint }, line: { color: C.mint } });
const events = [
{ x: 1.0, year: "1930s", label: "Non-Specific\nPlaque Hypothesis", col: C.h1, desc: "All plaque =\nbad plaque" },
{ x: 4.1, year: "1976", label: "Specific\nPlaque Hypothesis", col: C.h2, desc: "Select bacteria\ncause disease" },
{ x: 7.2, year: "1994", label: "Ecological\nPlaque Hypothesis", col: C.h3, desc: "Dysbiosis /\nbalance shift" },
{ x: 10.3, year: "2012", label: "Keystone Pathogen\nHypothesis", col: C.h4, desc: "P. gingivalis\nhijacks immunity" },
];
events.forEach((ev, i) => {
// vertical stem
s.addShape(pres.shapes.RECTANGLE, { x: ev.x + 0.55, y: i % 2 === 0 ? 2.1 : 3.5, w: 0.04, h: i % 2 === 0 ? 1.3 : 1.3, fill: { color: ev.col }, line: { color: ev.col } });
// dot on line
s.addShape(pres.shapes.OVAL, { x: ev.x + 0.38, y: 3.24, w: 0.38, h: 0.38, fill: { color: ev.col }, line: { color: C.white, pt: 2 } });
// year
s.addText(ev.year, { x: ev.x, y: 3.62, w: 1.2, h: 0.35, fontSize: 13, bold: true, color: ev.col, align: "center" });
// card
const cardY = i % 2 === 0 ? 1.1 : 4.05;
s.addShape(pres.shapes.RECTANGLE, {
x: ev.x - 0.1, y: cardY, w: 2.5, h: 1.6,
fill: { color: "1A3A5C" }, line: { color: ev.col, pt: 2 },
});
s.addShape(pres.shapes.RECTANGLE, { x: ev.x - 0.1, y: cardY, w: 2.5, h: 0.42, fill: { color: ev.col }, line: { color: ev.col } });
s.addText(ev.label, { x: ev.x - 0.05, y: cardY, w: 2.4, h: 0.42, fontSize: 9.5, bold: true, color: C.white, valign: "middle", align: "center" });
s.addText(ev.desc, { x: ev.x - 0.05, y: cardY + 0.47, w: 2.4, h: 1.08, fontSize: 11, color: C.lgray, valign: "top", align: "center" });
});
// arrow at end of line
s.addShape(pres.shapes.RIGHT_ARROW, { x: 12.4, y: 3.28, w: 0.6, h: 0.28, fill: { color: C.mint }, line: { color: C.mint } });
s.addText("Present", { x: 12.2, y: 3.62, w: 1.0, h: 0.35, fontSize: 11, color: C.mint, align: "center" });
// footnote
s.addText("Each hypothesis built on — and refined — the previous one. Modern periodontology uses the Ecological + Keystone Pathogen frameworks.", {
x: 0.5, y: 7.0, w: 12.3, h: 0.38, fontSize: 10, color: C.lgray, align: "center", italic: true,
});
}
// Slide 6 – Socransky's Complexes
function socranskySlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.cream };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.navy }, line: { color: C.navy } });
s.addText("Socransky's Microbial Complexes (1998) – Related Concept", {
x: 0.4, y: 0, w: 12.5, h: 0.85, fontSize: 22, bold: true, color: C.white, valign: "middle",
});
s.addText("Socransky classified subgingival bacteria into colour-coded complexes based on disease association:", {
x: 0.5, y: 1.0, w: 12.3, h: 0.5, fontSize: 13, color: C.navy,
});
const complexes = [
{ col: "C0392B", name: "RED Complex", label: "Strongly Disease-Associated", bugs: ["Porphyromonas gingivalis", "Treponema denticola", "Tannerella forsythia"], note: "Always present in deep pockets and active disease" },
{ col: "E67E22", name: "ORANGE Complex", label: "Bridge – Early to Late Colonizers", bugs: ["Fusobacterium nucleatum", "Prevotella intermedia", "Peptostreptococcus micros"], note: "Paves the way for Red complex organisms" },
{ col: "F1C40F", name: "YELLOW Complex", label: "Health-Associated (Early)", bugs: ["Streptococcus sanguis", "S. mitis", "S. gordonii"], note: "Predominant in health; inhibit pathogens" },
{ col: "27AE60", name: "GREEN Complex", label: "Early Colonizers", bugs: ["Capnocytophaga spp.", "Aggregatibacter aphrophilus", "Eikenella corrodens"], note: "Attach to pellicle; co-aggregate with early streptococci" },
{ col: "2980B9", name: "PURPLE Complex", label: "Early Colonizers", bugs: ["Veillonella parvula", "Actinomyces odontolyticus"], note: "Found in both health and disease" },
];
complexes.forEach((cx, i) => {
const x = 0.3 + i * 2.55;
s.addShape(pres.shapes.RECTANGLE, {
x, y: 1.65, w: 2.4, h: 5.4,
fill: { color: C.white }, line: { color: cx.col, pt: 2 },
});
s.addShape(pres.shapes.RECTANGLE, { x, y: 1.65, w: 2.4, h: 0.75, fill: { color: cx.col }, line: { color: cx.col } });
s.addText(cx.name, { x, y: 1.65, w: 2.4, h: 0.45, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(cx.label, { x, y: 2.1, w: 2.4, h: 0.3, fontSize: 7.5, color: C.white, align: "center", italic: true });
// bacteria list
cx.bugs.forEach((b, bi) => {
s.addText("• " + b, { x: x + 0.1, y: 2.5 + bi * 0.55, w: 2.2, h: 0.5, fontSize: 9.5, color: C.navy, italic: true });
});
// note
s.addShape(pres.shapes.RECTANGLE, { x, y: 6.15, w: 2.4, h: 0.9, fill: { color: cx.col + "22" }, line: { color: cx.col } });
s.addText(cx.note, { x: x + 0.1, y: 6.2, w: 2.2, h: 0.8, fontSize: 8.5, color: C.navy, italic: true, valign: "middle" });
});
}
// Slide 7 – Exam Quick Recall
function examSlide(pres, C) {
const s = pres.addSlide();
s.background = { color: C.navy };
s.addShape(pres.shapes.RECTANGLE, { x: 0, y: 0, w: 13.3, h: 0.85, fill: { color: C.h4 }, line: { color: C.h4 } });
s.addText("⚡ Quick Recall – Exam Tips", {
x: 0.4, y: 0, w: 12.5, h: 0.85, fontSize: 24, bold: true, color: C.white, valign: "middle",
});
// 5-mark answer guide
s.addShape(pres.shapes.RECTANGLE, {
x: 0.3, y: 1.0, w: 5.9, h: 6.0,
fill: { color: "1A3A5C" }, line: { color: C.mint, pt: 2 },
});
s.addShape(pres.shapes.RECTANGLE, { x: 0.3, y: 1.0, w: 5.9, h: 0.5, fill: { color: C.mint }, line: { color: C.mint } });
s.addText("5-MARK ANSWER STRUCTURE", { x: 0.35, y: 1.0, w: 5.8, h: 0.5, fontSize: 12, bold: true, color: C.navy, valign: "middle", align: "center" });
const marks = [
"1 mark → Define dental plaque + biofilm stages",
"1 mark → Non-specific hypothesis + limitation",
"1 mark → Specific hypothesis + key bacteria (Red Complex)",
"1 mark → Ecological hypothesis (Marsh 1994) + dysbiosis",
"1 mark → Keystone pathogen hypothesis (P. gingivalis)",
];
marks.forEach((m, i) => {
s.addShape(pres.shapes.RECTANGLE, { x: 0.38, y: 1.6 + i * 0.82, w: 0.45, h: 0.45, fill: { color: C.mint }, line: { color: C.mint } });
s.addText(String(i + 1), { x: 0.38, y: 1.6 + i * 0.82, w: 0.45, h: 0.45, fontSize: 14, bold: true, color: C.navy, align: "center", valign: "middle" });
s.addText(m, { x: 0.9, y: 1.6 + i * 0.82, w: 5.1, h: 0.45, fontSize: 10.5, color: C.lgray, valign: "middle" });
});
// mnemonics box
s.addShape(pres.shapes.RECTANGLE, {
x: 6.5, y: 1.0, w: 6.5, h: 6.0,
fill: { color: "1A3A5C" }, line: { color: C.h1, pt: 2 },
});
s.addShape(pres.shapes.RECTANGLE, { x: 6.5, y: 1.0, w: 6.5, h: 0.5, fill: { color: C.h1 }, line: { color: C.h1 } });
s.addText("MNEMONICS & KEY FACTS", { x: 6.55, y: 1.0, w: 6.4, h: 0.5, fontSize: 12, bold: true, color: C.white, valign: "middle", align: "center" });
const mnemos = [
{ q: "Non-Specific", a: "\"All plaque is BAD plaque\" – no bacterial specificity" },
{ q: "Specific", a: "RED COMPLEX: P. gingivalis, T. denticola, T. forsythia" },
{ q: "Ecological", a: "MARSH 1994 – dysbiosis key word; ecological stress = disease" },
{ q: "Keystone", a: "HAJISHENGALLIS 2012 – P. gingivalis in low numbers → big damage" },
{ q: "Socransky", a: "Red > Orange > Yellow > Green > Purple (disease → health)" },
{ q: "Treatment", a: "NSH → scaling | SPH → antibiotics | EcoPH → restore balance" },
];
mnemos.forEach((mn, i) => {
const my = 1.65 + i * 0.82;
s.addShape(pres.shapes.RECTANGLE, { x: 6.55, y: my, w: 2.0, h: 0.45, fill: { color: C.h1 + "55" }, line: { color: C.h1 } });
s.addText(mn.q, { x: 6.6, y: my, w: 1.9, h: 0.45, fontSize: 9, bold: true, color: C.white, valign: "middle" });
s.addText(mn.a, { x: 8.6, y: my, w: 4.2, h: 0.45, fontSize: 9.5, color: C.lgray, valign: "middle" });
});
}
// ─── BUILD ──────────────────────────────────────────────────────────────────
titleSlide(pres, C);
overviewSlide(pres, C);
fourCardsSlide(pres, C);
comparisonTableSlide(pres, C);
timelineSlide(pres, C);
socranskySlide(pres, C);
examSlide(pres, C);
pres.writeFile({ fileName: "/home/daytona/workspace/dental-plaque-ppt/Dental_Plaque_Hypotheses.pptx" })
.then(() => console.log("PPT created successfully"))
.catch(err => console.error("Error:", err));
cd /home/daytona/workspace/dental-plaque-ppt && node build.js
~/dental-plaque-ppt/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/dental-plaque-ppt/build.js'
~/dental-plaque-ppt/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/dental-plaque-ppt/build.js'
cd /home/daytona/workspace/dental-plaque-ppt && node build.js 2>&1
Dental Plaque Hypotheses
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 - Title | Dark navy cover with four colour-coded hypothesis dots |
| 2 - What is Dental Plaque? | Definition box + 4 stages of plaque formation (with colour-coded columns) |
| 3 - Four Cards | 2×2 grid - one card per hypothesis, each showing: Concept / Key Bacteria / Treatment / Limitation |
| 4 - Comparison Table | Full side-by-side table across 8 criteria: Core Idea, Key Bacteria, Mechanism, Treatment, Host Role, Strength, Limitation, Current Status |
| 5 - Timeline | Visual evolution from 1930s → 2012, alternating above/below the timeline line |
| 6 - Socransky's Complexes | 5 colour-coded complex columns (Red, Orange, Yellow, Green, Purple) with bacteria listed |
| 7 - Exam Quick Recall | 5-mark answer structure on the left + mnemonics/key facts on the right |