Prepare a ppt topic sturge weber syndrome under subheading etiology, symptoms and signs, relevant findings treatment
Sturge-Weber syndrome etiology symptoms signs treatment clinical features
https://pmc.ncbi.nlm.nih.gov/articles/PMC10145477
mkdir -p /tmp/workspace/sturge-weber-ppt
~/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)}")
python /tmp/workspace/sturge-weber-ppt/create_ppt.py
Sturge Weber Syndrome
Presentation · PPTX
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
cardiac valve types drugs treatment anticoagulation prosthetic valve diagram
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.