Urticaria
urticaria management guidelines
| Category | Examples |
|---|---|
| Drugs | Penicillin (most common), aspirin/NSAIDs, narcotics, ACE inhibitors |
| Foods | Seafood, tree nuts, eggs, lobster, strawberries (nonimmunologic histamine release) |
| Infections | Rhinovirus, rotavirus, hepatitis, mononucleosis, coxsackievirus, Candida, parasites |
| Insect stings/bites | Hymenoptera, arthropods |
| Contact | Foods, textiles, animal dander/saliva, topical medications, cosmetics |
| Systemic disease | SLE, lymphoma, carcinoma, hyperthyroidism, rheumatoid arthritis |


| Step | Therapy |
|---|---|
| Step 1 | Second-generation H1 antihistamine once daily; advance dose up to 4x daily over 2-4 week intervals if needed |
| Step 2 | Add H2 antagonist (ranitidine/famotidine) + leukotriene receptor antagonist (montelukast 10 mg daily) |
| Step 3 | Omalizumab 300 mg SC every 4 weeks (monoclonal anti-IgE antibody) - initiated when high-dose antihistamines fail (~50% of patients) |
| Step 4 (refractory) | Cyclosporine, hydroxychloroquine, sulfasalazine, dapsone, tacrolimus, mycophenolate; oral corticosteroids only under expert oversight |
From the above image make a slide wise for presentation of urticaria Contents are Introduction Definition Causes Types and classification Pathophysiology Symptoms, Clinical feature Diagnosis Differential diagnosis give any 4 make a table in realtion with urticaria Complications 
mkdir -p /home/daytona/workspace/urticaria-ppt
~/urticaria-ppt/urticaria.js
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Urticaria";
pres.author = "Medical Presentation";
// ─── COLOR PALETTE ───────────────────────────────────────────────
const DARK_TEAL = "0D5E6A"; // dominant dark bg
const MED_TEAL = "1A8A8A"; // accent bars / highlights
const LIGHT_TEAL = "E8F6F5"; // soft content bg
const ACCENT = "F5A623"; // warm gold accent
const WHITE = "FFFFFF";
const DARK_TEXT = "1C2B2B";
const LIGHT_GREY = "D8ECEB";
// ─── HELPER: SLIDE HEADER BAR ────────────────────────────────────
function addHeader(slide, title) {
// Dark teal top bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.75,
fill: { color: DARK_TEAL }
});
// Gold left accent stripe
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 0.08, h: 5.625,
fill: { color: ACCENT }
});
slide.addText(title, {
x: 0.2, y: 0, w: 9.6, h: 0.75,
fontSize: 22, bold: true, color: WHITE,
valign: "middle", margin: 8
});
}
// ─── HELPER: CONTENT BACKGROUND ──────────────────────────────────
function addContentBg(slide) {
slide.addShape(pres.ShapeType.rect, {
x: 0.08, y: 0.75, w: 9.92, h: 4.875,
fill: { color: LIGHT_TEAL }
});
}
// ─── SLIDE 1: TITLE SLIDE ────────────────────────────────────────
{
let slide = pres.addSlide();
// Full dark background
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 5.625,
fill: { color: DARK_TEAL }
});
// Bottom decorative band
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 4.8, w: 10, h: 0.825,
fill: { color: MED_TEAL }
});
// Gold top accent bar
slide.addShape(pres.ShapeType.rect, {
x: 0, y: 0, w: 10, h: 0.12,
fill: { color: ACCENT }
});
// Gold left vertical accent
slide.addShape(pres.ShapeType.rect, {
x: 0.5, y: 1.1, w: 0.07, h: 2.8,
fill: { color: ACCENT }
});
// Main title
slide.addText("URTICARIA", {
x: 0.8, y: 1.0, w: 8.5, h: 1.4,
fontSize: 54, bold: true, color: WHITE,
charSpacing: 8, valign: "middle"
});
// Subtitle line
slide.addText("Hives | Wheals | Skin Hypersensitivity", {
x: 0.8, y: 2.4, w: 8.5, h: 0.55,
fontSize: 18, color: ACCENT, italic: true
});
// Description
slide.addText("A comprehensive clinical review", {
x: 0.8, y: 3.0, w: 8.5, h: 0.45,
fontSize: 14, color: LIGHT_GREY
});
// Source tag at bottom
slide.addText("Source: The Anthology of Roga Nidāna and Vikṛti Vijñāna, Vol. 2", {
x: 0.5, y: 4.85, w: 9, h: 0.45,
fontSize: 10, color: WHITE, italic: true
});
}
// ─── SLIDE 2: INTRODUCTION ───────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Introduction");
// Left column - definition box
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0.9, w: 4.6, h: 1.9,
fill: { color: DARK_TEAL }, line: { color: DARK_TEAL }
});
slide.addText([
{ text: "What is Urticaria?", options: { bold: true, breakLine: true, fontSize: 13, color: ACCENT } },
{ text: "Also known as ", options: { fontSize: 11, color: WHITE } },
{ text: "hives or wheals", options: { fontSize: 11, color: ACCENT, bold: true } },
{ text: ", a skin condition characterised by the sudden onset of itchy, raised, and oedematous plaques or welts.", options: { fontSize: 11, color: WHITE } },
], { x: 0.25, y: 0.92, w: 4.45, h: 1.84, valign: "top", margin: 8 });
// Epidemiology box
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 2.88, w: 4.6, h: 1.55,
fill: { color: MED_TEAL }, line: { color: MED_TEAL }
});
slide.addText([
{ text: "Epidemiology", options: { bold: true, breakLine: true, fontSize: 13, color: ACCENT } },
{ text: "• Global prevalence (2017): ~86 million individuals (~1.1% worldwide)\n• India prevalence: ~0.1% population, incidence ~15%\n• Most prevalent: 20–40 years age group\n• Incidence higher in older age groups", options: { fontSize: 10.5, color: WHITE } }
], { x: 0.25, y: 2.9, w: 4.45, h: 1.5, valign: "top", margin: 8 });
// Right column - key facts
slide.addShape(pres.ShapeType.rect, {
x: 4.95, y: 0.9, w: 4.8, h: 3.53,
fill: { color: WHITE }, line: { color: LIGHT_GREY, pt: 1 }
});
slide.addText("Key Features", {
x: 5.05, y: 0.95, w: 4.6, h: 0.35,
fontSize: 13, bold: true, color: DARK_TEAL
});
slide.addText([
{ text: "Lesions", options: { bold: true, color: DARK_TEAL } },
{ text: ": Variable in size, shape & colour; typically resolve within 24 hours\n\n", options: { color: DARK_TEXT } },
{ text: "Triggers", options: { bold: true, color: DARK_TEAL } },
{ text: ": Allergic reactions, food, insect stings, medications, latex\n\n", options: { color: DARK_TEXT } },
{ text: "Hypersensitivity", options: { bold: true, color: DARK_TEAL } },
{ text: ": Type I (immediate) & Type IV (delayed)\n\n", options: { color: DARK_TEXT } },
{ text: "Other triggers", options: { bold: true, color: DARK_TEAL } },
{ text: ": Infections, autoimmune disorders (lupus, RA, thyroid disease), physical stimuli, stress, hormonal changes, medications", options: { color: DARK_TEXT } },
], { x: 5.05, y: 1.32, w: 4.6, h: 3.0, fontSize: 11, valign: "top", margin: 4 });
}
// ─── SLIDE 3: DEFINITION ─────────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Definition");
// Large definition text
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0.87, w: 9.6, h: 1.35,
fill: { color: DARK_TEAL }
});
slide.addText([
{ text: "Urticaria", options: { bold: true, color: ACCENT, fontSize: 16 } },
{ text: " is a cutaneous reaction pattern characterised by transient, pruritic, blanching wheals (raised plaques) arising from localised dermal oedema due to mast cell degranulation and vasoactive mediator release.", options: { color: WHITE, fontSize: 13 } }
], { x: 0.25, y: 0.89, w: 9.45, h: 1.28, valign: "middle", margin: 10 });
// Two sub-boxes
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 2.3, w: 4.6, h: 1.95,
fill: { color: WHITE }, line: { color: MED_TEAL, pt: 2 }
});
slide.addText([
{ text: "Urticaria", options: { bold: true, fontSize: 13, color: MED_TEAL, breakLine: true } },
{ text: "Affects the superficial dermis. Presents as wheals with pale centres and red borders. Individual lesions last ", options: { fontSize: 11, color: DARK_TEXT } },
{ text: "<24 hours.", options: { fontSize: 11, bold: true, color: DARK_TEAL } }
], { x: 0.28, y: 2.33, w: 4.4, h: 1.85, valign: "top", margin: 8 });
slide.addShape(pres.ShapeType.rect, {
x: 5.0, y: 2.3, w: 4.75, h: 1.95,
fill: { color: WHITE }, line: { color: ACCENT, pt: 2 }
});
slide.addText([
{ text: "Angioedema", options: { bold: true, fontSize: 13, color: ACCENT, breakLine: true } },
{ text: "Affects the deeper dermis and subcutaneous tissues. Often accompanies urticaria (~40% of patients). Can affect face, lips, tongue, or throat.\nDuration: >24 hours.", options: { fontSize: 11, color: DARK_TEXT } }
], { x: 5.1, y: 2.33, w: 4.55, h: 1.85, valign: "top", margin: 8 });
// Duration note
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 4.32, w: 9.6, h: 0.9,
fill: { color: LIGHT_GREY }
});
slide.addText([
{ text: "Acute Urticaria: ", options: { bold: true, color: DARK_TEAL } },
{ text: "Episodes < 6 weeks ", options: { color: DARK_TEXT } },
{ text: " | ", options: { color: MED_TEAL } },
{ text: " Chronic Urticaria: ", options: { bold: true, color: MED_TEAL } },
{ text: "Recurrence ≥ 6 weeks — often idiopathic ", options: { color: DARK_TEXT } },
{ text: " | ", options: { color: ACCENT } },
{ text: " Affects >20% of the population at some point in life", options: { color: DARK_TEXT, italic: true } },
], { x: 0.28, y: 4.34, w: 9.4, h: 0.85, fontSize: 12, valign: "middle", margin: 6 });
}
// ─── SLIDE 4: CAUSES ─────────────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Causes");
const cols = [
{
label: "Immunological", color: DARK_TEAL,
items: ["Food allergens (seafood, nuts, eggs)", "Drugs: Penicillin, aspirin, NSAIDs, anesthetics, antibiotics", "Insect stings & bites", "Latex contact", "Type I (IgE-mediated) & Type IV hypersensitivity"]
},
{
label: "Infections", color: MED_TEAL,
items: ["Bacterial (H. pylori, streptococcal)", "Viral (hepatitis, mononucleosis, rhinovirus, rotavirus)", "Parasitic (intestinal worms)", "Fungal (Candida, dermatophytes)"]
},
{
label: "Physical / Inducible", color: ACCENT,
items: ["Cold, heat, pressure, vibration", "Dermatographism (skin friction)", "Solar (sunlight) urticaria", "Cholinergic (exercise, stress, sweating)"]
},
{
label: "Systemic / Other", color: "5A7D6E",
items: ["Autoimmune: SLE, RA, thyroid disease, Sjogren syndrome", "Hormonal: Thyroid dysfunction, pregnancy, menstruation", "Stress & genetic predisposition", "Idiopathic (~50% of chronic cases)"]
}
];
cols.forEach((col, i) => {
const x = 0.18 + i * 2.43;
slide.addShape(pres.ShapeType.rect, {
x, y: 0.87, w: 2.35, h: 0.45,
fill: { color: col.color }
});
slide.addText(col.label, {
x: x + 0.04, y: 0.87, w: 2.27, h: 0.45,
fontSize: 11, bold: true, color: WHITE, valign: "middle", align: "center"
});
slide.addShape(pres.ShapeType.rect, {
x, y: 1.32, w: 2.35, h: 3.9,
fill: { color: WHITE }, line: { color: col.color, pt: 1.5 }
});
slide.addText(col.items.map((item, j) => ({
text: "• " + item + (j < col.items.length - 1 ? "\n" : ""),
options: { fontSize: 10.5, color: DARK_TEXT }
})), { x: x + 0.06, y: 1.38, w: 2.23, h: 3.75, valign: "top", margin: 6 });
});
}
// ─── SLIDE 5: TYPES & CLASSIFICATION ─────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Types & Classification");
// Row 1: Acute vs Chronic
const typeBoxes = [
{
title: "Acute Urticaria", color: DARK_TEAL, x: 0.18, y: 0.87, w: 4.72, h: 2.2,
body: "Duration: < 6 weeks\n\nOften due to allergic responses (food, insect stings, medications), infections (bacterial, viral, parasitic), stress, or environmental stimuli (cold, heat, sunlight).\n\nCharacterised by variable-sized wheals with a red flare, often with angioedema."
},
{
title: "Chronic Urticaria", color: MED_TEAL, x: 5.06, y: 0.87, w: 4.72, h: 2.2,
body: "Duration: > 6 weeks\n\nAssociated with autoimmune disorders (lupus, RA, SLE, Sjogren syndrome), thyroid dysfunction, elevated progesterone levels, genetic predisposition.\n\nManifests with recurring wheals, persistent itching, and discomfort."
}
];
typeBoxes.forEach(b => {
slide.addShape(pres.ShapeType.rect, { x: b.x, y: b.y, w: b.w, h: 0.42, fill: { color: b.color } });
slide.addText(b.title, { x: b.x + 0.06, y: b.y, w: b.w - 0.12, h: 0.42, fontSize: 13, bold: true, color: WHITE, valign: "middle" });
slide.addShape(pres.ShapeType.rect, { x: b.x, y: b.y + 0.42, w: b.w, h: b.h - 0.42, fill: { color: WHITE }, line: { color: b.color, pt: 1.5 } });
slide.addText(b.body, { x: b.x + 0.08, y: b.y + 0.48, w: b.w - 0.16, h: b.h - 0.58, fontSize: 10.5, color: DARK_TEXT, valign: "top", margin: 4 });
});
// Row 2: Sub-types
slide.addText("Sub-types of Urticaria", {
x: 0.18, y: 3.16, w: 9.6, h: 0.35,
fontSize: 13, bold: true, color: DARK_TEAL
});
const subtypes = [
{ name: "Spontaneous", desc: "No identifiable cause (idiopathic); most common form of chronic urticaria", color: DARK_TEAL },
{ name: "Inducible", desc: "Triggered by specific stimuli: cold, heat, pressure, vibration, dermatographism, sunlight", color: MED_TEAL },
{ name: "Autoimmune", desc: "Associated with autoimmune disorders; IgG autoantibodies against IgE or FcεRI receptor", color: ACCENT },
{ name: "Allergic", desc: "IgE-mediated reaction triggered by specific allergens (food, drugs, latex, venom)", color: "5A7D6E" }
];
subtypes.forEach((s, i) => {
const x = 0.18 + i * 2.43;
slide.addShape(pres.ShapeType.rect, { x, y: 3.55, w: 2.35, h: 1.7, fill: { color: LIGHT_TEAL }, line: { color: s.color, pt: 2 } });
slide.addShape(pres.ShapeType.rect, { x, y: 3.55, w: 2.35, h: 0.38, fill: { color: s.color } });
slide.addText(s.name, { x: x + 0.04, y: 3.55, w: 2.27, h: 0.38, fontSize: 11, bold: true, color: WHITE, valign: "middle", align: "center" });
slide.addText(s.desc, { x: x + 0.06, y: 3.97, w: 2.23, h: 1.2, fontSize: 10, color: DARK_TEXT, valign: "top", margin: 4 });
});
}
// ─── SLIDE 6: PATHOPHYSIOLOGY ────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Pathophysiology");
// Central pathway - flow boxes
const steps = [
{ label: "Trigger Exposure", desc: "Allergen, drug, infection, physical stimulus, autoantibody", color: DARK_TEAL },
{ label: "Mast Cell Activation", desc: "IgE binds to FcεRI on mast cells/basophils; crosslinking by antigen", color: MED_TEAL },
{ label: "Mediator Release", desc: "Histamine, bradykinin, kallikrein, slow-reacting substance of anaphylaxis (leukotrienes)", color: ACCENT },
{ label: "Vascular Changes", desc: "Vasodilation + increased vascular permeability → fluid leakage into dermis", color: "2A8A6A" },
{ label: "Wheal Formation", desc: "Raised, red, pruritic wheals — localised dermal oedema", color: "5A6D3E" }
];
steps.forEach((s, i) => {
const x = 0.18;
const y = 0.87 + i * 0.88;
slide.addShape(pres.ShapeType.rect, { x, y, w: 2.8, h: 0.72, fill: { color: s.color } });
slide.addText(s.label, { x: x + 0.05, y, w: 2.7, h: 0.72, fontSize: 11, bold: true, color: WHITE, valign: "middle", align: "center" });
if (i < steps.length - 1) {
slide.addShape(pres.ShapeType.rect, { x: 1.42, y: y + 0.72, w: 0.12, h: 0.16, fill: { color: s.color } });
}
slide.addShape(pres.ShapeType.rect, { x: 3.1, y: y + 0.05, w: 6.65, h: 0.62, fill: { color: LIGHT_TEAL }, line: { color: s.color, pt: 1 } });
slide.addText(s.desc, { x: 3.18, y: y + 0.05, w: 6.49, h: 0.62, fontSize: 11, color: DARK_TEXT, valign: "middle", margin: 6 });
});
// Nonimmunologic note
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 5.27, w: 9.6, h: 0.0, // hidden for spacing
fill: { color: "transparent" }
});
}
// ─── SLIDE 7: SYMPTOMS ───────────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Symptoms");
const symptoms = [
{ icon: "🔴", title: "Pruritus", desc: "Intense itching or burning sensation — cardinal symptom" },
{ icon: "🔺", title: "Wheals", desc: "Raised, flat-topped plaques with pale centres and red borders; variable size" },
{ icon: "💧", title: "Swelling", desc: "Skin tenderness and redness; angioedema of face, lips, tongue, throat" },
{ icon: "🔄", title: "Transient Lesions", desc: "Individual wheals last <24 h; new lesions may continuously appear" },
{ icon: "⚡", title: "Dermatographism", desc: "Skin reacts to minor trauma with wheal formation" },
{ icon: "🌡️", title: "Flare Triggers", desc: "Flares triggered by stress, temperature changes, or physical activity" }
];
symptoms.forEach((s, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.18 + col * 3.27;
const y = 0.9 + row * 2.25;
slide.addShape(pres.ShapeType.rect, {
x, y, w: 3.15, h: 2.0,
fill: { color: row === 0 ? DARK_TEAL : MED_TEAL }
});
slide.addText(s.icon + " " + s.title, {
x: x + 0.08, y: y + 0.08, w: 2.99, h: 0.5,
fontSize: 13, bold: true, color: WHITE
});
slide.addText(s.desc, {
x: x + 0.08, y: y + 0.6, w: 2.99, h: 1.3,
fontSize: 11, color: LIGHT_TEAL, valign: "top", margin: 4
});
});
}
// ─── SLIDE 8: CLINICAL FEATURES ──────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Clinical Features");
// Left: morphology
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 0.87, w: 4.6, h: 0.42,
fill: { color: DARK_TEAL }
});
slide.addText("Morphology of Lesions", {
x: 0.24, y: 0.87, w: 4.48, h: 0.42,
fontSize: 12, bold: true, color: WHITE, valign: "middle"
});
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 1.29, w: 4.6, h: 2.1,
fill: { color: WHITE }, line: { color: DARK_TEAL, pt: 1.5 }
});
slide.addText([
{ text: "• Raised, flat-topped wheals surrounded by red flare\n", options: {} },
{ text: "• Pale centre with erythematous margins\n", options: {} },
{ text: "• 'Wheal and flare' reaction — blanching on pressure\n", options: {} },
{ text: "• Variable size: mm to several cm in diameter\n", options: {} },
{ text: "• Angioedema: diffuse swelling of face, lips, tongue\n", options: {} },
{ text: "• Dermatographism in ~5% of population", options: {} }
], { x: 0.26, y: 1.33, w: 4.44, h: 2.0, fontSize: 10.5, color: DARK_TEXT, valign: "top", margin: 4 });
// Middle: associated features
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 3.47, w: 4.6, h: 0.42,
fill: { color: MED_TEAL }
});
slide.addText("Associated Features", {
x: 0.24, y: 3.47, w: 4.48, h: 0.42,
fontSize: 12, bold: true, color: WHITE, valign: "middle"
});
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 3.89, w: 4.6, h: 1.4,
fill: { color: WHITE }, line: { color: MED_TEAL, pt: 1.5 }
});
slide.addText("• Systemic anaphylaxis (15–20% lifetime risk)\n• Nausea, abdominal cramps (cholinergic type)\n• Wheezing, dizziness (solar urticaria, extensive involvement)\n• Fever, lymphadenopathy (urticarial vasculitis)", {
x: 0.26, y: 3.93, w: 4.44, h: 1.3,
fontSize: 10.5, color: DARK_TEXT, valign: "top", margin: 4
});
// Right column: Red flags
slide.addShape(pres.ShapeType.rect, {
x: 4.95, y: 0.87, w: 4.8, h: 0.42,
fill: { color: ACCENT }
});
slide.addText("⚠ Red Flags (Biopsy Warranted)", {
x: 5.01, y: 0.87, w: 4.68, h: 0.42,
fontSize: 12, bold: true, color: WHITE, valign: "middle"
});
slide.addShape(pres.ShapeType.rect, {
x: 4.95, y: 1.29, w: 4.8, h: 1.5,
fill: { color: WHITE }, line: { color: ACCENT, pt: 1.5 }
});
slide.addText("• Lesions lasting >36 hours\n• Painful rather than pruritic\n• Leaves bruising or scarring\n→ Biopsy to exclude urticarial vasculitis\n (fibrinoid necrosis of venules on histology)", {
x: 5.03, y: 1.33, w: 4.64, h: 1.4,
fontSize: 10.5, color: DARK_TEXT, valign: "top", margin: 4
});
// Right: Locations
slide.addShape(pres.ShapeType.rect, {
x: 4.95, y: 2.86, w: 4.8, h: 0.42,
fill: { color: "5A7D6E" }
});
slide.addText("Distribution & Locations", {
x: 5.01, y: 2.86, w: 4.68, h: 0.42,
fontSize: 12, bold: true, color: WHITE, valign: "middle"
});
slide.addShape(pres.ShapeType.rect, {
x: 4.95, y: 3.28, w: 4.8, h: 2.0,
fill: { color: WHITE }, line: { color: "5A7D6E", pt: 1.5 }
});
slide.addText("• Can occur anywhere on the body\n• Face, lips, tongue, throat (angioedema)\n• Pressure urticaria: belt/waistband areas\n• Solar urticaria: sun-exposed skin only\n• Cholinergic: trunk and upper limbs\n• Dermatographism: sites of friction/scratch", {
x: 5.03, y: 3.32, w: 4.64, h: 1.88,
fontSize: 10.5, color: DARK_TEXT, valign: "top", margin: 4
});
}
// ─── SLIDE 9: DIAGNOSIS ──────────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Diagnosis");
// 3 columns: Clinical, Lab, Immunological
const diag = [
{
title: "Clinical Evaluation", color: DARK_TEAL,
items: [
"Detailed history: onset, frequency, triggers",
"Medical & family history",
"Physical exam: skin lesion characteristics",
"Vital signs assessment",
"Dermatographism testing",
"Provocation/threshold testing for inducible urticaria"
]
},
{
title: "Laboratory Tests", color: MED_TEAL,
items: [
"CBC with differential: eosinophilia, leukocytosis, anaemia, thrombocytosis",
"ESR & CRP (elevated in systemic disease)",
"Liver enzymes (hepatic involvement)",
"Renal function tests",
"Thyroid function (TSH)",
"Stool: H. pylori, ova & parasites"
]
},
{
title: "Immunological Tests", color: ACCENT,
items: [
"Antinuclear antibodies (ANA)",
"Elevated IgE levels",
"Anti-thyroid antibodies",
"Skin prick testing (SPT)",
"Radioallergosorbent test (RAST)",
"Enzyme-linked immunosorbent assay (ELISA)"
]
}
];
diag.forEach((d, i) => {
const x = 0.18 + i * 3.27;
slide.addShape(pres.ShapeType.rect, { x, y: 0.87, w: 3.15, h: 0.45, fill: { color: d.color } });
slide.addText(d.title, { x: x + 0.05, y: 0.87, w: 3.05, h: 0.45, fontSize: 12, bold: true, color: WHITE, valign: "middle", align: "center" });
slide.addShape(pres.ShapeType.rect, { x, y: 1.32, w: 3.15, h: 3.95, fill: { color: WHITE }, line: { color: d.color, pt: 1.5 } });
slide.addText(d.items.map((item, j) => ({
text: "• " + item + (j < d.items.length - 1 ? "\n" : ""),
options: { fontSize: 10.5, color: DARK_TEXT }
})), { x: x + 0.08, y: 1.38, w: 2.99, h: 3.8, valign: "top", margin: 6 });
});
// Normal results note
slide.addShape(pres.ShapeType.rect, {
x: 0.18, y: 5.3, w: 9.6, h: 0.0, fill: { color: "transparent" }
});
slide.addText("Note: Normal laboratory results do NOT rule out a diagnosis. Majority of chronic urticaria cases have no laboratory abnormality.", {
x: 0.18, y: 5.15, w: 9.6, h: 0.4,
fontSize: 10, color: MED_TEAL, italic: true, bold: false, align: "center"
});
}
// ─── SLIDE 10: DIFFERENTIAL DIAGNOSIS TABLE ──────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Differential Diagnosis");
// Table header
const tableData = [
[
{ text: "Condition", options: { bold: true, color: WHITE, fontSize: 12, fill: DARK_TEAL } },
{ text: "Similarity to Urticaria", options: { bold: true, color: WHITE, fontSize: 12, fill: DARK_TEAL } },
{ text: "Key Distinguishing Features", options: { bold: true, color: WHITE, fontSize: 12, fill: DARK_TEAL } },
{ text: "Duration / Course", options: { bold: true, color: WHITE, fontSize: 12, fill: DARK_TEAL } }
],
[
{ text: "Urticarial Vasculitis", options: { bold: true, color: DARK_TEAL } },
{ text: "Pruritic wheals with red borders, similar clinical appearance" },
{ text: "Lesions >36 h, PAINFUL not just itchy, leaves bruising/purpura, fibrinoid necrosis on biopsy, associated with SLE" },
{ text: "Chronic; may leave pigmentation" }
],
[
{ text: "Angioedema (HAE)", options: { bold: true, color: DARK_TEAL } },
{ text: "Swelling of skin and subcutaneous tissues; may co-occur with urticaria" },
{ text: "NO urticaria or pruritus; GI involvement (colic); C1-INH deficiency; does NOT respond to antihistamines; family history common" },
{ text: "Attacks last 2–5 days; recurrent" }
],
[
{ text: "Erythema Multiforme", options: { bold: true, color: DARK_TEAL } },
{ text: "Raised pruritic/tender plaques; skin redness; can follow drug exposure or infection" },
{ text: "TARGET lesions (2+ zones with dusky centre); fixed lesions that do NOT migrate; mucosal involvement; epidermal necrosis" },
{ text: "Persists >7 days; does not resolve in 24 h" }
],
[
{ text: "Morbilliform Drug Eruption", options: { bold: true, color: DARK_TEAL } },
{ text: "Erythematous plaques after drug exposure; may itch; blanching" },
{ text: "Diffuse, SYMMETRIC maculopapular rash (not wheals); starts centrally; does NOT migrate within 24 h; no angioedema" },
{ text: "Days to weeks; resolves on drug withdrawal" }
]
];
slide.addTable(tableData, {
x: 0.18, y: 0.88, w: 9.6, h: 4.65,
colW: [2.0, 2.4, 3.8, 1.4],
border: { type: "solid", color: LIGHT_GREY, pt: 0.75 },
fontSize: 10,
color: DARK_TEXT,
rowH: [0.45, 1.0, 1.0, 1.0, 1.0],
align: "left",
valign: "middle",
autoPage: false,
fill: { color: WHITE },
fontFace: "Arial"
});
}
// ─── SLIDE 11: COMPLICATIONS ─────────────────────────────────────
{
let slide = pres.addSlide();
slide.background = { color: WHITE };
addContentBg(slide);
addHeader(slide, "Complications");
const complications = [
{
title: "Anaphylaxis",
severity: "LIFE-THREATENING",
color: "C0392B",
desc: "Severe systemic allergic reaction with urticaria + hypotension, bronchospasm, laryngeal oedema. Requires immediate epinephrine (adrenaline) injection. Risk highest with food/drug/venom triggers."
},
{
title: "Angioedema of Airway",
severity: "MEDICAL EMERGENCY",
color: "E67E22",
desc: "Swelling of tongue, pharynx, larynx causing airway obstruction. Presents with stridor, drooling, dysphagia. May require emergency intubation or tracheostomy."
},
{
title: "Skin Infections",
severity: "Secondary Bacterial",
color: MED_TEAL,
desc: "Intense scratching breaks the skin barrier, leading to secondary bacterial infections (impetigo, cellulitis, abscess). More common in chronic urticaria with persistent pruritus."
},
{
title: "Psychological Impact",
severity: "Chronic Burden",
color: "7D6E9A",
desc: "Chronic urticaria significantly impairs quality of life. Associated with anxiety, depression, sleep disturbance, and social isolation due to unpredictable outbreaks and visible skin changes."
},
{
title: "Gastrointestinal Involvement",
severity: "Systemic Spread",
color: DARK_TEAL,
desc: "Angioedema may extend to GI mucosa causing colic, nausea, vomiting, and diarrhoea. Particularly seen in hereditary angioedema (HAE) and severe allergic urticaria."
},
{
title: "Urticarial Vasculitis",
severity: "Chronic Complication",
color: "5A7D6E",
desc: "Progression to vessel wall inflammation. Persistent painful lesions >36 h, leaving bruising and pigmentation. Associated with SLE and other connective tissue diseases."
}
];
complications.forEach((c, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.18 + col * 3.27;
const y = 0.87 + row * 2.3;
slide.addShape(pres.ShapeType.rect, { x, y, w: 3.15, h: 2.1, fill: { color: WHITE }, line: { color: c.color, pt: 2 } });
slide.addShape(pres.ShapeType.rect, { x, y, w: 3.15, h: 0.42, fill: { color: c.color } });
slide.addText(c.title, { x: x + 0.06, y: y, w: 3.03, h: 0.3, fontSize: 11.5, bold: true, color: WHITE, valign: "middle" });
slide.addText(c.severity, { x: x + 0.06, y: y + 0.3, w: 3.03, h: 0.18, fontSize: 9, bold: false, color: LIGHT_TEAL, valign: "top" });
slide.addText(c.desc, { x: x + 0.08, y: y + 0.48, w: 2.99, h: 1.54, fontSize: 10, color: DARK_TEXT, valign: "top", margin: 4 });
});
}
// ─── SLIDE 12: SUMMARY / CLOSING SLIDE ───────────────────────────
{
let slide = pres.addSlide();
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_TEAL } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: ACCENT } });
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.5, w: 10, h: 0.125, fill: { color: ACCENT } });
slide.addShape(pres.ShapeType.rect, { x: 0.5, y: 0.5, w: 0.07, h: 4.6, fill: { color: ACCENT } });
slide.addText("Key Takeaways", {
x: 0.8, y: 0.35, w: 8.5, h: 0.7,
fontSize: 28, bold: true, color: ACCENT, charSpacing: 4
});
const points = [
"Urticaria affects >20% of the population at some point — highly prevalent skin condition",
"Mast cell degranulation and histamine release are central to ALL forms of urticaria",
"Acute (<6 weeks) vs Chronic (≥6 weeks) — key clinical distinction for diagnosis & treatment",
"4 types: Spontaneous, Inducible, Autoimmune, Allergic",
"Diagnosis is primarily clinical; laboratory workup guided by history (most cases have no lab abnormality)",
"Life-threatening complications: Anaphylaxis + Airway angioedema — must be recognised promptly",
];
slide.addText(points.map((p, i) => ({
text: " " + p + (i < points.length - 1 ? "\n" : ""),
options: { bullet: { type: "number" }, color: WHITE, fontSize: 12 }
})), { x: 0.8, y: 1.15, w: 9.0, h: 4.1, valign: "top", margin: 8 });
}
// ─── WRITE FILE ──────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/urticaria-ppt/Urticaria_Presentation.pptx" })
.then(() => console.log("✅ Presentation saved successfully!"))
.catch(err => console.error("❌ Error:", err));
cd /home/daytona/workspace/urticaria-ppt && node urticaria.js 2>&1
~/urticaria-ppt/urticaria.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/urticaria-ppt/urticaria.js'
~/urticaria-ppt/urticaria.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/urticaria-ppt/urticaria.js'
cd /home/daytona/workspace/urticaria-ppt && node urticaria.js 2>&1 && ls -lh Urticaria_Presentation.pptx
Urticaria Presentation
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - "URTICARIA" with dark teal + gold design |
| 2 | Introduction - definition, epidemiology, key features |
| 3 | Definition - urticaria vs angioedema, acute vs chronic |
| 4 | Causes - 4 columns: Immunological, Infections, Physical, Systemic |
| 5 | Types & Classification - Acute/Chronic + 4 sub-types |
| 6 | Pathophysiology - 5-step flow: Trigger → Mast Cell → Mediators → Vascular Changes → Wheal |
| 7 | Symptoms - 6 symptom cards (pruritus, wheals, swelling, etc.) |
| 8 | Clinical Features - morphology, red flags, distribution |
| 9 | Diagnosis - 3 columns: Clinical, Laboratory, Immunological tests |
| 10 | Differential Diagnosis - table with 4 conditions vs urticaria |
| 11 | Complications - 6 cards (anaphylaxis, airway angioedema, skin infections, etc.) |
| 12 | Summary / Key Takeaways |