I want ppt slides on treatment and complications of urticaria angioedema from Nelson paediatrics
mkdir -p /home/daytona/workspace/urticaria-ppt && ls /home/daytona/workspace/urt…
~/urticaria-ppt/build.js
const pptxgen = require("pptxgenjs");
const { execSync } = require("child_process");
// Download images
const imageUrls = [
"https://cdn.orris.care/cdss_images/9774039c72f2b5a5694712ef2f3dfe571b53e7c92828becc17eb076f2cf8f0ca.png", // urticaria rash
"https://cdn.orris.care/cdss_images/4861fa83b55f486bf560c18731b36c38cfa92cf578937fcaf43b7fc07f45395d.png", // angioedema lips
"https://cdn.orris.care/cdss_images/fc330d925681610b5896f625bcbb86173ae11462140f7b64cac30c68e6a9651f.png" // treatment algorithm
];
let images = [];
try {
const result = execSync(
`node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`,
{ timeout: 30000 }
).toString();
images = JSON.parse(result);
} catch(e) {
console.log("Image fetch failed:", e.message);
images = imageUrls.map(u => ({ url: u, base64: null, error: e.message }));
}
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "Medical Education";
pres.title = "Urticaria & Angioedema - Treatment & Complications";
// ─── COLOR PALETTE ───────────────────────────────────────────────────────────
const DARK_BG = "0B1D3A"; // deep navy
const MID_BG = "102952"; // medium navy
const ACCENT = "E8A020"; // amber/orange accent
const LIGHT_TXT = "F0F4FF"; // near-white
const PALE_BLUE = "C8D8F8"; // light blue for subtext
const BOX_BG = "163568"; // card background
const RED_ALERT = "D63B3B"; // danger/complication red
const GREEN_OK = "2A9D5C"; // safe/treatment green
// ─── HELPER FUNCTIONS ────────────────────────────────────────────────────────
function addBg(slide, color) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color } });
}
function accentBar(slide, label) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.55, fill: { color: ACCENT } });
slide.addText(label, { x: 0.15, y: 0.04, w: 9.7, h: 0.5, fontSize: 13, bold: true, color: DARK_BG, margin: 0 });
}
function sectionTitle(slide, title, sub) {
slide.addText(title, { x: 0.4, y: 0.7, w: 9.2, h: 0.75, fontSize: 28, bold: true, color: ACCENT, fontFace: "Calibri" });
if (sub) slide.addText(sub, { x: 0.4, y: 1.45, w: 9.2, h: 0.4, fontSize: 15, color: PALE_BLUE, italic: true });
}
function bullets(slide, items, x, y, w, h, opts = {}) {
const fontSize = opts.fontSize || 14;
const color = opts.color || LIGHT_TXT;
slide.addText(
items.map((it, i) => ({
text: it,
options: { bullet: { type: "bullet", indent: 14 }, breakLine: i < items.length - 1 }
})),
{ x, y, w, h, fontSize, color, fontFace: "Calibri", lineSpacingMultiple: 1.25 }
);
}
function card(slide, x, y, w, h, title, titleColor, items, fontSize) {
slide.addShape(pres.ShapeType.rect, { x, y, w, h, fill: { color: BOX_BG }, line: { color: ACCENT, width: 1.5 } });
slide.addText(title, { x: x + 0.1, y: y + 0.07, w: w - 0.2, h: 0.35, fontSize: 13, bold: true, color: titleColor || ACCENT, margin: 0 });
slide.addText(
items.map((it, i) => ({
text: it,
options: { bullet: { type: "bullet", indent: 12 }, breakLine: i < items.length - 1 }
})),
{ x: x + 0.1, y: y + 0.42, w: w - 0.2, h: h - 0.52, fontSize: fontSize || 12, color: LIGHT_TXT, fontFace: "Calibri", lineSpacingMultiple: 1.2 }
);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 — TITLE SLIDE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
// Decorative top strip
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.08, fill: { color: ACCENT } });
// Central amber rectangle
sl.addShape(pres.ShapeType.rect, { x: 0.5, y: 1.1, w: 9, h: 3.3, fill: { color: MID_BG }, line: { color: ACCENT, width: 2 } });
sl.addText("URTICARIA & ANGIOEDEMA", {
x: 0.7, y: 1.25, w: 8.6, h: 0.85,
fontSize: 36, bold: true, color: ACCENT, align: "center", fontFace: "Calibri"
});
sl.addText("Treatment & Complications", {
x: 0.7, y: 2.1, w: 8.6, h: 0.55,
fontSize: 22, color: LIGHT_TXT, align: "center", italic: true, fontFace: "Calibri"
});
sl.addShape(pres.ShapeType.rect, { x: 3.5, y: 2.72, w: 3, h: 0.04, fill: { color: ACCENT } });
sl.addText("Paediatrics | Allergy & Immunology", {
x: 0.7, y: 2.85, w: 8.6, h: 0.45,
fontSize: 14, color: PALE_BLUE, align: "center", fontFace: "Calibri"
});
sl.addText("Based on Nelson Textbook of Pediatrics & Standard Clinical References", {
x: 0.7, y: 3.3, w: 8.6, h: 0.35,
fontSize: 11, color: PALE_BLUE, align: "center", italic: true
});
// Bottom bar
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: 10, h: 0.375, fill: { color: ACCENT } });
sl.addText("Orris Medical Education | 2026", {
x: 0.2, y: 5.27, w: 9.6, h: 0.32, fontSize: 11, bold: true, color: DARK_BG, align: "center"
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 — OVERVIEW: DEFINITIONS & PATHOPHYSIOLOGY
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Overview");
sectionTitle(sl, "Definitions & Pathophysiology", "Understanding the underlying mechanisms");
card(sl, 0.2, 1.95, 4.6, 1.55, "URTICARIA (Hives)", ACCENT, [
"Pruritic, erythematous wheals of varying size",
"Acute: <6 weeks; Chronic: ≥6 weeks",
"15–20% of population affected lifetime",
"Common in children, especially with viral infections"
], 12);
card(sl, 5.2, 1.95, 4.6, 1.55, "ANGIOEDEMA", "#FF9E40", [
"Deeper involvement — dermis/subcutaneous tissue",
"Affects face, lips, tongue, larynx, extremities",
"May involve GI and respiratory tracts",
"Airway obstruction risk — potentially life-threatening"
], 12);
card(sl, 0.2, 3.6, 9.6, 1.8, "PATHOPHYSIOLOGY", GREEN_OK, [
"Mast cell degranulation → release of histamine, bradykinin, kallikrein, acetylcholine",
"Immunologic: IgE-mediated (penicillin, foods); Immune complex-mediated; Complement-kinin-dependent",
"Non-immunologic: Direct mast cell degranulation (ASA/NSAIDs, opiates, radiocontrast, foods like shellfish/strawberries)",
"Bradykinin-mediated (ACE inhibitor-induced, Hereditary Angioedema) — NOT histamine-mediated"
], 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 — CAUSES & TRIGGERS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Causes & Triggers");
sectionTitle(sl, "Common Causes & Triggers");
// 4 cards in 2x2 grid
card(sl, 0.2, 1.9, 4.6, 1.55, "DRUGS", ACCENT, [
"Penicillin / β-lactam antibiotics (IgE-mediated)",
"Aspirin & NSAIDs (non-immunologic — PG pathway)",
"ACE inhibitors (bradykinin-mediated angioedema)",
"Opiates, radiocontrast, tubocurarine"
], 12);
card(sl, 5.2, 1.9, 4.6, 1.55, "INFECTIONS", "#FF9E40", [
"Most common cause of acute urticaria in children",
"Viral: rhinovirus, rotavirus, coxsackievirus, hepatitis, EBV",
"Occult infections: Candida, dermatophytes, bacteria, parasites",
"Urticaria may persist/recur >24 hours with viral cause"
], 12);
card(sl, 0.2, 3.55, 4.6, 1.85, "FOODS & ALLERGENS", GREEN_OK, [
"Seafood, tree nuts, eggs, shellfish, peas",
"Strawberries, lobster → non-immunologic histamine release",
"Contact: animal dander/saliva, plants, cosmetics",
"Alpha-gal (red meat) allergy — tick-mediated, delayed 3–8h"
], 12);
card(sl, 5.2, 3.55, 4.6, 1.85, "PHYSICAL & OTHER", "#4EC9B0", [
"Cold, heat, pressure, sunlight, exercise",
"Minor trauma (triggers HAE attacks)",
"Emotional stress, sudden temperature changes",
"Underlying autoimmune disorders, atopic dermatitis"
], 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 — TREATMENT OVERVIEW: STEPWISE APPROACH
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Treatment");
sectionTitle(sl, "Stepwise Treatment Approach", "Identify & remove offending agent as the first priority");
// Step boxes
const steps = [
{ label: "STEP 1", title: "Remove Trigger", color: GREEN_OK, text: "Identify & eliminate offending agent (drug, food, infection)\nAvoid triggers (cold, exercise, ASA/NSAIDs if implicated)" },
{ label: "STEP 2", title: "H1 Antihistamines", color: "#3AADDE", text: "First-line for ALL urticaria\nNon-sedating (2nd gen): cetirizine, loratadine, fexofenadine\nSedating (1st gen): hydroxyzine, diphenhydramine\nDosing per age/weight per manufacturer guidance" },
{ label: "STEP 3", title: "Add-On Therapy", color: ACCENT, text: "H2 antihistamine (ranitidine) — severe/chronic/refractory\nCorticosteroids — short course 14–21 days with taper\nNote: Steroids not superior to antihistamines alone for relapse prevention" },
{ label: "STEP 4", title: "Refractory Urticaria", color: RED_ALERT, text: "Omalizumab (anti-IgE): 1st add-on after 2nd-gen antihistamine\nCiclosporin / immunosuppressants\nDapsone, tranexamic acid (angioedema), methotrexate, HCQ, IVIG\nReferral to allergy/immunology specialist" }
];
steps.forEach((s, i) => {
const x = 0.2 + (i * 2.42);
const y = 1.9;
sl.addShape(pres.ShapeType.rect, { x, y, w: 2.3, h: 3.45, fill: { color: BOX_BG }, line: { color: s.color, width: 2 } });
sl.addShape(pres.ShapeType.rect, { x, y, w: 2.3, h: 0.42, fill: { color: s.color } });
sl.addText(s.label, { x: x + 0.05, y: y + 0.04, w: 2.2, h: 0.35, fontSize: 11, bold: true, color: DARK_BG, align: "center", margin: 0 });
sl.addText(s.title, { x: x + 0.05, y: y + 0.5, w: 2.2, h: 0.4, fontSize: 12, bold: true, color: s.color, align: "center" });
sl.addText(s.text, { x: x + 0.1, y: y + 0.95, w: 2.1, h: 2.35, fontSize: 10.5, color: LIGHT_TXT, valign: "top", fontFace: "Calibri", lineSpacingMultiple: 1.3 });
});
// Bottom note
sl.addText("⚠ Chronic steroid use is NOT recommended. Principle applies equally to children (dose per weight).", {
x: 0.2, y: 5.38, w: 9.6, h: 0.2, fontSize: 10, color: ACCENT, italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 — TREATMENT ALGORITHM IMAGE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Treatment Algorithm");
sectionTitle(sl, "Chronic Urticaria — Treatment Algorithm", "EAACI/GA²LEN/EDF/WAO & AAAAI/ACAAI Guidelines");
const algoImg = images[2];
if (algoImg && algoImg.base64 && !algoImg.error) {
sl.addImage({ data: algoImg.base64, x: 0.5, y: 1.7, w: 9, h: 3.6 });
} else {
sl.addText("Treatment Algorithm:\n\nStep 1: 2nd-generation H1 antihistamine\nStep 2: Updose H1 antihistamine (up to 4×)\nStep 3: Add omalizumab OR ciclosporin\nStep 4: Specialist immunosuppression", {
x: 0.5, y: 1.7, w: 9, h: 3.5, fontSize: 16, color: LIGHT_TXT, fontFace: "Calibri", lineSpacingMultiple: 1.5
});
}
sl.addText("Source: Fitzpatrick's Dermatology / EAACI Guidelines 2017", {
x: 0.2, y: 5.35, w: 9.6, h: 0.22, fontSize: 10, color: PALE_BLUE, italic: true
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 — TREATMENT OF ANGIOEDEMA (Allergic)
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Treatment");
sectionTitle(sl, "Acute Angioedema Management", "Airway is the priority — assess immediately");
sl.addShape(pres.ShapeType.rect, { x: 0.2, y: 2.0, w: 9.6, h: 0.55, fill: { color: RED_ALERT }, line: { color: "#FF6B6B", width: 1 } });
sl.addText("🚨 AIRWAY FIRST — Angioedema of tongue, lips, larynx → risk of rapid, unpredictable airway occlusion. Intubate early if needed.", {
x: 0.35, y: 2.05, w: 9.3, h: 0.42, fontSize: 12, bold: true, color: LIGHT_TXT
});
card(sl, 0.2, 2.7, 3.0, 2.7, "FIRST LINE", GREEN_OK, [
"Epinephrine 0.01 mg/kg IM (max 0.5 mg) — severe cases",
"H1 antihistamine IV/IM",
"Systemic corticosteroids IV",
"Supplemental O₂; IV access; monitor vitals",
"Remove/stop causative agent (e.g. ACE inhibitor)"
], 11.5);
card(sl, 3.4, 2.7, 3.1, 2.7, "ACE-I INDUCED", ACCENT, [
"Mainly bradykinin-mediated → antihistamines & steroids often ineffective",
"C1-esterase inhibitor (Berinert®): 1000 U IV",
"Icatibant (Firazyr®): 30 mg SC — bradykinin-2 receptor antagonist",
"Stop ACE inhibitor immediately",
"Blacks have ~5× higher risk"
], 11.5);
card(sl, 6.7, 2.7, 3.1, 2.7, "MONITORING", "#4EC9B0", [
"Observe for 4–6 h after treatment",
"Symptoms may recur after epinephrine wears off",
"Prescribe epinephrine auto-injector at discharge",
"Allergy specialist referral for recurrent/severe cases",
"Consider C4 level if HAE suspected"
], 11.5);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 — HEREDITARY ANGIOEDEMA (HAE)
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Hereditary Angioedema");
sectionTitle(sl, "Hereditary Angioedema (HAE)", "Autosomal dominant | C1 esterase inhibitor deficiency");
card(sl, 0.2, 1.92, 4.7, 1.65, "TYPES", ACCENT, [
"Type I: Low antigenic & functional C1-EI levels (~85%)",
"Type II: Normal/↑ antigen, dysfunctional protein",
"Type III: Normal C1-EI function (mostly women, estrogen-linked)",
"~25% due to new mutations (no family history)"
], 12);
card(sl, 5.1, 1.92, 4.7, 1.65, "CLINICAL FEATURES", RED_ALERT, [
"Attacks before age 20; recur throughout life every ~2 weeks",
"Asymmetric swelling — NO urticaria, NO pruritus",
"GI: nausea, vomiting, severe colic — mimics appendicitis",
"Laryngeal edema → HIGH mortality risk",
"Triggers: minor trauma, surgery, stress, temperature change"
], 12);
card(sl, 0.2, 3.68, 4.7, 1.75, "ACUTE TREATMENT", GREEN_OK, [
"C1-EI concentrate (Berinert®): 20 U/kg IV",
"C1-EI recombinant (Ruconest®): 50 U/kg IV (max 4200 U)",
"Icatibant: 30 mg SC — bradykinin-2 antagonist",
"Ecallantide: kallikrein inhibitor",
"Fresh frozen plasma if C1-EI unavailable (2–3 units)"
], 12);
card(sl, 5.1, 3.68, 4.7, 1.75, "PROPHYLAXIS & SCREENING", "#4EC9B0", [
"Prophylaxis: Danazol 200 mg TID or Stanozolol 2 mg TID (attenuated androgens)",
"Lanadelumab (plasma kallikrein inhibitor) — newer prophylaxis",
"⚠ Antihistamines, epinephrine, steroids: INEFFECTIVE in HAE",
"Best screening test: C4 level (<30% of normal suggests HAE)"
], 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 — COMPLICATIONS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Complications");
sectionTitle(sl, "Complications", "Potentially life-threatening — recognize early");
// Large central warning
sl.addShape(pres.ShapeType.rect, { x: 0.2, y: 1.92, w: 9.6, h: 0.5, fill: { color: RED_ALERT } });
sl.addText("ANAPHYLAXIS — Most severe complication: bronchospasm, laryngospasm, hypotension, cardiovascular collapse", {
x: 0.3, y: 1.97, w: 9.4, h: 0.4, fontSize: 13, bold: true, color: LIGHT_TXT
});
card(sl, 0.2, 2.55, 3.0, 2.85, "AIRWAY", RED_ALERT, [
"Laryngeal / subglottic edema",
"Airway obstruction — rapid & unpredictable",
"HAE: 30–40% mortality from laryngeal edema (untreated)",
"Bronchospasm / laryngospasm",
"Requires immediate intubation or cricothyrotomy"
], 12);
card(sl, 3.4, 2.55, 3.1, 2.85, "CARDIOVASCULAR", "#FF9E40", [
"Hypotension / hemodynamic instability",
"Cardiovascular collapse in anaphylaxis",
"Epinephrine is mandatory",
"Hospitalization in up to 45% of severe ACE-I angioedema",
"ICU in up to 27%; intubation in up to 18%"
], 12);
card(sl, 6.7, 2.55, 3.1, 2.85, "GASTROINTESTINAL & OTHER", "#4EC9B0", [
"Abdominal colic — GI tract angioedema",
"Mimics surgical emergency (appendicitis)",
"Bowel edema → nausea, vomiting",
"Chronic urticaria: psychological impact, impaired QoL",
"Disease persists >5 years in 50% of chronic cases"
], 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 — CLINICAL IMAGES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Clinical Appearance");
sectionTitle(sl, "Clinical Presentation — Images");
const urticariaImg = images[0];
const angioImg = images[1];
if (urticariaImg && urticariaImg.base64 && !urticariaImg.error) {
sl.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.8, w: 4.2, h: 3.2, fill: { color: BOX_BG }, line: { color: ACCENT, width: 1.5 } });
sl.addImage({ data: urticariaImg.base64, x: 0.4, y: 1.85, w: 4.0, h: 2.75 });
sl.addText("Urticaria — raised, erythematous wheals\n(Courtesy: Rosen's Emergency Medicine)", {
x: 0.3, y: 4.6, w: 4.2, h: 0.4, fontSize: 10, color: PALE_BLUE, align: "center", italic: true
});
} else {
sl.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.8, w: 4.2, h: 3.2, fill: { color: BOX_BG }, line: { color: ACCENT, width: 1.5 } });
sl.addText("Urticaria\n(Image unavailable)", { x: 0.5, y: 2.8, w: 3.8, h: 1.2, fontSize: 14, color: PALE_BLUE, align: "center" });
}
if (angioImg && angioImg.base64 && !angioImg.error) {
sl.addShape(pres.ShapeType.rect, { x: 5.5, y: 1.8, w: 4.2, h: 3.2, fill: { color: BOX_BG }, line: { color: "#FF9E40", width: 1.5 } });
sl.addImage({ data: angioImg.base64, x: 5.6, y: 1.85, w: 4.0, h: 2.75 });
sl.addText("Angioedema of the lips\n(Courtesy: Andrews' Diseases of the Skin)", {
x: 5.5, y: 4.6, w: 4.2, h: 0.4, fontSize: 10, color: PALE_BLUE, align: "center", italic: true
});
} else {
sl.addShape(pres.ShapeType.rect, { x: 5.5, y: 1.8, w: 4.2, h: 3.2, fill: { color: BOX_BG }, line: { color: "#FF9E40", width: 1.5 } });
sl.addText("Angioedema\n(Image unavailable)", { x: 5.7, y: 2.8, w: 3.8, h: 1.2, fontSize: 14, color: PALE_BLUE, align: "center" });
}
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 — SPECIAL POPULATIONS: PAEDIATRICS
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Paediatric Considerations");
sectionTitle(sl, "Paediatric Considerations", "Treatment principles are the same as adults — dose per weight");
card(sl, 0.2, 1.92, 4.7, 3.5, "ACUTE URTICARIA IN CHILDREN", ACCENT, [
"Most common cause: viral infections (rhinovirus, coxsackievirus, rotavirus)",
"Often self-limiting; identify & treat underlying infection",
"H1 antihistamine first-line — cetirizine, loratadine (weight-based dosing)",
"Corticosteroids: short course only if severe; avoid chronic use",
"Epinephrine for anaphylaxis: 0.01 mg/kg IM",
"Food allergy: consider egg, nuts, dairy, shellfish",
"Prescribe epinephrine auto-injector for at-risk children"
], 12);
card(sl, 5.1, 1.92, 4.7, 3.5, "KEY POINTS FOR CHILDREN", "#4EC9B0", [
"HAE: characteristically appears before age 20",
"Atopic children: chronic urticaria more prevalent",
"Always weight-based dosing per manufacturer guidelines",
"Antihistamines cross placenta (note in breastfeeding mothers)",
"Alpha-gal (tick-mediated meat allergy): increasingly recognized",
"Cold urticaria: avoid cold exposure; carry antihistamine",
"Refer to paediatric allergist for chronic/refractory cases"
], 12);
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 11 — SUMMARY TABLE
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
accentBar(sl, "URTICARIA & ANGIOEDEMA | Summary");
sectionTitle(sl, "Summary: Treatment at a Glance");
const tableData = [
[
{ text: "Condition", options: { bold: true, color: DARK_BG, fill: ACCENT } },
{ text: "First-line Treatment", options: { bold: true, color: DARK_BG, fill: ACCENT } },
{ text: "Second-line / Add-on", options: { bold: true, color: DARK_BG, fill: ACCENT } },
{ text: "Key Complication", options: { bold: true, color: DARK_BG, fill: ACCENT } }
],
[
{ text: "Acute Urticaria", options: { color: LIGHT_TXT } },
{ text: "H1 antihistamine (2nd gen)", options: { color: LIGHT_TXT } },
{ text: "Short steroid course (14–21 d)", options: { color: LIGHT_TXT } },
{ text: "Anaphylaxis", options: { color: RED_ALERT, bold: true } }
],
[
{ text: "Chronic Urticaria", options: { color: LIGHT_TXT } },
{ text: "2nd-gen H1 antihistamine ± H2", options: { color: LIGHT_TXT } },
{ text: "Omalizumab → Ciclosporin", options: { color: LIGHT_TXT } },
{ text: "Impaired QoL, persists >5 yr", options: { color: "#FF9E40" } }
],
[
{ text: "Allergic Angioedema", options: { color: LIGHT_TXT } },
{ text: "Epi + antihistamine + steroid", options: { color: LIGHT_TXT } },
{ text: "C1-EI / Icatibant (if ACE-I)", options: { color: LIGHT_TXT } },
{ text: "Airway obstruction", options: { color: RED_ALERT, bold: true } }
],
[
{ text: "ACE-I Angioedema", options: { color: LIGHT_TXT } },
{ text: "Stop ACE-I + C1-EI or Icatibant", options: { color: LIGHT_TXT } },
{ text: "Supportive; airway vigilance", options: { color: LIGHT_TXT } },
{ text: "Rapid airway occlusion (45% hosp.)", options: { color: RED_ALERT, bold: true } }
],
[
{ text: "Hereditary Angioedema", options: { color: LIGHT_TXT } },
{ text: "C1-EI / Icatibant / Ecallantide", options: { color: LIGHT_TXT } },
{ text: "Danazol / Lanadelumab prophylaxis", options: { color: LIGHT_TXT } },
{ text: "Laryngeal edema — HIGH mortality", options: { color: RED_ALERT, bold: true } }
]
];
sl.addTable(tableData, {
x: 0.2, y: 1.88, w: 9.6, h: 3.5,
fontSize: 11.5, fontFace: "Calibri",
border: { type: "solid", pt: 0.5, color: BOX_BG },
fill: { color: MID_BG },
align: "left", valign: "middle",
rowH: 0.58,
colW: [1.9, 2.5, 2.5, 2.7]
});
}
// ═══════════════════════════════════════════════════════════════════════════════
// SLIDE 12 — THANK YOU / REFERENCES
// ═══════════════════════════════════════════════════════════════════════════════
{
const sl = pres.addSlide();
addBg(sl, DARK_BG);
sl.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.08, fill: { color: ACCENT } });
sl.addShape(pres.ShapeType.rect, { x: 1.5, y: 0.7, w: 7, h: 2.4, fill: { color: MID_BG }, line: { color: ACCENT, width: 2 } });
sl.addText("Key Takeaways", { x: 1.7, y: 0.85, w: 6.6, h: 0.5, fontSize: 22, bold: true, color: ACCENT, align: "center" });
sl.addText([
{ text: "H1 antihistamines are the cornerstone of urticaria management\n", options: { breakLine: false } },
{ text: "Airway assessment is mandatory in angioedema\n", options: { breakLine: false } },
{ text: "HAE: antihistamines/steroids/epinephrine are INEFFECTIVE — use C1-EI or Icatibant\n", options: { breakLine: false } },
{ text: "Anaphylaxis = life-threatening complication — epinephrine IM immediately", options: {} }
], { x: 1.7, y: 1.38, w: 6.6, h: 1.6, fontSize: 13, color: LIGHT_TXT, lineSpacingMultiple: 1.4 });
sl.addText("References", { x: 0.3, y: 3.22, w: 9.4, h: 0.38, fontSize: 14, bold: true, color: ACCENT });
const refs = [
"Nelson Textbook of Pediatrics (Kliegman et al.) — Urticaria & Angioedema",
"Rosen's Emergency Medicine — Concepts and Clinical Practice (9e), Chapter 107",
"Tintinalli's Emergency Medicine — A Comprehensive Study Guide, Chapter 14",
"Andrews' Diseases of the Skin — Clinical Dermatology (13e)",
"Fitzpatrick's Dermatology (9e) — Urticaria & Treatment Algorithms",
"Goldman-Cecil Medicine (26e) — Chapter 407"
];
sl.addText(
refs.map((r, i) => ({ text: r, options: { bullet: { type: "bullet", indent: 12 }, breakLine: i < refs.length - 1 } })),
{ x: 0.3, y: 3.62, w: 9.4, h: 1.75, fontSize: 10.5, color: PALE_BLUE, lineSpacingMultiple: 1.25 }
);
sl.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: 10, h: 0.375, fill: { color: ACCENT } });
sl.addText("Orris Medical Education | 2026", {
x: 0.2, y: 5.27, w: 9.6, h: 0.32, fontSize: 11, bold: true, color: DARK_BG, align: "center"
});
}
// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/urticaria-ppt/Urticaria_Angioedema_Treatment_Complications.pptx" })
.then(() => console.log("✅ PPTX created successfully!"))
.catch(err => console.error("❌ Error:", err));
cd /home/daytona/workspace/urticaria-ppt && node build.js 2>&1
cd /home/daytona/workspace/urticaria-ppt && node -e " const { execSync } = requi…
cd /home/daytona/workspace/urticaria-ppt && node -e " const { execSync } = requi…
~/urticaria-ppt/build.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/urticaria-ppt/build.js'
cd /home/daytona/workspace/urticaria-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/urticaria-ppt/Urticaria_Angioedema_Treatment_Comp…
Urticaria Angioedema Treatment Complications
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | Definitions & Pathophysiology (urticaria vs angioedema, IgE vs bradykinin mechanisms) |
| 3 | Causes & Triggers (drugs, infections, foods, physical) |
| 4 | Stepwise Treatment (4-step: remove trigger → H1 antihistamine → add-on → refractory) |
| 5 | Treatment Algorithm image (EAACI/AAAAI guidelines flowchart) |
| 6 | Acute Angioedema Management (airway alert, epinephrine, ACE-I specific agents) |
| 7 | Hereditary Angioedema - Types, Acute Rx (C1-EI, icatibant, ecallantide), Prophylaxis (danazol) |
| 8 | Complications (anaphylaxis, airway obstruction, cardiovascular, GI/GU) |
| 9 | Clinical images (urticaria rash + angioedema of lips) |
| 10 | Paediatric Considerations (viral triggers, weight-based dosing, HAE in children) |
| 11 | Summary table (all conditions, first-line, second-line, key complication) |
| 12 | Key takeaways + References |