Reading File
analyse_media
Finding Sources
Finding Sources
Reading File
Finding Sources
Finding Sources
Finding Sources
Searching the Web

infantile scabies 9 month old generalized pustules desquamation scalp diagnosis management

Reading File
Finding Sources
Searching the Web

infantile scabies differential diagnosis impetigo atopic dermatitis psoriasis neonatal candidiasis

Reading File
Running Command

mkdir -p /tmp/workspace/imd-case-scabies && ls /tmp/workspace/imd-case-scabies/

Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119857-1784209715647-lbqh82.jpg" \ "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119858-1784209716663-et6yt1.jpg" \ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Scabies_2007.jpg/320px-Scabies_2007.jpg" \ "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Impetigo_infected_wound.jpg/320px-Impetigo_infected_wound.jpg" \ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Atopic_dermatitis_child.jpg/320px-Atopic_dermatitis_child.jpg" \ 2>/dev/null | python3 -c "import json,sys; data=json.load(sys.stdin); [print(i['url'], 'OK' if i['base64'] else 'FAIL') for i in data]"

Searching the Web

infantile scabies clinical photo site:dermnetnz.org OR site:ncbi.nlm.nih.gov infant pustules

Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/05a5b08f7bd0/ad-21-200-g001.jpg" \ "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/d8b2b82e1c1d/ad-21-200-g002.jpg" \ "https://dermnetnz.org/assets/collection/Scabies/scabies-0022.jpg" \ 2>/dev/null | python3 -c "import json,sys; data=json.load(sys.stdin); [print(i['url'], 'OK' if i['base64'] else 'FAIL') for i in data]"

Searching the Web

impetigo infant clinical photo ncbi atopic dermatitis infant clinical photo dermnetnz

Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://dermnetnz.org/assets/Uploads/severe-impetigo-infant.jpg" \ "https://dermnetnz.org/assets/Uploads/dermatitis/at-derm7.jpg" \ 2>/dev/null | python3 -c "import json,sys; data=json.load(sys.stdin); [print(i['url'], 'OK' if i['base64'] else 'FAIL') for i in data]"

Writing File

~/imd-case-scabies/build_pptx.py

import json, subprocess, base64
from io import BytesIO
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR

# ─── helpers ────────────────────────────────────────────────────────────────
def fetch(urls):
    r = json.loads(subprocess.check_output(
        ["python", "/tmp/skills/shared/scripts/fetch_images.py"] + urls
    ))
    return {i["url"]: i["base64"] for i in r if i["base64"]}

def img_stream(b64):
    raw = base64.b64decode(b64.split(",", 1)[-1] if "," in b64 else b64)
    return BytesIO(raw)

def bg(slide, r, g, b):
    fill = slide.background.fill
    fill.solid()
    fill.fore_color.rgb = RGBColor(r, g, b)

def tb(slide, text, x, y, w, h, size=18, bold=False, color=(0x22,0x22,0x22),
        align=PP_ALIGN.LEFT, wrap=True, italic=False):
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = wrap
    tf.margin_left = Pt(2)
    tf.margin_right = Pt(2)
    tf.margin_top = Pt(2)
    tf.margin_bottom = Pt(2)
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = RGBColor(*color)
    return shape

def rect(slide, x, y, w, h, r, g, b):
    from pptx.util import Inches
    from pptx.enum.shapes import MSO_SHAPE_TYPE
    s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    s.fill.solid()
    s.fill.fore_color.rgb = RGBColor(r, g, b)
    s.line.fill.background()
    return s

def add_bullet_box(slide, bullets, x, y, w, h, size=14, color=(0x22,0x22,0x22)):
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = True
    tf.margin_left = Pt(4)
    tf.margin_right = Pt(4)
    tf.margin_top = Pt(4)
    tf.margin_bottom = Pt(4)
    for i, bullet in enumerate(bullets):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.alignment = PP_ALIGN.LEFT
        run = p.add_run()
        run.text = f"• {bullet}"
        run.font.size = Pt(size)
        run.font.color.rgb = RGBColor(*color)

# ─── fetch images ────────────────────────────────────────────────────────────
URLS = {
    "case1": "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119857-1784209715647-lbqh82.jpg",
    "case2": "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119858-1784209716663-et6yt1.jpg",
    "scabies_pmcA": "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/05a5b08f7bd0/ad-21-200-g001.jpg",
    "scabies_pmcB": "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/d8b2b82e1c1d/ad-21-200-g002.jpg",
    "scabies_derm": "https://dermnetnz.org/assets/collection/Scabies/scabies-0022.jpg",
    "impetigo": "https://dermnetnz.org/assets/Uploads/severe-impetigo-infant.jpg",
    "ad": "https://dermnetnz.org/assets/Uploads/dermatitis/at-derm7.jpg",
}
imgs = fetch(list(URLS.values()))

# ─── colors ──────────────────────────────────────────────────────────────────
NAVY   = (0x1a, 0x35, 0x5e)  # deep navy
TEAL   = (0x00, 0x87, 0x8a)
GOLD   = (0xe8, 0x9c, 0x00)
WHITE  = (0xff, 0xff, 0xff)
LIGHT  = (0xf0, 0xf4, 0xf8)
DARK   = (0x22, 0x22, 0x22)
RED    = (0xcc, 0x33, 0x33)
GREEN  = (0x1a, 0x7a, 0x3c)

# ─── build deck ──────────────────────────────────────────────────────────────
prs = Presentation()
prs.slide_width  = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 1 — TITLE
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *NAVY)
rect(s, 0, 0, 13.333, 0.15, *GOLD)
rect(s, 0, 7.35, 13.333, 0.15, *GOLD)

tb(s, "IMD CASE REPORT", 0.5, 0.5, 12.333, 1.0, size=38, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rect(s, 1.5, 1.7, 10.333, 0.06, *TEAL)
tb(s, "Infantile Scabies", 0.5, 1.9, 12.333, 1.2, size=28, bold=True, color=(0xe8,0x9c,0x00), align=PP_ALIGN.CENTER)
tb(s, "A Case of P.M., 9-Month-Old Female  |  Davao City", 0.5, 3.1, 12.333, 0.7, size=18, color=(0xcc,0xdd,0xff), align=PP_ALIGN.CENTER)

if URLS["case1"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["case1"]]), Inches(3.5), Inches(3.9), Inches(3.0), Inches(3.2))
if URLS["case2"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["case2"]]), Inches(6.8), Inches(3.9), Inches(3.0), Inches(3.2))

tb(s, "Department of Internal Medicine & Dermatology", 0.5, 6.9, 12.333, 0.5, size=11, color=(0xaa,0xbb,0xcc), align=PP_ALIGN.CENTER)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 2 — CASE SUMMARY
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, *NAVY)
tb(s, "CASE SUMMARY", 0.4, 0.18, 12.5, 0.65, size=24, bold=True, color=WHITE)

# Patient info box
rect(s, 0.3, 1.1, 5.8, 1.6, *NAVY)
tb(s, "Patient Profile", 0.45, 1.18, 5.5, 0.4, size=12, bold=True, color=GOLD)
add_bullet_box(s, [
    "P.M., 9-month-old female",
    "Manuel Guianga, Davao City",
    "Chief complaint: Generalized erythematous patches with multiple pustules",
], 0.4, 1.55, 5.7, 1.1, size=12, color=WHITE)

# Timeline box
rect(s, 6.4, 1.1, 6.6, 1.6, *NAVY)
tb(s, "Timeline", 6.55, 1.18, 6.2, 0.4, size=12, bold=True, color=GOLD)
add_bullet_box(s, [
    "4 wks PTA: Pinpoint pustules on scalp vertex — given co-amoxiclav + cetirizine (no improvement)",
    "3 wks PTA: Lesions increased; given cefaclor (still no improvement)",
    "2 wks PTA: Spread to head & neck; given prednisone + cetirizine — lesions generalized + desquamation",
    "4 days PTA: Fever, referred to dermatologist",
], 6.4, 1.55, 6.65, 1.1, size=11, color=WHITE)

