Flexi A1 size .2/3image 1/3 content. Image should be high definition. Phenytoin -gingival hyperplasia adverse drug reactions.

Reading File
Reading File
Reading File
Finding Sources
Searching the Web

phenytoin gingival hyperplasia high definition clinical photo image

Reading File
Reading File
Loading Image
Loading Image
Reading File
Loading Image
Running Command

mkdir -p /home/daytona/workspace/phenytoin-poster && ls /home/daytona/workspace/phenytoin-poster/

Writing File

~/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);
});
Running Command

cd /home/daytona/workspace/phenytoin-poster && node build_poster.js 2>&1

Running Command

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:$?"

Running Command

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:$?"

Writing File

~/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);
});
Running Command

cd /home/daytona/workspace/phenytoin-poster && node build_poster2.js 2>&1

Running Command

ls -lh /home/daytona/workspace/phenytoin-poster/Phenytoin_Gingival_Hyperplasia_A1.pptx

The poster is ready. Here's your A1 flexi poster:

Phenytoin Gingival Hyperplasia A1

Presentation · PPTX


Poster layout summary:
ZoneDetails
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
Content sections on the right panel:
  • Drug name + class badge - Phenytoin / Na⁺ Channel Blocker (red badge)
  • KEY ADR highlight box - Gingival Hyperplasia / Dilantin Hypertrophy
  • Incidence - ~50% of users, <25 yrs, onset at 1 month
  • Pathophysiology - fibroblast proliferation, ↑ collagen, ↓ collagenase, glycosaminoglycan accumulation, epithelial acanthosis
  • Clinical features - interdental papillae onset, nodular/lobulated, color-dependent on inflammation
  • Management - oral hygiene → drug switch → gingivectomy → dental review
  • Other ADRs - CNS, skin, blood, metabolic, teratogenicity
  • Other drugs causing same effect - cyclosporine, nifedipine, amlodipine, diltiazem, verapamil
Sources: Tintinalli's Emergency Medicine | Lippincott Pharmacology | Dermatology 5e | Katzung Pharmacology

Generate flexi

Running Command

ls /home/daytona/workspace/phenytoin-poster/

Running Command

cd /home/daytona/workspace/phenytoin-poster && libreoffice --headless --convert-to png --outdir /home/daytona/workspace/phenytoin-poster/ Phenytoin_Gingival_Hyperplasia_A1.pptx 2>&1

Running Command

ls -lh /home/daytona/workspace/phenytoin-poster/*.png

Reading File
Loading Image
You've run out of free credits. Sign up for a free account to continue using Orris.
This is a shared conversation. Sign in to Orris to start your own chat.