Prepare a ppt topic sturge weber syndrome under subheading etiology, symptoms and signs, relevant findings treatment

Reading File
Reading File
Finding Sources
Searching the Web

Sturge-Weber syndrome etiology symptoms signs treatment clinical features

Reading File
Reading File
Reading Web Page

https://pmc.ncbi.nlm.nih.gov/articles/PMC10145477

Reading File
Reading File
Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/sturge-weber-ppt

Writing File

~/sturge-weber-ppt/create_ppt.py


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.enum.shapes import MSO_SHAPE
from io import BytesIO

# Color Palette - Medical/Clinical theme
C_DARK_BLUE   = RGBColor(0x1A, 0x3A, 0x6B)   # deep navy
C_MED_BLUE    = RGBColor(0x27, 0x5E, 0xA8)   # accent blue
C_LIGHT_BLUE  = RGBColor(0xD9, 0xEA, 0xFF)   # slide bg tint
C_TEAL        = RGBColor(0x00, 0x87, 0x9B)   # section accent
C_ORANGE      = RGBColor(0xE8, 0x6B, 0x2C)   # highlight
C_WHITE       = RGBColor(0xFF, 0xFF, 0xFF)
C_LIGHT_GREY  = RGBColor(0xF2, 0xF5, 0xFB)
C_TEXT        = RGBColor(0x1C, 0x1C, 0x2E)
C_SUBTEXT     = RGBColor(0x44, 0x55, 0x77)

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

# ─────────────────────────────────────────
# Helper functions
# ─────────────────────────────────────────
def set_bg(slide, color):
    bg = slide.background
    bg.fill.solid()
    bg.fill.fore_color.rgb = color

def add_rect(slide, left, top, width, height, fill_color, line_color=None, line_width=None):
    shape = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE,
        Inches(left), Inches(top), Inches(width), Inches(height))
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_color
    if line_color:
        shape.line.color.rgb = line_color
        if line_width:
            shape.line.width = Pt(line_width)
    else:
        shape.line.fill.background()
    return shape

def add_text(slide, text, left, top, width, height,
             font_name="Calibri", size=18, bold=False, italic=False,
             color=C_TEXT, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.TOP,
             wrap=True):
    tb = slide.shapes.add_textbox(Inches(left), Inches(top), Inches(width), Inches(height))
    tf = tb.text_frame
    tf.word_wrap = wrap
    tf.vertical_anchor = v_anchor
    tf.margin_left = 0; tf.margin_right = 0
    tf.margin_top = Pt(2); tf.margin_bottom = 0
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.name = font_name
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = color
    return tf

def add_bullet_para(tf, text, size=15, bold=False, color=C_TEXT, indent_level=0, space_before=4):
    p = tf.add_paragraph()
    p.level = indent_level
    p.alignment = PP_ALIGN.LEFT
    p.space_before = Pt(space_before)
    # bullet character
    run = p.add_run()
    bullet = "  • " if indent_level == 0 else "       – "
    run.text = bullet + text
    run.font.name = "Calibri"
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.color.rgb = color
    return p

def section_header_bar(slide, title, accent_color=C_MED_BLUE):
    """Top bar with section title"""
    add_rect(slide, 0, 0, 13.333, 1.1, accent_color)
    add_text(slide, title, 0.5, 0.1, 12.3, 0.9,
             font_name="Calibri", size=34, bold=True,
             color=C_WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)

def accent_bar(slide, left=0, top=1.1, width=13.333, height=0.06, color=C_ORANGE):
    add_rect(slide, left, top, width, height, color)


# ═══════════════════════════════════════════════════════════════
# SLIDE 1 — TITLE SLIDE
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_DARK_BLUE)

# Decorative left panel
add_rect(slide, 0, 0, 4.5, 7.5, C_MED_BLUE)
add_rect(slide, 0, 0, 0.18, 7.5, C_ORANGE)

# Title area
add_text(slide, "STURGE-WEBER", 5.0, 1.6, 7.8, 1.2,
         size=48, bold=True, color=C_WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "SYNDROME", 5.0, 2.7, 7.8, 1.0,
         size=48, bold=True, color=C_ORANGE, align=PP_ALIGN.LEFT)