# Physical exam heading
rect(s, 0.3, 2.85, 12.7, 0.45, *TEAL)
tb(s, "Physical Examination Findings", 0.5, 2.88, 12.0, 0.38, size=14, bold=True, color=WHITE)

# Findings bullets
add_bullet_box(s, [
    "Generalized erythematous coalescing patches with crusting — trunk, extremities, face",
    "Multiple pinpoint pustules superimposed on erythematous patches, most prominent over extremities",
    "Areas of desquamation (fine flaky scaling) over limbs and trunk",
    "Scalp involvement: erythema, crusting, scaling — initial site of onset",
    "Fever (undocumented) at admission",
], 0.4, 3.35, 7.5, 3.0, size=13, color=DARK)

# Case photos
if URLS["case1"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["case1"]]), Inches(8.1), Inches(3.35), Inches(2.4), Inches(3.0))
if URLS["case2"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["case2"]]), Inches(10.7), Inches(3.35), Inches(2.4), Inches(3.0))

tb(s, "Source: Attached case photographs", 8.1, 6.45, 5.0, 0.35, size=9, italic=True, color=(0x77,0x77,0x77))

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 3 — DIAGNOSIS
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, *TEAL)
tb(s, "DIAGNOSIS: INFANTILE SCABIES", 0.4, 0.18, 12.5, 0.65, size=24, bold=True, color=WHITE)

# Left panel — diagnosis discussion
rect(s, 0.3, 1.1, 7.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.1, 7.2, 0.45, *NAVY)
tb(s, "What is Scabies?", 0.45, 1.15, 7.0, 0.38, size=14, bold=True, color=WHITE)

add_bullet_box(s, [
    "Caused by Sarcoptes scabiei var. hominis — an ectoparasitic mite that burrows into the stratum corneum",
    "Female mite lays eggs; full life cycle 10–17 days; intense pruritic reaction is a hypersensitivity response to mite proteins",
    "In infants (<2 yrs): eruption is vesiculopustular, typically affecting scalp, face, neck, palms, and soles — areas spared in adults",
    "Generalized erythematous eczematous changes common; classic burrows may be absent or obliterated",
    "Secondary bacterial infection (S. aureus / S. pyogenes) is a frequent complication",
    "Post-scabetic pustulosis: sterile pustules that persist even after successful treatment",
], 0.4, 1.62, 7.1, 3.5, size=12, color=DARK)

rect(s, 0.3, 5.15, 7.2, 0.38, *NAVY)
tb(s, "Supporting Evidence in This Case", 0.45, 5.2, 7.0, 0.35, size=13, bold=True, color=WHITE)
add_bullet_box(s, [
    "9-month-old infant: age-typical atypical distribution (scalp, face, generalized)",
    "Pinpoint pustules on erythematous base, desquamation, crusting",
    "Progressive spread over 4 weeks despite multiple antibiotics/antihistamines",
    "No improvement with prednisone — argued against pure atopic dermatitis",
    "Fever + generalization: consistent with secondary bacterial superinfection of scabies",
], 0.4, 5.6, 7.1, 1.5, size=11, color=DARK)

# Right panel — scabies images
rect(s, 7.8, 1.1, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.1, 5.2, 0.45, *NAVY)
tb(s, "Scabies in Infants — Reference Images", 7.95, 1.15, 5.0, 0.38, size=13, bold=True, color=WHITE)

if URLS["scabies_pmcA"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["scabies_pmcA"]]), Inches(7.9), Inches(1.65), Inches(2.35), Inches(2.4))
if URLS["scabies_pmcB"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["scabies_pmcB"]]), Inches(10.4), Inches(1.65), Inches(2.35), Inches(2.4))
if URLS["scabies_derm"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["scabies_derm"]]), Inches(8.7), Inches(4.2), Inches(3.5), Inches(2.7))

tb(s, "Sources: Park JM et al. Ann Dermatol 2009 (PMID: 20548906); DermNet NZ (dermnetnz.org/topics/scabies)", 7.9, 7.05, 5.2, 0.35, size=8, italic=True, color=(0x77,0x77,0x77))

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 4 — DIFFERENTIAL 1: IMPETIGO
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, *RED)
tb(s, "DIFFERENTIAL DIAGNOSIS 1 — IMPETIGO", 0.4, 0.18, 12.5, 0.65, size=22, bold=True, color=WHITE)

# Left: text
rect(s, 0.3, 1.1, 7.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.1, 7.2, 0.42, *RED)
tb(s, "Impetigo (Superficial Bacterial Skin Infection)", 0.45, 1.14, 7.0, 0.35, size=13, bold=True, color=WHITE)

add_bullet_box(s, [
    "Definition: Highly contagious superficial bacterial infection caused by Staphylococcus aureus and/or Streptococcus pyogenes",
    "Morphology: Non-bullous type — erythematous macules progressing to vesicles/pustules with honey-colored crusting; Bullous type — flaccid bullae with clear to yellow fluid",
    "Distribution: Commonly face, nasal area, perioral, exposed extremities; widespread in infants",
    "Similarities to this case: Pustules on erythematous base, crusting, fever, generalized spread, scalp involvement",
    "Differentiating features: Honey-colored crusts more prominent; responds to appropriate antibiotics; no burrows; mite not identifiable on scraping",
    "Note: Scabies can secondarily impetiginize — both diagnoses may coexist",
], 0.4, 1.6, 7.1, 4.0, size=12, color=DARK)

rect(s, 0.3, 5.7, 7.2, 0.38, *RED)
tb(s, "Reason Less Likely Here", 0.45, 5.74, 7.0, 0.32, size=12, bold=True, color=WHITE)
add_bullet_box(s, [
    "4-week progressive course unresponsive to multiple antibiotics (co-amoxiclav, cefaclor) makes primary impetigo unlikely as the sole diagnosis",
], 0.4, 6.15, 7.1, 0.9, size=12, color=DARK)

# Right: image
rect(s, 7.8, 1.1, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.1, 5.2, 0.42, *RED)
tb(s, "Clinical Image — Impetigo in Infant", 7.95, 1.14, 5.0, 0.35, size=13, bold=True, color=WHITE)
if URLS["impetigo"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["impetigo"]]), Inches(8.1), Inches(1.65), Inches(4.6), Inches(5.3))
tb(s, "Honey-colored crusted erosions on erythematous base", 7.9, 7.05, 5.2, 0.35, size=9, italic=True, color=(0x55,0x55,0x55))
tb(s, "Source: DermNet NZ (dermnetnz.org/topics/impetigo)", 7.9, 7.25, 5.2, 0.2, size=8, italic=True, color=(0x99,0x99,0x99))

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 5 — DIFFERENTIAL 2: ATOPIC DERMATITIS
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, *GREEN)
tb(s, "DIFFERENTIAL DIAGNOSIS 2 — ATOPIC DERMATITIS (INFANTILE ECZEMA)", 0.4, 0.18, 12.5, 0.65, size=20, bold=True, color=WHITE)

rect(s, 0.3, 1.1, 7.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.1, 7.2, 0.42, *GREEN)
tb(s, "Atopic Dermatitis — Infantile Form", 0.45, 1.14, 7.0, 0.35, size=13, bold=True, color=WHITE)

add_bullet_box(s, [
    "Definition: Chronic relapsing inflammatory skin disease; most common in infants aged 2–6 months onset; associated with personal/family atopy",
    "Morphology: Erythematous, exudative, vesicular plaques with intense pruritus; dry, scaling skin (xerosis); oozing, crusting in acute phase",
    "Distribution: Infantile form (0–2 yrs) — cheeks, scalp, forehead, extensor surfaces of arms/legs; trunk may be involved; diaper area usually spared",
    "Similarities to this case: Generalized erythema, scalp/face involvement, crusting, pruritus, infant age group",
    "Differentiating features: Chronic remitting/relapsing pattern; atopy history; no pustules on mites; burrows absent; typically responds to topical corticosteroids; no family contacts affected",
    "Pustules not a primary feature of atopic dermatitis; when present they indicate secondary bacterial infection",
], 0.4, 1.6, 7.1, 4.0, size=12, color=DARK)

