DOTS TUBERCULOSIS EASY EXPLAIN FOR 5 marks very easy

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
I now have enough content from Park's Textbook to write a clear, exam-ready answer. Here it is:

DOTS - Directly Observed Treatment, Short-Course

Definition

DOTS stands for Directly Observed Treatment, Short-course. It is the internationally recommended strategy for tuberculosis (TB) control, adopted by India under the Revised National TB Control Programme (RNTCP) in 1993 and now part of the National TB Elimination Programme (NTEP).
The core idea is simple: a health worker watches the patient swallow every dose of anti-TB medicine to ensure the full course is completed.

Why DOTS Was Needed

The old National Tuberculosis Programme (NTP, started 1962) had:
  • Low treatment success rates
  • High death and default rates
  • Rising multidrug-resistant TB (MDR-TB)
DOTS was introduced as the most systematic and cost-effective solution.

5 Components of DOTS (Easy to Remember: P-D-D-D-S)

#ComponentSimple Explanation
1Political will & administrative commitmentGovernment support and funds to run the programme
2Diagnosis by quality sputum smear microscopyReliable, early diagnosis using sputum tests at decentralized labs
3Drugs - adequate supply of quality assured short-course chemotherapyUninterrupted drug supply (Isoniazid + Rifampicin-based regimens)
4Directly Observed TreatmentHealth worker sees each dose being swallowed - no self-treatment
5Systematic monitoring and accountabilityRegular recording, reporting, and evaluation of outcomes

Objectives of RNTCP/DOTS

  1. Cure at least 85% of infectious TB cases
  2. Detect at least 70% of estimated TB cases through quality sputum microscopy

STOP TB Strategy (2006 upgrade)

WHO announced STOP TB strategy in 2006, which added:
  • Pursuing quality DOTS expansion
  • Addressing TB/HIV and MDR-TB
  • Health system strengthening
  • Engaging all care providers
  • Empowering patients and communities
  • Promoting research (diagnosis, treatment, vaccine)

DOTS → NTEP (Current Status)

  • In 2014, WHO's End TB Strategy set a vision of zero TB deaths
  • India renamed RNTCP to NTEP (National Tuberculosis Elimination Programme)
  • Goal: Eliminate TB in India by 2025 (5 years ahead of global target of 2030)

Key Points to Remember for Exam

  • DOTS = patient swallows drug in front of a trained observer
  • The observer can be a health worker, ASHA, or trained community volunteer
  • ASHA workers are providers of DOTS under NTEP
  • Short-course = 6 months standard treatment (2 months intensive + 4 months continuation)
  • DOTS is not just a drug regimen - it is a full programme strategy

Source: Park's Textbook of Preventive and Social Medicine - National TB Elimination Programme section, p. 482

Make it simple and easy for 5 marks

DOTS – Directly Observed Treatment, Short-course


What is DOTS?

DOTS = Directly Observed Treatment, Short-course
A health worker watches the patient swallow every tablet of TB medicine. This ensures the patient does not miss doses and completes full treatment.
Simple rule: No self-treatment. Someone must watch you take the medicine.

Why was DOTS started?

Old TB programme had:
  • Low cure rates
  • Patients stopping medicine halfway
  • Rise of drug-resistant TB
So India adopted DOTS in 1993 under RNTCP as the solution.

5 Components of DOTS

(Easy trick to remember: "PC 3D S")
#ComponentWhat it means (simple)
1Political commitmentGovernment funds & supports the programme
2Diagnosis by sputum microscopyTB confirmed by sputum test, not just symptoms
3Drugs - assured supplyMedicines available free, without shortage
4Directly Observed TreatmentPatient swallows medicine in front of a worker
5Systematic monitoringRecords kept, outcomes tracked regularly

Objectives

  1. Cure ≥85% of infectious TB cases
  2. Detect ≥70% of estimated TB cases

Key Facts (Quick Points)

  • Full form: Directly Observed Treatment, Short-course
  • Treatment duration: 6 months (2 months intensive + 4 months continuation)
  • Observer can be: ASHA worker, health worker, or trained community volunteer
  • Drugs free of cost to all patients
  • India renamed RNTCP → NTEP (National TB Elimination Programme) with goal to eliminate TB by 2025

One-line Summary

