Classification of pustular psoriasis
pustular psoriasis classification
pustular psoriasis types von Zumbusch palmoplantar

Clinical photographs of a postpartum patient presenting with Generalized Pustular Psoriasis (GPP), also known as von Zumbusch psoriasis. Image (A) shows the abdomen and upper thighs of a patient in a hospital setting, demonstrating diffuse, confluent erythema with scattered monomorphic pustules. A prominent area of dark, possibly necrotic or heavily crusting, irregular discoloration is visible on the anterior right thigh. Surgical dressings are present on the abdomen. Image (B) provides a detailed view of the patient's back, illustrating widespread, intense erythema. Numerous small, sterile, yellowish-white pustules are distributed across the back and flanks, some of which are coalescing into larger lakes of pus. The skin appears severely inflamed and irritated. These visuals demonstrate the acute inflammatory nature of GPP, a rare and severe form of psoriasis characterized by sudden eruptions of sterile pustules on a background of intense erythema, often associated with systemic symptoms and triggered in some cases by the postpartum period.

Clinical photograph of the lower extremities demonstrating generalized pustular psoriasis (von Zumbusch type). The image shows extensive, confluent erythematous plaques covering large areas of the thighs and legs. Numerous small, sterile, non-follicular pustules are visible, often coalescing into larger 'lakes of pus.' Notable features include significant epidermal disruption characterized by widespread desquamation, peeling skin, and areas of denuded epidermis, particularly prominent on the anterior thighs and knees. Some lesions exhibit an annular or circinate morphology with active pustulation at the advancing edges and central clearing or scaling, representing different stages of lesion evolution. The clinical presentation highlights severe cutaneous inflammation and a compromised skin barrier, which are hallmarks of a GPP flare. This visual is essential for medical students and dermatologists to differentiate between stable plaque psoriasis and acute pustular variants, as well as considering differential diagnoses like Acute Generalized Exanthematous Pustulosis (AGEP).

Clinical photograph of the posterior aspect of the lower limbs, specifically the popliteal fossae, demonstrating the early clinical presentation of generalized pustular psoriasis (GPP). The image shows well-demarcated, erythematous patches on both legs. Superimposed on the inflammatory red base are clusters of small, discrete, yellowish-white sterile pustules. The lesions are localized within the skin folds of the knees, exhibiting a symmetric distribution. The surrounding skin appears relatively normal, though some mild edema may be present within the plaques. This visual serves as an educational example of the initial eruptive phase of Von Zumbusch psoriasis, highlighting the pathognomonic feature of non-follicular pustulation on an erythematous background. The morphology and location are critical for distinguishing this systemic inflammatory condition from plaque-type psoriasis or acute bacterial infections like cellulitis.

This is a macroscopic dermatologic clinical photograph illustrating a generalized pustular eruption consistent with active generalized pustular psoriasis (GPP, von Zumbusch type). Imaging modality: Dermatology clinical photography, close‑up macro view of the skin surface. Specimen: Skin surface; anatomical region primarily trunk and proximal limbs with diffuse involvement. The image shows numerous superficial sterile pustules embedded in an erythematous, moist to crusted plaque‑like background. Pustules are nonfollicular, variably sized, some coalescing into larger lakes of pus, with peripheral pale halos. The surrounding skin is markedly inflamed with diffuse erythema, edema, and fine-scale desquamation; subtle fissuring may appear at flexural regions along the periphery. The pattern is generalized and widespread with symmetric distribution, lacking a discrete lesion. No visible mucosal involvement is shown in this field; however, mucosal dryness and systemic symptoms may accompany GPP. Clinically, this presentation prompts urgent assessment for fever, electrolyte disturbances, and potential systemic involvement (hepatic, renal, hematologic). Diagnostic significance: hallmark pustular eruptions on erythema suggest GPP; differential includes acute generalized exanthematous pustulosis (AGEP) and other pustular psoriasis variants; correlate with history, laboratory data, and biopsy if indicated. Potential use cases: dermatology education, image-based differential diagnosis practice, AI triage reference, and teaching aid for recognizing pustular psoriasis presentations.

| Entity | Gene/Mechanism | Key Features |
|---|---|---|
| DITRA | IL36RN (IL-36 receptor antagonist deficiency) | Recurrent GPP flares, fever, systemic inflammation |
| DIRA | IL1RN (IL-1 receptor antagonist deficiency) | Neonatal onset, bone involvement |
| CARD14-associated pustular psoriasis (CARP) | CARD14 mutation | GPP/erythrodermic psoriasis; NF-kB pathway activation |
| AP1S3-mediated pustular psoriasis | AP1S3 mutation | Defective autophagy, TLR3 pathway activation |
| Category | Subtype | Distribution | Systemic Involvement |
|---|---|---|---|
| Generalized | Von Zumbusch | Generalized | Severe (fever, hypocalcemia) |
| Annular/Circinate | Generalized, annular | Mild-moderate | |
| Exanthematic | Generalized | Absent | |
| Within plaques | Localized to plaques | Absent | |
| Impetigo herpetiformis | Generalized (pregnancy) | Hypocalcemia common | |
| Localized | Palmoplantar pustulosis | Palms and soles | Rare (SAPHO) |
| Acrodermatitis continua | Distal digits | Absent (unless generalized) |
Question on psoriasis
Make slide show of vzv hzv mcv based on iadvl rooks bolognia and fitzpatricks
varicella chickenpox vesicles dewdrop on rose petal

This clinical photograph shows a pediatric patient with a widespread, pleomorphic rash consistent with Varicella-Zoster Virus infection. The lesions are distributed across the face, neck, and upper extremities. The image illustrates the characteristic 'dewdrop on a rose petal' appearance in various stages of evolution, including erythematous macules, papules, clear vesicles, and some lesions that have begun to umbilicate or form crusts. On the face and perioral region, several lesions have become confluent, forming larger, crusting patches. The distribution is centripetal and diffuse, highlighting the hallmark clinical presentation of chickenpox where lesions in multiple different stages of development (macules to crusts) coexist simultaneously. This visual is an essential educational example for dermatology and infectious diseases, demonstrating typical primary varicella in an immunocompromised or high-risk clinical context.