rect(s, 0.3, 5.7, 7.2, 0.38, *GREEN)
tb(s, "Reason Less Likely Here", 0.45, 5.74, 7.0, 0.32, size=12, bold=True, color=WHITE)
add_bullet_box(s, [
    "Prominent primary pustules (not secondary infection alone), absence of improvement with systemic steroids (prednisone), and 4-week progressive course favor scabies over primary AD",
], 0.4, 6.15, 7.1, 0.9, size=12, color=DARK)

rect(s, 7.8, 1.1, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.1, 5.2, 0.42, *GREEN)
tb(s, "Clinical Image — Infantile Atopic Dermatitis", 7.95, 1.14, 5.0, 0.35, size=13, bold=True, color=WHITE)
if URLS["ad"] in imgs:
    s.shapes.add_picture(img_stream(imgs[URLS["ad"]]), Inches(8.1), Inches(1.65), Inches(4.6), Inches(5.3))
tb(s, "Erythematous, exudative plaques on cheeks and extensor surfaces", 7.9, 7.05, 5.2, 0.35, size=9, italic=True, color=(0x55,0x55,0x55))
tb(s, "Source: DermNet NZ (dermnetnz.org/topics/atopic-dermatitis)", 7.9, 7.25, 5.2, 0.2, size=8, italic=True, color=(0x99,0x99,0x99))

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 6 — DIFFERENTIAL 3: INFANTILE PUSTULAR PSORIASIS / SEBORRHEIC DERMATITIS
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, (0x7b, 0x1f, 0x7e))
tb(s, "DIFFERENTIAL DIAGNOSIS 3 — GENERALIZED PUSTULAR PSORIASIS / SEBORRHEIC DERMATITIS", 0.4, 0.18, 12.5, 0.65, size=18, bold=True, color=WHITE)

# Left: Pustular psoriasis
rect(s, 0.3, 1.1, 6.1, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.1, 6.1, 0.42, (0x7b, 0x1f, 0x7e))
tb(s, "Generalized Pustular Psoriasis (GPP) — Infantile", 0.45, 1.14, 5.9, 0.35, size=12, bold=True, color=WHITE)
add_bullet_box(s, [
    "Rare but severe; characterized by widespread sterile erythematous plaques studded with pustules; may be triggered by infections, drugs (corticosteroids), or IL-36RN mutations",
    "Morphology: Waves of sterile pustules on erythematous skin; desquamation after pustules dry; may have silvery scaling",
    "Distribution: Generalized; trunk, extremities, scalp; can affect face in infants",
    "Systemic: High fever, malaise, elevated ESR/CRP",
    "Similarities: Generalized erythema, pustules, desquamation, fever, scalp involvement",
    "Differentiating: Sterile pustules; family history of psoriasis; nail pitting; triggered/worsened by steroid withdrawal; skin biopsy shows spongiform pustules (Kogoj); responds to retinoids/biologics",
], 0.4, 1.6, 6.0, 5.5, size=11.5, color=DARK)

# Right: Seborrheic dermatitis
rect(s, 6.7, 1.1, 6.3, 6.1, 0xff, 0xff, 0xff)
rect(s, 6.7, 1.1, 6.3, 0.42, (0x7b, 0x1f, 0x7e))
tb(s, "Seborrheic Dermatitis (Cradle Cap / Infantile SD)", 6.85, 1.14, 6.1, 0.35, size=12, bold=True, color=WHITE)
add_bullet_box(s, [
    "Caused by abnormal response to Malassezia yeast on sebum-rich skin; peaks in first 3 months of life",
    "Morphology: Greasy, yellowish-brown, adherent scales on erythematous base; not intensely pruritic",
    "Distribution: Scalp (cradle cap), face, eyebrows, behind ears, intertriginous areas — mirrors this case's scalp-first onset",
    "Similarities: Scalp onset, erythema, crusting, spread to head/neck",
    "Differentiating: Greasy (not purulent) scales; NOT pustular; resolves spontaneously by 12 months; no mites; less pruritic; does not typically cause febrile illness or generalized vesiculopustules",
    "Note: Less likely here due to prominent pustular component and systemic symptoms",
], 6.8, 1.6, 6.2, 5.5, size=11.5, color=DARK)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 7 — MANAGEMENT PLAN
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.0, *NAVY)
tb(s, "MANAGEMENT PLAN", 0.4, 0.18, 12.5, 0.65, size=24, bold=True, color=WHITE)

# Row 1: Diagnosis confirmation
rect(s, 0.3, 1.1, 3.9, 5.9, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.1, 3.9, 0.42, *TEAL)
tb(s, "1. Confirm Diagnosis", 0.45, 1.14, 3.7, 0.35, size=13, bold=True, color=WHITE)
add_bullet_box(s, [
    "Skin scraping with mineral oil — microscopy for mites, eggs, fecal pellets (scybala)",
    "Dermoscopy: 'jet with contrail' sign (Delta-wing sign)",
    "Wound swab / blood culture if secondary bacterial infection suspected",
    "CBC, ESR, CRP for severity assessment",
    "Serum IgE / patch test if atopy also suspected",
], 0.4, 1.6, 3.8, 5.0, size=11.5, color=DARK)

# Row 2: Pharmacological treatment
rect(s, 4.5, 1.1, 4.3, 5.9, 0xff, 0xff, 0xff)
rect(s, 4.5, 1.1, 4.3, 0.42, *NAVY)
tb(s, "2. Pharmacological Treatment", 4.65, 1.14, 4.1, 0.35, size=13, bold=True, color=WHITE)
add_bullet_box(s, [
    "First-line: 5% Permethrin cream (approved for infants >2 months) — apply head to toe (include scalp, face, neck in infants), leave 8–12 hrs, wash off; repeat after 1 week",
    "Alternative if <2 months: 6–10% Precipitated sulfur ointment — applied for 3 consecutive nights",
    "Oral Ivermectin 200 mcg/kg single dose (traditionally avoided <15 kg but recent evidence supports use with caution)",
    "Treat secondary bacterial infection: Topical mupirocin or systemic antibiotics (cloxacillin / cephalexin) if impetigo/cellulitis present",
    "Antipruritic: Oral antihistamine (e.g., cetirizine) for itch; topical mild steroid for post-scabetic itch",
    "Post-treatment: Pruritus may persist 2–4 weeks (post-scabetic phenomenon) — reassure caregivers",
], 4.6, 1.6, 4.2, 5.0, size=11, color=DARK)

# Row 3: Environmental & supportive
rect(s, 9.1, 1.1, 3.9, 5.9, 0xff, 0xff, 0xff)
rect(s, 9.1, 1.1, 3.9, 0.42, *GOLD)
tb(s, "3. Environmental & Supportive", 9.25, 1.14, 3.7, 0.35, size=13, bold=True, color=DARK)
add_bullet_box(s, [
    "Treat ALL household contacts simultaneously — even if asymptomatic (scabies spreads via prolonged contact)",
    "Wash all clothing, bedding, towels in hot water (60°C) and dry on high heat on the same day treatment is started",
    "Non-washable items: seal in plastic bag for ≥72 hours (mites die without human host)",
    "Vacuum furniture, mattresses, carpets",
    "Ensure no re-exposure (family members, caregivers all treated)",
    "Fever management: paracetamol (15 mg/kg/dose every 4–6 hrs PRN)",
    "Adequate nutrition and hydration support",
    "Follow-up at 1 and 4 weeks to assess treatment response",
    "Educate parents: Itch may persist 2–4 weeks post-treatment — this does NOT mean treatment failure",
], 9.2, 1.6, 3.7, 5.0, size=10.8, color=DARK)

# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 8 — REFERENCES
# ═══════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(blank)
bg(s, *NAVY)
rect(s, 0, 0, 13.333, 0.15, *GOLD)
rect(s, 0, 7.35, 13.333, 0.15, *GOLD)
tb(s, "REFERENCES", 0.5, 0.25, 12.333, 0.65, size=26, bold=True, color=WHITE)
rect(s, 0.5, 1.0, 12.333, 0.05, *TEAL)

