Make a ppt abt uterine myoma
cd "/home/daytona/workspace/attachments/cf06f306-1ae8-4726-b092-51fb13b4efe0" && python -m markitdown "Uterine Myoma (Fibroid).pptx" 2>/dev/null | head -200
cd "/home/daytona/workspace/attachments/cf06f306-1ae8-4726-b092-51fb13b4efe0" && python -m markitdown "fibroids1 pdf.pdf" 2>/dev/null | head -300
python -m markitdown "/home/daytona/workspace/attachments/cf06f306-1ae8-4726-b092-51fb13b4efe0/Uterine Myoma (Fibroid).pptx" 2>&1 | head -300
python -m markitdown "/home/daytona/workspace/attachments/cf06f306-1ae8-4726-b092-51fb13b4efe0/fibroids1 pdf.pdf" 2>&1 | head -300
ls /home/daytona/skills/pptx/scripts/ 2>/dev/null; ls /home/daytona/skills/ 2>/dev/null; which node; node --version
python3 -c " from pptx import Presentation prs = Presentation('/home/daytona/workspace/attachments/cf06f306-1ae8-4726-b092-51fb13b4efe0/Uterine Myoma (Fibroid).pptx') for i, slide in enumerate(prs.slides): print(f'=== Slide {i+1} ===') for shape in slide.shapes: if hasattr(shape, 'text') and shape.text.strip(): print(shape.text[:500]) print() " 2>&1
node /home/daytona/skills/pptx/scripts/thumbnail.py 2>/dev/null; ls /home/daytona/skills/pptx/scripts/; ls /home/daytona/skills/shared/scripts/
node -e " const pptxgen = require('pptxgenjs'); console.log('pptxgenjs version:', require('/usr/local/share/nvm/current/lib/node_modules/pptxgenjs/package.json').version || 'ok'); " 2>&1 || node -e "const p = require('pptxgenjs'); console.log('ok')" 2>&1
uterine fibroid myoma types classification diagram
uterine myoma ultrasound MRI imaging
mkdir -p /home/daytona/workspace/uterine-myoma-ppt
cat > /home/daytona/workspace/uterine-myoma-ppt/fetch_imgs.js << 'EOF' const urls = [ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_c3790cd86d85f3cbd5ad67853864a1df84bb034550ab5ecedd6d5a3e2a96c146.jpg", "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_fa9565b5f9c6222e8558da0455425b6073baa605497c13e0629c01a11064c96c.jpg", "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_d9791548d6ea40cfdf8691f9c1c0844bca40531404690e2571d2efebe7bf2940.jpg", "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_38fc64d20243fcd2cb8417d8de5b840256153355a03b6e9ebb483f182d9ad1c1.jpg", "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_61afc9bc6549898fc0a160c290a8fcfdd2ee6d5735f6bc8d9bc87c9cb84d71d8.jpg" ]; const result = require("child_process").execSync( `node /home/daytona/skills/shared/scripts/fetch_images.js ${urls.map(u => `"${u}"`).join(" ")}`, { maxBuffer: 50 * 1024 * 1024 } ).toString(); const images = JSON.parse(result); images.forEach((img, i) => { if (img.error) console.log(`Image ${i}: ERROR - ${img.error}`); else console.log(`Image ${i}: OK (${img.base64.length} chars)`); }); EOF node /home/daytona/workspace/uterine-myoma-ppt/fetch_imgs.js
~/uterine-myoma-ppt/build.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// Fetch all images
const urls = [
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_c3790cd86d85f3cbd5ad67853864a1df84bb034550ab5ecedd6d5a3e2a96c146.jpg", // 0: SIS classification submucosal
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_fa9565b5f9c6222e8558da0455425b6073baa605497c13e0629c01a11064c96c.jpg", // 1: MRI FIGO types
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_d9791548d6ea40cfdf8691f9c1c0844bca40531404690e2571d2efebe7bf2940.jpg", // 2: myomectomy surgical
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_38fc64d20243fcd2cb8417d8de5b840256153355a03b6e9ebb483f182d9ad1c1.jpg", // 3: ultrasound submucosal
"https://cdn.orris.care/cdss_images/pmc_clinical_VQA_61afc9bc6549898fc0a160c290a8fcfdd2ee6d5735f6bc8d9bc87c9cb84d71d8.jpg" // 4: MRI large intramural
];
const images = JSON.parse(execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${urls.map(u => `"${u}"`).join(" ")}`,
{ maxBuffer: 50 * 1024 * 1024 }
).toString());
// --- Color palette ---
const C = {
deepPlum: "3D1A5E", // dominant dark bg
medPurple: "7B3FA0", // supporting
rosePink: "C2456A", // accent/header
softLilac: "D4A8E8", // light text on dark
offWhite: "F5F0FB", // body text
white: "FFFFFF",
lightPink: "F7D6E5",
darkText: "1A0A2E",
accentGold: "E8B84B",
tealGreen: "2DBEAA",
};
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Uterine Myoma (Fibroid)";
// ============================
// HELPER: gradient-like bg via shape
// ============================
function addBg(slide) {
slide.background = { color: C.deepPlum };
}
function addDecoStripe(slide) {
// Top accent bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.08, fill: { color: C.rosePink }, line: { color: C.rosePink }
});
// Bottom accent bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 5.545, w: 10, h: 0.08, fill: { color: C.medPurple }, line: { color: C.medPurple }
});
}
function sectionLabel(slide, label) {
slide.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 0.15, w: 2.2, h: 0.38,
fill: { color: C.rosePink }, line: { color: C.rosePink },
rectRadius: 0.05
});
slide.addText(label.toUpperCase(), {
x: 0.4, y: 0.15, w: 2.2, h: 0.38,
fontSize: 9, bold: true, color: C.white, align: "center", valign: "middle",
charSpacing: 2, margin: 0
});
}
// ============================
// SLIDE 1 — TITLE
// ============================
{
let s = pres.addSlide();
s.background = { color: C.deepPlum };
// Large decorative circle bg
s.addShape(pres.ShapeType.ellipse, {
x: 6.2, y: -1.2, w: 5.5, h: 5.5,
fill: { color: C.medPurple, transparency: 70 }, line: { color: C.medPurple, transparency: 70 }
});
s.addShape(pres.ShapeType.ellipse, {
x: -1.5, y: 3.2, w: 4, h: 4,
fill: { color: C.rosePink, transparency: 80 }, line: { color: C.rosePink, transparency: 80 }
});
// Top accent bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.1, fill: { color: C.rosePink }, line: { color: C.rosePink }
});
// Main title
s.addText("Uterine Myoma", {
x: 0.55, y: 1.1, w: 8.9, h: 1.2,
fontSize: 52, bold: true, color: C.white,
charSpacing: 1, align: "left"
});
s.addText("(Fibroid / Leiomyoma)", {
x: 0.55, y: 2.2, w: 8.9, h: 0.7,
fontSize: 26, bold: false, color: C.softLilac, align: "left", italic: true
});
// Divider line
s.addShape(pres.ShapeType.line, {
x: 0.55, y: 3.05, w: 5.5, h: 0,
line: { color: C.accentGold, width: 2.5 }
});
// Sub info
s.addText([
{ text: "Benign smooth muscle tumor of the uterus", options: { breakLine: true } },
{ text: "Most common pelvic tumor in women of reproductive age", options: { breakLine: false } }
], {
x: 0.55, y: 3.25, w: 7.5, h: 1.0,
fontSize: 14, color: C.softLilac, align: "left"
});
// Bottom bar
s.addShape(pres.ShapeType.rect, {
x: 0, y: 5.45, w: 10, h: 0.18, fill: { color: C.rosePink }, line: { color: C.rosePink }
});
s.addText("Gynecology · Obstetrics", {
x: 0, y: 5.45, w: 10, h: 0.18,
fontSize: 9, color: C.white, align: "center", valign: "middle", bold: true, charSpacing: 3, margin: 0
});
}
// ============================
// SLIDE 2 — OVERVIEW / OUTLINE
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
s.addText("Outline", {
x: 0.5, y: 0.2, w: 9, h: 0.65,
fontSize: 30, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 0.87, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
const topics = [
["01", "Definition & Epidemiology"],
["02", "Etiology & Risk Factors"],
["03", "Classification (FIGO)"],
["04", "Pathology & Pathogenesis"],
["05", "Clinical Features & Diagnosis"],
["06", "Imaging"],
["07", "Management"],
["08", "Surgical Options"],
["09", "Complications & Prognosis"],
];
const col1 = topics.slice(0, 5);
const col2 = topics.slice(5);
col1.forEach(([num, title], i) => {
const y = 1.05 + i * 0.82;
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: y, w: 0.48, h: 0.48,
fill: { color: C.rosePink }, line: { color: C.rosePink }, rectRadius: 0.06
});
s.addText(num, { x: 0.4, y: y, w: 0.48, h: 0.48, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(title, { x: 1.0, y: y + 0.04, w: 3.8, h: 0.4, fontSize: 13, color: C.offWhite, valign: "middle" });
});
col2.forEach(([num, title], i) => {
const y = 1.05 + i * 0.82;
s.addShape(pres.ShapeType.roundRect, {
x: 5.2, y: y, w: 0.48, h: 0.48,
fill: { color: C.tealGreen }, line: { color: C.tealGreen }, rectRadius: 0.06
});
s.addText(num, { x: 5.2, y: y, w: 0.48, h: 0.48, fontSize: 13, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
s.addText(title, { x: 5.8, y: y + 0.04, w: 3.8, h: 0.4, fontSize: 13, color: C.offWhite, valign: "middle" });
});
}
// ============================
// SLIDE 3 — DEFINITION & EPIDEMIOLOGY
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Definition");
s.addText("Definition & Epidemiology", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Definition box
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.38, w: 9.2, h: 0.85,
fill: { color: C.medPurple, transparency: 50 },
line: { color: C.softLilac, width: 1 }, rectRadius: 0.1
});
s.addText("Uterine myomas (fibroids / leiomyomas) are benign monoclonal tumors arising from the smooth muscle cells of the myometrium, with varying amounts of fibrous connective tissue stroma.", {
x: 0.55, y: 1.42, w: 9.0, h: 0.78,
fontSize: 13, color: C.white, valign: "middle", italic: true
});
const epiData = [
{ icon: "🏥", stat: "20–40%", label: "of women of reproductive age affected" },
{ icon: "📈", stat: "70–80%", label: "lifetime prevalence by age 50" },
{ icon: "⚫", stat: "2–3×", label: "higher incidence in Black vs. White women" },
{ icon: "📅", stat: "Peak", label: "4th–5th decade; regress post-menopause" },
{ icon: "🔬", stat: "#1", label: "Most common pelvic tumor in women" },
];
epiData.forEach((item, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.4 + col * 3.1;
const y = 2.45 + row * 1.1;
const w = 2.9;
s.addShape(pres.ShapeType.roundRect, {
x, y, w, h: 0.95,
fill: { color: i < 3 ? C.rosePink : C.tealGreen, transparency: 60 },
line: { color: C.white, transparency: 70, width: 1 }, rectRadius: 0.1
});
s.addText(item.stat, { x: x + 0.08, y: y + 0.04, w: w - 0.16, h: 0.38, fontSize: 22, bold: true, color: C.accentGold, align: "center", margin: 0 });
s.addText(item.label, { x: x + 0.08, y: y + 0.42, w: w - 0.16, h: 0.46, fontSize: 10.5, color: C.offWhite, align: "center", margin: 0 });
});
}
// ============================
// SLIDE 4 — ETIOLOGY & RISK FACTORS
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Etiology");
s.addText("Etiology & Risk Factors", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Left column: Hormonal
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.4, w: 4.2, h: 3.8,
fill: { color: C.medPurple, transparency: 70 },
line: { color: C.softLilac, width: 1 }, rectRadius: 0.12
});
s.addText("HORMONAL FACTORS", { x: 0.5, y: 1.5, w: 4.0, h: 0.38, fontSize: 13, bold: true, color: C.accentGold, align: "center", charSpacing: 1, margin: 0 });
const hormonal = [
"Estrogen & progesterone dependent growth",
"Express more estrogen receptors than normal myometrium",
"Aromatase overexpression → local estrogen production",
"Regress after menopause (↓ estrogen)",
"Early menarche is a risk factor",
"Nulliparity (no protective effect of pregnancy)",
];
s.addText(hormonal.map(t => ({ text: t, options: { bullet: { code: "25B8", color: C.rosePink }, breakLine: true, color: C.offWhite } })),
{ x: 0.55, y: 1.98, w: 3.9, h: 3.1, fontSize: 12, color: C.offWhite });
// Right column: Risk factors
s.addShape(pres.ShapeType.roundRect, {
x: 5.2, y: 1.4, w: 4.2, h: 3.8,
fill: { color: C.rosePink, transparency: 75 },
line: { color: C.softLilac, width: 1 }, rectRadius: 0.12
});
s.addText("RISK FACTORS", { x: 5.3, y: 1.5, w: 4.0, h: 0.38, fontSize: 13, bold: true, color: C.accentGold, align: "center", charSpacing: 1, margin: 0 });
const risks = [
"African American ethnicity",
"Obesity (↑ peripheral estrogen conversion)",
"Family history (genetic predisposition)",
"Hypertension",
"Diet: red meat, fewer green vegetables",
"Alcohol consumption",
"Protective: multiparity, OCP use, smoking (↓ estrogen)",
];
s.addText(risks.map(t => ({ text: t, options: { bullet: { code: "25B8", color: C.tealGreen }, breakLine: true, color: C.offWhite } })),
{ x: 5.35, y: 1.98, w: 3.9, h: 3.1, fontSize: 12, color: C.offWhite });
}
// ============================
// SLIDE 5 — CLASSIFICATION (FIGO) + Image
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Classification");
s.addText("FIGO Classification of Uterine Myomas", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Classification table
const classes = [
{ type: "SM — Submucosal", items: ["Type 0: Pedunculated intracavitary", "Type 1: <50% intramural", "Type 2: ≥50% intramural"] },
{ type: "O — Other", items: ["Type 3: Contacts endometrium (100% intramural)", "Type 4: Intramural", "Type 5: Subserosal ≥50% intramural"] },
{ type: "", items: ["Type 6: Subserosal <50% intramural", "Type 7: Subserosal pedunculated", "Type 8: Other (cervical, parasitic)"] },
{ type: "Hybrid", items: ["Two numbers (e.g., 2–5): span both sub- and serosal"] },
];
classes.forEach((cls, i) => {
const y = 1.45 + i * 0.95;
if (cls.type) {
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: y, w: 1.9, h: 0.38,
fill: { color: i === 0 ? C.rosePink : i === 1 ? C.tealGreen : C.medPurple },
line: { color: C.white, transparency: 40 }, rectRadius: 0.06
});
s.addText(cls.type, { x: 0.4, y: y, w: 1.9, h: 0.38, fontSize: 10.5, bold: true, color: C.white, align: "center", valign: "middle", margin: 0 });
}
cls.items.forEach((item, j) => {
s.addText(`• ${item}`, {
x: cls.type ? 2.4 : 0.5, y: y + j * 0.3 - (j > 0 && cls.type ? 0.08 : 0), w: 4.8, h: 0.28,
fontSize: 11.5, color: C.offWhite, valign: "middle"
});
});
});
// MRI image on right
if (!images[1].error) {
s.addImage({ data: images[1].base64, x: 5.55, y: 1.35, w: 4.1, h: 3.8 });
s.addShape(pres.ShapeType.roundRect, {
x: 5.55, y: 1.35, w: 4.1, h: 3.8,
fill: { color: C.white, transparency: 100 },
line: { color: C.softLilac, width: 1 }, rectRadius: 0.1
});
s.addText("MRI: FIGO fibroid types (T2-weighted)", {
x: 5.55, y: 5.12, w: 4.1, h: 0.22,
fontSize: 8.5, color: C.softLilac, align: "center", italic: true
});
}
}
// ============================
// SLIDE 6 — PATHOLOGY & PATHOGENESIS
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Pathology");
s.addText("Pathology & Pathogenesis", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Gross pathology
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.38, w: 4.5, h: 1.65,
fill: { color: C.medPurple, transparency: 65 },
line: { color: C.softLilac, width: 0.8 }, rectRadius: 0.1
});
s.addText("GROSS PATHOLOGY", { x: 0.5, y: 1.45, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.accentGold, charSpacing: 1.5, margin: 0 });
const gross = ["Well-circumscribed, firm, whorled appearance", "Pseudocapsule of compressed myometrium", "Cut surface: white/grey, trabeculated", "Size: mm to >20 cm; may be multiple"];
s.addText(gross.map(t => ({ text: t, options: { bullet: true, breakLine: true } })), {
x: 0.5, y: 1.82, w: 4.3, h: 1.2, fontSize: 12, color: C.offWhite
});
// Microscopy
s.addShape(pres.ShapeType.roundRect, {
x: 5.1, y: 1.38, w: 4.5, h: 1.65,
fill: { color: C.rosePink, transparency: 70 },
line: { color: C.softLilac, width: 0.8 }, rectRadius: 0.1
});
s.addText("MICROSCOPY", { x: 5.2, y: 1.45, w: 4.3, h: 0.3, fontSize: 12, bold: true, color: C.accentGold, charSpacing: 1.5, margin: 0 });
const micro = ["Interlacing bundles of smooth muscle cells", "Sparse mitoses (<5/10 HPF in benign)", "Dense fibrous stroma", "Cellular variant: increased cellularity, rare mitoses"];
s.addText(micro.map(t => ({ text: t, options: { bullet: true, breakLine: true } })), {
x: 5.2, y: 1.82, w: 4.3, h: 1.2, fontSize: 12, color: C.offWhite
});
// Degenerations
s.addText("DEGENERATION TYPES", { x: 0.5, y: 3.18, w: 9, h: 0.32, fontSize: 13, bold: true, color: C.tealGreen, charSpacing: 1.5, margin: 0 });
const degens = [
{ type: "Hyaline", desc: "Most common (65%); replacement by collagen", color: C.rosePink },
{ type: "Cystic", desc: "Liquefaction of hyaline areas", color: C.medPurple },
{ type: "Calcific", desc: "Calcium deposition, 'womb stone'", color: C.tealGreen },
{ type: "Red (Carneous)", desc: "Hemorrhagic infarction; painful; common in pregnancy", color: "C4382A" },
{ type: "Sarcomatous", desc: "<0.5% malignant transformation to leiomyosarcoma", color: C.accentGold },
];
degens.forEach((d, i) => {
const x = 0.4 + (i % 3) * 3.1;
const y = 3.58 + Math.floor(i / 3) * 0.98;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 2.9, h: 0.85,
fill: { color: d.color, transparency: 65 },
line: { color: d.color, transparency: 20, width: 1 }, rectRadius: 0.1
});
s.addText(d.type, { x: x + 0.08, y: y + 0.04, w: 2.74, h: 0.3, fontSize: 12, bold: true, color: C.white, align: "center", margin: 0 });
s.addText(d.desc, { x: x + 0.08, y: y + 0.36, w: 2.74, h: 0.44, fontSize: 10, color: C.offWhite, align: "center", margin: 0 });
});
}
// ============================
// SLIDE 7 — CLINICAL FEATURES
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Clinical Features");
s.addText("Clinical Features", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Asymptomatic note
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.38, w: 9.2, h: 0.55,
fill: { color: C.tealGreen, transparency: 70 },
line: { color: C.tealGreen, width: 1 }, rectRadius: 0.08
});
s.addText("⚠ ~50% of myomas are asymptomatic and discovered incidentally. Symptoms correlate with size, number, and location.", {
x: 0.55, y: 1.4, w: 9.0, h: 0.5,
fontSize: 12, color: C.white, valign: "middle"
});
const symptomGroups = [
{
header: "MENSTRUAL (Submucosal most common)",
color: C.rosePink,
items: ["Menorrhagia — heavy menstrual bleeding (most common)", "Metrorrhagia — irregular bleeding", "Dysmenorrhea", "Iron-deficiency anemia"],
x: 0.4, y: 2.1, w: 3.0
},
{
header: "PRESSURE / BULK",
color: C.medPurple,
items: ["Pelvic pressure/heaviness", "Urinary frequency, urgency, retention", "Constipation, tenesmus", "Dyspareunia"],
x: 3.6, y: 2.1, w: 3.0
},
{
header: "REPRODUCTIVE",
color: C.tealGreen,
items: ["Subfertility/infertility", "Recurrent pregnancy loss", "Preterm labor", "Malpresentation, PPH"],
x: 6.8, y: 2.1, w: 2.8
}
];
symptomGroups.forEach(({ header, color, items, x, y, w }) => {
s.addShape(pres.ShapeType.roundRect, {
x, y, w, h: 3.15,
fill: { color, transparency: 72 },
line: { color, transparency: 20, width: 1 }, rectRadius: 0.12
});
s.addText(header, { x: x + 0.08, y: y + 0.08, w: w - 0.16, h: 0.42, fontSize: 10.5, bold: true, color: C.accentGold, align: "center", margin: 0 });
s.addText(items.map(t => ({ text: t, options: { bullet: { code: "25B8", color }, breakLine: true } })), {
x: x + 0.12, y: y + 0.6, w: w - 0.2, h: 2.5, fontSize: 11, color: C.offWhite
});
});
}
// ============================
// SLIDE 8 — DIAGNOSIS
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Diagnosis");
s.addText("Diagnosis", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Left: clinical + labs
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.38, w: 4.5, h: 3.8,
fill: { color: C.medPurple, transparency: 68 },
line: { color: C.softLilac, width: 0.8 }, rectRadius: 0.1
});
s.addText("CLINICAL EVALUATION", { x: 0.5, y: 1.48, w: 4.2, h: 0.3, fontSize: 12, bold: true, color: C.accentGold, charSpacing: 1.5, margin: 0 });
const clinical = [
"Bimanual pelvic exam: enlarged, irregular, non-tender uterus",
"Uterine size reported in weeks of gestation",
"Mass may be palpable abdominally if large",
];
s.addText(clinical.map(t => ({ text: t, options: { bullet: true, breakLine: true } })), {
x: 0.55, y: 1.85, w: 4.2, h: 0.95, fontSize: 11.5, color: C.offWhite
});
s.addText("LABORATORY", { x: 0.5, y: 2.92, w: 4.2, h: 0.3, fontSize: 12, bold: true, color: C.accentGold, charSpacing: 1.5, margin: 0 });
const labs = ["CBC: hypochromic microcytic anemia", "Pregnancy test (rule out)", "LFT/RFT if surgical planning", "Pap smear, endometrial biopsy if indicated"];
s.addText(labs.map(t => ({ text: t, options: { bullet: true, breakLine: true } })), {
x: 0.55, y: 3.28, w: 4.2, h: 1.8, fontSize: 11.5, color: C.offWhite
});
// Right: imaging
s.addShape(pres.ShapeType.roundRect, {
x: 5.1, y: 1.38, w: 4.5, h: 3.8,
fill: { color: C.rosePink, transparency: 70 },
line: { color: C.softLilac, width: 0.8 }, rectRadius: 0.1
});
s.addText("IMAGING", { x: 5.2, y: 1.48, w: 4.2, h: 0.3, fontSize: 12, bold: true, color: C.accentGold, charSpacing: 1.5, margin: 0 });
const imaging = [
{ modality: "Ultrasound (1st line)", detail: "Hypoechoic, well-defined; TAS or TVS; SIS for submucosal" },
{ modality: "MRI (Gold standard)", detail: "Best for size, location, degeneration mapping; pre-surgical" },
{ modality: "Hysteroscopy", detail: "Direct visualization; therapeutic for SM types 0–2" },
{ modality: "HSG", detail: "Filling defect; evaluates tubal patency in infertility" },
{ modality: "CT", detail: "Limited; calcifications; excludes other pelvic masses" },
];
imaging.forEach(({ modality, detail }, i) => {
const y = 1.88 + i * 0.64;
s.addText(modality, { x: 5.2, y, w: 4.3, h: 0.25, fontSize: 11.5, bold: true, color: C.tealGreen, margin: 0 });
s.addText(detail, { x: 5.35, y: y + 0.24, w: 4.1, h: 0.3, fontSize: 10.5, color: C.offWhite, margin: 0 });
});
}
// ============================
// SLIDE 9 — IMAGING (with images)
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Imaging");
s.addText("Imaging of Uterine Myomas", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Image 3: Ultrasound submucosal
if (!images[3].error) {
s.addImage({ data: images[3].base64, x: 0.4, y: 1.38, w: 4.4, h: 3.7 });
}
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 4.92, w: 4.4, h: 0.35,
fill: { color: C.darkText, transparency: 40 }, line: { color: C.darkText }, rectRadius: 0.05
});
s.addText("Ultrasound: submucosal fibroid with endometrial distortion", {
x: 0.4, y: 4.94, w: 4.4, h: 0.3,
fontSize: 9, color: C.softLilac, align: "center", italic: true, margin: 0
});
// Image 4: MRI large intramural
if (!images[4].error) {
s.addImage({ data: images[4].base64, x: 5.1, y: 1.38, w: 4.5, h: 3.7 });
}
s.addShape(pres.ShapeType.roundRect, {
x: 5.1, y: 4.92, w: 4.5, h: 0.35,
fill: { color: C.darkText, transparency: 40 }, line: { color: C.darkText }, rectRadius: 0.05
});
s.addText("MRI: large intramural-subserosal leiomyoma (T1+T2 multiplanar)", {
x: 5.1, y: 4.94, w: 4.5, h: 0.3,
fontSize: 9, color: C.softLilac, align: "center", italic: true, margin: 0
});
}
// ============================
// SLIDE 10 — SIS / Submucosal classification image
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Imaging");
s.addText("Submucosal Classification — 3D SIS", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
if (!images[0].error) {
s.addImage({ data: images[0].base64, x: 0.4, y: 1.38, w: 5.4, h: 3.8 });
}
s.addText("3D saline-infusion sonohysterography (SIS): submucosal myoma types 0, I, II", {
x: 0.4, y: 5.1, w: 5.4, h: 0.25,
fontSize: 8.5, color: C.softLilac, italic: true, align: "center"
});
const sisTypes = [
{ type: "Type 0", desc: "Pedunculated\nFully intracavitary\n(α <20°)" },
{ type: "Type I", desc: ">50% protrudes\ninto cavity\n(α >20° ≤90°)" },
{ type: "Type II", desc: "<50% protrudes\n≥50% intramural\n(α >90°)" },
];
sisTypes.forEach(({ type, desc }, i) => {
const x = 5.95 + i * 1.32;
s.addShape(pres.ShapeType.roundRect, {
x: 5.95, y: 1.4 + i * 1.3, w: 3.6, h: 1.1,
fill: { color: [C.rosePink, C.tealGreen, C.medPurple][i], transparency: 65 },
line: { color: C.white, transparency: 50, width: 1 }, rectRadius: 0.1
});
s.addText(type, { x: 5.95, y: 1.4 + i * 1.3, w: 1.0, h: 1.1, fontSize: 14, bold: true, color: C.accentGold, align: "center", valign: "middle", margin: 0 });
s.addText(desc, { x: 7.0, y: 1.43 + i * 1.3, w: 2.5, h: 1.05, fontSize: 11, color: C.offWhite, valign: "middle", margin: 0 });
});
// Surgical significance
s.addShape(pres.ShapeType.roundRect, {
x: 5.95, y: 4.38, w: 3.6, h: 0.8,
fill: { color: C.darkText, transparency: 30 },
line: { color: C.accentGold, width: 1 }, rectRadius: 0.1
});
s.addText("Types 0 & I: hysteroscopic resection\nType II: may need combined approach", {
x: 5.95, y: 4.43, w: 3.6, h: 0.7,
fontSize: 11, color: C.accentGold, align: "center", valign: "middle", bold: true
});
}
// ============================
// SLIDE 11 — MANAGEMENT OVERVIEW
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Management");
s.addText("Management Overview", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
const mgmtCols = [
{
title: "EXPECTANT",
icon: "👁",
color: C.tealGreen,
items: ["Asymptomatic fibroids", "Perimenopausal (await regression)", "Annual surveillance ultrasound", "Monitor for growth or symptoms"],
x: 0.4
},
{
title: "MEDICAL",
icon: "💊",
color: C.medPurple,
items: ["NSAIDs: dysmenorrhea relief", "Combined OCP / Progestogens: ↓ bleeding", "GnRH agonists: ↓ size 30–50% (pre-op)", "Ulipristal acetate (SPRM)", "Levonorgestrel IUS (Mirena)", "Tranexamic acid: acute bleeding"],
x: 3.55
},
{
title: "INTERVENTIONAL",
icon: "🏥",
color: C.rosePink,
items: ["Uterine Artery Embolization (UAE)", "MR-guided Focused Ultrasound (MRgFUS/HIFU)", "Endometrial ablation (small SM fibroids)", "Radiofrequency ablation"],
x: 6.7
}
];
const colW = 2.9;
mgmtCols.forEach(({ title, icon, color, items, x }) => {
const h = 0.52 + items.length * 0.5;
s.addShape(pres.ShapeType.roundRect, {
x, y: 1.42, w: colW, h: 3.8,
fill: { color, transparency: 70 },
line: { color, transparency: 20, width: 1.2 }, rectRadius: 0.12
});
s.addText(`${icon} ${title}`, { x: x + 0.1, y: 1.52, w: colW - 0.2, h: 0.42, fontSize: 12, bold: true, color: C.accentGold, align: "center", charSpacing: 0.5, margin: 0 });
s.addShape(pres.ShapeType.line, {
x: x + 0.2, y: 2.0, w: colW - 0.4, h: 0,
line: { color: C.white, transparency: 60, width: 0.8 }
});
s.addText(items.map(t => ({ text: t, options: { bullet: { code: "25B8", color }, breakLine: true } })), {
x: x + 0.12, y: 2.1, w: colW - 0.22, h: 3.1, fontSize: 11, color: C.offWhite
});
});
}
// ============================
// SLIDE 12 — MEDICAL MANAGEMENT DETAIL
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Medical Tx");
s.addText("Medical Management — Key Drugs", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 26, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
const drugs = [
{ name: "GnRH Agonists", eg: "Leuprolide, Goserelin", moa: "↓ estrogen → hypoestrogenic state", use: "Preoperative downsizing (3–6 months); correct anemia", note: "SE: menopausal sx, bone loss; add-back therapy if >6 mo" },
{ name: "GnRH Antagonists", eg: "Elagolix, Relugolix", moa: "Direct GnRH receptor blockade, faster onset", use: "Symptomatic control; FDA-approved for fibroid bleeding", note: "No flare effect; oral administration" },
{ name: "Progestogens / LNG-IUS", eg: "NETA, MPA, Mirena IUS", moa: "Endometrial atrophy → ↓ menstrual flow", use: "Menorrhagia control (especially SM/IM)", note: "LNG-IUS expulsion risk if cavity distorted" },
{ name: "SPRMs", eg: "Ulipristal acetate", moa: "Selective progesterone receptor modulator", use: "Intermittent treatment; ↓ fibroid volume", note: "Hepatotoxicity concerns → limited availability" },
{ name: "Tranexamic Acid", eg: "1g TID during menses", moa: "Antifibrinolytic → ↓ blood loss ~50%", use: "Acute/heavy menstrual bleeding", note: "No effect on fibroid size" },
];
drugs.forEach((d, i) => {
const y = 1.38 + i * 0.83;
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y, w: 9.2, h: 0.78,
fill: { color: i % 2 === 0 ? C.medPurple : C.rosePink, transparency: 75 },
line: { color: C.softLilac, transparency: 60, width: 0.7 }, rectRadius: 0.08
});
s.addText(d.name, { x: 0.52, y: y + 0.04, w: 2.0, h: 0.32, fontSize: 12, bold: true, color: C.accentGold, margin: 0 });
s.addText(`(${d.eg})`, { x: 0.52, y: y + 0.37, w: 2.0, h: 0.3, fontSize: 10, color: C.softLilac, italic: true, margin: 0 });
s.addText(`MOA: ${d.moa}`, { x: 2.65, y: y + 0.04, w: 3.5, h: 0.33, fontSize: 10.5, color: C.offWhite, margin: 0 });
s.addText(`Use: ${d.use}`, { x: 2.65, y: y + 0.38, w: 3.5, h: 0.32, fontSize: 10, color: C.offWhite, margin: 0 });
s.addText(d.note, { x: 6.3, y: y + 0.1, w: 3.1, h: 0.58, fontSize: 10, color: C.softLilac, italic: true, valign: "middle", margin: 0 });
});
}
// ============================
// SLIDE 13 — SURGICAL OPTIONS + myomectomy image
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Surgery");
s.addText("Surgical Management", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
// Myomectomy
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.38, w: 4.5, h: 3.8,
fill: { color: C.medPurple, transparency: 65 },
line: { color: C.softLilac, width: 0.8 }, rectRadius: 0.1
});
s.addText("MYOMECTOMY (uterus-preserving)", { x: 0.5, y: 1.48, w: 4.3, h: 0.32, fontSize: 11.5, bold: true, color: C.accentGold, charSpacing: 0.5, margin: 0 });
const myomRoutes = [
{ route: "Hysteroscopic", crit: "SM types 0–2; ≤3 cm", best: "Best for cavity distortion & infertility" },
{ route: "Laparoscopic", crit: "≤4–6 fibroids, ≤8–10 cm", best: "Minimal access; faster recovery" },
{ route: "Robotic", crit: "Complex/deep intramural", best: "Precision closure; still expensive" },
{ route: "Open (Laparotomy)", crit: "Large/multiple/subserosal", best: "Most versatile; still gold standard for fertility" },
];
myomRoutes.forEach(({ route, crit, best }, i) => {
const y = 1.88 + i * 0.8;
s.addText(route, { x: 0.55, y, w: 1.6, h: 0.28, fontSize: 11.5, bold: true, color: C.tealGreen, margin: 0 });
s.addText(crit, { x: 0.55, y: y + 0.3, w: 4.2, h: 0.25, fontSize: 10.5, color: C.offWhite, italic: true, margin: 0 });
s.addText(best, { x: 0.55, y: y + 0.54, w: 4.2, h: 0.22, fontSize: 10, color: C.softLilac, margin: 0 });
});
// Surgical image on right
if (!images[2].error) {
s.addImage({ data: images[2].base64, x: 5.1, y: 1.38, w: 4.5, h: 3.1 });
}
s.addText("Laparoscopic myomectomy: pseudocapsule-sparing technique", {
x: 5.1, y: 4.42, w: 4.5, h: 0.22,
fontSize: 8.5, color: C.softLilac, align: "center", italic: true
});
// Hysterectomy note
s.addShape(pres.ShapeType.roundRect, {
x: 5.1, y: 4.7, w: 4.5, h: 0.98,
fill: { color: C.rosePink, transparency: 68 },
line: { color: C.rosePink, width: 1 }, rectRadius: 0.1
});
s.addText("HYSTERECTOMY (definitive treatment)", { x: 5.2, y: 4.76, w: 4.3, h: 0.28, fontSize: 11.5, bold: true, color: C.accentGold, margin: 0 });
s.addText("Indications: failed medical tx, no desire for fertility, large symptomatic myomas, recurrent post-myomectomy. Routes: TAH, VH, TLH, LAVH.", {
x: 5.2, y: 5.0, w: 4.3, h: 0.6,
fontSize: 10, color: C.offWhite, margin: 0
});
}
// ============================
// SLIDE 14 — MYOMA IN PREGNANCY
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Pregnancy");
s.addText("Myoma in Pregnancy", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
const trimGroups = [
{
header: "1st TRIMESTER",
color: C.tealGreen,
items: ["Spontaneous abortion risk ↑ (submucosal)", "Red degeneration (Carneous) — acute pain, fever", "Sub-placental fibroids → implantation failure"],
x: 0.4
},
{
header: "2nd TRIMESTER",
color: C.medPurple,
items: ["Red degeneration most common (15–20 wks)", "Mechanical pressure effects", "Preterm labor risk", "Managed conservatively (analgesia, hydration)"],
x: 3.55
},
{
header: "3RD TRIMESTER & LABOUR",
color: C.rosePink,
items: ["Malpresentation (transverse, breech)", "Placenta previa (lower segment)", "Obstructed labour (lower segment / cervical)", "Postpartum haemorrhage (PPH)", "Caesarean section often required"],
x: 6.7
}
];
trimGroups.forEach(({ header, color, items, x }) => {
s.addShape(pres.ShapeType.roundRect, {
x, y: 1.42, w: 2.95, h: 3.8,
fill: { color, transparency: 72 },
line: { color, transparency: 20, width: 1.2 }, rectRadius: 0.12
});
s.addText(header, { x: x + 0.1, y: 1.52, w: 2.75, h: 0.42, fontSize: 11.5, bold: true, color: C.accentGold, align: "center", charSpacing: 0.5, margin: 0 });
s.addShape(pres.ShapeType.line, {
x: x + 0.15, y: 2.0, w: 2.65, h: 0,
line: { color: C.white, transparency: 55, width: 0.8 }
});
s.addText(items.map(t => ({ text: t, options: { bullet: { code: "25B8", color }, breakLine: true } })), {
x: x + 0.12, y: 2.08, w: 2.7, h: 3.1, fontSize: 11, color: C.offWhite
});
});
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 5.25, w: 9.2, h: 0.33,
fill: { color: C.accentGold, transparency: 75 },
line: { color: C.accentGold, width: 0.8 }, rectRadius: 0.06
});
s.addText("Key: Myomectomy during pregnancy generally avoided except for pedunculated torsion. Red degeneration managed conservatively.", {
x: 0.5, y: 5.27, w: 9.0, h: 0.28,
fontSize: 10.5, color: C.white, align: "center", italic: true, margin: 0
});
}
// ============================
// SLIDE 15 — COMPLICATIONS & PROGNOSIS
// ============================
{
let s = pres.addSlide();
addBg(s);
addDecoStripe(s);
sectionLabel(s, "Complications");
s.addText("Complications & Prognosis", {
x: 0.5, y: 0.6, w: 9, h: 0.65,
fontSize: 28, bold: true, color: C.white
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 1.27, w: 9, h: 0,
line: { color: C.accentGold, width: 1.5 }
});
const comps = [
{ title: "Anemia", body: "Iron-deficiency from chronic menorrhagia; may be severe requiring transfusion or IV iron", color: C.rosePink },
{ title: "Torsion", body: "Pedunculated fibroids → acute abdomen; surgical emergency", color: "C4382A" },
{ title: "Infection", body: "Submucous fibroids → pyomyoma; post-UAE necrosis risk", color: C.medPurple },
{ title: "Sarcomatous Change", body: "Leiomyosarcoma in <0.5%; rapid growth, post-menopausal bleeding are warning signs", color: C.accentGold },
{ title: "Urinary Complications", body: "Hydronephrosis, urinary retention from large fibroids; ureteric injury at surgery", color: C.tealGreen },
{ title: "Recurrence", body: "20–30% recurrence at 5 yrs post-myomectomy; rare after hysterectomy", color: C.medPurple },
];
comps.forEach(({ title, body, color }, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.4 + col * 4.75;
const y = 1.38 + row * 1.35;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 4.45, h: 1.22,
fill: { color, transparency: 72 },
line: { color, transparency: 25, width: 1 }, rectRadius: 0.1
});
s.addText(title, { x: x + 0.12, y: y + 0.06, w: 4.25, h: 0.32, fontSize: 13, bold: true, color: C.white, margin: 0 });
s.addText(body, { x: x + 0.12, y: y + 0.4, w: 4.25, h: 0.75, fontSize: 11, color: C.offWhite, margin: 0 });
});
// Prognosis footer
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 5.2, w: 9.2, h: 0.4,
fill: { color: C.tealGreen, transparency: 70 },
line: { color: C.tealGreen, width: 1 }, rectRadius: 0.08
});
s.addText("Prognosis: Excellent with appropriate management. Spontaneous regression post-menopause is expected. Fertility outcomes improved with timely myomectomy.", {
x: 0.5, y: 5.22, w: 9.0, h: 0.36,
fontSize: 11, color: C.white, align: "center", italic: true, valign: "middle"
});
}
// ============================
// SLIDE 16 — SUMMARY / KEY POINTS
// ============================
{
let s = pres.addSlide();
s.background = { color: C.deepPlum };
s.addShape(pres.ShapeType.ellipse, {
x: 7, y: -0.5, w: 4.5, h: 4.5,
fill: { color: C.rosePink, transparency: 82 }, line: { color: C.rosePink, transparency: 82 }
});
s.addShape(pres.ShapeType.ellipse, {
x: -1, y: 3.5, w: 3.5, h: 3.5,
fill: { color: C.medPurple, transparency: 82 }, line: { color: C.medPurple, transparency: 82 }
});
s.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.1, fill: { color: C.accentGold }, line: { color: C.accentGold }
});
s.addText("Key Takeaways", {
x: 0.5, y: 0.2, w: 9, h: 0.65,
fontSize: 32, bold: true, color: C.white, align: "left"
});
s.addShape(pres.ShapeType.line, {
x: 0.5, y: 0.87, w: 4, h: 0,
line: { color: C.accentGold, width: 2 }
});
const keys = [
"Most common benign pelvic tumor; affects 20–40% of reproductive-age women",
"Hormone-dependent growth — estrogen & progesterone drive proliferation",
"FIGO classification (types 0–8) guides treatment strategy",
"Ultrasound is first-line; MRI is gold standard for surgical planning",
"Management depends on symptoms, size, fertility desires, and location",
"GnRH agonists shrink fibroids preoperatively; not curative long-term",
"Hysterectomy is the only definitive cure; myomectomy preserves fertility",
"Malignant transformation (leiomyosarcoma) is rare (<0.5%)",
];
keys.forEach((key, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.4 + col * 5.0;
const y = 1.05 + row * 1.08;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 4.7, h: 0.9,
fill: { color: i % 4 < 2 ? C.medPurple : C.rosePink, transparency: 72 },
line: { color: C.softLilac, transparency: 60, width: 0.7 }, rectRadius: 0.1
});
s.addShape(pres.ShapeType.ellipse, {
x: x + 0.12, y: y + 0.2, w: 0.32, h: 0.32,
fill: { color: C.accentGold }, line: { color: C.accentGold }
});
s.addText(String(i + 1), { x: x + 0.12, y: y + 0.2, w: 0.32, h: 0.32, fontSize: 10, bold: true, color: C.darkText, align: "center", valign: "middle", margin: 0 });
s.addText(key, { x: x + 0.52, y: y + 0.06, w: 4.1, h: 0.78, fontSize: 11.5, color: C.offWhite, valign: "middle" });
});
s.addShape(pres.ShapeType.rect, {
x: 0, y: 5.45, w: 10, h: 0.18, fill: { color: C.rosePink }, line: { color: C.rosePink }
});
s.addText("Uterine Myoma (Fibroid / Leiomyoma) · Gynecology", {
x: 0, y: 5.45, w: 10, h: 0.18,
fontSize: 9, color: C.white, align: "center", valign: "middle", bold: true, charSpacing: 2, margin: 0
});
}
// ============================
// SAVE
// ============================
const outPath = "/home/daytona/workspace/uterine-myoma-ppt/Uterine_Myoma_Fibroid.pptx";
pres.writeFile({ fileName: outPath })
.then(() => console.log("Saved: " + outPath))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/uterine-myoma-ppt && node build.js 2>&1