Make a presentation ppt on naco 2026 guidelines in md medicine level
NACO 2026 guidelines HIV AIDS India National AIDS Control Organisation
https://www.differentiatedservicedelivery.org/wp-content/uplβ¦
NACO HIV care treatment guidelines 2025 2026 ART regimen India update
https://www.who.int/news/item/07-01-2026-who-releases-updateβ¦
mkdir -p /tmp/workspace/naco2026-ppt && ls /tmp/workspace/naco2026-ppt/
Are you gonna make it?
Banay ne bhai
~/naco2026-ppt/build_pptx.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.util import Inches, Pt
import copy
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
# ββ COLOUR PALETTE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RED = RGBColor(0xC0, 0x20, 0x20) # deep red (NACO / AIDS ribbon)
DARK_NAVY = RGBColor(0x0D, 0x2B, 0x55) # dark navy
MID_BLUE = RGBColor(0x1A, 0x5C, 0x96) # mid blue
ORANGE = RGBColor(0xE8, 0x6B, 0x1A) # accent orange
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_BG = RGBColor(0xF4, 0xF7, 0xFB) # near-white slide bg
YELLOW = RGBColor(0xFF, 0xD7, 0x00)
GRAY_TEXT = RGBColor(0x33, 0x33, 0x33)
LIGHT_RED = RGBColor(0xF9, 0xE6, 0xE6)
TEAL = RGBColor(0x00, 0x7B, 0x83)
def add_rect(slide, l, t, w, h, fill, alpha=None):
shape = slide.shapes.add_shape(1, Inches(l), Inches(t), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill
shape.line.fill.background()
return shape
def add_textbox(slide, l, t, w, h, text, size, bold=False, color=WHITE,
align=PP_ALIGN.LEFT, wrap=True, italic=False):
tb = slide.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = Pt(0); tf.margin_right = Pt(0)
tf.margin_top = Pt(0); tf.margin_bottom = Pt(0)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_multiline_tb(slide, l, t, w, h, lines, size, color=GRAY_TEXT,
bold=False, spacing=None, align=PP_ALIGN.LEFT):
"""lines = list of (text, bold_override, color_override)"""
tb = slide.shapes.add_textbox(Inches(l), Inches(t), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(2); tf.margin_right = Pt(2)
tf.margin_top = Pt(2); tf.margin_bottom = Pt(2)
first = True
for item in lines:
if isinstance(item, str):
txt, b, c = item, bold, color
else:
txt = item[0]
b = item[1] if len(item) > 1 else bold
c = item[2] if len(item) > 2 else color
if first:
p = tf.paragraphs[0]; first = False
else:
p = tf.add_paragraph()
p.alignment = align
if spacing:
p.space_before = Pt(spacing)
run = p.add_run()
run.text = txt
run.font.size = Pt(size)
run.font.bold = b
run.font.color.rgb = c
run.font.name = "Calibri"
return tb
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 1 β TITLE SLIDE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
# Full background
add_rect(s, 0, 0, 13.333, 7.5, DARK_NAVY)
# Red accent bar left
add_rect(s, 0, 0, 0.45, 7.5, RED)
# Gold/orange accent top bar
add_rect(s, 0.45, 0, 12.883, 0.12, ORANGE)
# Bottom strip
add_rect(s, 0.45, 7.2, 12.883, 0.3, MID_BLUE)
# AIDS ribbon icon (text symbol)
add_textbox(s, 11.8, 0.8, 1.2, 1.2, "π", 48, color=RED, align=PP_ALIGN.CENTER)
# Main title
add_textbox(s, 0.7, 1.3, 10.5, 1.4,
"NACO GUIDELINES 2026",
40, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
# Subtitle
add_textbox(s, 0.7, 2.75, 10.5, 0.7,
"National AIDS Control Organisation β HIV Care & Treatment",
22, bold=False, color=ORANGE, align=PP_ALIGN.LEFT)
# Line
add_rect(s, 0.7, 3.5, 9.5, 0.04, ORANGE)
add_textbox(s, 0.7, 3.65, 10.5, 0.55,
"MD Medicine Postgraduate Seminar | NACP-V (2021β2026)",
17, bold=False, color=RGBColor(0xCC, 0xDD, 0xFF), align=PP_ALIGN.LEFT)
add_textbox(s, 0.7, 4.3, 10.5, 0.5,
"Incorporating WHO Updated Recommendations β January 2026",
15, bold=False, color=RGBColor(0xAA, 0xBB, 0xDD), align=PP_ALIGN.LEFT, italic=True)
# Bottom credits
add_textbox(s, 0.7, 6.5, 11, 0.55,
"Reference: NACO National Guidelines for HIV Care & Treatment 2021 | WHO HIV Clinical Management Guidelines 2026",
11, bold=False, color=RGBColor(0x88, 0x99, 0xBB), align=PP_ALIGN.LEFT)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 2 β OVERVIEW / INDEX
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, DARK_NAVY)
add_rect(s, 0, 1.05, 0.07, 6.45, RED)
add_textbox(s, 0.3, 0.18, 12, 0.7, "OUTLINE OF PRESENTATION", 26, bold=True, color=WHITE)
topics = [
("1", "Epidemiology & India HIV Burden 2025β26"),
("2", "NACP-V Goals & 95-95-95 Targets"),
("3", "HIV Diagnosis β Testing Algorithm"),
("4", "ART Initiation β Treat All Policy"),
("5", "First-Line ART Regimens (Adults & Special Populations)"),
("6", "Second-Line & Third-Line ART"),
("7", "WHO 2026 Updates β New Recommendations"),
("8", "Opportunistic Infection Prophylaxis & Management"),
("9", "HIV-TB Co-infection"),
("10", "PPTCT β Prevention of Parent-to-Child Transmission"),
("11", "PrEP & PEP"),
("12", "Monitoring β Viral Load, CD4, Treatment Failure"),
("13", "ART in Special Populations"),
("14", "Key Summary & Take-Home Points"),
]
col1 = topics[:7]
col2 = topics[7:]
for i, (num, title) in enumerate(col1):
y = 1.2 + i * 0.76
add_rect(s, 0.3, y, 0.5, 0.5, RED)
add_textbox(s, 0.3, y+0.05, 0.5, 0.4, num, 14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(s, 0.9, y+0.05, 5.5, 0.5, title, 13, bold=False, color=DARK_NAVY)
for i, (num, title) in enumerate(col2):
y = 1.2 + i * 0.76
add_rect(s, 6.9, y, 0.5, 0.5, MID_BLUE)
add_textbox(s, 6.9, y+0.05, 0.5, 0.4, num, 14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(s, 7.45, y+0.05, 5.5, 0.5, title, 13, bold=False, color=DARK_NAVY)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 3 β EPIDEMIOLOGY
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, RED)
add_rect(s, 0, 1.05, 0.07, 6.45, ORANGE)
add_textbox(s, 0.3, 0.15, 12, 0.75, "EPIDEMIOLOGY β HIV BURDEN IN INDIA", 26, bold=True, color=WHITE)
# Stat boxes
stats = [
("~24 Lakh", "PLHIV in India\n(2023 estimate)"),
("~65,000", "New infections\nper year"),
("~42,000", "AIDS-related\ndeaths/year"),
("78%", "Adults on ART\n(Treatment Coverage)"),
]
for i, (val, label) in enumerate(stats):
x = 0.4 + i * 3.2
add_rect(s, x, 1.2, 2.9, 1.5, DARK_NAVY)
add_textbox(s, x, 1.3, 2.9, 0.85, val, 28, bold=True, color=YELLOW, align=PP_ALIGN.CENTER)
add_textbox(s, x, 2.1, 2.9, 0.6, label, 11, bold=False, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 2.95, 12.5, 0.04, ORANGE)
bullets = [
"βΆ India has the 3rd largest HIV epidemic globally after South Africa and Nigeria",
"βΆ High risk groups: Men who have sex with men (MSM), People who inject drugs (PWID), Sex workers, Transgender persons",
"βΆ States with highest burden: Maharashtra, Andhra Pradesh, Karnataka, Tamil Nadu, Telangana, Manipur",
"βΆ Sexual transmission accounts for ~86% of new infections; PWID ~5%; PPTCT ~4%",
"βΆ NACP-V target: Reduce new infections & AIDS-related deaths by 80% by 2026 (from 2010 baseline)",
"βΆ Global target: End AIDS as public health threat by 2030 (UNAIDS 95-95-95 framework)",
]
add_multiline_tb(s, 0.3, 3.05, 12.5, 4.2, bullets, 13.5, color=DARK_NAVY, spacing=3)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 4 β 95-95-95 TARGETS
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, MID_BLUE)
add_rect(s, 0, 1.05, 0.07, 6.45, RED)
add_textbox(s, 0.3, 0.15, 12, 0.75, "NACP-V GOALS & UNAIDS 95-95-95 TARGETS", 26, bold=True, color=WHITE)
boxes = [
(RED, "95%", "1st 95", "Of all PLHIV\nknow their\nHIV status"),
(MID_BLUE, "95%", "2nd 95", "Of those who\nknow their status\nare on ART"),
(TEAL, "95%", "3rd 95", "Of those on ART\nachieve viral\nsuppression"),
]
for i, (col, pct, label, desc) in enumerate(boxes):
x = 0.8 + i * 4.1
add_rect(s, x, 1.2, 3.5, 3.8, col)
add_textbox(s, x, 1.3, 3.5, 1.2, pct, 52, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(s, x, 2.5, 3.5, 0.5, label, 16, bold=True, color=YELLOW, align=PP_ALIGN.CENTER)
add_textbox(s, x, 3.05, 3.5, 0.95, desc, 13, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 5.2, 12.5, 0.04, ORANGE)
nacp_goals = [
"NACP-V Strategic Objectives (2021β2026):",
"β’ Zero new HIV infections (esp. vertical transmission β EMTCT goal)",
"β’ Zero AIDS-related deaths (universal access to free ART & OI management)",
"β’ Zero discrimination (legal protection, stigma reduction, rights-based approach)",
"β’ India's current status: ~78% diagnosed, ~72% on ART, ~89% virally suppressed (among those on ART)",
]
add_multiline_tb(s, 0.3, 5.3, 12.5, 2.0, nacp_goals, 13, color=DARK_NAVY, spacing=2)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 5 β HIV TESTING / DIAGNOSIS
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, DARK_NAVY)
add_rect(s, 0, 1.05, 0.07, 6.45, TEAL)
add_textbox(s, 0.3, 0.15, 12, 0.75, "HIV DIAGNOSIS β TESTING ALGORITHM (NACO)", 26, bold=True, color=WHITE)
# Algorithm boxes
steps = [
(MID_BLUE, "STEP 1 β Screening", "Rapid antibody test (ELISA / Rapid Kit 1)\nUsed at ICTC/PPTCT/Blood banks\nReactive β proceed to Step 2"),
(TEAL, "STEP 2 β Confirmatory", "Repeat reactive with different Rapid Kit 2\n(different antigen / format)\nReactive β proceed to Step 3"),
(ORANGE, "STEP 3 β Tie-breaker", "Third rapid kit (Kit 3) or Western Blot\nALL 3 reactive = HIV Positive\nDiscordant β HIV-indeterminate β repeat in 14 days"),
]
for i, (col, title, desc) in enumerate(steps):
x = 0.4 + i * 4.2
add_rect(s, x, 1.15, 3.8, 0.55, col)
add_textbox(s, x, 1.2, 3.8, 0.45, title, 13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, x, 1.7, 3.8, 1.6, RGBColor(0xEE, 0xF4, 0xFB))
add_textbox(s, x+0.1, 1.75, 3.6, 1.5, desc, 12, color=DARK_NAVY)
# Arrows between boxes
for xi in [4.2, 8.4]:
add_textbox(s, xi, 1.9, 0.4, 0.5, "β", 22, bold=True, color=RED, align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 3.45, 12.5, 0.04, MID_BLUE)
points = [
("NAT Testing:", "Nucleic Acid Testing β used for blood bank screening to detect window period donations"),
("Window Period:", "~3β4 weeks (4th gen Ag/Ab), 6 weeks (3rd gen Ab), 3 months (2nd gen). Repeat if high-risk exposure"),
("4th Generation tests:", "Detect both p24 Antigen AND anti-HIV antibodies simultaneously β reduces window period"),
("HIV RNA PCR:", "Used for infant diagnosis <18 months (maternal antibodies confound serology); also virological monitoring"),
("CD4 count:", "Not for diagnosis; used at baseline for staging, OI prophylaxis guidance, and monitoring"),
("WHO Clinical Staging:", "Stage 1 (Asymptomatic) β Stage 2 (Mild) β Stage 3 (Advanced) β Stage 4 (AIDS-defining)"),
]
y = 3.55
for label, text in points:
add_multiline_tb(s, 0.4, y, 12.3, 0.45,
[(f"β {label} ", True, RED), (text, False, DARK_NAVY)],
12, spacing=0)
y += 0.5
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 6 β ART INITIATION / TREAT ALL
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, RED)
add_rect(s, 0, 1.05, 0.07, 6.45, ORANGE)
add_textbox(s, 0.3, 0.15, 12, 0.75, "ART INITIATION β TREAT ALL POLICY", 26, bold=True, color=WHITE)
# Big callout box
add_rect(s, 0.4, 1.15, 12.3, 1.0, DARK_NAVY)
add_textbox(s, 0.5, 1.2, 12.1, 0.9,
"TREAT ALL: Initiate ART in ALL HIV-positive individuals regardless of CD4 count or WHO clinical stage",
19, bold=True, color=YELLOW, align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 2.3, 12.5, 0.04, ORANGE)
col_l = [
("When to START:", True, RED),
("β’ All PLHIV β regardless of CD4 count or stage (Treat All, since 2017)", False, DARK_NAVY),
("β’ Preferred: Same-day ART (rapid initiation) if patient is ready & no contraindication", False, DARK_NAVY),
("β’ Within 3β5 days if baseline workup needed", False, DARK_NAVY),
("", False, DARK_NAVY),
("Deferral Situations (temporary):", True, RED),
("β’ Active cryptococcal meningitis β defer ART 4β6 weeks post antifungal Rx", False, DARK_NAVY),
("β’ Active TB with CD4 >50 β defer ART 8 weeks (start antitubercular first)", False, DARK_NAVY),
("β’ Active TB with CD4 <50 β start ART within 2 weeks of ATT", False, DARK_NAVY),
("β’ Severe OI β stabilize first, then start ART", False, DARK_NAVY),
]
col_r = [
("Benefits of Early ART:", True, MID_BLUE),
("β’ Prevents disease progression & AIDS-defining events", False, DARK_NAVY),
("β’ Reduces incident TB by ~65%", False, DARK_NAVY),
("β’ Prevents HIV transmission (U=U: Undetectable = Untransmittable)", False, DARK_NAVY),
("β’ Reduces non-AIDS co-morbidities (CVD, renal, malignancy)", False, DARK_NAVY),
("", False, DARK_NAVY),
("IRIS β Immune Reconstitution Inflammatory Syndrome:", True, MID_BLUE),
("β’ Paradoxical worsening after ART start", False, DARK_NAVY),
("β’ Most common with TB, Cryptococcus, CMV", False, DARK_NAVY),
("β’ Management: Continue ART; steroids for severe IRIS", False, DARK_NAVY),
]
add_multiline_tb(s, 0.35, 2.4, 6.2, 4.9, col_l, 12, spacing=1)
add_multiline_tb(s, 6.8, 2.4, 6.2, 4.9, col_r, 12, spacing=1)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 7 β FIRST LINE ART REGIMENS
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, MID_BLUE)
add_rect(s, 0, 1.05, 0.07, 6.45, RED)
add_textbox(s, 0.3, 0.15, 12, 0.75, "FIRST-LINE ART REGIMENS β ADULTS & ADOLESCENTS", 26, bold=True, color=WHITE)
# Table header
cols_w = [4.0, 3.8, 4.8]
cols_x = [0.3, 4.35, 8.2]
headers = ["Regimen", "Components", "Notes / Indications"]
for i, (hdr, cx, cw) in enumerate(zip(headers, cols_x, cols_w)):
add_rect(s, cx, 1.1, cw-0.05, 0.52, DARK_NAVY)
add_textbox(s, cx+0.05, 1.15, cw-0.1, 0.42, hdr, 13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rows = [
("TLD\n(Preferred)", "TDF + 3TC + DTG\n(Tenofovir + Lamivudine\n+ Dolutegravir)", "WHO 2026 & NACO preferred\nFirst-line for MOST adults\nHigh barrier to resistance"),
("TLE\n(Alternative)", "TDF + 3TC + EFV 400mg\n(Efavirenz low dose)", "When DTG not available or\nNeuropsychiatric side-effects\nto DTG"),
("ABC/3TC + DTG", "Abacavir + Lamivudine\n+ Dolutegravir", "When TDF contraindicated\n(CrCl <50 mL/min)\nTest HLA-B*5701 before ABC"),
("DTG + 3TC\n(2-drug, WHO 2026)", "Dolutegravir + Lamivudine", "NEW WHO 2026 rec.\nTreatment simplification\nfor virally stable adults"),
]
row_colors = [LIGHT_RED, RGBColor(0xE8, 0xF4, 0xFF), RGBColor(0xE8, 0xFF, 0xF0), RGBColor(0xFF, 0xF8, 0xE0)]
for ri, (r0, r1, r2) in enumerate(rows):
y = 1.65 + ri * 1.18
rh = 1.15
for ci, (txt, cx, cw, rc) in enumerate(zip([r0,r1,r2], cols_x, cols_w, [row_colors[ri]]*3)):
add_rect(s, cx, y, cw-0.05, rh, rc)
bold_f = (ci == 0)
col_f = RED if ci == 0 else DARK_NAVY
add_textbox(s, cx+0.08, y+0.08, cw-0.2, rh-0.1, txt, 11.5, bold=bold_f, color=col_f)
# Bottom note
add_rect(s, 0.3, 6.45, 12.5, 0.05, ORANGE)
add_textbox(s, 0.3, 6.55, 12.5, 0.8,
"TDF = Tenofovir Disoproxil Fumarate | 3TC = Lamivudine | DTG = Dolutegravir | EFV = Efavirenz | ABC = Abacavir | INSTI = Integrase Strand Transfer Inhibitor",
10.5, color=RGBColor(0x44, 0x44, 0x66), italic=True)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 8 β SECOND LINE & THIRD LINE ART
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, DARK_NAVY)
add_rect(s, 0, 1.05, 0.07, 6.45, TEAL)
add_textbox(s, 0.3, 0.15, 12, 0.75, "SECOND-LINE & THIRD-LINE ART", 26, bold=True, color=WHITE)
# Left column β 2nd line
add_rect(s, 0.3, 1.12, 5.9, 0.5, RED)
add_textbox(s, 0.35, 1.17, 5.8, 0.4, "SECOND-LINE ART", 15, bold=True, color=WHITE)
sl = [
("Indication:", "Virological failure on 1st line (VL >1000 c/mL on 2 readings 3 months apart after enhanced adherence counselling)"),
("Backbone change:", "Switch BOTH NRTIs:\n β’ If 1st line had TDF β switch to AZT + 3TC\n β’ If 1st line had AZT β switch to TDF + 3TC"),
("Add Boosted PI:", "LPV/r (Lopinavir/ritonavir) β standard 2nd line\nDRV/r (Darunavir/ritonavir) β WHO 2026 PREFERRED over LPV/r or ATV/r"),
("Preferred 2nd line\n(WHO 2026):", "AZT + 3TC + DRV/r\n(or TDF + 3TC + DRV/r if prior AZT-based 1st line)"),
("Key point:", "Genotype resistance testing preferred before 2nd line switch if available"),
]
y = 1.7
for label, text in sl:
add_rect(s, 0.3, y, 1.5, 0.58, MID_BLUE)
add_textbox(s, 0.32, y+0.05, 1.46, 0.48, label, 10, bold=True, color=WHITE)
add_rect(s, 1.82, y, 4.35, 0.58, RGBColor(0xEE, 0xF4, 0xFB))
add_textbox(s, 1.9, y+0.04, 4.2, 0.5, text, 10.5, color=DARK_NAVY)
y += 0.64
# Right column β 3rd line
add_rect(s, 6.9, 1.12, 6.0, 0.5, TEAL)
add_textbox(s, 6.95, 1.17, 5.9, 0.4, "THIRD-LINE ART", 15, bold=True, color=WHITE)
tl = [
("Indication:", "Virological failure on 2nd line (PVL >10,000 c/mL confirmed; or PVL 1000β10,000: repeat after 3 months)"),
("Management:", "Referral to Paediatric/Adult Centre of Excellence (PCoE / SACEP)"),
("Drugs used:", "New drug classes β minimal cross-resistance:\nβ’ Darunavir/ritonavir (if not already used)\nβ’ Raltegravir / Dolutegravir (if INSTI-naive)\nβ’ Etravirine (NNRTI 2nd gen)\nβ’ Maraviroc (CCR5 antagonist)"),
("Principle:", "β₯2 fully active drugs from β₯2 different drug classes"),
("Genotype testing:", "Mandatory before 3rd line initiation"),
]
y = 1.7
for label, text in tl:
add_rect(s, 6.9, y, 1.5, 0.68, ORANGE)
add_textbox(s, 6.92, y+0.05, 1.46, 0.58, label, 10, bold=True, color=WHITE)
add_rect(s, 8.42, y, 4.45, 0.68, RGBColor(0xF0, 0xFB, 0xF8))
add_textbox(s, 8.5, y+0.04, 4.3, 0.6, text, 10.5, color=DARK_NAVY)
y += 0.74
add_rect(s, 0.3, 6.55, 12.5, 0.04, ORANGE)
add_textbox(s, 0.3, 6.62, 12.5, 0.7,
"WHO 2026 Update: DRV/r replaces LPV/r and ATV/r as the preferred boosted PI in second-line regimens. | Tenofovir and Abacavir may be reused in subsequent regimens.",
11, color=RED, italic=True, bold=True)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 9 β WHO 2026 UPDATES
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, DARK_NAVY)
add_rect(s, 0, 0, 13.333, 1.05, ORANGE)
add_rect(s, 0, 1.05, 0.07, 6.45, YELLOW)
add_textbox(s, 0.3, 0.1, 12, 0.8, "WHO 2026 HIV GUIDELINES β KEY UPDATES (January 2026)", 24, bold=True, color=DARK_NAVY)
updates = [
("π΄", "DTG-based regimens CONFIRMED as preferred option for INITIAL and SUBSEQUENT HIV treatment across all populations"),
("π΄", "DRV/r (Darunavir/Ritonavir) is now PREFERRED boosted PI β replaces ATV/r and LPV/r in 2nd-line regimens"),
("π΄", "Long-Acting Injectable ART: CAB-LA (Cabotegravir LA) + RPV-LA (Rilpivirine LA) β recommended for adults/adolescents who struggle with daily oral adherence"),
("π΄", "Oral 2-Drug Regimens (e.g., DTG + 3TC) β recommended as treatment simplification for clinically stable, virally suppressed adults"),
("π΄", "Tenofovir (TDF/TAF) and Abacavir CAN be reused in subsequent regimens based on improved outcomes evidence"),
("π΅", "TB Preventive Therapy (TPT): 1HP (Isoniazid + Rifapentine weekly x4 wks) now a viable short-course option for PLHIV"),
("π΅", "Vertical Transmission: Updated guidance on ARV prophylaxis for infants β strengthened options to achieve EMTCT"),
("π΅", "Viral suppression target: <200 copies/mL (operational) or <50 copies/mL (laboratory) β both valid for monitoring"),
]
for i, (icon, text) in enumerate(updates):
y = 1.1 + i * 0.76
col = RED if icon == "π΄" else MID_BLUE
add_rect(s, 0.3, y, 0.45, 0.62, col)
add_textbox(s, 0.3, y+0.08, 0.45, 0.46, icon, 14, align=PP_ALIGN.CENTER)
add_textbox(s, 0.85, y+0.08, 12.1, 0.55, text, 13, color=WHITE)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 10 β OI PROPHYLAXIS & MANAGEMENT
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, TEAL)
add_rect(s, 0, 1.05, 0.07, 6.45, RED)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "OPPORTUNISTIC INFECTION PROPHYLAXIS & MANAGEMENT", 24, bold=True, color=WHITE)
# Table
hdrs = ["OI", "When (CD4)", "Prophylaxis Drug", "Treatment Drug", "Duration"]
hw = [1.8, 1.5, 2.5, 3.5, 2.0]
hx = [0.3, 2.12, 3.65, 6.18, 9.7]
for h, cx, cw in zip(hdrs, hx, hw):
add_rect(s, cx, 1.1, cw-0.05, 0.48, DARK_NAVY)
add_textbox(s, cx+0.05, 1.15, cw-0.1, 0.38, h, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
rows = [
("PCP\n(P. jirovecii)", "<200\nor stage 3/4", "Co-trimoxazole\n(TMP-SMX DS OD)", "TMP-SMX high dose\nx 21 days", "Until CD4 >200\nfor β₯3 months"),
("Toxoplasma", "<100\n(or Toxo IgG+)", "Co-trimoxazole DS BD\nor TMP-SMX DS OD", "Pyrimeth+Sulfadiazine\n+ Folinic acid x 6wk", "Secondary: lifelong\nuntil CD4 >200"),
("MAC", "<50", "Azithromycin 1200mg\nweekly", "Clarithromycin +\nEthambutol Β± Rifabutin", "Lifelong unless\nCD4 >100 sustained"),
("Cryptococcus\n(secondary)", "After treatment\ncomplete", "Fluconazole 200mg OD", "Amphotericin B +\nFlucytosine (induction)", "Consolidation:\nFluconazole 400mg x8wk\nMaintenance: 200mg lifelong"),
("CMV Retinitis", "<50", "No routine prophylaxis;\nscreen at CD4 <50", "Ganciclovir IV /\nValganciclovir oral", "Until CD4 >100\nfor β₯3β6 months"),
]
row_bgs = [LIGHT_RED, RGBColor(0xE8,0xF4,0xFF), RGBColor(0xE8,0xFF,0xF0), RGBColor(0xFF,0xF8,0xE0), RGBColor(0xF0,0xEC,0xFF)]
for ri, row in enumerate(rows):
y = 1.62 + ri * 1.0
rh = 0.95
for ci, (txt, cx, cw) in enumerate(zip(row, hx, hw)):
add_rect(s, cx, y, cw-0.05, rh, row_bgs[ri])
fc = RED if ci == 0 else DARK_NAVY
add_textbox(s, cx+0.06, y+0.06, cw-0.15, rh-0.1, txt, 10.5, color=fc, bold=(ci==0))
add_rect(s, 0.3, 6.65, 12.5, 0.04, TEAL)
add_textbox(s, 0.3, 6.7, 12.5, 0.65,
"Co-trimoxazole Prophylaxis (CTX) is given to ALL PLHIV with CD4 <200 or WHO Stage 3/4. Stop CTX when CD4 >200 for β₯3 months on ART.",
11.5, color=MID_BLUE, bold=True)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 11 β HIV-TB CO-INFECTION
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, RED)
add_rect(s, 0, 1.05, 0.07, 6.45, MID_BLUE)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "HIV-TB CO-INFECTION", 26, bold=True, color=WHITE)
add_rect(s, 0.3, 1.1, 12.5, 0.65, DARK_NAVY)
add_textbox(s, 0.4, 1.18, 12.3, 0.52,
"TB is the MOST COMMON OI and leading cause of death in PLHIV in India. Risk of TB is 20x higher in PLHIV vs HIV-negative individuals.",
14, color=YELLOW, bold=True)
# Two columns
left = [
("Diagnosis:", "β’ Screen ALL PLHIV for TB at every visit (4-symptom screen: cough, fever, weight loss, night sweats)\nβ’ GeneXpert MTB/RIF first-line rapid test\nβ’ AFB smear Β± culture (LJ / MGIT)\nβ’ CXR: may be atypical β miliary, lower-lobe, no cavitation\nβ’ CBNAAT useful for extrapulmonary TB"),
("TB Treatment in PLHIV:", "β’ Standard 2HRZE + 4HR (rifampicin-based)\nβ’ Same regimen as HIV-negative\nβ’ Toxicity monitoring more important\nβ’ Drug interactions with ART must be managed"),
("ART-ATT Interaction:", "β’ Rifampicin induces CYP3A4 β reduces PI and INSTI levels\nβ’ Use EFV 600mg OD (not DTG) with rifampicin-based ATT\nβ’ OR: use DTG 50mg BD (double dose) with rifampicin\nβ’ AVOID: LPV/r or ATV/r with rifampicin"),
]
right = [
("When to Start ART:", "β’ CD4 <50: Start ART within 2 WEEKS of ATT\nβ’ CD4 β₯50: Start ART within 8 WEEKS of ATT\nβ’ TB Meningitis: Defer ART 8 weeks (IRIS risk is high)\nβ’ NEVER delay ATT for ART workup"),
("TB Preventive Therapy (TPT):", "β’ Indicated for ALL PLHIV without active TB\nβ’ 6H: Isoniazid 300mg OD x 6 months (NACO standard)\nβ’ 3HP: Isoniazid + Rifapentine weekly x 12 wks (WHO)\nβ’ 1HP: Isoniazid + Rifapentine weekly x 4 wks (WHO 2026 new rec)\nβ’ Rule out active TB before starting TPT"),
("Drug-Resistant TB:", "β’ XDR-TB: Use ART regimens that avoid drug interactions\nβ’ Avoid rifampicin-based regimens β use Bedaquiline-based\nβ’ Bedaquiline: QTc prolongation β monitor with ART (EFV-QTc)"),
]
y = 1.9
for label, text in left:
add_rect(s, 0.3, y, 1.4, 0.38, MID_BLUE)
add_textbox(s, 0.32, y+0.04, 1.36, 0.3, label, 10, bold=True, color=WHITE)
add_rect(s, 1.72, y, 4.7, 0.38, RGBColor(0xEE, 0xF4, 0xFB))
add_textbox(s, 1.8, y+0.02, 4.6, 0.5, text, 9.5, color=DARK_NAVY)
y += 1.42
y = 1.9
for label, text in right:
add_rect(s, 6.8, y, 1.5, 0.38, RED)
add_textbox(s, 6.82, y+0.04, 1.46, 0.3, label, 10, bold=True, color=WHITE)
add_rect(s, 8.32, y, 4.7, 0.38, LIGHT_RED)
add_textbox(s, 8.4, y+0.02, 4.6, 0.5, text, 9.5, color=DARK_NAVY)
y += 1.42
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 12 β PPTCT
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, MID_BLUE)
add_rect(s, 0, 1.05, 0.07, 6.45, ORANGE)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "PPTCT β PREVENTION OF PARENT-TO-CHILD TRANSMISSION", 24, bold=True, color=WHITE)
# Transmission risk boxes
risks = [
("No ARV\nBreastfeeding", "30β45%"),
("No ARV\nNo Breastfeeding", "20β25%"),
("Short course ARV\nBreastfeeding", "15β25%"),
("Full ART\nNo Breastfeeding", "<2%"),
]
for i, (label, risk) in enumerate(risks):
x = 0.4 + i * 3.2
col = RED if i < 2 else (ORANGE if i==2 else TEAL)
add_rect(s, x, 1.1, 2.9, 1.1, col)
add_textbox(s, x, 1.15, 2.9, 0.52, risk, 26, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(s, x, 1.67, 2.9, 0.5, label, 11, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 2.35, 12.5, 0.04, MID_BLUE)
cols_data = [
[
("Testing:", "All pregnant women offered HIV testing at 1st ANC visit (opt-out PPTCT)\nRepeat test at 3rd trimester if initially negative"),
("ART in Pregnancy:", "Start TLE or TLD (TDF + 3TC + DTG preferred)\nLifelong ART for ALL HIV+ pregnant women regardless of CD4\nOption B+ β lifelong ART initiated at ANC, continued postpartum"),
("Labour:", "Institutional delivery mandatory\nAvoid ARM, episiotomy unless necessary\nNo contraindication to vaginal delivery"),
],
[
("Infant Prophylaxis:", "Nevirapine (NVP) 2mg/kg OD for 6 weeks (if mother on ART for >4 weeks)\nNVP + AZT if mother NOT on ART or on ART <4 weeks (high risk)"),
("Infant Feeding:", "Exclusive breastfeeding x 6 months with maternal ART\n(Formula feeding ONLY if replacement feeding is AFASS*)\n*Affordable, Feasible, Acceptable, Sustainable, Safe"),
("Infant Diagnosis:", "HIV DNA PCR (NAT) at 6 weeks and 6 months of age\nIf NAT positive β start infant ART immediately\nIf NAT negative but breastfed β test again 6 wks after cessation"),
]
]
y = 2.45
for label, text in cols_data[0]:
add_rect(s, 0.3, y, 1.5, 0.42, MID_BLUE)
add_textbox(s, 0.32, y+0.05, 1.46, 0.32, label, 10, bold=True, color=WHITE)
add_textbox(s, 1.82, y+0.03, 4.6, 0.55, text, 10, color=DARK_NAVY)
y += 1.3
y = 2.45
for label, text in cols_data[1]:
add_rect(s, 6.8, y, 1.5, 0.42, ORANGE)
add_textbox(s, 6.82, y+0.05, 1.46, 0.32, label, 10, bold=True, color=WHITE)
add_textbox(s, 8.32, y+0.03, 4.7, 0.55, text, 10, color=DARK_NAVY)
y += 1.3
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 13 β PrEP & PEP
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, DARK_NAVY)
add_rect(s, 0, 1.05, 0.07, 6.45, TEAL)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "PrEP (PRE-EXPOSURE PROPHYLAXIS) & PEP (POST-EXPOSURE PROPHYLAXIS)", 22, bold=True, color=WHITE)
# PrEP column
add_rect(s, 0.3, 1.1, 6.0, 0.5, TEAL)
add_textbox(s, 0.35, 1.15, 5.9, 0.4, "PrEP", 18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
prep_items = [
("Indication:", "HIV-negative persons at high risk:\nMSM, Sex workers, discordant couples, PWID"),
("Drug:", "TDF + FTC (Tenofovir + Emtricitabine) OD β Daily PrEP\nOR: Cabotegravir LA (CAB-LA) injectable q8 weeks (WHO 2026)"),
("Protocol:", "β’ Confirm HIV-negative status before starting\nβ’ Baseline renal function (eGFR)\nβ’ Repeat HIV test every 3 months\nβ’ STI screening every 6 months"),
("Efficacy:", "Daily oral PrEP: ~90β99% reduction in HIV acquisition\nCAB-LA: Superior to TDF/FTC in MSM (HPTN 083 trial)"),
("2-1-1 (Event-driven):", "For MSM: 2 pills 2β24h before sex, 1 pill 24h after,\n1 pill 48h after (Truvada only β NOT for PWID or women)"),
]
y = 1.68
for label, text in prep_items:
add_rect(s, 0.3, y, 1.4, 0.5, RGBColor(0x00, 0x7B, 0x83))
add_textbox(s, 0.32, y+0.06, 1.36, 0.38, label, 9.5, bold=True, color=WHITE)
add_rect(s, 1.72, y, 4.55, 0.5, RGBColor(0xE8, 0xFB, 0xFB))
add_textbox(s, 1.8, y+0.04, 4.45, 0.55, text, 10, color=DARK_NAVY)
y += 0.58
# PEP column
add_rect(s, 6.9, 1.1, 6.0, 0.5, RED)
add_textbox(s, 6.95, 1.15, 5.9, 0.4, "PEP", 18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
pep_items = [
("Indication:", "Potential HIV exposure (occupational or non-occupational):\nNeedle stick, sexual assault, condom failure, PWID needle sharing"),
("Timing:", "Start ASAP β within 72 hours of exposure\nDelay >72 hours: PEP NOT recommended (ineffective)"),
("Duration:", "28 days of continuous ART (full 4-week course is mandatory)"),
("Preferred Regimen\n(NACO):", "TDF + 3TC (or FTC) + DTG 50mg OD\nAlternative: TDF + 3TC + LPV/r (if DTG unavailable)"),
("Monitoring:", "β’ Baseline HIV test; repeat at 6 wks, 3 months, 6 months\nβ’ Check renal function (TDF toxicity)\nβ’ Counsel on safer sex during PEP course"),
("Counselling:", "Address: adherence, side effects, risk reduction,\npartner testing, linkage to care if HIV+ confirmed"),
]
y = 1.68
for label, text in pep_items:
add_rect(s, 6.9, y, 1.5, 0.5, RED)
add_textbox(s, 6.92, y+0.06, 1.46, 0.38, label, 9.5, bold=True, color=WHITE)
add_rect(s, 8.42, y, 4.45, 0.5, LIGHT_RED)
add_textbox(s, 8.5, y+0.04, 4.35, 0.55, text, 10, color=DARK_NAVY)
y += 0.58
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 14 β MONITORING (VL, CD4, Treatment Failure)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, MID_BLUE)
add_rect(s, 0, 1.05, 0.07, 6.45, ORANGE)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "MONITORING β VIRAL LOAD, CD4 & TREATMENT FAILURE", 24, bold=True, color=WHITE)
# Monitoring schedule table
add_rect(s, 0.3, 1.1, 12.5, 0.5, DARK_NAVY)
for hdr, cx, cw in [("Parameter", 0.3, 2.5), ("Baseline", 2.82, 2.5), ("3 Months", 5.34, 2.5), ("6 Months", 7.86, 2.5), ("12 Months+", 10.38, 2.42)]:
add_textbox(s, cx+0.05, 1.15, cw-0.1, 0.38, hdr, 12, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
mon_rows = [
("Viral Load", "Yes", "Yes\n(assess adherence)", "Yes\n(target <1000 c/mL)", "Every 6 months\n(target <50 c/mL)"),
("CD4 Count", "Yes", "Yes", "Yes\n(not mandatory if VL stable)", "Every 6β12 months;\ndiscontinue if VL suppressed & stable"),
("LFT/RFT/CBC", "Yes\n(baseline)", "If symptomatic", "If symptomatic", "Annually or as needed"),
("HBsAg/HCV", "Yes", "β", "β", "Repeat if new risk exposure"),
("Lipid Profile", "Yes (EFV/LPV)", "β", "β", "Annually on PI regimens"),
]
row_bg2 = [RGBColor(0xF5,0xF5,0xFF), LIGHT_RED, RGBColor(0xF0,0xFB,0xF0), RGBColor(0xFF,0xFB,0xED), RGBColor(0xF5,0xF0,0xFF)]
for ri, row in enumerate(mon_rows):
y = 1.63 + ri * 0.72
for ci, (txt, cx, cw) in enumerate(zip(row, [0.3,2.82,5.34,7.86,10.38], [2.5,2.5,2.5,2.5,2.42])):
add_rect(s, cx, y, cw-0.05, 0.68, row_bg2[ri])
fc = RED if ci==0 else DARK_NAVY
add_textbox(s, cx+0.08, y+0.06, cw-0.18, 0.56, txt, 10.5, color=fc, bold=(ci==0), align=PP_ALIGN.CENTER)
add_rect(s, 0.3, 5.25, 12.5, 0.04, MID_BLUE)
failure_defs = [
("Virological Failure:", "VL >1000 c/mL on 2 readings 3 months apart AFTER Enhanced Adherence Counselling (EAC) x3 sessions"),
("Immunological Failure:", "CD4 <250 after clinical failure OR Persistent CD4 <100 (confirm with VL before switching)"),
("Clinical Failure:", "New or recurrent WHO Stage 3/4 event after β₯6 months on ART (rule out IRIS first)"),
("EAC:", "3 Enhanced Adherence Counselling sessions over 3 months before confirming virological failure and switching"),
]
y = 5.35
for label, text in failure_defs:
add_multiline_tb(s, 0.4, y, 12.4, 0.45,
[(f"βΆ {label} ", True, RED), (text, False, DARK_NAVY)], 11.5, spacing=0)
y += 0.5
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 15 β ART IN SPECIAL POPULATIONS
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.05, DARK_NAVY)
add_rect(s, 0, 1.05, 0.07, 6.45, ORANGE)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "ART IN SPECIAL POPULATIONS", 26, bold=True, color=WHITE)
populations = [
(MID_BLUE, "Pregnancy",
"β’ TDF + 3TC + DTG preferred (Option B+)\n"
"β’ Avoid EFV in 1st trimester (neural tube defect risk β though evidence reassuring with low-dose)\n"
"β’ Monitor: NTDs if DTG started peri-conception (small increased risk β counsel patient)\n"
"β’ Lifelong ART regardless of CD4"),
(TEAL, "Renal Impairment\n(CrCl <50 mL/min)",
"β’ AVOID TDF (nephrotoxic)\n"
"β’ Use ABC + 3TC + DTG or AZT + 3TC + DTG\n"
"β’ TAF (Tenofovir Alafenamide) safer for kidneys (not yet widely available in India)\n"
"β’ Monitor creatinine, phosphate, proteinuria"),
(ORANGE, "Hepatic Disease\n(HBV/HCV Co-infection)",
"β’ If HBV co-infected: Always include TDF in ART (TDF treats both HIV & HBV)\n"
"β’ AVOID: stopping TDF suddenly (HBV flare)\n"
"β’ HCV co-infection: DAA therapy preferred (ledipasvir/sofosbuvir); check drug interactions\n"
"β’ LFT monitoring mandatory"),
(RED, "Children (<15 yrs)",
"β’ Preferred: ABC + 3TC + DTG (weight-based dosing)\n"
"β’ <3 years: LPV/r-based (DTG granules now available)\n"
"β’ Diagnosis by NAT (DNA PCR) <18 months\n"
"β’ EFV-based regimens in older children (>3 yrs)"),
(RGBColor(0x5A, 0x1F, 0x7A), "TB-HIV\n(See Slide 11)",
"β’ Use EFV 600mg or DTG 50mg BD with rifampicin-based ATT\n"
"β’ AVOID LPV/r or ATV/r with rifampicin (reduced PI levels)\n"
"β’ Start ART timing depends on CD4 count"),
(RGBColor(0x1A, 0x6B, 0x3A), "Cryptococcal Meningitis",
"β’ DEFER ART 4β6 weeks after antifungal induction\n"
"β’ Induction: Amphotericin B + Flucytosine x 2 wks\n"
"β’ Consolidation: Fluconazole 400mg OD x 8 wks\n"
"β’ Maintenance: Fluconazole 200mg OD (lifelong until CD4 >200)"),
]
positions = [(0.3, 1.1), (6.9, 1.1), (0.3, 2.95), (6.9, 2.95), (0.3, 4.8), (6.9, 4.8)]
for (x, y), (col, title, content) in zip(positions, populations):
add_rect(s, x, y, 6.2, 1.72, col)
add_textbox(s, x+0.1, y+0.06, 6.0, 0.48, title, 13, bold=True, color=WHITE)
add_textbox(s, x+0.1, y+0.55, 6.0, 1.12, content, 10.5, color=WHITE)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 16 β TAKE-HOME SUMMARY
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, DARK_NAVY)
add_rect(s, 0, 0, 13.333, 1.05, RED)
add_rect(s, 0, 1.05, 0.07, 6.45, YELLOW)
add_textbox(s, 0.3, 0.15, 12.5, 0.75, "KEY SUMMARY β TAKE-HOME POINTS", 26, bold=True, color=WHITE)
key_points = [
("1", "TREAT ALL β Start ART in ALL HIV+ individuals immediately, regardless of CD4 or stage. Prefer same-day initiation."),
("2", "TLD (TDF+3TC+DTG) is the PREFERRED first-line ART for most adults (NACO & WHO 2026 confirmed)."),
("3", "WHO 2026 Update: DRV/r is the NEW preferred boosted PI (replaces LPV/r and ATV/r) for second-line ART."),
("4", "WHO 2026: Long-acting injectable ART (CAB-LA + RPV-LA) recommended for adherence-challenged patients."),
("5", "WHO 2026: Oral 2-drug regimen (DTG + 3TC) is an option for stable, virally suppressed adults."),
("6", "HIV-TB: ATT first. Add ART within 2 weeks if CD4 <50, within 8 weeks if CD4 β₯50. Use EFV or DTG BD with rifampicin."),
("7", "Viral Load is the GOLD STANDARD for monitoring ART. Target VL <1000 c/mL; do EAC x3 before switching."),
("8", "CTX prophylaxis for ALL PLHIV with CD4 <200 or WHO Stage 3/4. Stop only after sustained CD4 >200 on ART."),
("9", "PPTCT Option B+: All HIV+ pregnant women on lifelong ART (TDF+3TC+DTG preferred)."),
("10", "PEP must start within 72 hours. Preferred regimen: TDF + 3TC + DTG x 28 days."),
("11", "U=U: Undetectable = Untransmittable β virally suppressed PLHIV do NOT transmit HIV sexually."),
("12", "NACP-V target (2026): 80% reduction in new infections & deaths vs 2010 baseline; 95-95-95 framework."),
]
for i, (num, point) in enumerate(key_points):
col = i % 2
row = i // 2
x = 0.3 if col == 0 else 6.9
y = 1.1 + row * 1.05
add_rect(s, x, y, 0.45, 0.85, RED if col==0 else ORANGE)
add_textbox(s, x, y+0.18, 0.45, 0.45, num, 15, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(s, x+0.45, y, 5.9, 0.85, RGBColor(0x14, 0x35, 0x65))
add_textbox(s, x+0.55, y+0.1, 5.75, 0.68, point, 11, color=WHITE)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SLIDE 17 β REFERENCES / THANK YOU
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s = prs.slides.add_slide(blank)
add_rect(s, 0, 0, 13.333, 7.5, DARK_NAVY)
add_rect(s, 0, 0, 13.333, 0.12, RED)
add_rect(s, 0, 7.38, 13.333, 0.12, ORANGE)
add_rect(s, 0, 1.05, 0.07, 6.3, RED)
add_textbox(s, 0.3, 0.18, 12.5, 0.75, "REFERENCES & ACKNOWLEDGEMENTS", 22, bold=True, color=WHITE)
refs = [
"1. National Guidelines for HIV Care and Treatment 2021. National AIDS Control Organisation (NACO), Ministry of Health & Family Welfare, Govt. of India.",
"2. WHO Updated Recommendations on HIV Clinical Management β January 7, 2026. World Health Organization, Geneva.",
"3. NACP-V National Strategic Plan on HIV/AIDS & STIs (2021β2026). NACO, MoHFW, India.",
"4. National HIV Counselling and Testing Guidelines 2024. NACO / FOGSI. December 2024.",
"5. Goldman-Cecil Medicine, 27th Edition β Chapter 353: HIV/AIDS Management.",
"6. India HIV Estimates 2023: Technical Brief. NACO & ICMR-NIMS, New Delhi.",
"7. WHO Consolidated Guidelines on HIV, Viral Hepatitis and STIs for Key Populations, 2022.",
"8. UNAIDS Global AIDS Update 2025: Progress Towards 95-95-95 Targets.",
"9. NACO Operational Guidelines for ART Services, 2022.",
"10. National Guidelines on Prevention, Management and Control of RTI/STI, MOH&FW, 2014.",
]
add_multiline_tb(s, 0.4, 1.15, 12.3, 5.2, refs, 12.5, color=RGBColor(0xCC, 0xDD, 0xFF), spacing=4)
add_rect(s, 2.5, 6.3, 8.3, 0.04, ORANGE)
add_textbox(s, 0.3, 6.4, 12.5, 0.7,
"NACO Helpline: 1097 (Toll Free, 24Γ7) | www.naco.gov.in | PLHIV Support: ART Centres across India",
14, bold=True, color=ORANGE, align=PP_ALIGN.CENTER)
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SAVE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
output = "/tmp/workspace/naco2026-ppt/NACO_2026_HIV_Guidelines_MD_Medicine.pptx"
prs.save(output)
print(f"Saved: {output}")
cd /tmp/workspace/naco2026-ppt && python build_pptx.py
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/naco2026-ppt/NACO_2026_HIV_Guidelines_MD_Medicine.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [sh.text_frame.text.strip()[:60] for sh in slide.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(f' Slide {i:2d}: {texts[0] if texts else \"(empty)\"}') "
NACO 2026 HIV Guidelines MD Medicine
Presentation Β· PPTX
| Slide | Topic |
|---|---|
| 1 | Title Slide β NACO 2026 Guidelines |
| 2 | Outline / Index |
| 3 | Epidemiology β India HIV burden (24 lakh PLHIV, ~65K new infections/yr) |
| 4 | NACP-V Goals & UNAIDS 95-95-95 Targets |
| 5 | HIV Diagnosis β NACO 3-kit testing algorithm, NAT, window period |
| 6 | ART Initiation β Treat All policy, deferral situations, IRIS |
| 7 | First-Line ART (TLD preferred, TLE alternative, 2-drug regimen) |
| 8 | Second-Line & Third-Line ART with failure criteria |
| 9 | WHO 2026 New Updates β DRV/r, CAB-LA, 2-drug regimen, TPT |
| 10 | OI Prophylaxis table (PCP, Toxo, MAC, Cryptococcus, CMV) |
| 11 | HIV-TB Co-infection β timing, drug interactions, rifampicin + DTG/EFV |
| 12 | PPTCT β transmission risks table, Option B+, infant prophylaxis |
| 13 | PrEP (TDF/FTC, CAB-LA) & PEP (TDF+3TC+DTG) |
| 14 | Monitoring β VL, CD4, treatment failure definitions, EAC |
| 15 | ART in Special Populations (pregnancy, renal, HBV, children, crypto) |
| 16 | Key Take-Home 12 points |
| 17 | References & Acknowledgements |