refs = [
    "1. American Academy of Pediatrics. (2021). Scabies. In Red Book: 2021 Report of the Committee on Infectious Diseases (32nd ed., pp. 1029–1033). AAP. ISBN: 9781610025218",
    "2. Griffiths C, Barker J, Bleiker T, Chalmers R, Creamer D (Eds.). (2023). Rook's Dermatology (2-Volume Set, 5th ed.). Wiley-Blackwell. ISBN: 9780702082252",
    "3. Katzung BG. (2021). Basic and Clinical Pharmacology (16th ed.). McGraw-Hill. ISBN: 9781260463309 [Permethrin, Lindane, Scabicides chapter]",
    "4. Park JM, Ko HC, Kim MB, Kwon KS, Oh CK. (2009). Scabies in a 2-month-old infant successfully treated with lindane. Ann Dermatol, 21(2), 200-202. PMID: 20548906",
    "5. Johnston G, Sladden M. (2005). Scabies: diagnosis and treatment. BMJ, 331(7517), 619–622. PMC1215558. doi:10.1136/bmj.331.7517.619",
    "6. Leung AKC, et al. (2021). Scabies infestation in the pediatric population. Paediatrics & Child Health. PMID cited in nursing.ceconnection.com",
    "7. Thomas J, et al. (2021). Paediatrics: how to manage scabies. Pharm J. PMC8007207. doi:10.1211/PJ.2021.1.70386",
    "8. Sunderkötter C, et al. (2021). Scabies — Epidemiology, Diagnosis, and Treatment. Dtsch Arztebl Int, 118(40), 695–704. PMC8743988",
    "9. DermNet NZ. Scabies: Diagnosis and Treatment. Retrieved July 2026, from https://dermnetnz.org/topics/scabies",
    "10. DermNet NZ. Impetigo. Retrieved July 2026, from https://dermnetnz.org/topics/impetigo",
    "11. DermNet NZ. Atopic Dermatitis. Retrieved July 2026, from https://dermnetnz.org/topics/atopic-dermatitis",
    "12. Ranasinghe GCL, et al. (2023). Atopic Dermatitis in Children: Differential Diagnosis and Mimickers. Children, 13(5), 690. MDPI. doi:10.3390/children13050690",
]

ref_text = "\n".join(refs)
tb(s, ref_text, 0.5, 1.1, 12.333, 6.2, size=10.5, color=(0xcc,0xdd,0xff), wrap=True)

# ─── save ────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/imd-case-scabies/IMD_Case_Report_Infantile_Scabies.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
    f.write(buf.getvalue())
print(f"Saved: {out}")
Running Command

cd /tmp/workspace/imd-case-scabies && python build_pptx.py 2>&1

Editing File

~/imd-case-scabies/build_pptx.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/imd-case-scabies/build_pptx.py'
Reading File
Editing File

~/imd-case-scabies/build_pptx.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/imd-case-scabies/build_pptx.py'
Running Command

cd /tmp/workspace/imd-case-scabies && python build_pptx.py 2>&1

[Called write_todos with parameters: {"todos": [{"content": "Analyse both uploaded images for clinical details", "status": "completed"}, {"content": "Search medical library for scabies in infants / generalized pustular rash", "status": "completed"}, {"content": "Search for differential diagnoses: impetigo, atopic dermatitis, psoriasis in infants", "status": "completed"}, {"content": "Read PPTX skill and create PowerPoint presentation", "status": "completed"}]}]
Your PowerPoint presentation is ready for download:

IMD Case Report Infantile Scabies

Presentation · PPTX


Here is a summary of what the presentation contains (8 slides total):
Slide 1 - Title Slide
  • Case title, patient info, and two case photos on a navy/gold theme
Slide 2 - Case Summary
  • Patient profile, 4-week illness timeline, and key physical examination findings with case photos
Slide 3 - Diagnosis: Infantile Scabies
  • Full discussion of Sarcoptes scabiei pathophysiology, why infantile presentation differs from adults (scalp/face/palms affected), why this case fits, with reference photos from PMC and DermNet NZ
Slide 4 - Differential 1: Impetigo
  • Superficial bacterial infection (S. aureus/S. pyogenes), honey-colored crusting, similarities/differences from this case, why it is less likely as the sole diagnosis (4 weeks of antibiotic failure), with clinical image from DermNet NZ
Slide 5 - Differential 2: Atopic Dermatitis (Infantile Eczema)
  • Infantile distribution (cheeks, scalp, extensor surfaces), pruritus, xerosis, remitting/relapsing pattern; differentiating features include absence of improvement on prednisone and primary pustules, with clinical image
Slide 6 - Differential 3: Generalized Pustular Psoriasis / Seborrheic Dermatitis
  • GPP: sterile pustules, desquamation, fever, steroid-withdrawal trigger, spongiform Kogoj pustules on biopsy
  • Seborrheic dermatitis: greasy yellowish scalp scales, Malassezia-driven, non-pruritic, resolves by 12 months
Slide 7 - Management Plan (3 columns)
  • Confirm diagnosis: skin scraping, dermoscopy (delta-wing sign), CBC/CRP
  • Pharmacological: 5% permethrin cream head-to-toe (1st line for infants >2 months), sulfur ointment alternative, ivermectin caveat, antibiotics for secondary infection, antihistamines
  • Environmental/supportive: treat all household contacts simultaneously, hot-wash bedding, bag non-washable items 72+ hrs, parent education on post-scabetic itch
Slide 8 - References
  • 12 fully formatted references including Red Book 2021, Rook's Dermatology, Katzung Pharmacology, PMC full-text articles (PMID/PMC numbers included), and DermNet NZ

Key clinical answer for your records:
Diagnosis: Infantile Scabies with secondary bacterial superinfection. The 9-month age, scalp-onset spreading to generalized vesiculopustular eruption, failure of multiple antibiotics, and worsening on steroids all point to Sarcoptes scabiei infestation in its atypical infantile form. Infants have scalp, face, palms, and soles affected - unlike adults. Post-scabetic pustulosis explains the persistent sterile pustules even after treatment begins.

Diagnosis is Generalized pustular psoriasis

Finding Sources
Finding Sources
Searching the Web

generalized pustular psoriasis infant child clinical features management IL-36RN acitretin cyclosporine

Searching the Web

generalized pustular psoriasis infant differential diagnosis scabies impetigo erythroderma site:ncbi.nlm.nih.gov

Reading File
Reading File
Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://media.post.rvohealth.io/wp-content/uploads/2022/12/pustular-psoriasis-body3.jpg" \ "https://media.post.rvohealth.io/wp-content/uploads/2022/12/pustular-psoriasis-body1.jpg" \ "https://media.post.rvohealth.io/wp-content/uploads/sites/3/2023/07/Pustular-psoriasis-1296x728-slide5.jpg" \ 2>/dev/null | python3 -c "import json,sys; data=json.load(sys.stdin); [print(i['url'], 'OK' if i['base64'] else 'FAIL') for i in data]"

Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/b88d809ca0120ae32e46203b8ff288abe96a7169955e7d2dd52396d05e8a7694.png" \ "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119857-1784209715647-lbqh82.jpg" \ "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119858-1784209716663-et6yt1.jpg" \ "https://dermnetnz.org/assets/Uploads/severe-impetigo-infant.jpg" \ "https://dermnetnz.org/assets/Uploads/dermatitis/at-derm7.jpg" \ "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/05a5b08f7bd0/ad-21-200-g001.jpg" \ 2>/dev/null | python3 -c "import json,sys; data=json.load(sys.stdin); [print(i['url'], 'OK' if i['base64'] else 'FAIL') for i in data]"

Writing File

~/imd-case-scabies/build_gpp_pptx.py

import json, subprocess, base64
from io import BytesIO
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN

# ─── helpers ────────────────────────────────────────────────────────────────
def fetch(urls):
    r = json.loads(subprocess.check_output(
        ["python", "/tmp/skills/shared/scripts/fetch_images.py"] + urls
    ))
    return {i["url"]: i["base64"] for i in r if i["base64"]}

def img_stream(b64):
    raw = base64.b64decode(b64.split(",", 1)[-1] if "," in b64 else b64)
    return BytesIO(raw)

