~/ie-case-presentation/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE";
pres.title = "Pharmacotherapy of Native Valve Infective Endocarditis";
pres.author = "PharmD Case Presentation";
// ββ PALETTE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
const C = {
navy: "0D2137", // dominant dark
teal: "0A7EA4", // primary accent
ltTeal: "E6F4F9", // light teal bg panels
gold: "E8A020", // highlight / warning
green: "1A7A4A", // positive/OK
red: "C0392B", // alert / high
white: "FFFFFF",
offwhite:"F5F8FA",
slate: "4A5568",
ltGray: "DDE3EA",
midGray: "8A9BB0",
};
// ββ HELPERS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function addSlideHeader(slide, title, subtitle) {
// dark bar top
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:13.3, h:1.1, fill:{color:C.navy}, line:{color:C.navy} });
// teal accent left stripe
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.22, h:1.1, fill:{color:C.teal}, line:{color:C.teal} });
slide.addText(title, { x:0.38, y:0.12, w:10, h:0.55, fontSize:20, bold:true, color:C.white, fontFace:"Calibri", margin:0 });
if (subtitle) slide.addText(subtitle, { x:0.38, y:0.68, w:10, h:0.35, fontSize:11, color:"A8C8DC", fontFace:"Calibri", margin:0, italic:true });
// slide bg
slide.background = { color: C.offwhite };
}
function sectionLabel(slide, text, x, y, w) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h:0.32, fill:{color:C.teal}, line:{color:C.teal}, rectRadius:0 });
slide.addText(text, { x, y, w, h:0.32, fontSize:10, bold:true, color:C.white, align:"center", valign:"middle", fontFace:"Calibri", margin:0 });
}
function card(slide, x, y, w, h, fillColor) {
slide.addShape(pres.shapes.RECTANGLE, { x, y, w, h,
fill:{color: fillColor || C.white},
line:{color:C.ltGray, pt:1},
shadow:{type:"outer", color:"000000", blur:5, offset:2, angle:135, opacity:0.08}
});
}
function tableStyle(rows, colW, opts) {
return {
x: opts.x, y: opts.y, w: opts.w, h: opts.h,
colW: colW,
border: { pt:0.5, color: C.ltGray },
fontFace: "Calibri",
fontSize: opts.fontSize || 10,
rows: rows,
};
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 1 β TITLE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
sl.background = { color: C.navy };
// gradient-feel: dark top + lighter panel
sl.addShape(pres.shapes.RECTANGLE, { x:0, y:3.5, w:13.3, h:4, fill:{color:"081828"}, line:{color:"081828"} });
// teal stripe
sl.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.35, h:7.5, fill:{color:C.teal}, line:{color:C.teal} });
sl.addShape(pres.shapes.RECTANGLE, { x:0.35, y:3.38, w:13, h:0.06, fill:{color:C.gold}, line:{color:C.gold} });
sl.addText("CASE PRESENTATION", { x:0.6, y:0.5, w:12, h:0.55, fontSize:13, bold:true, color:C.gold, charSpacing:5, fontFace:"Calibri" });
sl.addText("Pharmacotherapy of", { x:0.6, y:1.2, w:12, h:0.7, fontSize:26, color:"B8D8E8", fontFace:"Calibri" });
sl.addText("Native Valve Infective Endocarditis", { x:0.6, y:1.85, w:12, h:0.85, fontSize:32, bold:true, color:C.white, fontFace:"Calibri" });
sl.addText("due to Streptococcus viridans", { x:0.6, y:2.65, w:12, h:0.65, fontSize:22, color:"7EC8E3", fontFace:"Calibri", italic:true });
sl.addText([
{ text: "Duke Criteria | Prolonged Bactericidal Therapy | Aminoglycoside TDM", options:{} }
], { x:0.6, y:4.0, w:12, h:0.5, fontSize:13, color:C.gold, fontFace:"Calibri", align:"left" });
sl.addText("Pharmacotherapeutics β II | 3rd Year PharmD Case Presentation", { x:0.6, y:5.0, w:10, h:0.4, fontSize:11, color:C.midGray, fontFace:"Calibri" });
sl.addText("Subject: Pharmacotherapeutics | Reference: Harrison's 22E Β· Fuster & Hurst 15E Β· Washington Manual", {
x:0.6, y:5.55, w:12, h:0.35, fontSize:9, color:"506070", fontFace:"Calibri"
});
// heart icon placeholder text
sl.addShape(pres.shapes.RECTANGLE, { x:10.5, y:1.0, w:2.4, h:2.4, fill:{color:"112233"}, line:{color:C.teal, pt:1.5} });
sl.addText("β₯", { x:10.5, y:1.3, w:2.4, h:1.8, fontSize:64, color:C.red, align:"center", fontFace:"Calibri" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 2 β PATIENT PROFILE & CHIEF COMPLAINTS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Patient Profile & Chief Complaints", "Slide 2 of 18");
// LEFT CARD β Patient Details
card(sl, 0.3, 1.25, 5.8, 4.0);
sectionLabel(sl, "PATIENT DETAILS", 0.3, 1.25, 5.8);
const pRows = [
[{ text:"Parameter", options:{bold:true, color:C.white, fill:{color:C.teal}} }, { text:"Details", options:{bold:true, color:C.white, fill:{color:C.teal}} }],
["Name", "Mr. Rajan K. (42 yrs / Male)"],
["Occupation", "Office Employee"],
["Ward", "Medicine Ward, IP: 2024-XXXX"],
["Admission", "Day 1"],
["Discharge", "Day 5 (OPAT continuation)"],
["Background", "Rheumatic Heart Disease"],
["Trigger", "Dental extraction 6 weeks ago (no prophylaxis)"],
];
sl.addTable(pRows, { x:0.3, y:1.6, w:5.8, h:3.6, colW:[2.2,3.6], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri",
autoPage:false,
rowH: 0.42
});
// RIGHT CARD β Chief Complaints
card(sl, 6.5, 1.25, 6.5, 4.0);
sectionLabel(sl, "CHIEF COMPLAINTS", 6.5, 1.25, 6.5);
const complaints = [
{ text:"π‘ Fever (low-grade, intermittent)", options:{bullet:false, breakLine:true} },
{ text:" Duration: 3 weeks", options:{bullet:false, color:C.midGray, breakLine:true, fontSize:9} },
{ text:"π΄ Fatigue, malaise, night sweats", options:{bullet:false, breakLine:true} },
{ text:" Duration: 3 weeks", options:{bullet:false, color:C.midGray, breakLine:true, fontSize:9} },
{ text:"𦴠Migratory joint pain (arthralgias)", options:{bullet:false, breakLine:true} },
{ text:" Duration: 2 weeks", options:{bullet:false, color:C.midGray, breakLine:true, fontSize:9} },
{ text:"π« Breathlessness on exertion", options:{bullet:false, breakLine:true} },
{ text:" Duration: 1 week", options:{bullet:false, color:C.midGray, breakLine:true, fontSize:9} },
{ text:"β Chills and rigors", options:{bullet:false, breakLine:true} },
{ text:" Duration: 2 weeks", options:{bullet:false, color:C.midGray, breakLine:false, fontSize:9} },
];
sl.addText(complaints, { x:6.6, y:1.65, w:6.2, h:3.5, fontSize:11, fontFace:"Calibri", color:C.navy, valign:"top" });
// Teaching point box at bottom
card(sl, 0.3, 5.4, 12.7, 0.9, "FFF8E7");
sl.addText("β Teaching Point: Insidious onset (3+ weeks) of low-grade fever + arthralgias + fatigue without obvious infection source = classic Subacute Bacterial Endocarditis (SBE). Viridans streptococci are the hallmark organism.", {
x:0.5, y:5.45, w:12.4, h:0.8, fontSize:9.5, fontFace:"Calibri", color:"7A4A00"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 3 β CLINICAL SIGNS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Physical Examination β Clinical Signs", "Slide 3 of 18");
// Vascular phenomena box
card(sl, 0.3, 1.25, 6.2, 2.8, "FFF0F0");
sectionLabel(sl, "VASCULAR PHENOMENA", 0.3, 1.25, 6.2);
const vRows = [
[{ text:"Sign", options:{bold:true, color:C.white, fill:{color:C.red}} }, { text:"Finding", options:{bold:true, color:C.white, fill:{color:C.red}} }],
["Splinter hemorrhages", "Under nails, 3β4 fingers bilateral"],
["Janeway lesions", "Non-tender erythematous macules β palms & soles"],
["Arterial emboli", "Evidence on imaging (splenic infarct Day 6)"],
];
sl.addTable(vRows, { x:0.3, y:1.6, w:6.2, h:2.3, colW:[2.5,3.7], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.52 });
// Immunologic phenomena box
card(sl, 6.9, 1.25, 6.1, 2.8, "F0FFF5");
sectionLabel(sl, "IMMUNOLOGIC PHENOMENA", 6.9, 1.25, 6.1);
const iRows = [
[{ text:"Sign", options:{bold:true, color:C.white, fill:{color:C.green}} }, { text:"Finding", options:{bold:true, color:C.white, fill:{color:C.green}} }],
["Osler nodes", "Tender subcutaneous nodules β fingertips"],
["Roth spots", "Flame-shaped retinal hemorrhages (fundoscopy)"],
["Glomerulonephritis", "Hematuria + 2+ proteinuria on urinalysis"],
["Rheumatoid factor", "Weakly positive"],
];
sl.addTable(iRows, { x:6.9, y:1.6, w:6.1, h:2.3, colW:[2.3,3.8], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.52 });
// Vitals / cardiac
card(sl, 0.3, 4.2, 12.7, 1.5);
sectionLabel(sl, "VITALS & CARDIOVASCULAR", 0.3, 4.2, 12.7);
const vitalRows = [
[
{ text:"Temp", options:{bold:true, fill:{color:C.ltTeal}} },
{ text:"Pulse", options:{bold:true, fill:{color:C.ltTeal}} },
{ text:"BP", options:{bold:true, fill:{color:C.ltTeal}} },
{ text:"RR", options:{bold:true, fill:{color:C.ltTeal}} },
{ text:"SpO2", options:{bold:true, fill:{color:C.ltTeal}} },
{ text:"Murmur", options:{bold:true, fill:{color:C.ltTeal}} },
],
["38.4Β°C", "96/min", "110/70 mmHg", "20/min", "96% RA", "Pansystolic Gr III/VI at apex β axilla (Mitral Regurg)"],
];
sl.addTable(vitalRows, { x:0.3, y:4.55, w:12.7, h:1.0, colW:[1.8,1.8,2.0,1.6,1.6,3.9], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.45 });
// Splenomegaly note
sl.addText("+ Mild splenomegaly (chronic bacteremia)", { x:0.4, y:5.7, w:8, h:0.35, fontSize:9.5, color:C.slate, italic:true, fontFace:"Calibri" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 4 β INVESTIGATIONS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Investigations", "Slide 4 of 18");
// Lab results
card(sl, 0.3, 1.25, 5.5, 4.3);
sectionLabel(sl, "LABORATORY RESULTS", 0.3, 1.25, 5.5);
const labRows = [
[{ text:"Test", options:{bold:true, color:C.white, fill:{color:C.teal}} }, { text:"Value", options:{bold:true, color:C.white, fill:{color:C.teal}} }, { text:"Significance", options:{bold:true, color:C.white, fill:{color:C.teal}} }],
["Hb", "9.8 g/dL β", "Anemia of infection"],
["WBC", "12,400/mmΒ³ β", "Leukocytosis"],
["CRP", "68 mg/L β", "Active inflammation"],
["ESR", "78 mm/hr β", "Elevated"],
["RF", "Weakly +ve", "Immunologic criterion"],
[{ text:"S. Creatinine", options:{bold:true} }, { text:"0.9 mg/dL (BASELINE)", options:{color:C.green, bold:true} }, "Critical for TDM calculations"],
["Urinalysis", "Hematuria + 2+ protein", "Immune glomerulonephritis"],
];
sl.addTable(labRows, { x:0.3, y:1.6, w:5.5, h:3.8, colW:[1.6,1.8,2.1], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.46 });
// Blood cultures
card(sl, 6.15, 1.25, 6.85, 2.5, "F0FFF5");
sectionLabel(sl, "BLOOD CULTURE REPORT (KEY)", 6.15, 1.25, 6.85);
sl.addText([
{ text:"3 sets drawn from separate sites, 30 min apart, BEFORE antibiotics\n", options:{bold:true, breakLine:true} },
{ text:"Organism: ", options:{bold:true} },
{ text:"Streptococcus viridans", options:{italic:true} },
{ text:" (alpha-hemolytic)\n", options:{breakLine:true} },
{ text:"All 3 sets positive ", options:{bold:true, color:C.red} },
{ text:"(Sets 1β3: growth at 18, 22, 24 hrs)\n\n", options:{breakLine:true} },
{ text:"MIC β Penicillin G: ", options:{bold:true} },
{ text:"0.08 Β΅g/mL β β€ 0.12 Β΅g/mL = HIGHLY SUSCEPTIBLE β
", options:{bold:true, color:C.green} },
], { x:6.25, y:1.65, w:6.6, h:2.0, fontSize:10, fontFace:"Calibri", color:C.navy, valign:"top" });
// Sensitivity table
card(sl, 6.15, 3.85, 6.85, 1.8);
sectionLabel(sl, "SENSITIVITY PROFILE", 6.15, 3.85, 6.85);
const sensRows = [
[{ text:"Antibiotic", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"MIC", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Interpretation", options:{bold:true, fill:{color:C.navy}, color:C.white} }],
["Penicillin G", { text:"0.08 Β΅g/mL", options:{bold:true, color:C.green} }, { text:"SUSCEPTIBLE (Highly)", options:{color:C.green} }],
["Ceftriaxone", "0.04 Β΅g/mL", { text:"Susceptible", options:{color:C.green} }],
["Vancomycin", "0.5 Β΅g/mL", { text:"Susceptible", options:{color:C.green} }],
["Gentamicin", "4 Β΅g/mL", { text:"Susceptible (synergy)", options:{color:C.teal} }],
];
sl.addTable(sensRows, { x:6.15, y:4.2, w:6.85, h:1.35, colW:[2.2,1.7,2.95], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.26 });
// Echo note
card(sl, 0.3, 5.6, 12.7, 0.75, C.ltTeal);
sl.addText("π Echocardiography (TEE): Oscillating vegetation 8mmΓ6mm on posterior mitral leaflet | No perivalvular abscess | EF = 58% β Major Duke Criterion β
", {
x:0.5, y:5.65, w:12.4, h:0.65, fontSize:10, fontFace:"Calibri", color:C.navy, bold:false
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 5 β DUKE CRITERIA
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Diagnosis β Modified Duke Criteria", "Slide 5 of 18 | Source: Washington Manual / Fuster & Hurst 15E");
// Verdict banner
sl.addShape(pres.shapes.RECTANGLE, { x:0.3, y:1.2, w:12.7, h:0.7, fill:{color:C.green}, line:{color:C.green} });
sl.addText("VERDICT: DEFINITE INFECTIVE ENDOCARDITIS (2 Major Criteria Satisfied)", {
x:0.3, y:1.2, w:12.7, h:0.7, fontSize:16, bold:true, color:C.white, align:"center", fontFace:"Calibri"
});
// Major criteria
card(sl, 0.3, 2.0, 12.7, 2.0, "E8F8F0");
sectionLabel(sl, "MAJOR CRITERIA (2 of 2 satisfied = DEFINITE IE)", 0.3, 2.0, 12.7);
const majRows = [
[
{ text:"#", options:{bold:true, fill:{color:C.green}, color:C.white} },
{ text:"Criterion", options:{bold:true, fill:{color:C.green}, color:C.white} },
{ text:"Evidence in this patient", options:{bold:true, fill:{color:C.green}, color:C.white} },
{ text:"Status", options:{bold:true, fill:{color:C.green}, color:C.white} },
],
["1", "Positive blood cultures β typical organism (S. viridans) from β₯2 separate cultures",
"All 3 blood culture sets positive for S. viridans (drawn >12 hrs apart)",
{ text:"β
PRESENT", options:{bold:true, color:C.green} }],
["2", "Echocardiographic evidence β oscillating vegetation on valve",
"8mm vegetation on mitral posterior leaflet (TEE confirmed)",
{ text:"β
PRESENT", options:{bold:true, color:C.green} }],
];
sl.addTable(majRows, { x:0.3, y:2.35, w:12.7, h:1.55, colW:[0.4,4.6,6.2,1.5], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.48 });
// Minor criteria
card(sl, 0.3, 4.1, 12.7, 2.25);
sectionLabel(sl, "MINOR CRITERIA (4 of 5 additionally present)", 0.3, 4.1, 12.7);
const minRows = [
[
{ text:"Minor Criterion", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Evidence", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Status", options:{bold:true, fill:{color:C.teal}, color:C.white} },
],
["Predisposing heart condition", "Rheumatic Heart Disease with mitral regurgitation", { text:"β
", options:{color:C.green, bold:true} }],
["Fever β₯ 38Β°C", "38.4Β°C on admission", { text:"β
", options:{color:C.green, bold:true} }],
["Vascular phenomena", "Splinter hemorrhages, Janeway lesions", { text:"β
", options:{color:C.green, bold:true} }],
["Immunologic phenomena", "Osler nodes, Roth spots, weakly positive RF", { text:"β
", options:{color:C.green, bold:true} }],
];
sl.addTable(minRows, { x:0.3, y:4.45, w:12.7, h:1.8, colW:[3.2,8.0,1.5], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.43 });
sl.addText("Reference: Li JS et al. Proposed modifications to the Duke criteria for the diagnosis of infective endocarditis. Clin Infect Dis. 2000;30(4):633-638", {
x:0.3, y:6.4, w:12, h:0.3, fontSize:8, color:C.midGray, italic:true, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 6 β PATHOPHYSIOLOGY
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Pathophysiology of Infective Endocarditis", "Slide 6 of 18");
card(sl, 0.3, 1.2, 12.7, 4.8);
// Flowchart using shapes + text
const steps = [
{ label:"Dental Extraction", sub:"Transient bacteremia with S. viridans" },
{ label:"Enters Bloodstream", sub:"Bacteremia β organism circulates" },
{ label:"Damaged Valve Endothelium", sub:"RHD β exposed subendothelial collagen" },
{ label:"Bacterial Adherence", sub:"Fibrin-platelet thrombus β bacteria colonize" },
{ label:"Vegetation Formation", sub:"Bacteria + fibrin + platelets β 8mm mass" },
];
const bx = 0.6, by = 1.4, bw = 2.2, bh = 0.7, gap = 0.55;
steps.forEach((s, i) => {
const xpos = bx + i*(bw + gap);
sl.addShape(pres.shapes.RECTANGLE, { x:xpos, y:by, w:bw, h:bh, fill:{color:C.teal}, line:{color:C.teal} });
sl.addText(s.label, { x:xpos, y:by+0.03, w:bw, h:0.35, fontSize:9.5, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addText(s.sub, { x:xpos, y:by+0.37, w:bw, h:0.3, fontSize:7.5, color:"CCE8F4", align:"center", fontFace:"Calibri" });
if (i < steps.length-1) {
sl.addText("β", { x:xpos+bw, y:by+0.15, w:gap, h:0.4, fontSize:16, color:C.gold, align:"center", fontFace:"Calibri" });
}
});
// Consequences
const cons = [
{ title:"Local Effects", color:C.red, items:["Valve leaflet destruction", "Worsening mitral regurgitation", "Risk of congestive heart failure"] },
{ title:"Embolic Effects", color:C.gold, items:["Vegetation fragments embolise", "Brain β stroke / cerebral abscess", "Kidney / spleen β infarcts"] },
{ title:"Immune Effects", color:C.teal, items:["Circulating immune complexes", "Glomerulonephritis (hematuria)", "Osler nodes, Roth spots"] },
];
cons.forEach((c, i) => {
const cx = 0.5 + i * 4.3;
card(sl, cx, 2.5, 4.1, 2.55, "FAFCFF");
sl.addShape(pres.shapes.RECTANGLE, { x:cx, y:2.5, w:4.1, h:0.38, fill:{color:c.color}, line:{color:c.color} });
sl.addText(c.title, { x:cx, y:2.5, w:4.1, h:0.38, fontSize:10.5, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addText(c.items.map(it => "β’ " + it).join("\n"), {
x:cx+0.1, y:2.95, w:3.9, h:1.9, fontSize:10, color:C.navy, fontFace:"Calibri", valign:"top"
});
});
// PharmD note
card(sl, 0.3, 5.3, 12.7, 0.85, "FFF8E7");
sl.addText("π PharmD Key Concept: IE vegetations are avascular fibrin-platelet matrices with bacteria in metabolically low-activity state at high density. This is WHY bactericidal therapy (not bacteriostatic) is mandatory β bacteriostatic drugs cannot kill organisms in this protected, poorly-perfused environment.",
{ x:0.5, y:5.35, w:12.4, h:0.75, fontSize:9.5, color:"7A4A00", fontFace:"Calibri" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 7 β TREATMENT GOALS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Treatment Goals", "Slide 7 of 18");
const goals = [
{ num:"01", title:"Eradicate the organism", detail:"Complete bactericidal elimination of S. viridans from the vegetation β requires prolonged IV therapy", color:C.teal },
{ num:"02", title:"Prevent valve destruction", detail:"Stop progressive leaflet erosion from active infection β prevent acute severe MR", color:C.navy },
{ num:"03", title:"Prevent systemic emboli", detail:"Reduce vegetation burden to prevent embolism to brain, kidney, spleen", color:C.red },
{ num:"04", title:"Manage heart failure", detail:"Treat fluid overload secondary to mitral regurgitation (Furosemide)", color:"6B48B5" },
{ num:"05", title:"Ensure adequate duration", detail:"4-week minimum for highly susceptible strains (NVE); 6 weeks if complicated", color:C.green },
{ num:"06", title:"Prevent recurrence", detail:"Lifelong antibiotic prophylaxis before dental / invasive procedures", color:C.gold },
];
goals.forEach((g, i) => {
const col = i < 3 ? 0 : 1;
const row = i % 3;
const gx = 0.3 + col * 6.6;
const gy = 1.3 + row * 1.75;
card(sl, gx, gy, 6.3, 1.6);
sl.addShape(pres.shapes.RECTANGLE, { x:gx, y:gy, w:0.85, h:1.6, fill:{color:g.color}, line:{color:g.color} });
sl.addText(g.num, { x:gx, y:gy+0.45, w:0.85, h:0.7, fontSize:22, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addText(g.title, { x:gx+0.95, y:gy+0.15, w:5.2, h:0.45, fontSize:12, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
sl.addText(g.detail, { x:gx+0.95, y:gy+0.6, w:5.2, h:0.85, fontSize:9.5, color:C.slate, fontFace:"Calibri", valign:"top" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 8 β EMPIRIC THERAPY (Day 1β2)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Pharmacotherapy β Empiric Therapy (Day 1β2)", "Slide 8 of 18 | Before culture report");
card(sl, 0.3, 1.2, 12.7, 0.75, C.ltTeal);
sl.addText("Clinical situation: Patient is clinically stable (SBE pattern). Blood cultures drawn β Empiric IV vancomycin started while awaiting culture + susceptibility.", {
x:0.5, y:1.25, w:12.4, h:0.65, fontSize:10.5, color:C.navy, fontFace:"Calibri"
});
// Drug 1 β Vancomycin
card(sl, 0.3, 2.1, 12.7, 3.2);
sectionLabel(sl, "DRUG 1 β VANCOMYCIN (Empiric, Days 1β2)", 0.3, 2.1, 12.7);
const vancoRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Details", options:{bold:true, fill:{color:C.navy}, color:C.white} }],
["Indication", "Empiric broad-spectrum cover (MRSA / Strep / Enterococcus) before culture results"],
[{ text:"Dose", options:{bold:true} }, { text:"15 mg/kg IV q12h β 65 kg Γ 15 = 975 mg IV q12h", options:{bold:true, color:C.teal} }],
["Route & Infusion", "IV infusion over 60 min (slow rate to avoid Red Man Syndrome)"],
["Mechanism", "Inhibits cell wall synthesis by binding D-Ala-D-Ala terminal of peptidoglycan precursor"],
[{ text:"TDM Target", options:{bold:true} }, { text:"Trough: 10β15 Β΅g/mL | Day 2 result: 12 Β΅g/mL β
Within range", options:{color:C.green} }],
[{ text:"Why stopped Day 3?", options:{bold:true, color:C.red} }, "Culture confirmed S. viridans susceptible to Penicillin G β De-escalate (Antibiotic Stewardship principle)"],
["ADRs to Monitor", "Red Man Syndrome (rapid infusion), Nephrotoxicity, Ototoxicity"],
];
sl.addTable(vancoRows, { x:0.3, y:2.45, w:12.7, h:2.75, colW:[2.6,10.1], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.34 });
card(sl, 0.3, 5.35, 12.7, 0.8, "FFF0F0");
sl.addText("β Antibiotic Stewardship Point: Vancomycin is not superior to Penicillin G for susceptible Streptococcal IE. Once culture confirms susceptibility, always de-escalate to Penicillin G. Vancomycin carries higher nephrotoxicity risk than Penicillin.", {
x:0.5, y:5.4, w:12.4, h:0.7, fontSize:9.5, color:C.red, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 9 β DEFINITIVE THERAPY (Drug 2 β Penicillin G)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Pharmacotherapy β Definitive Therapy: Penicillin G", "Slide 9 of 18 | Day 3 onwards | Source: Fuster & Hurst Table 33-9; Washington Manual Table 14-7");
card(sl, 0.3, 1.2, 12.7, 0.7, "E8F8F0");
sl.addText("Organism: S. viridans | MIC Penicillin G: 0.08 Β΅g/mL (β€ 0.12 = Highly Susceptible) β Regimen: Penicillin G + Gentamicin for 2 weeks, then Penicillin G alone for weeks 3β4", {
x:0.5, y:1.25, w:12.4, h:0.6, fontSize:10.5, bold:true, color:C.green, fontFace:"Calibri"
});
// Drug 2 table
card(sl, 0.3, 2.0, 12.7, 3.5);
sectionLabel(sl, "DRUG 2 β AQUEOUS CRYSTALLINE PENICILLIN G (Definitive, Day 3 β 4 weeks total)", 0.3, 2.0, 12.7);
const penRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Details", options:{bold:true, fill:{color:C.navy}, color:C.white} }],
["Indication", "Definitive therapy for S. viridans NVE β MIC β€ 0.12 Β΅g/mL (highly penicillin-susceptible)"],
[{ text:"Dose", options:{bold:true} }, { text:"3 million units IV q4h (= 18 million units/day total)", options:{bold:true, color:C.teal} }],
["Route", "IV β divided doses q4h (or continuous IV infusion)"],
["Duration", "Started Day 3 β 4 weeks total (2-week Pen G + Gentamicin combo, then Pen G alone for weeks 3β4)"],
["Mechanism", "Beta-lactam β irreversibly binds Penicillin Binding Proteins (PBPs) β inhibits transpeptidation β cell wall lysis β bactericidal"],
["Why Pen G over Amoxicillin?", "Higher bactericidal potency for S. viridans; parenteral route ensures reliable & consistently high plasma levels"],
["If Penicillin allergic (mild)", "Ceftriaxone 2g IV once daily Γ 4 weeks"],
["If true PCN anaphylaxis", "Vancomycin 30 mg/kg/day in 2 doses Γ 4 weeks (no gentamicin needed)"],
["ADRs", "Hypersensitivity (ask allergy Hx), Hypokalemia (large doses of K-penicillin), Neurotoxicity (very high doses)"],
["Drug Interaction", "Probenecid blocks renal tubular secretion β β Penicillin G plasma levels (not co-prescribed here)"],
];
sl.addTable(penRows, { x:0.3, y:2.35, w:12.7, h:3.1, colW:[2.8,9.9], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.27 });
sl.addText("OPAT = Outpatient Parenteral Antibiotic Therapy. Patient discharged Day 5 with Penicillin G continuing via OPAT for remaining 3 weeks.", {
x:0.3, y:5.6, w:12.7, h:0.5, fontSize:9, color:C.midGray, italic:true, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 10 β DRUG 3: GENTAMICIN
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Pharmacotherapy β Drug 3: Gentamicin (Synergistic)", "Slide 10 of 18 | Days 3β14 | Source: Harrison's 22E; Goldman-Cecil");
card(sl, 0.3, 1.2, 12.7, 3.8);
sectionLabel(sl, "DRUG 3 β GENTAMICIN SULFATE (Synergistic combination, first 2 weeks only)", 0.3, 1.2, 12.7);
const gentRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Details", options:{bold:true, fill:{color:C.navy}, color:C.white} }],
["Indication", "Synergistic combination with Penicillin G to enhance bactericidal killing of S. viridans"],
[{ text:"Dose Calculation", options:{bold:true} }, { text:"3 mg/kg/day β 65 kg Γ 3 = 195 mg/day Γ· 3 doses = 65 mg IV q8h", options:{bold:true, color:C.teal} }],
["Route", "IV over 30 minutes"],
["Duration", "FIRST 2 WEEKS ONLY (Days 3β14 of therapy) β then stopped"],
["Mechanism", "Aminoglycoside β binds 30S ribosomal subunit β misreading of mRNA β concentration-dependent bactericidal killing"],
["Synergy Mechanism", "Penicillin G disrupts cell wall β Gentamicin gains greatly enhanced entry into cell β synergistic bacterial kill"],
["Why only 2 weeks?", "Synergistic benefit achieved in first 2 weeks; continuing longer β ototoxicity + nephrotoxicity with no added clinical benefit"],
];
sl.addTable(gentRows, { x:0.3, y:1.55, w:12.7, h:3.4, colW:[2.7,10.0], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.4 });
// Toxicity box
card(sl, 0.3, 5.1, 6.1, 1.15, "FFF0F0");
sectionLabel(sl, "NEPHROTOXICITY", 0.3, 5.1, 6.1);
sl.addText("Tubular cell injury β rising SCr, oliguria\nReversible if caught early via TDM monitoring\nRisk factors: trough > 1 Β΅g/mL, dehydration, NSAIDs", {
x:0.4, y:5.45, w:5.9, h:0.75, fontSize:9.5, color:C.navy, fontFace:"Calibri"
});
card(sl, 6.8, 5.1, 6.2, 1.15, "FFF0F0");
sectionLabel(sl, "OTOTOXICITY (IRREVERSIBLE)", 6.8, 5.1, 6.2);
sl.addText("Cochlear hair cell destruction β hearing loss, tinnitus\nIRREVERSIBLE β cannot be undone once it occurs\nRisk: cumulative dose, loop diuretics, prior aminoglycoside", {
x:6.95, y:5.45, w:5.95, h:0.75, fontSize:9.5, color:C.red, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 11 β TDM (Gentamicin)
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Therapeutic Drug Monitoring β Gentamicin TDM", "Slide 11 of 18 | PharmD-Specific Role | Source: Harrison's 22E Β· Goldman-Cecil");
// Why TDM
card(sl, 0.3, 1.2, 12.7, 0.9, C.ltTeal);
sl.addText("Why TDM for Gentamicin? Narrow therapeutic index (toxic β therapeutic dose). Two irreversible toxicities: Nephrotoxicity (tubular) + Ototoxicity (cochlear). Toxicity is trough-dependent (accumulation). TDM is the primary tool to individualise dosing β core PharmD competency.", {
x:0.5, y:1.25, w:12.4, h:0.8, fontSize:10, color:C.navy, fontFace:"Calibri"
});
// Target levels
card(sl, 0.3, 2.2, 6.1, 2.2);
sectionLabel(sl, "TARGET SERUM LEVELS", 0.3, 2.2, 6.1);
const lvlRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.teal}, color:C.white} }, { text:"Target", options:{bold:true, fill:{color:C.teal}, color:C.white} }, { text:"Sampling Time", options:{bold:true, fill:{color:C.teal}, color:C.white} }],
[{ text:"Peak", options:{bold:true} }, { text:"3.0 β 3.5 Β΅g/mL", options:{bold:true, color:C.green} }, "1 hr AFTER 30-min IV infusion"],
[{ text:"Trough", options:{bold:true} }, { text:"< 1.0 Β΅g/mL", options:{bold:true, color:C.green} }, "30 min BEFORE next dose"],
];
sl.addTable(lvlRows, { x:0.3, y:2.55, w:6.1, h:1.7, colW:[1.6,2.0,2.5], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.54 });
// Steady state note
card(sl, 6.75, 2.2, 6.25, 2.2);
sectionLabel(sl, "WHEN TO DRAW LEVELS", 6.75, 2.2, 6.25);
sl.addText([
{ text:"First level: ", options:{bold:true} }, { text:"After 3rd or 4th dose (steady state β 5 half-lives β 10β15 hrs)\n", options:{breakLine:true} },
{ text:"Subsequent: ", options:{bold:true} }, { text:"Every 3β4 days if stable; more frequently if renal function changes\n", options:{breakLine:true} },
{ text:"Renal impairment: ", options:{bold:true} }, { text:"Daily monitoring required", options:{} },
], { x:6.85, y:2.58, w:6.0, h:1.6, fontSize:10, fontFace:"Calibri", color:C.navy, valign:"top" });
// Day 5 TDM scenario
card(sl, 0.3, 4.5, 12.7, 1.75);
sectionLabel(sl, "DAY 5 TDM SCENARIO β Dose Adjustment (Pharmacist Action)", 0.3, 4.5, 12.7);
const tdmRows = [
[
{ text:"Sample", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Day 5 Result", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Target", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Interpretation", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Pharmacist Action", options:{bold:true, fill:{color:C.navy}, color:C.white} },
],
["Peak (1 hr post-dose)", { text:"4.8 Β΅g/mL β", options:{bold:true, color:C.red} }, "3.0β3.5 Β΅g/mL", { text:"ELEVATED", options:{color:C.red, bold:true} }, "Reduce dose"],
["Trough (pre-dose)", { text:"1.4 Β΅g/mL β", options:{bold:true, color:C.red} }, "< 1 Β΅g/mL", { text:"ELEVATED", options:{color:C.red, bold:true} }, "Increase interval"],
["S. Creatinine", { text:"1.1 mg/dL (rising)", options:{color:C.gold, bold:true} }, "0.7β1.2 mg/dL", { text:"RISING from baseline 0.9", options:{color:C.gold} }, "Monitor daily β early nephrotoxicity risk"],
];
sl.addTable(tdmRows, { x:0.3, y:4.85, w:12.7, h:1.3, colW:[2.2,1.9,1.8,2.3,4.5], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.41 });
sl.addText("Revised dose β 55 mg q8h | Recheck peak/trough after 3 doses | Day 8 levels: Peak 3.2 β
Trough 0.7 β
SCr 0.9 (back to baseline) β
", {
x:0.3, y:6.3, w:12.7, h:0.4, fontSize:10, bold:true, color:C.green, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 12 β DRUGS 4 & 5
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Pharmacotherapy β Drugs 4 & 5: Furosemide & Paracetamol", "Slide 12 of 18");
// Drug 4 β Furosemide
card(sl, 0.3, 1.2, 12.7, 2.6);
sectionLabel(sl, "DRUG 4 β FUROSEMIDE (Day 3β5, then oral at discharge)", 0.3, 1.2, 12.7);
const furoRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:"6B48B5"}, color:C.white} }, { text:"Details", options:{bold:true, fill:{color:"6B48B5"}, color:C.white} }],
["Indication", "Fluid overload / pulmonary congestion secondary to mitral regurgitation (worsened by active IE)"],
[{ text:"Dose", options:{bold:true} }, { text:"20 mg IV OD (Days 3β5) β 20 mg oral OD at discharge", options:{bold:true, color:C.teal} }],
["Mechanism", "Loop diuretic: Inhibits NaβΊ/KβΊ/2Clβ» cotransporter in thick ascending loop of Henle β natriuresis, diuresis β β preload β relieves pulmonary congestion"],
["Monitoring", "Urine output (target >0.5 mL/kg/hr), Serum KβΊ (hypokalemia), BP (hypotension), SCr"],
[{ text:"β Critical Interaction", options:{bold:true, color:C.red} }, { text:"Furosemide + Gentamicin = ADDITIVE OTOTOXICITY β both damage cochlear cells. Use lowest effective Furosemide dose and monitor hearing.", options:{color:C.red} }],
["ADRs", "Hypokalemia (supplement KCl if KβΊ < 3.5), hyponatremia, dehydration, hyperuricemia"],
];
sl.addTable(furoRows, { x:0.3, y:1.55, w:12.7, h:2.15, colW:[2.5,10.2], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.3 });
// Drug 5 β Paracetamol
card(sl, 0.3, 3.9, 12.7, 2.4);
sectionLabel(sl, "DRUG 5 β PARACETAMOL (Acetaminophen) (Days 1β5 PRN)", 0.3, 3.9, 12.7);
const paraRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.gold}, color:C.white} }, { text:"Details", options:{bold:true, fill:{color:C.gold}, color:C.white} }],
["Indication", "Fever (38.4Β°C) + arthralgias β symptomatic relief"],
[{ text:"Dose", options:{bold:true} }, { text:"500 mg β 1g oral/IV q6β8h PRN | Max: 4g/day", options:{bold:true, color:C.teal} }],
["Mechanism", "Central inhibition of prostaglandin synthesis (COX in CNS) + activation of descending serotonergic pathways β antipyretic + analgesic"],
[{ text:"Why NOT NSAIDs?", options:{bold:true, color:C.red} }, { text:"NSAIDs: β platelet function (β hemorrhagic risk from emboli), nephrotoxic (additive with Gentamicin), mask fever (monitoring parameter). CONTRAINDICATED in IE.", options:{color:C.red} }],
["Monitoring", "LFT if prolonged use; avoid in hepatic impairment; max dose adherence"],
];
sl.addTable(paraRows, { x:0.3, y:4.25, w:12.7, h:1.9, colW:[2.5,10.2], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.37 });
sl.addText("Day 1: Temp 38.4Β°C β Paracetamol given | Day 2: Temp reduced to 37.6Β°C β
| Day 5: Afebrile β Paracetamol stopped", {
x:0.3, y:6.37, w:12.7, h:0.35, fontSize:9, color:C.midGray, italic:true, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 13 β 5-DAY TIMELINE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "5-Day Clinical Timeline β All Events & Drugs", "Slide 13 of 18");
const tlRows = [
[
{ text:"", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"DAY 1", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"DAY 2", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"DAY 3", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"DAY 4", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"DAY 5", options:{bold:true, fill:{color:C.navy}, color:C.white} },
],
[{ text:"Clinical Status", options:{bold:true, fill:{color:C.ltTeal}} }, "Febrile 38.4Β°C\nMurmur++\nSplinter hemor.", "Fever 38.1Β°C\nSpO2 94%\nCrepitations", "Afebrile 37.4Β°C\nCrepitations mild", "Afebrile\nFeeling better\nSpO2 96%", "Stable\nAfebrile\nSpO2 97%"],
[{ text:"Culture Report", options:{bold:true, fill:{color:C.ltTeal}} }, "Sent (pending)", { text:"S. viridans\nisolated", options:{bold:true} }, "MIC confirmed\n0.08 Β΅g/mL", "Sensitivity\nconfirmed", "All 3 sets\nconfirmed"],
[{ text:"Drug 1\nVancomycin", options:{bold:true, fill:{color:"E8E0F4"}, color:"4B0082"} }, { text:"975 mg IV q12h\nβΆ START", options:{color:"4B0082", bold:true} }, { text:"975 mg IV q12h\nTrough: 12 β
", options:{color:"4B0082"} }, { text:"βΉ STOPPED\n(De-escalate)", options:{bold:true, color:C.red} }, "β", "β"],
[{ text:"Drug 2\nPenicillin G", options:{bold:true, fill:{color:"E0F4E8"}, color:C.green} }, "β", "β", { text:"3 MU q4h IV\nβΆ START", options:{bold:true, color:C.green} }, { text:"3 MU q4h IV\n(Continue)", options:{color:C.green} }, { text:"3 MU q4h IV\nβ OPAT Discharge", options:{color:C.green, bold:true} }],
[{ text:"Drug 3\nGentamicin", options:{bold:true, fill:{color:"E0EEF8"}, color:C.teal} }, "β", "β", { text:"65 mg q8h IV\nβΆ START", options:{bold:true, color:C.teal} }, { text:"65 mg q8h IV\nTDM scheduled", options:{color:C.teal} }, { text:"β 55 mg q8h β \nTDM: Peak 4.8β\nTrough 1.4β", options:{color:C.red, bold:true} }],
[{ text:"Drug 4\nFurosemide", options:{bold:true, fill:{color:"EDE8F8"}, color:"6B48B5"} }, "β", "β", { text:"20 mg IV OD\nβΆ START", options:{bold:true, color:"6B48B5"} }, "20 mg IV OD", { text:"20 mg oral OD\n(Discharge)", options:{color:"6B48B5"} }],
[{ text:"Drug 5\nParacetamol", options:{bold:true, fill:{color:"FFF4E0"}, color:C.gold} }, { text:"500 mg q6h PRN\nβΆ START", options:{bold:true, color:C.gold} }, "500 mg q6h PRN", "500 mg q8h PRN", "PRN (once)", { text:"βΉ STOPPED\n(Afebrile)", options:{bold:true, color:C.red} }],
[{ text:"Pharmacist Action", options:{bold:true, fill:{color:C.teal}, color:C.white} }, "Empiric regimen\nrecommendation\nVanco TDM plan", "Vancomycin\ntrough check\n(12 β
)", "Dose calc:\nPen G + Genta\nCounselling", "Monitoring\nTDM scheduled\nADR check", { text:"TDM interpret\nDose β Gentamicin\nDischarge counsel", options:{bold:true} }],
];
sl.addTable(tlRows, {
x:0.2, y:1.2, w:12.9, h:6.05,
colW:[1.65,2.1,2.1,2.1,2.2,2.75],
border:{pt:0.5, color:C.ltGray},
fontSize:8.5, fontFace:"Calibri",
rowH:0.65
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 14 β DRUG INTERACTIONS & TDM SUMMARY CARD
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Drug Interactions & TDM Summary Card", "Slide 14 of 18");
// Drug interactions
card(sl, 0.3, 1.2, 12.7, 3.0);
sectionLabel(sl, "DRUG INTERACTION TABLE", 0.3, 1.2, 12.7);
const diRows = [
[
{ text:"Drug Pair", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Type of Interaction", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Clinical Significance", options:{bold:true, fill:{color:C.navy}, color:C.white} },
{ text:"Management", options:{bold:true, fill:{color:C.navy}, color:C.white} },
],
["Gentamicin + Furosemide", { text:"Additive Ototoxicity", options:{color:C.red, bold:true} }, { text:"HIGH β both damage cochlear hair cells independently", options:{color:C.red} }, "Use lowest Furosemide dose; monitor hearing daily"],
["Gentamicin + Vancomycin\n(Days 1β2 overlap)", { text:"Additive Nephrotoxicity", options:{color:C.gold, bold:true} }, { text:"MODERATE β both nephrotoxic; renal tubular injury risk", options:{color:C.gold} }, "Monitor SCr daily; Vancomycin stopped Day 3"],
["Penicillin G + Probenecid", "Probenecid blocks renal secretion β β Pen G levels", "LOW (potentially beneficial if used intentionally)", "Not co-prescribed here; note for reference"],
["Furosemide + Penicillin G", "Furosemide β hypokalemia β altered drug disposition", "LOW", "Monitor electrolytes (KβΊ) daily"],
];
sl.addTable(diRows, { x:0.3, y:1.55, w:12.7, h:2.55, colW:[2.8,2.8,3.8,3.3], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.6 });
// TDM summary card
card(sl, 0.3, 4.3, 12.7, 2.0);
sectionLabel(sl, "TDM QUICK REFERENCE CARD", 0.3, 4.3, 12.7);
const tdmSumRows = [
[
{ text:"Drug", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Target Peak", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Target Trough", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Day 2 Result", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Day 5 Result", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Action Taken", options:{bold:true, fill:{color:C.teal}, color:C.white} },
],
[{ text:"Vancomycin", options:{bold:true} }, "β", "10β15 Β΅g/mL", { text:"12 Β΅g/mL β
", options:{color:C.green} }, "N/A (stopped Day 3)", "Maintained β De-escalated to Penicillin G"],
[{ text:"Gentamicin", options:{bold:true} }, "3.0β3.5 Β΅g/mL", "< 1.0 Β΅g/mL", "Not yet drawn", { text:"Peak 4.8 β\nTrough 1.4 β", options:{color:C.red, bold:true} }, { text:"Dose reduced\n65 mg β 55 mg q8h", options:{bold:true, color:C.teal} }],
];
sl.addTable(tdmSumRows, { x:0.3, y:4.65, w:12.7, h:1.55, colW:[1.8,1.8,1.8,1.9,2.1,3.3], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.72 });
sl.addText("Reference: Harrison's Principles of Internal Medicine 22E (2025) β 'Target peak ~3.5 Β΅g/mL and trough β€1 Β΅g/mL for divided-dose gentamicin in IE'", {
x:0.3, y:6.38, w:12.7, h:0.3, fontSize:8, color:C.midGray, italic:true, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 15 β 5 DRUGS SUMMARY CARD
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "5 Drugs at a Glance β Quick Revision Card", "Slide 15 of 18");
const drugs5 = [
{ num:"1", name:"VANCOMYCIN", days:"Days 1β2", use:"Empiric broad-spectrum (pre-culture)", key:"Trough: 10β15 Β΅g/mL", color:C.navy },
{ num:"2", name:"PENICILLIN G", days:"Day 3 β 4 wks", use:"Definitive (S. viridans MIC 0.08)", key:"Allergy Hx; Hypokalemia", color:C.teal },
{ num:"3", name:"GENTAMICIN", days:"Days 3β14 (2 wks)", use:"Synergy with Penicillin G", key:"Peak 3β3.5 | Trough <1 Β΅g/mL", color:C.green },
{ num:"4", name:"FUROSEMIDE", days:"Days 3β5 β oral", use:"Fluid overload / pulmonary congestion", key:"KβΊ, SCr, urine output; Ototox risk w/ Genta", color:"6B48B5" },
{ num:"5", name:"PARACETAMOL", days:"Days 1β5 PRN", use:"Fever + arthralgias (NSAIDs contraindicated)", key:"LFT; max 4g/day", color:C.gold },
];
drugs5.forEach((d, i) => {
const gy = 1.3 + i * 1.08;
card(sl, 0.3, gy, 12.7, 1.0);
sl.addShape(pres.shapes.RECTANGLE, { x:0.3, y:gy, w:0.7, h:1.0, fill:{color:d.color}, line:{color:d.color} });
sl.addText(d.num, { x:0.3, y:gy+0.25, w:0.7, h:0.5, fontSize:22, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addShape(pres.shapes.RECTANGLE, { x:1.0, y:gy, w:2.8, h:1.0, fill:{color:d.color}, line:{color:d.color} });
sl.addText(d.name, { x:1.0, y:gy+0.1, w:2.8, h:0.5, fontSize:14, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addText(d.days, { x:1.0, y:gy+0.6, w:2.8, h:0.35, fontSize:10, color:"D0E8F0", align:"center", fontFace:"Calibri" });
sl.addText("Why Used:", { x:3.9, y:gy+0.08, w:1.1, h:0.35, fontSize:9, bold:true, color:C.midGray, fontFace:"Calibri" });
sl.addText(d.use, { x:5.0, y:gy+0.08, w:4.5, h:0.4, fontSize:10.5, color:C.navy, fontFace:"Calibri" });
sl.addText("Key Monitor:", { x:3.9, y:gy+0.55, w:1.2, h:0.35, fontSize:9, bold:true, color:C.midGray, fontFace:"Calibri" });
sl.addText(d.key, { x:5.1, y:gy+0.55, w:8.0, h:0.35, fontSize:10, color:C.slate, fontFace:"Calibri" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 16 β MONITORING PARAMETERS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Monitoring Parameters", "Slide 16 of 18");
// Clinical
card(sl, 0.3, 1.2, 6.2, 2.8);
sectionLabel(sl, "CLINICAL MONITORING", 0.3, 1.2, 6.2);
const clinRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.teal}, color:C.white} }, { text:"Frequency", options:{bold:true, fill:{color:C.teal}, color:C.white} }, { text:"Target", options:{bold:true, fill:{color:C.teal}, color:C.white} }],
["Temperature", "q6β8h", "Afebrile within 5β7 days"],
["Heart rate / BP", "Daily", "Hemodynamic stability"],
["Murmur character", "Daily auscultation", "No new murmur / worsening"],
["Urine output", "Daily", "> 0.5 mL/kg/hr"],
["Embolic signs\n(neuro, flank, vision)", "Every assessment", "Absence"],
["HF signs (JVP, edema)", "Daily", "Absence"],
];
sl.addTable(clinRows, { x:0.3, y:1.55, w:6.2, h:2.4, colW:[2.0,1.5,2.7], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.37 });
// Lab
card(sl, 6.8, 1.2, 6.2, 2.8);
sectionLabel(sl, "LABORATORY MONITORING", 6.8, 1.2, 6.2);
const labRows = [
[{ text:"Test", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Frequency", options:{bold:true, fill:{color:C.navy}, color:C.white} }, { text:"Reason", options:{bold:true, fill:{color:C.navy}, color:C.white} }],
["Blood cultures (repeat)", "48β72 hrs of therapy", "Confirm bacteremia clearance"],
["SCr, BUN", "Daily (Gentamicin phase)", "Nephrotoxicity detection"],
["Urinalysis", "Every 3 days", "Tubular injury casts"],
["CBC", "Twice weekly", "Drug-induced cytopenias"],
["CRP, ESR", "Weekly", "Inflammation trend"],
["Genta Peak + Trough", "After 3rd dose, then q3β4 days", "TDM β dose individualisation"],
["Repeat Echo (TTE)", "Week 2β3 of therapy", "Vegetation resolution assessment"],
];
sl.addTable(labRows, { x:6.8, y:1.55, w:6.2, h:2.4, colW:[2.0,1.6,2.6], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.3 });
// Ototoxicity
card(sl, 0.3, 4.1, 12.7, 1.3, "FFF0F0");
sectionLabel(sl, "OTOTOXICITY MONITORING β GENTAMICIN SPECIFIC", 0.3, 4.1, 12.7);
const otoRows = [
[{ text:"What to Ask/Test", options:{bold:true, fill:{color:C.red}, color:C.white} }, { text:"Frequency", options:{bold:true, fill:{color:C.red}, color:C.white} }],
["Ask daily: any new hearing difficulty, ringing (tinnitus), dizziness or vertigo", "Every day during Gentamicin therapy"],
["Formal audiometry testing", "If any symptom reported (or as baseline before starting)"],
];
sl.addTable(otoRows, { x:0.3, y:4.45, w:12.7, h:0.88, colW:[9.5,3.2], border:{pt:0.5,color:C.ltGray}, fontSize:10, fontFace:"Calibri", rowH:0.4 });
// Outcome markers
card(sl, 0.3, 5.45, 12.7, 0.85, C.ltTeal);
sl.addText("Outcome Markers for Treatment Success: Temperature normal for β₯7 days | Repeat blood cultures negative | CRP trending down | No new embolic events | Vegetation size reducing on echo | Hearing intact", {
x:0.5, y:5.5, w:12.4, h:0.75, fontSize:10, color:C.navy, fontFace:"Calibri"
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 17 β COMPLICATIONS & ANTIBIOTIC PROPHYLAXIS
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Complications Encountered & Antibiotic Prophylaxis", "Slide 17 of 18");
// Complications
card(sl, 0.3, 1.2, 7.8, 4.0);
sectionLabel(sl, "COMPLICATIONS IN THIS CASE", 0.3, 1.2, 7.8);
const comps = [
{ title:"1. Early Nephrotoxicity (Day 5)", color:C.red, detail:"SCr rose 0.9 β 1.1 mg/dL.\nCause: Gentamicin (elevated trough 1.4 Β΅g/mL).\nManagement: Dose reduced 65β55 mg q8h.\nOutcome: SCr back to 0.9 by Day 10." },
{ title:"2. Immune Glomerulonephritis", color:C.gold, detail:"Hematuria + proteinuria on admission.\nCause: Circulating immune complexes.\nManagement: Resolved with antibiotics alone (no steroids).\nOutcome: Urinalysis improving by Week 3." },
{ title:"3. Splenic Embolic Infarct (Day 6)", color:"6B48B5", detail:"Left upper quadrant pain Day 6.\nCT: Small splenic infarct found.\nManagement: Analgesics ONLY β NO anticoagulation.\nReason: Risk of hemorrhagic conversion.\nOutcome: Resolved conservatively." },
];
comps.forEach((c, i) => {
const cy = 1.6 + i * 1.15;
sl.addShape(pres.shapes.RECTANGLE, { x:0.35, y:cy, w:0.22, h:0.9, fill:{color:c.color}, line:{color:c.color} });
sl.addText(c.title, { x:0.65, y:cy+0.03, w:7.2, h:0.32, fontSize:10.5, bold:true, color:c.color, fontFace:"Calibri", margin:0 });
sl.addText(c.detail, { x:0.65, y:cy+0.35, w:7.2, h:0.68, fontSize:9, color:C.slate, fontFace:"Calibri", margin:0 });
});
// Prophylaxis
card(sl, 8.5, 1.2, 4.5, 4.0);
sectionLabel(sl, "ANTIBIOTIC PROPHYLAXIS", 8.5, 1.2, 4.5);
sl.addText([
{ text:"AHA 2007 / ESC 2015 Guidelines\n\n", options:{bold:true, breakLine:true, color:C.teal} },
{ text:"Before ANY future dental procedure:\n", options:{bold:true, breakLine:true} },
{ text:"β’ Amoxicillin 2g orally\n 30β60 min before procedure\n\n", options:{breakLine:true} },
{ text:"If Penicillin allergic:\n", options:{bold:true, breakLine:true} },
{ text:"β’ Clindamycin 600 mg OR\nβ’ Azithromycin 500 mg\n (oral, before procedure)\n\n", options:{breakLine:true} },
{ text:"Who needs prophylaxis?\n", options:{bold:true, breakLine:true} },
{ text:"β Prior history of IE β Our patient\nβ Prosthetic heart valves\nβ Unrepaired cyanotic CHD\nβ Cardiac transplant with valvulopathy", options:{} },
], { x:8.6, y:1.6, w:4.3, h:3.45, fontSize:9.5, color:C.navy, fontFace:"Calibri", valign:"top" });
// Viva trap box
card(sl, 0.3, 5.3, 12.7, 0.95, "FFF0F0");
sl.addText("β Common Viva Trap: IE + embolic infarct β Do NOT anticoagulate. AHA 2015 advises against anticoagulation in IE with embolic events (risk of hemorrhagic transformation). Only anticoagulate if there is a pre-existing firm indication (mechanical valve, AF).",
{ x:0.5, y:5.35, w:12.4, h:0.85, fontSize:10, color:C.red, fontFace:"Calibri" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 18 β PATIENT COUNSELLING, DISCHARGE & OUTCOME
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Patient Counselling, Discharge Summary & Outcome", "Slide 18 of 18");
// Counselling
card(sl, 0.3, 1.2, 7.0, 3.5);
sectionLabel(sl, "PATIENT COUNSELLING POINTS", 0.3, 1.2, 7.0);
const counselItems = [
["IV Therapy Compliance", "4 weeks of IV antibiotics needed β bacteria inside vegetation require prolonged killing"],
["Missed Doses", "Missing even 1 dose risks treatment failure β drug-resistant relapse"],
["Toxicity Signs", "Report: Decreased hearing, tinnitus, dizziness (ototoxicity); decreased urine output (nephrotoxicity)"],
["NSAIDs Warning", "Avoid NSAIDs (ibuprofen, aspirin) β increase bleeding risk from embolic sites"],
["Dental Hygiene", "Excellent oral hygiene; regular dental checkups reduce bacteremia risk"],
["Prophylaxis Card", "Carry antibiotic prophylaxis card to EVERY dental/surgical visit for LIFE"],
["Red Flags", "Return immediately: Recurrent fever, new neurological symptoms, chest pain, breathlessness"],
];
const counselRows = [[
{ text:"Topic", options:{bold:true, fill:{color:C.teal}, color:C.white} },
{ text:"Counselling Content", options:{bold:true, fill:{color:C.teal}, color:C.white} }
], ...counselItems.map(r => [{ text:r[0], options:{bold:true} }, r[1]])];
sl.addTable(counselRows, { x:0.3, y:1.55, w:7.0, h:3.1, colW:[2.1,4.9], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.4 });
// Outcome
card(sl, 7.6, 1.2, 5.4, 3.5);
sectionLabel(sl, "OUTCOME AT DISCHARGE (Day 5)", 7.6, 1.2, 5.4);
const outRows = [
[{ text:"Parameter", options:{bold:true, fill:{color:C.green}, color:C.white} }, { text:"Value", options:{bold:true, fill:{color:C.green}, color:C.white} }],
["Temperature", { text:"36.8Β°C (Afebrile 36 hrs)", options:{color:C.green} }],
["BP", "108/70 mmHg β Stable"],
["SpO2", { text:"97% room air β
", options:{color:C.green} }],
["Hb", "10.2 g/dL (improving)"],
["CRP", "22 mg/L (β from 68)"],
["S. Creatinine", { text:"0.9 mg/dL β
(baseline)", options:{color:C.green} }],
["Blood Culture", "Pending repeat β expected -ve"],
["Hearing", { text:"Intact β
", options:{color:C.green} }],
["Vegetation (echo)", "Unchanged at discharge"],
];
sl.addTable(outRows, { x:7.6, y:1.55, w:5.4, h:3.1, colW:[2.4,3.0], border:{pt:0.5,color:C.ltGray}, fontSize:9.5, fontFace:"Calibri", rowH:0.3 });
// Discharge meds
card(sl, 0.3, 4.8, 12.7, 1.0, C.ltTeal);
sectionLabel(sl, "DISCHARGE MEDICATIONS", 0.3, 4.8, 12.7);
sl.addText("1. Penicillin G 3 MU IV q4h β Continue OPAT (3 more weeks) 2. Furosemide 20 mg oral OD 3. Lisinopril 2.5 mg oral OD (MR afterload reduction) 4. Antibiotic Prophylaxis Card issued (Amoxicillin 2g before dental procedures)", {
x:0.5, y:5.15, w:12.4, h:0.6, fontSize:10, color:C.navy, fontFace:"Calibri"
});
// Follow-up
card(sl, 0.3, 5.85, 12.7, 0.6, "E8F0E8");
sl.addText("Follow-up: Cardiology clinic in 2 weeks β Mitral valve repair/replacement evaluation (RHD + IE = valve damage likely to progress). Avoid strenuous activity until vegetation fully resolved.",
{ x:0.5, y:5.9, w:12.4, h:0.5, fontSize:9.5, color:C.green, fontFace:"Calibri" });
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 19 β VIVA Q&A + REFERENCES
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
addSlideHeader(sl, "Examiner Viva Q&A & References", "Slide 19 of 18");
card(sl, 0.3, 1.2, 7.8, 5.1);
sectionLabel(sl, "EXPECTED VIVA QUESTIONS & ANSWERS", 0.3, 1.2, 7.8);
const vivaItems = [
{ q:"Why bactericidal and not bacteriostatic therapy in IE?", a:"Vegetations are avascular β bacteria are deep inside fibrin in metabolically inactive state. Only bactericidal agents achieve sufficient killing." },
{ q:"Why Gentamicin only 2 weeks, not 4?", a:"Synergistic benefit is achieved in 2 weeks. Beyond that, irreversible ototoxicity (cochlear hair cells) and nephrotoxicity risk outweigh benefit for highly susceptible strains." },
{ q:"TTE vs TEE β when to use which?", a:"TTE first in all patients (sensitivity 50β60%). TEE (sensitivity 90%) when TTE negative but suspicion remains high, prosthetic valves, or suspected perivalvular abscess." },
{ q:"Why was anticoagulation NOT given for splenic embolus?", a:"Risk of hemorrhagic transformation of embolic infarcts. AHA 2015: avoid anticoagulation unless pre-existing indication exists (mechanical valve, AF)." },
{ q:"What is the pharmacist's specific role?", a:"Empiric regimen selection, dose calculation (IBW for Gentamicin), TDM peak/trough sampling timing & interpretation, dose adjustment, ADR surveillance, antibiotic prophylaxis counselling." },
{ q:"What is Definite IE by Duke criteria?", a:"2 Major criteria OR 1 Major + 3 Minor criteria OR 5 Minor criteria. Our patient: 2 Major criteria (cultures + echo vegetation) = Definite IE." },
];
vivaItems.forEach((v, i) => {
const vy = 1.6 + i * 0.78;
sl.addText("Q" + (i+1) + ": " + v.q, { x:0.45, y:vy, w:7.5, h:0.28, fontSize:9.5, bold:true, color:C.navy, fontFace:"Calibri", margin:0 });
sl.addText("β " + v.a, { x:0.55, y:vy+0.28, w:7.3, h:0.43, fontSize:9, color:C.slate, fontFace:"Calibri", margin:0 });
});
card(sl, 8.5, 1.2, 4.5, 5.1);
sectionLabel(sl, "REFERENCES", 8.5, 1.2, 4.5);
const refs = [
"1. Harrison's Principles of Internal Medicine, 22nd Ed. (2025) β Ch.63",
"2. Fuster & Hurst's The Heart, 15th Ed. β Ch.33, Tables 33-4, 33-9",
"3. Washington Manual of Medical Therapeutics β Ch.14, Tables 14-5,6,7",
"4. Goldman-Cecil Medicine β Ch.61",
"5. Baddour LM et al. AHA Scientific Statement. Circulation. 2015;132(15):1435-1486.",
"6. Habib G et al. ESC Guidelines for IE. Eur Heart J. 2015;36(44):3075.",
"7. Dipiro JT et al. Pharmacotherapy: A Pathophysiologic Approach, 11th Ed. β Ch.104",
"8. Li JS et al. Duke Criteria Modifications. Clin Infect Dis. 2000;30(4):633.",
];
refs.forEach((r, i) => {
sl.addText(r, { x:8.6, y:1.6 + i*0.56, w:4.3, h:0.5, fontSize:8.5, color:C.slate, fontFace:"Calibri", valign:"top" });
});
}
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SLIDE 20 β CLOSING SLIDE
// βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
let sl = pres.addSlide();
sl.background = { color: C.navy };
sl.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.35, h:7.5, fill:{color:C.teal}, line:{color:C.teal} });
sl.addShape(pres.shapes.RECTANGLE, { x:0.35, y:3.4, w:12.95, h:0.06, fill:{color:C.gold}, line:{color:C.gold} });
sl.addText("Thank You", { x:0.6, y:1.5, w:12, h:1.2, fontSize:52, bold:true, color:C.white, align:"center", fontFace:"Calibri" });
sl.addText("Native Valve Infective Endocarditis β S. viridans", { x:0.6, y:2.7, w:12, h:0.55, fontSize:16, color:"7EC8E3", align:"center", fontFace:"Calibri", italic:true });
sl.addText([
{ text:"Open for Questions", options:{bold:true, color:C.gold} },
], { x:0.6, y:3.7, w:12, h:0.6, fontSize:18, align:"center", fontFace:"Calibri" });
sl.addText("Pharmacotherapeutics β II | 3rd Year PharmD", { x:0.6, y:5.5, w:12, h:0.4, fontSize:12, color:C.midGray, align:"center", fontFace:"Calibri" });
sl.addText("References: Harrison's 22E Β· Fuster & Hurst 15E Β· Washington Manual Β· AHA 2015 Β· ESC 2015", {
x:0.6, y:6.1, w:12, h:0.35, fontSize:9, color:"506070", align:"center", fontFace:"Calibri"
});
}
// ββ WRITE FILE βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
pres.writeFile({ fileName: "/home/daytona/workspace/ie-case-presentation/IE_NativeValve_PharmD_CasePresentation.pptx" })
.then(() => { console.log("β
PPTX created successfully"); })
.catch(e => { console.error("β Error:", e); });