DOTS = Watch the patient take every dose + free drugs + good diagnosis + proper records = Cure TB.
(Park's Textbook of Preventive & Social Medicine)

Create a quick study PDF for DOTS NTEP

Reading File
Running Command

mkdir -p /tmp/workspace/dots-ntep && ls /tmp/workspace/dots-ntep/

Writing File

~/dots-ntep/create_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
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame

OUTPUT = "/tmp/workspace/dots-ntep/DOTS_NTEP_Quick_Study.pdf"

# ── colours ──────────────────────────────────────────────────────────────────
C_NAVY   = colors.HexColor("#1a3a5c")
C_TEAL   = colors.HexColor("#1e7f8e")
C_MINT   = colors.HexColor("#d4f1f4")
C_AMBER  = colors.HexColor("#f5a623")
C_YELLOW = colors.HexColor("#fffde7")
C_GREEN  = colors.HexColor("#e8f5e9")
C_RED    = colors.HexColor("#c0392b")
C_LRED   = colors.HexColor("#fdecea")
C_WHITE  = colors.white
C_LGREY  = colors.HexColor("#f4f6f8")
C_DGREY  = colors.HexColor("#555555")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=1.8*cm, rightMargin=1.8*cm,
    topMargin=2*cm, bottomMargin=2*cm,
)

W = A4[0] - 3.6*cm   # usable width

styles = getSampleStyleSheet()

def S(name, **kw):
    """Return a clone of a base style with overrides."""
    base = styles[name]
    ps = ParagraphStyle(name + "_custom", parent=base, **kw)
    return ps

# custom paragraph styles
h_title   = S("Title", fontSize=22, textColor=C_WHITE, alignment=TA_CENTER,
               backColor=C_NAVY, spaceAfter=4, leading=28,
               leftIndent=0, rightIndent=0)
h_sub     = S("Normal", fontSize=11, textColor=C_WHITE, alignment=TA_CENTER,
               backColor=C_TEAL, spaceAfter=2, leading=15)
h1        = S("Heading1", fontSize=13, textColor=C_WHITE, backColor=C_NAVY,
               spaceAfter=4, spaceBefore=10, leading=18,
               leftIndent=6, rightIndent=6)
h2        = S("Heading2", fontSize=11, textColor=C_NAVY, backColor=C_MINT,
               spaceAfter=3, spaceBefore=6, leading=15, leftIndent=4)
body      = S("Normal", fontSize=10, textColor=C_DGREY, leading=15,
               spaceAfter=3, alignment=TA_JUSTIFY)
bullet    = S("Normal", fontSize=10, textColor=C_DGREY, leading=15,
               spaceAfter=2, leftIndent=14, bulletIndent=4)
bold_body = S("Normal", fontSize=10, textColor=C_NAVY, leading=15,
               spaceAfter=3, fontName="Helvetica-Bold")
small     = S("Normal", fontSize=8, textColor=C_DGREY, leading=12,
               alignment=TA_CENTER, spaceAfter=2)
tip       = S("Normal", fontSize=10, textColor=C_RED, leading=14,
               leftIndent=10, spaceAfter=2, fontName="Helvetica-BoldOblique")
mnemonic  = S("Normal", fontSize=11, textColor=C_NAVY, leading=16,
               alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=4)

def banner(text, style):
    """Paragraph inside a rounded-look table cell."""
    return Table([[Paragraph(text, style)]], colWidths=[W],
                 style=TableStyle([
                     ("LEFTPADDING",  (0,0), (-1,-1), 8),
                     ("RIGHTPADDING", (0,0), (-1,-1), 8),
                     ("TOPPADDING",   (0,0), (-1,-1), 6),
                     ("BOTTOMPADDING",(0,0), (-1,-1), 6),
                 ]))

story = []

# ══════════════════════════════════════════════════════════════════════════════
# TITLE BLOCK
# ══════════════════════════════════════════════════════════════════════════════
title_data = [[Paragraph("DOTS & NTEP", h_title)]]
title_tbl = Table(title_data, colWidths=[W],
    style=TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_NAVY),
        ("TOPPADDING", (0,0), (-1,-1), 10),
        ("BOTTOMPADDING",(0,0),(-1,-1), 4),
    ]))
story.append(title_tbl)

sub_data = [[Paragraph("Quick Study Notes  |  Preventive & Social Medicine  |  Park's Textbook", h_sub)]]
sub_tbl = Table(sub_data, colWidths=[W],
    style=TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_TEAL),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
    ]))