def bg(slide, r, g, b):
    fill = slide.background.fill
    fill.solid()
    fill.fore_color.rgb = RGBColor(r, g, b)

def tb(slide, text, x, y, w, h, size=14, bold=False, color=(0x22,0x22,0x22),
        align=PP_ALIGN.LEFT, wrap=True, italic=False):
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = wrap
    tf.margin_left = Pt(2); tf.margin_right = Pt(2)
    tf.margin_top = Pt(2);  tf.margin_bottom = Pt(2)
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = RGBColor(*color)
    return shape

def rect(slide, x, y, w, h, r, g=None, b=None):
    if isinstance(r, (tuple, list)):
        r, g, b = r
    s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    s.fill.solid()
    s.fill.fore_color.rgb = RGBColor(r, g, b)
    s.line.fill.background()
    return s

def bullets(slide, items, x, y, w, h, size=12, color=(0x22,0x22,0x22), spacing=None):
    shape = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = shape.text_frame
    tf.word_wrap = True
    tf.margin_left = Pt(4); tf.margin_right = Pt(4)
    tf.margin_top = Pt(3); tf.margin_bottom = Pt(3)
    for i, item in enumerate(items):
        p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
        p.alignment = PP_ALIGN.LEFT
        if spacing:
            p.space_before = Pt(spacing)
        run = p.add_run()
        run.text = f"\u2022  {item}"
        run.font.size = Pt(size)
        run.font.color.rgb = RGBColor(*color)

# ─── palette ─────────────────────────────────────────────────────────────────
NAVY  = (0x1a, 0x35, 0x5e)
TEAL  = (0x00, 0x87, 0x8a)
GOLD  = (0xe8, 0x9c, 0x00)
PURP  = (0x6a, 0x1b, 0x9a)
RED   = (0xc0, 0x39, 0x2b)
GREEN = (0x1a, 0x7a, 0x3c)
WHITE = (0xff, 0xff, 0xff)
LIGHT = (0xf0, 0xf4, 0xf8)
DARK  = (0x1a, 0x1a, 0x2e)
CREAM = (0xfd, 0xf6, 0xe3)

# ─── image URLs ──────────────────────────────────────────────────────────────
IMG = {
    "case1"    : "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119857-1784209715647-lbqh82.jpg",
    "case2"    : "https://d361swluvexzqs.cloudfront.net/chats-attachments/1000119858-1784209716663-et6yt1.jpg",
    "gpp_text" : "https://cdn.orris.care/cdss_images/b88d809ca0120ae32e46203b8ff288abe96a7169955e7d2dd52396d05e8a7694.png",
    "gpp_body1": "https://media.post.rvohealth.io/wp-content/uploads/2022/12/pustular-psoriasis-body1.jpg",
    "gpp_body3": "https://media.post.rvohealth.io/wp-content/uploads/2022/12/pustular-psoriasis-body3.jpg",
    "impetigo" : "https://dermnetnz.org/assets/Uploads/severe-impetigo-infant.jpg",
    "ad"       : "https://dermnetnz.org/assets/Uploads/dermatitis/at-derm7.jpg",
    "scabies"  : "https://cdn.ncbi.nlm.nih.gov/pmc/blobs/336e/2861204/05a5b08f7bd0/ad-21-200-g001.jpg",
}
imgs = fetch(list(IMG.values()))

def pic(slide, key, x, y, w, h):
    url = IMG[key]
    if url in imgs:
        slide.shapes.add_picture(img_stream(imgs[url]), Inches(x), Inches(y), Inches(w), Inches(h))

# ─── build ────────────────────────────────────────────────────────────────────
prs = Presentation()
prs.slide_width  = Inches(13.333)
prs.slide_height = Inches(7.5)
BLK = prs.slide_layouts[6]

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 1 — TITLE
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *NAVY)
rect(s, 0, 0, 13.333, 0.18, *GOLD)
rect(s, 0, 7.32, 13.333, 0.18, *GOLD)

# Decorative left bar
rect(s, 0, 0.18, 0.35, 7.14, *TEAL)

tb(s, "IMD CASE REPORT", 0.7, 0.35, 12.0, 0.9,
   size=36, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

rect(s, 1.8, 1.35, 9.8, 0.07, *GOLD)

tb(s, "Generalized Pustular Psoriasis", 0.7, 1.52, 12.0, 1.0,
   size=30, bold=True, color=GOLD, align=PP_ALIGN.CENTER)

tb(s, "Von Zumbusch Pattern — Infantile Onset", 0.7, 2.55, 12.0, 0.6,
   size=18, color=(0xaa, 0xcc, 0xff), align=PP_ALIGN.CENTER)

tb(s, "P.M.  |  9-Month-Old Female  |  Davao City", 0.7, 3.15, 12.0, 0.5,
   size=15, color=(0xdd, 0xdd, 0xff), align=PP_ALIGN.CENTER)

# Case photos lower half
pic(s, "case1", 3.0, 3.8, 3.2, 3.2)
pic(s, "case2", 7.1, 3.8, 3.2, 3.2)

tb(s, "Department of Internal Medicine & Dermatology", 0.7, 7.1, 12.0, 0.25,
   size=10, color=(0x88, 0x99, 0xbb), align=PP_ALIGN.CENTER)

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 2 — CASE SUMMARY
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, *NAVY)
rect(s, 0, 0, 0.3, 1.05, *TEAL)
tb(s, "CASE SUMMARY", 0.5, 0.2, 12.0, 0.65, size=24, bold=True, color=WHITE)

# Patient profile
rect(s, 0.3, 1.15, 5.9, 1.7, *NAVY)
tb(s, "Patient Profile", 0.5, 1.22, 5.6, 0.38, size=12, bold=True, color=GOLD)
bullets(s, [
    "P.M., 9-month-old female",
    "Manuel Guianga, Davao City",
    "Chief complaint: Generalized erythematous patches with multiple pustules",
    "No prior personal/family history of psoriasis documented at admission",
], 0.4, 1.6, 5.8, 1.15, size=11, color=WHITE)

# Timeline
rect(s, 6.5, 1.15, 6.5, 1.7, *NAVY)
tb(s, "4-Week Progressive Timeline", 6.65, 1.22, 6.2, 0.38, size=12, bold=True, color=GOLD)
bullets(s, [
    "4 wks PTA: Pinpoint pustules on scalp vertex — co-amoxiclav + cetirizine given (no improvement)",
    "3 wks PTA: Lesions increased on scalp — cefaclor given (still no improvement)",
    "2 wks PTA: Spread to head & neck; prednisone + cetirizine given → lesions generalized + desquamation",
    "4 days PTA: Undocumented fever, referred to dermatologist — admitted",
], 6.5, 1.6, 6.4, 1.15, size=10.5, color=WHITE)

# PE heading
rect(s, 0.3, 2.98, 12.7, 0.42, *TEAL)
tb(s, "Physical Examination Findings", 0.5, 3.02, 12.0, 0.35, size=14, bold=True, color=WHITE)

bullets(s, [
    "Generalized erythematous coalescing patches with crusting — trunk, extremities, face, scalp",
    "Multiple pinpoint sterile-appearing pustules on erythematous base over extremities and trunk",
    "Areas of desquamation (fine flaky scaling) over limbs and trunk",
    "Scalp: erythema, crusting, scaling — initial site of onset (vertex), spreading centrifugally",
    "Fever (undocumented) present at time of admission",
    "No improvement despite antibiotics (co-amoxiclav, cefaclor) or systemic steroids (prednisone)",
], 0.4, 3.48, 7.5, 3.75, size=12.5, color=DARK)

pic(s, "case1", 8.1, 3.48, 2.4, 3.7)
pic(s, "case2", 10.7, 3.48, 2.4, 3.7)
tb(s, "Source: Attached case photographs", 8.1, 7.2, 5.0, 0.25, size=8, italic=True, color=(0x77,0x77,0x77))

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 3 — DIAGNOSIS
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, *PURP)
rect(s, 0, 0, 0.3, 1.05, *GOLD)
tb(s, "DIAGNOSIS: GENERALIZED PUSTULAR PSORIASIS (GPP) — VON ZUMBUSCH PATTERN",
   0.5, 0.2, 12.5, 0.65, size=20, bold=True, color=WHITE)

