Management, prevention and lifestyle modification of osteoarthritis and gout
"osteoarthritis"[MeSH Terms] AND "management"[MeSH Terms]
"gout"[MeSH Terms] AND "management"[MeSH Terms]
"osteoarthritis" AND "exercise" OR "lifestyle"
"gout" AND "urate lowering" OR "lifestyle"

| Type | Details |
|---|---|
| Strength training | High-resistance, low-repetition with progressive increase; targets muscle groups around affected joint (e.g., knee extensors/flexors, hip abductors, calf muscles for knee OA) |
| Aerobic exercise | Low-impact, high-repetition (walking, cycling); can be land-based or aquatic (hydrotherapy) |
| Range-of-motion / Flexibility | Maintains joint mobility; should always be included but is insufficient alone |
| Neuromuscular training | Improves movement control; especially useful as patients with OA show altered movement patterns |
| Grade | Intervention | Recommendation |
|---|---|---|
| Strong (4-star) | Patient education, exercise (supervised/unsupervised/aquatic), self-management programs | Recommended |
| Strong (4-star) | Topical NSAIDs, oral NSAIDs, oral acetaminophen | Recommended |
| Strong (4-star) | Oral narcotics (including tramadol) | Not recommended |
| Moderate (3-star) | Canes, braces, neuromuscular training, sustained weight loss | Recommended |
| Moderate (3-star) | Intra-articular corticosteroids (short-term) | Recommended |
| Moderate (3-star) | Hyaluronic acid injections, arthroscopy with lavage/debridement | Not recommended |
| Limited (2-star) | Glucosamine, chondroitin, PRP, acupuncture, TENS, shockwave therapy | May be used selectively |
| Drug | Dose | Notes/Contraindications |
|---|---|---|
| NSAIDs (indomethacin 50 mg TID; naproxen 500 mg BID; ibuprofen 800 mg TID; meloxicam 15 mg daily) | Full anti-inflammatory doses | First-line; avoid in CKD, peptic ulcer disease, anticoagulation |
| Colchicine | 1.2 mg PO, then 0.6 mg 1 hour later (low-dose regimen; equally effective and better tolerated) | Most effective within first 36 hours; avoid with carvedilol/grapefruit juice (raises levels); contraindicated in CKD |
| Intra-articular corticosteroids (triamcinolone/methylprednisolone) | 40 mg for large joints; 10-20 mg for small joints | Monoarticular attack; rule out septic arthritis first; effective in 90% within 24 hours |
| Oral corticosteroids (prednisone) | 40-60 mg daily, taper over 7-10 days | When NSAIDs and colchicine contraindicated; caution with uncontrolled diabetes |
| IL-1 inhibitor (anakinra) | 100 mg SC daily for 3 days | When standard therapy is contraindicated or ineffective; avoid in active infection |