story.append(sub_tbl)
story.append(Spacer(1, 0.4*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 1 – WHAT IS DOTS?
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("1.  WHAT IS DOTS?", h1))
story.append(Spacer(1, 0.2*cm))

story.append(Paragraph(
    "<b>DOTS</b> = <b>D</b>irectly <b>O</b>bserved <b>T</b>reatment, <b>S</b>hort-course", bold_body))
story.append(Paragraph(
    "A strategy in which a <b>trained health worker watches the patient swallow every single dose</b> "
    "of anti-TB medicine. No self-treatment is allowed.", body))
story.append(Spacer(1, 0.2*cm))

# Key box
key_data = [
    [Paragraph("<b>Simple Rule:</b>", S("Normal", fontSize=10, textColor=C_NAVY, fontName="Helvetica-Bold", leading=14)),
     Paragraph("\"Someone must <b>watch</b> you take the medicine — every dose, every time.\"",
               S("Normal", fontSize=10, textColor=C_DGREY, leading=14))]
]
key_tbl = Table(key_data, colWidths=[3.2*cm, W-3.2*cm],
    style=TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_YELLOW),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("RIGHTPADDING",(0,0), (-1,-1), 8),
        ("TOPPADDING",  (0,0), (-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ]))
story.append(key_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 2 – HISTORY / WHY DOTS?
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("2.  HISTORY &amp; WHY DOTS WAS NEEDED", h1))
story.append(Spacer(1, 0.2*cm))

hist = [
    ["1962", "National TB Programme (NTP) started — but cure rates very low"],
    ["1993", "RNTCP (Revised NTP) adopted DOTS — cost-effective, systematic"],
    ["2006", "WHO STOP TB Strategy announced — expanded DOTS goals"],
    ["2014", "WHO End TB Strategy — zero deaths, zero TB vision"],
    ["2020", "RNTCP renamed → NTEP (National TB Elimination Programme)"],
    ["2025", "India's target: Eliminate TB (5 years ahead of global 2030 goal)"],
]
hist_tbl = Table(
    [[Paragraph("<b>Year</b>", bold_body), Paragraph("<b>Event</b>", bold_body)]] + 
    [[Paragraph(r[0], S("Normal", fontSize=10, textColor=C_TEAL, fontName="Helvetica-Bold", leading=14)),
      Paragraph(r[1], body)] for r in hist],
    colWidths=[2.2*cm, W-2.2*cm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  C_MINT),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_LGREY]),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
story.append(hist_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 3 – 5 COMPONENTS OF DOTS
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("3.  5 COMPONENTS OF DOTS  (Mnemonic: P-D-D-D-S)", h1))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph("P  —  D  —  D  —  D  —  S", mnemonic))

comp_headers = [
    Paragraph("<b>#</b>", bold_body),
    Paragraph("<b>Component</b>", bold_body),
    Paragraph("<b>Simple Meaning</b>", bold_body),
]
comp_rows = [
    ["1", "Political Will &\nAdministrative Commitment",
     "Govt funds & supports the programme fully"],
    ["2", "Diagnosis by Quality\nSputum Smear Microscopy",
     "TB confirmed by sputum test (ZN stain) — reliable, early, decentralised"],
    ["3", "Drugs — Assured Supply\nof Short-course Chemotherapy",
     "Free, uninterrupted supply of Isoniazid + Rifampicin-based regimens"],
    ["4", "Directly Observed\nTreatment (DOT)",
     "Health worker watches patient swallow every dose — no self-treatment"],
    ["5", "Systematic Monitoring\n& Accountability",
     "Case records, treatment cards, quarterly reports — outcomes tracked"],
]
row_bg = [C_GREEN, C_WHITE, C_GREEN, C_WHITE, C_GREEN]
comp_data = [comp_headers] + [
    [Paragraph(r[0], S("Normal", fontSize=12, textColor=C_NAVY, fontName="Helvetica-Bold",
                        alignment=TA_CENTER, leading=16)),
     Paragraph(r[1], S("Normal", fontSize=10, textColor=C_NAVY, fontName="Helvetica-Bold", leading=14)),
     Paragraph(r[2], body)]
    for r in comp_rows
]
comp_tbl = Table(comp_data, colWidths=[1.2*cm, 5.5*cm, W-6.7*cm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  C_TEAL),
        ("TEXTCOLOR",     (0,0), (-1,0),  C_WHITE),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), row_bg),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#bbbbbb")),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("ALIGN",         (0,0), (0,-1),  "CENTER"),
    ]))