# Left panel
rect(s, 0.3, 1.15, 7.3, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.15, 7.3, 0.42, *PURP)
tb(s, "What is Generalized Pustular Psoriasis?", 0.45, 1.19, 7.1, 0.35, size=13, bold=True, color=WHITE)

bullets(s, [
    "Rare, potentially life-threatening neutrophilic dermatosis; a severe variant of psoriasis characterized by widespread, macroscopically visible STERILE pustules on erythematous skin",
    "Pathogenesis: Dysregulation of the IL-36 cytokine axis (IL-36α, IL-36β, IL-36γ) drives massive neutrophil infiltration into the epidermis, forming spongiform pustules of Kogoj (subcorneal/intraepidermal neutrophil collections)",
    "Genetics: IL36RN mutations (DITRA — Deficiency of IL-36 Receptor Antagonist) found in infantile GPP; CARD14 mutations (CAMPS) also implicated — often NO family history of plaque psoriasis in infants",
    "Triggers in infants: infections (URTI, bacterial), steroid withdrawal (this patient received prednisone → withdrawal may have precipitated flare), hypocalcemia, drugs",
    "Von Zumbusch pattern: Abrupt onset of generalized erythema → waves of sterile pustules → pustules coalesce into 'lakes of pus' → rupture → crusting → desquamation; FEVER and systemic illness",
    "Infantile GPP: Scalp, face, trunk, extremities all involved; can present WITHOUT preceding plaque psoriasis; more benign course than adult-onset with higher rates of spontaneous remission",
], 0.4, 1.65, 7.2, 4.2, size=11.5, color=DARK)

rect(s, 0.3, 5.87, 7.3, 0.42, *PURP)
tb(s, "Why This Case Fits GPP", 0.45, 5.91, 7.1, 0.35, size=12, bold=True, color=WHITE)
bullets(s, [
    "Sterile-appearing pustules on erythematous base → classic GPP morphology",
    "Scalp-first onset spreading centrifugally → typical infantile GPP pattern",
    "Worsening after prednisone → steroid withdrawal trigger",
    "FAILURE of antibiotics rules out primary bacterial infection as sole etiology",
    "Fever, systemic illness → von Zumbusch systemic involvement",
], 0.4, 6.35, 7.2, 1.1, size=11, color=DARK)

# Right panel — GPP images
rect(s, 7.8, 1.15, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.15, 5.2, 0.42, *PURP)
tb(s, "GPP — Reference Images", 7.95, 1.19, 5.0, 0.35, size=13, bold=True, color=WHITE)

pic(s, "gpp_text",  7.9, 1.68, 4.9, 2.1)
pic(s, "gpp_body3", 7.9, 3.85, 2.35, 3.15)
pic(s, "gpp_body1", 10.35, 3.85, 2.35, 3.15)

tb(s, "Top: Andrews' Diseases of the Skin (Fig. 10.9) — pustular psoriasis; Bottom: Healthline/RVO Health (healthline.com/health/psoriasis)", 7.9, 7.08, 5.2, 0.38, size=7.5, italic=True, color=(0x77,0x77,0x77))

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 4 — DIFFERENTIAL 1: Infantile Scabies
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, *RED)
rect(s, 0, 0, 0.3, 1.05, (0xff, 0xaa, 0x00))
tb(s, "DIFFERENTIAL DIAGNOSIS 1 — INFANTILE SCABIES", 0.5, 0.2, 12.5, 0.65, size=22, bold=True, color=WHITE)

rect(s, 0.3, 1.15, 7.3, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.15, 7.3, 0.42, *RED)
tb(s, "Scabies (Sarcoptes scabiei Infestation)", 0.45, 1.19, 7.1, 0.35, size=13, bold=True, color=WHITE)

bullets(s, [
    "Caused by Sarcoptes scabiei var. hominis burrowing into stratum corneum; intensely pruritic hypersensitivity reaction to mite proteins and fecal material",
    "Infantile form: Scalp, face, palms, soles, neck affected (unlike adult distribution); vesiculopustular lesions most common presentation in this age group",
    "Morphology: Vesicles, papules, nodules, pustules on erythematous base; characteristic serpiginous burrows (may be absent/obliterated); crusting common; desquamation may follow",
    "Transmission: Prolonged close contact; highly contagious within family/household",
    "Similarities to this case: Scalp onset, generalized vesiculopustules, crusting, desquamation, failure to respond to antibiotics, erythematous base",
    "Distinguishing features pointing AWAY from scabies: Sterile pustules (vs. mite-associated); no family contact history documented; worsening after prednisone (steroids worsen GPP via withdrawal but don't typically flare scabies this dramatically); skin scraping would be negative for mites",
    "Dermoscopy: 'Delta wing jet' or 'triangle' sign in scabies (mite body at end of burrow)",
    "Diagnosis: Skin scraping + mineral oil microscopy for mites, eggs, scybala",
], 0.4, 1.65, 7.2, 5.1, size=11.5, color=DARK)

rect(s, 0.3, 6.87, 7.3, 0.35, *RED)
tb(s, "Key distinction: Skin scraping for mites (negative in GPP; positive in scabies)", 0.45, 6.91, 7.1, 0.28, size=11, bold=True, color=WHITE)

rect(s, 7.8, 1.15, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.15, 5.2, 0.42, *RED)
tb(s, "Clinical Image — Infantile Scabies", 7.95, 1.19, 5.0, 0.35, size=13, bold=True, color=WHITE)
pic(s, "scabies", 8.1, 1.65, 4.65, 5.3)
tb(s, "Erythematous papules and pustules in 2-month-old infant with scabies", 7.9, 7.05, 5.2, 0.25, size=8.5, italic=True, color=(0x55,0x55,0x55))
tb(s, "Source: Park JM et al. Ann Dermatol 2009 (PMID 20548906); PMC2861204", 7.9, 7.3, 5.2, 0.2, size=7.5, italic=True, color=(0x99,0x99,0x99))

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 5 — DIFFERENTIAL 2: Impetigo
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, (0x9c, 0x64, 0x0a))
rect(s, 0, 0, 0.3, 1.05, *GOLD)
tb(s, "DIFFERENTIAL DIAGNOSIS 2 — IMPETIGO (SUPERFICIAL BACTERIAL SKIN INFECTION)", 0.5, 0.2, 12.5, 0.65, size=20, bold=True, color=WHITE)

rect(s, 0.3, 1.15, 7.3, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.15, 7.3, 0.42, (0x9c, 0x64, 0x0a))
tb(s, "Impetigo — Staphylococcal/Streptococcal", 0.45, 1.19, 7.1, 0.35, size=13, bold=True, color=WHITE)

bullets(s, [
    "Most common superficial bacterial skin infection in children; caused by Staphylococcus aureus (most common) and/or Streptococcus pyogenes",
    "Non-bullous (70%): Vesicles/pustules on erythematous base → rupture → thick honey-colored (golden) crusts; perioral and perinasal favored sites",
    "Bullous (30%): Flaccid bullae with clear-to-turbid yellow fluid, caused by staphylococcal exfoliative toxins A and B (ETA/ETB); common in neonates and infants",
    "Generalized in infants: Can spread widely; systemic complications (cellulitis, bacteremia, post-streptococcal glomerulonephritis)",
    "Similarities: Pustules on erythematous base, crusting, generalized spread, fever, scalp involvement, infant age",
    "Distinguishing features pointing AWAY from impetigo: 4-week progressive course unresponsive to MULTIPLE antibiotics (co-amoxiclav, then cefaclor) is strongly against primary impetigo; honey-colored crusting more prominent in impetigo than in GPP; GPP pustules are STERILE",
    "Note: Secondary impetiginization CAN occur on GPP lesions; both may coexist",
    "Treatment: Topical mupirocin (mild); systemic cloxacillin or cephalexin for widespread disease; culture and sensitivity if resistant",
], 0.4, 1.65, 7.2, 5.1, size=11.5, color=DARK)