| Drug | Class | Dose | Key Points |
|---|---|---|---|
| Allopurinol | Xanthine oxidase inhibitor | Start 100 mg/day (50 mg in CKD stage 4+); titrate by 100 mg every 2-5 weeks to target; max 800 mg | First-line; screen African Americans and Southeast Asians for HLA-B*5801 before starting (risk of severe cutaneous reaction/allopurinol hypersensitivity syndrome - 25% mortality) |
| Febuxostat | Xanthine oxidase inhibitor | 40-80 mg/day (40 mg ≈ allopurinol 300 mg) | Second-line; more expensive; associated with higher cardiovascular event rate; caution with azathioprine/6-MP (inhibits their metabolism - reduce dose 60-75%) |
| Probenecid | Uricosuric | 500 mg/day, titrate to max 3000 mg/day in divided doses | First-choice uricosuric; ineffective in significant renal impairment; avoid if urinary uric acid >800 mg/24 hours (nephrolithiasis risk) |
| Lesinurad | Uricosuric | 200 mg/day | Used in combination with XOI |
| Pegloticase | Uricase | 8 mg IV every 2 weeks | Refractory tophaceous gout; recombinant uricase converts urate to allantoin |
| Avoid / Limit | Encourage |
|---|---|
| Red meat and organ meats (liver, kidney) - high purine load | Low-fat dairy products (mildly uricosuric effect) |
| Shellfish (shrimp, lobster, scallops) | Vegetables (even high-purine vegetables like spinach do not significantly raise uric acid) |
| High-fructose corn syrup / sugar-sweetened beverages | Adequate hydration (2-3 L/day to promote urate excretion) |
| Alcohol (especially beer - highest risk; spirits moderate risk; wine less so) | Coffee (associated with lower uric acid levels) |
| Excessive fructose | Cherries / tart cherry juice (small evidence for lowering flare frequency) |
| Feature | Osteoarthritis | Gout |
|---|---|---|
| Primary lifestyle change | Weight loss + exercise | Low-purine diet + reduce alcohol |
| First-line drug (acute) | Topical/oral NSAIDs, acetaminophen | NSAIDs, colchicine, corticosteroids |
| Disease-modifying therapy | None approved (exercise/weight loss are closest) | Urate-lowering therapy (allopurinol) |
| Long-term prevention | Exercise adherence, weight maintenance | Maintain serum urate <6 mg/dL with ULT |
| Key "don't" | Avoid opioids/tramadol | Never stop ULT during a flare |
| Surgical option | Total joint arthroplasty | Rarely needed (tophus debridement) |
Make it short and comprehensive
| Step | Drug | Notes |
|---|---|---|
| 1st line | Topical NSAIDs (diclofenac gel) | Preferred - least systemic exposure |
| 1st line | Oral acetaminophen | Modest pain relief |
| 2nd line | Oral NSAIDs (naproxen, ibuprofen, celecoxib) | More effective; use lowest dose/shortest duration; add PPI if high GI risk |
| Adjunct | Duloxetine | Useful for central sensitization |
| Intra-articular | Corticosteroids | Short-term relief only |
| Avoid | Opioids/tramadol | AAOS strongly recommends against |
| Not recommended | Hyaluronic acid, arthroscopic lavage | No proven benefit |
| Drug | Dose | Notes |
|---|---|---|
| NSAIDs (indomethacin, naproxen) | Full anti-inflammatory doses | First-line; avoid in CKD, PUD, anticoagulation |
| Colchicine | 1.2 mg then 0.6 mg 1 hr later | Most effective within first 36 hours; avoid in CKD |
| Intra-articular steroids | 40 mg large / 10-20 mg small joints | Monoarticular attack; rule out septic arthritis |
| Oral prednisone | 40-60 mg/day, taper over 7-10 days | When NSAIDs and colchicine contraindicated |
| Anakinra (IL-1 inhibitor) | 100 mg SC daily × 3 days | Refractory cases; avoid if active infection |
| Drug | Class | Dose | Key Caution |
|---|---|---|---|
| Allopurinol | XO inhibitor | Start 100 mg, titrate slowly | Screen for HLA-B*5801 in African Americans & Southeast Asians (severe skin reaction risk) |
| Febuxostat | XO inhibitor | 40-80 mg/day | Higher CV event rate; second-line |
| Probenecid | Uricosuric | 500-3000 mg/day | Ineffective in renal impairment; nephrolithiasis risk |
| Pegloticase | Uricase (IV) | 8 mg IV q2 weeks | Refractory tophaceous gout only |
| Avoid | Favour |
|---|---|
| Red meat, organ meats, shellfish (high purine) | Low-fat dairy (mildly uricosuric) |
| Beer > spirits > wine | Adequate hydration (2-3 L/day) |
| Sugar-sweetened drinks / fructose | Coffee, cherries/tart cherry juice |
| Thiazide/loop diuretics (if possible, switch) | Losartan (antihypertensive with mild uricosuric effect) |
| Rapid weight loss (triggers flares) | Gradual, sustained weight loss |
| Sedentary lifestyle | Regular moderate exercise |
| Osteoarthritis | Gout | |
|---|---|---|
| Key lifestyle change | Weight loss + exercise | Low-purine diet + reduce alcohol |
| Acute treatment | Topical/oral NSAIDs, acetaminophen | NSAIDs, colchicine, steroids |
| Long-term prevention | Exercise adherence, weight control | ULT to keep urate <6 mg/dL |
| Critical "don't" | Avoid opioids | Never stop ULT during a flare |
Can u make link of this content
What kind of link/file do you want?
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
mkdir -p /home/daytona/workspace/oa-gout && python3 - << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable from reportlab.lib.enums import TA_CENTER, TA_LEFT doc = SimpleDocTemplate( "/home/daytona/workspace/oa-gout/OA_Gout_Management.pdf", pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm ) styles = getSampleStyleSheet() W = A4[0] - 4*cm # Custom styles title_style = ParagraphStyle('Title', parent=styles['Title'], fontSize=18, textColor=colors.HexColor('#1a3a5c'), spaceAfter=6, alignment=TA_CENTER) h1_style = ParagraphStyle('H1', parent=styles['Heading1'], fontSize=14, textColor=colors.white, backColor=colors.HexColor('#1a3a5c'), spaceBefore=14, spaceAfter=4, leftIndent=-4, rightIndent=-4, borderPad=5) h2_style = ParagraphStyle('H2', parent=styles['Heading2'], fontSize=12, textColor=colors.HexColor('#1a3a5c'), spaceBefore=10, spaceAfter=4, borderPad=3) h3_style = ParagraphStyle('H3', parent=styles['Heading3'], fontSize=10, textColor=colors.HexColor('#2c5f8a'), spaceBefore=7, spaceAfter=2) body_style = ParagraphStyle('Body', parent=styles['Normal'], fontSize=9, leading=13, spaceAfter=3) bullet_style = ParagraphStyle('Bullet', parent=styles['Normal'], fontSize=9, leading=13, leftIndent=14, bulletIndent=4, spaceAfter=2) caption_style = ParagraphStyle('Caption', parent=styles['Normal'], fontSize=7.5, textColor=colors.grey, alignment=TA_CENTER, spaceAfter=4) footer_style = ParagraphStyle('Footer', parent=styles['Normal'], fontSize=7, textColor=colors.grey, alignment=TA_CENTER) def tbl_style(header_color='#1a3a5c'): return TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor(header_color)), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,0), 8), ('FONTNAME', (0,1), (-1,-1), 'Helvetica'), ('FONTSIZE', (0,1), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#eef3f8')]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#b0c4de')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('LEFTPADDING', (0,0), (-1,-1), 5), ('RIGHTPADDING', (0,0), (-1,-1), 5), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ]) def bullet(text): return Paragraph(f"• {text}", bullet_style) def body(text): return Paragraph(text, body_style) def h1(text): return Paragraph(f" {text}", h1_style) def h2(text): return Paragraph(text, h2_style) def h3(text): return Paragraph(text, h3_style) story = [] # Title story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Osteoarthritis & Gout", title_style)) story.append(Paragraph("Management, Prevention & Lifestyle Modification", ParagraphStyle('sub', parent=styles['Normal'], fontSize=11, textColor=colors.HexColor('#2c5f8a'), alignment=TA_CENTER, spaceAfter=2))) story.append(Paragraph("Based on ACR 2019 Guidelines | AAOS CPG | Harrison's | Firestein & Kelley's | Washington Manual", caption_style)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#1a3a5c'), spaceAfter=10)) # ────────────────────────────────── # SECTION 1: OSTEOARTHRITIS # ────────────────────────────────── story.append(h1("PART 1: OSTEOARTHRITIS (OA)")) story.append(Spacer(1, 0.3*cm)) story.append(h2("Core Principle")) story.append(body("All guidelines agree: <b>Education + Exercise + Weight Management</b> form the non-negotiable foundation. Pharmacologic and surgical options are layered on top based on disease stage and patient factors.")) story.append(h2("Lifestyle Modifications & Prevention")) for b in [ "<b>Weight loss</b> – Most impactful modifiable factor. ≥20% weight loss yields greatest pain and function benefit. Combine diet + exercise (diet alone risks sarcopenia).", "<b>Exercise</b> – No single type is superior; tailor to patient preference and comorbidities:", " ◦ Strength/resistance training (progressive loading; target muscles around affected joint)", " ◦ Aerobic exercise – walking, cycling, aquatic therapy (low-impact)", " ◦ Range-of-motion and flexibility exercises (always include; insufficient alone)", " ◦ Neuromuscular training (improves movement control)", "<b>Patient Education</b> – Ongoing process; use positive, non-fatalistic language; direct patients to CDC, Arthritis Foundation.", "<b>Assistive devices</b> – Canes, braces, shoe insoles (lateral wedge insoles not recommended).", "<b>Occupational therapy</b> – Especially for hand OA.", ]: story.append(bullet(b)) story.append(h2("Pharmacologic Management")) oa_pharm = [ ["Step", "Drug/Intervention", "Notes"], ["1st line", "Topical NSAIDs (diclofenac gel)", "Preferred – lowest systemic exposure; same efficacy as oral"], ["1st line", "Oral acetaminophen", "Modest pain relief; safe for most patients"], ["2nd line", "Oral NSAIDs (naproxen, ibuprofen, celecoxib)", "More effective; use lowest dose/shortest duration; add PPI if high GI risk"], ["Adjunct", "Duloxetine", "Useful for central sensitization / widespread pain"], ["Intra-articular", "Corticosteroids (triamcinolone)", "Short-term relief; repeated injections may cause cartilage damage"], ["Avoid", "Opioids / Tramadol", "AAOS strongly recommends AGAINST – poor benefit/risk ratio"], ["Not recommended", "Hyaluronic acid, Arthroscopic lavage/debridement", "No proven benefit in current guidelines"], ] t = Table(oa_pharm, colWidths=[2.5*cm, 6*cm, 8.5*cm]) t.setStyle(tbl_style()) story.append(t) story.append(Spacer(1, 0.3*cm)) story.append(h2("Surgical Options")) for b in [ "<b>Total joint arthroplasty</b> – After adequate trial of all other modalities; durable pain relief.", "<b>High tibial osteotomy</b> – Selected patients with unicompartmental knee OA.", "<b>NOT recommended:</b> Arthroscopic partial meniscectomy for OA-related pathology.", ]: story.append(bullet(b)) story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#b0c4de'), spaceBefore=10, spaceAfter=10)) # ────────────────────────────────── # SECTION 2: GOUT # ────────────────────────────────── story.append(h1("PART 2: GOUT")) story.append(Spacer(1, 0.3*cm)) story.append(h2("Core Principle")) story.append(body("Two distinct goals: <b>(1)</b> Treat the acute flare promptly; <b>(2)</b> Lower serum urate long-term to prevent recurrence and tophi formation. Risk factors: obesity, Western diet (high purines), alcohol, sedentary lifestyle, diuretics, hypertension, CKD.")) story.append(h2("Acute Flare Treatment")) acute_gout = [ ["Drug", "Dose", "Notes / Contraindications"], ["NSAIDs (indomethacin, naproxen, ibuprofen)", "Full anti-inflammatory doses", "FIRST-LINE. Avoid in CKD, peptic ulcer disease, anticoagulation"], ["Colchicine", "1.2 mg PO, then 0.6 mg 1 hr later", "Most effective within 36 hrs; avoid in CKD; caution with carvedilol/grapefruit juice"], ["Intra-articular corticosteroids", "40 mg large joints; 10–20 mg small joints", "Monoarticular attack; rule out septic arthritis first; 90% effective in 24 hrs"], ["Oral prednisone", "40–60 mg/day; taper over 7–10 days", "When NSAIDs & colchicine contraindicated; caution in poorly controlled diabetes"], ["Anakinra (IL-1 inhibitor)", "100 mg SC daily × 3 days", "Refractory cases; contraindicated in active infection"], ] t = Table(acute_gout, colWidths=[4.5*cm, 4.5*cm, 8*cm]) t.setStyle(tbl_style()) story.append(t) story.append(Spacer(1, 0.3*cm)) story.append(h2("Urate-Lowering Therapy (ULT) – Chronic Gout")) story.append(h3("Indications for ULT:")) for b in [ "≥2 acute flares/year", "Presence of tophi", "Urate nephropathy or nephrolithiasis", "CKD ≥ stage 3, or uric acid >9 mg/dL at first flare", ]: story.append(bullet(b)) story.append(h3("Serum Urate Targets:")) story.append(bullet("<b><6 mg/dL</b> – no tophi present")) story.append(bullet("<b><5 mg/dL</b> – tophi present")) story.append(h3("Timing & Prophylaxis:")) for b in [ "Start ULT ≥2 weeks AFTER flare resolves.", "<b>Never stop ULT during an active flare</b> – fluctuations worsen attacks.", "Start <b>flare prophylaxis</b> (low-dose colchicine) 1–2 weeks BEFORE ULT initiation; continue ≥6 months after urate reaches target.", ]: story.append(bullet(b)) story.append(h3("ULT Drug Options:")) ult_drugs = [ ["Drug", "Class", "Dose", "Key Caution"], ["Allopurinol", "XO Inhibitor (1st line)", "Start 100 mg; titrate slowly; max 800 mg", "Screen for HLA-B*5801 in African Americans & SE Asians (severe skin reaction risk)"], ["Febuxostat", "XO Inhibitor (2nd line)", "40–80 mg/day", "Higher cardiovascular event rate; blocks azathioprine/6-MP metabolism"], ["Probenecid", "Uricosuric", "500–3000 mg/day", "Ineffective in renal impairment; avoid if urinary uric acid >800 mg/24h"], ["Pegloticase", "Uricase (IV)", "8 mg IV every 2 weeks", "Refractory tophaceous gout only; expensive"], ] t = Table(ult_drugs, colWidths=[3*cm, 3.5*cm, 4.5*cm, 6*cm]) t.setStyle(tbl_style()) story.append(t) story.append(Spacer(1, 0.3*cm)) story.append(h2("Lifestyle Modifications & Prevention in Gout")) lifestyle_gout = [ ["AVOID / LIMIT", "ENCOURAGE"], ["Red meat, organ meats (liver, kidney)", "Low-fat dairy products (mildly uricosuric)"], ["Shellfish (shrimp, lobster, scallops)", "Adequate hydration: 2–3 L/day"], ["Beer > spirits (highest purine/alcohol risk)", "Coffee (associated with lower uric acid)"], ["Sugar-sweetened drinks / high fructose corn syrup", "Cherries / tart cherry juice (may reduce flare frequency)"], ["Rapid/crash weight loss (triggers flares via ketosis)", "Gradual, sustained weight loss"], ["Thiazide & loop diuretics (raise urate) – switch if possible", "Losartan for HTN (mild uricosuric effect)"], ["Sedentary lifestyle", "Regular moderate exercise"], ] t = Table(lifestyle_gout, colWidths=[8.5*cm, 8.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#c0392b')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#fdecea')]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#e0b0b0')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('LEFTPADDING', (0,0), (-1,-1), 5), ('RIGHTPADDING', (0,0), (-1,-1), 5), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ])) story.append(t) story.append(Spacer(1, 0.3*cm)) story.append(h2("Treat Comorbidities Aggressively")) for b in [ "Hypertension, CKD, metabolic syndrome, and heart failure all worsen urate handling.", "Review all medications for urate-raising drugs (diuretics, cyclosporine, pyrazinamide, low-dose aspirin).", ]: story.append(bullet(b)) story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#b0c4de'), spaceBefore=10, spaceAfter=10)) # ────────────────────────────────── # COMPARISON TABLE # ────────────────────────────────── story.append(h1("SIDE-BY-SIDE COMPARISON")) story.append(Spacer(1, 0.3*cm)) comp = [ ["Feature", "Osteoarthritis", "Gout"], ["Key lifestyle change", "Weight loss + exercise", "Low-purine diet + reduce alcohol"], ["Acute treatment", "Topical/oral NSAIDs, acetaminophen", "NSAIDs, colchicine, corticosteroids"], ["Long-term prevention", "Exercise adherence, weight control", "ULT to keep uric acid <6 mg/dL"], ["Disease-modifying therapy", "None approved (exercise/weight closest)", "Urate-lowering therapy (allopurinol)"], ["Critical 'DON'T'", "Avoid opioids/tramadol", "Never stop ULT during a flare"], ["Surgical option", "Total joint arthroplasty", "Rarely needed (tophus debridement)"], ] t = Table(comp, colWidths=[4.5*cm, 7*cm, 5.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, colors.HexColor('#eef3f8')]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#b0c4de')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('LEFTPADDING', (0,0), (-1,-1), 5), ('RIGHTPADDING', (0,0), (-1,-1), 5), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ])) story.append(t) story.append(Spacer(1, 0.5*cm)) # Footer story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey, spaceAfter=4)) story.append(Paragraph("Sources: Firestein & Kelley's Textbook of Rheumatology | Harrison's Principles of Internal Medicine 22e | Washington Manual of Medical Therapeutics | Lippincott Illustrated Reviews: Pharmacology | Miller's Review of Orthopaedics 9e | ACR 2019 OA Guidelines | AAOS CPG", footer_style)) doc.build(story) print("PDF created successfully!") EOF
OA Gout Management
PDF Document · PDF
Can u make ppt on it
~/oa-gout/make_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Osteoarthritis & Gout – Management, Prevention & Lifestyle";
pres.author = "Orris Medical";
// ─── PALETTE ────────────────────────────────────────────────
const C = {
navy: "1A3A5C",
teal: "0E7C7B",
amber: "E8A838",
red: "C0392B",
light: "EEF3F8",
white: "FFFFFF",
dark: "0D1F2D",
grey: "6C757D",
ltgrey: "DEE5ED",
green: "2ECC71",
oa_blue: "2C5F8A",
gout_rd: "A93226",
};
const FONT = "Calibri";
// ─── HELPERS ────────────────────────────────────────────────
function darkSlide(slide) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color: C.dark }, line:{ color: C.dark } });
}
function lightSlide(slide, accent) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color: C.white }, line:{ color: C.white } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.08, fill:{ color: accent||C.navy }, line:{ color: accent||C.navy } });
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.545, w:10, h:0.08, fill:{ color: accent||C.navy }, line:{ color: accent||C.navy } });
}
function sectionHeader(slide, color) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color }, line:{ color } });
}
function slideTitle(slide, text, color, y) {
slide.addText(text, {
x:0.4, y: y||0.18, w:9.2, h:0.55,
fontSize:22, bold:true, color: color||C.white, fontFace:FONT, valign:"middle"
});
}
function hRule(slide, y, color) {
slide.addShape(pres.shapes.RECTANGLE, { x:0.4, y, w:9.2, h:0.02, fill:{ color: color||C.ltgrey }, line:{ color: color||C.ltgrey } });
}
function footerBar(slide, text) {
slide.addShape(pres.shapes.RECTANGLE, { x:0, y:5.45, w:10, h:0.175, fill:{ color: C.navy }, line:{ color: C.navy } });
slide.addText(text||"Firestein & Kelley's | Harrison's 22e | Washington Manual | Lippincott Pharmacology | AAOS CPG | ACR 2019", {
x:0.2, y:5.455, w:9.6, h:0.16, fontSize:6, color:"AABBD0", fontFace:FONT, align:"center"
});
}
function card(slide, x, y, w, h, fillColor, radius) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h,
fill:{ color: fillColor||C.light },
line:{ color: fillColor||C.light },
rectRadius: radius||0.08,
shadow:{ type:"outer", color:"000000", blur:4, offset:2, angle:135, opacity:0.1 }
});
}
function pill(slide, x, y, w, label, fill, textColor) {
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w, h:0.28, fill:{ color: fill||C.navy }, line:{ color: fill||C.navy }, rectRadius:0.14 });
slide.addText(label, { x, y, w, h:0.28, fontSize:7.5, bold:true, color: textColor||C.white, fontFace:FONT, align:"center", valign:"middle" });
}
function bullets(slide, items, x, y, w, h, opts) {
const arr = items.map((t,i) => ({
text: t,
options: { bullet:{ code:"25CF", color: opts&&opts.dotColor||C.amber }, breakLine: i<items.length-1, fontSize: opts&&opts.fs||9.5, color: opts&&opts.color||"333333", fontFace:FONT }
}));
slide.addText(arr, { x, y, w, h, valign:"top", ...(opts||{}) });
}
// ════════════════════════════════════════════
// SLIDE 1 – TITLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
darkSlide(s);
// Left accent strip
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.08, h:5.625, fill:{ color: C.amber }, line:{ color: C.amber } });
// Title
s.addText("Osteoarthritis & Gout", {
x:0.3, y:1.1, w:9.4, h:1.0,
fontSize:40, bold:true, color: C.white, fontFace:FONT, align:"center",
charSpacing:1
});
s.addText("Management • Prevention • Lifestyle Modification", {
x:0.3, y:2.15, w:9.4, h:0.5,
fontSize:15, color: C.amber, fontFace:FONT, align:"center", italic:true
});
hRule(s, 2.75, C.teal);
s.addText("Based on: ACR 2019 Guidelines | AAOS CPG | Harrison's 22e | Firestein & Kelley's", {
x:0.3, y:2.88, w:9.4, h:0.35, fontSize:9, color:"8AAEC8", fontFace:FONT, align:"center"
});
// Two condition labels
card(s, 1.0, 3.4, 3.6, 0.7, C.oa_blue, 0.12);
s.addText("🦴 Osteoarthritis", { x:1.0, y:3.4, w:3.6, h:0.7, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
card(s, 5.4, 3.4, 3.6, 0.7, C.gout_rd, 0.12);
s.addText("🔴 Gout", { x:5.4, y:3.4, w:3.6, h:0.7, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
}
// ════════════════════════════════════════════
// SLIDE 2 – AGENDA / OUTLINE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.navy);
slideTitle(s, "What We'll Cover", C.navy, 0.18);
hRule(s, 0.82, C.navy);
const items = [
["01", "OA – Lifestyle & Prevention", C.oa_blue],
["02", "OA – Pharmacologic Management", C.oa_blue],
["03", "OA – Surgical Options", C.oa_blue],
["04", "Gout – Acute Flare Treatment", C.gout_rd],
["05", "Gout – Urate-Lowering Therapy (ULT)", C.gout_rd],
["06", "Gout – Lifestyle & Prevention", C.gout_rd],
["07", "Side-by-Side Comparison", C.teal],
];
const cols = [[0,1,2,3],[4,5,6]];
const xLeft=0.4, xRight=5.2, w=4.4;
items.forEach((item,i) => {
const isRight = i>=4;
const x = isRight ? xRight : xLeft;
const row = isRight ? i-4 : i;
const y = 1.0 + row*0.82;
card(s, x, y, w, 0.65, C.light, 0.08);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x+0.05, y: y+0.1, w:0.45, h:0.45, fill:{ color: item[2] }, line:{ color: item[2] }, rectRadius:0.22 });
s.addText(item[0], { x: x+0.05, y: y+0.1, w:0.45, h:0.45, fontSize:11, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(item[1], { x: x+0.6, y: y+0.12, w: w-0.7, h:0.42, fontSize:11, color:"222222", fontFace:FONT, valign:"middle" });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 3 – OA SECTION DIVIDER
// ════════════════════════════════════════════
{
const s = pres.addSlide();
sectionHeader(s, C.oa_blue);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color: C.amber }, line:{ color: C.amber } });
s.addText("PART 1", { x:0.3, y:1.5, w:9, h:0.5, fontSize:13, color: C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Osteoarthritis", { x:0.3, y:2.05, w:9, h:1.0, fontSize:44, bold:true, color:C.white, fontFace:FONT });
s.addText("Management • Prevention • Lifestyle", { x:0.3, y:3.1, w:9, h:0.45, fontSize:14, color:"AACCEE", fontFace:FONT, italic:true });
}
// ════════════════════════════════════════════
// SLIDE 4 – OA: CORE FRAMEWORK
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.oa_blue);
slideTitle(s, "OA – Core Management Framework", C.navy);
hRule(s, 0.82, C.oa_blue);
// Centre label
card(s, 3.5, 1.6, 3.0, 0.9, C.oa_blue, 0.1);
s.addText("Education +\nExercise +\nWeight Loss", { x:3.5, y:1.6, w:3.0, h:0.9, fontSize:10, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText("CORE (ALL patients)", { x:3.2, y:2.52, w:3.6, h:0.3, fontSize:8, color: C.oa_blue, fontFace:FONT, align:"center", bold:true });
// Four surrounding cards
const corners = [
{ x:0.25, y:1.0, label:"Physical\nModalities", sub:"Exercise, PT, orthotics,\naquatic therapy", fill: "D6E8F5" },
{ x:6.75, y:1.0, label:"Pharmacologic", sub:"Topical → Oral NSAIDs\nIntra-articular", fill: "D6E8F5" },
{ x:0.25, y:3.5, label:"Psychological &\nMind-Body", sub:"CBT, pain education,\nsleep management", fill: "D6E8F5" },
{ x:6.75, y:3.5, label:"Surgery", sub:"Arthroplasty\n(after all else fails)", fill: "FFE8B2" },
];
corners.forEach(c => {
card(s, c.x, c.y, 2.8, 1.7, c.fill, 0.1);
s.addText(c.label, { x: c.x+0.1, y: c.y+0.15, w:2.6, h:0.5, fontSize:11, bold:true, color: C.navy, fontFace:FONT, align:"center" });
s.addText(c.sub, { x: c.x+0.1, y: c.y+0.65, w:2.6, h:0.9, fontSize:8.5, color:"444444", fontFace:FONT, align:"center", valign:"top" });
});
// Arrows (lines)
[[3.05,1.4,3.5,2.0],[6.75,1.4,6.5,2.0],[3.05,3.9,3.5,2.5],[6.75,3.9,6.5,2.5]].forEach(([x1,y1,x2,y2]) => {
s.addShape(pres.shapes.LINE, { x:x1, y:y1, w: x2-x1, h: y2-y1, line:{ color:C.oa_blue, width:1.2, dashType:"dash" } });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 5 – OA LIFESTYLE / PREVENTION
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.oa_blue);
slideTitle(s, "OA – Lifestyle Modifications & Prevention", C.navy);
hRule(s, 0.82, C.oa_blue);
const cats = [
{ icon:"⚖️", title:"Weight Loss", color:"1A6B9A", points:["Most impactful modifiable factor","≥20% loss = greatest benefit","Combine diet + exercise (diet alone risks sarcopenia)","Bariatric surgery if needed"] },
{ icon:"🏃", title:"Exercise", color:"0E7C7B", points:["Strength training – progressive resistance","Aerobic/aquatic – walking, cycling (low-impact)","Range-of-motion & flexibility (always include)","Neuromuscular training"] },
{ icon:"📚", title:"Education", color:"7B3FA0", points:["Ongoing, not one-time","Use positive, non-fatalistic language","Direct to CDC, Arthritis Foundation","Self-management mobile apps"] },
{ icon:"🦯", title:"Assistive Devices", color:"B5600A", points:["Canes & walking aids (recommended)","Braces for knee OA","Lateral wedge insoles: NOT recommended","Occupational therapy for hand OA"] },
];
cats.forEach((c,i) => {
const x = 0.2 + (i%2)*4.9;
const y = 1.0 + Math.floor(i/2)*2.15;
card(s, x, y, 4.7, 1.9, C.light, 0.1);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x+0.1, y: y+0.1, w:1.1, h:0.5, fill:{ color: c.color }, line:{ color: c.color }, rectRadius:0.08 });
s.addText(c.icon+" "+c.title, { x: x+0.1, y: y+0.1, w:1.1, h:0.5, fontSize:8, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
const arr = c.points.map((t,j) => ({ text:t, options:{ bullet:{ code:"25CF", color:c.color }, breakLine: j<c.points.length-1, fontSize:8.5, color:"333333", fontFace:FONT } }));
s.addText(arr, { x: x+1.3, y: y+0.1, w:3.25, h:1.7, valign:"top" });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 6 – OA PHARMACOLOGIC MGMT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.oa_blue);
slideTitle(s, "OA – Pharmacologic Management", C.navy);
hRule(s, 0.82, C.oa_blue);
// Step ladder approach
const steps = [
{ step:"PREFER", label:"Topical Agents", detail:"Topical NSAIDs (diclofenac gel), capsaicin cream", why:"Lowest systemic exposure; same efficacy", fill:"1A6B9A" },
{ step:"1ST LINE", label:"Oral Acetaminophen", detail:"Standard analgesia, widely available", why:"Modest pain relief; safe for most", fill:"2E86AB" },
{ step:"2ND LINE", label:"Oral NSAIDs", detail:"Naproxen, ibuprofen, celecoxib", why:"More effective; lowest dose × shortest duration; add PPI if high GI risk", fill:"0E7C7B" },
{ step:"ADJUNCT", label:"Duloxetine", detail:"For central sensitization & widespread pain", why:"Useful when pain is out of proportion", fill:"5A7B3A" },
{ step:"LOCAL", label:"Intra-articular Corticosteroids", detail:"Triamcinolone – short-term relief only", why:"Repeated injections may damage cartilage", fill:"B5600A" },
{ step:"❌ AVOID", label:"Opioids / Tramadol", detail:"AAOS strongly recommends AGAINST", why:"Poor benefit-to-risk ratio", fill:"C0392B" },
];
steps.forEach((st, i) => {
const x = 0.25;
const y = 0.92 + i*0.73;
const w = 9.5;
card(s, x, y, w, 0.65, i===5?"FEE8E6":C.light, 0.06);
// Step badge
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x+0.05, y: y+0.1, w:1.1, h:0.45, fill:{ color: st.fill }, line:{ color: st.fill }, rectRadius:0.06 });
s.addText(st.step, { x: x+0.05, y: y+0.1, w:1.1, h:0.45, fontSize:7.5, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(st.label, { x: x+1.25, y: y+0.08, w:2.8, h:0.26, fontSize:9.5, bold:true, color: i===5?C.gout_rd:C.navy, fontFace:FONT });
s.addText(st.detail, { x: x+1.25, y: y+0.34, w:2.8, h:0.26, fontSize:8, color:"555555", fontFace:FONT });
s.addText("→ "+st.why, { x: x+4.2, y: y+0.16, w:5.1, h:0.35, fontSize:8.5, color:"444444", fontFace:FONT, italic:true });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 7 – OA SURGICAL OPTIONS + AAOS TABLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.oa_blue);
slideTitle(s, "OA – Surgical Options & AAOS Recommendations", C.navy);
hRule(s, 0.82, C.oa_blue);
// Surgery cards
const surg = [
{ t:"Total Joint Arthroplasty", d:"After adequate trial of all modalities.\nDurable pain relief & functional restoration.", good:true },
{ t:"High Tibial Osteotomy", d:"Selected unicompartmental knee OA patients.\nModerate evidence.", good:true },
{ t:"Arthroscopic Lavage / Debridement", d:"NOT recommended for OA-related pathology.\nNo proven benefit.", good:false },
];
surg.forEach((c,i) => {
const x = 0.25 + i*3.2;
card(s, x, 0.95, 3.0, 1.5, c.good?"EDF7ED":"FDECEA", 0.1);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x+0.1, y:1.0, w:0.5, h:0.5, fill:{ color: c.good?C.teal:C.red }, line:{ color: c.good?C.teal:C.red }, rectRadius:0.25 });
s.addText(c.good?"✓":"✗", { x: x+0.1, y:1.0, w:0.5, h:0.5, fontSize:16, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(c.t, { x: x+0.7, y:1.0, w:2.4, h:0.5, fontSize:9, bold:true, color:"222222", fontFace:FONT, valign:"middle" });
s.addText(c.d, { x: x+0.1, y:1.55, w:2.8, h:0.85, fontSize:8, color:"444444", fontFace:FONT });
});
// AAOS mini-table
s.addText("AAOS Evidence-Based Recommendations (Knee OA)", { x:0.25, y:2.6, w:9.5, h:0.3, fontSize:10, bold:true, color:C.oa_blue, fontFace:FONT });
const rows = [
["Grade","Intervention","Status"],
["★★★★ Strong","Patient education, Exercise (supervised/aquatic), Self-management","✓ Recommended"],
["★★★★ Strong","Topical NSAIDs, Oral NSAIDs, Acetaminophen","✓ Recommended"],
["★★★★ Strong","Opioids / Tramadol","✗ NOT Recommended"],
["★★★ Moderate","Canes, Braces, Weight loss, Neuromuscular training, IA Corticosteroids","✓ Recommended"],
["★★ Limited","Glucosamine, Chondroitin, PRP, Acupuncture, TENS","May use selectively"],
];
const tbl = rows.map((r,i) => r.map(cell => ({
text: cell,
options: {
bold: i===0,
color: i===0 ? C.white : (cell.includes("NOT") ? C.red : (cell.includes("✓") ? C.teal : "333333")),
fontSize: i===0 ? 8.5 : 8,
fontFace: FONT,
fill: i===0 ? C.navy : (i%2===0 ? C.light : C.white),
align: i===0||[0,2].includes(rows[0].indexOf(cell)) ? "center" : "left",
valign: "middle",
}
})));
s.addTable(tbl, {
x:0.25, y:2.95, w:9.5, colW:[2.0, 5.8, 1.7],
border:{ color:"B0C4DE", pt:0.5 },
rowH: 0.3,
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 8 – GOUT SECTION DIVIDER
// ════════════════════════════════════════════
{
const s = pres.addSlide();
sectionHeader(s, C.gout_rd);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color: C.amber }, line:{ color: C.amber } });
s.addText("PART 2", { x:0.3, y:1.5, w:9, h:0.5, fontSize:13, color: C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Gout", { x:0.3, y:2.05, w:9, h:1.0, fontSize:52, bold:true, color:C.white, fontFace:FONT });
s.addText("Acute Treatment • Urate-Lowering Therapy • Prevention", { x:0.3, y:3.1, w:9, h:0.45, fontSize:14, color:"FFCACA", fontFace:FONT, italic:true });
}
// ════════════════════════════════════════════
// SLIDE 9 – GOUT PATHOPHYSIOLOGY & TRIGGERS
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.gout_rd);
slideTitle(s, "Gout – Pathophysiology & Risk Factors", C.navy);
hRule(s, 0.82, C.gout_rd);
// Pathway box
card(s, 0.25, 0.95, 4.5, 4.3, "FFF5F5", 0.1);
s.addText("Pathophysiology", { x:0.35, y:1.0, w:4.3, h:0.35, fontSize:10, bold:true, color:C.gout_rd, fontFace:FONT });
const path = [
"Hyperuricemia (impaired excretion 90%, overproduction 10%)",
"↓",
"Monosodium Urate (MSU) crystal deposition in joints",
"↓",
"NLRP3 inflammasome activation → IL-1β release",
"↓",
"Neutrophil recruitment → lysosomal rupture",
"↓",
"Acute intense inflammation (gout flare)",
"↓",
"Chronic: tophi, erosions, joint destruction",
];
path.forEach((p,i) => {
const isArrow = p==="↓";
s.addText(p, { x:0.45, y:1.38+i*0.27, w:4.1, h:0.27, fontSize: isArrow?13:8, color: isArrow?C.gout_rd:"333333", fontFace:FONT, bold: isArrow, align: isArrow?"center":"left", valign:"middle" });
});
// Risk factors
card(s, 5.0, 0.95, 4.75, 4.3, C.light, 0.1);
s.addText("Risk Factors", { x:5.1, y:1.0, w:4.5, h:0.35, fontSize:10, bold:true, color:C.oa_blue, fontFace:FONT });
const risks = [
["🍖","Purine-rich diet (red meat, shellfish, organ meats)"],
["🍺","Alcohol – beer > spirits > wine"],
["🧃","Fructose / sugar-sweetened beverages"],
["⚖️","Obesity / metabolic syndrome"],
["💊","Diuretics (thiazide, loop)"],
["🫀","Hypertension, CKD, heart failure"],
["🧬","Genetic: HPRT deficiency, PRPP synthetase overactivity"],
["🚶","Sedentary lifestyle"],
];
risks.forEach((r,i) => {
s.addText(r[0], { x:5.1, y:1.42+i*0.35, w:0.35, h:0.32, fontSize:10, fontFace:FONT, align:"center" });
s.addText(r[1], { x:5.5, y:1.42+i*0.35, w:4.1, h:0.32, fontSize:8.5, color:"333333", fontFace:FONT, valign:"middle" });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 10 – GOUT ACUTE TREATMENT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.gout_rd);
slideTitle(s, "Gout – Acute Flare Treatment", C.navy);
hRule(s, 0.82, C.gout_rd);
s.addText("Treat promptly – can abort attack within hours", { x:0.3, y:0.88, w:9.4, h:0.28, fontSize:9, color: C.gout_rd, fontFace:FONT, italic:true });
const drugs = [
{ rank:"1ST", drug:"NSAIDs", dose:"Indomethacin 50mg TID / Naproxen 500mg BID\nIbuprofen 800mg TID / Meloxicam 15mg daily", note:"Contraindicated: CKD, PUD, anticoagulation", fill:"A93226" },
{ rank:"1ST", drug:"Colchicine", dose:"1.2 mg PO → then 0.6 mg 1 hr later\n(low-dose equally effective, better tolerated)", note:"Most effective within 36 hrs; avoid in CKD; caution: carvedilol/grapefruit juice", fill:"A93226" },
{ rank:"ALT", drug:"Intra-articular Corticosteroids", dose:"40 mg (large joints) / 10–20 mg (small joints)", note:"Rule out septic arthritis first; 90% effective within 24 hrs", fill:"C0702A" },
{ rank:"ALT", drug:"Oral Prednisone", dose:"40–60 mg/day; taper over 7–10 days", note:"When NSAIDs & colchicine contraindicated; caution with uncontrolled diabetes", fill:"C0702A" },
{ rank:"LAST", drug:"Anakinra (IL-1 inhibitor)", dose:"100 mg SC daily × 3 days", note:"Refractory cases only; contraindicated in active infection", fill:"8E44AD" },
];
drugs.forEach((d,i) => {
const y = 1.22 + i*0.82;
card(s, 0.25, y, 9.5, 0.74, i<2?"FFF0F0":i<4?"FFF7EE":"F8F0FE", 0.07);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:0.32, y:y+0.12, w:0.85, h:0.5, fill:{ color: d.fill }, line:{ color: d.fill }, rectRadius:0.06 });
s.addText(d.rank, { x:0.32, y:y+0.12, w:0.85, h:0.5, fontSize:8, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(d.drug, { x:1.25, y:y+0.08, w:2.5, h:0.3, fontSize:10, bold:true, color:"222222", fontFace:FONT });
s.addText(d.dose, { x:1.25, y:y+0.38, w:2.5, h:0.32, fontSize:7.5, color:"555555", fontFace:FONT });
s.addText("⚠ "+d.note, { x:3.9, y:y+0.18, w:5.7, h:0.38, fontSize:8, color:"666666", fontFace:FONT, italic:true });
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 11 – GOUT ULT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.gout_rd);
slideTitle(s, "Gout – Urate-Lowering Therapy (ULT)", C.navy);
hRule(s, 0.82, C.gout_rd);
// Indications + Targets side by side
card(s, 0.25, 0.92, 4.5, 1.85, "FFF5F5", 0.09);
s.addText("Indications for ULT", { x:0.35, y:0.97, w:4.3, h:0.3, fontSize:9.5, bold:true, color:C.gout_rd, fontFace:FONT });
const inds = ["≥2 flares/year","Presence of tophi","Urate nephropathy or nephrolithiasis","CKD ≥ stage 3","Uric acid >9 mg/dL at first flare"];
const indArr = inds.map((t,i) => ({ text:t, options:{ bullet:{ code:"25CF", color:C.gout_rd }, breakLine: i<inds.length-1, fontSize:8.5, color:"333333", fontFace:FONT }}));
s.addText(indArr, { x:0.35, y:1.3, w:4.2, h:1.35, valign:"top" });
card(s, 4.9, 0.92, 4.85, 1.85, "FFF0E0", 0.09);
s.addText("Serum Urate Targets", { x:5.0, y:0.97, w:4.6, h:0.3, fontSize:9.5, bold:true, color:"B5600A", fontFace:FONT });
s.addText("No tophi: < 6 mg/dL", { x:5.0, y:1.32, w:4.6, h:0.35, fontSize:11, bold:true, color:C.teal, fontFace:FONT });
s.addText("With tophi: < 5 mg/dL", { x:5.0, y:1.72, w:4.6, h:0.35, fontSize:11, bold:true, color:C.gout_rd, fontFace:FONT });
s.addText("Start ULT ≥2 weeks AFTER flare resolves\n⚠ NEVER stop ULT during an active flare", { x:5.0, y:2.1, w:4.6, h:0.55, fontSize:8, color:"555555", fontFace:FONT, italic:true });
// Drug table
s.addText("ULT Drug Options", { x:0.25, y:2.88, w:9.5, h:0.28, fontSize:10, bold:true, color:C.navy, fontFace:FONT });
const ult = [
["Drug","Class","Dose","Key Caution"],
["Allopurinol","XO Inhibitor\n(1st line)","Start 100 mg; titrate slowly;\nmax 800 mg","Screen HLA-B*5801 in African Americans\n& SE Asians – severe skin reaction risk"],
["Febuxostat","XO Inhibitor\n(2nd line)","40–80 mg/day","Higher CV event rate; blocks azathioprine/\n6-MP metabolism"],
["Probenecid","Uricosuric","500–3000 mg/day","Ineffective in renal impairment;\nCaution if urinary uric acid >800 mg/24h"],
["Pegloticase","Uricase (IV)","8 mg IV q2 weeks","Refractory tophaceous gout only"],
];
const ultTbl = ult.map((r,i) => r.map(cell => ({
text: cell,
options: {
bold: i===0, fontSize: i===0?8.5:8, fontFace:FONT,
color: i===0 ? C.white : (cell.includes("HLA")||cell.includes("CV")||cell.includes("renal")?"A93226":"333333"),
fill: i===0 ? C.gout_rd : (i%2===0 ? "FFF5F5" : C.white),
valign:"middle", align:"left",
}
})));
s.addTable(ultTbl, { x:0.25, y:3.18, w:9.5, colW:[1.8,1.8,2.5,3.4], border:{ color:"E0B0B0", pt:0.5 }, rowH:0.42 });
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 12 – GOUT LIFESTYLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.gout_rd);
slideTitle(s, "Gout – Lifestyle Modifications & Prevention", C.navy);
hRule(s, 0.82, C.gout_rd);
// AVOID column
card(s, 0.25, 0.95, 4.6, 4.35, "FDECEA", 0.1);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:0.35, y:1.0, w:1.8, h:0.38, fill:{ color:C.gout_rd }, line:{ color:C.gout_rd }, rectRadius:0.06 });
s.addText("❌ AVOID / LIMIT", { x:0.35, y:1.0, w:1.8, h:0.38, fontSize:8.5, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
const avoid = [
"Red meat, organ meats (liver, kidney)",
"Shellfish (shrimp, lobster, scallops)",
"Beer (highest risk) > spirits > wine",
"Sugar-sweetened drinks / fructose",
"Rapid/crash weight loss (triggers flares)",
"Thiazide & loop diuretics – switch if possible",
"Sedentary lifestyle",
"Cyclosporine, pyrazinamide, ethambutol",
];
const avoidArr = avoid.map((t,i) => ({ text:t, options:{ bullet:{ code:"274C", color:C.gout_rd }, breakLine: i<avoid.length-1, fontSize:8.5, color:"333333", fontFace:FONT }}));
s.addText(avoidArr, { x:0.4, y:1.45, w:4.3, h:3.7, valign:"top" });
// ENCOURAGE column
card(s, 5.15, 0.95, 4.6, 4.35, "EDF7ED", 0.1);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:5.25, y:1.0, w:2.0, h:0.38, fill:{ color:C.teal }, line:{ color:C.teal }, rectRadius:0.06 });
s.addText("✅ ENCOURAGE", { x:5.25, y:1.0, w:2.0, h:0.38, fontSize:8.5, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
const enc = [
"Low-fat dairy (mildly uricosuric effect)",
"Adequate hydration: 2–3 L/day",
"Coffee (associated with lower uric acid)",
"Cherries / tart cherry juice",
"Gradual, sustained weight loss",
"Losartan for hypertension (mild uricosuric)",
"Regular moderate exercise",
"Treat comorbidities: HTN, CKD, metabolic syndrome",
];
const encArr = enc.map((t,i) => ({ text:t, options:{ bullet:{ code:"2714", color:C.teal }, breakLine: i<enc.length-1, fontSize:8.5, color:"333333", fontFace:FONT }}));
s.addText(encArr, { x:5.2, y:1.45, w:4.4, h:3.7, valign:"top" });
// Prophylaxis note
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.3, w:10, h:0.14, fill:{ color:"FFF3CD" }, line:{ color:"FFF3CD" } });
s.addText("⚠ Flare Prophylaxis when starting ULT: Low-dose colchicine, starting 1–2 weeks BEFORE ULT, continue ≥6 months after urate reaches target", {
x:0.2, y:5.3, w:9.6, h:0.14, fontSize:7, color:"7B5800", fontFace:FONT, valign:"middle"
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 13 – COMPARISON
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightSlide(s, C.teal);
slideTitle(s, "Side-by-Side Comparison: OA vs. Gout", C.navy);
hRule(s, 0.82, C.teal);
const rows = [
["Feature", "Osteoarthritis", "Gout"],
["Key lifestyle change", "Weight loss + exercise", "Low-purine diet + reduce alcohol"],
["Acute treatment", "Topical/oral NSAIDs, acetaminophen", "NSAIDs, colchicine, corticosteroids"],
["Long-term prevention", "Exercise adherence, weight control", "ULT to keep uric acid <6 mg/dL"],
["Disease-modifying Rx", "None approved\n(exercise/weight loss = closest)", "Urate-lowering therapy (allopurinol)"],
["Critical DON'T", "Avoid opioids / tramadol", "Never stop ULT during a flare"],
["Surgical option", "Total joint arthroplasty", "Rarely needed (tophus debridement)"],
];
const tbl = rows.map((r,i) => [
{ text:r[0], options:{ bold:true, fontSize:i===0?9:8.5, fontFace:FONT, color: i===0?C.white:C.navy, fill: i===0?C.teal:(i%2===0?C.light:C.white), valign:"middle" }},
{ text:r[1], options:{ fontSize:i===0?9:8.5, fontFace:FONT, color: i===0?C.white:(i===5?"A93226":"333333"), fill: i===0?C.oa_blue:(i%2===0?"EBF5FF":"F5FAFF"), bold:i===0||i===5, valign:"middle" }},
{ text:r[2], options:{ fontSize:i===0?9:8.5, fontFace:FONT, color: i===0?C.white:(i===5?C.gout_rd:"333333"), fill: i===0?C.gout_rd:(i%2===0?"FFEEEE":"FFF5F5"), bold:i===0||i===5, valign:"middle" }},
]);
s.addTable(tbl, {
x:0.3, y:0.92, w:9.4,
colW:[2.8, 3.3, 3.3],
border:{ color:"C8D8E8", pt:0.5 },
rowH:0.58,
});
footerBar(s);
}
// ════════════════════════════════════════════
// SLIDE 14 – KEY TAKEAWAYS
// ════════════════════════════════════════════
{
const s = pres.addSlide();
darkSlide(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.08, h:5.625, fill:{ color: C.amber }, line:{ color: C.amber } });
s.addText("Key Takeaways", {
x:0.3, y:0.25, w:9.4, h:0.55, fontSize:24, bold:true, color:C.white, fontFace:FONT
});
hRule(s, 0.88, C.teal);
const takes = [
{ icon:"🦴", color:C.oa_blue, title:"OA: Exercise Is Medicine", body:"Weight loss ≥20% + tailored exercise is the most evidence-based intervention. No drug replaces these." },
{ icon:"💊", color:"2E86AB", title:"OA Pharmacology: Stepwise", body:"Start topical → oral acetaminophen → oral NSAIDs. Avoid opioids. IA corticosteroids for short-term only." },
{ icon:"🔴", color:C.gout_rd, title:"Gout: Treat Fast, Prevent Long", body:"Abort acute flares quickly (NSAIDs/colchicine within 36 hrs). Start ULT when indicated; maintain urate <6 mg/dL for life." },
{ icon:"🥗", color:C.teal, title:"Gout Lifestyle: Diet + Hydration", body:"Avoid purines, beer, fructose. Low-fat dairy + adequate hydration + gradual weight loss reduce flares significantly." },
{ icon:"⚠️", color:C.amber, title:"Critical Rules", body:"OA: Never prescribe opioids. • Gout: Never stop ULT during a flare — it worsens the attack." },
];
takes.forEach((t,i) => {
const y = 1.02 + i*0.88;
card(s, 0.3, y, 9.4, 0.78, "0A1E2E", 0.08);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:0.4, y:y+0.14, w:0.5, h:0.5, fill:{ color:t.color }, line:{ color:t.color }, rectRadius:0.25 });
s.addText(t.icon, { x:0.4, y:y+0.14, w:0.5, h:0.5, fontSize:14, fontFace:FONT, align:"center", valign:"middle" });
s.addText(t.title, { x:1.0, y:y+0.1, w:3.5, h:0.3, fontSize:10, bold:true, color:C.amber, fontFace:FONT });
s.addText(t.body, { x:1.0, y:y+0.42, w:8.5, h:0.3, fontSize:8.5, color:"CCDDEE", fontFace:FONT });
});
}
pres.writeFile({ fileName: "/home/daytona/workspace/oa-gout/OA_Gout_Management.pptx" })
.then(() => console.log("PPTX created successfully!"))
.catch(e => { console.error(e); process.exit(1); });
Failed to create session: bad request: failed to resolve container IP after 3 attempts: no IP address found. Is the Sandbox started?
We encountered an error while processing your request. Please try again or reach out to us for help.
Try One more time
~/oa-gout/make_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Osteoarthritis & Gout – Management, Prevention & Lifestyle";
// ─── PALETTE ────────────────────────────────────────────────
const C = {
navy: "1A3A5C",
teal: "0E7C7B",
amber: "E8A838",
red: "C0392B",
light: "EEF3F8",
white: "FFFFFF",
dark: "0D1F2D",
grey: "6C757D",
ltgrey: "DEE5ED",
oablue: "2C5F8A",
goutrd: "A93226",
};
const FONT = "Calibri";
// ─── HELPERS ────────────────────────────────────────────────
function darkBg(s) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color:C.dark }, line:{ color:C.dark } });
}
function lightBg(s, accent) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color:C.white }, line:{ color:C.white } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.07, fill:{ color:accent||C.navy }, line:{ color:accent||C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.555, w:10, h:0.07, fill:{ color:accent||C.navy }, line:{ color:accent||C.navy } });
}
function sectionBg(s, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color }, line:{ color } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
}
function hLine(s, y, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y, w:9.3, h:0.02, fill:{ color:color||C.ltgrey }, line:{ color:color||C.ltgrey } });
}
function footer(s) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.44, w:10, h:0.185, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText("Sources: Firestein & Kelley's | Harrison's 22e | Washington Manual | Lippincott Pharmacology | Miller's Orthopaedics 9e | ACR 2019 | AAOS CPG", {
x:0.2, y:5.447, w:9.6, h:0.17, fontSize:6, color:"8AAEC8", fontFace:FONT, align:"center"
});
}
function slideTitle(s, text, color) {
s.addText(text, { x:0.35, y:0.15, w:9.3, h:0.55, fontSize:21, bold:true, color:color||C.navy, fontFace:FONT, valign:"middle" });
}
function card(s, x, y, w, h, fill, r) {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h, fill:{ color:fill||C.light }, line:{ color:fill||C.light }, rectRadius:r||0.08,
shadow:{ type:"outer", color:"000000", blur:4, offset:2, angle:135, opacity:0.1 }
});
}
function badge(s, x, y, w, h, fill, text, fs) {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w, h, fill:{ color:fill }, line:{ color:fill }, rectRadius:0.06 });
s.addText(text, { x, y, w, h, fontSize:fs||8, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
}
function bulletList(s, items, x, y, w, h, dotColor, fs) {
const arr = items.map((t,i) => ({
text: t,
options: { bullet:{ code:"25CF", color:dotColor||C.amber }, breakLine: i<items.length-1, fontSize:fs||9, color:"333333", fontFace:FONT }
}));
s.addText(arr, { x, y, w, h, valign:"top" });
}
// ════════════════════════════════════════════
// SLIDE 1 – TITLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("Osteoarthritis & Gout", {
x:0.3, y:1.0, w:9.4, h:1.0, fontSize:40, bold:true, color:C.white, fontFace:FONT, align:"center", charSpacing:1
});
s.addText("Management • Prevention • Lifestyle Modification", {
x:0.3, y:2.1, w:9.4, h:0.5, fontSize:15, color:C.amber, fontFace:FONT, align:"center", italic:true
});
hLine(s, 2.72, C.teal);
s.addText("ACR 2019 | AAOS CPG | Harrison's 22e | Firestein & Kelley's | Washington Manual", {
x:0.3, y:2.84, w:9.4, h:0.3, fontSize:8.5, color:"7AAAC8", fontFace:FONT, align:"center"
});
card(s, 1.0, 3.35, 3.5, 0.72, C.oablue, 0.1);
s.addText("🦴 Osteoarthritis", { x:1.0, y:3.35, w:3.5, h:0.72, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
card(s, 5.5, 3.35, 3.5, 0.72, C.goutrd, 0.1);
s.addText("🔴 Gout", { x:5.5, y:3.35, w:3.5, h:0.72, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
}
// ════════════════════════════════════════════
// SLIDE 2 – OA SECTION DIVIDER
// ════════════════════════════════════════════
{
const s = pres.addSlide();
sectionBg(s, C.oablue);
s.addText("PART 1", { x:0.4, y:1.4, w:9, h:0.45, fontSize:13, color:C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Osteoarthritis", { x:0.4, y:1.9, w:9, h:1.1, fontSize:46, bold:true, color:C.white, fontFace:FONT });
s.addText("Management • Prevention • Lifestyle", { x:0.4, y:3.05, w:9, h:0.45, fontSize:14, color:"AACCEE", fontFace:FONT, italic:true });
}
// ════════════════════════════════════════════
// SLIDE 3 – OA LIFESTYLE & PREVENTION
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Lifestyle Modifications & Prevention");
hLine(s, 0.78, C.oablue);
const cats = [
{ icon:"⚖️", title:"Weight Loss", fill:"1A6B9A", pts:["Most impactful modifiable factor","≥20% weight loss = greatest benefit","Combine diet + exercise (not diet alone)","Bariatric surgery for select patients"] },
{ icon:"🏃", title:"Exercise", fill:C.teal, pts:["Strength training (progressive resistance)","Aerobic/aquatic – walking, cycling","Range-of-motion & flexibility","Neuromuscular training"] },
{ icon:"📚", title:"Patient Education", fill:"7B3FA0", pts:["Ongoing – not a one-time event","Positive, non-fatalistic language","Direct to CDC / Arthritis Foundation","Tailor self-management strategies"] },
{ icon:"🦯", title:"Assistive Devices", fill:"B5600A", pts:["Canes & walking aids (recommended)","Braces for knee OA (moderate evidence)","Lateral wedge insoles: NOT recommended","Occupational therapy for hand OA"] },
];
cats.forEach((c, i) => {
const x = 0.22 + (i % 2) * 4.9;
const y = 0.95 + Math.floor(i / 2) * 2.2;
card(s, x, y, 4.65, 1.98, C.light, 0.09);
badge(s, x+0.1, y+0.12, 1.6, 0.42, c.fill, c.icon+" "+c.title, 8.5);
bulletList(s, c.pts, x+1.82, y+0.12, 2.72, 1.75, c.fill, 8.5);
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 4 – OA PHARMACOLOGIC MANAGEMENT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Pharmacologic Management (Stepwise)");
hLine(s, 0.78, C.oablue);
const steps = [
{ rank:"PREFER", drug:"Topical Agents", detail:"Topical NSAIDs (diclofenac gel), capsaicin cream", why:"Lowest systemic exposure; equivalent efficacy to oral", fill:"1A6B9A", bg:"EBF5FF" },
{ rank:"1ST LINE", drug:"Oral Acetaminophen", detail:"Standard analgesia; widely available", why:"Modest pain relief; safe for most patients", fill:"2E86AB", bg:C.light },
{ rank:"2ND LINE", drug:"Oral NSAIDs", detail:"Naproxen, ibuprofen, celecoxib", why:"More effective; lowest dose × shortest duration; add PPI if high GI risk", fill:C.teal, bg:"EBF5FF" },
{ rank:"ADJUNCT", drug:"Duloxetine", detail:"For central sensitization & widespread pain", why:"Useful when pain is out of proportion to structural changes", fill:"5A7B3A", bg:C.light },
{ rank:"LOCAL", drug:"Intra-articular Corticosteroids", detail:"Triamcinolone – short-term relief only", why:"Repeated injections may damage cartilage long-term", fill:"B5600A", bg:"FFF7EE" },
{ rank:"❌ AVOID", drug:"Opioids / Tramadol", detail:"AAOS strongly recommends AGAINST use", why:"Poor benefit-to-risk ratio in OA", fill:C.red, bg:"FEE8E6" },
];
steps.forEach((st, i) => {
const y = 0.9 + i * 0.73;
card(s, 0.22, y, 9.56, 0.66, st.bg, 0.06);
badge(s, 0.3, y+0.1, 1.05, 0.46, st.fill, st.rank, 7.5);
s.addText(st.drug, { x:1.45, y:y+0.08, w:2.85, h:0.27, fontSize:9.5, bold:true, color:i===5?C.red:C.navy, fontFace:FONT });
s.addText(st.detail, { x:1.45, y:y+0.35, w:2.85, h:0.25, fontSize:7.5, color:"555555", fontFace:FONT });
s.addText("→ "+st.why, { x:4.42, y:y+0.18, w:5.22, h:0.32, fontSize:8.5, color:"444444", fontFace:FONT, italic:true });
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 5 – OA SURGICAL OPTIONS + AAOS TABLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Surgical Options & AAOS Guideline Summary");
hLine(s, 0.78, C.oablue);
const surg = [
{ t:"Total Joint Arthroplasty", d:"After adequate trial of all modalities.\nDurable pain relief & function restoration.", good:true },
{ t:"High Tibial Osteotomy", d:"Unicompartmental knee OA.\nModerate evidence.", good:true },
{ t:"Arthroscopic Lavage / Debridement", d:"NOT recommended for OA.\nNo proven benefit.", good:false },
];
surg.forEach((c, i) => {
const x = 0.22 + i * 3.26;
card(s, x, 0.9, 3.1, 1.45, c.good?"EDF7ED":"FDECEA", 0.09);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:x+0.12, y:0.98, w:0.5, h:0.5, fill:{ color:c.good?C.teal:C.red }, line:{ color:c.good?C.teal:C.red }, rectRadius:0.25 });
s.addText(c.good?"✓":"✗", { x:x+0.12, y:0.98, w:0.5, h:0.5, fontSize:16, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(c.t, { x:x+0.72, y:0.98, w:2.28, h:0.5, fontSize:9, bold:true, color:"222222", fontFace:FONT, valign:"middle" });
s.addText(c.d, { x:x+0.12, y:1.52, w:2.88, h:0.76, fontSize:8, color:"555555", fontFace:FONT });
});
s.addText("AAOS Evidence-Based Recommendations – Knee OA (Non-Arthroplasty)", {
x:0.22, y:2.5, w:9.56, h:0.28, fontSize:9.5, bold:true, color:C.oablue, fontFace:FONT
});
const rows = [
["Grade","Intervention","Verdict"],
["★★★★ Strong","Patient education, Exercise (supervised/aquatic), Self-management","✓ Recommended"],
["★★★★ Strong","Topical NSAIDs, Oral NSAIDs, Acetaminophen","✓ Recommended"],
["★★★★ Strong","Opioids / Tramadol","✗ NOT Recommended"],
["★★★ Moderate","Canes, Braces, Weight loss, IA Corticosteroids","✓ Recommended"],
["★★ Limited","Glucosamine, PRP, Acupuncture, TENS, Shockwave","Use selectively"],
];
const tbl = rows.map((r,i) => r.map((cell, ci) => ({
text: cell,
options: {
bold: i===0,
fontSize: i===0 ? 8.5 : 8,
fontFace: FONT,
color: i===0 ? C.white : (cell.includes("NOT") ? C.red : cell.includes("✓") ? C.teal : "333333"),
fill: i===0 ? C.navy : (i%2===0 ? C.light : C.white),
align: "left", valign: "middle",
}
})));
s.addTable(tbl, {
x:0.22, y:2.82, w:9.56, colW:[2.0, 5.76, 1.8],
border:{ color:"B0C4DE", pt:0.5 }, rowH:0.3,
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 6 – GOUT SECTION DIVIDER
// ════════════════════════════════════════════
{
const s = pres.addSlide();
sectionBg(s, C.goutrd);
s.addText("PART 2", { x:0.4, y:1.4, w:9, h:0.45, fontSize:13, color:C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Gout", { x:0.4, y:1.9, w:9, h:1.1, fontSize:52, bold:true, color:C.white, fontFace:FONT });
s.addText("Acute Treatment • Urate-Lowering Therapy • Prevention", { x:0.4, y:3.05, w:9, h:0.45, fontSize:14, color:"FFCACA", fontFace:FONT, italic:true });
}
// ════════════════════════════════════════════
// SLIDE 7 – GOUT PATHOPHYSIOLOGY
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Pathophysiology & Risk Factors");
hLine(s, 0.78, C.goutrd);
// Left: pathway
card(s, 0.22, 0.9, 4.55, 4.3, "FFF5F5", 0.09);
s.addText("Pathophysiology", { x:0.32, y:0.95, w:4.35, h:0.32, fontSize:10, bold:true, color:C.goutrd, fontFace:FONT });
const path = [
{ t:"Hyperuricemia", arrow:false, bold:true },
{ t:"↓ (impaired renal excretion 90%, overproduction 10%)", arrow:false },
{ t:"MSU crystal deposition in joints", arrow:false, bold:true },
{ t:"↓", arrow:true },
{ t:"NLRP3 inflammasome → IL-1β release", arrow:false },
{ t:"↓", arrow:true },
{ t:"Neutrophil recruitment → lysosomal rupture", arrow:false },
{ t:"↓", arrow:true },
{ t:"ACUTE FLARE (pain, swelling, redness)", arrow:false, bold:true },
{ t:"↓ (if untreated)", arrow:true },
{ t:"Tophi, erosions, joint destruction", arrow:false, bold:true },
];
path.forEach((p,i) => {
s.addText(p.t, {
x:0.32, y:1.32+i*0.27, w:4.3, h:0.26,
fontSize: p.arrow ? 13 : 8.5,
color: p.arrow ? C.goutrd : (p.bold ? C.goutrd : "333333"),
fontFace:FONT, bold:p.bold||false,
align: p.arrow ? "center" : "left", valign:"middle"
});
});
// Right: risk factors
card(s, 5.0, 0.9, 4.78, 4.3, C.light, 0.09);
s.addText("Risk Factors", { x:5.1, y:0.95, w:4.58, h:0.32, fontSize:10, bold:true, color:C.oablue, fontFace:FONT });
const risks = [
"🍖 Purine-rich diet (red meat, shellfish, organ meats)",
"🍺 Alcohol – beer > spirits > wine",
"🧃 Fructose / sugar-sweetened beverages",
"⚖️ Obesity / metabolic syndrome",
"💊 Diuretics (thiazide, loop diuretics)",
"🫀 Hypertension, CKD, heart failure",
"🚶 Sedentary lifestyle",
"🧬 Genetic (HPRT deficiency, PRPP synthetase overactivity)",
];
risks.forEach((r,i) => {
s.addText(r, { x:5.1, y:1.32+i*0.36, w:4.55, h:0.33, fontSize:8.5, color:"333333", fontFace:FONT, valign:"middle" });
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 8 – GOUT ACUTE TREATMENT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Acute Flare Treatment");
hLine(s, 0.78, C.goutrd);
s.addText("Treat promptly – can abort attack within hours | Most effective within first 36 hours", {
x:0.35, y:0.83, w:9.3, h:0.22, fontSize:8.5, color:C.goutrd, fontFace:FONT, italic:true
});
const drugs = [
{ rank:"1ST LINE", drug:"NSAIDs", dose:"Indomethacin 50mg TID | Naproxen 500mg BID\nIbuprofen 800mg TID | Meloxicam 15mg daily", note:"Contraindicated in CKD, peptic ulcer disease, anticoagulation", fill:"A93226", bg:"FFF0F0" },
{ rank:"1ST LINE", drug:"Colchicine", dose:"1.2 mg PO then 0.6 mg 1 hour later\n(Low-dose = equally effective, better tolerated)", note:"Most effective within 36 hrs; avoid in CKD; caution with carvedilol / grapefruit juice", fill:"A93226", bg:"FFF0F0" },
{ rank:"ALTERNATE", drug:"Intra-articular Corticosteroids", dose:"40 mg (large joints) / 10–20 mg (small joints)\nTriamcinolone or methylprednisolone", note:"Monoarticular attack; rule out septic arthritis first; 90% effective within 24 hrs", fill:"C0702A", bg:"FFF7EE" },
{ rank:"ALTERNATE", drug:"Oral Prednisone", dose:"40–60 mg/day; taper over 7–10 days", note:"When NSAIDs & colchicine contraindicated; caution in poorly controlled diabetes", fill:"C0702A", bg:"FFF7EE" },
{ rank:"REFRACTORY", drug:"Anakinra (IL-1 inhibitor)", dose:"100 mg SC daily × 3 days\n(CKD <30 mL/min: every other day)", note:"When standard therapy is contraindicated or ineffective; avoid in active infection", fill:"8E44AD", bg:"F8F0FE" },
];
drugs.forEach((d,i) => {
const y = 1.1 + i * 0.83;
card(s, 0.22, y, 9.56, 0.76, d.bg, 0.07);
badge(s, 0.3, y+0.13, 1.0, 0.5, d.fill, d.rank, 7);
s.addText(d.drug, { x:1.4, y:y+0.08, w:2.8, h:0.28, fontSize:9.5, bold:true, color:C.navy, fontFace:FONT });
s.addText(d.dose, { x:1.4, y:y+0.36, w:2.8, h:0.34, fontSize:7.5, color:"555555", fontFace:FONT });
s.addText("⚠ "+d.note, { x:4.35, y:y+0.2, w:5.3, h:0.37, fontSize:8, color:"666666", fontFace:FONT, italic:true });
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 9 – GOUT ULT
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Urate-Lowering Therapy (ULT)");
hLine(s, 0.78, C.goutrd);
// Indications card
card(s, 0.22, 0.88, 4.55, 1.95, "FFF5F5", 0.09);
s.addText("Indications for ULT", { x:0.32, y:0.93, w:4.35, h:0.3, fontSize:9.5, bold:true, color:C.goutrd, fontFace:FONT });
bulletList(s, ["≥2 flares/year","Tophi present","Urate nephropathy or nephrolithiasis","CKD ≥ stage 3","Uric acid >9 mg/dL at first flare"], 0.32, 1.26, 4.3, 1.5, C.goutrd, 8.5);
// Targets card
card(s, 4.95, 0.88, 4.83, 1.95, "FFF0E0", 0.09);
s.addText("Urate Targets & Timing", { x:5.05, y:0.93, w:4.63, h:0.3, fontSize:9.5, bold:true, color:"B5600A", fontFace:FONT });
s.addText("No tophi → < 6 mg/dL", { x:5.05, y:1.28, w:4.63, h:0.35, fontSize:11, bold:true, color:C.teal, fontFace:FONT });
s.addText("With tophi → < 5 mg/dL", { x:5.05, y:1.67, w:4.63, h:0.35, fontSize:11, bold:true, color:C.goutrd, fontFace:FONT });
s.addText("• Start ≥2 weeks AFTER flare resolves\n• NEVER stop ULT during an active flare\n• Prophylaxis: low-dose colchicine ≥6 months", { x:5.05, y:2.06, w:4.63, h:0.65, fontSize:8, color:"555555", fontFace:FONT });
// ULT table
s.addText("ULT Drug Options", { x:0.22, y:2.9, w:9.56, h:0.28, fontSize:10, bold:true, color:C.navy, fontFace:FONT });
const ult = [
["Drug","Class","Dose","Key Caution"],
["Allopurinol","XO Inhibitor (1st line)","Start 100 mg; titrate slowly; max 800 mg","Screen HLA-B*5801 in African Americans & SE Asians\n→ risk of fatal severe cutaneous reaction"],
["Febuxostat","XO Inhibitor (2nd line)","40–80 mg/day","Higher cardiovascular event rate; blocks azathioprine/6-MP metabolism (reduce dose 60–75%)"],
["Probenecid","Uricosuric","500–3000 mg/day in divided doses","Ineffective in renal impairment; avoid if urinary UA >800 mg/24h"],
["Pegloticase","Uricase (IV)","8 mg IV every 2 weeks","Refractory tophaceous gout only; expensive"],
];
const ultTbl = ult.map((r,i) => r.map(cell => ({
text: cell,
options: {
bold:i===0, fontSize:i===0?8.5:8, fontFace:FONT,
color: i===0?C.white:(cell.includes("HLA")||cell.includes("cardiovascular")||cell.includes("Ineffective")?"A93226":"333333"),
fill: i===0?C.goutrd:(i%2===0?"FFF5F5":C.white),
valign:"middle", align:"left",
}
})));
s.addTable(ultTbl, { x:0.22, y:3.2, w:9.56, colW:[1.8,1.9,2.5,3.36], border:{ color:"E0B0B0", pt:0.5 }, rowH:0.43 });
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 10 – GOUT LIFESTYLE
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Lifestyle Modifications & Prevention");
hLine(s, 0.78, C.goutrd);
// AVOID column
card(s, 0.22, 0.9, 4.65, 4.3, "FDECEA", 0.09);
badge(s, 0.32, 0.96, 2.1, 0.38, C.goutrd, "❌ AVOID / LIMIT", 8.5);
const avoid = [
"Red meat & organ meats (liver, kidney)",
"Shellfish (shrimp, lobster, scallops)",
"Beer (highest risk) > spirits > wine",
"Sugar-sweetened drinks & fructose",
"Rapid/crash weight loss (triggers flares)",
"Thiazide & loop diuretics – switch if possible",
"Cyclosporine, pyrazinamide, ethambutol",
"Sedentary lifestyle",
];
const avoidArr = avoid.map((t,i) => ({
text:t, options:{ bullet:{ code:"274C", color:C.goutrd }, breakLine:i<avoid.length-1, fontSize:8.5, color:"333333", fontFace:FONT }
}));
s.addText(avoidArr, { x:0.35, y:1.4, w:4.35, h:3.65, valign:"top" });
// ENCOURAGE column
card(s, 5.13, 0.9, 4.65, 4.3, "EDF7ED", 0.09);
badge(s, 5.23, 0.96, 2.0, 0.38, C.teal, "✅ ENCOURAGE", 8.5);
const enc = [
"Low-fat dairy (mildly uricosuric effect)",
"Adequate hydration: 2–3 L/day",
"Coffee (linked to lower uric acid levels)",
"Cherries / tart cherry juice",
"Gradual, sustained weight loss",
"Losartan for hypertension (mild uricosuric)",
"Regular moderate exercise",
"Treat comorbidities (HTN, CKD, metabolic syndrome)",
];
const encArr = enc.map((t,i) => ({
text:t, options:{ bullet:{ code:"2714", color:C.teal }, breakLine:i<enc.length-1, fontSize:8.5, color:"333333", fontFace:FONT }
}));
s.addText(encArr, { x:5.26, y:1.4, w:4.38, h:3.65, valign:"top" });
// Warning strip above footer
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.3, w:10, h:0.14, fill:{ color:"FFF3CD" }, line:{ color:"FFF3CD" } });
s.addText("⚠ Flare Prophylaxis when starting ULT: Low-dose colchicine starting 1–2 weeks BEFORE ULT; continue ≥6 months after urate reaches target (longer if tophi present)", {
x:0.2, y:5.3, w:9.6, h:0.14, fontSize:7, color:"7B5800", fontFace:FONT, valign:"middle"
});
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 11 – COMPARISON
// ════════════════════════════════════════════
{
const s = pres.addSlide();
lightBg(s, C.teal);
slideTitle(s, "OA vs. Gout – Side-by-Side Comparison");
hLine(s, 0.78, C.teal);
const rows = [
["Feature","Osteoarthritis","Gout"],
["Key lifestyle change","Weight loss + exercise","Low-purine diet + reduce alcohol"],
["Acute treatment","Topical/oral NSAIDs, acetaminophen","NSAIDs, colchicine, corticosteroids"],
["Long-term prevention","Exercise adherence, weight control","ULT – keep uric acid <6 mg/dL"],
["Disease-modifying Rx","None approved\n(exercise/weight loss = closest)","Urate-lowering therapy (allopurinol)"],
["Critical DON'T","Avoid opioids / tramadol","Never stop ULT during a flare"],
["Surgical option","Total joint arthroplasty","Rarely needed (tophus debridement)"],
];
const tbl = rows.map((r,i) => [
{ text:r[0], options:{ bold:true, fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:C.navy, fill:i===0?C.teal:(i%2===0?C.light:C.white), valign:"middle" }},
{ text:r[1], options:{ fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:(i===5?"A93226":"333333"), fill:i===0?C.oablue:(i%2===0?"EBF5FF":"F5FAFF"), bold:i===0||i===5, valign:"middle" }},
{ text:r[2], options:{ fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:(i===5?C.goutrd:"333333"), fill:i===0?C.goutrd:(i%2===0?"FFEEEE":"FFF5F5"), bold:i===0||i===5, valign:"middle" }},
]);
s.addTable(tbl, { x:0.22, y:0.9, w:9.56, colW:[2.8,3.38,3.38], border:{ color:"C8D8E8", pt:0.5 }, rowH:0.59 });
footer(s);
}
// ════════════════════════════════════════════
// SLIDE 12 – KEY TAKEAWAYS
// ════════════════════════════════════════════
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("Key Takeaways", { x:0.3, y:0.2, w:9.4, h:0.52, fontSize:24, bold:true, color:C.white, fontFace:FONT });
hLine(s, 0.8, C.teal);
const takes = [
{ icon:"⚖️", color:C.oablue, title:"OA: Lifestyle Is the Cornerstone", body:"Weight loss ≥20% + tailored exercise is the strongest evidence-based intervention. No approved disease-modifying drug exists." },
{ icon:"💊", color:"2E86AB", title:"OA Pharmacology: Stepwise & Topical-First", body:"Topical NSAIDs → oral acetaminophen → oral NSAIDs. Avoid opioids. IA corticosteroids for short-term only." },
{ icon:"🔴", color:C.goutrd, title:"Gout: Treat Fast, Prevent Long-Term", body:"Abort acute flares quickly (NSAIDs/colchicine within 36 hrs). Initiate ULT when indicated; maintain urate <6 mg/dL lifelong." },
{ icon:"🥗", color:C.teal, title:"Gout Lifestyle: Diet + Hydration + Comorbidities", body:"Avoid purines, beer, fructose. Low-fat dairy + 2–3 L fluids/day. Treat HTN, CKD, metabolic syndrome aggressively." },
{ icon:"⚠️", color:C.amber, title:"Two Rules to Never Forget", body:"OA → Never prescribe opioids/tramadol. Gout → Never stop ULT during an active flare – it worsens the attack." },
];
takes.forEach((t,i) => {
const y = 0.95 + i * 0.9;
card(s, 0.28, y, 9.44, 0.8, "0A1E2E", 0.08);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:0.38, y:y+0.15, w:0.5, h:0.5, fill:{ color:t.color }, line:{ color:t.color }, rectRadius:0.25 });
s.addText(t.icon, { x:0.38, y:y+0.15, w:0.5, h:0.5, fontSize:14, fontFace:FONT, align:"center", valign:"middle" });
s.addText(t.title, { x:0.98, y:y+0.1, w:8.6, h:0.3, fontSize:9.5, bold:true, color:C.amber, fontFace:FONT });
s.addText(t.body, { x:0.98, y:y+0.42, w:8.6, h:0.3, fontSize:8.5, color:"BBCCDD", fontFace:FONT });
});
}
// ─── WRITE FILE ─────────────────────────────
pres.writeFile({ fileName:"/home/daytona/workspace/oa-gout/OA_Gout_Management.pptx" })
.then(() => console.log("DONE"))
.catch(e => { console.error(e); process.exit(1); });
cd /home/daytona/workspace/oa-gout && node make_ppt.js
ls -lh /home/daytona/workspace/oa-gout/OA_Gout_Management.pptx
OA Gout Management
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide (dark theme) |
| 2 | OA Section divider |
| 3 | OA – Lifestyle & Prevention (4 cards: Weight loss, Exercise, Education, Assistive devices) |
| 4 | OA – Pharmacologic Management (stepwise table with color-coded badges) |
| 5 | OA – Surgical Options + AAOS evidence-grade table |
| 6 | Gout Section divider |
| 7 | Gout – Pathophysiology & Risk Factors (2-column layout) |
| 8 | Gout – Acute Flare Treatment (5-drug table with 1st line / alternate / refractory tiers) |
| 9 | Gout – Urate-Lowering Therapy (indications, targets, drug table) |
| 10 | Gout – Lifestyle: Avoid vs. Encourage (red/green columns) |
| 11 | OA vs. Gout Side-by-Side Comparison table |
| 12 | Key Takeaways (dark theme, 5 summary cards) |
Make presentation on it
OA Gout Management
Presentation · PPTX
Can u give a thank u slide from above ppt
ls /home/daytona/workspace/oa-gout/
mkdir -p /home/daytona/workspace/oa-gout
mkdir -p /tmp/workspace/oa-gout && ls /tmp/workspace/
~/oa-gout/make_ppt.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Osteoarthritis & Gout – Management, Prevention & Lifestyle";
const C = {
navy: "1A3A5C",
teal: "0E7C7B",
amber: "E8A838",
red: "C0392B",
light: "EEF3F8",
white: "FFFFFF",
dark: "0D1F2D",
ltgrey: "DEE5ED",
oablue: "2C5F8A",
goutrd: "A93226",
};
const FONT = "Calibri";
function darkBg(s) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color:C.dark }, line:{ color:C.dark } });
}
function lightBg(s, accent) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color:C.white }, line:{ color:C.white } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:0.07, fill:{ color:accent||C.navy }, line:{ color:accent||C.navy } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.555, w:10, h:0.07, fill:{ color:accent||C.navy }, line:{ color:accent||C.navy } });
}
function sectionBg(s, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:10, h:5.625, fill:{ color }, line:{ color } });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
}
function hLine(s, y, color) {
s.addShape(pres.shapes.RECTANGLE, { x:0.35, y, w:9.3, h:0.02, fill:{ color:color||C.ltgrey }, line:{ color:color||C.ltgrey } });
}
function footer(s) {
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.44, w:10, h:0.185, fill:{ color:C.navy }, line:{ color:C.navy } });
s.addText("Sources: Firestein & Kelley's | Harrison's 22e | Washington Manual | Lippincott Pharmacology | Miller's Orthopaedics 9e | ACR 2019 | AAOS CPG", {
x:0.2, y:5.447, w:9.6, h:0.17, fontSize:6, color:"8AAEC8", fontFace:FONT, align:"center"
});
}
function slideTitle(s, text) {
s.addText(text, { x:0.35, y:0.15, w:9.3, h:0.55, fontSize:21, bold:true, color:C.navy, fontFace:FONT, valign:"middle" });
}
function card(s, x, y, w, h, fill, r) {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x, y, w, h, fill:{ color:fill||C.light }, line:{ color:fill||C.light }, rectRadius:r||0.08,
shadow:{ type:"outer", color:"000000", blur:4, offset:2, angle:135, opacity:0.1 }
});
}
function badge(s, x, y, w, h, fill, text, fs) {
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y, w, h, fill:{ color:fill }, line:{ color:fill }, rectRadius:0.06 });
s.addText(text, { x, y, w, h, fontSize:fs||8, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
}
function bulletList(s, items, x, y, w, h, dotColor, fs) {
const arr = items.map((t,i) => ({
text: t,
options: { bullet:{ code:"25CF", color:dotColor||C.amber }, breakLine: i<items.length-1, fontSize:fs||9, color:"333333", fontFace:FONT }
}));
s.addText(arr, { x, y, w, h, valign:"top" });
}
// ── SLIDE 1: TITLE ──────────────────────────────────────────
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("Osteoarthritis & Gout", { x:0.3, y:1.0, w:9.4, h:1.0, fontSize:40, bold:true, color:C.white, fontFace:FONT, align:"center", charSpacing:1 });
s.addText("Management • Prevention • Lifestyle Modification", { x:0.3, y:2.1, w:9.4, h:0.5, fontSize:15, color:C.amber, fontFace:FONT, align:"center", italic:true });
hLine(s, 2.72, C.teal);
s.addText("ACR 2019 | AAOS CPG | Harrison's 22e | Firestein & Kelley's | Washington Manual", { x:0.3, y:2.84, w:9.4, h:0.3, fontSize:8.5, color:"7AAAC8", fontFace:FONT, align:"center" });
card(s, 1.0, 3.35, 3.5, 0.72, C.oablue, 0.1);
s.addText("🦴 Osteoarthritis", { x:1.0, y:3.35, w:3.5, h:0.72, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
card(s, 5.5, 3.35, 3.5, 0.72, C.goutrd, 0.1);
s.addText("🔴 Gout", { x:5.5, y:3.35, w:3.5, h:0.72, fontSize:13, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
}
// ── SLIDE 2: OA DIVIDER ──────────────────────────────────────
{
const s = pres.addSlide();
sectionBg(s, C.oablue);
s.addText("PART 1", { x:0.4, y:1.4, w:9, h:0.45, fontSize:13, color:C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Osteoarthritis", { x:0.4, y:1.9, w:9, h:1.1, fontSize:46, bold:true, color:C.white, fontFace:FONT });
s.addText("Management • Prevention • Lifestyle", { x:0.4, y:3.05, w:9, h:0.45, fontSize:14, color:"AACCEE", fontFace:FONT, italic:true });
}
// ── SLIDE 3: OA LIFESTYLE ────────────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Lifestyle Modifications & Prevention");
hLine(s, 0.78, C.oablue);
const cats = [
{ icon:"⚖️", title:"Weight Loss", fill:"1A6B9A", pts:["Most impactful modifiable factor","≥20% weight loss = greatest benefit","Combine diet + exercise (not diet alone)","Bariatric surgery for select patients"] },
{ icon:"🏃", title:"Exercise", fill:C.teal, pts:["Strength training (progressive resistance)","Aerobic/aquatic – walking, cycling","Range-of-motion & flexibility","Neuromuscular training"] },
{ icon:"📚", title:"Patient Education", fill:"7B3FA0", pts:["Ongoing – not a one-time event","Positive, non-fatalistic language","Direct to CDC / Arthritis Foundation","Tailor self-management strategies"] },
{ icon:"🦯", title:"Assistive Devices", fill:"B5600A", pts:["Canes & walking aids (recommended)","Braces for knee OA (moderate evidence)","Lateral wedge insoles: NOT recommended","Occupational therapy for hand OA"] },
];
cats.forEach((c, i) => {
const x = 0.22 + (i % 2) * 4.9;
const y = 0.95 + Math.floor(i / 2) * 2.2;
card(s, x, y, 4.65, 1.98, C.light, 0.09);
badge(s, x+0.1, y+0.12, 1.6, 0.42, c.fill, c.icon+" "+c.title, 8.5);
bulletList(s, c.pts, x+1.82, y+0.12, 2.72, 1.75, c.fill, 8.5);
});
footer(s);
}
// ── SLIDE 4: OA PHARMACOLOGY ─────────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Pharmacologic Management (Stepwise)");
hLine(s, 0.78, C.oablue);
const steps = [
{ rank:"PREFER", drug:"Topical Agents", detail:"Topical NSAIDs (diclofenac gel), capsaicin cream", why:"Lowest systemic exposure; equivalent efficacy to oral", fill:"1A6B9A", bg:"EBF5FF" },
{ rank:"1ST LINE", drug:"Oral Acetaminophen", detail:"Standard analgesia; widely available", why:"Modest pain relief; safe for most patients", fill:"2E86AB", bg:C.light },
{ rank:"2ND LINE", drug:"Oral NSAIDs", detail:"Naproxen, ibuprofen, celecoxib", why:"More effective; lowest dose × shortest duration; add PPI if GI risk", fill:C.teal, bg:"EBF5FF" },
{ rank:"ADJUNCT", drug:"Duloxetine", detail:"For central sensitization & widespread pain", why:"Useful when pain is out of proportion to structural changes", fill:"5A7B3A", bg:C.light },
{ rank:"LOCAL", drug:"Intra-articular Corticosteroids", detail:"Triamcinolone – short-term relief only", why:"Repeated injections may damage cartilage long-term", fill:"B5600A", bg:"FFF7EE" },
{ rank:"❌ AVOID", drug:"Opioids / Tramadol", detail:"AAOS strongly recommends AGAINST use", why:"Poor benefit-to-risk ratio in OA", fill:C.red, bg:"FEE8E6" },
];
steps.forEach((st, i) => {
const y = 0.9 + i * 0.73;
card(s, 0.22, y, 9.56, 0.66, st.bg, 0.06);
badge(s, 0.3, y+0.1, 1.05, 0.46, st.fill, st.rank, 7.5);
s.addText(st.drug, { x:1.45, y:y+0.08, w:2.85, h:0.27, fontSize:9.5, bold:true, color:i===5?C.red:C.navy, fontFace:FONT });
s.addText(st.detail, { x:1.45, y:y+0.35, w:2.85, h:0.25, fontSize:7.5, color:"555555", fontFace:FONT });
s.addText("→ "+st.why, { x:4.42, y:y+0.18, w:5.22, h:0.32, fontSize:8.5, color:"444444", fontFace:FONT, italic:true });
});
footer(s);
}
// ── SLIDE 5: OA SURGICAL + AAOS ─────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.oablue);
slideTitle(s, "OA – Surgical Options & AAOS Guideline Summary");
hLine(s, 0.78, C.oablue);
const surg = [
{ t:"Total Joint Arthroplasty", d:"After adequate trial of all modalities.\nDurable pain relief & function restoration.", good:true },
{ t:"High Tibial Osteotomy", d:"Unicompartmental knee OA.\nModerate evidence.", good:true },
{ t:"Arthroscopic Lavage / Debridement", d:"NOT recommended for OA.\nNo proven benefit.", good:false },
];
surg.forEach((c, i) => {
const x = 0.22 + i * 3.26;
card(s, x, 0.9, 3.1, 1.45, c.good?"EDF7ED":"FDECEA", 0.09);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:x+0.12, y:0.98, w:0.5, h:0.5, fill:{ color:c.good?C.teal:C.red }, line:{ color:c.good?C.teal:C.red }, rectRadius:0.25 });
s.addText(c.good?"✓":"✗", { x:x+0.12, y:0.98, w:0.5, h:0.5, fontSize:16, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
s.addText(c.t, { x:x+0.72, y:0.98, w:2.28, h:0.5, fontSize:9, bold:true, color:"222222", fontFace:FONT, valign:"middle" });
s.addText(c.d, { x:x+0.12, y:1.52, w:2.88, h:0.76, fontSize:8, color:"555555", fontFace:FONT });
});
s.addText("AAOS Evidence-Based Recommendations – Knee OA (Non-Arthroplasty)", { x:0.22, y:2.5, w:9.56, h:0.28, fontSize:9.5, bold:true, color:C.oablue, fontFace:FONT });
const rows = [
["Grade","Intervention","Verdict"],
["★★★★ Strong","Patient education, Exercise (supervised/aquatic), Self-management","✓ Recommended"],
["★★★★ Strong","Topical NSAIDs, Oral NSAIDs, Acetaminophen","✓ Recommended"],
["★★★★ Strong","Opioids / Tramadol","✗ NOT Recommended"],
["★★★ Moderate","Canes, Braces, Weight loss, IA Corticosteroids","✓ Recommended"],
["★★ Limited","Glucosamine, PRP, Acupuncture, TENS, Shockwave","Use selectively"],
];
const tbl = rows.map((r,i) => r.map(cell => ({
text: cell,
options: { bold:i===0, fontSize:i===0?8.5:8, fontFace:FONT,
color: i===0?C.white:(cell.includes("NOT")?C.red:cell.includes("✓")?C.teal:"333333"),
fill: i===0?C.navy:(i%2===0?C.light:C.white), align:"left", valign:"middle" }
})));
s.addTable(tbl, { x:0.22, y:2.82, w:9.56, colW:[2.0,5.76,1.8], border:{ color:"B0C4DE", pt:0.5 }, rowH:0.3 });
footer(s);
}
// ── SLIDE 6: GOUT DIVIDER ────────────────────────────────────
{
const s = pres.addSlide();
sectionBg(s, C.goutrd);
s.addText("PART 2", { x:0.4, y:1.4, w:9, h:0.45, fontSize:13, color:C.amber, fontFace:FONT, bold:true, charSpacing:6 });
s.addText("Gout", { x:0.4, y:1.9, w:9, h:1.1, fontSize:52, bold:true, color:C.white, fontFace:FONT });
s.addText("Acute Treatment • Urate-Lowering Therapy • Prevention", { x:0.4, y:3.05, w:9, h:0.45, fontSize:14, color:"FFCACA", fontFace:FONT, italic:true });
}
// ── SLIDE 7: GOUT PATHOPHYSIOLOGY ───────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Pathophysiology & Risk Factors");
hLine(s, 0.78, C.goutrd);
card(s, 0.22, 0.9, 4.55, 4.3, "FFF5F5", 0.09);
s.addText("Pathophysiology", { x:0.32, y:0.95, w:4.35, h:0.32, fontSize:10, bold:true, color:C.goutrd, fontFace:FONT });
const path = [
{ t:"Hyperuricemia", bold:true, arrow:false },
{ t:"↓ (impaired renal excretion 90%, overproduction 10%)", bold:false, arrow:false },
{ t:"MSU crystal deposition in joints", bold:true, arrow:false },
{ t:"↓", bold:false, arrow:true },
{ t:"NLRP3 inflammasome → IL-1β release", bold:false, arrow:false },
{ t:"↓", bold:false, arrow:true },
{ t:"Neutrophil recruitment → lysosomal rupture", bold:false, arrow:false },
{ t:"↓", bold:false, arrow:true },
{ t:"ACUTE FLARE (pain, swelling, redness)", bold:true, arrow:false },
{ t:"↓ (if untreated)", bold:false, arrow:true },
{ t:"Tophi, erosions, joint destruction", bold:true, arrow:false },
];
path.forEach((p,i) => {
s.addText(p.t, { x:0.32, y:1.32+i*0.27, w:4.3, h:0.26, fontSize:p.arrow?13:8.5,
color:p.arrow?C.goutrd:(p.bold?C.goutrd:"333333"), fontFace:FONT, bold:p.bold||false,
align:p.arrow?"center":"left", valign:"middle" });
});
card(s, 5.0, 0.9, 4.78, 4.3, C.light, 0.09);
s.addText("Risk Factors", { x:5.1, y:0.95, w:4.58, h:0.32, fontSize:10, bold:true, color:C.oablue, fontFace:FONT });
["🍖 Purine-rich diet (red meat, shellfish, organ meats)","🍺 Alcohol – beer > spirits > wine","🧃 Fructose / sugar-sweetened beverages","⚖️ Obesity / metabolic syndrome","💊 Diuretics (thiazide, loop diuretics)","🫀 Hypertension, CKD, heart failure","🚶 Sedentary lifestyle","🧬 Genetic (HPRT deficiency, PRPP synthetase overactivity)"]
.forEach((r,i) => s.addText(r, { x:5.1, y:1.32+i*0.36, w:4.55, h:0.33, fontSize:8.5, color:"333333", fontFace:FONT, valign:"middle" }));
footer(s);
}
// ── SLIDE 8: GOUT ACUTE TREATMENT ───────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Acute Flare Treatment");
hLine(s, 0.78, C.goutrd);
s.addText("Treat promptly – can abort attack within hours | Most effective within first 36 hours", { x:0.35, y:0.83, w:9.3, h:0.22, fontSize:8.5, color:C.goutrd, fontFace:FONT, italic:true });
const drugs = [
{ rank:"1ST LINE", drug:"NSAIDs", dose:"Indomethacin 50mg TID | Naproxen 500mg BID\nIbuprofen 800mg TID | Meloxicam 15mg daily", note:"Contraindicated in CKD, peptic ulcer disease, anticoagulation", fill:"A93226", bg:"FFF0F0" },
{ rank:"1ST LINE", drug:"Colchicine", dose:"1.2 mg PO then 0.6 mg 1 hour later\n(Low-dose = equally effective, better tolerated)", note:"Most effective within 36 hrs; avoid in CKD; caution with carvedilol / grapefruit juice", fill:"A93226", bg:"FFF0F0" },
{ rank:"ALTERNATE", drug:"Intra-articular Corticosteroids", dose:"40 mg (large joints) / 10–20 mg (small joints)\nTriamcinolone or methylprednisolone", note:"Monoarticular attack; rule out septic arthritis; 90% effective within 24 hrs", fill:"C0702A", bg:"FFF7EE" },
{ rank:"ALTERNATE", drug:"Oral Prednisone", dose:"40–60 mg/day; taper over 7–10 days", note:"When NSAIDs & colchicine contraindicated; caution in poorly controlled diabetes", fill:"C0702A", bg:"FFF7EE" },
{ rank:"REFRACTORY",drug:"Anakinra (IL-1 inhibitor)", dose:"100 mg SC daily × 3 days", note:"When standard therapy is contraindicated or ineffective; avoid in active infection", fill:"8E44AD", bg:"F8F0FE" },
];
drugs.forEach((d,i) => {
const y = 1.1 + i * 0.83;
card(s, 0.22, y, 9.56, 0.76, d.bg, 0.07);
badge(s, 0.3, y+0.13, 1.0, 0.5, d.fill, d.rank, 7);
s.addText(d.drug, { x:1.4, y:y+0.08, w:2.8, h:0.28, fontSize:9.5, bold:true, color:C.navy, fontFace:FONT });
s.addText(d.dose, { x:1.4, y:y+0.36, w:2.8, h:0.34, fontSize:7.5, color:"555555", fontFace:FONT });
s.addText("⚠ "+d.note, { x:4.35, y:y+0.2, w:5.3, h:0.37, fontSize:8, color:"666666", fontFace:FONT, italic:true });
});
footer(s);
}
// ── SLIDE 9: GOUT ULT ───────────────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Urate-Lowering Therapy (ULT)");
hLine(s, 0.78, C.goutrd);
card(s, 0.22, 0.88, 4.55, 1.95, "FFF5F5", 0.09);
s.addText("Indications for ULT", { x:0.32, y:0.93, w:4.35, h:0.3, fontSize:9.5, bold:true, color:C.goutrd, fontFace:FONT });
bulletList(s, ["≥2 flares/year","Tophi present","Urate nephropathy or nephrolithiasis","CKD ≥ stage 3","Uric acid >9 mg/dL at first flare"], 0.32, 1.26, 4.3, 1.5, C.goutrd, 8.5);
card(s, 4.95, 0.88, 4.83, 1.95, "FFF0E0", 0.09);
s.addText("Urate Targets & Timing", { x:5.05, y:0.93, w:4.63, h:0.3, fontSize:9.5, bold:true, color:"B5600A", fontFace:FONT });
s.addText("No tophi → < 6 mg/dL", { x:5.05, y:1.28, w:4.63, h:0.35, fontSize:11, bold:true, color:C.teal, fontFace:FONT });
s.addText("With tophi → < 5 mg/dL", { x:5.05, y:1.67, w:4.63, h:0.35, fontSize:11, bold:true, color:C.goutrd, fontFace:FONT });
s.addText("• Start ≥2 weeks AFTER flare resolves\n• NEVER stop ULT during an active flare\n• Prophylaxis: low-dose colchicine ≥6 months", { x:5.05, y:2.06, w:4.63, h:0.65, fontSize:8, color:"555555", fontFace:FONT });
s.addText("ULT Drug Options", { x:0.22, y:2.9, w:9.56, h:0.28, fontSize:10, bold:true, color:C.navy, fontFace:FONT });
const ult = [
["Drug","Class","Dose","Key Caution"],
["Allopurinol","XO Inhibitor (1st line)","Start 100 mg; titrate slowly; max 800 mg","Screen HLA-B*5801 in African Americans & SE Asians → risk of fatal severe cutaneous reaction"],
["Febuxostat","XO Inhibitor (2nd line)","40–80 mg/day","Higher cardiovascular event rate; blocks azathioprine/6-MP metabolism (reduce dose 60–75%)"],
["Probenecid","Uricosuric","500–3000 mg/day in divided doses","Ineffective in renal impairment; avoid if urinary UA >800 mg/24h"],
["Pegloticase","Uricase (IV)","8 mg IV every 2 weeks","Refractory tophaceous gout only; expensive"],
];
const ultTbl = ult.map((r,i) => r.map(cell => ({
text: cell,
options: { bold:i===0, fontSize:i===0?8.5:8, fontFace:FONT,
color: i===0?C.white:(cell.includes("HLA")||cell.includes("cardiovascular")||cell.includes("Ineffective")?"A93226":"333333"),
fill: i===0?C.goutrd:(i%2===0?"FFF5F5":C.white), valign:"middle", align:"left" }
})));
s.addTable(ultTbl, { x:0.22, y:3.2, w:9.56, colW:[1.8,1.9,2.5,3.36], border:{ color:"E0B0B0", pt:0.5 }, rowH:0.43 });
footer(s);
}
// ── SLIDE 10: GOUT LIFESTYLE ─────────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.goutrd);
slideTitle(s, "Gout – Lifestyle Modifications & Prevention");
hLine(s, 0.78, C.goutrd);
card(s, 0.22, 0.9, 4.65, 4.3, "FDECEA", 0.09);
badge(s, 0.32, 0.96, 2.1, 0.38, C.goutrd, "❌ AVOID / LIMIT", 8.5);
const avoidArr = ["Red meat & organ meats (liver, kidney)","Shellfish (shrimp, lobster, scallops)","Beer (highest risk) > spirits > wine","Sugar-sweetened drinks & fructose","Rapid/crash weight loss (triggers flares)","Thiazide & loop diuretics – switch if possible","Cyclosporine, pyrazinamide, ethambutol","Sedentary lifestyle"]
.map((t,i,a) => ({ text:t, options:{ bullet:{ code:"274C", color:C.goutrd }, breakLine:i<a.length-1, fontSize:8.5, color:"333333", fontFace:FONT } }));
s.addText(avoidArr, { x:0.35, y:1.4, w:4.35, h:3.65, valign:"top" });
card(s, 5.13, 0.9, 4.65, 4.3, "EDF7ED", 0.09);
badge(s, 5.23, 0.96, 2.0, 0.38, C.teal, "✅ ENCOURAGE", 8.5);
const encArr = ["Low-fat dairy (mildly uricosuric effect)","Adequate hydration: 2–3 L/day","Coffee (linked to lower uric acid levels)","Cherries / tart cherry juice","Gradual, sustained weight loss","Losartan for hypertension (mild uricosuric)","Regular moderate exercise","Treat comorbidities (HTN, CKD, metabolic syndrome)"]
.map((t,i,a) => ({ text:t, options:{ bullet:{ code:"2714", color:C.teal }, breakLine:i<a.length-1, fontSize:8.5, color:"333333", fontFace:FONT } }));
s.addText(encArr, { x:5.26, y:1.4, w:4.38, h:3.65, valign:"top" });
s.addShape(pres.shapes.RECTANGLE, { x:0, y:5.3, w:10, h:0.14, fill:{ color:"FFF3CD" }, line:{ color:"FFF3CD" } });
s.addText("⚠ Flare Prophylaxis when starting ULT: Low-dose colchicine starting 1–2 weeks BEFORE ULT; continue ≥6 months after urate reaches target (longer if tophi present)", { x:0.2, y:5.3, w:9.6, h:0.14, fontSize:7, color:"7B5800", fontFace:FONT, valign:"middle" });
footer(s);
}
// ── SLIDE 11: COMPARISON ─────────────────────────────────────
{
const s = pres.addSlide();
lightBg(s, C.teal);
slideTitle(s, "OA vs. Gout – Side-by-Side Comparison");
hLine(s, 0.78, C.teal);
const rows = [
["Feature","Osteoarthritis","Gout"],
["Key lifestyle change","Weight loss + exercise","Low-purine diet + reduce alcohol"],
["Acute treatment","Topical/oral NSAIDs, acetaminophen","NSAIDs, colchicine, corticosteroids"],
["Long-term prevention","Exercise adherence, weight control","ULT – keep uric acid <6 mg/dL"],
["Disease-modifying Rx","None approved\n(exercise/weight loss = closest)","Urate-lowering therapy (allopurinol)"],
["Critical DON'T","Avoid opioids / tramadol","Never stop ULT during a flare"],
["Surgical option","Total joint arthroplasty","Rarely needed (tophus debridement)"],
];
const tbl = rows.map((r,i) => [
{ text:r[0], options:{ bold:true, fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:C.navy, fill:i===0?C.teal:(i%2===0?C.light:C.white), valign:"middle" }},
{ text:r[1], options:{ bold:i===0||i===5, fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:(i===5?"A93226":"333333"), fill:i===0?C.oablue:(i%2===0?"EBF5FF":"F5FAFF"), valign:"middle" }},
{ text:r[2], options:{ bold:i===0||i===5, fontSize:i===0?9:8.5, fontFace:FONT, color:i===0?C.white:(i===5?C.goutrd:"333333"), fill:i===0?C.goutrd:(i%2===0?"FFEEEE":"FFF5F5"), valign:"middle" }},
]);
s.addTable(tbl, { x:0.22, y:0.9, w:9.56, colW:[2.8,3.38,3.38], border:{ color:"C8D8E8", pt:0.5 }, rowH:0.59 });
footer(s);
}
// ── SLIDE 12: KEY TAKEAWAYS ──────────────────────────────────
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.1, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
s.addText("Key Takeaways", { x:0.3, y:0.2, w:9.4, h:0.52, fontSize:24, bold:true, color:C.white, fontFace:FONT });
hLine(s, 0.8, C.teal);
const takes = [
{ icon:"⚖️", color:C.oablue, title:"OA: Lifestyle Is the Cornerstone", body:"Weight loss ≥20% + tailored exercise is the strongest evidence-based intervention. No approved disease-modifying drug exists." },
{ icon:"💊", color:"2E86AB", title:"OA Pharmacology: Stepwise & Topical-First", body:"Topical NSAIDs → oral acetaminophen → oral NSAIDs. Avoid opioids. IA corticosteroids for short-term only." },
{ icon:"🔴", color:C.goutrd, title:"Gout: Treat Fast, Prevent Long-Term", body:"Abort acute flares quickly (NSAIDs/colchicine within 36 hrs). Initiate ULT when indicated; maintain urate <6 mg/dL lifelong." },
{ icon:"🥗", color:C.teal, title:"Gout Lifestyle: Diet + Hydration + Comorbidities", body:"Avoid purines, beer, fructose. Low-fat dairy + 2–3 L fluids/day. Treat HTN, CKD, metabolic syndrome aggressively." },
{ icon:"⚠️", color:C.amber, title:"Two Rules to Never Forget", body:"OA → Never prescribe opioids/tramadol. Gout → Never stop ULT during an active flare – it worsens the attack." },
];
takes.forEach((t,i) => {
const y = 0.95 + i * 0.9;
card(s, 0.28, y, 9.44, 0.8, "0A1E2E", 0.08);
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x:0.38, y:y+0.15, w:0.5, h:0.5, fill:{ color:t.color }, line:{ color:t.color }, rectRadius:0.25 });
s.addText(t.icon, { x:0.38, y:y+0.15, w:0.5, h:0.5, fontSize:14, fontFace:FONT, align:"center", valign:"middle" });
s.addText(t.title, { x:0.98, y:y+0.1, w:8.6, h:0.3, fontSize:9.5, bold:true, color:C.amber, fontFace:FONT });
s.addText(t.body, { x:0.98, y:y+0.42, w:8.6, h:0.3, fontSize:8.5, color:"BBCCDD", fontFace:FONT });
});
}
// ── SLIDE 13: THANK YOU ──────────────────────────────────────
{
const s = pres.addSlide();
darkBg(s);
// Decorative amber strip left
s.addShape(pres.shapes.RECTANGLE, { x:0, y:0, w:0.12, h:5.625, fill:{ color:C.amber }, line:{ color:C.amber } });
// Teal bottom accent bar
s.addShape(pres.shapes.RECTANGLE, { x:0, y:4.9, w:10, h:0.725, fill:{ color:C.teal }, line:{ color:C.teal } });
// Large "Thank You" text
s.addText("Thank You", {
x:0.3, y:0.7, w:9.4, h:1.4,
fontSize:60, bold:true, color:C.white, fontFace:FONT, align:"center", charSpacing:2
});
// Amber underline accent
s.addShape(pres.shapes.RECTANGLE, { x:3.2, y:2.15, w:3.6, h:0.06, fill:{ color:C.amber }, line:{ color:C.amber } });
// Subtitle
s.addText("Osteoarthritis & Gout – Management, Prevention & Lifestyle", {
x:0.5, y:2.32, w:9.0, h:0.5,
fontSize:13, italic:true, color:"AACCEE", fontFace:FONT, align:"center"
});
// 3 summary pills
const pills = [
{ label:"Education + Exercise + Weight Loss", fill:C.oablue },
{ label:"ULT + Low-Purine Diet + Hydration", fill:C.goutrd },
{ label:"Stepwise Pharmacology", fill:C.teal },
];
pills.forEach((p, i) => {
const x = 0.55 + i * 3.05;
s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y:2.98, w:2.85, h:0.52, fill:{ color:p.fill }, line:{ color:p.fill }, rectRadius:0.26 });
s.addText(p.label, { x, y:2.98, w:2.85, h:0.52, fontSize:8, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle" });
});
// Divider line
hLine(s, 3.7, "2A4A6A");
// Reference line
s.addText("Firestein & Kelley's Textbook of Rheumatology | Harrison's Principles of Internal Medicine 22e", {
x:0.5, y:3.82, w:9.0, h:0.28, fontSize:8, color:"7AAAC8", fontFace:FONT, align:"center"
});
s.addText("Washington Manual of Medical Therapeutics | Lippincott Illustrated Reviews: Pharmacology | ACR 2019 | AAOS CPG", {
x:0.5, y:4.12, w:9.0, h:0.28, fontSize:8, color:"7AAAC8", fontFace:FONT, align:"center"
});
// Teal bar text
s.addText("Questions & Discussion", {
x:0.3, y:4.92, w:9.4, h:0.7, fontSize:16, bold:true, color:C.white, fontFace:FONT, align:"center", valign:"middle"
});
}
// ── WRITE ────────────────────────────────────────────────────
pres.writeFile({ fileName:"/tmp/workspace/oa-gout/OA_Gout_Management.pptx" })
.then(() => console.log("DONE"))
.catch(e => { console.error(e); process.exit(1); });
cd /tmp/workspace/oa-gout && node make_ppt.js && ls -lh OA_Gout_Management.pptx
find / -name "pptxgenjs" -type d 2>/dev/null | head -5; ls /home/daytona/skills/pptx/ 2>/dev/null
ls /skills/readonly/pptx/ 2>/dev/null; node -e "require('pptxgenjs')" 2>&1 | head -3; npm list -g pptxgenjs 2>/dev/null | head -3
npm install --prefix /tmp/workspace/oa-gout pptxgenjs 2>&1 | tail -5
cd /tmp/workspace/oa-gout && node make_ppt.js && ls -lh OA_Gout_Management.pptx
OA Gout Management
Presentation · PPTX
Make a ppt and make simple and according to this content
mkdir -p /tmp/workspace/raas && npm install --prefix /tmp/workspace/raas pptxgenjs 2>&1 | tail -3
~/raas/raas.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "RAAS Inhibitors";
// Palette
const NAVY = "1B3A6B";
const BLUE = "2E6DA4";
const LTBLUE= "D6E8F7";
const TEAL = "0E7C7B";
const RED = "C0392B";
const AMBER = "E67E22";
const GREEN = "1A7A4A";
const WHITE = "FFFFFF";
const DARK = "1A1A2E";
const LGREY = "F2F6FA";
const MGREY = "BDC3C7";
const FONT = "Calibri";
// ── helpers ──────────────────────────────────────
function bg(s, color){ s.addShape(pres.shapes.RECTANGLE,{x:0,y:0,w:10,h:5.625,fill:{color},line:{color}}); }
function topBar(s,color){ s.addShape(pres.shapes.RECTANGLE,{x:0,y:0,w:10,h:0.55,fill:{color:color||NAVY},line:{color:color||NAVY}}); }
function botBar(s,color){ s.addShape(pres.shapes.RECTANGLE,{x:0,y:5.3,w:10,h:0.325,fill:{color:color||NAVY},line:{color:color||NAVY}}); }
function hdr(s,text){
s.addText(text,{x:0,y:0,w:10,h:0.55,fontSize:18,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
}
function subHdr(s,text,color){
s.addShape(pres.shapes.RECTANGLE,{x:0.3,y:0.62,w:9.4,h:0.35,fill:{color:color||BLUE},line:{color:color||BLUE}});
s.addText(text,{x:0.3,y:0.62,w:9.4,h:0.35,fontSize:13,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
}
function card(s,x,y,w,h,fill){
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y,w,h,fill:{color:fill||LGREY},line:{color:MGREY,width:0.5},rectRadius:0.07});
}
function label(s,x,y,w,text,color){
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y,w,h:0.32,fill:{color:color||NAVY},line:{color:color||NAVY},rectRadius:0.05});
s.addText(text,{x,y,w,h:0.32,fontSize:8,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
}
function txt(s,x,y,w,h,text,opts){
s.addText(text,{x,y,w,h,fontSize:opts&&opts.fs||9,color:opts&&opts.color||"222222",fontFace:FONT,bold:opts&&opts.bold||false,italic:opts&&opts.italic||false,valign:"top",...(opts||{})});
}
function bul(s, items, x, y, w, h, dotColor, fs){
const arr = items.map((t,i)=>({
text:t, options:{bullet:{code:"25CF",color:dotColor||NAVY}, breakLine:i<items.length-1, fontSize:fs||9, color:"222222", fontFace:FONT}
}));
s.addText(arr,{x,y,w,h,valign:"top"});
}
function pageNum(s,n){
s.addText(""+n,{x:0,y:5.3,w:10,h:0.325,fontSize:8,color:"AABBCC",fontFace:FONT,align:"center",valign:"middle"});
}
// ══════════════════════════════════════════════════
// SLIDE 1 – TITLE
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,DARK);
// Decorative bars
s.addShape(pres.shapes.RECTANGLE,{x:0,y:0,w:0.12,h:5.625,fill:{color:AMBER},line:{color:AMBER}});
s.addShape(pres.shapes.RECTANGLE,{x:0,y:4.8,w:10,h:0.825,fill:{color:NAVY},line:{color:NAVY}});
s.addText("RAAS Inhibitors",{x:0.3,y:0.8,w:9.4,h:1.2,fontSize:48,bold:true,color:WHITE,fontFace:FONT,align:"center",charSpacing:1});
s.addText("Renin-Angiotensin-Aldosterone System",{x:0.3,y:2.05,w:9.4,h:0.5,fontSize:16,color:AMBER,fontFace:FONT,align:"center",italic:true});
// 3 pill badges
[[1.0,"Direct Renin Inhibitor",BLUE],[3.8,"ACE Inhibitors (Pril)",TEAL],[6.6,"ARBs (Sartan)",RED]].forEach(([x,t,c])=>{
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y:2.85,w:2.6,h:0.48,fill:{color:c},line:{color:c},rectRadius:0.24});
s.addText(t,{x,y:2.85,w:2.6,h:0.48,fontSize:9.5,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
});
s.addText("Pharmacology – Antihypertensive Drugs",{x:0.3,y:4.85,w:9.4,h:0.3,fontSize:10,color:"8AAEC8",fontFace:FONT,align:"center"});
}
// ══════════════════════════════════════════════════
// SLIDE 2 – RAAS SYSTEM OVERVIEW
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,NAVY); hdr(s,"RAAS – How It Works");
botBar(s,NAVY); pageNum(s,"");
// Flow boxes
const flow = ["Angiotensinogen\n(Liver – inactive)","Angiotensin I\n(via Renin)","Angiotensin II\n(via ACE)","AT₁ Receptor\nActivation","↑ BP"];
const fcols = [LGREY, LTBLUE, LTBLUE, "FFE8CC", "FDECEA"];
const ftcols= [NAVY, NAVY, NAVY, AMBER, RED ];
flow.forEach((t,i)=>{
const x = 0.3 + i*1.85;
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y:0.72,w:1.65,h:0.75,fill:{color:fcols[i]},line:{color:MGREY,width:0.5},rectRadius:0.08});
s.addText(t,{x,y:0.72,w:1.65,h:0.75,fontSize:8,bold:true,color:ftcols[i],fontFace:FONT,align:"center",valign:"middle"});
if(i<4) s.addText("→",{x:x+1.65,y:0.88,w:0.2,h:0.4,fontSize:14,color:NAVY,fontFace:FONT,align:"center",valign:"middle"});
});
// Enzyme labels below arrows
[["Renin\n(JG cells)", 0.98],["ACE\n(Lung endothelium)", 2.83]].forEach(([t,x])=>{
s.addText(t,{x,y:1.52,w:1.2,h:0.4,fontSize:7.5,color:TEAL,fontFace:FONT,align:"center",italic:true});
});
// AT1 Receptor effects table
s.addText("AT₁ Receptor – Organ Effects",{x:0.3,y:2.05,w:9.4,h:0.3,fontSize:11,bold:true,color:NAVY,fontFace:FONT});
const rows=[
["Organ","Action on Stimulation"],
["Adrenal Glands","↑ Aldosterone → Na⁺ retention → ↑ BP; K⁺ loss in urine → Hypokalemia"],
["Arteries & Veins","Vasoconstriction → ↑ Diastolic BP"],
["Heart","Cardiac stimulation → ↑ CO → ↑ Systolic BP → Cardiac hypertrophy"],
];
const tbl = rows.map((r,i)=> r.map((cell,ci)=>({
text:cell,
options:{bold:i===0||ci===0,fontSize:i===0?8.5:8.5,fontFace:FONT,
color:i===0?WHITE:"333333",
fill:i===0?NAVY:(i%2===0?LGREY:WHITE),valign:"middle",align:"left"}
})));
s.addTable(tbl,{x:0.3,y:2.38,w:9.4,colW:[2.0,7.4],border:{color:MGREY,pt:0.5},rowH:0.42});
// Key note
card(s,0.3,3.72,9.4,0.55,"FFF3CD");
s.addText("💡 Renin released from JG cells of kidney in response to low BP / sympathetic activation of β₁ receptor | ACE located on endothelial cells of pulmonary vessels | Angiotensinogen produced by liver",
{x:0.4,y:3.76,w:9.2,h:0.48,fontSize:8,color:"7B5800",fontFace:FONT,valign:"middle"});
}
// ══════════════════════════════════════════════════
// SLIDE 3 – RAAS INHIBITORS: DRUG CLASSES
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,NAVY); hdr(s,"RAAS Inhibitors – Drug Classes");
botBar(s,NAVY); pageNum(s,"");
// 3 class cards
const classes=[
{title:"Direct Renin Inhibitor\n(-iren)",color:BLUE,drugs:["Aliskiren – Only approved","Remikiren – Under trial","Enalkiren – Under trial"],notes:["ROA: Oral","Use: 2nd line antihypertensive","MOA: Blocks Renin → prevents Angiotensin I formation"]},
{title:"ACE Inhibitors\n(-pril)",color:TEAL,drugs:["Captopril","Lisinopril","Enalapril","Ramipril, Benzapril, Quinapril","Moexipril, Perindopril, Fosinopril, Trandolalapril"],notes:["All are prodrugs (except Captopril, Lisinopril)","ROA: Oral (except Enalaprilat – IV)"]},
{title:"AT₁ Receptor Blockers\n(-sartan)",color:RED,drugs:["Losartan","Telmisartan","Candesartan","Valsartan, Irbesartan","Olmesartan, Eprosartan, Azilsartan"],notes:["Mnemonic: LOVE TIC","All oral; NOT given IV","Excreted in urine & bile\n(except Telmisartan – bile only)"]},
];
classes.forEach((c,i)=>{
const x = 0.22+i*3.25;
card(s,x,0.7,3.1,4.45,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x,y:0.7,w:3.1,h:0.45,fill:{color:c.color},line:{color:c.color}});
s.addText(c.title,{x,y:0.7,w:3.1,h:0.45,fontSize:9,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText("Drugs:",{x:x+0.1,y:1.2,w:2.9,h:0.22,fontSize:8.5,bold:true,color:c.color,fontFace:FONT});
const dArr=c.drugs.map((d,j)=>({text:d,options:{bullet:{code:"25CF",color:c.color},breakLine:j<c.drugs.length-1,fontSize:8,color:"222222",fontFace:FONT}}));
s.addText(dArr,{x:x+0.1,y:1.42,w:2.9,h:1.6,valign:"top"});
s.addShape(pres.shapes.RECTANGLE,{x:x+0.1,y:3.08,w:2.9,h:0.02,fill:{color:MGREY},line:{color:MGREY}});
s.addText("Key Points:",{x:x+0.1,y:3.14,w:2.9,h:0.22,fontSize:8.5,bold:true,color:c.color,fontFace:FONT});
const nArr=c.notes.map((n,j)=>({text:n,options:{bullet:{code:"2022",color:AMBER},breakLine:j<c.notes.length-1,fontSize:7.5,color:"444444",fontFace:FONT}}));
s.addText(nArr,{x:x+0.1,y:3.36,w:2.9,h:1.5,valign:"top"});
});
}
// ══════════════════════════════════════════════════
// SLIDE 4 – MOA: ANTIHYPERTENSIVE ACTION
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,NAVY); hdr(s,"MOA – Antihypertensive Action of RAAS Inhibitors");
botBar(s,NAVY); pageNum(s,"");
const items=[
{organ:"Aldosterone Secretion",color:BLUE,text:"↓ Aldosterone secretion from adrenal gland → Na⁺ loss in urine → Diuretic action\n↑ Blood K⁺ → Hyperkalemia (S/E) → Do NOT combine with K⁺-sparing diuretics\nK⁺-sparing diuretics (SEAT): Spironolactone, Eplerenone, Amiloride, Triamterene"},
{organ:"Blood Vessels",color:TEAL,text:"Vasodilation of arteries + veins → ↓ peripheral resistance → ↓ BP"},
{organ:"Heart",color:RED,text:"↓ Cardiac hypertrophy\nDrug of Choice in CHF: ACE Inhibitors"},
{organ:"Other Drugs\nInhibiting RAAS",color:AMBER,text:"Central sympatholytics (Clonidine, α-methyldopa) → ↓ sympathetic discharge → ↓ Renin secretion\nβ-blockers (lol) → Acts on JG cells of kidney → ↓ Renin release"},
{organ:"Drugs Causing\nHyperkalemia",color:"8E44AD",text:"ACE inhibitors/ARBs, Aspirin (NSAID), Beta blockers, Clonidine, Cyclosporine/Tacrolimus → ↓ renin release\nDiuretics → K⁺-sparing diuretics (SEAT)"},
];
items.forEach((it,i)=>{
const y = 0.72+i*0.88;
card(s,0.22,y,9.56,0.8,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y,w:2.0,h:0.8,fill:{color:it.color},line:{color:it.color}});
s.addText(it.organ,{x:0.22,y,w:2.0,h:0.8,fontSize:8.5,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText(it.text,{x:2.3,y:y+0.06,w:7.38,h:0.7,fontSize:8,color:"222222",fontFace:FONT,valign:"top"});
});
}
// ══════════════════════════════════════════════════
// SLIDE 5 – ACE INHIBITORS: PROPERTIES & ACTION
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,TEAL); hdr(s,"ACE Inhibitors – Properties & Action");
botBar(s,TEAL); pageNum(s,"");
// Left: ACE enzyme
card(s,0.22,0.72,4.6,2.4,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:0.72,w:4.6,h:0.38,fill:{color:TEAL},line:{color:TEAL}});
s.addText("Properties of ACE Enzyme",{x:0.22,y:0.72,w:4.6,h:0.38,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["Converts Angiotensin I → Angiotensin II (↑ BP)","Location: Endothelial cells of pulmonary vessels","Non-specific Carboxypeptidase","Also degrades Bradykinin"],0.32,1.14,4.4,1.9,TEAL,8.5);
// Right: Action
card(s,5.1,0.72,4.68,2.4,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:5.1,y:0.72,w:4.68,h:0.38,fill:{color:TEAL},line:{color:TEAL}});
s.addText("Action of ACE Inhibitors",{x:5.1,y:0.72,w:4.68,h:0.38,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["↓ Level of Angiotensin II → ↓ BP","↑ Level of Bradykinin (key for S/E)"],5.2,1.14,4.48,0.6,TEAL,8.5);
s.addText("Bradykinin Effects:",{x:5.2,y:1.78,w:4.48,h:0.25,fontSize:8.5,bold:true,color:TEAL,fontFace:FONT});
card(s,5.15,2.06,4.58,0.65,"E8F8F5");
s.addText("✅ Advantages: Vasodilation → ↓ BP; Improve insulin sensitivity → Favourable for DM",{x:5.25,y:2.1,w:4.38,h:0.58,fontSize:8,color:GREEN,fontFace:FONT,valign:"top"});
// Bradykinin disadvantages – DARU mnemonic
card(s,0.22,3.22,9.56,1.88,"FFF5F5");
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:3.22,w:9.56,h:0.35,fill:{color:RED},line:{color:RED}});
s.addText("❌ Disadvantages of ↑ Bradykinin – Mnemonic: DARU",{x:0.22,y:3.22,w:9.56,h:0.35,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
const daru=[
["D","Dry Cough (M/C)","Stop ACE inhibitor → Shift to Sartan/Aliskiren\nAspirin + Iron → Promotes degradation of bradykinin"],
["A","Angioedema","Swelling of face, lips & eyes\nT/t: Antihistamines + corticosteroids; Laryngeal spasm: S/C epinephrine"],
["R","Rhinitis","Nasal inflammation"],
["U","Urticaria","Skin allergic reaction"],
];
daru.forEach((d,i)=>{
const x = 0.3+i*2.38;
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y:3.62,w:0.35,h:0.35,fill:{color:RED},line:{color:RED},rectRadius:0.17});
s.addText(d[0],{x,y:3.62,w:0.35,h:0.35,fontSize:12,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText(d[1],{x:x+0.4,y:3.62,w:1.85,h:0.28,fontSize:8.5,bold:true,color:RED,fontFace:FONT});
s.addText(d[2],{x:x+0.4,y:3.9,w:1.85,h:0.55,fontSize:7.5,color:"555555",fontFace:FONT});
});
}
// ══════════════════════════════════════════════════
// SLIDE 6 – ACE INHIBITORS: INDIVIDUAL DRUGS
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,TEAL); hdr(s,"ACE Inhibitors – Individual Drug Properties");
botBar(s,TEAL); pageNum(s,"");
const drugs=[
{name:"Captopril",color:RED,pts:["NOT a prodrug (active form)","Shortest acting: <12 hrs – given BD","Sulfa-containing drug → allergic reactions","Bone marrow suppression (Leukopenia)","Taste disturbance, Food ↓ absorption"]},
{name:"Enalapril /\nEnalaprilat",color:BLUE,pts:["Enalapril = prodrug (oral)","Enalaprilat = IV form","Used in Hypertensive Emergency (IV)"]},
{name:"Lisinopril",color:TEAL,pts:["NOT a prodrug (active)","Orally given","Long-acting"]},
{name:"Fosinopril",color:GREEN,pts:["Safe in renal disease","Excreted in bile","Dual excretion: renal + biliary"]},
{name:"Perindopril /\nTrandolalapril",color:AMBER,pts:["Longest acting drugs","Most potent among ACEIs"]},
{name:"Ramipril /\nBenzapril",color:"8E44AD",pts:["Prodrugs","Commonly used in post-MI","Cardioprotective"]},
];
drugs.forEach((d,i)=>{
const x=0.22+(i%3)*3.25;
const y=0.72+Math.floor(i/3)*2.38;
card(s,x,y,3.1,2.22,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x,y,w:3.1,h:0.36,fill:{color:d.color},line:{color:d.color}});
s.addText(d.name,{x,y,w:3.1,h:0.36,fontSize:9,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
const arr=d.pts.map((p,j)=>({text:p,options:{bullet:{code:"25CF",color:d.color},breakLine:j<d.pts.length-1,fontSize:8,color:"222222",fontFace:FONT}}));
s.addText(arr,{x:x+0.1,y:y+0.4,w:2.9,h:1.78,valign:"top"});
});
// Note bar
card(s,0.22,5.15,9.56,0.3,"FFF3CD");
s.addText("📌 All ACE inhibitors are PRODRUGS (pril → prilat) via Hepatic esterase | EXCEPT Captopril & Lisinopril (not prodrugs)",
{x:0.32,y:5.17,w:9.36,h:0.28,fontSize:7.5,color:"7B5800",fontFace:FONT,valign:"middle"});
}
// ══════════════════════════════════════════════════
// SLIDE 7 – USES OF ACE INHIBITORS
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,TEAL); hdr(s,"ACE Inhibitors – Uses");
botBar(s,TEAL); pageNum(s,"");
// DOC boxes
const uses=[
{title:"Essential HTN\n(No comorbidity)",color:TEAL,note:"DOC"},
{title:"HTN + DM",color:BLUE,note:"Improves glycemic control / Anti-diabetic"},
{title:"HTN + Nephropathy (CKD)",color:GREEN,note:"Nephroprotective effect"},
{title:"HTN + Neuropathy / Stroke",color:AMBER,note:"Neuroprotective"},
{title:"HTN + Retinopathy",color:"8E44AD",note:"Retinoprotective"},
{title:"HTN + Scleroderma",color:"C0392B",note:"↓ Collagen deposition"},
{title:"CHF & Post-MI",color:NAVY,note:"Cardioprotective – DOC"},
];
uses.forEach((u,i)=>{
const x=0.22+(i%4)*2.42;
const y=0.72+Math.floor(i/4)*1.5;
card(s,x,y,2.28,1.3,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x,y,w:2.28,h:0.35,fill:{color:u.color},line:{color:u.color}});
s.addText(u.title,{x,y,w:2.28,h:0.35,fontSize:8,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x:x+0.6,y:y+0.42,w:1.1,h:0.24,fill:{color:u.color},line:{color:u.color},rectRadius:0.05});
s.addText("DOC",{x:x+0.6,y:y+0.42,w:1.1,h:0.24,fontSize:7.5,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText(u.note,{x:x+0.08,y:y+0.7,w:2.12,h:0.56,fontSize:7.5,color:"333333",fontFace:FONT,align:"center",valign:"top"});
});
// Nephroprotective detail
card(s,0.22,3.35,9.56,1.72,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:3.35,w:9.56,h:0.32,fill:{color:TEAL},line:{color:TEAL}});
s.addText("Nephroprotective Effects in Detail",{x:0.22,y:3.35,w:9.56,h:0.32,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["In CKD: Hyperfiltration → Albuminuria (hallmark marker)","ACE inhibitors dilate efferent arteriole → ↓ GFR → ↓ Hyperfiltration injury → ↓ Risk of albuminuria (Nephroprotective)","In Bilateral afferent renal artery stenosis: ACE inhibitors C/I – drastically ↓ GFR → ARF / Oliguria"],0.32,3.72,9.26,1.28,TEAL,8.5);
}
// ══════════════════════════════════════════════════
// SLIDE 8 – ACE INHIBITORS: C/I & INTERACTIONS
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,TEAL); hdr(s,"ACE Inhibitors – Contraindications & Drug Interactions");
botBar(s,TEAL); pageNum(s,"");
// C/I
card(s,0.22,0.72,9.56,2.0,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:0.72,w:9.56,h:0.35,fill:{color:RED},line:{color:RED}});
s.addText("Contraindications of ACE Inhibitors",{x:0.22,y:0.72,w:9.56,h:0.35,fontSize:11,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
const ci=[
"Bilateral afferent renal artery stenosis, Acute kidney disease",
"Hyperkalemia (Serum K⁺ > 5.5 mEq/L) → Cardiac arrest",
"Pregnancy (UPT): Category X – Renal agenesis (Maximum risk in 3rd trimester)",
"Aliskiren/Sartans/Pril – Absolute C/I (Teratogenic)",
];
const ciArr=ci.map((c,i)=>({text:c,options:{bullet:{code:"274C",color:RED},breakLine:i<ci.length-1,fontSize:9,color:"333333",fontFace:FONT}}));
s.addText(ciArr,{x:0.32,y:1.12,w:9.26,h:1.55,valign:"top"});
// Drug interactions
card(s,0.22,2.82,9.56,1.65,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:2.82,w:9.56,h:0.35,fill:{color:AMBER},line:{color:AMBER}});
s.addText("Drug Interactions",{x:0.22,y:2.82,w:9.56,h:0.35,fontSize:11,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["Hyperkalemia: Avoid with Potassium-sparing diuretics","NSAIDs + ACEI: ↑ Risk of Acute Renal Failure / Oliguria","Lithium toxicity ↑","SULFA drugs + Allopurinol → ↑ Risk of sulfa allergy"],0.32,3.22,9.26,1.2,AMBER,9);
// ACEI + Thiazide synergism
card(s,0.22,4.57,9.56,0.9,"E8F8F5");
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:4.57,w:2.2,h:0.9,fill:{color:TEAL},line:{color:TEAL}});
s.addText("ACEI +\nThiazide\nDiuretics",{x:0.22,y:4.57,w:2.2,h:0.9,fontSize:8.5,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText("Synergism: Thiazides → Hypokalemia + ACEI → Hyperkalemia (balance)\nThiazides → ↑ RAAS activity → Thiazides effect loss; ACEI → Inhibit RAAS → Regaining thiazide effect",
{x:2.5,y:4.62,w:7.18,h:0.8,fontSize:8,color:"222222",fontFace:FONT,valign:"top"});
}
// ══════════════════════════════════════════════════
// SLIDE 9 – ARBs (SARTANS)
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,RED); hdr(s,"AT₁ Receptor Blockers (ARBs / Sartans)");
botBar(s,RED); pageNum(s,"");
// AT receptor types
card(s,0.22,0.7,9.56,1.15,"FFF5F5");
s.addText("Properties of Angiotensin Receptors",{x:0.22,y:0.7,w:9.56,h:0.32,fontSize:10,bold:true,color:RED,fontFace:FONT,align:"center"});
const atypes=[["AT₁ (Predominant)","Gq type → ↑ BP",RED],["AT₂","Gi type → ↓ BP",TEAL],["AT₃, AT₄","Neurons (CNS) – Memory & Cognition",BLUE]];
atypes.forEach(([t,sub,c],i)=>{
const x=0.5+i*3.1;
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y:1.05,w:2.8,h:0.7,fill:{color:c},line:{color:c},rectRadius:0.08});
s.addText(t,{x,y:1.05,w:2.8,h:0.35,fontSize:9,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText(sub,{x,y:1.4,w:2.8,h:0.35,fontSize:8,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
});
// ARB class properties
card(s,0.22,1.95,4.6,1.7,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:1.95,w:4.6,h:0.32,fill:{color:RED},line:{color:RED}});
s.addText("Class Properties – Mnemonic: LOVE TIC",{x:0.22,y:1.95,w:4.6,h:0.32,fontSize:9,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["All given ORALLY – NOT given IV/injection","NOT used in hypertensive emergency","All excreted in urine & bile (except Telmisartan → bile only)","Competitive blockers of AT₁ receptor"],0.32,2.3,4.4,1.3,RED,8.5);
// Individual drug properties
card(s,5.0,1.95,4.78,3.6,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:5.0,y:1.95,w:4.78,h:0.32,fill:{color:RED},line:{color:RED}});
s.addText("Individual Drug Properties",{x:5.0,y:1.95,w:4.78,h:0.32,fontSize:9,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
const sartan=[
["Losartan","Lowest affinity for AT₁ → Least potent; Shortest acting"],
["Olmesartan","2nd most potent & 2nd longest acting"],
["Telmisartan","Safest in renal disease (excreted in bile only)"],
["Candesartan","Most potent & Longest acting; Highest affinity for AT₁"],
["Valsartan","Commonly used"],
["Irbesartan","Block SA/AV node → T/t: Arrhythmia, AF, flutter"],
["Azilsartan","Newest drug"],
];
sartan.forEach(([d,n],i)=>{
s.addText(d,{x:5.1,y:2.32+i*0.44,w:1.6,h:0.38,fontSize:8,bold:true,color:RED,fontFace:FONT,valign:"middle"});
s.addText(n, {x:6.75,y:2.32+i*0.44,w:2.9,h:0.38,fontSize:8,color:"333333",fontFace:FONT,valign:"middle"});
});
// ACEI vs ARB advantage
card(s,0.22,3.72,4.6,1.3,"EDF7ED");
s.addText("ARB Advantage over ACEI",{x:0.32,y:3.76,w:4.4,h:0.28,fontSize:9,bold:true,color:GREEN,fontFace:FONT});
bul(s,["Does NOT ↑ Bradykinin","No dry cough","No angioedema","Same BP-lowering efficacy"],0.32,4.06,4.38,0.9,GREEN,8.5);
}
// ══════════════════════════════════════════════════
// SLIDE 10 – SPECIAL PROPERTIES OF ARBs
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,RED); hdr(s,"ARBs – Special Properties & Side Effects");
botBar(s,RED); pageNum(s,"");
// 3 special ARBs
const specials=[
{drug:"Losartan",color:RED,pts:["↓ Uric acid (Uricosuric action) → Used in gout","↓ Platelet action: Block TXA₂","Protective against coronary & cerebral artery thrombosis"]},
{drug:"Irbesartan",color:BLUE,pts:["Blocks SA/AV node","T/t: Arrhythmia, atrial flutter & fibrillation"]},
{drug:"Telmisartan",color:TEAL,pts:["PPAR-γ agonist (like Pioglitazone)","Improves insulin sensitivity","Anti-diabetic effect"]},
];
specials.forEach((sp,i)=>{
card(s,0.22+i*3.25,0.72,3.1,2.2,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22+i*3.25,y:0.72,w:3.1,h:0.36,fill:{color:sp.color},line:{color:sp.color}});
s.addText("★ "+sp.drug,{x:0.22+i*3.25,y:0.72,w:3.1,h:0.36,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
const arr=sp.pts.map((p,j)=>({text:p,options:{bullet:{code:"2714",color:sp.color},breakLine:j<sp.pts.length-1,fontSize:8.5,color:"222222",fontFace:FONT}}));
s.addText(arr,{x:0.32+i*3.25,y:1.12,w:2.9,h:1.7,valign:"top"});
});
// S/E and C/I
card(s,0.22,3.05,4.65,2.1,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:0.22,y:3.05,w:4.65,h:0.35,fill:{color:AMBER},line:{color:AMBER}});
s.addText("Side Effects of ARBs",{x:0.22,y:3.05,w:4.65,h:0.35,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["Same as ACE inhibitors","EXCEPTION: Does NOT increase bradykinin levels → No dry cough / angioedema","Hyperkalemia (same as ACEI)"],0.32,3.44,4.45,1.65,AMBER,8.5);
card(s,5.1,3.05,4.68,2.1,LGREY);
s.addShape(pres.shapes.RECTANGLE,{x:5.1,y:3.05,w:4.68,h:0.35,fill:{color:RED},line:{color:RED}});
s.addText("Contraindications of ARBs",{x:5.1,y:3.05,w:4.68,h:0.35,fontSize:10,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
bul(s,["Same as ACE inhibitors","Pregnancy: Absolute C/I (Teratogenic)","Bilateral renal artery stenosis","Hyperkalemia"],5.2,3.44,4.48,1.65,RED,8.5);
// Sprue note
card(s,0.22,5.2,9.56,0.3,"FFF3CD");
s.addText("⚠ Sprue with Sartans: Diarrhea due to AT₂ receptor activation in GI tract → ↓ absorption | Highest Risk: Olmesartan > Other ARBs",
{x:0.32,y:5.22,w:9.36,h:0.28,fontSize:7.5,color:"7B5800",fontFace:FONT,valign:"middle"});
}
// ══════════════════════════════════════════════════
// SLIDE 11 – QUICK COMPARISON TABLE
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,WHITE);
topBar(s,NAVY); hdr(s,"RAAS Inhibitors – Quick Comparison");
botBar(s,NAVY); pageNum(s,"");
const rows=[
["Feature","Direct Renin Inhibitor","ACE Inhibitors","ARBs (Sartans)"],
["Drug example","Aliskiren","Lisinopril, Ramipril","Losartan, Candesartan"],
["MOA","Blocks Renin → ↓ Ang I","Blocks ACE → ↓ Ang II","Blocks AT₁ receptor"],
["Bradykinin","Not affected","↑ Bradykinin (S/E)","Not affected (advantage)"],
["Dry Cough","No","Yes (M/C S/E)","No"],
["Angioedema","No","Yes","No"],
["Use in Pregnancy","C/I (Category C)","C/I (Category X)","Absolute C/I (Teratogenic)"],
["Hyperkalemia","Yes","Yes","Yes"],
["Route","Oral only","Oral (IV: Enalaprilat)","Oral only"],
["1st line HTN","2nd line","Yes (with comorbidity)","Yes (ACEI intolerant)"],
];
const tbl=rows.map((r,i)=> r.map((cell,ci)=>({
text:cell,
options:{bold:i===0||ci===0,fontSize:i===0?8.5:8,fontFace:FONT,
color:i===0?WHITE:(ci===0?NAVY:(cell==="Yes"?GREEN:(cell==="No"?RED:cell.includes("C/I")||cell.includes("Absolute")?RED:"333333"))),
fill:i===0?NAVY:(ci===0?LTBLUE:(i%2===0?LGREY:WHITE)),valign:"middle",align:"left"}
})));
s.addTable(tbl,{x:0.22,y:0.72,w:9.56,colW:[2.1,2.4,2.62,2.44],border:{color:MGREY,pt:0.5},rowH:0.38});
}
// ══════════════════════════════════════════════════
// SLIDE 12 – THANK YOU
// ══════════════════════════════════════════════════
{
const s = pres.addSlide();
bg(s,DARK);
s.addShape(pres.shapes.RECTANGLE,{x:0,y:0,w:0.12,h:5.625,fill:{color:AMBER},line:{color:AMBER}});
s.addShape(pres.shapes.RECTANGLE,{x:0,y:4.75,w:10,h:0.875,fill:{color:NAVY},line:{color:NAVY}});
s.addText("Thank You",{x:0.3,y:0.8,w:9.4,h:1.3,fontSize:56,bold:true,color:WHITE,fontFace:FONT,align:"center",charSpacing:2});
s.addShape(pres.shapes.RECTANGLE,{x:3.0,y:2.18,w:4.0,h:0.06,fill:{color:AMBER},line:{color:AMBER}});
s.addText("RAAS Inhibitors – Pharmacology",{x:0.5,y:2.3,w:9.0,h:0.42,fontSize:13,italic:true,color:"AACCEE",fontFace:FONT,align:"center"});
[[1.0,"DRI","Aliskiren",BLUE],[3.7,"ACEI","-pril drugs",TEAL],[6.4,"ARBs","-sartan drugs",RED]].forEach(([x,t,sub,c])=>{
s.addShape(pres.shapes.ROUNDED_RECTANGLE,{x,y:2.98,w:2.6,h:0.7,fill:{color:c},line:{color:c},rectRadius:0.1});
s.addText(t, {x,y:2.98,w:2.6,h:0.38,fontSize:12,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
s.addText(sub,{x,y:3.36,w:2.6,h:0.32,fontSize:8.5,color:"DDEEFF",fontFace:FONT,align:"center",valign:"middle"});
});
s.addText("Questions & Discussion",{x:0.3,y:4.78,w:9.4,h:0.82,fontSize:16,bold:true,color:WHITE,fontFace:FONT,align:"center",valign:"middle"});
}
pres.writeFile({fileName:"/tmp/workspace/raas/RAAS_Inhibitors.pptx"})
.then(()=>console.log("DONE"))
.catch(e=>{console.error(e);process.exit(1);});
Try again
Create a PDF summary of RAAS inhibitors