Give me answers for this according to park community medicine book

Reading File
Reading File
Reading File
Running Command

cd /home/daytona/workspace/attachments/c8ba6aad-2237-4512-b679-1fcd0704890f/ && …

Asking for Preferences
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File

Make all the content into a pdf which is easy to read and remember for my mbbs exams

Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/psm-notes && ls /home/daytona/workspace/psm-not…

Writing File

~/psm-notes/generate_psm_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem

# ─── Output path ───────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/psm-notes/PSM_Paper1_ExamNotes.pdf"

# ─── Colour palette ────────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")   # main headings
MID_BLUE    = colors.HexColor("#2874A6")   # sub-headings
LIGHT_BLUE  = colors.HexColor("#D6EAF8")   # heading backgrounds
GREEN       = colors.HexColor("#1E8449")   # key points
GREEN_BG    = colors.HexColor("#D5F5E3")
ORANGE      = colors.HexColor("#CA6F1E")   # memory aids
ORANGE_BG   = colors.HexColor("#FDEBD0")
RED         = colors.HexColor("#B03A2E")   # important alerts
TABLE_HEAD  = colors.HexColor("#2874A6")
TABLE_ALT   = colors.HexColor("#EBF5FB")
WHITE       = colors.white
BLACK       = colors.black
GRAY        = colors.HexColor("#5D6D7E")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.8*cm, leftMargin=1.8*cm,
    topMargin=2*cm, bottomMargin=2*cm,
    title="PSM Paper I – Exam Notes (Park's)",
    author="MBBS 2023 Batch"
)

styles = getSampleStyleSheet()

# Custom styles
def S(name, **kw):
    return ParagraphStyle(name, **kw)

cover_title = S("CoverTitle", fontSize=28, textColor=WHITE, alignment=TA_CENTER,
                fontName="Helvetica-Bold", leading=36, spaceAfter=10)
cover_sub   = S("CoverSub",   fontSize=14, textColor=colors.HexColor("#BDC3C7"),
                alignment=TA_CENTER, fontName="Helvetica", leading=20, spaceAfter=6)
cover_note  = S("CoverNote",  fontSize=11, textColor=colors.HexColor("#ECF0F1"),
                alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=16)

h1 = S("H1", fontSize=15, textColor=WHITE, fontName="Helvetica-Bold",
        leading=20, spaceBefore=14, spaceAfter=4,
        backColor=DARK_BLUE, leftIndent=-5, rightIndent=-5,
        borderPadding=(6,8,6,8))
h2 = S("H2", fontSize=12, textColor=WHITE, fontName="Helvetica-Bold",
        leading=16, spaceBefore=10, spaceAfter=3,
        backColor=MID_BLUE, leftIndent=0,
        borderPadding=(4,6,4,6))
h3 = S("H3", fontSize=11, textColor=DARK_BLUE, fontName="Helvetica-Bold",
        leading=15, spaceBefore=8, spaceAfter=2)

body = S("Body", fontSize=10, textColor=BLACK, fontName="Helvetica",
         leading=15, spaceBefore=2, spaceAfter=2, alignment=TA_JUSTIFY)
bullet = S("Bullet", fontSize=10, textColor=BLACK, fontName="Helvetica",
           leading=14, spaceBefore=1, spaceAfter=1,
           leftIndent=14, bulletIndent=4)
bullet2 = S("Bullet2", fontSize=9.5, textColor=GRAY, fontName="Helvetica",
            leading=13, spaceBefore=0, spaceAfter=0,
            leftIndent=28, bulletIndent=14)

key_box  = S("KeyBox",  fontSize=10, textColor=GREEN, fontName="Helvetica-Bold",
             leading=14, spaceBefore=3, spaceAfter=3,
             backColor=GREEN_BG, leftIndent=8, rightIndent=8,
             borderPadding=(4,6,4,6))
mem_box  = S("MemBox",  fontSize=10, textColor=ORANGE, fontName="Helvetica-Bold",
             leading=14, spaceBefore=3, spaceAfter=3,
             backColor=ORANGE_BG, leftIndent=8, rightIndent=8,
             borderPadding=(4,6,4,6))
alert_box = S("AlertBox", fontSize=10, textColor=RED, fontName="Helvetica-Bold",
              leading=14, spaceBefore=3, spaceAfter=3,
              backColor=colors.HexColor("#FADBD8"), leftIndent=8,
              borderPadding=(4,6,4,6))
toc_style = S("TOC", fontSize=11, textColor=MID_BLUE, fontName="Helvetica",
              leading=18, spaceBefore=0, spaceAfter=0)

def divider():
    return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#AEB6BF"),
                      spaceAfter=4, spaceBefore=4)

def sp(n=6):
    return Spacer(1, n)

def tbl(data, col_widths=None, head=True):
    """Create a styled table."""
    t = Table(data, colWidths=col_widths, hAlign='LEFT')
    style = [
        ('FONTNAME',  (0,0), (-1,0 if head else -1), 'Helvetica-Bold'),
        ('FONTSIZE',  (0,0), (-1,-1), 9.5),
        ('BACKGROUND',(0,0), (-1,0), TABLE_HEAD if head else LIGHT_BLUE),
        ('TEXTCOLOR', (0,0), (-1,0), WHITE if head else DARK_BLUE),
        ('ALIGN',     (0,0), (-1,-1), 'LEFT'),
        ('VALIGN',    (0,0), (-1,-1), 'TOP'),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, TABLE_ALT]),
        ('GRID',      (0,0), (-1,-1), 0.4, colors.HexColor("#AEB6BF")),
        ('PADDING',   (0,0), (-1,-1), 5),
        ('TOPPADDING',(0,0), (-1,-1), 4),
    ]
    t.setStyle(TableStyle(style))
    return t

# ══════════════════════════════════════════════════════════════════════════════
# BUILD CONTENT
# ══════════════════════════════════════════════════════════════════════════════
story = []

# ── COVER PAGE ─────────────────────────────────────────────────────────────────
cover_table = Table(
    [[Paragraph("PSM – Paper I", cover_title)],
     [Paragraph("Exam Notes from Park's Textbook", cover_sub)],
     [Paragraph("Summative Exam 2  |  MBBS 2023 Batch", cover_note)],
     [sp(8)],
     [Paragraph("Topics Covered:", S("ct", fontSize=12, textColor=colors.HexColor("#BDC3C7"),
                                     alignment=TA_CENTER, fontName="Helvetica"))],
     [Paragraph("NVBDCP • NLEP • NTEP • NACP • NPCB • NRHM • Emerging Infections<br/>"
                "HAI • Hospital Waste • Disaster Management • Health Statistics • International Health",
                cover_note)]],
    colWidths=[15*cm]
)
cover_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
    ('TOPPADDING', (0,0), (-1,-1), 14),
    ('BOTTOMPADDING', (0,0), (-1,-1), 14),
    ('LEFTPADDING', (0,0), (-1,-1), 20),
    ('RIGHTPADDING', (0,0), (-1,-1), 20),
    ('ROUNDEDCORNERS', [8]),
]))
story.append(sp(40))
story.append(cover_table)
story.append(PageBreak())