rect(s, 0.3, 6.87, 7.3, 0.35, (0x9c, 0x64, 0x0a))
tb(s, "Key distinction: Honey-colored crusts; responds to appropriate antibiotics; STERILE pustule culture in GPP", 0.45, 6.91, 7.1, 0.28, size=10.5, bold=True, color=WHITE)

rect(s, 7.8, 1.15, 5.2, 6.1, 0xff, 0xff, 0xff)
rect(s, 7.8, 1.15, 5.2, 0.42, (0x9c, 0x64, 0x0a))
tb(s, "Clinical Image — Impetigo in Infant", 7.95, 1.19, 5.0, 0.35, size=13, bold=True, color=WHITE)
pic(s, "impetigo", 8.1, 1.65, 4.65, 5.3)
tb(s, "Honey-colored crusted erosions on erythematous base — characteristic non-bullous impetigo", 7.9, 7.05, 5.2, 0.25, size=8.5, italic=True, color=(0x55,0x55,0x55))
tb(s, "Source: DermNet NZ (dermnetnz.org/topics/impetigo)", 7.9, 7.3, 5.2, 0.2, size=7.5, italic=True, color=(0x99,0x99,0x99))

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 6 — DIFFERENTIAL 3: Atopic Dermatitis + Erythroderma
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, *GREEN)
rect(s, 0, 0, 0.3, 1.05, *TEAL)
tb(s, "DIFFERENTIAL DIAGNOSIS 3 — ATOPIC DERMATITIS / INFANTILE ERYTHRODERMA", 0.5, 0.2, 12.5, 0.65, size=20, bold=True, color=WHITE)

# Left: Atopic Dermatitis
rect(s, 0.3, 1.15, 6.1, 6.1, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.15, 6.1, 0.42, *GREEN)
tb(s, "Atopic Dermatitis (Infantile Eczema)", 0.45, 1.19, 5.9, 0.35, size=12, bold=True, color=WHITE)
bullets(s, [
    "Chronic relapsing inflammatory skin disease; peak onset 2–6 months of age; linked to FLG (filaggrin) mutations and atopic triad",
    "Morphology: Erythematous exudative plaques, intense pruritus, xerosis; vesicles, oozing, crusting in acute phase; NO primary pustules",
    "Distribution (infantile): Cheeks, scalp, forehead, extensor surfaces; trunk involved; diaper area SPARED (vs. psoriasis)",
    "Similarities: Scalp and face onset, erythema, crusting, infant age",
    "Distinguishing features: PUSTULES are NOT a primary feature — when present, they indicate secondary bacterial infection; responds (not worsens) to appropriate topical steroids; atopy history; typically remitting/relapsing with triggers (foods, allergens)",
    "The STEROID WORSENING in this case goes against atopic dermatitis — AD usually improves with steroids; GPP classically flares on steroid withdrawal",
], 0.4, 1.65, 6.0, 5.5, size=11, color=DARK)

# Right: Erythroderma
rect(s, 6.7, 1.15, 6.3, 6.1, 0xff, 0xff, 0xff)
rect(s, 6.7, 1.15, 6.3, 0.42, (0x0e, 0x5b, 0x6b))
tb(s, "Infantile Erythroderma (Erythrodermic Psoriasis)", 6.85, 1.19, 6.1, 0.35, size=11.5, bold=True, color=WHITE)
bullets(s, [
    "Erythroderma: Generalized erythema and scaling involving >90% body surface area — a severe, life-threatening dermatological emergency",
    "Erythrodermic psoriasis: Can present as the first manifestation of psoriasis (especially in infants); diffuse erythema with desquamation; may or may not have visible pustules",
    "Overlaps with GPP: Both can cause erythroderma + fever + systemic illness; differentiated by presence of discrete sterile pustules in GPP (von Zumbusch) vs. diffuse scaling alone in erythrodermic psoriasis",
    "Other causes of infantile erythroderma: Staphylococcal Scalded Skin Syndrome (SSSS), Netherton syndrome, Omenn syndrome, ichthyoses, Leiner disease",
    "SSSS resemblance: Staphylococcal exfoliative toxin causes diffuse erythema + superficial blistering/desquamation in infants; distinction — cleavage is subcorneal (Nikolsky sign positive); responds to anti-staph antibiotics",
    "Skin biopsy is KEY to distinguish GPP (spongiform pustules of Kogoj, Munro microabscesses) from other erythrodermas",
], 6.8, 1.65, 6.2, 5.5, size=11, color=DARK)

tb(s, "Clinical Image — Infantile Atopic Dermatitis", 7.95, 7.05, 5.0, 0.25, size=8, italic=True, color=(0x77,0x77,0x77))

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 7 — MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *LIGHT)
rect(s, 0, 0, 13.333, 1.05, *NAVY)
rect(s, 0, 0, 0.3, 1.05, *GOLD)
tb(s, "MANAGEMENT PLAN — INFANTILE GENERALIZED PUSTULAR PSORIASIS", 0.5, 0.2, 12.5, 0.65, size=22, bold=True, color=WHITE)

# Col 1: Diagnostics
rect(s, 0.3, 1.15, 4.0, 5.9, 0xff, 0xff, 0xff)
rect(s, 0.3, 1.15, 4.0, 0.42, *TEAL)
tb(s, "1. Confirm Diagnosis", 0.45, 1.19, 3.8, 0.35, size=13, bold=True, color=WHITE)
bullets(s, [
    "Skin biopsy: Spongiform pustules of Kogoj (neutrophil collections within epidermis), Munro microabscesses — pathognomonic for psoriasis",
    "Skin scraping: Mineral oil microscopy — NEGATIVE for Sarcoptes mites (rules out scabies)",
    "Pustule swab for culture: STERILE (no bacterial growth — rules out primary impetigo/bacterial infection)",
    "CBC: Leukocytosis (neutrophilia), elevated ESR/CRP (systemic inflammation marker)",
    "Metabolic panel: Serum calcium (hypocalcemia common in GPP), LFTs, albumin",
    "Genetic testing: IL36RN, CARD14 mutations (if available — aids diagnosis in infants without psoriasis history)",
    "Dermatoscopy: Look for delta-wing jet sign of scabies — expected to be ABSENT",
], 0.4, 1.65, 3.9, 5.35, size=11, color=DARK)

# Col 2: Pharmacological
rect(s, 4.57, 1.15, 4.4, 5.9, 0xff, 0xff, 0xff)
rect(s, 4.57, 1.15, 4.4, 0.42, *PURP)
tb(s, "2. Pharmacological Treatment", 4.72, 1.19, 4.2, 0.35, size=13, bold=True, color=WHITE)
bullets(s, [
    "FIRST-LINE (Systemic Retinoid):\nAcitretin 0.5–1 mg/kg/day orally — drug of choice in infantile GPP; rapid response; monitor LFTs, lipids, growth",
    "ALTERNATIVE 1:\nCyclosporine 1–5 mg/kg/day — effective even in infants as young as 3 months; calcineurin inhibitor; monitor BP and renal function",
    "ALTERNATIVE 2:\nMethotrexate 0.1–0.4 mg/kg/week — immunosuppressant; monitor CBC/LFTs; folic acid supplementation required",
    "BIOLOGICS (refractory/severe):\nSpesolimab (IL-36R antagonist) — FDA-approved for GPP flares; Infliximab (anti-TNF); Secukinumab (IL-17A); Etanercept — effective in children with IL36RN mutations",
    "AVOID: Systemic corticosteroids — withdrawal precipitates/worsens GPP flares (this patient's history illustrates this)",
    "Topical therapy: Emollients, bland ointments for skin barrier; topical calcineurin inhibitors for face; AVOID potent topical steroids",
    "Treat fever: Paracetamol 15 mg/kg/dose q4–6h PRN",
], 4.67, 1.65, 4.3, 5.35, size=10.5, color=DARK)

