Flexi A1 size .2/3image 1/3 content. Image should be high definition. Phenytoin -gingival hyperplasia adverse drug reactions.
phenytoin gingival hyperplasia high definition clinical photo image
mkdir -p /home/daytona/workspace/phenytoin-poster && ls /home/daytona/workspace/phenytoin-poster/
~/phenytoin-poster/build_poster.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// A1 size: 594mm x 841mm = 23.39" x 33.11"
const W = 23.39;
const H = 33.11;
// Layout split: left 2/3 = image, right 1/3 = content
const IMG_W = W * (2 / 3);
const CONT_X = IMG_W;
const CONT_W = W * (1 / 3);
// Fetch images as base64
const imageUrls = [
"https://cdn.orris.care/cdss_images/abd029579fd54ad3eecfb15d545e9c09f20c339fab47f65105ae0506633dea47.png",
"https://cdn.orris.care/cdss_images/019f8c7ed90b559619775b303f2921116d29b852af315cea447c7906c4c0d682.png"
];
console.log("Fetching images...");
const images = JSON.parse(
execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js "${imageUrls[0]}" "${imageUrls[1]}"`
).toString()
);
const mainImg = images[0];
const clinImg = images[1];
if (mainImg.error) throw new Error("Main image fetch failed: " + mainImg.error);
let pres = new pptxgen();
// Custom A1 layout (in inches)
pres.defineLayout({ name: "A1_PORTRAIT", width: W, height: H });
pres.layout = "A1_PORTRAIT";
let slide = pres.addSlide();
// ── BACKGROUND ──────────────────────────────────────────────────────────────
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: W, h: H,
fill: { color: "0D1B2A" }
});
// ── LEFT PANEL: IMAGE (2/3 width, full height) ───────────────────────────────
// Dark overlay strip between the two panels
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: IMG_W, h: H,
fill: { color: "000000" }
});
// Main clinical image - fills the entire left 2/3
slide.addImage({
data: mainImg.base64,
x: 0, y: 0, w: IMG_W, h: H,
sizing: { type: "contain", w: IMG_W, h: H }
});
// Image caption bar at the bottom of the image panel
slide.addShape(pres.ShapeType.rect, {
x: 0, y: H - 1.0, w: IMG_W, h: 1.0,
fill: { color: "000000", transparency: 30 }
});
slide.addText("Phenytoin-induced gingival hyperplasia — Lippincott Pharmacology (Fig. 19.9)", {
x: 0.2, y: H - 0.9, w: IMG_W - 0.4, h: 0.8,
fontSize: 14, color: "CCCCCC", italic: true, align: "center",
fontFace: "Calibri", valign: "middle"
});
// ── RIGHT PANEL: CONTENT (1/3 width) ─────────────────────────────────────────
// Right panel background
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: 0, w: CONT_W, h: H,
fill: { color: "0D1B2A" }
});
// Thin accent line between panels
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: 0, w: 0.08, h: H,
fill: { color: "E63946" }
});
const CX = CONT_X + 0.35;
const CW = CONT_W - 0.55;
// ── DRUG NAME ──
slide.addShape(pres.ShapeType.rect, {
x: CONT_X + 0.15, y: 0.5, w: CW + 0.2, h: 0.15,
fill: { color: "E63946" }
});
slide.addText("PHENYTOIN", {
x: CX, y: 0.7, w: CW, h: 1.4,
fontSize: 52, bold: true, color: "FFFFFF",
fontFace: "Calibri", align: "left", valign: "top"
});
// Drug class tag
slide.addShape(pres.ShapeType.rect, {
x: CX, y: 2.15, w: CW, h: 0.45,
fill: { color: "E63946", transparency: 15 },
line: { color: "E63946", width: 0 }
});
slide.addText("Antiepileptic Drug | Na⁺ Channel Blocker", {
x: CX, y: 2.15, w: CW, h: 0.45,
fontSize: 16, bold: true, color: "FFFFFF",
fontFace: "Calibri", align: "center", valign: "middle"
});
let y = 2.85;
const gap = 0.22;
// ── SECTION: Adverse Drug Reaction ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.5,
fill: { color: "E63946" }
});
slide.addText("ADVERSE DRUG REACTION", {
x: CX + 0.1, y: y + 0.03, w: CW - 0.2, h: 0.44,
fontSize: 18, bold: true, color: "FFFFFF",
fontFace: "Calibri", align: "left", valign: "middle"
});
y += 0.6;
slide.addText("Gingival Hyperplasia (Dilantin Hypertrophy)", {
x: CX, y, w: CW, h: 0.55,
fontSize: 20, bold: true, color: "F4A261",
fontFace: "Calibri", align: "left", valign: "top"
});
y += 0.65;
// ── SECTION: Incidence ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("INCIDENCE", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const incidenceText = [
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "~50% of phenytoin users develop some degree of gingival overgrowth\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "More common in patients under 25 years of age\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Begins as early as 1 month after drug initiation", options: { color: "E8E8E8" } }
];
slide.addText(incidenceText, {
x: CX, y, w: CW, h: 1.4,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.5;
// ── SECTION: Mechanism ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("PATHOPHYSIOLOGY", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const mechText = [
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Stimulates proliferation of gingival fibroblasts\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Increased collagen synthesis and reduced collagenase activity\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Accumulation of glycosaminoglycans in connective tissue\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Poor oral hygiene amplifies severity (bacterial plaque as cofactor)", options: { color: "E8E8E8" } }
];
slide.addText(mechText, {
x: CX, y, w: CW, h: 1.8,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.9;
// ── SECTION: Clinical Features ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("CLINICAL FEATURES", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const clinText = [
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Begins at interdental papillae, extends over teeth\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Firm, nodular/lobulated tissue, normal pink color (if non-inflamed)\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Inflamed tissue: red, edematous, friable, bleeds easily\n", options: { color: "E8E8E8" } },
{ text: "• ", options: { bold: true, color: "F4A261" } },
{ text: "Edentulous areas typically spared", options: { color: "E8E8E8" } }
];
slide.addText(clinText, {
x: CX, y, w: CW, h: 1.8,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.9;
// ── SECTION: Other ADRs (compact) ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("OTHER ADVERSE EFFECTS", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const otherADR = [
{ text: "CNS:", options: { bold: true, color: "F4A261" } },
{ text: " Nystagmus, ataxia, diplopia (dose-related)\n", options: { color: "E8E8E8" } },
{ text: "Dermal:", options: { bold: true, color: "F4A261" } },
{ text: " Steven-Johnson syndrome, hirsutism, coarsening of facial features\n", options: { color: "E8E8E8" } },
{ text: "Haematologic:", options: { bold: true, color: "F4A261" } },
{ text: " Megaloblastic anaemia, lymphadenopathy\n", options: { color: "E8E8E8" } },
{ text: "Metabolic:", options: { bold: true, color: "F4A261" } },
{ text: " Peripheral neuropathy, osteoporosis (long-term)\n", options: { color: "E8E8E8" } },
{ text: "Teratogenic:", options: { bold: true, color: "F4A261" } },
{ text: " Fetal hydantoin syndrome", options: { color: "E8E8E8" } }
];
slide.addText(otherADR, {
x: CX, y, w: CW, h: 2.3,
fontSize: 14.5, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 2.45;
// ── SECTION: Management ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("MANAGEMENT", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const mgmtText = [
{ text: "1. ", options: { bold: true, color: "F4A261" } },
{ text: "Rigorous oral hygiene - key to slow progression\n", options: { color: "E8E8E8" } },
{ text: "2. ", options: { bold: true, color: "F4A261" } },
{ text: "Drug substitution (switch to alternative AED if clinically feasible)\n", options: { color: "E8E8E8" } },
{ text: "3. ", options: { bold: true, color: "F4A261" } },
{ text: "Gingivectomy for severe/advanced cases\n", options: { color: "E8E8E8" } },
{ text: "4. ", options: { bold: true, color: "F4A261" } },
{ text: "Regular dental follow-up", options: { color: "E8E8E8" } }
];
slide.addText(mgmtText, {
x: CX, y, w: CW, h: 1.6,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.7;
// ── ALSO CAUSES GINGIVAL HYPERPLASIA box ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.4,
fill: { color: "1A3A5C" }
});
slide.addText("OTHER DRUGS: SAME EFFECT", {
x: CX + 0.1, y: y + 0.02, w: CW - 0.2, h: 0.36,
fontSize: 16, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
y += 0.48;
const otherDrugsText = [
{ text: "Cyclosporine", options: { bold: true, color: "F4A261" } },
{ text: " (immunosuppressant)\n", options: { color: "E8E8E8" } },
{ text: "Nifedipine", options: { bold: true, color: "F4A261" } },
{ text: " (Ca²⁺ channel blocker)\n", options: { color: "E8E8E8" } },
{ text: "Amlodipine, Verapamil, Diltiazem", options: { bold: true, color: "F4A261" } },
{ text: " (CCBs)\n", options: { color: "E8E8E8" } },
{ text: "Concurrent use", options: { bold: true, color: "F4A261" } },
{ text: " of two agents = accelerated proliferation", options: { color: "E8E8E8" } }
];
slide.addText(otherDrugsText, {
x: CX, y, w: CW, h: 1.6,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.7;
// ── SOURCE FOOTER ──
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: H - 0.7, w: CONT_W, h: 0.7,
fill: { color: "060D15" }
});
slide.addText("Sources: Tintinalli's Emergency Medicine | Lippincott Pharmacology | Dermatology 5e", {
x: CX, y: H - 0.65, w: CW, h: 0.6,
fontSize: 11, color: "888888", italic: true,
fontFace: "Calibri", align: "left", valign: "middle"
});
const outPath = "/home/daytona/workspace/phenytoin-poster/Phenytoin_Gingival_Hyperplasia_A1.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("DONE: " + outPath);
}).catch(err => {
console.error("ERROR:", err);
process.exit(1);
});
cd /home/daytona/workspace/phenytoin-poster && node build_poster.js 2>&1
cd /home/daytona/workspace/phenytoin-poster && node /home/daytona/skills/shared/scripts/fetch_images.js "https://cdn.orris.care/cdss_images/abd029579fd54ad3eecfb15d545e9c09f20c339fab47f65105ae0506633dea47.png" > /tmp/img1.json 2>&1; echo "EXIT:$?"
cd /home/daytona/workspace/phenytoin-poster && node /home/daytona/skills/shared/scripts/fetch_images.js "https://cdn.orris.care/cdss_images/019f8c7ed90b559619775b303f2921116d29b852af315cea447c7906c4c0d682.png" > /tmp/img2.json 2>&1; echo "EXIT:$?"
~/phenytoin-poster/build_poster2.js
const pptxgen = require("pptxgenjs");
const fs = require("fs");
// A1 size: 594mm x 841mm = 23.39" x 33.11"
const W = 23.39;
const H = 33.11;
// Layout split: left 2/3 = image, right 1/3 = content
const IMG_W = W * (2 / 3);
const CONT_X = IMG_W;
const CONT_W = W * (1 / 3);
// Load pre-fetched images
const img1Data = JSON.parse(fs.readFileSync("/tmp/img1.json", "utf8"));
const img2Data = JSON.parse(fs.readFileSync("/tmp/img2.json", "utf8"));
const mainImg = img1Data[0]; // Lippincott image (zoomed, high detail)
const clinImg = img2Data[0]; // Tintinalli image (severe hyperplasia)
if (mainImg.error) throw new Error("Main image error: " + mainImg.error);
if (clinImg.error) throw new Error("Clin image error: " + clinImg.error);
let pres = new pptxgen();
pres.defineLayout({ name: "A1_PORTRAIT", width: W, height: H });
pres.layout = "A1_PORTRAIT";
let slide = pres.addSlide();
// ── BACKGROUND ──────────────────────────────────────────────────────────────
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: W, h: H,
fill: { color: "0D1B2A" }
});
// ── LEFT PANEL: IMAGE (2/3 width, full height) ───────────────────────────────
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: IMG_W, h: H,
fill: { color: "050B12" }
});
// Main clinical image fills upper 65% of left panel
const mainImgH = H * 0.62;
slide.addImage({
data: mainImg.base64,
x: 0, y: 0, w: IMG_W, h: mainImgH,
sizing: { type: "cover", w: IMG_W, h: mainImgH }
});
// Second image (severe case) fills lower portion
const img2Y = mainImgH + 0.1;
const img2H = H - img2Y - 1.0;
slide.addImage({
data: clinImg.base64,
x: 0, y: img2Y, w: IMG_W, h: img2H,
sizing: { type: "cover", w: IMG_W, h: img2H }
});
// Caption bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: H - 0.95, w: IMG_W, h: 0.95,
fill: { color: "000000", transparency: 20 }
});
slide.addText([
{ text: "LEFT: ", options: { bold: true, color: "F4A261" } },
{ text: "Phenytoin gingival hyperplasia — Lippincott Pharmacology (Fig. 19.9) ", options: { color: "CCCCCC" } },
{ text: "RIGHT: ", options: { bold: true, color: "F4A261" } },
{ text: "Severe case — Tintinalli's Emergency Medicine (Fig. 245-8)", options: { color: "CCCCCC" } }
], {
x: 0.2, y: H - 0.92, w: IMG_W - 0.4, h: 0.85,
fontSize: 13.5, italic: true, fontFace: "Calibri",
align: "center", valign: "middle"
});
// Thin accent separator between images
slide.addShape(pres.ShapeType.rect, {
x: 0, y: mainImgH, w: IMG_W, h: 0.1,
fill: { color: "E63946" }
});
// ── RIGHT PANEL: CONTENT (1/3 width) ─────────────────────────────────────────
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: 0, w: CONT_W, h: H,
fill: { color: "0D1B2A" }
});
// Accent line on left edge of content panel
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: 0, w: 0.09, h: H,
fill: { color: "E63946" }
});
const CX = CONT_X + 0.38;
const CW = CONT_W - 0.58;
// ── TITLE ─────────────────────────────────────────────────────────────────────
// Thin red accent bar above title
slide.addShape(pres.ShapeType.rect, {
x: CX, y: 0.45, w: CW, h: 0.12,
fill: { color: "E63946" }
});
slide.addText("PHENYTOIN", {
x: CX, y: 0.6, w: CW, h: 1.5,
fontSize: 58, bold: true, color: "FFFFFF",
fontFace: "Calibri", align: "left", valign: "top"
});
// Drug class badge
slide.addShape(pres.ShapeType.rect, {
x: CX, y: 2.25, w: CW, h: 0.5,
fill: { color: "E63946" },
line: { color: "E63946", width: 0 }
});
slide.addText("Antiepileptic | Na⁺ Channel Blocker", {
x: CX, y: 2.25, w: CW, h: 0.5,
fontSize: 17, bold: true, color: "FFFFFF",
fontFace: "Calibri", align: "center", valign: "middle"
});
let y = 2.95;
// Helper function for section headers
function sectionHeader(title, yPos) {
slide.addShape(pres.ShapeType.rect, {
x: CX, y: yPos, w: CW, h: 0.42,
fill: { color: "1A3A5C" }
});
slide.addShape(pres.ShapeType.rect, {
x: CX, y: yPos, w: 0.06, h: 0.42,
fill: { color: "7EC8E3" }
});
slide.addText(title, {
x: CX + 0.12, y: yPos + 0.02, w: CW - 0.2, h: 0.38,
fontSize: 16.5, bold: true, color: "7EC8E3",
fontFace: "Calibri", valign: "middle"
});
}
// ── ADR HIGHLIGHT BOX ──
slide.addShape(pres.ShapeType.rect, {
x: CX, y, w: CW, h: 0.85,
fill: { color: "E63946", transparency: 0 },
line: { color: "FF6B6B", width: 1 }
});
slide.addText([
{ text: "KEY ADR: ", options: { bold: true, color: "FFFFFF", fontSize: 15 } },
{ text: "Gingival Hyperplasia", options: { color: "FFFFFF", bold: false, fontSize: 17 } },
{ text: "\n(Dilantin Hypertrophy / Gingival Overgrowth)", options: { color: "FFE0DC", italic: true, fontSize: 13.5 } }
], {
x: CX + 0.1, y: y + 0.04, w: CW - 0.2, h: 0.77,
fontFace: "Calibri", valign: "middle", align: "left"
});
y += 1.0;
// ── INCIDENCE ──
sectionHeader("INCIDENCE", y);
y += 0.5;
slide.addText([
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "~50% of long-term phenytoin users\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Commonest in patients <25 years\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Onset as early as 1 month after initiation", options: { color: "E8E8E8" } }
], {
x: CX, y, w: CW, h: 1.3,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.35
});
y += 1.4;
// ── PATHOPHYSIOLOGY ──
sectionHeader("PATHOPHYSIOLOGY", y);
y += 0.5;
slide.addText([
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Gingival fibroblast proliferation\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "↑ Collagen synthesis, ↓ collagenase activity\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Glycosaminoglycan accumulation in connective tissue\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Epithelial acanthosis on histology\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Poor oral hygiene = cofactor amplifying severity", options: { color: "E8E8E8" } }
], {
x: CX, y, w: CW, h: 2.0,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 2.1;
// ── CLINICAL FEATURES ──
sectionHeader("CLINICAL FEATURES", y);
y += 0.5;
slide.addText([
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Starts at interdental papillae, extends coronally\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Firm, nodular/lobulated texture\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Normal pink color when not inflamed\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Red, edematous, friable if inflamed\n", options: { color: "E8E8E8" } },
{ text: "▸ ", options: { bold: true, color: "F4A261" } },
{ text: "Edentulous areas usually spared", options: { color: "E8E8E8" } }
], {
x: CX, y, w: CW, h: 2.0,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 2.1;
// ── MANAGEMENT ──
sectionHeader("MANAGEMENT", y);
y += 0.5;
slide.addText([
{ text: "1 ", options: { bold: true, color: "E63946" } },
{ text: "Rigorous oral hygiene to slow progression\n", options: { color: "E8E8E8" } },
{ text: "2 ", options: { bold: true, color: "E63946" } },
{ text: "Drug substitution if clinically feasible\n", options: { color: "E8E8E8" } },
{ text: "3 ", options: { bold: true, color: "E63946" } },
{ text: "Gingivectomy for advanced cases\n", options: { color: "E8E8E8" } },
{ text: "4 ", options: { bold: true, color: "E63946" } },
{ text: "Regular dental review", options: { color: "E8E8E8" } }
], {
x: CX, y, w: CW, h: 1.6,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.35
});
y += 1.7;
// ── OTHER ADRs ──
sectionHeader("OTHER ADVERSE EFFECTS", y);
y += 0.5;
slide.addText([
{ text: "CNS: ", options: { bold: true, color: "F4A261" } },
{ text: "Nystagmus, ataxia, diplopia (dose-related)\n", options: { color: "E8E8E8" } },
{ text: "Skin: ", options: { bold: true, color: "F4A261" } },
{ text: "SJS, hirsutism, facial coarsening\n", options: { color: "E8E8E8" } },
{ text: "Blood: ", options: { bold: true, color: "F4A261" } },
{ text: "Megaloblastic anaemia, lymphadenopathy\n", options: { color: "E8E8E8" } },
{ text: "Metabolic: ", options: { bold: true, color: "F4A261" } },
{ text: "Peripheral neuropathy, osteoporosis\n", options: { color: "E8E8E8" } },
{ text: "Teratogen: ", options: { bold: true, color: "F4A261" } },
{ text: "Fetal hydantoin syndrome", options: { color: "E8E8E8" } }
], {
x: CX, y, w: CW, h: 2.1,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 2.2;
// ── ALSO CAUSES GH box ──
sectionHeader("SAME EFFECT: OTHER DRUGS", y);
y += 0.5;
slide.addText([
{ text: "Cyclosporine", options: { bold: true, color: "F4A261" } },
{ text: " — immunosuppressant\n", options: { color: "E8E8E8" } },
{ text: "Nifedipine, Amlodipine", options: { bold: true, color: "F4A261" } },
{ text: " — Ca²⁺ channel blockers\n", options: { color: "E8E8E8" } },
{ text: "Diltiazem, Verapamil, Felodipine\n", options: { bold: true, color: "E8E8E8" } },
{ text: "Concurrent use of ≥2 agents = accelerated overgrowth", options: { color: "BBBBBB", italic: true } }
], {
x: CX, y, w: CW, h: 1.6,
fontSize: 15, fontFace: "Calibri", valign: "top", lineSpacingMultiple: 1.3
});
y += 1.7;
// ── FOOTER ──
slide.addShape(pres.ShapeType.rect, {
x: CONT_X, y: H - 0.75, w: CONT_W, h: 0.75,
fill: { color: "060D15" }
});
slide.addText("Tintinalli's Emergency Medicine | Lippincott Pharmacology | Dermatology 5e | Katzung Pharmacology", {
x: CX, y: H - 0.7, w: CW, h: 0.65,
fontSize: 10.5, color: "777777", italic: true,
fontFace: "Calibri", align: "left", valign: "middle"
});
const outPath = "/home/daytona/workspace/phenytoin-poster/Phenytoin_Gingival_Hyperplasia_A1.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("DONE: " + outPath);
}).catch(err => {
console.error("ERROR:", err);
process.exit(1);
});
cd /home/daytona/workspace/phenytoin-poster && node build_poster2.js 2>&1
ls -lh /home/daytona/workspace/phenytoin-poster/Phenytoin_Gingival_Hyperplasia_A1.pptx
Phenytoin Gingival Hyperplasia A1
Presentation · PPTX
| Zone | Details |
|---|---|
| Left 2/3 (image panel) | Two stacked HD clinical photographs - top: Lippincott Pharmacology Fig. 19.9 (close-up with inset zoom); bottom: Tintinalli's Emergency Medicine Fig. 245-8 (severe hyperplasia case). Both sourced directly from textbook CDN. Red divider bar separates the two images. Captioned at the bottom. |
| Right 1/3 (content panel) | Dark navy background, red accent spine, structured sections |
Generate flexi
ls /home/daytona/workspace/phenytoin-poster/
cd /home/daytona/workspace/phenytoin-poster && libreoffice --headless --convert-to png --outdir /home/daytona/workspace/phenytoin-poster/ Phenytoin_Gingival_Hyperplasia_A1.pptx 2>&1
ls -lh /home/daytona/workspace/phenytoin-poster/*.png