This clinical photograph shows a close-up of a patient's forehead, illustrating a hallmark dermatological sign of Varicella-Zoster Virus (chickenpox). The primary lesion, indicated by a black arrow, is a small, clear, fluid-filled vesicle situated atop a circular, erythematous base. This specific morphology is classically described in medical education as a 'dewdrop on a rose petal.' The surrounding skin displays secondary features including smaller, less defined erythematous papules and tiny hyperpigmented spots. The lesion is indicative of the early vesicular stage of a varicella infection, often preceded by systemic symptoms like fever. The photograph serves as an educational tool for recognizing primary skin lesions (vesicles), understanding their morphology, and identifying the clinical presentation of common viral exanthems in adult populations.
herpes zoster dermatomal vesicular rash shingles

This composite of three clinical photographs (A–C) demonstrates the classic dermatomal distribution of Herpes Zoster (shingles) in an adult patient. Image A shows a posterior view of the lower back and flank, where a cluster of erythematous, vesicular lesions is visible. The rash follows a clear unilateral, oblique path across the skin surface, typical of a lumbar spinal nerve dermatome (specifically L2-L3). Images B and C provide close-up views of the same patient’s thigh, showing additional scattered clusters of small, fluid-filled vesicles on an erythematous base. The lesions exhibit characteristic morphology: grouped papulovesicles that appear in various stages of evolution. The clinical presentation is highly suggestive of varicella-zoster virus reactivation, correlating with the patient's reported radicular pain and motor weakness. The distribution is strictly unilateral, respecting the midline, which is a hallmark diagnostic feature of this condition.

A clinical photograph of the left upper extremity demonstrating a vesicular and bullous eruption characteristic of Herpes Zoster (shingles). The rash exhibits a dermatomal distribution, featuring clusters of lesions on an erythematous base. Morphologically, the lesions range from small, grouped vesicles filled with clear fluid to larger, tense, dome-shaped bullae measuring over one centimeter. Several lesions appear ruptured or umbilicated, resulting in shallow erosions and crusting. The surrounding skin shows signs of inflammation and localized hyperemia. This visual presentation is indicative of Varicella-Zoster Virus (VZV) reactivation, illustrating the classic presentation of painful cutaneous lesions confined to a specific nerve root territory (C5-C6), often associated with neuropathic pain and potential motor weakness in the affected limb.
molluscum contagiosum umbilicated papules skin

This is a clinical dermatology photograph illustrating Molluscum contagiosum. Modality and technique: clinical photography; perspective: close-up, surface view of the skin. Anatomical context: cutaneous epidermis, likely trunk or extremities. The image shows multiple small, discrete, dome-shaped papules, 2–5 mm in diameter, with smooth, slightly shiny surfaces and a central umbilication. Lesions are flesh-colored to pale pink against normal skin; surrounding skin may be mildly erythematous in susceptible individuals. Papules appear clustered in groups, consistent with localized contagion and autoinoculation. There is no crusting, scaling, vesiculation, or pustulation evident. Overall, the pattern is highly suggestive of molluscum contagiosum, a benign poxvirus infection. If histology were obtained, one would expect Henderson-Patterson bodies within keratinocytes. Clinically, molluscum presents as painless, pearly, umbilicated papules, most common in children but also seen in adults with atopy or immunosuppression. Differential considerations include verruca vulgaris, epidermal inclusion cysts, milia, syringomas, and folliculitis; central umbilication helps distinguish molluscum. Clinical significance: contagious via direct contact and fomites; usually self-limited but treated in persistent or symptomatic cases. This image is suitable for dermatology education, visual diagnosis training, pediatric skin disease curricula, and clinical decision support. Endemic in many regions; consider screening for other pediatric skin infections.