story.append(comp_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 4 – OBJECTIVES
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("4.  OBJECTIVES OF RNTCP / DOTS", h1))
story.append(Spacer(1, 0.2*cm))

obj_data = [
    [Paragraph("<b>Objective 1</b>", bold_body),
     Paragraph("Cure at least <b>85%</b> of infectious (sputum +ve) TB cases through DOTS", body)],
    [Paragraph("<b>Objective 2</b>", bold_body),
     Paragraph("Detect at least <b>70%</b> of estimated TB cases by quality sputum microscopy", body)],
]
obj_tbl = Table(obj_data, colWidths=[3*cm, W-3*cm],
    style=TableStyle([
        ("BACKGROUND",   (0,0), (0,-1), C_AMBER),
        ("BACKGROUND",   (1,0), (1,-1), C_YELLOW),
        ("GRID",         (0,0), (-1,-1), 0.4, colors.HexColor("#dddddd")),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING",   (0,0), (-1,-1), 7),
        ("BOTTOMPADDING",(0,0), (-1,-1), 7),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("ALIGN",        (0,0), (0,-1), "CENTER"),
    ]))
story.append(obj_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 5 – STOP TB STRATEGY 2006
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("5.  STOP TB STRATEGY 2006 (WHO — 6 Components)", h1))
story.append(Spacer(1, 0.2*cm))

stop_items = [
    ("1", "Pursuing quality DOTS expansion and enhancement"),
    ("2", "Addressing TB/HIV and MDR-TB"),
    ("3", "Contributing to health system strengthening"),
    ("4", "Engaging all care providers (public + private)"),
    ("5", "Empowering patients and communities"),
    ("6", "Enabling and promoting research (diagnosis, treatment, vaccine)"),
]
stop_data = [[Paragraph(f"<b>{n}</b>",
                         S("Normal", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold",
                           alignment=TA_CENTER, leading=16)),
              Paragraph(t, body)] for n, t in stop_items]
stop_tbl = Table(stop_data, colWidths=[1.2*cm, W-1.2*cm],
    style=TableStyle([
        ("ROWBACKGROUNDS",(0,0), (-1,-1), [C_NAVY, C_TEAL]),
        ("TEXTCOLOR",    (0,0), (-1,-1), C_WHITE),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("ALIGN",        (0,0), (0,-1), "CENTER"),
    ]))

# override text colour for the body column
for i in range(len(stop_items)):
    stop_tbl._argH  # force build
story.append(stop_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 6 – TREATMENT REGIMEN
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("6.  TREATMENT REGIMEN (Short-Course)", h1))
story.append(Spacer(1, 0.2*cm))

reg_data = [
    [Paragraph("<b>Phase</b>", bold_body),
     Paragraph("<b>Duration</b>", bold_body),
     Paragraph("<b>Drugs</b>", bold_body),
     Paragraph("<b>Frequency</b>", bold_body)],
    [Paragraph("Intensive", S("Normal", fontSize=10, textColor=C_WHITE, fontName="Helvetica-Bold",
                               leading=14, alignment=TA_CENTER)),
     Paragraph("2 months", body),
     Paragraph("HRZE\n(Isoniazid + Rifampicin +\nPyrazinamide + Ethambutol)", body),
     Paragraph("Daily", body)],
    [Paragraph("Continuation", S("Normal", fontSize=10, textColor=C_WHITE, fontName="Helvetica-Bold",
                                  leading=14, alignment=TA_CENTER)),
     Paragraph("4 months", body),
     Paragraph("HRE\n(Isoniazid + Rifampicin +\nEthambutol)", body),
     Paragraph("Daily", body)],
]
reg_tbl = Table(reg_data, colWidths=[3*cm, 2.5*cm, W-8*cm, 2.5*cm],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  C_TEAL),
        ("TEXTCOLOR",     (0,0), (-1,0),  C_WHITE),
        ("BACKGROUND",    (0,1), (0,1),   C_AMBER),
        ("BACKGROUND",    (0,2), (0,2),   C_TEAL),
        ("ROWBACKGROUNDS",(1,1), (-1,-1), [C_YELLOW, C_MINT]),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("ALIGN",         (0,0), (0,-1),  "CENTER"),
    ]))
story.append(reg_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 7 – NTEP STRUCTURE
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("7.  NTEP — PROGRAMME STRUCTURE", h1))
story.append(Spacer(1, 0.2*cm))