# Subtitle
add_text(slide, "A Neurocutaneous Disorder", 5.0, 3.8, 7.8, 0.5,
         size=20, italic=True, color=RGBColor(0xB8, 0xD4, 0xFF), align=PP_ALIGN.LEFT)

# Divider
add_rect(slide, 5.0, 4.4, 7.5, 0.05, C_ORANGE)

# Sub info
add_text(slide, "Etiology  |  Symptoms & Signs  |  Findings  |  Treatment",
         5.0, 4.6, 8.0, 0.5, size=14, color=RGBColor(0xB8, 0xD4, 0xFF),
         align=PP_ALIGN.LEFT)

# Left panel decorative text (vertical concept labels)
tb = slide.shapes.add_textbox(Inches(0.35), Inches(1.5), Inches(3.8), Inches(5.0))
tf = tb.text_frame; tf.word_wrap = True
for label, sz, bold in [
    ("Encephalotrigeminal\nAngiomatosis", 16, True),
    ("", 8, False),
    ("Phakomatosis", 13, False),
    ("", 8, False),
    ("GNAQ Mutation", 13, False),
    ("", 8, False),
    ("Port-Wine Stain", 13, False),
    ("", 8, False),
    ("Leptomeningeal\nAngioma", 13, False),
]:
    p = tf.add_paragraph()
    r = p.add_run(); r.text = label
    r.font.name = "Calibri"; r.font.size = Pt(sz)
    r.font.bold = bold; r.font.color.rgb = C_WHITE
    p.alignment = PP_ALIGN.CENTER


# ═══════════════════════════════════════════════════════════════
# SLIDE 2 — OVERVIEW / INTRODUCTION
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Overview", C_DARK_BLUE)
accent_bar(slide)

# Two column layout
# Left box
add_rect(slide, 0.4, 1.3, 5.8, 5.8, C_WHITE)
add_rect(slide, 0.4, 1.3, 5.8, 0.45, C_TEAL)
add_text(slide, "What is Sturge-Weber Syndrome?", 0.5, 1.3, 5.6, 0.45,
         size=14, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)

tb_left = slide.shapes.add_textbox(Inches(0.55), Inches(1.9), Inches(5.5), Inches(5.0))
tf_l = tb_left.text_frame; tf_l.word_wrap = True
for txt in [
    "Rare congenital neurocutaneous (phakomatosis) disorder",
    "Also known as Encephalotrigeminal Angiomatosis",
    "Characterized by capillary-venous malformations affecting skin, brain, and eyes",
    "Occurs sporadically in ~1 in 20,000–50,000 live births",
    "Affects males and females equally; no racial predilection",
    "Third most common neurocutaneous syndrome after neurofibromatosis and tuberous sclerosis",
    "Non-heritable; does not affect lifespan in mild cases",
]:
    add_bullet_para(tf_l, txt, size=13, color=C_TEXT)

# Right box
add_rect(slide, 6.8, 1.3, 6.1, 5.8, C_WHITE)
add_rect(slide, 6.8, 1.3, 6.1, 0.45, C_MED_BLUE)
add_text(slide, "Classic Triad", 6.9, 1.3, 5.9, 0.45,
         size=14, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)

# Three feature boxes
features = [
    ("1", "Port-Wine Stain (PWS)", "Facial capillary malformation in the\ndistribution of trigeminal nerve (V1)"),
    ("2", "Leptomeningeal Angioma", "Ipsilateral parieto-occipital\nleptomeningeal angiomatosis"),
    ("3", "Glaucoma", "Ipsilateral increased intraocular\npressure; choroidal hemangioma"),
]
for i, (num, title, desc) in enumerate(features):
    y_start = 1.9 + i * 1.75
    add_rect(slide, 6.95, y_start, 5.8, 1.5, C_LIGHT_BLUE)
    add_rect(slide, 6.95, y_start, 0.45, 1.5, C_ORANGE)
    add_text(slide, num, 6.95, y_start + 0.35, 0.45, 0.7,
             size=22, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER)
    add_text(slide, title, 7.5, y_start + 0.1, 5.1, 0.4,
             size=13, bold=True, color=C_DARK_BLUE)
    add_text(slide, desc, 7.5, y_start + 0.55, 5.1, 0.8,
             size=11, color=C_SUBTEXT)