Clinical photography of cutaneous lesions showing multiple umbilicated papules consistent with molluscum contagiosum. The image presents a close-up, surface-view of pink to flesh-colored domed papules, approximately 2–4 mm in diameter, arranged in a multifocal cluster on exposed trunk skin. Each lesion displays a central dimple or crater-like indentation with a smooth, slightly shiny surface and no overt crusting or scale. The surrounding dermis appears non-inflamed, with fine skin texture and visible adnexal pores; mild hyperemia is not prominent. These features are characteristic of a benign poxvirus infection in which keratinocytes harbor intracytoplasmic molluscum bodies; histology would reveal eosinophilic cytoplasmic inclusions. Clinically this pattern supports molluscum contagiosum as a primary diagnosis, though verruca vulgaris or epidermal inclusion lesions can be included in the differential. The diagnostic significance lies in recognizing contagious cutaneous lesions that may self-resolve yet transmit infection, particularly in children or immunocompromised adults; management may involve observation, curettage, or topical ablative therapies. The image is useful for educational purposes, tele-dermatology triage, and pattern-recognition training, enabling learners to distinguish umbilicated papules from other papular eruptions. Potential clinical use cases include screening, diagnosis confirmation via biopsy/PCR if uncertain, and documenting treatment response.
mkdir -p /tmp/workspace/vzv-hzv-mcv-slides && ls /tmp/workspace/vzv-hzv-mcv-slides/
~/vzv-hzv-mcv-slides/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
from pptx.oxml.ns import qn
from lxml import etree
# ── colour palette ──────────────────────────────────────────────────────────
C_DARK_BLUE = RGBColor(0x1A, 0x3A, 0x5C) # deep navy – title bg
C_MID_BLUE = RGBColor(0x1E, 0x6B, 0xA8) # accent bar
C_LIGHT_BLUE = RGBColor(0xD6, 0xEA, 0xF8) # subtle bg
C_ORANGE = RGBColor(0xE8, 0x7C, 0x1E) # highlight/accent
C_WHITE = RGBColor(0xFF, 0xFF, 0xFF)
C_DARK_TEXT = RGBColor(0x1A, 0x1A, 0x1A)
C_GREY = RGBColor(0xF2, 0xF4, 0xF6) # body bg
C_GREEN_H = RGBColor(0x1A, 0x7A, 0x4A) # VZV section colour
C_PURPLE_H = RGBColor(0x6A, 0x1A, 0x7A) # HZV section colour
C_TEAL_H = RGBColor(0x1A, 0x6A, 0x6A) # MCV section colour
W = Inches(13.333)
H = Inches(7.5)
prs = Presentation()
prs.slide_width = W
prs.slide_height = H
blank = prs.slide_layouts[6]
# ─────────────────────────────────────────────────────────────────────────────
# HELPER FUNCTIONS
# ─────────────────────────────────────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb, alpha=None):
shape = slide.shapes.add_shape(1, x, y, w, h) # MSO_SHAPE_TYPE.RECTANGLE = 1
shape.line.fill.background() # no border
shape.line.width = 0
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
return shape
def add_text(slide, text, x, y, w, h,
font_size=18, bold=False, italic=False,
color=C_DARK_TEXT, align=PP_ALIGN.LEFT,
wrap=True, v_anchor=MSO_ANCHOR.TOP, font_name="Calibri"):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Inches(0.05)
tf.margin_right = Inches(0.05)
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(font_size)
run.font.bold = bold
run.font.italic= italic
run.font.color.rgb = color
run.font.name = font_name
return tb
def add_bullet_slide(slide, title_text, bullets, section_color,
image_url=None, source_line=""):
"""Full-featured content slide with coloured header, bullets, optional image."""
# background
add_rect(slide, 0, 0, W, H, C_GREY)
# header band
add_rect(slide, 0, 0, W, Inches(1.0), section_color)
# title text
add_text(slide, title_text,
Inches(0.3), Inches(0.08), Inches(12.5), Inches(0.85),
font_size=28, bold=True, color=C_WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# accent line
add_rect(slide, 0, Inches(1.0), W, Inches(0.05), C_ORANGE)
# decide layout
if image_url:
body_w = Inches(7.5)
img_x = Inches(7.8)
img_w = Inches(5.2)
img_y = Inches(1.15)
img_h = Inches(5.9)
else:
body_w = Inches(12.8)
# bullets
tb = slide.shapes.add_textbox(Inches(0.3), Inches(1.15), body_w, Inches(5.9))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = MSO_ANCHOR.TOP
tf.margin_left = Inches(0.1)
tf.margin_right = Inches(0.1)
tf.margin_top = Pt(4)
tf.margin_bottom = Pt(4)
first = True
for item in bullets:
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
# determine level (tuple = (level, text, bold_flag))
if isinstance(item, tuple):
level, text, is_bold = item
else:
level, text, is_bold = 0, item, False
p.level = level
p.space_before = Pt(2)
p.space_after = Pt(1)
# bullet symbol
pPr = p._pPr if p._pPr is not None else p._p.get_or_add_pPr()
buChar = etree.SubElement(pPr, qn('a:buChar'))
buChar.set('char', '•' if level == 0 else '–')
run = p.add_run()
run.text = text
run.font.size = Pt(16 if level == 0 else 14)
run.font.bold = is_bold
run.font.color.rgb = C_DARK_TEXT
run.font.name = "Calibri"
# embed image
if image_url:
try:
result = json.loads(subprocess.check_output(
["python", "/tmp/skills/shared/scripts/fetch_images.py", image_url],
timeout=30
))
img_data = result[0]
if img_data.get("base64"):
raw = base64.b64decode(img_data["base64"].split(",", 1)[-1])
slide.shapes.add_picture(BytesIO(raw), img_x, img_y, img_w, img_h)
except Exception as e:
print(f" [image skip] {e}")
# source footnote
if source_line:
add_text(slide, source_line,
Inches(0.3), Inches(7.15), Inches(12.7), Inches(0.28),
font_size=10, italic=True, color=RGBColor(0x55,0x55,0x55))
def make_section_divider(section_title, subtitle, color):
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, W, H, color)
add_rect(slide, 0, Inches(3.1), W, Inches(0.08), C_WHITE)
add_text(slide, section_title,
Inches(1), Inches(2.1), Inches(11.3), Inches(1.2),
font_size=52, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, subtitle,
Inches(1), Inches(3.3), Inches(11.3), Inches(0.7),
font_size=22, italic=True, color=RGBColor(0xCC,0xE5,0xFF),
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
def content_slide(title, bullets, section_color, image_url=None, source=""):
slide = prs.slides.add_slide(blank)
add_bullet_slide(slide, title, bullets, section_color, image_url, source)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 1: TITLE SLIDE
# ─────────────────────────────────────────────────────────────────────────────
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, W, H, C_DARK_BLUE)
add_rect(slide, 0, Inches(5.8), W, Inches(0.08), C_ORANGE)
add_text(slide, "Viral Dermatoses",
Inches(1), Inches(1.2), Inches(11.3), Inches(1.4),
font_size=58, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, "Varicella-Zoster Virus | Herpes Zoster | Molluscum Contagiosum",
Inches(1), Inches(2.8), Inches(11.3), Inches(0.8),
font_size=24, color=RGBColor(0xAD,0xD8,0xE6), align=PP_ALIGN.CENTER)
add_text(slide, "Based on: Fitzpatrick's Dermatology • Dermatology 5e (Bolognia) • Andrews' Diseases of the Skin • IADVL Textbook of Dermatology",
Inches(1), Inches(3.8), Inches(11.3), Inches(0.6),
font_size=14, italic=True, color=RGBColor(0x88,0xBB,0xDD), align=PP_ALIGN.CENTER)
add_text(slide, "Target: PG / DNB Dermatology",
Inches(1), Inches(6.9), Inches(11.3), Inches(0.4),
font_size=13, color=RGBColor(0x77,0xAA,0xCC), align=PP_ALIGN.CENTER)
# ─────────────────────────────────────────────────────────────────────────────
# ══════════ SECTION 1 — VZV (VARICELLA) ════════════════════════════════════
# ─────────────────────────────────────────────────────────────────────────────
make_section_divider("VARICELLA-ZOSTER VIRUS (VZV)",
"Chickenpox — Primary Infection",
C_GREEN_H)
SRC_VZV = "Source: Fitzpatrick's Dermatology 8e, Ch. 165 | Dermatology 5e (Bolognia) | Andrews' Diseases of the Skin"
content_slide("VZV — Aetiology & Pathogenesis", [
(0, "Causative agent: Varicella-Zoster Virus (VZV), Human Herpesvirus 3 (HHV-3)", True),
(1, "dsDNA virus; Herpesviridae family; alpha-herpesvirus subfamily", False),
(1, "Single serotype; humans are the only reservoir", False),
(0, "Two distinct clinical diseases from the same virus:", True),
(1, "Varicella (chickenpox) — primary exogenous infection in susceptible host", False),
(1, "Herpes Zoster (shingles) — reactivation of latent VZV from dorsal root / cranial nerve ganglia", False),
(0, "Transmission: Highly contagious via airborne respiratory droplets and direct vesicle contact", True),
(1, "Secondary attack rate in susceptible household contacts: 60–90%", False),
(1, "Infectious from 1–2 days before rash until all lesions crusted (~5–7 days)", False),
(0, "Pathogenesis: Virus replicates in respiratory mucosa → primary viraemia → seeding of reticuloendothelial system → secondary viraemia → skin lesions", True),
(0, "After primary infection, VZV establishes latency in dorsal root ganglia (cranial nerve & spinal ganglia)", True),
], C_GREEN_H,
source=SRC_VZV)
content_slide("VZV — Epidemiology", [
(0, "Global distribution; endemic in all countries", True),
(0, "Peak incidence: ages 5–9 years in unvaccinated populations", True),
(0, "Seasonal: late winter and spring in temperate zones", True),
(0, "High-risk groups for severe disease:", True),
(1, "Immunocompromised (HIV, transplant, malignancy, steroids)", False),
(1, "Adults (more severe than children)", False),
(1, "Neonates (if mother develops varicella within 5 days before to 2 days after delivery)", False),
(1, "Pregnant women (varicella pneumonia risk ~10–20× higher)", False),
(0, "Congenital varicella syndrome: occurs with maternal infection in 1st–2nd trimester", True),
(1, "Features: limb hypoplasia, skin scarring (cicatricial), eye defects, CNS abnormalities", False),
(0, "Vaccine: Live attenuated Oka strain — highly effective; 2-dose schedule recommended", True),
], C_GREEN_H,
source=SRC_VZV)
content_slide("VZV — Clinical Features (Varicella)", [
(0, "Incubation period: 10–21 days (average 14–16 days)", True),
(0, "Prodrome (1–2 days): low-grade fever, malaise, headache (more prominent in adults)", True),
(0, "Exanthem — hallmark features:", True),
(1, "'Dewdrops on rose petals' — clear vesicle on erythematous base", False),
(1, "Centripetal distribution: trunk > face > extremities", False),
(1, "Lesions in ALL stages simultaneously: macules → papules → vesicles → pustules → crusts", False),
(1, "Mucous membranes affected (oral, vaginal, conjunctival)", False),
(1, "Pruritus: most distressing symptom", False),
(0, "Duration: new crops for 3–5 days; complete crusting by day 7–10", True),
(0, "Adults: more profuse rash, higher fever, longer constitutional symptoms, higher complication rate", True),
(0, "Breakthrough varicella (in vaccinees): milder — <60 lesions, mostly maculopapular, fewer vesicles", True),
], C_GREEN_H,
image_url="https://cdn.orris.care/cdss_images/pmc_clinical_VQA_22a3d8281d35688dae3eeddf2c856712d0bb8350087c738a11e74ba325415d5d.jpg",
source=SRC_VZV)
content_slide("VZV — Complications", [
(0, "Bacterial superinfection (most common): Staph/Strep — impetigo, cellulitis, necrotizing fasciitis, septicaemia", True),
(1, "Group A Streptococcal invasive infection — particularly virulent, occurs within 2 weeks of rash", False),
(0, "Varicella pneumonia:", True),
(1, "Major complication in adults — occurs in ~1/400 adults", False),
(1, "Features: cough, dyspnoea, tachypnoea, fever, pleuritic pain; CXR shows diffuse nodular shadowing", False),
(0, "CNS complications:", True),
(1, "Cerebellar ataxia — most common CNS complication in children (benign, self-limiting)", False),
(1, "Encephalitis — 1–2/10,000; may be severe", False),
(1, "Reye syndrome (rare now) — associated with aspirin use in children", False),
(0, "Haemorrhagic varicella: in immunocompromised — haemorrhagic lesions, DIC, high mortality", True),
(0, "Congenital varicella syndrome (1st/2nd trimester): limb hypoplasia, cicatricial scarring, eye & CNS defects", True),
(0, "Neonatal varicella: severe if mother develops rash within 5 days before – 2 days after delivery; mortality up to 30%", True),
], C_GREEN_H,
source=SRC_VZV)
content_slide("VZV — Diagnosis & Treatment", [
(0, "DIAGNOSIS:", True),
(1, "Clinical: characteristic 'dewdrop on rose petal' lesions in all stages", False),
(1, "Tzanck smear: multinucleated giant cells (NOT specific — also positive in HSV)", False),
(1, "PCR: most sensitive & specific (vesicle fluid, scabs, CSF)", False),
(1, "DFA/IFA: rapid antigen detection", False),
(1, "Serology: VZV IgM/IgG for immune status", False),
(0, "TREATMENT:", True),
(1, "Uncomplicated childhood varicella: Symptomatic — antihistamines, tepid baths, calamine; AVOID aspirin", False),
(1, "Antiviral indications: adults, adolescents, neonates, immunocompromised, severe disease, secondary household cases", False),
(1, "Acyclovir 800 mg 5×/day for 5–7 days (PO) — start within 24 hrs of rash onset", False),
(1, "Valacyclovir 1g TDS or Famciclovir 500 mg TDS for 7 days (better bioavailability)", False),
(1, "IV Acyclovir 10–12 mg/kg TDS for immunocompromised / severe disease", False),
(0, "PREVENTION:", True),
(1, "Varicella vaccine (Oka strain): 2-dose schedule (12–15 months; 4–6 years)", False),
(1, "VZIG (Varicella-Zoster Immunoglobulin): within 96 hrs for high-risk exposed susceptible contacts", False),
], C_GREEN_H,
source=SRC_VZV)
# ─────────────────────────────────────────────────────────────────────────────
# ══════════ SECTION 2 — HERPES ZOSTER ══════════════════════════════════════
# ─────────────────────────────────────────────────────────────────────────────
make_section_divider("HERPES ZOSTER (HZV)",
"Shingles — Reactivation of Latent VZV",
C_PURPLE_H)
SRC_HZV = "Source: Fitzpatrick's Dermatology 8e, Ch. 165 | Dermatology 5e (Bolognia) | Andrews' Diseases of the Skin"
content_slide("Herpes Zoster — Aetiology & Pathogenesis", [
(0, "Caused by reactivation of latent VZV from dorsal root / cranial nerve ganglia", True),
(0, "Latency established during primary varicella infection; VZV persists lifelong in sensory neurons", True),
(0, "Reactivation triggers (VZV-specific cell-mediated immunity declines):", True),
(1, "Increasing age (most important risk factor)", False),
(1, "Immunosuppression: HIV, malignancy (esp. lymphoma), transplant, steroids, biologics", False),
(1, "Physical trauma, surgery, stress", False),
(0, "Pathogenesis of reactivation:", True),
(1, "VZV replicates in ganglion → travels via sensory nerve to skin → vesicular dermatomal eruption", False),
(1, "NOT via viraemia — hence strict dermatomal unilateral distribution", False),
(1, "Ganglionic necrosis + haemorrhage → severe neuronal damage → pain", False),
(0, "Incidence: 2–5 per 1000 person-years; rises to 8–12/1000 in elderly (>70 yrs)", True),
(0, "Lifetime risk: ~30% in general population; up to 50% in immunocompromised", True),
], C_PURPLE_H,
source=SRC_HZV)
content_slide("Herpes Zoster — Clinical Features", [
(0, "Prodrome (2–4 days before rash): dermatomal burning, shooting pain, tingling, pruritus, hyperaesthesia", True),
(1, "Pre-eruptive headache, malaise, photophobia may occur", False),
(0, "Rash:", True),
(1, "Unilateral, dermatomal — clustered erythematous papules → vesicles → pustules → crusts", False),
(1, "Never crosses midline in immunocompetent patients", False),
(1, "Most common dermatomes: T3–L3 (thoracic most common, esp. T4–T6)", False),
(1, "Ophthalmic (V1 — Herpes Zoster Ophthalmicus): ~10–25% of all HZ cases", False),
(0, "Zoster sine herpete: dermatomal pain WITHOUT skin lesions (difficult to diagnose)", True),
(0, "Disseminated zoster: >20 vesicles outside primary/adjacent dermatomes — suggests immunosuppression", True),
(0, "Special syndromes:", True),
(1, "Ramsay Hunt syndrome: geniculate ganglion (CN VII) — ear pain, facial palsy, vesicles in ear/mouth", False),
(1, "Herpes Zoster Ophthalmicus: Hutchinson sign (nasociliary n.) predicts ocular involvement", False),
(1, "Motor zoster: rare; segmental muscle weakness from motor nerve involvement", False),
], C_PURPLE_H,
image_url="https://cdn.orris.care/cdss_images/pmc_clinical_VQA_456dad297306772a0d79de49baac9a2a046a4dbc1888d042dd77a0a13b39e109.jpg",
source=SRC_HZV)
content_slide("Herpes Zoster — Complications", [
(0, "Postherpetic Neuralgia (PHN) — most important complication:", True),
(1, "Pain persisting ≥30 days after rash onset (some define as ≥90 days)", False),
(1, "Incidence: ~9–34% overall; rises steeply with age (13% at 60–64 yrs → 21% at 80–84 yrs)", False),
(1, "Types: constant burning/aching, intermittent lancinating, allodynia (present in ~90% of PHN)", False),
(1, "Associated with: age, severe acute pain, prodromal pain, extensive rash, sensory deficits", False),
(0, "Ocular: keratitis, uveitis, acute retinal necrosis, glaucoma (in HZO)", True),
(0, "Neurological:", True),
(1, "CNS vasculitis — granulomatous angiitis of cerebral arteries → stroke (ophthalmic HZ → contralateral hemiplegia)", False),
(1, "Meningoencephalitis; myelitis; peripheral motor neuropathy", False),
(0, "Bacterial superinfection, scarring, post-inflammatory pigmentation", True),
(0, "Visceral complications (immunocompromised): pneumonitis, hepatitis, oesophagitis, haemorrhagic cystitis", True),
(0, "Cutaneous dissemination (immunocompromised): >20 extra-dermatomal vesicles; can be fatal", True),
(0, "Ramsay Hunt syndrome: facial nerve palsy + ear vesicles + sensorineural hearing loss + tinnitus/vertigo", True),
], C_PURPLE_H,
source=SRC_HZV)
content_slide("Herpes Zoster — Diagnosis & Treatment", [
(0, "DIAGNOSIS:", True),
(1, "Primarily clinical: unilateral dermatomal pain + vesicular eruption", False),
(1, "Tzanck smear: multinucleated giant cells (not virus-specific)", False),
(1, "PCR (vesicle fluid/swab): most sensitive & specific gold standard", False),
(1, "DFA: rapid antigen detection distinguishes VZV from HSV", False),
(0, "TREATMENT — Antivirals (start within 72 hrs of rash; earlier = better):", True),
(1, "Acyclovir 800 mg 5×/day × 7–10 days (PO)", False),
(1, "Valacyclovir 1g TDS × 7 days (preferred — 3–5× better bioavailability)", False),
(1, "Famciclovir 500 mg TDS × 7 days", False),
(1, "IV Acyclovir 10 mg/kg TDS for immunocompromised or disseminated/ophthalmic HZ", False),
(0, "PAIN MANAGEMENT:", True),
(1, "Acute: NSAIDs/opioids; corticosteroids (reduce acute neuritis — NOT PHN)", False),
(1, "PHN: Gabapentin, Pregabalin (first-line); TCAs (amitriptyline); 5% Lidocaine patch; Capsaicin 8% patch; Opioids", False),
(0, "PREVENTION:", True),
(1, "RZV (Shingrix®): recombinant adjuvanted — 97% efficacy; 2 doses; preferred (>50 yrs)", False),
(1, "ZVL (Zostavax®): live attenuated — 51% efficacy; 1 dose; less used now", False),
], C_PURPLE_H,
source=SRC_HZV)
# ─────────────────────────────────────────────────────────────────────────────
# ══════════ SECTION 3 — MOLLUSCUM CONTAGIOSUM ══════════════════════════════
# ─────────────────────────────────────────────────────────────────────────────
make_section_divider("MOLLUSCUM CONTAGIOSUM (MCV)",
"Poxvirus Infection of the Skin",
C_TEAL_H)
SRC_MCV = "Source: Andrews' Diseases of the Skin | Fitzpatrick's Dermatology 8e | Dermatology 5e (Bolognia)"
content_slide("Molluscum Contagiosum — Aetiology & Epidemiology", [
(0, "Causative agent: Molluscum Contagiosum Virus (MCV) — Poxviridae family", True),
(1, "Four types: MCV-1, MCV-2, MCV-3, MCV-4 (and variants)", False),
(1, "MCV-1: most common worldwide; virtually all infections in young children", False),
(1, "MCV-2: predominates in HIV/AIDS patients (60% of HIV-related infections)", False),
(0, "Largest DNA virus to infect humans; replicates in cytoplasm", True),
(0, "Epidemiology — three high-risk groups:", True),
(1, "Young children (peak: 1–4 years): most common; skin-to-skin contact, fomites, swimming pools", False),
(1, "Sexually active young adults (20–29 years): STI route; genital/perineal distribution", False),
(1, "Immunosuppressed (especially HIV/AIDS): disseminated, giant, treatment-resistant lesions", False),
(0, "Transmission: direct skin-to-skin contact (esp. wet skin); autoinoculation; fomites", True),
(1, "Pubic hair removal (shaving, waxing) is a risk factor for sexual transmission", False),
(0, "Incubation period: 2 weeks – 6 months (average ~2–7 weeks)", True),
(0, "No latency established (except possibly in severe immunosuppression)", True),
], C_TEAL_H,
source=SRC_MCV)
content_slide("Molluscum Contagiosum — Clinical Features", [
(0, "Classic lesion: smooth-surfaced, firm, dome-shaped, pearly/flesh-coloured papule", True),
(1, "Size: 3–5 mm (early <1 mm; 'giant' >1 cm in immunosuppressed)", False),
(1, "Central umbilication: pathognomonic — may be subtle until larger size", False),
(1, "Central white core (cheesy material) — molluscum bodies", False),
(0, "Distribution by age/route:", True),
(1, "Children: trunk, axillae, antecubital/popliteal fossae, face", False),
(1, "Adults (STI): lower abdomen, upper thighs, perineum, penile shaft", False),
(1, "HIV/AIDS: face (cheeks, neck, eyelids), genitalia; confluent plaques; facial disfigurement", False),
(0, "Inflammatory reactions (children):", True),
(1, "'Molluscum dermatitis' (40%): eczematous halo around lesions (esp. atopic children)", False),
(1, "'BOTE sign' (beginning of the end) — inflamed MC (20%): erythema + swelling of individual lesions → heralds resolution", False),
(1, "Giannotti-Crosti type reaction (5%): symmetric monomorphic papules on extensors", False),
(0, "Eyelid/conjunctival lesions: associated chronic follicular conjunctivitis / keratitis", True),
(0, "Mucosal involvement: rare — virtually always indicates advanced AIDS (CD4 <50)", True),
], C_TEAL_H,
image_url="https://cdn.orris.care/cdss_images/DermNetNZ_1760036332003_c7f2f3ed-f769-431e-8214-8558079981c8.jpg",
source=SRC_MCV)
content_slide("Molluscum Contagiosum — Histopathology & Diagnosis", [
(0, "HISTOPATHOLOGY (pathognomonic):", True),
(1, "Primarily affects follicular epithelium", False),
(1, "Acanthotic, cup-shaped, endophytic lobulated structure", False),
(1, "Henderson-Paterson bodies (molluscum bodies):", False),
(1, " Intracytoplasmic inclusions; initially eosinophilic → later basophilic", False),
(1, " Nucleus compressed to side of cell", False),
(1, " Each lobule empties into central crater at surface", False),
(1, "Inflammatory changes usually slight or absent in active lesions", False),
(1, "Resolving/inflamed lesions: dense lymphocytes, neutrophils; CD30+ large lymphocytes may be seen", False),
(0, "DIAGNOSIS:", True),
(1, "Primarily clinical: central umbilication + dome-shaped pearly papule", False),
(1, "Dermoscopy: polylobular white-yellow amorphous area ('cauliflower') + peripheral crown vessels", False),
(1, "Tzanck / KOH mount / Wright/Giemsa stain of expressed core: Henderson-Paterson bodies", False),
(1, "PCR: for atypical/unusual presentations", False),
(0, "Differential diagnosis:", True),
(1, "Cryptococcosis, histoplasmosis, penicilliosis (in immunosuppressed — can simulate MC)", False),
(1, "Keratoacanthoma, BCC, epidermoid cyst, milia, syringoma, flat warts, comedones", False),
], C_TEAL_H,
source=SRC_MCV)
content_slide("Molluscum Contagiosum — Treatment", [
(0, "Immunocompetent children — observe (self-limiting in 12–18 months) is an option:", True),
(1, "Individual lesion lasts 2–4 months; total duration 12–18 months", False),
(1, "Treat molluscum dermatitis with low-potency topical corticosteroid (reduces itch)", False),
(0, "Physical / destructive methods:", True),
(1, "Cantharidin (blistering agent): apply only to lesion body; leave 1–6 hrs; ~20 lesions per session", False),
(1, "Curettage: effective; use EMLA cream 1 hr prior", False),
(1, "Cryotherapy: liquid nitrogen; caution in dark skin (dyspigmentation)", False),
(1, "Trichloroacetic acid (TCA) 3.5–100%: point application", False),
(1, "Tape stripping: surgical tape applied daily × 16 weeks — home therapy", False),
(0, "Topical chemical agents:", True),
(1, "Potassium hydroxide (KOH) 10%: effective, well-tolerated", False),
(1, "Topical tretinoin: small amounts to lesion; induces mild irritation → immune activation", False),
(1, "Povidone iodine, hydrogen peroxide 1% cream, aloe vera: reported therapies", False),
(1, "Imiquimod: NOT recommended — NOT more effective than placebo in controlled trials", False),
(0, "Adults / genital MC: cryotherapy or curettage preferred; screen for co-existent STIs", True),
(0, "HIV/AIDS: HAART → dramatic resolution (delayed 6–8 months); local: curettage, TCA, cantharidin", True),
(0, "Oral cimetidine: immunomodulatory; may benefit some atopic patients", True),
], C_TEAL_H,
source=SRC_MCV)
# ─────────────────────────────────────────────────────────────────────────────
# SLIDE — COMPARISON TABLE
# ─────────────────────────────────────────────────────────────────────────────
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, W, H, C_GREY)
add_rect(slide, 0, 0, W, Inches(1.0), C_DARK_BLUE)
add_rect(slide, 0, Inches(1.0), W, Inches(0.05), C_ORANGE)
add_text(slide, "Comparative Summary — VZV | HZV | MCV",
Inches(0.3), Inches(0.08), Inches(12.7), Inches(0.85),
font_size=26, bold=True, color=C_WHITE,
v_anchor=MSO_ANCHOR.MIDDLE, align=PP_ALIGN.LEFT)
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
table_data = [
["Feature", "Varicella (VZV)", "Herpes Zoster (HZV)", "Molluscum Contagiosum"],
["Virus", "HHV-3 (VZV)", "HHV-3 (VZV) — reactivation", "MCV (Poxviridae)"],
["Transmission", "Airborne / contact", "No person-to-person (endogenous)", "Direct contact / fomites / sexual"],
["Incubation", "10–21 days", "Reactivation (latency years)", "2 wks – 6 months"],
["Peak age", "5–9 yrs (children)", "Elderly / immunocompromised", "1–4 yrs; 20–29 yrs (STI); HIV"],
["Distribution", "Centripetal (trunk > face)", "Unilateral dermatomal", "Trunk, genitals, face"],
["Morphology", "Vesicles 'dewdrop on rose petal'; all stages simultaneously", "Dermatomal grouped vesicles; never crosses midline", "Pearly dome-shaped papule with central umbilication"],
["Key histology", "Intranuclear inclusions; MNGCs (Tzanck +)", "Same as varicella", "Henderson-Paterson bodies (intracytoplasmic)"],
["Main complication", "Bacterial superinfection; pneumonia; encephalitis", "PHN; HZO; CNS vasculitis; Ramsay Hunt", "Molluscum dermatitis; dissemination (HIV)"],
["Antiviral Rx", "Acyclovir / Valacyclovir", "Valacyclovir / Famciclovir (72 hrs)", "None specific — physical methods"],
["Vaccine", "Oka live attenuated (2-dose)", "Shingrix® (RZV) preferred; Zostavax® (ZVL)", "None available"],
]
rows = len(table_data)
cols = len(table_data[0])
tbl = slide.shapes.add_table(rows, cols,
Inches(0.2), Inches(1.1),
Inches(12.93), Inches(6.2)).table
tbl.columns[0].width = Inches(2.0)
tbl.columns[1].width = Inches(3.5)
tbl.columns[2].width = Inches(3.7)
tbl.columns[3].width = Inches(3.73)
header_cols = [C_DARK_BLUE, C_GREEN_H, C_PURPLE_H, C_TEAL_H]
for r, row_data in enumerate(table_data):
for c, cell_text in enumerate(row_data):
cell = tbl.cell(r, c)
cell.text = cell_text
tf = cell.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
run = p.runs[0] if p.runs else p.add_run()
run.text = cell_text
if r == 0:
run.font.bold = True
run.font.color.rgb = C_WHITE
run.font.size = Pt(13)
cell.fill.solid()
cell.fill.fore_color.rgb = header_cols[c]
else:
run.font.size = Pt(11)
run.font.bold = (c == 0)
if c == 0:
run.font.color.rgb = C_DARK_BLUE
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(0xE0, 0xE8, 0xF0)
else:
run.font.color.rgb = C_DARK_TEXT
if r % 2 == 0:
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(0xF8, 0xF8, 0xF8)
else:
cell.fill.solid()
cell.fill.fore_color.rgb = C_WHITE
# ─────────────────────────────────────────────────────────────────────────────
# THANK YOU SLIDE
# ─────────────────────────────────────────────────────────────────────────────
slide = prs.slides.add_slide(blank)
add_rect(slide, 0, 0, W, H, C_DARK_BLUE)
add_rect(slide, 0, Inches(3.5), W, Inches(0.06), C_ORANGE)
add_text(slide, "Thank You",
Inches(1), Inches(2.0), Inches(11.3), Inches(1.3),
font_size=56, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(slide, "VZV • Herpes Zoster • Molluscum Contagiosum",
Inches(1), Inches(3.7), Inches(11.3), Inches(0.6),
font_size=20, italic=True, color=RGBColor(0xAD, 0xD8, 0xE6),
align=PP_ALIGN.CENTER)
add_text(slide, "References: Fitzpatrick's Dermatology 8e | Dermatology 5e — Bolognia et al. | Andrews' Diseases of the Skin | IADVL Textbook of Dermatology",
Inches(1), Inches(4.5), Inches(11.3), Inches(0.7),
font_size=13, italic=True, color=RGBColor(0x88, 0xBB, 0xDD),
align=PP_ALIGN.CENTER)
# ─────────────────────────────────────────────────────────────────────────────
# SAVE
# ─────────────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/vzv-hzv-mcv-slides/VZV_HZV_MCV_Dermatology.pptx"
buf = BytesIO()
prs.save(buf)
with open(out_path, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {out_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/vzv-hzv-mcv-slides && python build_pptx.py 2>&1
python3 -c " import urllib.request, base64, json, sys urls = [ 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_22a3d8281d35688dae3eeddf2c856712d0bb8350087c738a11e74ba325415d5d.jpg', 'https://cdn.orris.care/cdss_images/pmc_clinical_VQA_456dad297306772a0d79de49baac9a2a046a4dbc1888d042dd77a0a13b39e109.jpg', 'https://cdn.orris.care/cdss_images/DermNetNZ_1760036332003_c7f2f3ed-f769-431e-8214-8558079981c8.jpg' ] for i, u in enumerate(urls): try: with urllib.request.urlopen(u, timeout=15) as r: data = r.read() path = f'/tmp/workspace/vzv-hzv-mcv-slides/img{i}.jpg' with open(path, 'wb') as f: f.write(data) print(f'OK {path} {len(data)} bytes') except Exception as e: print(f'FAIL {u}: {e}') "
python3 - <<'PYEOF' import re with open('/tmp/workspace/vzv-hzv-mcv-slides/build_pptx.py', 'r') as f: src = f.read() # Replace the image embedding helper to use local files old_embed = ''' # embed image if image_url: try: result = json.loads(subprocess.check_output( ["python", "/tmp/skills/shared/scripts/fetch_images.py", image_url], timeout=30 )) img_data = result[0] if img_data.get("base64"): raw = base64.b64decode(img_data["base64"].split(",", 1)[-1]) slide.shapes.add_picture(BytesIO(raw), img_x, img_y, img_w, img_h) except Exception as e: print(f" [image skip] {e}")''' new_embed = ''' # embed image if image_url: try: slide.shapes.add_picture(image_url, img_x, img_y, img_w, img_h) except Exception as e: print(f" [image skip] {e}")''' src = src.replace(old_embed, new_embed) # Replace image URLs with local paths src = src.replace( 'image_url="https://cdn.orris.care/cdss_images/pmc_clinical_VQA_22a3d8281d35688dae3eeddf2c856712d0bb8350087c738a11e74ba325415d5d.jpg"', 'image_url="/tmp/workspace/vzv-hzv-mcv-slides/img0.jpg"' ) src = src.replace( 'image_url="https://cdn.orris.care/cdss_images/pmc_clinical_VQA_456dad297306772a0d79de49baac9a2a046a4dbc1888d042dd77a0a13b39e109.jpg"', 'image_url="/tmp/workspace/vzv-hzv-mcv-slides/img1.jpg"' ) src = src.replace( 'image_url="https://cdn.orris.care/cdss_images/DermNetNZ_1760036332003_c7f2f3ed-f769-431e-8214-8558079981c8.jpg"', 'image_url="/tmp/workspace/vzv-hzv-mcv-slides/img2.jpg"' ) with open('/tmp/workspace/vzv-hzv-mcv-slides/build_pptx2.py', 'w') as f: f.write(src) print("Patched script written") PYEOF
cd /tmp/workspace/vzv-hzv-mcv-slides && python build_pptx2.py 2>&1
VZV HZV MCV Dermatology
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide |
| 2 | VZV section divider |
| 3 | VZV - Aetiology & Pathogenesis |
| 4 | VZV - Epidemiology |
| 5 | VZV - Clinical Features (with varicella photo) |
| 6 | VZV - Complications |
| 7 | VZV - Diagnosis & Treatment |
| 8 | Herpes Zoster section divider |
| 9 | HZV - Aetiology & Pathogenesis |
| 10 | HZV - Clinical Features (with dermatomal rash photo) |
| 11 | HZV - Complications (PHN, Ramsay Hunt, CNS vasculitis) |
| 12 | HZV - Diagnosis & Treatment (antivirals + PHN management + vaccines) |
| 13 | MCV section divider |
| 14 | MCV - Aetiology & Epidemiology |
| 15 | MCV - Clinical Features (with umbilicated papule photo) |
| 16 | MCV - Histopathology & Diagnosis (Henderson-Paterson bodies, dermoscopy, DDx) |
| 17 | MCV - Treatment |
| 18 | Comparative summary table (VZV vs HZV vs MCV) |
| 19 | Thank you / References slide |