Make a ppt from Q11.10 till immunosuppression on vaccine of herpes zoster as title And add the relvant content from the given image And the data of the vaccine from your side and make a ppt Each slide should contain only 3-4 point not more than that…and all the content given from the image and somewhat important you can add from your side… Slides should be neat and clean don’t over create the slides..to the point and slides should be simple and add bullet points in front of them… And each should have number means total slide number on the first page below the title and second at the bottom of each slide their should be number on each slide… All the font should be in times new roman And font size should be 23
mkdir -p /tmp/workspace/herpes-zoster-ppt && ls /tmp/workspace/herpes-zoster-ppt/
~/herpes-zoster-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 io import BytesIO
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
FONT_NAME = "Times New Roman"
FONT_SIZE = Pt(23)
TITLE_SIZE = Pt(32)
SUBTITLE_SIZE = Pt(20)
BG_COLOR = RGBColor(0xFF, 0xFF, 0xFF) # white background
TITLE_COLOR = RGBColor(0x1A, 0x3A, 0x5C) # dark navy
TEXT_COLOR = RGBColor(0x22, 0x22, 0x22) # near black
ACCENT_COLOR = RGBColor(0x1A, 0x3A, 0x5C) # same navy for accent bar
NUM_COLOR = RGBColor(0x88, 0x88, 0x88) # grey for slide numbers
TOTAL_SLIDES = 7 # will be updated after we count
def set_bg(slide, color):
from pptx.oxml.ns import qn
from lxml import etree
bg = slide.background
fill = bg.fill
fill.solid()
fill.fore_color.rgb = color
def add_accent_bar(slide, color=ACCENT_COLOR):
# Top accent bar
bar = slide.shapes.add_shape(
1, # MSO_SHAPE_TYPE.RECTANGLE
Inches(0), Inches(0),
Inches(13.333), Inches(0.12)
)
bar.fill.solid()
bar.fill.fore_color.rgb = color
bar.line.fill.background()
def add_bottom_bar(slide, color=ACCENT_COLOR):
bar = slide.shapes.add_shape(
1,
Inches(0), Inches(7.38),
Inches(13.333), Inches(0.12)
)
bar.fill.solid()
bar.fill.fore_color.rgb = color
bar.line.fill.background()
def add_slide_number(slide, number, total):
tb = slide.shapes.add_textbox(Inches(11.8), Inches(7.1), Inches(1.4), Inches(0.35))
tf = tb.text_frame
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.RIGHT
run = p.add_run()
run.text = f"{number} / {total}"
run.font.name = FONT_NAME
run.font.size = Pt(13)
run.font.color.rgb = NUM_COLOR
def add_title_box(slide, title_text, top=Inches(0.18), width=Inches(13.333), height=Inches(1.1)):
tb = slide.shapes.add_textbox(Inches(0), top, width, height)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Inches(0.5)
tf.margin_right = Inches(0.5)
tf.margin_top = Inches(0.05)
tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = title_text
run.font.name = FONT_NAME
run.font.size = TITLE_SIZE
run.font.bold = True
run.font.color.rgb = TITLE_COLOR
def add_content_box(slide, bullets, top=Inches(1.5), left=Inches(0.7), width=Inches(11.9), height=Inches(5.5)):
tb = slide.shapes.add_textbox(left, top, width, height)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Inches(0.1)
tf.margin_right = Inches(0.1)
tf.margin_top = Inches(0.1)
for i, bullet in enumerate(bullets):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.space_before = Pt(8)
p.space_after = Pt(4)
run = p.add_run()
run.text = f"• {bullet}"
run.font.name = FONT_NAME
run.font.size = FONT_SIZE
run.font.color.rgb = TEXT_COLOR
# ---------------------------------------------------------------
# SLIDES DATA
# ---------------------------------------------------------------
slides_data = [
# Slide 1 - Title Slide
{
"type": "title",
"title": "Vaccine for Herpes Zoster",
"subtitle": "Q11.10 — Immunosuppression",
"total_label": True,
},
# Slide 2 - Background & Burden
{
"type": "content",
"title": "Background: Herpes Zoster (HZ)",
"bullets": [
"HZ (shingles) is caused by reactivation of varicella-zoster virus (VZV) in dorsal root ganglia.",
"Incidence among unvaccinated individuals: 2.15 to 4.05 cases / 1000 person-years.",
"Post-herpetic neuralgia (PHN) is the most common complication, especially in the elderly.",
"Vaccination reduces both HZ incidence and severity of PHN.",
],
},
# Slide 3 - Zostavax Overview
{
"type": "content",
"title": "Zostavax (Zoster Vaccine Live Attenuated)",
"bullets": [
"First FDA-approved vaccine for HZ prevention (2006); initially for individuals ≥60 years.",
"Expanded in 2011 for use in adults aged 50–59 years.",
"Lyophilized preparation of the Oka/Merck strain of live-attenuated VZV.",
"Mechanism: Boosts cell-mediated immunity to suppress VZV reactivation.",
],
},
# Slide 4 - Zostavax Efficacy
{
"type": "content",
"title": "Zostavax — Clinical Efficacy",
"bullets": [
"Phase III Shingles Prevention Study: 38,546 adults aged ≥60 years.",
"Reduced HZ incidence by 51% compared to placebo.",
"Vaccinated individuals who still developed HZ had less pain and discomfort.",
"Lower incidence of PHN in vaccinated patients vs. placebo recipients.",
],
},
# Slide 5 - Shingrix Overview
{
"type": "content",
"title": "Shingrix (Zoster Vaccine Recombinant)",
"bullets": [
"FDA-approved in 2017 for adults ≥50 years; recommended by ACIP over Zostavax.",
"Lyophilized recombinant vaccine containing VZV glycoprotein E + AS01B adjuvant system.",
"Phase III RCT (15,411 adults ≥50 yrs): 97% efficacy against HZ across all age groups.",
"Efficacy sustained over 3-year follow-up; ACIP recommends it even after prior Zostavax.",
],
},
# Slide 6 - Shingrix vs Zostavax & Immunosuppression
{
"type": "content",
"title": "Shingrix vs. Zostavax & Immunosuppression",
"bullets": [
"Shingrix preferred over Zostavax; suitable for those previously vaccinated with Zostavax.",
"Live-attenuated vaccines (Zostavax) carry risk of reversion to high virulence.",
"Recombinant vaccines (Shingrix) do NOT carry reversion risk — safer profile.",
"Shingrix may be suitable for immunocompromised individuals where live vaccines are contraindicated.",
],
},
# Slide 7 - Key Takeaways
{
"type": "content",
"title": "Key Takeaways",
"bullets": [
"Two vaccines available: Zostavax (live-attenuated, 2006) and Shingrix (recombinant, 2017).",
"Shingrix shows superior efficacy (97% vs. 51%) and is the current ACIP-preferred vaccine.",
"Elderly and immunosuppressed individuals benefit most from HZ vaccination.",
"Recombinant vaccines are preferred in immunosuppressed patients due to absence of reversion risk.",
],
},
]
TOTAL = len(slides_data) # 7 total slides
blank = prs.slide_layouts[6]
for idx, data in enumerate(slides_data, start=1):
slide = prs.slides.add_slide(blank)
set_bg(slide, BG_COLOR)
add_accent_bar(slide)
add_bottom_bar(slide)
if data["type"] == "title":
# Big title
tb = slide.shapes.add_textbox(Inches(0.5), Inches(1.8), Inches(12.3), Inches(1.5))
tf = tb.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = data["title"]
run.font.name = FONT_NAME
run.font.size = Pt(40)
run.font.bold = True
run.font.color.rgb = TITLE_COLOR
# Subtitle
tb2 = slide.shapes.add_textbox(Inches(0.5), Inches(3.45), Inches(12.3), Inches(0.8))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
p2.alignment = PP_ALIGN.CENTER
run2 = p2.add_run()
run2.text = data["subtitle"]
run2.font.name = FONT_NAME
run2.font.size = Pt(24)
run2.font.bold = False
run2.font.color.rgb = RGBColor(0x55, 0x55, 0x55)
# Divider line under subtitle
line = slide.shapes.add_shape(
1,
Inches(3.5), Inches(4.35),
Inches(6.333), Inches(0.04)
)
line.fill.solid()
line.fill.fore_color.rgb = ACCENT_COLOR
line.line.fill.background()
# Total slides count
tb3 = slide.shapes.add_textbox(Inches(0.5), Inches(4.6), Inches(12.3), Inches(0.5))
tf3 = tb3.text_frame
p3 = tf3.paragraphs[0]
p3.alignment = PP_ALIGN.CENTER
run3 = p3.add_run()
run3.text = f"Total Slides: {TOTAL}"
run3.font.name = FONT_NAME
run3.font.size = Pt(18)
run3.font.color.rgb = NUM_COLOR
run3.font.italic = True
# Slide number bottom right
add_slide_number(slide, idx, TOTAL)
else:
add_title_box(slide, data["title"])
add_content_box(slide, data["bullets"])
add_slide_number(slide, idx, TOTAL)
output_path = "/tmp/workspace/herpes-zoster-ppt/Herpes_Zoster_Vaccine.pptx"
buf = BytesIO()
prs.save(buf)
with open(output_path, "wb") as f:
f.write(buf.getvalue())
print(f"Saved to: {output_path}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/herpes-zoster-ppt && python create_ppt.py
Herpes Zoster Vaccine
Presentation · PPTX
| Slide | Title | Content Source |
|---|---|---|
| 1 | Vaccine for Herpes Zoster (Title slide) | Shows "Total Slides: 7" below the title |
| 2 | Background: Herpes Zoster | Image content - HZ incidence, PHN, vaccination rationale |
| 3 | Zostavax (Live Attenuated) | Image content - FDA 2006, ages 60+, expanded 2011, Oka/Merck strain |
| 4 | Zostavax Clinical Efficacy | Image content - Phase III, 38,546 adults, 51% reduction, PHN benefit |
| 5 | Shingrix (Recombinant) | Image content - FDA 2017, gE + AS01B adjuvant, 97% efficacy, 3-yr follow-up |
| 6 | Shingrix vs. Zostavax & Immunosuppression | Image content - ACIP preference, reversion risk, immunosuppressed suitability |
| 7 | Key Takeaways | Added summary points |
2 / 7) at the bottom right of every slidehttps://chatgpt.com/share/6a5a43f6-fde8-83e8-b5b2-b77b9aedcce7 Add the content from the link given And the ppt you made above combine them both…
https://chatgpt.com/share/6a5a43f6-fde8-83e8-b5b2-b77b9aedcc…
Herpes zoster (HZ), commonly called shingles, is caused by reactivation of latent Varicella-Zoster Virus (VZV) that remains dormant in the dorsal root or cranial nerve ganglia following primary varicella infection. The incidence increases with: * Increasing age * Immunosenescence * Immunosuppressive diseases * Malignancy * HIV infection * Organ transplantation * Immunosuppressive drugs The most feared complication is Postherpetic Neuralgia (PHN). Vaccination is the most effective strategy for prevention. Feature Live Attenuated Vaccine (ZVL) Recombinant Zoster Vaccine (RZV) Virus Live attenuated Oka strain Recombinant glycoprotein E Trade name Zostavax (discontinued in many countries) Shingrix Type Live vaccine Non-live vaccine Route SC IM Doses Single Two doses Preferred No ⸻ Evolution 2006 Live attenuated zoster vaccine licensed. ↓ Reduced shingles incidence. ↓ Protection declined after 5–8 years. ↓ Not suitable for many immunocompromised patients. ↓ 2017 Recombinant zoster vaccine (Shingrix) introduced. ↓ More than 90% efficacy. ↓ Long-lasting protection. ↓ Preferred worldwide. ⸻ Recombinant Zoster Vaccine (RZV) Composition Contains: * Recombinant VZV glycoprotein E (gE) * AS01B adjuvant The adjuvant contains: * MPL (Monophosphoryl lipid A) * QS-21 These produce a strong cellular immune response. ⸻ Mechanism of Action The vaccine does not contain live virus. After IM injection: * Glycoprotein E is taken up by dendritic cells. * Antigen presentation occurs. * Activation of CD4+ T lymphocytes. * Production of neutralizing antibodies. * Boosts VZV-specific cell-mediated immunity. * Prevents viral reactivation from sensory ganglia. ⸻ Why Glycoprotein E? Glycoprotein E is: * Most abundant VZV envelope protein * Essential for viral replication * Highly immunogenic * Conserved antigen Hence selected as vaccine antigen. ⸻ Advantages of Recombinant Vaccine * No live virus * Safe in immunocompromised patients (depending on the degree and timing of immunosuppression) * Very high efficacy * Long-lasting immunity * Reduces PHN significantly ⸻ Schedule Dose 1 ↓ After 2–6 months ↓ Dose 2 ⸻ Immunocompromised Patients Second dose may be given after 1–2 months if rapid protection is needed. ⸻ Dose 0.5 mL IM Preferred site: * Deltoid muscle Never administer: * Intradermally * Intravenously * Subcutaneously (unless unavoidable per local guidance) ⸻ Storage * 2–8°C * Do not freeze * Protect from light ⸻ Age Recommendations CDC/ACIP Routine vaccination: Adults ≥50 years. Also recommended: Adults ≥19 years who are immunocompromised. ⸻ Immunocompromised Conditions Recommended in: * HIV infection * Leukemia * Lymphoma * Solid organ transplant recipients * Stem cell transplant recipients * Patients on biologics * Corticosteroid therapy * JAK inhibitors * Chemotherapy * Autoimmune diseases receiving immunosuppressants ⸻ Dermatology Indications Dermatologists should strongly consider vaccination before or during treatment (as appropriate) in patients receiving: * Methotrexate * Azathioprine * Mycophenolate mofetil * Cyclophosphamide * Cyclosporine * Systemic corticosteroids * TNF-α inhibitors * IL-17 inhibitors * IL-23 inhibitors * IL-12/23 inhibitors * Rituximab * JAK inhibitors (e.g., tofacitinib, baricitinib, upadacitinib) Patients with inflammatory dermatoses such as psoriasis, atopic dermatitis, connective tissue diseases, or autoimmune blistering diseases who are expected to receive immunosuppressive therapy should be evaluated for zoster vaccination. ⸻ Vaccine Efficacy ZOE-50 Trial Age ≥50 years Vaccine efficacy: ≈97% ⸻ ZOE-70 Trial Age ≥70 years Efficacy: ≈90% ⸻ Protection against PHN: ≈90% ⸻ Long-term follow-up: Protection persists for at least 10 years with only modest waning. ⸻ Effect on Postherpetic Neuralgia Marked reduction in: * PHN * Hospitalization * Ophthalmic zoster * Severe disease * Disseminated zoster ⸻ Contraindications Recombinant Vaccine Absolute: * Severe allergic reaction to vaccine components Temporary: * Acute moderate or severe illness * Delay until recovery Pregnancy: * Limited data; vaccination is generally deferred. ⸻ Can it be given after Herpes Zoster? Yes. Previous shingles is not a contraindication. Vaccinate after the acute illness has resolved and lesions have crusted/healed. Some guidelines suggest waiting several months in immunocompetent individuals, but there is no need to wait years. ⸻ Previous Chickenpox If a person had: * Chickenpox * Previous shingles * Positive VZV antibodies Vaccination is still recommended according to age/risk criteria because immunity wanes with time. ⸻ Previous Live Vaccine If previously vaccinated with Zostavax: Shingrix should still be administered (commonly at least 8 weeks after Zostavax). ⸻ Can it be given with other vaccines? Yes. Can be co-administered with: * Influenza vaccine * COVID-19 vaccine * Pneumococcal vaccine * RSV vaccine Use different injection sites. ⸻ Adverse Effects Local * Pain (most common) * Redness * Swelling ⸻ Systemic * Fever * Fatigue * Headache * Myalgia * Chills * Nausea Usually resolve within 2–3 days. ⸻ Rare Adverse Events * Hypersensitivity reactions * Syncope after vaccination * Very rare reports of Guillain–Barré syndrome have been described in post-marketing surveillance, but the absolute risk is very low and the benefits generally outweigh this potential risk. ⸻ Live Attenuated Vaccine (Zostavax) Composition Live attenuated Oka strain VZV. ⸻ Dose 0.65 mL SC Single dose. ⸻ Problems * Lower efficacy than RZV * Waning immunity * Live virus * Not suitable for many immunocompromised individuals ⸻ Contraindications * Pregnancy * Leukemia * Lymphoma * AIDS with severe immunosuppression * Organ transplant recipients * High-dose corticosteroids * Biological immunosuppressive therapy
~/herpes-zoster-ppt/create_combined_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from io import BytesIO
# ── Design tokens ──────────────────────────────────────────────
FONT = "Times New Roman"
BODY_PT = Pt(23)
TITLE_PT = Pt(30)
COVER_PT = Pt(38)
SUBCOVER_PT = Pt(22)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
NAVY = RGBColor(0x1A, 0x3A, 0x5C)
LIGHT_NAVY = RGBColor(0xD6, 0xE4, 0xF0)
DARK_TEXT = RGBColor(0x1A, 0x1A, 0x1A)
GREY = RGBColor(0x88, 0x88, 0x88)
GOLD = RGBColor(0xC8, 0xA0, 0x00)
# ── Slide data ─────────────────────────────────────────────────
# Each entry: ("title", [bullet, ...])
# title-slide entry: ("COVER", subtitle)
slides_data = [
("COVER", "Q11.10 — Immunosuppression"),
("Background: Herpes Zoster (HZ)", [
"• HZ (shingles): reactivation of latent VZV from dorsal root or cranial nerve ganglia after primary varicella.",
"• Incidence in unvaccinated: 2.15–4.05 cases / 1000 person-years; rises steeply with age.",
"• Most feared complication: Post-herpetic Neuralgia (PHN) — persistent neuropathic pain.",
"• Vaccination is the most effective prevention strategy.",
]),
("Risk Factors for HZ", [
"• Advancing age and immunosenescence.",
"• Immunosuppressive diseases: HIV infection, leukemia, lymphoma, malignancy.",
"• Organ transplantation and stem cell transplantation.",
"• Immunosuppressive drugs: corticosteroids, biologics, JAK inhibitors, chemotherapy.",
]),
("Zostavax — Overview (Live Attenuated)", [
"• First FDA-approved HZ vaccine (2006); lyophilized Oka/Merck live-attenuated VZV.",
"• Initially approved for adults ≥60 yrs; expanded to 50–59 yrs in 2011.",
"• Route: Single 0.65 mL subcutaneous (SC) injection.",
"• Discontinued or replaced in many countries due to lower efficacy and waning protection.",
]),
("Zostavax — Efficacy & Limitations", [
"• Phase III Shingles Prevention Study (38,546 adults ≥60 yrs): reduced HZ incidence by 51%.",
"• Vaccinated breakthrough cases had less pain and lower PHN incidence vs. placebo.",
"• Protection declined significantly after 5–8 years.",
"• Contraindicated in pregnancy, leukemia/lymphoma, AIDS, transplant recipients, high-dose steroids.",
]),
("Shingrix — Composition & Adjuvant", [
"• Lyophilized recombinant vaccine: VZV glycoprotein E (gE) + AS01B adjuvant system.",
"• AS01B adjuvant contains MPL (Monophosphoryl lipid A) and QS-21.",
"• The adjuvant drives a strong CD4+ T-cell and antibody response.",
"• Contains NO live virus — safe profile for immunocompromised patients.",
]),
("Why Glycoprotein E (gE)?", [
"• Most abundant VZV envelope protein — present on every infected cell.",
"• Essential for viral replication and cell-to-cell spread.",
"• Highly immunogenic and antigenically conserved across VZV strains.",
"• Ideal target antigen for generating neutralising antibodies and T-cell immunity.",
]),
("Shingrix — Mechanism of Action", [
"• Administered IM; gE antigen taken up by dendritic cells at injection site.",
"• Dendritic cells present antigen → activation of CD4+ T lymphocytes.",
"• Stimulates production of neutralising antibodies against VZV.",
"• Boosts VZV-specific cell-mediated immunity → prevents reactivation from sensory ganglia.",
]),
("Shingrix — Vaccine Efficacy", [
"• ZOE-50 Trial (adults ≥50 yrs): vaccine efficacy ≈ 97% against HZ.",
"• ZOE-70 Trial (adults ≥70 yrs): efficacy ≈ 90% — protection maintained in older adults.",
"• Protection against PHN: ≈ 90%; also reduces ophthalmic zoster and disseminated disease.",
"• Long-term follow-up: protection persists ≥10 years with only modest waning.",
]),
("Shingrix vs. Zostavax — Comparison", [
"• Shingrix (RZV): recombinant gE, non-live, IM, 2 doses; Zostavax (ZVL): live Oka strain, SC, single dose.",
"• Efficacy: Shingrix ≈97% vs. Zostavax ≈51%; ACIP recommends Shingrix over Zostavax.",
"• Reversion to high virulence: risk exists with live vaccines (ZVL), absent with recombinant (RZV).",
"• Shingrix preferred even if previously vaccinated with Zostavax (give ≥8 weeks after ZVL).",
]),
("Schedule, Dosing & Storage", [
"• Two-dose series: Dose 1 → wait 2–6 months → Dose 2 (0.5 mL IM, deltoid).",
"• Immunocompromised: second dose may be given after 1–2 months for rapid protection.",
"• Never administer intradermally, intravenously, or subcutaneously.",
"• Storage: 2–8°C; do not freeze; protect from light.",
]),
("Age Recommendations (CDC/ACIP)", [
"• Routine vaccination: all adults ≥50 years.",
"• Also recommended: adults ≥19 years who are immunocompromised.",
"• Previous chickenpox, shingles, or positive VZV antibodies: vaccination still recommended.",
"• Can be co-administered with influenza, COVID-19, pneumococcal, or RSV vaccines (different sites).",
]),
("Immunocompromised Patients", [
"• Recommended in: HIV, leukemia, lymphoma, solid organ transplant, stem cell transplant.",
"• Also indicated for: patients on biologics, corticosteroids, JAK inhibitors, or chemotherapy.",
"• Autoimmune diseases receiving immunosuppressants also qualify.",
"• Non-live vaccine (RZV) — no reversion risk — preferred over ZVL in all immunocompromised individuals.",
]),
("Dermatology Indications", [
"• Evaluate for zoster vaccination before/during immunosuppressive therapy in dermatology patients.",
"• Traditional agents: methotrexate, azathioprine, mycophenolate, cyclophosphamide, cyclosporine, systemic corticosteroids.",
"• Biologics: TNF-α, IL-17, IL-23, IL-12/23 inhibitors, rituximab; small molecules: JAK inhibitors.",
"• Conditions: psoriasis, atopic dermatitis, connective tissue diseases, autoimmune blistering diseases.",
]),
("Effect on PHN & Complications", [
"• Shingrix markedly reduces incidence and severity of PHN.",
"• Also reduces: hospitalisation, ophthalmic zoster, disseminated zoster, severe disease.",
"• Even if breakthrough HZ occurs post-vaccination, disease is milder and shorter.",
"• Overall burden of HZ-related morbidity substantially lower in vaccinated individuals.",
]),
("Contraindications & Special Situations", [
"• Absolute contraindication: severe allergic reaction to any vaccine component.",
"• Defer vaccination during acute moderate/severe illness; limited data in pregnancy — generally deferred.",
"• Previous shingles is NOT a contraindication — vaccinate after lesions have crusted and healed.",
"• Prior Zostavax: administer Shingrix ≥8 weeks later; prior VZV antibodies: vaccinate per age/risk criteria.",
]),
("Adverse Effects", [
"• Local (very common): injection-site pain (most frequent), redness, swelling.",
"• Systemic: fever, fatigue, headache, myalgia, chills, nausea — usually resolve within 2–3 days.",
"• Rare: hypersensitivity reactions; post-marketing reports of Guillain-Barré syndrome (very low absolute risk).",
"• Benefits of vaccination far outweigh the rare adverse event risk in all recommended populations.",
]),
("Key Takeaways", [
"• Two HZ vaccines: Zostavax (live, 2006, ~51% efficacy) and Shingrix (recombinant, 2017, ~97% efficacy).",
"• Shingrix is the current globally preferred vaccine; ACIP recommends it for adults ≥50 yrs and immunocompromised ≥19 yrs.",
"• Recombinant (non-live) formulation is safe for immunocompromised patients and avoids reversion risk.",
"• Vaccination significantly reduces HZ incidence, PHN, ophthalmic zoster, and hospitalisations.",
]),
]
TOTAL = len(slides_data) # 18
# ── Helpers ────────────────────────────────────────────────────
def set_bg(slide, color=WHITE):
fill = slide.background.fill
fill.solid()
fill.fore_color.rgb = color
def add_rect(slide, left, top, width, height, color, line=False):
shape = slide.shapes.add_shape(1, left, top, width, height)
shape.fill.solid()
shape.fill.fore_color.rgb = color
if not line:
shape.line.fill.background()
return shape
def textbox(slide, left, top, width, height, wrap=True):
tb = slide.shapes.add_textbox(left, top, width, height)
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = Inches(0.08)
tf.margin_right = Inches(0.08)
tf.margin_top = Inches(0.05)
tf.margin_bottom= Inches(0.05)
return tf
def add_run(para, text, size, bold=False, italic=False, color=DARK_TEXT):
run = para.add_run()
run.text = text
run.font.name = FONT
run.font.size = size
run.font.bold = bold
run.font.italic= italic
run.font.color.rgb = color
return run
def slide_number(slide, num, total):
tf = textbox(slide, Inches(11.6), Inches(7.1), Inches(1.6), Inches(0.35))
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.RIGHT
add_run(p, f"{num} / {total}", Pt(13), color=GREY)
# ── Build presentation ─────────────────────────────────────────
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
for idx, (title, content) in enumerate(slides_data, start=1):
slide = prs.slides.add_slide(blank)
set_bg(slide, WHITE)
if title == "COVER":
# ── Full navy header band ──
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(3.2), NAVY)
# Main title inside header
tf = textbox(slide, Inches(0.6), Inches(0.55), Inches(12.1), Inches(2.0))
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
add_run(p, "Vaccine for Herpes Zoster", COVER_PT, bold=True, color=WHITE)
# Gold divider
add_rect(slide, Inches(3.2), Inches(2.85), Inches(6.9), Inches(0.06), GOLD)
# Subtitle
tf2 = textbox(slide, Inches(0.6), Inches(3.05), Inches(12.1), Inches(0.7))
p2 = tf2.paragraphs[0]
p2.alignment = PP_ALIGN.CENTER
add_run(p2, content, SUBCOVER_PT, color=NAVY)
# Total slides
tf3 = textbox(slide, Inches(0.6), Inches(3.85), Inches(12.1), Inches(0.55))
p3 = tf3.paragraphs[0]
p3.alignment = PP_ALIGN.CENTER
add_run(p3, f"Total Slides: {TOTAL}", Pt(17), italic=True, color=GREY)
# Bottom bar
add_rect(slide, Inches(0), Inches(7.38), Inches(13.333), Inches(0.12), NAVY)
slide_number(slide, idx, TOTAL)
else:
# ── Top navy title bar ──
add_rect(slide, Inches(0), Inches(0), Inches(13.333), Inches(1.18), NAVY)
# Title text inside bar
tf = textbox(slide, Inches(0.45), Inches(0.08), Inches(12.4), Inches(1.02))
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.LEFT
add_run(p, title, TITLE_PT, bold=True, color=WHITE)
# Light background for content area
add_rect(slide, Inches(0), Inches(1.18), Inches(13.333), Inches(6.2), LIGHT_NAVY)
# White content card
add_rect(slide, Inches(0.4), Inches(1.32), Inches(12.53), Inches(5.78), WHITE)
# Bullets
tf2 = textbox(slide, Inches(0.65), Inches(1.45), Inches(12.0), Inches(5.5))
for i, bullet in enumerate(content):
para = tf2.paragraphs[0] if i == 0 else tf2.add_paragraph()
para.space_before = Pt(10)
para.space_after = Pt(6)
add_run(para, bullet, BODY_PT, color=DARK_TEXT)
# Bottom bar
add_rect(slide, Inches(0), Inches(7.38), Inches(13.333), Inches(0.12), NAVY)
slide_number(slide, idx, TOTAL)
# ── Save ───────────────────────────────────────────────────────
out = "/tmp/workspace/herpes-zoster-ppt/Herpes_Zoster_Vaccine_Combined.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {out}")
print(f"Total slides: {len(prs.slides)}")
cd /tmp/workspace/herpes-zoster-ppt && python create_combined_ppt.py
Herpes Zoster Vaccine Combined
Presentation · PPTX
| # | Slide Title |
|---|---|
| 1 | Title slide — Vaccine for Herpes Zoster (Q11.10 — Immunosuppression) |
| 2 | Background: Herpes Zoster |
| 3 | Risk Factors for HZ (new) |
| 4 | Zostavax — Overview (Live Attenuated) |
| 5 | Zostavax — Efficacy & Limitations |
| 6 | Shingrix — Composition & Adjuvant (new) |
| 7 | Why Glycoprotein E? (new) |
| 8 | Shingrix — Mechanism of Action (new) |
| 9 | Shingrix — Vaccine Efficacy (ZOE-50 & ZOE-70) (new) |
| 10 | Shingrix vs. Zostavax Comparison (new) |
| 11 | Schedule, Dosing & Storage (new) |
| 12 | Age Recommendations (CDC/ACIP) (new) |
| 13 | Immunocompromised Patients (new) |
| 14 | Dermatology Indications (new) |
| 15 | Effect on PHN & Complications (new) |
| 16 | Contraindications & Special Situations (new) |
| 17 | Adverse Effects (new) |
| 18 | Key Takeaways |