# ── TABLE OF CONTENTS ──────────────────────────────────────────────────────────
story.append(Paragraph("Table of Contents", h1))
toc_items = [
    ("1.", "National Vector Borne Disease Control Programme (NVBDCP)", "3"),
    ("2.", "National Leprosy Eradication Programme (NLEP)", "6"),
    ("3.", "National TB Elimination Programme (NTEP)", "8"),
    ("4.", "National AIDS Control Programme (NACP)", "11"),
    ("5.", "National Programme for Control of Blindness (NPCB)", "14"),
    ("6.", "National Rural Health Mission (NRHM)", "15"),
    ("7.", "Emerging & Re-emerging Infections", "16"),
    ("8.", "Hospital Acquired Infections (HAI)", "17"),
    ("9.", "Hospital Waste Management", "18"),
    ("10.", "Disaster Management", "19"),
    ("11.", "Health Information & Medical Statistics", "20"),
    ("12.", "International Health Organisations", "23"),
]
for num, topic, pg in toc_items:
    story.append(Paragraph(f"<font color='#2874A6'><b>{num}</b></font>  {topic}"
                           f"<font color='#AEB6BF'> .......... {pg}</font>", toc_style))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 1. NVBDCP
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("1. NATIONAL VECTOR BORNE DISEASE CONTROL PROGRAMME (NVBDCP)", h1))
story.append(Paragraph("Nodal agency: Directorate of NVBDCP | Under: NRHM umbrella", key_box))
story.append(sp(4))

story.append(Paragraph("Diseases Covered (6)", h2))
data = [["Disease", "Vector", "Key Fact"],
        ["Malaria", "Anopheles mosquito", "Most important; multiple species"],
        ["Filariasis (LF)", "Culex mosquito", "MDA with DEC + Albendazole"],
        ["Kala-azar", "Sandfly (Phlebotomus)", "Endemic in Bihar, Jharkhand, WB, UP"],
        ["Japanese Encephalitis (JE)", "Culex mosquito", "Vaccination programme available"],
        ["Dengue", "Aedes aegypti", "Urban areas; no specific drug"],
        ["Chikungunya", "Aedes aegypti", "Re-emerged after 3 decades"]]
story.append(tbl(data, col_widths=[5*cm, 4.5*cm, 6*cm]))
story.append(sp(6))
story.append(Paragraph("🧠 Mnemonic: <b>MFK-JDC</b> → Malaria, Filaria, Kala-azar, JE, Dengue, Chikungunya", mem_box))
story.append(sp(6))

story.append(Paragraph("Three-Pronged Strategy of NVBDCP", h2))
story.append(Paragraph("<b>(i) Disease Management</b>", h3))
for pt in ["Early case detection and complete treatment",
           "Strengthening of referral services",
           "Epidemic preparedness and rapid response"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("<b>(ii) Integrated Vector Management (IVM)</b>", h3))
for pt in ["Indoor Residual Spraying (IRS) in high-risk areas – primary method in rural settings",
           "Insecticide Treated Bed-Nets (ITNs) / Long Lasting Insecticidal Nets (LLINs)",
           "Larvivorous fish (biological control)",
           "Anti-larval measures in urban areas (chemical, biological, environmental)",
           "Source reduction and minor environmental engineering",
           "Safe use of insecticides + insecticide resistance monitoring"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("<b>(iii) Supportive Interventions</b>", h3))