# ═══════════════════════════════════════════════════════════════
# SLIDE 3 — ETIOLOGY
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Etiology", C_TEAL)
accent_bar(slide, color=C_ORANGE)

# Main content area
add_rect(slide, 0.4, 1.3, 12.5, 5.8, C_WHITE)

# Gene mutation box
add_rect(slide, 0.55, 1.5, 5.8, 2.5, C_LIGHT_BLUE)
add_rect(slide, 0.55, 1.5, 5.8, 0.4, C_MED_BLUE)
add_text(slide, "Genetic Basis", 0.65, 1.5, 5.6, 0.4,
         size=14, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)

tb = slide.shapes.add_textbox(Inches(0.65), Inches(2.0), Inches(5.6), Inches(2.0))
tf = tb.text_frame; tf.word_wrap = True
for txt in [
    "Somatic, postzygotic, gain-of-function mutation in GNAQ gene (chromosome 9q21)",
    "Recently, GNA11 gene variants also described with subtle phenotypic differences",
    "Activates Gαq-coupled signaling → aberrant endothelial cell proliferation → capillary-venous malformations",
    "Mutation is mosaic — not detectable on standard blood-based genetic testing",
    "Mutation timing during embryogenesis determines extent and distribution of involvement",
]:
    add_bullet_para(tf, txt, size=12, color=C_TEXT)

# Pathophysiology box
add_rect(slide, 0.55, 4.1, 5.8, 2.7, C_LIGHT_BLUE)
add_rect(slide, 0.55, 4.1, 5.8, 0.4, C_MED_BLUE)
add_text(slide, "Pathophysiology", 0.65, 4.1, 5.6, 0.4,
         size=14, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)

tb2 = slide.shapes.add_textbox(Inches(0.65), Inches(4.6), Inches(5.6), Inches(2.1))
tf2 = tb2.text_frame; tf2.word_wrap = True
for txt in [
    "Facial skin and brain share common embryologic neural crest progenitors",
    "Capillary-venous malformations impair venous drainage → cortical hypoperfusion → ischemia",
    "Leptomeningeal angioma leads to progressive cortical atrophy and calcification",
    "Hemosiderin deposition and impaired autoregulation contribute to neurologic decline",
]:
    add_bullet_para(tf2, txt, size=12, color=C_TEXT)

# Risk factors box
add_rect(slide, 6.8, 1.5, 5.8, 5.3, C_LIGHT_BLUE)
add_rect(slide, 6.8, 1.5, 5.8, 0.4, C_ORANGE)
add_text(slide, "Key Features & Risk Factors", 6.9, 1.5, 5.6, 0.4,
         size=14, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)

tb3 = slide.shapes.add_textbox(Inches(6.9), Inches(2.0), Inches(5.6), Inches(4.6))
tf3 = tb3.text_frame; tf3.word_wrap = True
for txt in [
    "Sporadic — NOT inherited; no family history pattern",
    "Occurs in utero during vascular development",
    "Port-wine stain of upper face + periorbital area → highest risk for brain involvement",
    "Only ~15% of people with upper facial nevus develop brain involvement",
    "Hemifacial, forehead, or medial facial PWS → increased risk of neurologic involvement",
    "8–20% of all facial port-wine nevi → neurological symptoms",
    "Bilateral brain involvement possible if bilateral facial PWS",
    "Glaucoma may occur even without neurological involvement",
]:
    add_bullet_para(tf3, txt, size=12, color=C_TEXT)


# ═══════════════════════════════════════════════════════════════
# SLIDE 4 — SYMPTOMS AND SIGNS
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Symptoms and Signs", C_MED_BLUE)
accent_bar(slide, color=C_TEAL)