# Col 3: Supportive + Monitoring
rect(s, 9.2, 1.15, 3.85, 5.9, 0xff, 0xff, 0xff)
rect(s, 9.2, 1.15, 3.85, 0.42, *GOLD)
tb(s, "3. Supportive Care & Monitoring", 9.35, 1.19, 3.65, 0.35, size=12.5, bold=True, color=DARK)
bullets(s, [
    "Hospital admission: IV fluids for hydration, temperature regulation (neonatal/infant thermoregulation at risk in erythroderma)",
    "Nutritional support: High-protein diet; supplemental feeding if poor oral intake; correct hypocalcemia (IV calcium if needed)",
    "Wound care: Gentle skin cleansing; non-adherent dressings over denuded areas; prevent secondary infection",
    "Infection control: Wound swabs — treat confirmed bacterial superinfection with appropriate antibiotics (cloxacillin/cephalexin)",
    "STOP prednisone GRADUALLY (taper, do not abruptly withdraw) to prevent further GPP flare",
    "Monitor: LFTs, CBC, renal function, electrolytes regularly during systemic therapy",
    "Genetic counseling: Offer IL36RN/CARD14 testing; counsel family on recurrence risk",
    "Follow-up: Dermatology every 2–4 weeks; assess GPPASI score; long-term maintenance with low-dose acitretin may reduce recurrence",
    "Parent education: Avoid known triggers (infections, abrupt steroid stop); recognize early flare signs",
], 9.25, 1.65, 3.75, 5.35, size=10.5, color=DARK)

# ══════════════════════════════════════════════════════════════════════════════
# SLIDE 8 — REFERENCES
# ══════════════════════════════════════════════════════════════════════════════
s = prs.slides.add_slide(BLK)
bg(s, *NAVY)
rect(s, 0, 0, 13.333, 0.18, *GOLD)
rect(s, 0, 7.32, 13.333, 0.18, *GOLD)
rect(s, 0, 0.18, 0.3, 7.14, *TEAL)
tb(s, "REFERENCES", 0.5, 0.28, 12.0, 0.6, size=26, bold=True, color=WHITE)
rect(s, 0.5, 1.0, 12.333, 0.05, *GOLD)

refs = (
    "1.  Griffiths C, Barker J, Bleiker T, Chalmers R, Creamer D (Eds.). Rook's Dermatology (2-Volume Set, 5th ed., pp. 8.10–8.12). Wiley-Blackwell, 2023. ISBN: 9780702082252\n"
    "    [Generalized pustular psoriasis; IL-36 pathway; DITRA]\n\n"
    "2.  Callen JP, Greer KE (Eds.). Andrews' Diseases of the Skin: Clinical Dermatology (13th ed., pp. 231–233). Elsevier, 2020. ISBN: 9780323547536\n"
    "    [Generalized Pustular Psoriasis — von Zumbusch; acitretin as drug of choice]\n\n"
    "3.  Peng C, Chen L, Su J, et al. The update of treatment strategies in pediatrics with generalized pustular psoriasis in China. Pediatr Dermatol. 2023;40(5):784-793. PMC10509407\n\n"
    "4.  Smolen JS, Aletaha D, McInnes IB. Rheumatology (2-Volume Set, 2022). Elsevier. ISBN: 9780702081330\n"
    "    [IL-36RN mutations and GPP; DITRA autoinflammatory pathways]\n\n"
    "5.  Zhang L, Li Q, et al. Case report: Infantile generalized pustular psoriasis with IL36RN and CARD14 gene mutations. Front Genet. 2022;13:1035037. doi:10.3389/fgene.2022.1035037\n\n"
    "6.  Marczyk-Filipiak E, et al. The Role of Genetic Testing in Differential Diagnosis of Pustular Dermatoses: Pediatric GPP with IL36RN Variant. J Clin Med. 2026;15(9):3413. doi:10.3390/jcm15093413\n\n"
    "7.  Chen X, et al. IL-36RN gene: key insights into its role in pediatric pustular psoriasis pathogenesis and treatment. Front Pediatr. 2025. PMC11964088\n\n"
    "8.  Romiti R, et al. Generalized pustular psoriasis (von Zumbusch). An Bras Dermatol. 2022;97(1):63–74. PMC8799844. doi:10.1016/j.abd.2021.06.006\n\n"
    "9.  Arasiewicz H. Successful treatment of a child's GPP with adalimumab + low-dose acitretin. Postepy Dermatol Alergol. 2023;40(3). termedia.pl\n\n"
    "10. DermNet NZ. Pustular psoriasis. Retrieved July 2026. https://dermnetnz.org/topics/pustular-psoriasis\n\n"
    "11. Red Book 2021: Report of the Committee on Infectious Diseases (32nd ed.). AAP. ISBN: 9781610025218 [Scabies — differential diagnosis]\n\n"
    "12. Fitzpatrick's Dermatology (9th ed.). McGraw-Hill. ISBN: 9780071837781 [Pustular psoriasis chapter; IL-36RN and DITRA]\n\n"
    "13. Healthline / RVO Health. Pustular psoriasis images. https://www.healthline.com/health/psoriasis/pustular-psoriasis-pictures"
)

tb(s, refs, 0.5, 1.12, 12.333, 6.15, size=10, color=(0xcc, 0xdd, 0xff), wrap=True)

# ─── save ─────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/imd-case-scabies/IMD_Case_GPP_Pustular_Psoriasis.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
    f.write(buf.getvalue())
print(f"Saved: {out}")
Running Command

cd /tmp/workspace/imd-case-scabies && python build_gpp_pptx.py 2>&1

The revised presentation is ready:

IMD Case GPP Pustular Psoriasis

Presentation · PPTX


Here is a full summary of the updated 8-slide deck:

Slide 1 — Title IMD Case Report: Generalized Pustular Psoriasis, Von Zumbusch Pattern — Infantile Onset, with case photos
Slide 2 — Case Summary Patient profile, 4-week timeline (including the key detail that prednisone worsened the eruption — a hallmark of GPP), and PE findings with photos
Slide 3 — Diagnosis: GPP (Von Zumbusch Pattern)
  • Pathogenesis: IL-36 cytokine axis dysregulation → massive neutrophil infiltration → spongiform pustules of Kogoj
  • Genetics: IL36RN mutations (DITRA), CARD14 (CAMPS) — infantile GPP often presents WITHOUT plaque psoriasis or family history
  • Triggers: infections, steroid withdrawal (explains this patient's flare after prednisone), hypocalcemia
  • Von Zumbusch sequence: erythema → sterile pustular waves → "lakes of pus" → rupture → crusting → desquamation + fever
  • Reference images from Andrews' Diseases of the Skin and Healthline
Slide 4 — Differential 1: Infantile Scabies
  • Sarcoptes scabiei, infantile distribution (scalp, face, palms, soles), vesiculopustular morphology
  • Similarities and distinguishing features (sterile pustules in GPP vs. mite on scraping in scabies; delta-wing jet dermoscopy sign)
  • Clinical image from PMC (PMID 20548906)
Slide 5 — Differential 2: Impetigo
  • S. aureus/S. pyogenes, honey-colored crusting, bullous vs. non-bullous
  • Key distinction: 4-week failure of co-amoxiclav AND cefaclor rules out primary impetigo; GPP pustules are sterile on culture
  • Clinical image from DermNet NZ
Slide 6 — Differential 3: Atopic Dermatitis / Infantile Erythroderma
  • AD: No primary pustules, improves (not worsens) with steroids, atopy history
  • Erythrodermic psoriasis vs. GPP; SSSS (Staphylococcal Scalded Skin Syndrome) also discussed; skin biopsy is the key differentiator
Slide 7 — Management (3 columns)
  • Diagnostics: Skin biopsy (spongiform pustules of Kogoj), sterile pustule culture, CBC, Ca²⁺, genetic testing (IL36RN/CARD14)
  • Pharmacological: Acitretin (1st line), cyclosporine, methotrexate, biologics (spesolimab, infliximab, etanercept) for refractory cases; AVOID systemic corticosteroids (withdrawal triggers flares); gradual taper of existing prednisone
  • Supportive: Admission, IV fluids, calcium correction, wound care, infection control, parent education on triggers
Slide 8 — References 13 references including Rook's Dermatology, Andrews' Diseases of the Skin, Fitzpatrick's Dermatology, Frontiers in Genetics (infantile GPP case report), PMC review papers, and DermNet NZ
This is a shared conversation. Sign in to Orris to start your own chat.