~/thyroid-pptx/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE";
pres.title = "Clinical Diagnosis & Management of Thyroid Disorders";
pres.author = "Medical Biochemistry";
// ββ Palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
const C = {
navy: "0D2B55", // dominant dark
teal: "0F7D8C", // accent 1
sky: "38B2C0", // accent 2 (lighter)
mint: "D0F0F4", // light bg tint
amber: "E8963A", // warm accent / highlight
white: "FFFFFF",
offWhite:"F5F8FA",
text: "1A2E3F",
sub: "4A6578",
lightGray:"E2E8F0",
red: "D94F4F",
green: "2D9B5A",
orange: "E07A2F",
};
// ββ Shared Helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function darkSlide(slide) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{ color: C.navy }, line:{ color: C.navy } });
}
function accentBar(slide, color=C.teal, h=0.08) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:7.42-h, w:13.3, h:h+0.1, fill:{ color: color }, line:{ color: color } });
}
function sectionHeader(slide, title, sub="") {
darkSlide(slide);
// left teal bar
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.4, h:7.5, fill:{ color: C.teal }, line:{ color: C.teal } });
slide.addText(title, { x:0.7, y:2.5, w:11.5, h:1.3, fontSize:40, bold:true, color:C.white, fontFace:"Calibri Light" });
if (sub) slide.addText(sub, { x:0.7, y:3.85, w:11.5, h:0.8, fontSize:20, color:C.sky, fontFace:"Calibri" });
accentBar(slide, C.amber);
}
function contentSlide(slide) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:7.5, fill:{ color: C.offWhite }, line:{ color: C.offWhite } });
accentBar(slide, C.teal);
}
function slideTitle(slide, title, x=0.4, y=0.22, w=12.5, h=0.7) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:1.0, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addText(title, { x, y, w, h, fontSize:26, bold:true, color:C.white, fontFace:"Calibri Light", valign:"middle", margin:0 });
}
function pillBadge(slide, text, x, y, w, bgColor=C.teal) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w, h:0.38, fill:{ color: bgColor }, line:{ color: bgColor }, rectRadius:0.15 });
slide.addText(text, { x, y, w, h:0.38, fontSize:12, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
}
function card(slide, x, y, w, h, fill=C.white) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{ color: fill }, line:{ color: C.lightGray }, shadow:{ type:"outer", color:"000000", blur:5, offset:2, angle:135, opacity:0.10 } });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 1 β TITLE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkSlide(s);
// gradient-like overlay strip
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:5.5, h:7.5, fill:{ color: C.teal }, line:{ color: C.teal }, transparency:75 });
s.addText("CLINICAL DIAGNOSIS &\nMANAGEMENT OF", {
x:0.7, y:1.2, w:11.5, h:1.6, fontSize:34, bold:true, color:C.sky,
fontFace:"Calibri Light", charSpacing:2
});
s.addText("THYROID DISORDERS", {
x:0.7, y:2.65, w:11.5, h:1.6, fontSize:52, bold:true, color:C.white,
fontFace:"Calibri Light"
});
s.addText("A Step-by-Step Clinical Guide", {
x:0.7, y:4.35, w:8, h:0.55, fontSize:20, color:C.mint, fontFace:"Calibri", italic:true
});
s.addShape(pres.shapes.RECTANGLE, { x:0.7, y:5.1, w:2.5, h:0.06, fill:{ color: C.amber }, line:{ color: C.amber } });
s.addText("Topics: Hypothyroidism β’ Hyperthyroidism β’ Goiter β’ Thyroid Nodules β’ Thyroid Cancer", {
x:0.7, y:5.3, w:11.5, h:0.5, fontSize:14, color:C.mint, fontFace:"Calibri"
});
accentBar(s, C.amber);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 2 β OVERVIEW / TABLE OF CONTENTS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "What We Will Cover");
const topics = [
["01", "HPT Axis & Thyroid Physiology Review", C.teal],
["02", "Step-by-Step Diagnostic Approach", C.navy],
["03", "Hypothyroidism β Diagnosis & Management", C.teal],
["04", "Hyperthyroidism β Diagnosis & Management", C.navy],
["05", "Goiter & Thyroid Nodules", C.teal],
["06", "Thyroid Cancer β Diagnosis & Management", C.navy],
["07", "Special Situations (Pregnancy, Subclinical)", C.teal],
["08", "Key Laboratory Reference Values", C.navy],
];
const col1 = topics.slice(0,4);
const col2 = topics.slice(4);
col1.forEach(([num,title,col],i)=>{
const y = 1.3 + i*1.35;
card(s, 0.35, y, 5.9, 1.15, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y, w:0.7, h:1.15, fill:{ color:col }, line:{ color:col } });
s.addText(num, { x:0.35, y, w:0.7, h:1.15, fontSize:22, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri Light" });
s.addText(title, { x:1.15, y:y+0.28, w:5.0, h:0.6, fontSize:14, bold:true, color:C.text, fontFace:"Calibri", valign:"middle" });
});
col2.forEach(([num,title,col],i)=>{
const y = 1.3 + i*1.35;
card(s, 6.85, y, 6.0, 1.15, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:6.85, y, w:0.7, h:1.15, fill:{ color:col }, line:{ color:col } });
s.addText(num, { x:6.85, y, w:0.7, h:1.15, fontSize:22, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri Light" });
s.addText(title, { x:7.65, y:y+0.28, w:5.0, h:0.6, fontSize:14, bold:true, color:C.text, fontFace:"Calibri", valign:"middle" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 3 β SECTION: PHYSIOLOGY
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 1: PHYSIOLOGY", "HPT Axis β The Foundation of Thyroid Diagnostics");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 4 β HPT AXIS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "The HPT Axis β How the Thyroid is Controlled");
// Flow boxes
const boxes = [
{ label:"Hypothalamus", sub:"Releases TRH\n(Thyrotropin-releasing\nhormone β tripeptide)", x:0.4, col:C.navy },
{ label:"Anterior Pituitary", sub:"Releases TSH\n(Thyroid-stimulating\nhormone β glycoprotein)", x:3.9, col:C.teal },
{ label:"Thyroid Gland", sub:"Produces T4 (80%)\nand T3 (20%)\nvia NIS + TPO", x:7.4, col:C.sky },
{ label:"Target Tissues", sub:"T4 β T3 conversion\n(liver, kidney, muscle)\nActive T3 acts on nucleus", x:10.1, col:C.amber },
];
boxes.forEach(b=>{
card(s, b.x, 1.3, 2.9, 3.6, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:b.x, y:1.3, w:2.9, h:0.55, fill:{ color:b.col }, line:{ color:b.col } });
s.addText(b.label, { x:b.x, y:1.3, w:2.9, h:0.55, fontSize:14, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
s.addText(b.sub, { x:b.x+0.1, y:2.0, w:2.7, h:2.8, fontSize:13, color:C.text, fontFace:"Calibri", valign:"top", lineSpacingMultiple:1.3 });
});
// arrows
["3.35","6.85","10.38"].forEach((ax,i)=>{
s.addShape(pres.shapes.RIGHT_ARROW, { x:parseFloat(ax), y:2.8, w:0.5, h:0.4, fill:{ color:C.teal }, line:{ color:C.teal } });
});
// Negative feedback label
s.addShape(pres.shapes.RECTANGLE, { x:0.4, y:5.2, w:12.5, h:0.65, fill:{ color:C.mint }, line:{ color:C.sky } });
s.addText("NEGATIVE FEEDBACK: Free T3/T4 suppress both TRH (hypothalamus) and TSH (pituitary) β this forms the basis of ALL thyroid function tests", {
x:0.55, y:5.22, w:12.2, h:0.6, fontSize:12.5, color:C.teal, bold:true, fontFace:"Calibri", valign:"middle"
});
s.addText("Key Principle: TSH has a LOGARITHMIC inverse relationship with free T4 β a tiny drop in FT4 causes a LARGE surge in TSH, making TSH the most sensitive test.", {
x:0.4, y:6.05, w:12.5, h:0.55, fontSize:12, color:C.sub, fontFace:"Calibri", italic:true
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 5 β SECTION: DIAGNOSTIC APPROACH
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 2: DIAGNOSTIC APPROACH", "Step-by-step framework for any thyroid presentation");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 6 β STEP-BY-STEP DIAGNOSTIC ALGORITHM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Step-by-Step Diagnostic Algorithm");
const steps = [
{ n:"1", title:"History & Physical Exam", body:"Symptoms: weight change, palpitations, fatigue, heat/cold intolerance\nNeck: goiter, nodule, tenderness | Family history | Drug history (amiodarone, lithium, immunotherapy)", col:C.navy },
{ n:"2", title:"Screen with TSH (3rd-gen assay)", body:"TSH normal β euthyroid (no further testing in stable outpatient)\nTSH low β suspect hyperthyroidism β add FT4 + FT3\nTSH high β suspect hypothyroidism β add FT4", col:C.teal },
{ n:"3", title:"Confirm with Free T4 (Β± Free T3)", body:"FT4 low + TSH high β Primary hypothyroidism\nFT4 high + TSH low β Primary hyperthyroidism\nFT4 low + TSH low β Central (pituitary) hypothyroidism", col:C.navy },
{ n:"4", title:"Identify Etiology (Cause)", body:"Anti-TPO antibodies β Hashimoto's or Graves'\nTSI (thyroid-stimulating immunoglobulin) β Graves' disease\nRAIU scan β Graves' vs. toxic nodule vs. thyroiditis\nUltrasound β structural: nodule, goiter, cancer risk", col:C.teal },
{ n:"5", title:"Classify & Manage", body:"Primary / Secondary / Subclinical? Overt vs. borderline?\nInitiate treatment based on type (see following slides)\nMonitor response: TSH every 6-8 weeks after any dose change", col:C.amber },
];
steps.forEach((st,i)=>{
const y = 1.15 + i*1.21;
card(s, 0.35, y, 12.6, 1.1, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y, w:0.65, h:1.1, fill:{ color:st.col }, line:{ color:st.col } });
s.addText(st.n, { x:0.35, y, w:0.65, h:1.1, fontSize:20, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri Light" });
s.addText("STEP "+st.n+": "+st.title, { x:1.1, y:y+0.05, w:4.2, h:0.45, fontSize:13, bold:true, color:st.col, fontFace:"Calibri", valign:"middle" });
s.addText(st.body, { x:1.1, y:y+0.5, w:11.7, h:0.55, fontSize:11.5, color:C.text, fontFace:"Calibri", valign:"top" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 7 β SECTION: HYPOTHYROIDISM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 3: HYPOTHYROIDISM", "Deficiency of thyroid hormones β the most common thyroid disorder");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 8 β HYPOTHYROIDISM CAUSES & CLINICAL FEATURES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Hypothyroidism β Causes & Clinical Features");
// LEFT PANEL: Causes
card(s, 0.35, 1.15, 4.2, 5.8, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.15, w:4.2, h:0.55, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText("CAUSES", { x:0.35, y:1.15, w:4.2, h:0.55, fontSize:15, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
const causes = [
["Primary (most common)",""],
["Hashimoto's thyroiditis","Autoimmune (anti-TPO +)"],
["Post-radioiodine / surgery","Iatrogenic"],
["Iodine deficiency","Worldwide #1 cause"],
["Drugs","Amiodarone, lithium, PTU excess, immune checkpoint inhibitors"],
["Congenital hypothyroidism","Absent gland / TPO defect"],
["",""],
["Secondary (central)",""],
["Pituitary adenoma","Low TSH + Low FT4"],
["Sheehan's syndrome","Post-partum pituitary necrosis"],
];
causes.forEach((c,i)=>{
if(c[0]==="Primary (most common)" || c[0]==="Secondary (central)") {
s.addText(c[0], { x:0.5, y:1.82+i*0.48, w:3.9, h:0.38, fontSize:11.5, bold:true, color:C.teal, fontFace:"Calibri" });
} else if(c[0]==="") {
// spacer
} else {
s.addText("β’ "+c[0], { x:0.55, y:1.82+i*0.48, w:2.4, h:0.38, fontSize:11, color:C.text, fontFace:"Calibri", valign:"middle" });
if(c[1]) s.addText(c[1], { x:2.95, y:1.82+i*0.48, w:1.5, h:0.38, fontSize:9.5, color:C.sub, fontFace:"Calibri", italic:true, valign:"middle" });
}
});
// RIGHT PANEL: Symptoms
card(s, 4.85, 1.15, 8.1, 5.8, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:4.85, y:1.15, w:8.1, h:0.55, fill:{ color:C.teal }, line:{ color:C.teal } });
s.addText("CLINICAL FEATURES (Myxedema Symptoms)", { x:4.85, y:1.15, w:8.1, h:0.55, fontSize:15, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
const systems = [
{ sys:"General", sx:"Weight gain, cold intolerance, fatigue, lethargy", x:5.05, y:1.85 },
{ sys:"Skin", sx:"Dry, coarse skin; puffy face (periorbital edema); non-pitting edema; alopecia; brittle nails", x:5.05, y:2.45 },
{ sys:"CVS", sx:"Bradycardia, reduced cardiac output, pericardial effusion, hypertension", x:5.05, y:3.1 },
{ sys:"Neuro", sx:"Slowed reflexes (delayed relaxation), cognitive slowing, depression, carpal tunnel syndrome", x:5.05, y:3.75 },
{ sys:"GI", sx:"Constipation, macroglossia, abdominal distension", x:5.05, y:4.38 },
{ sys:"Repro", sx:"Menorrhagia, anovulation, infertility; galactorrhea (βTRH β βprolactin)", x:5.05, y:4.95 },
{ sys:"Labs", sx:"βTSH, βFT4, βcholesterol, βCK, hyponatremia, normocytic or macrocytic anemia", x:5.05, y:5.55 },
];
systems.forEach(({sys,sx,x,y})=>{
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w:1.3, h:0.42, fill:{ color:C.navy }, line:{ color:C.navy }, rectRadius:0.08 });
s.addText(sys, { x, y, w:1.3, h:0.42, fontSize:11, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
s.addText(sx, { x:x+1.4, y:y+0.02, w:6.4, h:0.4, fontSize:11, color:C.text, fontFace:"Calibri", valign:"middle" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 9 β HYPOTHYROIDISM DIAGNOSIS & MANAGEMENT
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Hypothyroidism β Diagnosis & Management");
// DIAGNOSIS
card(s, 0.35, 1.15, 5.9, 2.9, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.15, w:5.9, h:0.5, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText("DIAGNOSIS", { x:0.35, y:1.15, w:5.9, h:0.5, fontSize:16, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const diag = [
"TSH > 5.0 mIU/L = hypothyroid; confirm with FT4",
"Overt hypothyroidism: TSH β + FT4 β",
"Subclinical hypothyroidism: TSH β (5β10) + FT4 normal",
"Central hypothyroid: TSH low/normal + FT4 β (pituitary disease)",
"Anti-TPO antibodies positive β Hashimoto's",
];
diag.forEach((d,i)=>{
s.addText("β’ "+d, { x:0.55, y:1.78+i*0.44, w:5.6, h:0.4, fontSize:11.5, color:C.text, fontFace:"Calibri", valign:"middle" });
});
// LABS
card(s, 0.35, 4.2, 5.9, 2.65, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:4.2, w:5.9, h:0.5, fill:{ color:C.teal }, line:{ color:C.teal } });
s.addText("SUPPORTING LABS", { x:0.35, y:4.2, w:5.9, h:0.5, fontSize:16, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const labs = [
"Lipid panel (hypercholesterolemia common)",
"CBC (normocytic / macrocytic anemia)",
"Serum CK (elevated in myxedema)",
"Thyroid ultrasound if nodule/goiter palpated",
"Anti-TPO, anti-Tg antibodies",
];
labs.forEach((l,i)=>{
s.addText("β’ "+l, { x:0.55, y:4.82+i*0.44, w:5.6, h:0.4, fontSize:11.5, color:C.text, fontFace:"Calibri", valign:"middle" });
});
// MANAGEMENT
card(s, 6.55, 1.15, 6.4, 5.7, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:6.55, y:1.15, w:6.4, h:0.5, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("MANAGEMENT", { x:6.55, y:1.15, w:6.4, h:0.5, fontSize:16, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const mgmt = [
["Drug of Choice:", "Levothyroxine (LT4) β synthetic T4"],
["Starting Dose:", "1.6 ΞΌg/kg/day (full replacement)\nElderly/cardiac: start 25-50 ΞΌg/day, titrate slowly"],
["Monitoring:", "Check TSH every 6-8 weeks after ANY dose change\nTarget TSH: 0.5β2.5 mIU/L (younger patients)\nTarget TSH: 1β4 mIU/L (elderly, pregnancy: 0.1β2.5)"],
["Administration:", "Take on empty stomach, 30β60 min before food\nAvoid: calcium, iron, PPIs within 4 hours"],
["Subclinical:", "Treat if TSH > 10 OR if TSH 5β10 with symptoms,\npregnancy, anti-TPO positive"],
["Emergency:", "Myxedema coma: IV T4 200β400 ΞΌg stat + IV T3\n+ hydrocortisone (rule out adrenal crisis)"],
];
mgmt.forEach(([lbl,txt],i)=>{
s.addText(lbl, { x:6.75, y:1.78+i*0.9, w:1.9, h:0.35, fontSize:11.5, bold:true, color:C.amber, fontFace:"Calibri", valign:"middle" });
s.addText(txt, { x:8.7, y:1.78+i*0.9, w:4.1, h:0.75, fontSize:11, color:C.text, fontFace:"Calibri", valign:"top", lineSpacingMultiple:1.2 });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 10 β SECTION: HYPERTHYROIDISM
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 4: HYPERTHYROIDISM", "Excess thyroid hormone β a hypermetabolic state");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 11 β HYPERTHYROIDISM CAUSES & CLINICAL FEATURES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Hyperthyroidism β Causes & Clinical Features");
card(s, 0.35, 1.15, 4.2, 5.8, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.15, w:4.2, h:0.55, fill:{ color:C.red }, line:{ color:C.red } });
s.addText("CAUSES", { x:0.35, y:1.15, w:4.2, h:0.55, fontSize:15, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const hCauses = [
["Graves' Disease","Most common (70β80%)"],
["Toxic Multinodular Goiter","Middle-aged/elderly"],
["Toxic Adenoma","Single autonomous nodule"],
["Subacute thyroiditis","Painful, post-viral (de Quervain)"],
["Hashitoxicosis","Early Hashimoto's"],
["Exogenous T4/T3","Factitious hyperthyroidism"],
["TSH-secreting pituitary tumor","TSH β + FT4 β (rare)"],
["Struma ovarii","Ectopic thyroid in ovarian teratoma"],
];
hCauses.forEach(([cause,note],i)=>{
s.addText("β’ "+cause, { x:0.5, y:1.85+i*0.58, w:2.2, h:0.48, fontSize:11, color:C.text, bold:true, fontFace:"Calibri", valign:"middle" });
s.addText(note, { x:2.75, y:1.85+i*0.58, w:1.7, h:0.48, fontSize:10, color:C.sub, fontFace:"Calibri", italic:true, valign:"middle" });
});
card(s, 4.85, 1.15, 8.1, 5.8, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:4.85, y:1.15, w:8.1, h:0.55, fill:{ color:C.red }, line:{ color:C.red } });
s.addText("CLINICAL FEATURES β Thyrotoxicosis", { x:4.85, y:1.15, w:8.1, h:0.55, fontSize:15, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const hSx = [
{ sys:"General", sx:"Weight loss despite increased appetite, heat intolerance, sweating, fatigue" },
{ sys:"CVS", sx:"Palpitations, tachycardia (AF common), wide pulse pressure, cardiac failure" },
{ sys:"Neuro", sx:"Anxiety, irritability, tremor (fine), insomnia, hyperreflexia" },
{ sys:"GI", sx:"Diarrhea, hyperdefecation, nausea" },
{ sys:"Musculo", sx:"Proximal myopathy, thyrotoxic periodic paralysis (esp. Asian males)" },
{ sys:"Repro", sx:"Oligomenorrhea, reduced libido, gynaecomastia (males)" },
{ sys:"Eyes", sx:"Graves' ophthalmopathy: proptosis, lid lag, chemosis (TSI-mediated)" },
{ sys:"Neck", sx:"Diffuse goiter (Graves), nodular goiter (TMNG), bruit (Graves)" },
];
hSx.forEach(({sys,sx},i)=>{
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:5.05, y:1.85+i*0.58, w:1.3, h:0.42, fill:{ color:C.red }, line:{ color:C.red }, rectRadius:0.08 });
s.addText(sys, { x:5.05, y:1.85+i*0.58, w:1.3, h:0.42, fontSize:11, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(sx, { x:6.45, y:1.87+i*0.58, w:6.4, h:0.4, fontSize:11, color:C.text, fontFace:"Calibri", valign:"middle" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 12 β HYPERTHYROIDISM DIAGNOSIS & MANAGEMENT
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Hyperthyroidism β Diagnosis & Management");
card(s, 0.35, 1.15, 5.9, 3.2, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:1.15, w:5.9, h:0.5, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText("DIAGNOSIS", { x:0.35, y:1.15, w:5.9, h:0.5, fontSize:16, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const hDiag = [
"TSH < 0.1 mIU/L (suppressed) + FT4 β = overt hyperthyroidism",
"TSH low + FT4 normal β check FT3 (T3 toxicosis)",
"TSI positive β Graves' disease (90% sensitivity)",
"RAIU β diffuse β Graves' | focal hotspot β Toxic adenoma",
"RAIU β β Thyroiditis | Exogenous T4 | Struma ovarii",
"Thyroid ultrasound with Doppler (Graves' β hypervascular)",
];
hDiag.forEach((d,i)=>{
s.addText("β’ "+d, { x:0.55, y:1.78+i*0.42, w:5.6, h:0.38, fontSize:11.5, color:C.text, fontFace:"Calibri", valign:"middle" });
});
card(s, 0.35, 4.5, 5.9, 2.35, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:4.5, w:5.9, h:0.5, fill:{ color:C.teal }, line:{ color:C.teal } });
s.addText("GRAVES' DISEASE SPECIFIC", { x:0.35, y:4.5, w:5.9, h:0.5, fontSize:16, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const gd = [
"Diffuse goiter + eye signs + pretibial myxedema = classic triad",
"TSI/TRAb: diagnostic (differentiates from other causes)",
"First-line: Antithyroid drugs (ATDs) for 12β18 months",
"Monitor: TRAb levels to predict remission/relapse",
];
gd.forEach((d,i)=>{
s.addText("β’ "+d, { x:0.55, y:5.1+i*0.42, w:5.6, h:0.38, fontSize:11.5, color:C.text, fontFace:"Calibri", valign:"middle" });
});
card(s, 6.55, 1.15, 6.4, 5.7, C.white);
s.addShape(pres.shapes.RECTANGLE, { x:6.55, y:1.15, w:6.4, h:0.5, fill:{ color:C.red }, line:{ color:C.red } });
s.addText("MANAGEMENT β 3 Treatment Options", { x:6.55, y:1.15, w:6.4, h:0.5, fontSize:15, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
const opts = [
{ num:"1", title:"Antithyroid Drugs (ATDs)", body:"Methimazole (preferred) or PTU (pregnancy 1st trim)\nBlocks TPO β stops organification\nDose: Methimazole 10β30 mg/day; PTU 100β300 mg TDS\nSE: agranulocytosis (0.5%), hepatotoxicity (PTU)\nMonitor: TFTs every 4β6 weeks; CBC if fever/sore throat", col:C.navy },
{ num:"2", title:"Radioactive Iodine (ΒΉΒ³ΒΉI)", body:"Ablates thyroid tissue β hypothyroidism in 6β12 months\nPreferred in Graves'/TMNG (not pregnancy, severe ophthalmopathy)\nPre-treat with ATDs in severe disease\nPost-treatment: lifelong levothyroxine replacement", col:C.teal },
{ num:"3", title:"Surgery (Thyroidectomy)", body:"Total thyroidectomy for large goiter, cancer risk,\nfailed ATDs, patient preference\nPre-op: render euthyroid with ATDs + iodine (Lugol's)\nComplications: hypoparathyroidism, RLN palsy", col:C.amber },
];
opts.forEach(({num,title,body,col},i)=>{
const y = 1.8 + i*1.85;
s.addShape(pres.shapes.RECTANGLE, { x:6.7, y, w:0.6, h:1.6, fill:{ color:col }, line:{ color:col } });
s.addText(num, { x:6.7, y, w:0.6, h:1.6, fontSize:22, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(title, { x:7.4, y:y+0.05, w:5.4, h:0.4, fontSize:13, bold:true, color:col, fontFace:"Calibri" });
s.addText(body, { x:7.4, y:y+0.45, w:5.4, h:1.1, fontSize:11, color:C.text, fontFace:"Calibri", valign:"top", lineSpacingMultiple:1.2 });
});
// Thyroid storm box
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y:6.85, w:12.6, h:0.55, fill:{ color:C.red }, line:{ color:C.red } });
s.addText("β THYROID STORM: PTU + Propranolol + Lugol's iodine + Dexamethasone + Cooling β ICU admission", { x:0.45, y:6.87, w:12.4, h:0.48, fontSize:12.5, bold:true, color:C.white, fontFace:"Calibri", valign:"middle" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 13 β SECTION: GOITER & NODULES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 5: GOITER & NODULES", "Structural thyroid abnormalities β when to investigate");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 14 β GOITER & THYROID NODULE EVALUATION
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Thyroid Nodule β Step-by-Step Evaluation");
// Flowchart-style algorithm
const nodes = [
{ label:"Thyroid Nodule Detected\n(clinical / incidental / US)", x:4.5, y:1.25, w:4.3, h:0.7, fill:C.navy, textColor:C.white, fontSize:13 },
{ label:"Step 1: Check TSH", x:5.0, y:2.2, w:3.3, h:0.55, fill:C.teal, textColor:C.white, fontSize:12 },
{ label:"TSH Low\n(Autonomous nodule?)", x:0.7, y:3.1, w:3.0, h:0.65, fill:C.orange, textColor:C.white, fontSize:11 },
{ label:"TSH Normal/High\n(Most common)", x:9.1, y:3.1, w:3.5, h:0.65, fill:C.teal, textColor:C.white, fontSize:11 },
{ label:"RAIU Scan:\nHot nodule β treat hyper-\nthyroidism (RAI or surgery)", x:0.4, y:4.05, w:3.5, h:0.85, fill:C.white, textColor:C.text, fontSize:10.5 },
{ label:"Step 2: Thyroid Ultrasound\nTIRADS scoring (size, echogenicity,\nmargins, calcification, shape)", x:8.0, y:4.05, w:4.95, h:0.85, fill:C.white, textColor:C.text, fontSize:10.5 },
{ label:"TIRADS 1-2: Benign\nNo biopsy needed\nRoutine follow-up", x:0.4, y:5.15, w:3.5, h:0.85, fill:C.green, textColor:C.white, fontSize:10.5 },
{ label:"TIRADS 3: Low suspicion\nBiopsy if β₯2.5 cm\nor growing", x:4.2, y:5.15, w:3.2, h:0.85, fill:C.teal, textColor:C.white, fontSize:10.5 },
{ label:"TIRADS 4-5: High suspicion\nFNA Biopsy regardless\nof size (>1 cm)", x:7.65, y:5.15, w:3.5, h:0.85, fill:C.red, textColor:C.white, fontSize:10.5 },
{ label:"Bethesda Classification (Cytology): I=Non-diagnostic | II=Benign | III/IV=Indeterminate | V=Suspicious | VI=Malignant", x:0.4, y:6.22, w:12.5, h:0.6, fill:C.navy, textColor:C.white, fontSize:11 },
];
nodes.forEach(({label,x,y,w,h,fill,textColor,fontSize})=>{
card(s, x, y, w, h, fill);
s.addShape(pres.shapes.RECTANGLE, { x, y, w, h, fill:{ color:fill }, line:{ color:fill } });
s.addText(label, { x:x+0.06, y, w:w-0.12, h, fontSize, color:textColor, fontFace:"Calibri", align:"center", valign:"middle", lineSpacingMultiple:1.2 });
});
// Arrows
s.addShape(pres.shapes.DOWN_ARROW, { x:6.4, y:1.97, w:0.5, h:0.28, fill:{ color:C.teal }, line:{ color:C.teal } });
s.addShape(pres.shapes.DOWN_ARROW, { x:2.05, y:3.78, w:0.45, h:0.3, fill:{ color:C.orange }, line:{ color:C.orange } });
s.addShape(pres.shapes.DOWN_ARROW, { x:10.45, y:3.78, w:0.45, h:0.3, fill:{ color:C.teal }, line:{ color:C.teal } });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 15 β SECTION: THYROID CANCER
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 6: THYROID CANCER", "Diagnosis, staging and management of malignant thyroid disease");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 16 β THYROID CANCER TYPES & MANAGEMENT
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Thyroid Cancer β Types, Diagnosis & Management");
const types = [
{ name:"Papillary\nThyroid Ca", pct:"85%", origin:"Follicular cells", markers:"Thyroglobulin, BRAF V600E", spread:"Lymph nodes (cervical)", prog:"Excellent (>95% 10-yr survival)", mgmt:"Total thyroidectomy + RAI ablation + TSH suppression with LT4", col:C.teal },
{ name:"Follicular\nThyroid Ca", pct:"10%", origin:"Follicular cells", markers:"Thyroglobulin, RAS mutations", spread:"Hematogenous (lung, bone)", prog:"Good (80% 10-yr survival)", mgmt:"Total thyroidectomy + RAI + TSH suppression", col:C.navy },
{ name:"Medullary\nThyroid Ca", pct:"3-4%", origin:"C-cells (parafollicular)", markers:"Calcitonin, CEA, RET mutation", spread:"Lymph nodes + systemic", prog:"Moderate (75% 10-yr)", mgmt:"Total thyroidectomy (NO RAI β calcitonin not iodine-avid)\nVandetanib/Cabozantinib for metastatic", col:C.orange },
{ name:"Anaplastic\nThyroid Ca", pct:"1-2%", origin:"Follicular cells (undifferentiated)", markers:"None specific", spread:"Rapid local + distant", prog:"Very poor (median survival 5 months)", mgmt:"Multimodal: surgery + XRT + Dabrafenib/Trametinib (BRAF+)\nPalliative airway management", col:C.red },
];
types.forEach(({name,pct,origin,markers,spread,prog,mgmt,col},i)=>{
const x = 0.35 + i*3.24;
card(s, x, 1.15, 3.1, 5.7, C.white);
s.addShape(pres.shapes.RECTANGLE, { x, y:1.15, w:3.1, h:0.6, fill:{ color:col }, line:{ color:col } });
s.addText(name, { x, y:1.15, w:3.1, h:0.6, fontSize:13, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
pillBadge(s, pct+" of cases", x+0.7, 1.87, 1.7, col);
const rows = [["Origin",origin],["Marker",markers],["Spread",spread],["Prognosis",prog],["Management",mgmt]];
rows.forEach(([lbl,val],j)=>{
s.addText(lbl+":", { x:x+0.1, y:2.42+j*0.9, w:1.0, h:0.3, fontSize:10.5, bold:true, color:col, fontFace:"Calibri" });
s.addText(val, { x:x+0.1, y:2.73+j*0.9, w:2.9, h:0.5, fontSize:10.5, color:C.text, fontFace:"Calibri", lineSpacingMultiple:1.1 });
});
});
s.addText("Post-operative monitoring: Thyroglobulin (PTC/FTC) | Calcitonin (MTC) | Whole-body ΒΉΒ³ΒΉI scan | Neck ultrasound every 6β12 months", {
x:0.35, y:7.05, w:12.6, h:0.38, fontSize:11.5, color:C.sub, fontFace:"Calibri", italic:true
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 17 β SECTION: SPECIAL SITUATIONS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
sectionHeader(s, "PART 7: SPECIAL SITUATIONS", "Subclinical thyroid disease β’ Pregnancy β’ Euthyroid sick syndrome");
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 18 β SPECIAL CLINICAL SITUATIONS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Special Clinical Situations");
const panels = [
{ title:"Subclinical Hypothyroidism", col:C.navy, content:[
"TSH 5β10 mIU/L, FT4 NORMAL",
"Treat if: TSH >10, OR symptomatic,\nOR anti-TPO positive, OR pregnant",
"Start low-dose LT4 (25β50 ΞΌg/day)",
"Risk if untreated: cardiovascular disease, progression to overt hypothyroidism (4β8%/yr)",
]},
{ title:"Subclinical Hyperthyroidism", col:C.red, content:[
"TSH <0.1 mIU/L, FT4 NORMAL",
"Treat if: TSH <0.1 + age >65 + cardiac arrhythmia/osteoporosis",
"TSH 0.1β0.5 (mild): usually monitor",
"Risk if untreated: AF (3Γ risk), bone loss",
]},
{ title:"Thyroid in Pregnancy", col:C.teal, content:[
"TSH targets (trimester-specific):\n1st: 0.1β2.5 | 2nd: 0.2β3.0 | 3rd: 0.3β3.0 mIU/L",
"β LT4 dose by 20β30% in pregnancy (βTBG + fetal demand)",
"Hyperthyroidism: PTU in 1st trim; Methimazole from 2nd trim",
"Screen all pregnant women with TSH at booking",
"Post-partum thyroiditis: hyper phase β hypo phase β recovery",
]},
{ title:"Euthyroid Sick Syndrome (NTI)", col:C.orange, content:[
"Critical illness β βT3, βrT3, normal/low TSH, normal FT4",
"NOT true thyroid disease β adaptive response",
"Do NOT initiate thyroid treatment on TFTs alone",
"Treat underlying illness; TFTs normalize on recovery",
"If clinical hypothyroidism pre-existing β continue LT4 IV",
]},
];
panels.forEach(({title,col,content},i)=>{
const x = 0.35 + i * 3.24;
card(s, x, 1.15, 3.1, 5.75, C.white);
s.addShape(pres.shapes.RECTANGLE, { x, y:1.15, w:3.1, h:0.55, fill:{ color:col }, line:{ color:col } });
s.addText(title, { x:x+0.05, y:1.15, w:3.0, h:0.55, fontSize:12.5, bold:true, color:C.white, align:"center", valign:"middle", margin:0, fontFace:"Calibri" });
content.forEach((c,j)=>{
s.addText("β’ "+c, { x:x+0.1, y:1.84+j*1.0, w:2.9, h:0.9, fontSize:11, color:C.text, fontFace:"Calibri", valign:"top", lineSpacingMultiple:1.2 });
});
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 19 β LABORATORY REFERENCE VALUES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
contentSlide(s);
slideTitle(s, "Key Laboratory Reference Values & Interpretation");
// Table header
const cols = ["Test","Reference Range","Hypothyroid","Hyperthyroid","Note"];
const colW = [2.1, 2.3, 1.95, 1.95, 4.6];
const startX = 0.35;
let cx = startX;
cols.forEach((c,i)=>{
s.addShape(pres.shapes.RECTANGLE, { x:cx, y:1.15, w:colW[i], h:0.5, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText(c, { x:cx, y:1.15, w:colW[i], h:0.5, fontSize:13, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
cx += colW[i];
});
const rows = [
["TSH","0.35β5.0 mIU/L","ββ (>10 = overt)","ββ (<0.1 = overt)","Most sensitive thyroid test"],
["Free T4","12β28 pmol/L","β","β","Not affected by TBG changes"],
["Free T3","3β9 pmol/L","β","ββ","Check if T3 toxicosis suspected"],
["Total T4","55β150 nmol/L","ββ","β","Affected by TBG (pregnancy β, steroids β)"],
["Total T3","1.5β3.5 nmol/L","β","β","T3 toxicosis: T3 β with normal T4"],
["rT3",">0.32 nmol/L (if elevated)","β","normal","β in euthyroid sick syndrome"],
["Anti-TPO","><35 IU/mL = positive","β (Hashimoto's)","β (Graves')","Marker of autoimmune thyroid disease"],
["TSI","<1.75 IU/L","Negative","ββ (Graves')","90% sensitivity for Graves' disease"],
["Thyroglobulin","1β25 ng/mL (post-thyroidectomy <1)","Varies","Varies","Post-cancer surveillance marker"],
["HbA1c (co-morbidity)","<5.7% normal","Screen for DM in hypothyroid","Screen for DM","Insulin resistance β in both states"],
];
rows.forEach((row,i)=>{
const rowFill = i%2===0 ? C.white : C.offWhite;
cx = startX;
row.forEach((cell,j)=>{
s.addShape(pres.shapes.RECTANGLE, { x:cx, y:1.65+i*0.54, w:colW[j], h:0.54, fill:{ color:rowFill }, line:{ color:C.lightGray } });
const textColor = j===2 ? C.red : j===3 ? C.red : C.text;
s.addText(cell, { x:cx+0.05, y:1.65+i*0.54, w:colW[j]-0.1, h:0.54, fontSize:11, color:textColor, fontFace:"Calibri", valign:"middle", lineSpacingMultiple:1.1 });
cx += colW[j];
});
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 20 β SUMMARY / KEY TAKE-AWAYS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkSlide(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.55, h:7.5, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("KEY TAKE-AWAYS", { x:0.75, y:0.35, w:12.0, h:0.75, fontSize:36, bold:true, color:C.white, fontFace:"Calibri Light", charSpacing:3 });
s.addShape(pres.shapes.RECTANGLE, { x:0.75, y:1.18, w:3.5, h:0.06, fill:{ color:C.amber }, line:{ color:C.amber } });
const points = [
"TSH is the FIRST and MOST SENSITIVE test for thyroid function β always start here.",
"Low TSH = hyperthyroid; High TSH = hypothyroid. Central disease (pituitary) breaks this rule β check FT4 together.",
"Hashimoto's (Hypothyroid) = Anti-TPO positive; Graves' (Hyperthyroid) = TSI positive, diffuse goiter, eye signs.",
"Levothyroxine (LT4) is the drug of choice for hypothyroidism; check TSH every 6-8 weeks after any dose change.",
"Hyperthyroidism: 3 options β ATDs (methimazole), Radioiodine (ΒΉΒ³ΒΉI), or Surgery. Choose based on cause.",
"All thyroid nodules need TSH + ultrasound (TIRADS) Β± FNA based on size/features β Bethesda cytology guides surgery.",
"Papillary carcinoma (85%) = best prognosis; Anaplastic (1-2%) = worst prognosis. Medullary thyroid Ca monitors calcitonin.",
"In pregnancy: trim-specific TSH targets; PTU in 1st trimester, methimazole thereafter; increase LT4 dose by 20-30%.",
"Euthyroid sick syndrome (NTI): βT3, βrT3 β do NOT treat unless true thyroid disease confirmed.",
];
points.forEach((p,i)=>{
const y = 1.45 + i*0.66;
s.addShape(pres.shapes.RECTANGLE, { x:0.75, y:y+0.08, w:0.35, h:0.35, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText((i+1).toString(), { x:0.75, y:y+0.08, w:0.35, h:0.35, fontSize:12, bold:true, color:C.white, align:"center", valign:"middle", margin:0 });
s.addText(p, { x:1.25, y, w:11.7, h:0.58, fontSize:13, color:C.white, fontFace:"Calibri", valign:"middle", lineSpacingMultiple:1.15 });
});
accentBar(s, C.amber);
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// WRITE FILE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
pres.writeFile({ fileName: "/home/daytona/workspace/thyroid-pptx/Thyroid_Disorders_Clinical_Guide.pptx" })
.then(() => console.log("β
Done: Thyroid_Disorders_Clinical_Guide.pptx"))
.catch(err => { console.error("β Error:", err); process.exit(1); });