struct_items = [
    ("National Level", "Central TB Division (CTD) under MoHFW; supported by NTI Bengaluru, NIRT Chennai, NITRD Delhi"),
    ("State Level",    "State TB Cell — State TB Officer (STO)"),
    ("District Level", "District TB Centre (DTC) — District TB Officer (DTO)"),
    ("Sub-district",   "Tuberculosis Unit (TU) — Medical Officer TB Control (MOTC)"),
    ("Peripheral",     "DMC (Designated Microscopy Centre) — sputum testing; DOTS provider at health sub-centre level"),
]
struct_data = [
    [Paragraph(f"<b>{lv}</b>", S("Normal", fontSize=10, textColor=C_NAVY, fontName="Helvetica-Bold",
                                  leading=14)),
     Paragraph(de, body)] for lv, de in struct_items
]
struct_tbl = Table(struct_data, colWidths=[4*cm, W-4*cm],
    style=TableStyle([
        ("ROWBACKGROUNDS",(0,0), (-1,-1), [C_MINT, C_WHITE]),
        ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
story.append(struct_tbl)
story.append(Spacer(1, 0.3*cm))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 8 – EXAM QUICK POINTS
# ══════════════════════════════════════════════════════════════════════════════
story.append(banner("8.  EXAM QUICK POINTS (Must Know!)", h1))
story.append(Spacer(1, 0.2*cm))

qp = [
    "DOTS started in India under <b>RNTCP in 1993</b>",
    "Full form: <b>Directly Observed Treatment, Short-course</b>",
    "Total treatment = <b>6 months</b> (2 intensive + 4 continuation)",
    "Cure target = <b>85%</b>; Case detection = <b>70%</b>",
    "<b>ASHA workers</b> are the DOTS providers at community level",
    "<b>ZN staining</b> used for sputum smear microscopy (AFB stain)",
    "RNTCP renamed to <b>NTEP</b> — target: eliminate TB by <b>2025</b>",
    "MDR-TB (Multi-Drug Resistant) — treated under <b>DOTS-Plus</b>",
    "WHO <b>End TB Strategy 2014</b> — vision: zero deaths, zero disease from TB",
    "Nikshay portal — <b>online notification system</b> for TB cases in India",
]
for i, pt in enumerate(qp):
    bg = C_LRED if i % 2 == 0 else C_WHITE
    row_tbl = Table(
        [[Paragraph(f"&#9654;  {pt}", bullet)]],
        colWidths=[W],
        style=TableStyle([
            ("BACKGROUND",   (0,0), (-1,-1), bg),
            ("LEFTPADDING",  (0,0), (-1,-1), 10),
            ("RIGHTPADDING", (0,0), (-1,-1), 10),
            ("TOPPADDING",   (0,0), (-1,-1), 4),
            ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ]))
    story.append(row_tbl)

story.append(Spacer(1, 0.4*cm))

# ══════════════════════════════════════════════════════════════════════════════
# MNEMONIC BOX
# ══════════════════════════════════════════════════════════════════════════════
mn_data = [[
    Paragraph("MNEMONIC", S("Normal", fontSize=9, textColor=C_TEAL, fontName="Helvetica-Bold",
                             alignment=TA_CENTER, leading=12)),
    Paragraph(
        "<b>P</b>olitical will &nbsp;&nbsp; <b>D</b>iagnosis &nbsp;&nbsp; "
        "<b>D</b>rugs &nbsp;&nbsp; <b>D</b>OT &nbsp;&nbsp; <b>S</b>ystematic monitoring<br/>"
        "<font color='#1e7f8e'><b>\"Please Don't Delay — Start!\"</b></font>",
        S("Normal", fontSize=11, textColor=C_NAVY, alignment=TA_CENTER, leading=18)),
]]
mn_tbl = Table(mn_data, colWidths=[2.5*cm, W-2.5*cm],
    style=TableStyle([
        ("BACKGROUND",   (0,0), (-1,-1), C_YELLOW),
        ("LEFTPADDING",  (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 10),
        ("TOPPADDING",   (0,0), (-1,-1), 8),
        ("BOTTOMPADDING",(0,0), (-1,-1), 8),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("BOX",          (0,0), (-1,-1), 1.5, C_AMBER),
    ]))
story.append(mn_tbl)
story.append(Spacer(1, 0.5*cm))

# ── footer line ───────────────────────────────────────────────────────────────
story.append(HRFlowable(width=W, thickness=0.5, color=C_TEAL))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
    "Source: Park's Textbook of Preventive &amp; Social Medicine | Orris Quick Study Notes",
    small))

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

cd /tmp/workspace/dots-ntep && python create_pdf.py 2>&1

Your PDF is ready! Here is what's inside:

DOTS NTEP Quick Study

PDF Document · PDF


The PDF covers 8 colour-coded sections:
SectionContent
1What is DOTS + Simple Rule
2History timeline (1962 → 2025)
35 Components table with mnemonic P-D-D-D-S
4Objectives (85% cure / 70% detection)
5STOP TB Strategy 2006 (6 components)
6Treatment regimen (2+4 months, drugs)
7NTEP programme structure (national to peripheral)
810 Exam Quick Points + Mnemonic box
Designed for easy reading before exams - clean tables, colour highlights, and a bold mnemonic "Please Don't Delay - Start!" to remember the 5 components.

NTEP IN SHORT

NTEP — In Short


Full Form

National Tuberculosis Elimination Programme (Previously called RNTCP — Revised National TB Control Programme)

Why Renamed?

  • WHO launched End TB Strategy (2014) — vision: zero TB deaths
  • India set an ambitious goal to eliminate TB by 2025 (5 years ahead of global target of 2030)
  • So RNTCP was upgraded and renamed → NTEP

Goal

Eliminate TB in India by 2025 (Target = less than 1 case per 10 lakh population)

Key Features of NTEP

FeatureDetail
Strategy usedDOTS (Directly Observed Treatment, Short-course)
DiagnosisFree sputum smear microscopy + CBNAAT/TrueNat
TreatmentFree anti-TB drugs to all patients
NotificationAll TB cases must be notified on Nikshay portal
SupportNikshay Poshan Yojana — ₹500/month to TB patients for nutrition
ASHA roleCommunity-level DOTS provider

NTEP Structure (5 Levels)

National → State → District → Sub-district (TU) → Peripheral (DMC)
  • CTD (Central TB Division) — National level
  • STO (State TB Officer) — State level
  • DTO (District TB Officer) — District level
  • MOTC (Medical Officer TB Control) — Sub-district
  • DMC (Designated Microscopy Centre) — sputum testing at ground level

One-line Summary

NTEP = RNTCP upgraded + free diagnosis + free drugs + Nikshay notification + ₹500/month nutrition support — all to eliminate TB from India by 2025.
(Park's Textbook of Preventive & Social Medicine)

RMNCH

Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Here is RMNCH+A in short:

RMNCH+A — In Short

Full Form

Reproductive, Maternal, Newborn, Child and Adolescent Health
The "+A" = Adolescent (added for the first time as a distinct life stage)

When & Why Launched?

  • Launched in February 2013 by Government of India
  • Came from the "Global Child Survival Call to Action" summit (Washington DC, 2012)
  • Goal: Reduce child mortality to ≤ 20 per 1000 live births by 2035
  • Became the heart of National Health Mission (NHM)

5 Pillars (Thematic Areas)

PillarKey Focus
R - Reproductive HealthFamily planning, IUCD, contraceptives, abortion care
M - Maternal HealthEarly ANC registration, safe delivery, EmOC, referral
N - Newborn HealthBreastfeeding, HBNC by ASHA, essential newborn care
C - Child HealthImmunisation, nutrition, IMNCI, vitamin A
+A - Adolescent HealthWIFS (weekly iron-folic acid), menstrual hygiene, RKSK

Key Tool — 5×5 Matrix

  • 5 thematic areas × 5 high-impact interventions each
  • Used to explain strategy, monitor progress, and organise technical support

Special Focus — 184 High Priority Districts (HPDs)

  • Districts with weakest RMNCH+A performance were identified
  • Focused resources, funds, and manpower sent to these districts
  • Covers underserved groups: adolescents, urban poor, tribal populations

Guiding Principles (4)

  1. Equity — reach the most underserved
  2. Universal care — services for all
  3. Entitlement — people's right to health
  4. Accountability — monitoring outcomes

Key Numbers to Remember

IndicatorTarget
IMRReduce to 25/1000 live births by 2017
ASHA workers9.15 lakh — backbone of community delivery
Delivery Points~25,000 health facilities strengthened
High-Priority Districts184 HPDs across 29 states

One-line Summary

RMNCH+A = A continuum of care from before pregnancy to adolescence, delivered through NHM, focused on 184 weak districts, with ASHA at the centre.
(Park's Textbook of Preventive & Social Medicine)
This is a shared conversation. Sign in to Orris to start your own chat.