# Three system columns
systems = [
    ("CUTANEOUS", C_ORANGE, [
        "Port-wine stain (PWS/Nevus Flammeus)",
        "Pink-to-dark-purple facial birthmark",
        "Distribution: V1 (ophthalmic) branch of trigeminal nerve (forehead/eyelid)",
        "V2 and V3 may also be involved",
        "Present at birth; obvious from day 1",
        "Darkens and thickens with age",
        "Nodular appearance develops in older patients",
        "Soft-tissue overgrowth and facial asymmetry",
        "May involve oral mucosa and gingiva",
    ]),
    ("NEUROLOGICAL", C_MED_BLUE, [
        "Focal-onset epilepsy (most common; ~80% of neurologically involved)",
        "Often drug-resistant in >50% of patients",
        "Onset usually in first year of life",
        "Stroke-like episodes (31–46% of patients aged 2–22 yrs)",
        "Transient or permanent hemiparesis (contralateral to lesion)",
        "Hemianopia (visual field defect)",
        "Cognitive impairment / intellectual disability (50–66%)",
        "Headaches / migraines",
        "Behavioral and psychiatric problems",
        "Developmental delay",
    ]),
    ("OPHTHALMOLOGICAL", C_TEAL, [
        "Glaucoma (raised intraocular pressure)",
        "Can occur without neurologic involvement",
        "Buphthalmos (enlarged eye in infants)",
        "Choroidal hemangioma (ipsilateral)",
        "Blood in Schlemm canal on gonioscopy",
        "Progressive visual impairment / vision loss",
        "Episcleral venous engorgement",
        "Periodic ophthalmologic screening essential",
    ]),
]