for pt in ["Behaviour Change Communication (BCC)",
           "Public-private partnership and inter-sectoral convergence",
           "Human resource development through capacity building",
           "Operational research (drug resistance, insecticide susceptibility)",
           "Monitoring & evaluation via web-based MIS",
           "Vaccination against JE",
           "Annual Mass Drug Administration (MDA) against lymphatic filariasis"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(sp(6))
story.append(Paragraph("(A) MALARIA – Goals, Objectives & Strategies", h2))
story.append(Paragraph("History of Malaria Control in India", h3))
milestone_data = [["Year", "Milestone"],
                  ["Prior to 1953", "75 million cases; 0.8 million deaths annually"],
                  ["1953", "National Malaria Control Programme (NMCP) launched – First Five Year Plan"],
                  ["1958", "Converted to National Malaria Eradication Programme (NMEP)"],
                  ["1976", "Cases resurged to 6.4 million; NMEP failed"],
                  ["1977", "Modified Plan of Operations – emphasis on control, not eradication"],
                  ["1995", "Enhanced Malaria Control Project (EMCP) with World Bank support"],
                  ["1997", "Malaria Action Programme"],
                  ["2002", "National Anti-Malaria Programme (NAMP) launched"],
                  ["2010", "NVBDCP integrates all vector-borne disease control"]]
story.append(tbl(milestone_data, col_widths=[3.5*cm, 12*cm]))
story.append(sp(6))

story.append(Paragraph("National Framework for Malaria Elimination (NFME) 2016–2030", h3))
story.append(Paragraph("<b>Goal:</b> Achieve malaria-free status in India by 2030", key_box))
story.append(sp(4))
goals_data = [["Target Year", "Goal"],
              ["2022", "Interrupt transmission; zero indigenous cases in all Category 1 & 2 States/UTs"],
              ["2024", "Incidence < 1 case per 1,000 population in ALL states/districts"],
              ["2027", "Interrupt indigenous transmission in ALL states/UTs"],
              ["2030", "Malaria eliminated throughout entire country; prevent re-establishment"]]
story.append(tbl(goals_data, col_widths=[3.5*cm, 12*cm]))
story.append(sp(6))

story.append(Paragraph("Programme Phasing – State Categories", h3))
cat_data = [["Category", "Definition", "Examples"],
            ["Category 0\n(Prevention of re-establishment)", "Zero indigenous cases", "No state currently"],
            ["Category 1\n(Elimination phase)", "API < 1, ALL districts with API < 1", "HP, Punjab, J&K, Kerala, Delhi, Goa (15 states/UTs)"],
            ["Category 2\n(Pre-elimination)", "API < 1 but SOME districts API ≥ 1", "Bihar, TN, UP, WB, Karnataka (11 states)"],
            ["Category 3\n(Intensified control)", "API ≥ 1", "Odisha, MP, Jharkhand, NE states (10 states/UTs)"]]
story.append(tbl(cat_data, col_widths=[4*cm, 5.5*cm, 6*cm]))
story.append(sp(4))
story.append(Paragraph("API = Annual Parasite Index = (positive blood smears in a year / population surveyed) × 1000", body))
story.append(sp(6))

story.append(Paragraph("Malaria Strategies", h3))
for pt in ["Universal coverage with diagnostics (RDKs + microscopy)",
           "Prompt and complete treatment as per 2013 Drug Policy (No presumptive treatment)",
           "IRS with DDT (primary); Malathion / synthetic pyrethroids where DDT-resistant",
           "LLINs for API ≥ 5 areas; ITNs for API 2-5 areas",
           "Two rounds of DDT/pyrethroid spraying per year; three rounds of malathion",
           "ABER (Annual Blood Examination Rate) target: ≥ 10% of population"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("⚠ IMPORTANT: New Drug Policy 2013 – NO presumptive treatment. All cases must be confirmed before treatment.", alert_box))
story.append(sp(6))

story.append(Paragraph("Integrated Vector Management (IVM) – Details", h2))
ivm_data = [["Method", "Details"],
            ["IRS (Indoor Residual Spray)", "Primary method in rural India; DDT preferred; 80% coverage needed"],
            ["ITNs/LLINs", "Scale-up planned; API ≥ 2 areas; LLINs for API ≥ 5"],
            ["Anti-larval (chemical)", "Temephos, Paris Green in breeding sites"],
            ["Anti-larval (biological)", "Larvivorous fish (Gambusia, Guppy)"],
            ["Anti-larval (environmental)", "Source reduction, water drainage"],
            ["Personal protection", "Bed-nets, repellents, protective clothing"]]
story.append(tbl(ivm_data, col_widths=[5*cm, 10.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 2. NLEP
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("2. NATIONAL LEPROSY ERADICATION PROGRAMME (NLEP)", h1))
story.append(Paragraph("Elimination target: Prevalence < 1 case per 10,000 population | India achieved national elimination in 2005", key_box))
story.append(sp(4))

story.append(Paragraph("Plan Objectives (12th Plan 2012–17)", h2))
for pt in ["Eliminate leprosy: prevalence < 1/10,000 in ALL districts",
           "Strengthen Disability Prevention and Medical Rehabilitation (DPMR)",
           "Reduce stigma associated with leprosy"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("Programme Strategy", h2))
for pt in ["Integrated leprosy services through general health care system",
           "Early detection and complete treatment (MDT) of new cases",
           "Household contact survey for early case detection",
           "Involvement of ASHA in detection and treatment completion",
           "Strengthening DPMR services"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Case Detection & Management", h2))
story.append(Paragraph("Three-Pronged Strategy (from 2016-17)", h3))
for pt in ["1. Leprosy Case Detection Campaign (LCDC) – active door-to-door search",
           "2. Focused Leprosy Campaign – 300 households around grade-2 disability case",
           "3. Special Plan for hard-to-reach areas (naxalite, tribal, remote areas)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("2016-17: LCDC in 163 districts of 20 states → 34,672 cases detected", key_box))
story.append(sp(4))

story.append(Paragraph("Sparsh Leprosy Awareness Campaign", h2))
for pt in ["Launched during Anti-Leprosy Fortnight (Jan 30 – Feb 13) each year",
           "Aimed to generate awareness, reduce stigma, improve self-reporting",
           "Carried out in 60% of all villages across India",
           "'Sparsh' = Touch – emphasizes anti-stigma messaging"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Survey Education and Treatment (SET) Scheme", h2))
for pt in ["NGOs involved in disability prevention and ulcer care",
           "IEC activities",
           "Referral of suspected cases",
           "Referral for Reconstructive Surgery (RCS)",
           "Research and rehabilitation",
           "Focus: Urban locations and difficult-to-reach areas"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Incentives", h2))
inc_data = [["Who", "Amount", "For What"],
            ["Leprosy patient", "Rs. 8,000/-", "Major reconstructive surgery (RCS)"],
            ["ASHA (Kala-azar)", "Rs. 300/-", "Identifying each Kala-azar case"],
            ["ASHA (Kala-azar)", "Rs. 100-200/-", "Ensuring insecticide spraying rounds"]]
story.append(tbl(inc_data, col_widths=[4*cm, 4*cm, 7.5*cm]))
story.append(sp(6))

story.append(Paragraph("DPMR – Disability Prevention & Medical Rehabilitation", h2))
for pt in ["Grade 0: No anaesthesia/deformity – surveillance + MDT",
           "Grade 1: Anaesthesia (no visible deformity) – self-care, protective footwear",
           "Grade 2: Visible deformity/disability – physiotherapy, surgery referral",
           "RCS Centres: 115 recognised (61 Govt + 54 NGO) as of January 2017",
           "Orthopaedics/plastic surgery departments of medical colleges as support units"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("IEC/BCC", h2))
for pt in ["Target: Change behaviour in general public to reduce stigma/discrimination",
           "Promote MDT availability awareness",
           "Promote RCS (correction of deformity through surgery)",
           "Message: Leprosy-affected person can live a NORMAL life with family",
           "Central institutes: JALMA (Agra) + CLTRI (Chennai)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("Road Map for Leprosy 2023-2027 & 5 Pillars", h2))
story.append(Paragraph("The 5 Pillars of the National Strategic Plan & Road Map 2023–2027:", h3))
pillar_data = [["Pillar", "Focus Area"],
               ["1. Strengthen Political Commitment", "Zero leprosy targets; government accountability"],
               ["2. Stop Transmission", "Enhanced case detection, contact tracing, chemoprophylaxis"],
               ["3. Manage Disease & Prevent Disability", "Early diagnosis, MDT, DPMR, rehabilitation"],
               ["4. Combat Stigma & Discrimination", "Legal protection, anti-discrimination laws, community inclusion"],
               ["5. Increase Resources", "Domestic + international funding, research investment"]]
story.append(tbl(pillar_data, col_widths=[5*cm, 10.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 3. NTEP
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("3. NATIONAL TB ELIMINATION PROGRAMME (NTEP)", h1))
story.append(Paragraph("Previously RNTCP | Goal: Eliminate TB by 2025 (5 years ahead of SDG target of 2030)", key_box))
story.append(sp(4))

story.append(Paragraph("TB Lab Services – National Policy for Diagnosis", h2))
story.append(Paragraph("NTEP Endorsed TB Diagnostics:", h3))
diag_data = [["Test", "Type / Details"],
             ["Smear Microscopy (AFB)", "Ziehl-Neelsen stain / Fluorescence stain; LED microscopy"],
             ["Culture", "Solid (LJ medium) OR Liquid (Bactec/MGIT)"],
             ["Rapid Molecular – LPA", "Line Probe Assay (PCR-based) for MTB complex"],
             ["Rapid Molecular – NAAT", "GeneXpert (Real-time PCR); detects TB + Rifampicin resistance"],
             ["Radiography", "Chest X-ray where available"],
             ["Tuberculin Skin Test", "Mantoux test"]]
story.append(tbl(diag_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(6))

story.append(Paragraph("Lab Network Structure", h3))
lab_data = [["Level", "Lab Type", "Function"],
            ["National", "6 National Reference Laboratories (NRL)", "EQA, DR surveillance, training, research"],
            ["Intermediate", "Intermediate Reference Laboratories (IRL)", "DST for 1st & 2nd line drugs"],
            ["District", "CBNAAT sites / DTCs", "Universal DST; detect Rifampicin resistance"],
            ["Peripheral", "Designated Microscopy Centres (DMCs)", "AFB smear microscopy"]]
story.append(tbl(lab_data, col_widths=[3.5*cm, 5.5*cm, 6.5*cm]))
story.append(sp(4))
story.append(Paragraph("6 NRLs: NTI Bengaluru, NIRT Chennai, NITRD Delhi, JALMA Agra, RMRC Bhubaneswar, BMHRC Bhopal\nNIRT Chennai = WHO Supra National Reference Lab for SEARO", body))
story.append(sp(6))

story.append(Paragraph("New Initiatives in NTEP", h2))
story.append(Paragraph("1. NIKSHAY – Case-based web IT system", h3))
for pt in ["'NI' + 'KSHAY' = Eradication of TB (Hindi)",
           "Developed by Central TB Division + National Informatics Centre (NIC)",
           "All TB patients mandatorily notified online",
           "Tracks treatment outcome, drug supplies, private sector"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("2. Universal Drug Susceptibility Testing (UDST)", h3))
for pt in ["ALL TB patients tested for drug resistance (not just previously treated)",
           "GeneXpert is primary tool for UDST at district level",
           "Rapid, detects TB + Rifampicin resistance in < 2 hours"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("3. Bedaquiline & Delamanid", h3))
for pt in ["New drugs for MDR/XDR-TB managed at Nodal DR-TB Centres (NDR-TBC)",
           "First new TB drugs in 50 years",
           "Used when standard regimens fail"]:
    story.append(Paragraph(f"• {pt}", bullet))

story.append(Paragraph("4. Daily Fixed Dose Combination (FDC) Regimens", h3))
story.append(Paragraph("• Replaced thrice-weekly DOTS. Daily doses improve treatment outcomes.", bullet))

story.append(Paragraph("5. Mandatory Notification", h3))
story.append(Paragraph("• All TB cases (public AND private) to be mandatorily notified via NIKSHAY", bullet))

story.append(Paragraph("6. TB Free India Campaign (PM TB Mukt Bharat)", h3))
for pt in ["Ni-kshay Mitra scheme – individuals/organisations can 'adopt' TB patients",
           "Nutritional support via Direct Benefit Transfer (DBT)",
           "Rs. 500/month to TB patients during treatment (Ni-kshay Poshan Yojana)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("National Strategic Plan (NSP) 2017–2025", h2))
story.append(Paragraph("Vision: A TB-free India | Target: Eliminate TB (incidence < 1/million) by 2025", key_box))
story.append(sp(4))
nsp_targets = [["Indicator", "Baseline 2015", "Target 2025"],
               ["TB Incidence (per 100,000)", "217", "< 44"],
               ["TB Prevalence (per 100,000)", "320", "< 65"],
               ["TB Mortality (per 100,000)", "32", "< 3"],
               ["Catastrophic costs due to TB", "35%", "0%"]]
story.append(tbl(nsp_targets, col_widths=[7*cm, 4*cm, 4.5*cm]))
story.append(sp(4))

story.append(Paragraph("4 Strategic Pillars of NSP (DETA):", h3))
for pt in ["D – Detect: Universal access to quality diagnosis",
           "E – Engage: All care providers (public + private)",
           "T – Treat: Universal access to quality treatment",
           "A – Actively support: Patients, families, communities"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(Paragraph("🧠 Mnemonic: <b>DETA</b> = Detect, Engage, Treat, Actively support", mem_box))
story.append(sp(6))

story.append(Paragraph("Drug Resistance Surveillance (DRS) & Management", h2))
dr_data = [["Type", "Definition", "Regimen"],
           ["RR-TB", "Rifampicin Resistant TB", "Shorter MDR regimen / Bedaquiline regimen"],
           ["MDR-TB", "Resistant to INH + Rifampicin", "9-11 month shorter regimen (BPaLM)"],
           ["Pre-XDR", "MDR + resistant to any fluoroquinolone", "BPaLM (Bedaquiline, Pretomanid, Linezolid, Moxifloxacin)"],
           ["XDR-TB", "MDR + FQ + 2nd line injectables", "Bedaquiline + Delamanid-based"]]
story.append(tbl(dr_data, col_widths=[3*cm, 5.5*cm, 7*cm]))
story.append(sp(4))

story.append(Paragraph("DR-TB Centre Structure:", h3))
for pt in ["District DR-TB Centre (DDR-TBC): RR-TB and H mono/poly DR-TB (inpatient + outpatient)",
           "Nodal DR-TB Centre (NDR-TBC): XDR, treatment failures, new drugs, NTMs, palliative"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 4. NACP
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("4. NATIONAL AIDS CONTROL PROGRAMME (NACP)", h1))
story.append(Paragraph("NACP Launched: 1987 | Implementing body: NACO (National AIDS Control Organisation)", key_box))
story.append(sp(4))

story.append(Paragraph("NACP Phases", h2))
phases_data = [["Phase", "Period", "Focus"],
               ["NACP I", "1992–1999", "Slow HIV spread; surveillance; blood safety"],
               ["NACP II", "1999–2006", "Behaviour change; decentralisation; NGO involvement; State AIDS Control Societies"],
               ["NACP III", "2007–2012", "Halt and reverse HIV epidemic; Prevention + treatment scale-up"],
               ["NACP IV", "2012–2017", "Consolidate gains; reduce new infections; achieve ZERO targets"],
               ["NSP (NACP V)", "2017–2024", "Treat all; zero new infections; zero AIDS deaths; zero stigma"]]
story.append(tbl(phases_data, col_widths=[2.5*cm, 3.5*cm, 9.5*cm]))
story.append(sp(6))

story.append(Paragraph("NACP NSP Goals (2017–2024):", h2))
story.append(Paragraph("90-90-90 Targets:", h3))
for pt in ["90% of PLHIV know their status",
           "90% of diagnosed PLHIV on sustained ART",
           "90% of people on ART have viral suppression"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(Paragraph("Ultimate Goal: 95-95-95 by 2025 → Zero new infections, Zero AIDS deaths, Zero discrimination", key_box))
story.append(sp(6))

story.append(Paragraph("Surveillance", h2))
for pt in ["Sentinel surveillance: Annual HIV sentinel surveillance in antenatal clinics (ANC) and high-risk groups",
           "Integrated Biological and Behavioural Surveillance (IBBS) for key populations",
           "ICTC-based surveillance",
           "Prevalence estimated by NACO + ICMR + WHO"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("ICTC – Integrated Counselling and Testing Centres", h2))
story.append(Paragraph("Purpose: HIV counselling + testing + referral + IEC about HIV transmission and prevention", body))
story.append(sp(4))
ictc_data = [["Type", "Description"],
             ["Fixed Facility ICTC", "Within hospital / health centre"],
             ["Standalone ICTC (SA-ICTC)", "High client load; full-time counsellor + lab technician; medical colleges, district hospitals"],
             ["Facility-Integrated ICTC (F-ICTC)", "Below block level (24×7 PHC); existing staff trained; PPP variant also exists"],
             ["Mobile ICTC", "Van-based; hard-to-reach areas; flexible hours; HIV testing + STI + ANC + immunisation"]]
story.append(tbl(ictc_data, col_widths=[4.5*cm, 11*cm]))
story.append(sp(4))
story.append(Paragraph("Community-based HIV Screening: ANMs at sub-centre level offer HIV testing to ALL pregnant women", key_box))
story.append(sp(6))

story.append(Paragraph("PPTCT – Prevention of Parent-to-Child Transmission", h2))
story.append(Paragraph("<b>Started: 2002 | Aim: Universal testing + eliminate mother-to-child transmission</b>", h3))
for i, pt in enumerate(["Routine HIV counselling + testing to ALL pregnant women (opt-out approach)",
                         "Involve spouse and family → 'Family-Centric' approach (not just ANC-centric)",
                         "Lifelong ART (TDF + 3TC + EFV) to ALL HIV+ pregnant/breastfeeding women regardless of CD4",
                         "Promote institutional deliveries for all HIV+ pregnant women",
                         "Manage associated conditions: STI/RTI, TB, opportunistic infections",
                         "Nutrition counselling + psychosocial support",
                         "Encourage exclusive breastfeeding within 1 hour of delivery for 6 months",
                         "ARV prophylaxis to infant from birth for minimum 6 weeks (up to 6 months)",
                         "Early Infant Diagnosis (EID): HIV-DNA PCR at 6 weeks of age",
                         "Co-trimoxazole Prophylactic Therapy (CPT) initiation",
                         "Community follow-up through local networks"]):
    story.append(Paragraph(f"{i+1}. {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Services for High-Risk Groups (HRG)", h2))
hrg_data = [["Group", "Service"],
            ["Sex Workers (FSW)", "Targeted Interventions (TI); condom promotion; STI treatment; empowerment"],
            ["Men who have Sex with Men (MSM)", "TI programmes; HIV testing; ART linkage"],
            ["Intravenous Drug Users (IVDU)", "Needle-syringe exchange; Opioid Substitution Therapy (OST)"],
            ["Truckers / Migrants", "TI at transit points; condom dispensers on highways"],
            ["Prisoners", "HIV testing; ART; counselling in prisons"]]
story.append(tbl(hrg_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(6))

story.append(Paragraph("Suraksha Clinic", h2))
for pt in ["One-stop facility for HRGs providing STI/RTI services",
           "Syndrome-based management of STIs",
           "HIV testing + counselling",
           "Condom promotion",
           "Referral for ART",
           "Located at strategically important sites (truckers' highways, etc.)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Colour-Coded Kits for STI/RTI Treatment", h2))
kit_data = [["Kit Colour", "Syndrome", "Key Drugs"],
            ["Kit 1 – Red", "Vaginal Discharge Syndrome", "Metronidazole + Fluconazole"],
            ["Kit 2 – Green", "Urethral Discharge Syndrome (Male)", "Cefixime + Azithromycin"],
            ["Kit 3 – Blue", "Genital Ulcer Disease (Syphilis/Chancroid)", "Benzathine penicillin + Azithromycin"],
            ["Kit 4 – White", "Inguinal Bubo", "Doxycycline"],
            ["Kit 5 – Yellow", "Lower Abdominal Pain (PID)", "Multi-drug regimen"],
            ["Kit 6 – Black", "Ophthalmic Neonatorum", "Eye drops + antibiotics"],
            ["Kit 7 – Grey", "Recurrent Vaginal Discharge", "Clotrimazole"]]
story.append(tbl(kit_data, col_widths=[4*cm, 5*cm, 6.5*cm]))
story.append(Paragraph("🧠 Remember: <b>R-G-B-W-Y-Blk-Gr</b> = Red, Green, Blue, White, Yellow, Black, Grey kits", mem_box))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 5. NPCB
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("5. NATIONAL PROGRAMME FOR CONTROL OF BLINDNESS (NPCB)", h1))
story.append(Paragraph("Now: National Programme for Control of Blindness & Visual Impairment (NPCB&VI)", key_box))
story.append(sp(4))
story.append(Paragraph("Social Blindness: Visual acuity < 3/60 in better eye | Economic Blindness: Visual acuity < 6/60 in better eye", alert_box))
story.append(sp(4))

story.append(Paragraph("Objectives", h2))
for i, pt in enumerate(["Reduce prevalence of blindness from 1.1% to 0.3%",
                         "Reduce backlog of avoidable blindness through cataract surgery at all levels",
                         "Develop 'Eye Health for All' strategy – comprehensive universal eye care",
                         "Strengthen RIOs as centres of excellence",
                         "Strengthen district infrastructure + human resources",
                         "Enhance community awareness and preventive measures",
                         "Expand research on blindness prevention",
                         "Secure NGO/private participation in eye care"]):
    story.append(Paragraph(f"{i+1}. {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("Activities at Different Levels", h2))
act_data = [["Level", "Activities"],
            ["Primary (Sub-centre)", "Vision testing; basic eye care; referral; PMOA (Para-Medical Ophthalmic Assistant) at Vision Centres in PHCs"],
            ["Secondary (District Hospital)", "Cataract surgery; IOL implantation (expanded to taluka level); District Blindness Control Society"],
            ["Tertiary (RIO/Medical College)", "Specialised services: diabetic retinopathy, glaucoma, corneal transplant, vitreo-retinal surgery, paediatric ophthalmology"],
            ["Mobile Units", "80 central mobile units (medical colleges) + 341 district mobile units; eye camps in rural areas"]]
story.append(tbl(act_data, col_widths=[4*cm, 11.5*cm]))
story.append(sp(6))

story.append(Paragraph("Key Strategies", h2))
for pt in ["Emphasis on FREE cataract surgery (health system + NGO + private)",
           "Comprehensive eye care beyond cataract (diabetic retinopathy, glaucoma, corneal transplant)",
           "Screening population >50 years; eye camps; transport to fixed facilities",
           "School screening for refractive errors; free spectacles to poor children",
           "IEC activities for eye-care awareness"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("Global Target (Vision 2020 / IAPB): Reduce avoidable visual impairment by 25% by 2019 from 2010 baseline", key_box))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 6. NRHM
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("6. NATIONAL RURAL HEALTH MISSION (NRHM)", h1))
story.append(Paragraph("Launched: April 2005 | Period: 2005–2012 → Extended to 2017 → Now NHM (National Health Mission)", key_box))
story.append(sp(4))

story.append(Paragraph("Goals", h2))
for pt in ["Improve availability and access to quality health care for rural population",
           "Particular focus on 18 high focus states (includes 8 EAG states)",
           "Reduce IMR, MMR, TFR to meet RCH goals"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Major Initiatives (ABCDE Framework)", h2))
init_data = [["Initiative", "Details"],
             ["ASHA", "Accredited Social Health Activist – 1 per 1,000 population; link worker; incentive-based"],
             ["AYUSH Integration", "Integration of Ayurveda, Yoga, Unani, Siddha, Homeopathy"],
             ["RKS (Rogi Kalyan Samiti)", "Hospital management committee with community involvement"],
             ["Village Health & Sanitation Committee (VHSC)", "Village level planning + monitoring"],
             ["Untied Funds", "Sub-centre: Rs. 10,000/yr; PHC: Rs. 25,000/yr; CHC: Rs. 50,000/yr"],
             ["Indian Public Health Standards (IPHS)", "Norms for infrastructure + staffing at all levels"],
             ["24×7 Delivery Services", "All PHCs to provide round-the-clock delivery"],
             ["Janani Suraksha Yojana (JSY)", "Cash incentive for institutional delivery; reduce MMR/IMR"],
             ["Mobile Medical Units (MMU)", "One per district for hard-to-reach areas"]]
story.append(tbl(init_data, col_widths=[5*cm, 10.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 7. EMERGING & RE-EMERGING INFECTIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("7. EMERGING & RE-EMERGING INFECTIONS", h1))

story.append(Paragraph("Definitions", h2))
story.append(Paragraph("<b>Emerging Infection:</b> Newly recognised infection in a population OR known infection newly appearing in areas where it has not occurred previously (e.g., COVID-19, SARS, Nipah)", body))
story.append(Paragraph("<b>Re-emerging Infection:</b> Known infection that had declined but is now re-appearing (e.g., Dengue, Chikungunya, Monkeypox, TB)", body))
story.append(sp(6))

story.append(Paragraph("Factors Responsible for Emerging/Re-emerging Infections", h2))
factors_data = [["Category", "Examples"],
                ["Ecological changes", "Deforestation, dam construction, climate change, floods"],
                ["Human demographics", "Population growth, migration, urbanisation, overcrowding"],
                ["International travel & trade", "Spread via air travel; importation of exotic animals"],
                ["Technology & industry", "Modern food processing; blood products; organ transplant"],
                ["Microbial adaptation", "Mutation, antimicrobial resistance, antigenic variation"],
                ["Breakdown of public health", "Loss of herd immunity, reduced vaccination, civil war"],
                ["Poverty & social inequality", "Malnutrition, poor housing, unsafe water"]]
story.append(tbl(factors_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(6))

story.append(Paragraph("Key Examples", h2))
eg_data = [["Disease", "Pathogen", "Key Feature"],
           ["COVID-19", "SARS-CoV-2 (Betacoronavirus)", "Pandemic 2019-; respiratory; mRNA vaccines"],
           ["Human Monkeypox", "Orthopoxvirus (DNA virus)", "Zoonosis; rodents/primates; rash; WHO PHEIC 2022"],
           ["Ebola Virus Disease", "Filovirus (Ebola virus)", "Haemorrhagic fever; high CFR; West Africa 2014"],
           ["SARS", "SARS-CoV-1", "2003 outbreak; China; CFR ~10%; contained"],
           ["Influenza (pandemic)", "Influenza A (H1N1, H5N1)", "Antigenic shift; pandemic potential"],
           ["Nipah Virus", "Paramyxovirus", "Bats → pigs/humans; Kerala outbreaks India"],
           ["Zika Virus", "Flavivirus", "Microcephaly in foetus; Aedes vector"]]
story.append(tbl(eg_data, col_widths=[3.5*cm, 4.5*cm, 7.5*cm]))
story.append(sp(4))

story.append(Paragraph("Antimicrobial Resistance (AMR)", h2))
for pt in ["Leading global public health threat",
           "Caused by: overuse/misuse of antibiotics, subtherapeutic doses, agricultural use",
           "Mechanisms: enzyme production (beta-lactamase), efflux pumps, target modification",
           "Key pathogens: MRSA, VRSA, ESBL-producers, CRE, MDR-TB",
           "WHO Global Action Plan on AMR 2015: Awareness, surveillance, infection prevention, research, access",
           "India's National Action Plan on AMR 2017–2021"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 8. HOSPITAL ACQUIRED INFECTIONS (HAI)
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("8. HOSPITAL ACQUIRED INFECTIONS (HAI)", h1))
story.append(Paragraph("Also called: Nosocomial infections | Definition: Infection acquired in hospital not present or incubating at time of admission", key_box))
story.append(sp(4))

story.append(Paragraph("Types & Criteria (CDC Definitions)", h2))
hai_data = [["Type", "Criteria"],
            ["Surgical Site Infection (SSI)", "Infection within 30 days of surgery (or 1 year if implant) at incision site"],
            ["Catheter-Associated UTI (CAUTI)", "UTI in patient with urinary catheter or within 48 hrs of removal; >10^5 CFU/mL"],
            ["Ventilator-Associated Pneumonia (VAP)", "Pneumonia in patient on mechanical ventilation >48 hrs"],
            ["Central Line-Associated BSI (CLABSI)", "Bacteraemia with central venous catheter; no other source"],
            ["Clostridium difficile Infection", "Diarrhoea in hospitalised patient; positive C. diff toxin"]]
story.append(tbl(hai_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(6))

story.append(Paragraph("Sources, Routes & Recipients", h2))
story.append(Paragraph("<b>Sources:</b> Patients (endogenous flora), Staff, Visitors, Environment, Equipment, Air", body))
story.append(Paragraph("<b>Routes:</b> Contact (most common), Droplet, Airborne, Vehicle (water/food), Vectorborne", body))
story.append(Paragraph("<b>Recipients (Risk Factors):</b> Elderly, neonates, immunocompromised, diabetics, burns, invasive devices, prolonged hospitalisation", body))
story.append(sp(6))

story.append(Paragraph("Standard Precautions (Routine / Universal)", h2))
for pt in ["Hand hygiene (MOST important) – WHO 5 moments",
           "Personal Protective Equipment (gloves, gowns, masks, eye protection)",
           "Safe injection practices (needle-stick prevention)",
           "Proper disposal of sharps and clinical waste",
           "Respiratory hygiene / cough etiquette",
           "Environmental cleaning and disinfection",
           "Sterile instruments and equipment",
           "Linen handling"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("🧠 WHO 5 Moments for Hand Hygiene: Before patient contact → Before aseptic task → After body fluid exposure → After patient contact → After touching patient surroundings", mem_box))
story.append(sp(4))

story.append(Paragraph("Targeted Prevention", h2))
target_data = [["HAI Type", "Key Bundle Interventions"],
               ["UTI (CAUTI)", "Insert only when necessary; maintain closed system; daily review for removal; aseptic insertion"],
               ["SSI", "Pre-op antibiotics within 1 hr; normothermia; clipping (not shaving); glycaemic control; sterile technique"],
               ["Pneumonia (VAP)", "HOB elevation 30-45°; oral care with chlorhexidine; daily sedation vacation; SBT; hand hygiene"],
               ["BSI (CLABSI)", "Maximal barrier precautions; chlorhexidine skin prep; optimal site selection; daily review"]]
story.append(tbl(target_data, col_widths=[4*cm, 11.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 9. HOSPITAL WASTE MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("9. HOSPITAL WASTE MANAGEMENT", h1))
story.append(Paragraph("BMW Rules 2016 (Biomedical Waste Management Rules, 2016) – amended 2018, 2019", key_box))
story.append(sp(4))

story.append(Paragraph("Definition & Sources", h2))
story.append(Paragraph("Biomedical Waste = Waste generated during diagnosis, treatment, or immunisation of humans or animals, or research/production of biological products", body))
story.append(Paragraph("<b>Sources:</b> Hospitals, Clinics, Nursing homes, Blood banks, Research labs, Veterinary institutions, Pharmacies, Mortuaries", body))
story.append(sp(6))

story.append(Paragraph("Health Hazards of Healthcare Waste", h2))
for pt in ["Infections: HIV, HBV, HCV from sharps and blood",
           "Chemical burns from cytotoxic, radioactive, chemical waste",
           "Radiation injury from radioactive waste",
           "Environmental contamination: soil, water, air",
           "Mechanical injuries from sharps"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("BMW Categories, Segregation, Collection & Treatment (BMW Rules 2016)", h2))
bmw_data = [["Category\n(Colour Bag/Container)", "Waste Type", "Treatment & Disposal"],
            ["Yellow Bag", "Human anatomical, animal, soiled items, blood bags, expired medicines, chemical/chemical liquid waste, microbiological waste", "Incineration / Deep burial (for anatomical waste in rural areas)"],
            ["Red Bag", "Contaminated recyclable waste: tubing, catheters, IV sets, gloves, syringes (without needle)", "Autoclaving / Microwaving / Chemical treatment → Recycling"],
            ["White (Translucent)\nPuncture-proof Container", "Sharps waste: needles, syringes with needles, blades, lancets", "Autoclaving + Shredding / Encapsulation + Disposal in secured landfill"],
            ["Blue Cardboard Box\n(or any puncture-proof)", "Glassware: broken glass, ampoules, vials (not cytotoxic)", "Disinfection by autoclaving + disposal in secured landfill"]]
story.append(tbl(bmw_data, col_widths=[3.5*cm, 6*cm, 6*cm]))
story.append(sp(4))
story.append(Paragraph("🧠 Mnemonic: <b>Yellow-Red-White-Blue</b> → Incinerate / Autoclave-recycle / Sharps / Glass", mem_box))
story.append(sp(6))

story.append(Paragraph("Treatment & Disposal Techniques", h2))
tech_data = [["Method", "Use / Details"],
             ["Incineration", "High-temperature burning (850-1100°C); anatomical waste, sharps; reduces volume by 90%"],
             ["Autoclaving", "Steam sterilisation (121°C, 15 psi, 30 min); microbiological, red bag waste"],
             ["Microwaving", "Electromagnetic radiation; similar to autoclaving for contaminated waste"],
             ["Chemical Treatment", "NaOCl / glutaraldehyde for liquid waste, blood"],
             ["Shredding + Encapsulation", "Sharps destruction; cement/tar encapsulation in secure landfill"],
             ["Deep Burial", "Anatomical waste in remote/rural areas (minimum 2m deep; away from water sources)"]]
story.append(tbl(tech_data, col_widths=[4.5*cm, 11*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 10. DISASTER MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("10. DISASTER MANAGEMENT", h1))
story.append(Paragraph("Disaster Management Act 2005 | NDMA = National Disaster Management Authority (PM = Chairperson)", key_box))
story.append(sp(4))

story.append(Paragraph("Definition & Types", h2))
story.append(Paragraph("<b>Disaster:</b> A serious disruption of the functioning of a community causing widespread human, material, economic or environmental losses which exceed the ability of the affected community to cope using its own resources (UNISDR)", body))
story.append(sp(4))
dis_data = [["Natural Disasters", "Man-made Disasters"],
            ["Geophysical: Earthquakes, volcanoes, tsunamis", "Industrial: Chemical spills, nuclear accidents, explosions"],
            ["Meteorological: Cyclones, floods, droughts, storms", "Transport: Rail, air, road accidents"],
            ["Biological: Epidemics, infestations", "Intentional: Terrorism, bioterrorism, war"],
            ["Climatological: Heat waves, wildfires", "Technological: Infrastructure failures"]]
story.append(tbl(dis_data, col_widths=[8*cm, 7.5*cm], head=False))
story.append(sp(6))

story.append(Paragraph("Disaster Management Cycle", h2))
story.append(Paragraph("🧠 Mnemonic: <b>PPRRR</b> = Prevention → Preparedness → Response → Recovery → Rehabilitation", mem_box))
story.append(sp(4))
cycle_data = [["Phase", "Activities"],
              ["Prevention / Mitigation", "Reduce risk: building codes, early warning systems, flood control, immunisation"],
              ["Preparedness", "Contingency planning, training, stockpiling, mock drills, ICS, coordination"],
              ["Response", "Emergency operations: search & rescue, triage, medical care, shelter, evacuations"],
              ["Recovery", "Restore services: debris removal, temporary housing, infrastructure repair"],
              ["Rehabilitation", "Long-term restoration: psychosocial support, livelihood, reconstruction"]]
story.append(tbl(cycle_data, col_widths=[4*cm, 11.5*cm]))
story.append(sp(6))

story.append(Paragraph("Triage (START System – Simple Triage And Rapid Treatment)", h2))
triage_data = [["Colour", "Priority", "Category", "Criteria"],
               ["GREEN", "Priority 3 (Delayed)", "Minor / Walking Wounded", "Can walk; minor injuries; treat last"],
               ["YELLOW", "Priority 2 (Delayed)", "Injured – can wait", "Non-life-threatening; can survive delay"],
               ["RED", "Priority 1 (Immediate)", "Life-threatening but salvageable", "RR > 30, CRT > 2 sec, altered mentation"],
               ["BLACK", "Priority 0", "Dead / Expectant", "No respirations after airway opening / incompatible with survival"]]
story.append(tbl(triage_data, col_widths=[2.5*cm, 3.5*cm, 4*cm, 5.5*cm]))
story.append(sp(4))

story.append(Paragraph("Management of Specific Disaster Types", h2))
spec_data = [["Disaster", "Key Health Priorities"],
             ["Floods", "Waterborne diseases (cholera, typhoid, hepatitis A); safe water supply; vector control; skin diseases; mental health"],
             ["Earthquakes", "Trauma care; crush injuries; search & rescue; tetanus prophylaxis; infection control"],
             ["Cyclones/Storms", "Evacuation; trauma; saltwater contamination; diarrhoea control"],
             ["Chemical Leak", "Decontamination corridors; PPE for responders; antidotes (atropine for organophosphates); airway management"]]
story.append(tbl(spec_data, col_widths=[4*cm, 11.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 11. HEALTH INFORMATION & STATISTICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("11. HEALTH INFORMATION & BASIC MEDICAL STATISTICS", h1))

story.append(Paragraph("Definition & Sources of Health Information", h2))
story.append(Paragraph("<b>Health Information:</b> Data or knowledge about health status of individuals or populations", body))
src_data = [["Source", "Examples"],
            ["Routine / Administrative", "HMIS, OPD/IPD registers, disease registers"],
            ["Census", "Population data every 10 years; age-sex distribution"],
            ["Civil Registration / Vital Events", "Births, deaths, marriages (legally registered)"],
            ["Sample Registration System (SRS)", "Continuous demographic survey; most reliable for IMR, MMR, TFR"],
            ["Notification of Diseases", "Compulsory notification of communicable diseases to authorities"],
            ["Surveys & Special Studies", "NFHS, DLHS, AHS, NSSO surveys"],
            ["Disease Surveillance", "IDSP (Integrated Disease Surveillance Programme)"]]
story.append(tbl(src_data, col_widths=[5.5*cm, 10*cm]))
story.append(sp(6))

story.append(Paragraph("Representation of Data", h2))
story.append(Paragraph("<b>Qualitative (Categorical) Data:</b>", h3))
data_types1 = [["Chart Type", "Use"],
               ["Bar chart", "Comparing categories; most versatile"],
               ["Pie chart", "Parts of a whole (proportions); % distribution"],
               ["Pictogram / Pictograph", "Simple pictorial representation of frequency"]]
story.append(tbl(data_types1, col_widths=[5*cm, 10.5*cm]))
story.append(sp(4))
story.append(Paragraph("<b>Quantitative (Continuous/Discrete) Data:</b>", h3))
data_types2 = [["Chart Type", "Use"],
               ["Histogram", "Continuous data; adjacent bars (no gap)"],
               ["Frequency polygon", "Continuous data; connect midpoints of histogram bars"],
               ["Line diagram", "Trends over time; most useful for time-series"],
               ["Scatter diagram", "Correlation between two variables"],
               ["Ogive (cumulative frequency)", "Cumulative distribution; reading percentiles"]]
story.append(tbl(data_types2, col_widths=[5*cm, 10.5*cm]))
story.append(sp(6))

story.append(Paragraph("Measures of Central Tendency", h2))
mct_data = [["Measure", "Definition / Formula", "When to Use"],
            ["Mean (Arithmetic)", "Sum of values ÷ n; affected by outliers", "Symmetric, normally distributed data"],
            ["Median", "Middle value; NOT affected by outliers", "Skewed data; ordinal data"],
            ["Mode", "Most frequent value", "Categorical / nominal data; bimodal distributions"]]
story.append(tbl(mct_data, col_widths=[3.5*cm, 6.5*cm, 5.5*cm]))
story.append(sp(4))
story.append(Paragraph("Normal distribution: Mean = Median = Mode", key_box))
story.append(sp(6))

story.append(Paragraph("Measures of Dispersion", h2))
disp_data = [["Measure", "Formula / Notes", "Key Feature"],
             ["Range", "Max − Min", "Simplest; sensitive to outliers"],
             ["Mean Deviation", "Σ|x − x̄| / n", "Average absolute deviation"],
             ["Variance (σ²)", "Σ(x − x̄)² / n", "Units² – hard to interpret"],
             ["Standard Deviation (SD)", "√Variance", "Most widely used; same units as data"],
             ["Coefficient of Variation", "(SD / Mean) × 100", "Compare variability of different units"]]
story.append(tbl(disp_data, col_widths=[4*cm, 5.5*cm, 6*cm]))
story.append(sp(6))

story.append(Paragraph("Standard Normal Distribution (SND)", h2))
for pt in ["Bell-shaped, symmetric curve",
           "Mean = Median = Mode = 0 (in standard form)",
           "Total area under curve = 1",
           "Mean ± 1 SD = 68.27% of observations",
           "Mean ± 2 SD = 95.45% of observations",
           "Mean ± 3 SD = 99.73% of observations",
           "Used to calculate Z-scores: Z = (X − μ) / σ"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(Paragraph("🧠 Mnemonic: <b>68-95-99.7 Rule</b> for 1SD, 2SD, 3SD", mem_box))
story.append(sp(6))

story.append(Paragraph("Sampling Methods", h2))
samp_data = [["Method", "Description", "Use"],
             ["Simple Random Sampling", "Each unit has equal probability; lottery / random number table", "Homogeneous population"],
             ["Systematic Sampling", "Every kth element; k = N/n", "Large lists, even distribution"],
             ["Stratified Sampling", "Divide into strata; random within each stratum", "Heterogeneous population"],
             ["Cluster Sampling", "Natural groups (villages/schools) as sampling units; all within cluster sampled", "Large geographic area"],
             ["Multistage Sampling", "Sequential application of sampling at each stage", "National surveys (NFHS)"],
             ["Purposive / Judgement", "Researcher selects based on judgement", "Qualitative research"],
             ["Quota Sampling", "Fill pre-set quotas from each group", "Market research; pilot studies"],
             ["Snowball Sampling", "Participants recruit next participants", "Hard-to-reach populations (IVDU)"]]
story.append(tbl(samp_data, col_widths=[4*cm, 5.5*cm, 6*cm]))
story.append(sp(6))

story.append(Paragraph("Tests of Significance", h2))
sig_data = [["Test", "Use"],
            ["Z-test", "Large sample (n > 30); known population SD; compare means or proportions"],
            ["Student's t-test", "Small sample (n < 30); compare means of 2 groups (independent or paired)"],
            ["Chi-square test (χ²)", "Association between two categorical variables; contingency tables"],
            ["ANOVA (F-test)", "Compare means of 3 or more groups"],
            ["Mann-Whitney U", "Non-parametric alternative to independent t-test"],
            ["Wilcoxon signed-rank", "Non-parametric alternative to paired t-test"]]
story.append(tbl(sig_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(4))

story.append(Paragraph("Chi-Square Test", h2))
for pt in ["Tests association between 2 categorical variables",
           "Formula: χ² = Σ [(O − E)² / E]; O = Observed, E = Expected",
           "Expected = (Row total × Column total) / Grand total",
           "Degrees of freedom = (r−1)(c−1)",
           "p < 0.05 = statistically significant association",
           "Assumptions: Expected frequency ≥ 5 in each cell; independent observations"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("Correlation & Regression", h2))
corr_data = [["Concept", "Details"],
             ["Pearson's r (correlation)", "Measures linear relationship between 2 continuous variables; −1 to +1"],
             ["r = +1", "Perfect positive correlation"],
             ["r = −1", "Perfect negative correlation"],
             ["r = 0", "No linear correlation"],
             ["Linear Regression (y = a + bx)", "Predicts one variable from another; b = regression coefficient (slope)"],
             ["Multiple Regression", "Predicts outcome from multiple independent variables"]]
story.append(tbl(corr_data, col_widths=[5*cm, 10.5*cm]))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# 12. INTERNATIONAL HEALTH
# ══════════════════════════════════════════════════════════════════════════════
story.append(Paragraph("12. INTERNATIONAL HEALTH ORGANISATIONS", h1))

story.append(Paragraph("WHO – World Health Organization", h2))
story.append(Paragraph("<b>Founded:</b> 7 April 1948 | HQ: Geneva | World Health Day: April 7 each year", h3))
for pt in ["Established under UN; origin from Office International d'Hygiène Publique (1907)",
           "Membership: 194 member states (India is founding member)",
           "Governing bodies: World Health Assembly (WHA) – annual; Executive Board; Secretariat",
           "DG elected by WHA; 6 Regional Offices (SEARO for India, New Delhi)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))
story.append(Paragraph("Objectives / Functions of WHO:", h3))
for pt in ["Act as directing and co-ordinating authority on international health work",
           "Assist governments in strengthening health services",
           "Furnish technical assistance and emergency aid",
           "Promote and conduct research in health field",
           "Promote maternal and child health and welfare",
           "Promote improved standards in teaching, training, nutrition, sanitation, environmental hygiene",
           "Promote eradication of epidemic, endemic, and other diseases",
           "Revise International Pharmacopoeia; establish international standards"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(6))

story.append(Paragraph("UNICEF – United Nations International Children's Emergency Fund", h2))
story.append(Paragraph("<b>Founded:</b> 1946 | HQ: New York | Focus: Child health, nutrition, education, protection", h3))
for pt in ["Created post-WWII to provide emergency food and healthcare to children",
           "In India: supports ICDS, immunisation, polio eradication, nutrition, WIFS",
           "Publishes 'State of the World's Children' report annually",
           "Jointly with WHO launched Baby Friendly Hospital Initiative (BFHI)"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("GOBI – UNICEF Child Survival Strategy", h2))
story.append(Paragraph("🧠 <b>GOBI</b> = Growth monitoring | Oral Rehydration Therapy | Breast feeding | Immunisation", mem_box))
story.append(sp(2))
story.append(Paragraph("<b>Extended: GOBI-FFF</b> = GOBI + Food supplementation + Female literacy + Family planning", body))
story.append(sp(6))

story.append(Paragraph("FAO – Food and Agriculture Organization", h2))
story.append(Paragraph("<b>Founded:</b> 1945 | HQ: Rome | Part of UN system", h3))
for pt in ["Mandate: achieve food security, end hunger, improve nutrition, promote sustainable agriculture",
           "Collaborates with WFP (World Food Programme) and IFAD",
           "Codex Alimentarius Commission: food safety standards"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Rockefeller Foundation", h2))
for pt in ["Established: 1913 by John D. Rockefeller",
           "Major contributions to global public health:",
           "  → Established schools of public health (Johns Hopkins, Harvard, London)",
           "  → Supported development of Yellow Fever vaccine",
           "  → Funded Green Revolution (high-yield crop varieties)",
           "  → Health systems strengthening in developing countries"]:
    story.append(Paragraph(f"• {pt}", bullet))
story.append(sp(4))

story.append(Paragraph("Indian Red Cross & International Red Cross", h2))
rc_data = [["Organisation", "Details"],
           ["International Committee of Red Cross (ICRC)", "Founded: 1863 by Henry Dunant (Switzerland); protects victims of armed conflict; Geneva Conventions"],
           ["International Federation of Red Cross (IFRC)", "Coordinates national Red Cross/Red Crescent societies; humanitarian assistance in disasters"],
           ["Indian Red Cross Society (IRCS)", "Founded: 1920; HQ: New Delhi; President = President of India; blood banks; disaster relief; ambulance"]]
story.append(tbl(rc_data, col_widths=[5*cm, 10.5*cm]))
story.append(sp(4))
story.append(Paragraph("Henry Dunant won the FIRST Nobel Peace Prize (1901) and founded the Red Cross. Symbol: Red cross on white background (medical); Red crescent in Muslim countries.", key_box))
story.append(sp(10))

# Footer note
story.append(divider())
story.append(Paragraph(
    "<i>Source: Park's Textbook of Preventive and Social Medicine | Compiled for MBBS 2023 Batch – Summative Exam 2</i>",
    S("Footer", fontSize=8, textColor=GRAY, alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=12)
))

# ══════════════════════════════════════════════════════════════════════════════
# BUILD
# ══════════════════════════════════════════════════════════════════════════════
doc.build(story)
print(f"PDF generated: {OUTPUT}")
Running Command

cd /home/daytona/workspace/psm-notes && python3 generate_psm_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/psm-notes/PSM_Paper1_ExamNotes.pdf

Your exam-ready PDF is ready! Here's the download link:

PSM Paper1 ExamNotes

PDF Document · PDF


What's inside the PDF (all from Park's Textbook):
#TopicHighlights
1NVBDCP6 diseases table, 3-pronged strategy, malaria milestones, NFME 2030 goals, state categories, IVM details
2NLEP3-pronged detection strategy, Sparsh campaign, SET scheme, DPMR, 5 pillars of road map 2023-27, incentives
3NTEPLab network, NTEP endorsed diagnostics, NIKSHAY, NSP 2017-25 targets, DETA pillars, DR-TB centre structure
4NACPPhase timeline, 90-90-90 goals, ICTC types, PPTCT 11-point protocol, HRG services, Suraksha clinic, colour-coded STI kits
5NPCBSocial vs economic blindness, objectives, activities at each level, mobile units
6NRHMGoals, major initiatives table
7Emerging InfectionsDefinitions, 7 factor categories, disease comparison table, AMR
8HAICDC criteria for CAUTI/SSI/VAP/CLABSI, prevention bundles, WHO 5 moments
9Hospital Waste (BMW 2016)Yellow/Red/White/Blue bag rules, disposal techniques
10Disaster ManagementCycle (PPRRR), START triage table, specific disaster health priorities
11Health StatisticsData sources, chart types, MCT, dispersion, SND (68-95-99.7), sampling methods, chi-square, correlation
12International HealthWHO, UNICEF, GOBI-FFF, FAO, Rockefeller Foundation, Red Cross
Design features for easy revision:
  • Blue headers, colour-coded boxes (green = key facts, orange = mnemonics, red = important alerts)
  • Tables throughout for quick scanning
  • Mnemonics highlighted for every major topic
  • Table of contents for navigation
This is a shared conversation. Sign in to Orris to start your own chat.