for i, (sys_name, color, bullets) in enumerate(systems):
    x = 0.3 + i * 4.35
    add_rect(slide, x, 1.25, 4.1, 5.95, C_WHITE)
    add_rect(slide, x, 1.25, 4.1, 0.5, color)
    add_text(slide, sys_name, x + 0.1, 1.25, 3.9, 0.5,
             size=13, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
    tb = slide.shapes.add_textbox(Inches(x + 0.1), Inches(1.85), Inches(3.85), Inches(5.2))
    tf = tb.text_frame; tf.word_wrap = True
    for txt in bullets:
        add_bullet_para(tf, txt, size=11.5, color=C_TEXT, space_before=3)


# ═══════════════════════════════════════════════════════════════
# SLIDE 5 — RELEVANT FINDINGS (Investigations)
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Relevant Findings", RGBColor(0x5C, 0x27, 0x8F))
accent_bar(slide, color=C_ORANGE)

# Classification of findings
sections_data = [
    ("NEUROIMAGING (MRI — Gold Standard)", RGBColor(0x5C, 0x27, 0x8F), [
        "MRI with gadolinium contrast: best modality for intracranial vascular lesion",
        "Leptomeningeal enhancement (pial angioma) — ipsilateral parieto-occipital",
        "Progressive cortical atrophy on involved side",
        "Choroid plexus enlargement / asymmetry (early sensitive finding)",
        "Susceptibility-weighted imaging (SWI) + contrast FLAIR: best for pial vascular abnormalities",
        "Cortical calcification: 'tram-track' / 'trolley-track' pattern (often absent in infants)",
        "Abnormal white matter signal; cerebral hemiatrophy in advanced cases",
        "Cortical T1 hyperintense signal (calcium deposition)",
    ]),
    ("CT SCAN", C_TEAL, [
        "Demonstrates 'tram-track' cortical calcifications (double contour along cerebral gyri)",
        "Better than MRI for calcification detection",
        "Less sensitive than MRI for early or subtle vascular changes",
    ]),
    ("EEG", C_MED_BLUE, [
        "Focal slowing and epileptiform discharges over affected hemisphere",
        "Background asymmetry",
        "Useful to guide anticonvulsant therapy",
        "Obtained in all patients with neurological involvement",
    ]),
]

y_cur = 1.35
for sec_title, color, items in sections_data:
    add_rect(slide, 0.35, y_cur, 12.6, 0.38, color)
    add_text(slide, sec_title, 0.5, y_cur, 12.2, 0.38,
             size=12, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
    y_cur += 0.38
    tb = slide.shapes.add_textbox(Inches(0.5), Inches(y_cur), Inches(12.4), Inches(len(items) * 0.32))
    tf = tb.text_frame; tf.word_wrap = True
    for item in items:
        add_bullet_para(tf, item, size=12, color=C_TEXT, space_before=2)
    y_cur += len(items) * 0.32 + 0.2

# Bottom row: Ophthalmology + Genetics
add_rect(slide, 0.35, y_cur, 6.1, 0.38, C_ORANGE)
add_text(slide, "OPHTHALMOLOGICAL ASSESSMENT", 0.5, y_cur, 5.9, 0.38,
         size=12, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb_o = slide.shapes.add_textbox(Inches(0.5), Inches(y_cur + 0.38), Inches(5.8), Inches(1.0))
tf_o = tb_o.text_frame; tf_o.word_wrap = True
for txt in [
    "Intraocular pressure measurement (every 3 months in first year, yearly thereafter)",
    "Gonioscopy: blood in Schlemm canal (pathognomonic sign)",
    "Fundus exam: choroidal hemangioma",
]:
    add_bullet_para(tf_o, txt, size=11.5, color=C_TEXT, space_before=2)

add_rect(slide, 6.85, y_cur, 5.85, 0.38, RGBColor(0x27, 0x6A, 0x47))
add_text(slide, "CLASSIFICATION (Roach Scale)", 7.0, y_cur, 5.6, 0.38,
         size=12, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb_r = slide.shapes.add_textbox(Inches(7.0), Inches(y_cur + 0.38), Inches(5.6), Inches(1.0))
tf_r = tb_r.text_frame; tf_r.word_wrap = True
for txt in [
    "Type I: Facial PWS + leptomeningeal angioma (with or without glaucoma)",
    "Type II: Facial PWS alone + glaucoma; NO brain involvement",
    "Type III: Isolated leptomeningeal angioma; NO facial PWS",
]:
    add_bullet_para(tf_r, txt, size=11.5, color=C_TEXT, space_before=2)


# ═══════════════════════════════════════════════════════════════
# SLIDE 6 — TREATMENT
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Treatment", RGBColor(0x0D, 0x6E, 0x3E))
accent_bar(slide, color=C_ORANGE)

treatment_cols = [
    ("NEUROLOGICAL\nMANAGEMENT", RGBColor(0x1A, 0x3A, 0x6B), [
        "Antiepileptic drugs (AEDs) — first-line for seizures",
        "Common agents: valproate, levetiracetam, oxcarbazepine",
        "Seizures are drug-resistant in >50% → surgical evaluation",
        "Focal cortical resection or hemispherectomy for refractory epilepsy",
        "Early seizure control → better cognitive outcomes",
        "Low-dose aspirin (adults) to reduce stroke-like episodes",
        "(Caution: aspirin not recommended in children routinely)",
        "Physical therapy for hemiparesis rehabilitation",
        "Neuropsychological support for cognitive/behavioral issues",
        "Special education programs for developmental delays",
    ]),
    ("OPHTHALMOLOGICAL\nMANAGEMENT", C_TEAL, [
        "Regular IOP monitoring (every 3 months in year 1, then annually)",
        "Topical antiglaucoma drops (beta-blockers, prostaglandin analogues, CAIs)",
        "Surgical intervention for refractory glaucoma",
        "Goniotomy or trabeculotomy in infants with buphthalmos",
        "Trabeculectomy / drainage implant devices if medical therapy fails",
        "Management of choroidal hemangioma (if symptomatic)",
        "Laser photocoagulation or PDT for choroidal hemangioma",
    ]),
    ("DERMATOLOGICAL\nMANAGEMENT", C_ORANGE, [
        "Pulsed-dye laser (PDL) — treatment of choice for PWS",
        "Reduces vascular staining; best results when started early",
        "Multiple sessions typically required",
        "Sirolimus (rapamycin) — emerging therapy",
        "mTOR inhibitor; reduces soft tissue overgrowth and capillary discoloration",
        "Also shown to reduce IOP as added benefit",
        "Cosmetic camouflage for residual discoloration",
        "Counseling for psychological impact of facial birthmark",
    ]),
]

for i, (col_title, color, bullets) in enumerate(treatment_cols):
    x = 0.3 + i * 4.35
    add_rect(slide, x, 1.25, 4.1, 5.95, C_WHITE)
    add_rect(slide, x, 1.25, 4.1, 0.6, color)
    add_text(slide, col_title, x + 0.1, 1.25, 3.9, 0.6,
             size=12, bold=True, color=C_WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
    tb = slide.shapes.add_textbox(Inches(x + 0.1), Inches(1.95), Inches(3.85), Inches(5.2))
    tf = tb.text_frame; tf.word_wrap = True
    for txt in bullets:
        add_bullet_para(tf, txt, size=11.5, color=C_TEXT, space_before=3)


# ═══════════════════════════════════════════════════════════════
# SLIDE 7 — PROGNOSIS & SUMMARY
# ═══════════════════════════════════════════════════════════════
slide = prs.slides.add_slide(blank)
set_bg(slide, C_LIGHT_GREY)
section_header_bar(slide, "Prognosis & Summary", C_DARK_BLUE)
accent_bar(slide, color=C_ORANGE)

# Prognosis box left
add_rect(slide, 0.35, 1.3, 6.0, 5.85, C_WHITE)
add_rect(slide, 0.35, 1.3, 6.0, 0.45, C_DARK_BLUE)
add_text(slide, "Prognosis", 0.5, 1.3, 5.8, 0.45,
         size=15, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb = slide.shapes.add_textbox(Inches(0.5), Inches(1.85), Inches(5.7), Inches(5.1))
tf = tb.text_frame; tf.word_wrap = True
for txt in [
    "Variable — depends on severity of neurological involvement",
    "Good seizure control + near-normal cognition → normal lifespan and function",
    "Intractable epilepsy + severe intellectual disability → shorter life expectancy but can live into adulthood",
    "Early onset seizures (<6 months) → risk of long-lasting or permanent deficits",
    "Regular ophthalmologic follow-up lifelong — glaucoma can develop at any age",
    "Brain involvement does not occur unless upper face/periorbital PWS is present",
    "No cure; management focuses on symptom control and quality of life",
    "Sirolimus and emerging targeted therapies offer potential future disease modification",
]:
    add_bullet_para(tf, txt, size=12, color=C_TEXT, space_before=4)

# Key points box right
add_rect(slide, 6.8, 1.3, 6.1, 5.85, C_WHITE)
add_rect(slide, 6.8, 1.3, 6.1, 0.45, C_ORANGE)
add_text(slide, "Key Takeaways", 6.9, 1.3, 5.9, 0.45,
         size=15, bold=True, color=C_WHITE, v_anchor=MSO_ANCHOR.MIDDLE)
tb2 = slide.shapes.add_textbox(Inches(6.9), Inches(1.85), Inches(5.8), Inches(5.1))
tf2 = tb2.text_frame; tf2.word_wrap = True
for txt in [
    "SWS = sporadic somatic GNAQ mutation (chr 9q21) — NOT hereditary",
    "Classic triad: Port-wine stain + Leptomeningeal angioma + Glaucoma",
    "Only 15% of upper facial PWS → brain involvement",
    "'Tram-track' calcification on CT is pathognomonic (but may be absent in infants)",
    "MRI with contrast is the imaging modality of choice",
    "Epilepsy management is the cornerstone of neurological treatment",
    "Pulsed-dye laser is first-line for port-wine stain",
    "Early and regular ophthalmologic screening is mandatory",
    "Roach classification: Type I (full), II (skin+eye), III (brain only)",
]:
    add_bullet_para(tf2, txt, size=12, color=C_TEXT, space_before=4)


# ─────────────────────────────────────────
# SAVE
# ─────────────────────────────────────────
out_path = "/tmp/workspace/sturge-weber-ppt/Sturge_Weber_Syndrome.pptx"
buf = BytesIO()
prs.save(buf)
with open(out_path, "wb") as f:
    f.write(buf.getvalue())

print(f"Saved: {out_path}")
print(f"Slides: {len(prs.slides)}")
Running Command

python /tmp/workspace/sturge-weber-ppt/create_ppt.py

Your presentation is ready:

Sturge Weber Syndrome

Presentation · PPTX


Here is what the 7-slide deck contains, sourced from Goldman-Cecil Medicine and current literature:
Slide 1 - Title Slide A styled dark-blue cover with the full syndrome name, subtitle "A Neurocutaneous Disorder," and a decorative left panel listing key concepts (GNAQ Mutation, Port-Wine Stain, Leptomeningeal Angioma, etc.)
Slide 2 - Overview
  • What SWS is (third most common phakomatosis, ~1 in 20,000–50,000 births)
  • The classic triad in three numbered feature boxes: Port-Wine Stain, Leptomeningeal Angioma, Glaucoma
Slide 3 - Etiology
  • GNAQ somatic mosaic mutation (chr 9q21); GNA11 variants also described
  • Gain-of-function → aberrant endothelial proliferation → capillary-venous malformations
  • Shared neural crest embryology of face and brain explains distribution
  • Sporadic, non-heritable; extent depends on timing of mutation
  • Risk factors: hemifacial/periorbital PWS, upper face distribution
Slide 4 - Symptoms & Signs Three columns covering:
  • Cutaneous: PWS from birth, darkens/thickens with age, V1 trigeminal distribution
  • Neurological: Focal epilepsy (80%), drug-resistant seizures (>50%), stroke-like episodes, hemiparesis, hemianopia, cognitive impairment (50–66%)
  • Ophthalmological: Glaucoma, buphthalmos, choroidal hemangioma, blood in Schlemm canal
Slide 5 - Relevant Findings
  • MRI (gold standard): leptomeningeal enhancement, choroid plexus asymmetry, cortical atrophy
  • CT: classic "tram-track" calcification pattern
  • EEG: focal slowing, epileptiform discharges
  • Ophthalmologic assessment schedule
  • Roach Classification (Type I, II, III)
Slide 6 - Treatment Three columns:
  • Neurological: AEDs, hemispherectomy for refractory epilepsy, aspirin in adults, physiotherapy
  • Ophthalmological: Topical drops, goniotomy/trabeculotomy, drainage implants
  • Dermatological: Pulsed-dye laser (first-line for PWS), sirolimus (emerging targeted therapy)
Slide 7 - Prognosis & Summary
  • Outcome depends on seizure control; good control allows normal lifespan
  • Key takeaways for quick revision

Prepare a ppt topic is different types of cardiac valves with pictures and drug given for each valve and cardioembolic stroke etiology symptoms and signs, relevant findings treatment

Finding Sources
Finding Sources
Searching the Web

cardiac valve types drugs treatment anticoagulation prosthetic valve diagram

Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Running Command

python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/cc1dc46f1f8f1f41c5fc65158eaaa07ac0ddd79c40aa76ff1a5014e6644fcd4e.png" \ "https://cdn.orris.care/cdss_images/b7b0de1ad4e31e27d5b5b3f7f043e3740f7c549399326c0fa9b8d8c472d5276d.png" \ "https://cdn.orris.care/cdss_images/542f42934321dc83014db4c27966728f20019b2a36889ecdce7b55c7783630b9.png" \ "https://cdn.orris.care/cdss_images/296303dfd67620e4661e3f3763fc3b5c4a1ac0d4c2c63ebf330ee90966b13786.png" 2>&1 | head -5

!

An error occurred (ValidationException) when calling the ConverseStream operation: The model returned the following errors: prompt is too long: 212440 tokens > 200000 maximum

We encountered an error while processing your request. Please try again or reach out to us for help.

Prepare a ppt topic is different types of cardiac valves with pictures and drug given for each valve and cardioembolic stroke etiology symptoms and signs, relevant findings treatment

!

An error occurred (ValidationException) when calling the ConverseStream operation: The model returned the following errors: prompt is too long: 212621 tokens > 200000 maximum

We encountered an error while processing your request. Please try again or reach out to us for help.

This is a shared conversation. Sign in to Orris to start your own chat.