I want to get the target for tommorow for my psm Give me topics which are most important I will complete it As im confused that where to start

Asking for Preferences
Asking for Preferences
Here is your PSM revision target for tomorrow - a focused 5-6 hour plan covering the highest-yield topics for MBBS university theory exams.

PSM High-Yield Revision Plan (5-6 Hours)

University PSM theory exams are extremely predictable. Below are the must-do topics ranked by how frequently they appear as long answers (LA), short answers (SA), and one-liners.

BLOCK 1 - Epidemiology (1.5 hrs) ⭐ Most Marks

This is the backbone of PSM theory papers.
Must revise:
  • Epidemiological triad (host, agent, environment) - very frequently asked LA
  • Levels of prevention (Primordial / Primary / Secondary / Tertiary with examples)
  • Types of studies - Cross-sectional, Case-control, Cohort, RCT - know the differences, advantages, and limitations in a table format
  • Screening - criteria for screening (Wilson & Jungner criteria), sensitivity, specificity, PPV, NPV - with formulas
  • Bias types - Selection bias, Information bias, Confounding
  • Odds Ratio vs Relative Risk - formulas and when each is used

BLOCK 2 - Biostatistics (45 min) ⭐ Easy Marks

  • Measures of central tendency (mean, median, mode) and when to use each
  • Normal distribution curve - SD percentages (68-95-99.7 rule)
  • Types of data (nominal, ordinal, discrete, continuous)
  • Tests of significance - when to use t-test, chi-square, ANOVA (just the indications, not calculations)
  • p-value and confidence interval interpretation

BLOCK 3 - Nutrition (45 min) ⭐ Frequently Asked LA

  • Protein Energy Malnutrition - Kwashiorkor vs Marasmus (comparison table - examiners love this)
  • Vitamin deficiencies - A, B1, B12, C, D (clinical features + prevention)
  • ICDS scheme - objectives, beneficiaries, services
  • Balanced diet - definition and daily requirements
  • Weaning food / complementary feeding

BLOCK 4 - National Health Programs (1 hr) ⭐ High Scorer

Pick the ones most commonly asked in your university - but revise at least these:
  • NHM / NRHM - objectives, key components, ASHA role
  • RNTCP / Nikshay - DOTS strategy, drug regimens (2HRZE/4HR), MDR-TB management
  • Universal Immunization Programme (UIP) - complete schedule, cold chain, EPI diseases
  • NVBDCP - Malaria (API, SPR), Dengue, Filaria control measures
  • NPCDCS - Non-communicable disease program

BLOCK 5 - Environment & Water (45 min)

  • Chlorination of water - Horrock's apparatus, break-point chlorination, residual chlorine
  • Water purification steps - slow sand filter vs rapid sand filter
  • Disposal of sewage - activated sludge, BOD, septic tank
  • Air pollution - Indoor vs outdoor, specific pollutants (CO, SO2, particulate matter)

BLOCK 6 - Social Medicine / Demography (30 min)

  • Health indicators - IMR, MMR, TFR, NRR, GRR - formulas and India-specific values
  • Demographic cycle / transition - all 5 stages
  • Census - SECC, registration system
  • Socioeconomic scales - Kuppuswamy, BG Prasad (frequently asked one-liner)

Tomorrow's Time Table

Time SlotTopicDuration
Morning (9-10:30 AM)Epidemiology1.5 hrs
10:30-11:15 AMBiostatistics45 min
Break-15 min
11:30 AM - 12:15 PMNutrition45 min
12:15 - 1:15 PMNational Programs1 hr
Lunch break-30 min
2:00 - 2:45 PMEnvironment & Water45 min
2:45 - 3:15 PMDemography30 min
3:15 - 3:45 PMQuick revision / past paper questions30 min
Total active study time: ~5.5 hours

Quick Tips for Tomorrow

  1. Make comparison tables wherever possible (Kwashiorkor vs Marasmus, Case-control vs Cohort, etc.) - examiners give marks for organized answers.
  2. Write down all formulas on one page before you start (Sensitivity, Specificity, OR, RR, IMR) - review them first thing.
  3. RNTCP drug regimens are almost always a 5-mark question - don't skip.
  4. Past year papers - if you have access, spend the last 30 minutes scanning what your university has asked in the last 2-3 years. They repeat topics heavily.
  5. For National Programs, remember the mnemonic: objectives + target group + key worker + drug/dose - this structure gets you full marks.
Start with Epidemiology - it has the most weightage and sets the base for everything else. Good luck tomorrow!

Find last 5 years PSM question papers from your university

I don't have a university — I'm an AI assistant, not a student. 😄
More importantly, I don't know which university you belong to. Could you tell me your university name? For example:
  • Rajiv Gandhi University of Health Sciences (RGUHS)
  • Maharashtra University of Health Sciences (MUHS)
  • Dr. NTR University of Health Sciences
  • Baba Farid University
  • Kerala University of Health Sciences
  • etc.
Once you tell me your university, I can search the web for past PSM question papers specific to your university and year (MBBS Final Part 1 or Part 2 depending on your curriculum).

Lnct vidhyapeeth university

Searching the Web

LNCT Vidyapeeth University MBBS PSM Community Medicine question paper previous years

Unfortunately, I couldn't find specific PSM question papers from LNCT Vidyapeeth University online. This is very common - most private universities in Madhya Pradesh don't publicly upload their past papers on the internet.
Here's what you can do to get them:

Where to Find LNCT Vidyapeeth PSM Papers

Immediate Options (Try Tonight)

  1. WhatsApp seniors/batch groups - Your college's MBBS WhatsApp groups almost always have past papers circulating. Ask your seniors (batch 1-2 years ahead of you).
  2. College library - Physical copies of past university papers are kept in most medical college libraries. Go tomorrow morning before your study session.
  3. Your PSM department - The department office or your PSM faculty often have compiled question banks. Just ask your professor directly.
  4. Fellow students - Someone in your batch has definitely collected them already.

Online Alternatives (Very Similar Pattern)

Since LNCT Vidyapeeth follows the MCI/NMC MBBS curriculum, their question pattern is nearly identical to other Indian universities. These resources will work just as well for revision:

Most Repeated PSM Topics Across All Indian Universities

Based on question papers from multiple universities, these questions come up every single year:
TopicTypeFrequency
Epidemiological triadLAEvery year
Case-control vs Cohort studyLA/SAVery frequent
Sensitivity & SpecificitySAVery frequent
Kwashiorkor vs MarasmusLAVery frequent
DOTS / RNTCPSAEvery year
Immunization schedule (UIP)SA/LAEvery year
Water purification / ChlorinationSAVery frequent
Levels of preventionSAEvery year
IMR, MMR definitions & valuesOne-linerEvery year
Kuppuswamy scaleOne-linerVery frequent
These are your safe bets regardless of which paper comes. Stick to the revision plan I gave you earlier and you'll be well covered. Good luck! 🎯

Generate a study guide covering the 10 most-asked PSM topics

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Running Command

mkdir -p /tmp/workspace/psm-study-guide

Writing File

~/psm-study-guide/generate_guide.py

from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

doc = Document()

# ── Page margins ──────────────────────────────────────────────────────────────
section = doc.sections[0]
section.page_width  = Inches(8.27)
section.page_height = Inches(11.69)
section.left_margin   = Inches(1)
section.right_margin  = Inches(1)
section.top_margin    = Inches(1)
section.bottom_margin = Inches(1)

# ── Default font ──────────────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Arial"
normal.font.size = Pt(11)

# ── Helper: coloured heading ──────────────────────────────────────────────────
def add_topic_heading(doc, text, color_hex="1F4E79"):
    p = doc.add_heading("", level=2)
    run = p.add_run(text)
    run.bold = True
    run.font.size = Pt(14)
    run.font.color.rgb = RGBColor.from_string(color_hex)
    p.paragraph_format.space_before = Pt(14)
    p.paragraph_format.space_after  = Pt(4)

def add_sub(doc, text):
    p = doc.add_heading("", level=3)
    run = p.add_run(text)
    run.bold = True
    run.font.size = Pt(12)
    run.font.color.rgb = RGBColor.from_string("2E74B5")
    p.paragraph_format.space_before = Pt(8)
    p.paragraph_format.space_after  = Pt(2)

def add_body(doc, text):
    p = doc.add_paragraph(text)
    p.paragraph_format.space_after = Pt(4)

def add_bullet(doc, text):
    p = doc.add_paragraph(text, style="List Bullet")
    p.paragraph_format.space_after = Pt(2)

def add_table(doc, headers, rows):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.style = "Table Grid"
    # header row
    hdr_cells = table.rows[0].cells
    for i, h in enumerate(headers):
        hdr_cells[i].text = h
        run = hdr_cells[i].paragraphs[0].runs[0]
        run.bold = True
        run.font.size = Pt(10)
        tc = hdr_cells[i]._tc
        tcPr = tc.get_or_add_tcPr()
        shd = OxmlElement("w:shd")
        shd.set(qn("w:fill"), "BDD7EE")
        shd.set(qn("w:color"), "auto")
        shd.set(qn("w:val"), "clear")
        tcPr.append(shd)
    # data rows
    for row_data in rows:
        row_cells = table.add_row().cells
        for i, val in enumerate(row_data):
            row_cells[i].text = val
            row_cells[i].paragraphs[0].runs[0].font.size = Pt(10)
    doc.add_paragraph()

def add_note(doc, text):
    p = doc.add_paragraph()
    run = p.add_run("  EXAM TIP: " + text)
    run.bold = True
    run.font.color.rgb = RGBColor.from_string("C00000")
    run.font.size = Pt(10)
    p.paragraph_format.space_after = Pt(6)

# ══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════════════════
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("PSM / Community Medicine")
run.bold = True
run.font.size = Pt(26)
run.font.color.rgb = RGBColor.from_string("1F4E79")

p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
run2 = p2.add_run("TOP 10 HIGH-YIELD STUDY GUIDE")
run2.bold = True
run2.font.size = Pt(18)
run2.font.color.rgb = RGBColor.from_string("2E74B5")

p3 = doc.add_paragraph()
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
run3 = p3.add_run("MBBS University Theory Exam  |  Based on Park's Textbook of PSM")
run3.font.size = Pt(12)
run3.italic = True
run3.font.color.rgb = RGBColor.from_string("595959")

doc.add_paragraph()
p4 = doc.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
run4 = p4.add_run("LNCT Vidyapeeth University  |  Prepared: July 2026")
run4.font.size = Pt(11)
run4.font.color.rgb = RGBColor.from_string("595959")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TABLE OF CONTENTS
# ══════════════════════════════════════════════════════════════════════════════
doc.add_heading("Contents", level=1)
toc_items = [
    ("1", "Epidemiological Triad & Levels of Prevention"),
    ("2", "Types of Epidemiological Studies (Case-Control vs Cohort vs RCT)"),
    ("3", "Screening – Sensitivity, Specificity, PPV, NPV"),
    ("4", "Biostatistics – Key Concepts & Tests"),
    ("5", "Protein Energy Malnutrition – Kwashiorkor vs Marasmus"),
    ("6", "National Immunization Schedule (UIP)"),
    ("7", "RNTCP / Nikshay – TB Control Programme"),
    ("8", "Water Purification & Chlorination"),
    ("9", "Health Indicators – IMR, MMR, TFR & Demography"),
    ("10", "National Health Programmes – NRHM, NVBDCP, NPCDCS"),
]
for num, title in toc_items:
    p = doc.add_paragraph()
    run = p.add_run(f"  Topic {num}:  {title}")
    run.font.size = Pt(11)
    p.paragraph_format.space_after = Pt(4)

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 1 – EPIDEMIOLOGICAL TRIAD & LEVELS OF PREVENTION
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 1: Epidemiological Triad & Levels of Prevention")
add_note(doc, "Almost guaranteed Long Answer (10 marks) in every university exam.")

add_sub(doc, "1A. Epidemiological Triad")
add_body(doc, "The classic model of disease causation consists of three interacting components: Host, Agent, and Environment. Disease occurs when the balance is disturbed.")

add_table(doc,
    ["Component", "Definition", "Examples"],
    [
        ("HOST", "The person or organism that harbours disease", "Age, sex, immunity, nutrition, genetics, habits"),
        ("AGENT", "The cause of disease (necessary but may not be sufficient)", "Biological (bacteria, virus), Chemical (toxins, allergens), Physical (radiation, noise)"),
        ("ENVIRONMENT", "External conditions that influence host-agent interaction", "Physical (climate), Biological (vectors), Social (poverty, overcrowding)"),
    ]
)
add_body(doc, "The TRIAD is represented as a see-saw: disease results when the agent load and/or environment tips the balance against the host's resistance.")
add_note(doc, "Draw the triangle/seesaw diagram in the exam - it always impresses examiners.")

add_sub(doc, "1B. Levels of Prevention (Leavell & Clark)")
add_table(doc,
    ["Level", "Stage of Disease", "Aim", "Examples"],
    [
        ("PRIMORDIAL", "Before risk factors develop", "Prevent emergence of risk factors", "Healthy diet campaigns, no-smoking policy in schools"),
        ("PRIMARY", "Pre-pathogenesis (susceptible host)", "Prevent disease onset", "Vaccination, health education, chemoprophylaxis"),
        ("SECONDARY", "Early pathogenesis", "Early diagnosis & prompt treatment", "Screening, case finding, treatment"),
        ("TERTIARY", "Late pathogenesis / disability", "Limit disability, rehabilitation", "Physiotherapy, prosthetics, vocational rehab"),
    ]
)
add_body(doc, "Extended model adds Primordial prevention (WHO, 1978) before primary. Many examiners specifically ask for this 4-level model.")
add_note(doc, "Memorise one concrete example per level. Questions often ask 'give examples of each level of prevention for hypertension/diabetes.'")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 2 – TYPES OF EPIDEMIOLOGICAL STUDIES
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 2: Epidemiological Study Designs")
add_note(doc, "Comparison table (Case-Control vs Cohort) is a very common 5-10 mark question.")

add_sub(doc, "Classification of Epidemiological Studies")
add_bullet(doc, "Observational: Cross-sectional, Case-control, Cohort")
add_bullet(doc, "Experimental: RCT, Field trial, Community trial")
add_bullet(doc, "Descriptive: Case reports, Ecological studies")

add_sub(doc, "Comparison: Case-Control vs Cohort Study")
add_table(doc,
    ["Feature", "Case-Control", "Cohort Study"],
    [
        ("Direction", "Retrospective (exposure → disease looked backwards)", "Prospective (follow exposure forward to disease)"),
        ("Start point", "Start with DISEASE (cases & controls)", "Start with EXPOSURE (exposed vs unexposed)"),
        ("Measure of risk", "Odds Ratio (OR)", "Relative Risk (RR) / Incidence Rate"),
        ("Time", "Short, quick, cheap", "Long duration, expensive"),
        ("Sample size", "Smaller", "Larger"),
        ("Best for", "Rare diseases", "Common exposures; multiple outcomes"),
        ("Bias risk", "Recall bias", "Loss to follow-up bias"),
        ("Incidence", "Cannot calculate", "Can calculate"),
    ]
)

add_sub(doc, "Key Formulas")
add_body(doc, "Odds Ratio (OR) = (a x d) / (b x c)   — used in Case-Control studies")
add_body(doc, "Relative Risk (RR) = [a/(a+b)] / [c/(c+d)]   — used in Cohort & RCT studies")
add_body(doc, "2x2 table: a = exposed cases, b = exposed controls, c = unexposed cases, d = unexposed controls")
add_note(doc, "Always draw the 2x2 contingency table in the exam when asked about OR or RR.")

add_sub(doc, "Randomised Controlled Trial (RCT)")
add_bullet(doc, "Gold standard for evaluating interventions")
add_bullet(doc, "Key features: randomisation, blinding (single/double/triple), control group, intention-to-treat analysis")
add_bullet(doc, "Phases: I (safety), II (efficacy, small group), III (large scale, comparative), IV (post-marketing surveillance)")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 3 – SCREENING
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 3: Screening – Sensitivity, Specificity, PPV, NPV")
add_note(doc, "Formulas + 2x2 table MUST be memorised. Numericals appear frequently.")

add_sub(doc, "Wilson & Jungner Criteria for Screening (WHO, 1968)")
add_body(doc, "A disease is suitable for screening if:")
for criterion in [
    "The condition is an important health problem",
    "Natural history of the disease is well understood",
    "There is a recognisable latent or early symptomatic stage",
    "A suitable test or examination is available",
    "The test is acceptable to the population",
    "Adequate facilities exist for diagnosis and treatment",
    "An agreed policy on whom to treat",
    "Treatment at early stage is of more benefit than at advanced stage",
    "Cost of case-finding is economically balanced",
    "Case-finding is a continuing process",
]:
    add_bullet(doc, criterion)

add_sub(doc, "Key Measures of a Screening Test")
add_table(doc,
    ["Measure", "Formula", "Meaning"],
    [
        ("Sensitivity", "TP / (TP + FN)", "Ability to correctly identify TRUE POSITIVES (diseased). High sensitivity = few missed cases."),
        ("Specificity", "TN / (TN + FP)", "Ability to correctly identify TRUE NEGATIVES (healthy). High specificity = few false alarms."),
        ("PPV (Positive Predictive Value)", "TP / (TP + FP)", "Probability that a POSITIVE TEST result is truly positive. Affected by prevalence."),
        ("NPV (Negative Predictive Value)", "TN / (TN + FN)", "Probability that a NEGATIVE TEST result is truly negative."),
        ("Accuracy", "(TP + TN) / Total", "Overall correctness of the test."),
    ]
)
add_body(doc, "2x2 Table: Rows = Test Result (+ / -), Columns = Disease (Present / Absent)")
add_body(doc, "  TP = Test +ve, Disease present  |  FP = Test +ve, Disease absent")
add_body(doc, "  FN = Test -ve, Disease present  |  TN = Test -ve, Disease absent")
add_note(doc, "Sensitivity vs Specificity trade-off: as cut-off threshold lowers, sensitivity increases but specificity decreases (and vice versa). ROC curve demonstrates this.")
add_body(doc, "Effect of prevalence: PPV increases with higher prevalence; NPV decreases with higher prevalence.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 4 – BIOSTATISTICS
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 4: Biostatistics – Key Concepts")
add_note(doc, "Short notes on Mean/Median/Mode, Normal curve, and p-value are very common 3-5 mark questions.")

add_sub(doc, "Measures of Central Tendency")
add_table(doc,
    ["Measure", "Definition", "When to Use"],
    [
        ("Mean", "Sum of all values / Number of values", "Normally distributed data; no outliers"),
        ("Median", "Middle value when data arranged in order", "Skewed data; when outliers present"),
        ("Mode", "Most frequently occurring value", "Categorical data; bimodal distributions"),
    ]
)

add_sub(doc, "Normal Distribution Curve")
add_bullet(doc, "Bell-shaped, symmetrical curve. Mean = Median = Mode.")
add_bullet(doc, "Mean ± 1 SD covers 68.27% of observations")
add_bullet(doc, "Mean ± 2 SD covers 95.45% of observations")
add_bullet(doc, "Mean ± 3 SD covers 99.73% of observations")
add_note(doc, "These percentages (68-95-99.7 rule) are asked as one-liners very frequently.")

add_sub(doc, "Types of Data")
add_table(doc,
    ["Type", "Description", "Example"],
    [
        ("Nominal", "Categories with no order", "Blood group (A, B, AB, O), gender"),
        ("Ordinal", "Categories with order but unequal intervals", "Severity (mild/moderate/severe), socioeconomic class"),
        ("Discrete (Interval)", "Whole numbers, countable", "Number of children, pulse rate"),
        ("Continuous (Ratio)", "Any value in a range, true zero exists", "Height, weight, temperature in Kelvin"),
    ]
)

add_sub(doc, "Tests of Significance – When to Use")
add_table(doc,
    ["Test", "Use When"],
    [
        ("Student's t-test", "Comparing means of 2 groups; continuous data; normal distribution"),
        ("Paired t-test", "Before & after comparison in SAME group"),
        ("ANOVA (F-test)", "Comparing means of 3 or more groups"),
        ("Chi-square test", "Comparing proportions / categorical data; large sample"),
        ("Fisher's exact test", "Categorical data; small sample (expected cell count < 5)"),
        ("Mann-Whitney U", "Non-parametric alternative to unpaired t-test"),
    ]
)
add_sub(doc, "p-value & Confidence Interval")
add_bullet(doc, "p-value: Probability that the observed result occurred by chance. p < 0.05 = statistically significant.")
add_bullet(doc, "95% CI: Range within which the true population value lies with 95% confidence.")
add_bullet(doc, "If 95% CI for OR or RR includes 1.0, the result is NOT statistically significant.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 5 – PEM: KWASHIORKOR vs MARASMUS
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 5: Protein Energy Malnutrition – Kwashiorkor vs Marasmus")
add_note(doc, "Comparison table is almost always a Long Answer. Learn every row.")

add_table(doc,
    ["Feature", "Kwashiorkor", "Marasmus"],
    [
        ("Aetiology", "Protein deficiency (adequate calories)", "Deficiency of BOTH protein AND calories"),
        ("Age of onset", "1–3 years (post-weaning)", "< 1 year (infancy)"),
        ("Weight", "Less severely reduced", "Severely reduced (< 60% expected)"),
        ("Oedema", "PRESENT (pitting, starts from feet)", "ABSENT"),
        ("Appearance", "Moon face, miserable, apathetic", "Old man face, alert, wizened"),
        ("Skin", "Flaky paint dermatosis, hyperpigmented patches", "Loose, wrinkled, baggy skin"),
        ("Hair", "Depigmented, flag sign (Kwashiorkor sign), easily pluckable", "Sparse, dull, dry"),
        ("Muscles", "Wasted but may be hidden by oedema", "Severely wasted (skin and bone)"),
        ("Subcutaneous fat", "Preserved", "Absent"),
        ("Liver", "Fatty liver (hepatomegaly)", "Normal or slightly enlarged"),
        ("Serum albumin", "Very low (< 2.8 g/dL)", "Near normal"),
        ("Anaemia", "Present", "Present"),
        ("Behaviour", "Miserable, crying, apathetic", "Alert, but fretful"),
        ("Prognosis", "Worse (more acute)", "Better if treated early"),
    ]
)

add_sub(doc, "Gomez Classification (Weight for Age)")
add_table(doc,
    ["Grade", "% of Standard Weight", "Severity"],
    [
        ("Grade I (mild)", "75–90%", "Mild malnutrition"),
        ("Grade II (moderate)", "60–74%", "Moderate malnutrition"),
        ("Grade III (severe)", "< 60%", "Severe malnutrition"),
    ]
)
add_body(doc, "Other classifications: Wellcome Trust (uses oedema + weight), IAP classification (India-specific)")
add_note(doc, "Flag sign in hair = bands of normal and depigmented hair = periods of adequate and inadequate nutrition alternating.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 6 – IMMUNIZATION SCHEDULE (UIP)
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 6: Universal Immunization Programme (UIP) – National Schedule")
add_note(doc, "Full immunization schedule is asked as a table every year. Memorise all vaccines + ages.")

add_table(doc,
    ["Age", "Vaccine", "Route", "Dose"],
    [
        ("At birth", "BCG", "Intradermal (left upper arm)", "0.1 mL (0.05 mL for neonates < 1 month)"),
        ("At birth", "OPV-0 (zero dose)", "Oral", "2 drops"),
        ("At birth", "Hepatitis B (birth dose)", "Intramuscular (right thigh)", "0.5 mL"),
        ("6 weeks", "OPV-1, Pentavalent-1 (DPT+HepB+Hib), RVV-1, fIPV-1", "Oral / IM / Oral / ID", "Standard doses"),
        ("10 weeks", "OPV-2, Pentavalent-2, RVV-2", "Oral / IM / Oral", "Standard doses"),
        ("14 weeks", "OPV-3, Pentavalent-3, RVV-3, fIPV-2", "Oral / IM / Oral / ID", "Standard doses"),
        ("9–12 months", "MR (Measles-Rubella) Dose 1, JE-1 (endemic areas)", "Subcutaneous / SC", "0.5 mL"),
        ("9–12 months", "Vitamin A Dose 1", "Oral", "1 lakh IU"),
        ("16–24 months", "DPT Booster 1, OPV Booster, MR Dose 2, JE-2 (endemic)", "IM / Oral / SC / SC", "Standard"),
        ("16–24 months", "Vitamin A (every 6 months until 5 years)", "Oral", "2 lakh IU"),
        ("5–6 years", "DPT Booster 2", "IM", "0.5 mL"),
        ("10 years & 16 years", "Td (Tetanus-diphtheria)", "IM", "0.5 mL"),
        ("Pregnant women", "TT-1, TT-2 (or Td)", "IM", "0.5 mL"),
    ]
)

add_sub(doc, "Key Points to Remember")
add_bullet(doc, "Cold chain: Vaccines must be maintained at 2–8°C (except OPV which needs -15 to -25°C for long-term storage).")
add_bullet(doc, "BCG scar appears at 2–4 weeks; if no scar at 3 months, re-vaccination is recommended.")
add_bullet(doc, "Pentavalent vaccine = DPT + Hepatitis B + Hib (5-in-1).")
add_bullet(doc, "fIPV = fractional dose Inactivated Polio Vaccine (given intradermally, 0.1 mL).")
add_bullet(doc, "EPI diseases (WHO): Diphtheria, Pertussis, Tetanus, Polio, Measles, Tuberculosis.")
add_note(doc, "Contraindications: BCG is contraindicated in immunocompromised children. Live vaccines (OPV, MMR) are contraindicated in pregnancy.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 7 – RNTCP / TB CONTROL
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 7: RNTCP / Nikshay – National TB Elimination Programme")
add_note(doc, "DOTS strategy and drug regimens are asked in almost every university exam.")

add_sub(doc, "Key Definitions")
add_bullet(doc, "RNTCP = Revised National Tuberculosis Control Programme (now called National TB Elimination Programme – NTEP).")
add_bullet(doc, "Target: Eliminate TB by 2025 (India's target, 5 years ahead of global SDG target of 2030).")
add_bullet(doc, "DOTS = Directly Observed Treatment, Short-course.")

add_sub(doc, "WHO Classification of TB Cases")
add_table(doc,
    ["Category", "Type of Patient", "Regimen"],
    [
        ("New case", "Never treated or treated for < 1 month", "2HRZE / 4HR"),
        ("Previously treated", "Treated for ≥ 1 month in the past", "2HRZES / 1HRZE / 5HRE (Category II – now less used)"),
        ("Drug Resistant TB (MDR-TB)", "Resistant to at least Isoniazid + Rifampicin", "Bedaquiline-based regimen (6 months)"),
        ("XDR-TB", "MDR + resistant to fluoroquinolones + injectable", "Individualised regimen"),
    ]
)

add_sub(doc, "Standard Regimen for New Cases: 2HRZE / 4HR")
add_table(doc,
    ["Phase", "Duration", "Drugs", "Supervision"],
    [
        ("Intensive Phase", "2 months", "H (Isoniazid) + R (Rifampicin) + Z (Pyrazinamide) + E (Ethambutol)", "Daily DOTS"),
        ("Continuation Phase", "4 months", "H (Isoniazid) + R (Rifampicin)", "Daily DOTS"),
    ]
)

add_sub(doc, "Drug Mnemonics & Side Effects")
add_table(doc,
    ["Drug", "Key Side Effect"],
    [
        ("Isoniazid (H)", "Peripheral neuropathy (prevent with Pyridoxine/Vit B6), hepatotoxicity"),
        ("Rifampicin (R)", "Orange-red discolouration of urine/tears, hepatotoxicity, enzyme inducer"),
        ("Pyrazinamide (Z)", "Hyperuricaemia (gout), hepatotoxicity"),
        ("Ethambutol (E)", "Optic neuritis (colour vision loss – red-green first)"),
        ("Streptomycin (S)", "Ototoxicity, nephrotoxicity"),
    ]
)

add_sub(doc, "Nikshay Poshan Yojana")
add_body(doc, "Financial incentive scheme: Rs. 500/month to TB patients for nutritional support during treatment.")
add_note(doc, "Sputum-positive PTB is most infectious. Sputum conversion at 2 months is the key monitoring parameter.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 8 – WATER PURIFICATION & CHLORINATION
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 8: Water Purification & Chlorination")
add_note(doc, "Horrock's apparatus, slow vs rapid sand filter, and break-point chlorination are classic short notes.")

add_sub(doc, "Steps in Large-Scale (Municipal) Water Purification")
for step in [
    "1. Sedimentation (plain/natural): Removes suspended particles by gravity over 24 hours in settling tanks.",
    "2. Coagulation / Flocculation: Alum (aluminium sulphate) added → forms flocs that trap fine particles and bacteria. Dose: 5–40 mg/L.",
    "3. Sedimentation (after coagulation): Flocs settle, removing ~90% bacteria.",
    "4. Filtration (Rapid Sand Filter): Water passed through sand (0.4–0.7 mm) at high rate. Removes remaining particles & bacteria.",
    "5. Disinfection (Chlorination): Final stage to kill remaining pathogens.",
]:
    add_bullet(doc, step)

add_sub(doc, "Slow Sand Filter vs Rapid Sand Filter")
add_table(doc,
    ["Feature", "Slow Sand Filter", "Rapid Sand Filter"],
    [
        ("Rate", "0.1–0.4 m/hour", "5–15 m/hour (rapid)"),
        ("Sand size", "Fine (0.2–0.3 mm)", "Coarser (0.4–0.7 mm)"),
        ("Pre-treatment needed", "Not required", "Coagulation required before"),
        ("Efficiency", "Removes 98–99% bacteria", "Removes 90% bacteria (needs chlorination after)"),
        ("Maintenance", "Clean every few months (scraping)", "Backwash daily with water + air"),
        ("Biological layer", "Schmutzdecke (vital for purification)", "Not formed"),
        ("Area needed", "Large", "Smaller (33–50x more efficient)"),
    ]
)

add_sub(doc, "Chlorination")
add_bullet(doc, "Break-point chlorination: Addition of chlorine until all ammonia and organic matter is oxidised; further chlorine remains as 'free residual chlorine'. The 'break-point' is the minimum dose required.")
add_bullet(doc, "Residual chlorine requirement: 0.5 mg/L after 30 min contact time (WHO / BIS standard).")
add_bullet(doc, "Horrock's apparatus: Simple field method to estimate the chlorine demand of water. Uses comparator to find optimum dose.")
add_bullet(doc, "Chlorination of wells (double-pot / direct dosing): For rural areas. 0.5 ppm residual chlorine should be detectable.")
add_note(doc, "Orthotoluidine (OT) test: Yellow colour confirms presence of free chlorine. Standard for field testing residual chlorine.")

add_sub(doc, "Waterborne Diseases (Important List)")
add_body(doc, "Cholera, Typhoid, Hepatitis A, Hepatitis E, Dysentery (amoebic and bacillary), Dracunculiasis (Guinea worm), Fluorosis (excess fluoride), Methaemoglobinaemia (excess nitrates – especially in infants).")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 9 – HEALTH INDICATORS & DEMOGRAPHY
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 9: Health Indicators, Demography & Vital Statistics")
add_note(doc, "IMR, MMR, TFR definitions + current India values are asked every year as one-liners or short notes.")

add_sub(doc, "Key Mortality Indicators – Formulas & India Values")
add_table(doc,
    ["Indicator", "Formula", "India Value (approx.)"],
    [
        ("Crude Birth Rate (CBR)", "Births / Midyear population × 1000", "~19.5 per 1000 (2021)"),
        ("Crude Death Rate (CDR)", "Deaths / Midyear population × 1000", "~6.1 per 1000 (2021)"),
        ("Infant Mortality Rate (IMR)", "Deaths under 1 year / Live births × 1000", "~27 per 1000 live births (SRS 2020)"),
        ("Neonatal Mortality Rate (NMR)", "Deaths in first 28 days / Live births × 1000", "~20 per 1000 live births"),
        ("Under-5 Mortality Rate (U5MR)", "Deaths under 5 years / Live births × 1000", "~34 per 1000 live births"),
        ("Maternal Mortality Ratio (MMR)", "Maternal deaths / 100,000 live births", "~97 per 100,000 (SRS 2018-20)"),
        ("Total Fertility Rate (TFR)", "Average children per woman over reproductive life", "~2.0 (replacement level = 2.1)"),
        ("Net Reproduction Rate (NRR)", "Average daughters per woman", "NRR = 1.0 means population stable"),
    ]
)

add_sub(doc, "Demographic Transition Theory (Thompson / Notestein)")
add_table(doc,
    ["Stage", "CBR", "CDR", "Population Growth", "Example"],
    [
        ("Stage 1 – High stationary", "High", "High", "Negligible", "Pre-industrial societies"),
        ("Stage 2 – Early expanding", "High", "Declining", "Rapid increase", "Developing countries (past)"),
        ("Stage 3 – Late expanding", "Declining", "Low", "Moderate increase", "India currently"),
        ("Stage 4 – Low stationary", "Low", "Low", "Stable / slow", "Western Europe, USA"),
        ("Stage 5 – Declining", "Very low", "Low", "Negative growth", "Japan, Germany"),
    ]
)
add_note(doc, "India is in Stage 3 of demographic transition. TFR is now at replacement level (~2.0) nationally but varies by state.")

add_sub(doc, "Socioeconomic Scales (Important One-Liners)")
add_table(doc,
    ["Scale", "Parameters", "Classes"],
    [
        ("Kuppuswamy Scale", "Education + Occupation + Income (monthly per capita)", "5 classes (Upper, Upper Middle, Lower Middle, Upper Lower, Lower). Updated periodically for inflation."),
        ("BG Prasad Scale", "Per capita monthly income only", "5 classes (updated annually with CPI)"),
        ("Pareek Scale", "Rural areas – caste, land, occupation, education", "Used for rural community studies"),
    ]
)

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# TOPIC 10 – NATIONAL HEALTH PROGRAMMES
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "TOPIC 10: National Health Programmes")
add_note(doc, "NRHM/NHM, malaria (API/SPR), and ASHA's roles are very frequently asked.")

add_sub(doc, "National Health Mission (NHM)")
add_table(doc,
    ["Component", "Details"],
    [
        ("Full form", "National Health Mission (NHM) – launched 2013; merger of NRHM (2005) + NUHM (2013)"),
        ("NRHM focus", "Rural areas; reduce maternal, infant, child mortality; strengthen public health systems"),
        ("NUHM focus", "Urban slum populations; urban health centres"),
        ("ASHA role", "Accredited Social Health Activist – village-level female community health worker. 1 ASHA per 1000 rural population."),
        ("ASHA functions", "Antenatal care, institutional delivery, immunisation, DOTS, family planning, diarrhoea ORS, referral transport"),
        ("JSY", "Janani Suraksha Yojana – cash incentive for institutional delivery (Rs. 1400 rural, Rs. 1000 urban in LPS)"),
        ("JSSK", "Janani Shishu Suraksha Karyakaram – free entitlements for pregnant women and sick neonates"),
    ]
)

add_sub(doc, "NVBDCP – National Vector Borne Disease Control Programme")
add_body(doc, "Controls: Malaria, Dengue, Chikungunya, Japanese Encephalitis, Kala-azar (Leishmaniasis), Lymphatic Filariasis")
add_table(doc,
    ["Disease", "Vector", "Key Indicator / Control Measure"],
    [
        ("Malaria", "Female Anopheles mosquito", "API (Annual Parasitic Incidence) = Positive cases / 1000 population/year. SPR = Positive slides / Total slides examined × 100. IRS (Indoor Residual Spraying), ITNs, ACT treatment."),
        ("Dengue / Chikungunya", "Aedes aegypti (day-biting)", "Source reduction, larval surveillance, House Index, Stegomyia indices"),
        ("Kala-azar", "Female Phlebotomus sandfly", "Target elimination: < 1 case per 10,000 population at block level. DDT spraying, miltefosine."),
        ("Filariasis", "Culex quinquefasciatus", "Mass Drug Administration (MDA): DEC + Albendazole annually until transmission stops"),
    ]
)

add_sub(doc, "NPCDCS – Non-Communicable Disease Programme")
add_bullet(doc, "Targets: Cardiovascular disease, Diabetes, Cancer, Stroke, Chronic Respiratory Disease")
add_bullet(doc, "Strategy: Population-level screening, health promotion, capacity building at district level")
add_bullet(doc, "National Programme for Cancer Screening (Cervical, Breast, Oral) integrated into NPCDCS")
add_bullet(doc, "Key tool: CBAC (Community Based Assessment Checklist) for NCD risk screening at community level")

add_sub(doc, "ICDS – Integrated Child Development Services")
add_table(doc,
    ["Feature", "Details"],
    [
        ("Launched", "1975"),
        ("Target beneficiaries", "Children 0–6 years, pregnant women, lactating mothers, adolescent girls"),
        ("Services (6 services)", "Supplementary nutrition, Immunization, Health check-up, Referral, Pre-school education, Nutrition & health education"),
        ("Delivery point", "Anganwadi Centre (AWC) – 1 per 1000 population"),
        ("Key worker", "Anganwadi Worker (AWW) – female, locally selected, semi-volunteer"),
    ]
)

add_note(doc, "Remember the 3 key workers: ASHA (NHM), AWW (ICDS), ANM (Sub-centre) – their roles and differences are commonly asked.")

doc.add_page_break()

# ══════════════════════════════════════════════════════════════════════════════
# QUICK REVISION PAGE
# ══════════════════════════════════════════════════════════════════════════════
add_topic_heading(doc, "QUICK REVISION – Must-Know One-Liners & Values", "1F4E79")

one_liners = [
    "IMR India (2020): ~27 per 1000 live births",
    "MMR India (2018-20): ~97 per 100,000 live births",
    "TFR India: ~2.0 (replacement level = 2.1)",
    "Normal curve: Mean±1SD = 68%, ±2SD = 95%, ±3SD = 99.7%",
    "Sensitivity = TP/(TP+FN) | Specificity = TN/(TN+FP)",
    "Odds Ratio = ad/bc | Relative Risk = [a/(a+b)] / [c/(c+d)]",
    "Residual chlorine standard: 0.5 mg/L after 30 min",
    "TB new case regimen: 2HRZE / 4HR",
    "Ethambutol causes: Optic neuritis (red-green colour blindness first)",
    "Isoniazid side effect: Peripheral neuropathy → give Pyridoxine (Vit B6)",
    "Kwashiorkor = protein deficiency + OEDEMA + moon face",
    "Marasmus = protein+calorie deficiency + NO oedema + old man face",
    "Primordial prevention: prevent risk factors before they develop",
    "Kuppuswamy scale: Education + Occupation + Per capita monthly income",
    "ASHA: 1 per 1000 rural population; recruits for NHM",
    "API (Malaria): Positive cases per 1000 population per year",
    "SPR (Malaria): Positive slides / Total slides × 100",
    "Schmutzdecke: Biological layer in slow sand filter (key for purification)",
    "OT test (Orthotoluidine): Tests for residual chlorine in water",
    "Wilson & Jungner criteria: 10 criteria for screening suitability",
    "DOTS: Directly Observed Treatment Short-course (for TB)",
    "Nikshay Poshan Yojana: Rs. 500/month to TB patients",
    "NNT (Number Needed to Treat) = 1/ARR (Absolute Risk Reduction)",
    "Hawthorne effect: Change in behaviour because subjects know they are being observed",
    "Berkson's bias: Bias in hospital-based case-control studies",
]
for item in one_liners:
    add_bullet(doc, item)

# ══════════════════════════════════════════════════════════════════════════════
# FOOTER NOTE
# ══════════════════════════════════════════════════════════════════════════════
doc.add_paragraph()
p_footer = doc.add_paragraph()
p_footer.alignment = WD_ALIGN_PARAGRAPH.CENTER
rf = p_footer.add_run("Based on Park's Textbook of Preventive and Social Medicine (25th Ed.) | Prepared for LNCT Vidyapeeth MBBS | July 2026")
rf.italic = True
rf.font.size = Pt(9)
rf.font.color.rgb = RGBColor.from_string("595959")

# ── Save ──────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/psm-study-guide/PSM_Top10_Study_Guide.docx"
doc.save(out_path)
print(f"SUCCESS: Saved to {out_path}")
Running Command

python3 /tmp/workspace/psm-study-guide/generate_guide.py

Your study guide is ready! Download it here:

PSM Top10 Study Guide

Word Document · DOCX


What's Inside the Guide

The document is a fully formatted Word file with colour-coded headings, comparison tables, exam tips, and a quick revision page. Here's what each topic covers:
#TopicWhat's Included
1Epidemiological Triad & Levels of PreventionHost-Agent-Environment table, all 4 levels with examples
2Study DesignsCase-control vs Cohort full comparison table, OR & RR formulas, RCT phases
3ScreeningWilson & Jungner criteria, Sensitivity/Specificity/PPV/NPV formulas with 2x2 table
4BiostatisticsMean/Median/Mode, Normal curve (68-95-99.7), data types, when to use which test
5Kwashiorkor vs MarasmusFull 14-row comparison table, Gomez classification
6Immunization Schedule (UIP)Complete age-wise vaccine table, cold chain, contraindications
7RNTCP / NTEPDOTS, 2HRZE/4HR regimen, drug side effects table, MDR-TB
8Water PurificationSlow vs Rapid sand filter table, Horrock's apparatus, chlorination, OT test
9Health Indicators & DemographyAll formulas + India values, demographic transition stages, socioeconomic scales
10National Health ProgrammesNHM, ASHA, JSY, NVBDCP (Malaria API/SPR), ICDS 6 services
+Quick Revision Page25 one-liners you must know for the exam

Pro tip: Print the last page (Quick Revision One-Liners) separately and keep it on your desk while studying - review it every time you take a break. By exam day you'll have all the key values memorised automatically. All the best! 🎯

Make flashcards from the one-liners page (for daily quick revision)

Reading File
Writing File

~/psm-study-guide/make_flashcards.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
from pptx.util import Inches, Pt

prs = Presentation()
prs.slide_width  = Inches(10)
prs.slide_height = Inches(5.63)

# ── Colour palette ────────────────────────────────────────────────────────────
DARK_BLUE   = RGBColor(0x1F, 0x4E, 0x79)   # header background
MID_BLUE    = RGBColor(0x2E, 0x74, 0xB5)   # answer background
LIGHT_BLUE  = RGBColor(0xBD, 0xD7, 0xEE)   # subtle accent
WHITE       = RGBColor(0xFF, 0xFF, 0xFF)
YELLOW      = RGBColor(0xFF, 0xD7, 0x00)
LIGHT_GREY  = RGBColor(0xF2, 0xF2, 0xF2)
DARK_TEXT   = RGBColor(0x1A, 0x1A, 0x2E)
RED         = RGBColor(0xC0, 0x00, 0x00)

blank_layout = prs.slide_layouts[6]   # completely blank

# ── Flashcard data  (question, answer) ───────────────────────────────────────
flashcards = [
    ("What is India's IMR (Infant Mortality Rate)?",
     "~27 per 1000 live births\n(SRS 2020)"),

    ("What is India's MMR (Maternal Mortality Ratio)?",
     "~97 per 100,000 live births\n(SRS 2018-20)"),

    ("What is India's TFR?\nWhat is replacement-level TFR?",
     "India TFR ≈ 2.0\nReplacement level TFR = 2.1"),

    ("State the 68-95-99.7 rule for the Normal Distribution curve.",
     "Mean ± 1 SD → 68.27% of data\nMean ± 2 SD → 95.45% of data\nMean ± 3 SD → 99.73% of data"),

    ("Write the formulas for Sensitivity and Specificity.",
     "Sensitivity = TP / (TP + FN)\n— detects true positives (diseased)\n\nSpecificity = TN / (TN + FP)\n— detects true negatives (healthy)"),

    ("Write the formulas for Odds Ratio and Relative Risk.",
     "Odds Ratio (OR) = a×d / b×c\n→ used in Case-Control studies\n\nRelative Risk (RR) = [a/(a+b)] / [c/(c+d)]\n→ used in Cohort / RCT studies"),

    ("What is the standard for residual chlorine in drinking water?",
     "0.5 mg/L (ppm)\nafter 30 minutes contact time\n(WHO / BIS standard)"),

    ("What is the standard TB new-case treatment regimen?\n(RNTCP / NTEP)",
     "2HRZE / 4HR\nIntensive: 2 months — H+R+Z+E\nContinuation: 4 months — H+R"),

    ("Which drug causes optic neuritis in TB treatment?\nWhat is the earliest sign?",
     "Ethambutol (E)\nEarliest sign: Red-green colour vision loss"),

    ("Which TB drug causes peripheral neuropathy?\nHow is it prevented?",
     "Isoniazid (H)\nPrevented by Pyridoxine (Vitamin B6) supplementation"),

    ("Kwashiorkor — key features?",
     "Protein deficiency (adequate calories)\nOedema PRESENT (starts at feet)\nMoon face, miserable\nFlaky paint dermatosis\nFlag sign in hair\nFatty liver\nSerum albumin very LOW"),

    ("Marasmus — key features?",
     "Protein + Calorie deficiency\nOedema ABSENT\nOld man / wizened face, alert\nSevere muscle wasting\nSkin and bones appearance\nSubcutaneous fat ABSENT"),

    ("What is Primordial Prevention?\nGive an example.",
     "Preventing risk factors BEFORE they develop\n(even before primary prevention)\n\nExample: No-smoking policy in schools,\nhealthy canteen policies, anti-obesity campaigns"),

    ("What does the Kuppuswamy Scale measure?\nWhat are its components?",
     "Socioeconomic status (urban)\n3 components:\n1. Education of head of family\n2. Occupation of head of family\n3. Per capita monthly family income\n→ Gives 5 SES classes"),

    ("What is an ASHA?\nHow many per population?",
     "Accredited Social Health Activist\n(Village-level female community health worker)\n\n1 ASHA per 1000 rural population\nKey worker of NHM/NRHM"),

    ("What is API in malaria?\nWhat does it measure?",
     "Annual Parasitic Incidence (API)\n= Positive cases per 1000 population per year\nUsed to measure malaria burden in an area"),

    ("What is SPR in malaria?\nWrite its formula.",
     "Slide Positivity Rate (SPR)\n= (Positive slides / Total slides examined) × 100\nMeasures malaria transmission intensity"),

    ("What is Schmutzdecke?\nIn which filter is it found?",
     "Schmutzdecke = biological layer (algae, bacteria, protozoa)\nFound in SLOW SAND FILTER\nIt is the key mechanism for removing bacteria\n(Not present in Rapid Sand Filter)"),

    ("What is the OT test?\nWhat does it detect?",
     "Orthotoluidine (OT) Test\nDetects FREE RESIDUAL CHLORINE in water\nYellow colour = chlorine present\nUsed for field testing of drinking water"),

    ("Name the 10 Wilson & Jungner criteria for screening.",
     "1. Important health problem\n2. Natural history well understood\n3. Recognisable early/latent stage\n4. Suitable test available\n5. Test acceptable to population\n6. Adequate diagnostic/treatment facilities\n7. Agreed treatment policy\n8. Early treatment more beneficial\n9. Cost justified\n10. Continuing process"),

    ("What does DOTS stand for in TB control?",
     "Directly Observed Treatment, Short-course\nCore strategy of RNTCP/NTEP\nHealthcare worker watches patient swallow every dose"),

    ("What is Nikshay Poshan Yojana?\nHow much is the benefit?",
     "Financial incentive for TB patients\nRs. 500 per month during treatment\nFor nutritional support\n(Transferred directly to bank account)"),

    ("What is NNT (Number Needed to Treat)?\nWrite its formula.",
     "Number Needed to Treat (NNT)\n= 1 / ARR\nARR = Absolute Risk Reduction\n= Risk in control group − Risk in treated group\nSmaller NNT = more effective treatment"),

    ("What is the Hawthorne Effect?",
     "Change in behaviour / performance\nbecause subjects KNOW they are being observed\n\nExample: Workers become more productive\nwhen they know a study is being conducted on them"),

    ("What is Berkson's Bias?\nIn which study type does it occur?",
     "Berkson's Bias = Hospital admission rate bias\nOccurs in HOSPITAL-BASED Case-Control studies\nHospitalised controls ≠ general population\n→ Exposure rates are distorted"),
]

# ── Helper: add a rounded rectangle (simulated with a regular shape) ──────────
def add_rect(slide, left, top, width, height, fill_rgb):
    from pptx.util import Pt
    shape = slide.shapes.add_shape(
        1,  # MSO_SHAPE_TYPE.RECTANGLE
        left, top, width, height
    )
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_rgb
    shape.line.fill.background()   # no border
    return shape

def add_textbox(slide, text, left, top, width, height,
                font_size=20, bold=False, color=WHITE,
                align=PP_ALIGN.CENTER, wrap=True):
    txBox = slide.shapes.add_textbox(left, top, width, height)
    tf = txBox.text_frame
    tf.word_wrap = wrap
    tf.auto_size = None
    p = tf.paragraphs[0]
    p.alignment = align
    # split on \n for multiple paragraphs
    lines = text.split("\n")
    run = p.add_run()
    run.text = lines[0]
    run.font.size = Pt(font_size)
    run.font.bold = bold
    run.font.color.rgb = color
    for line in lines[1:]:
        p2 = tf.add_paragraph()
        p2.alignment = align
        r2 = p2.add_run()
        r2.text = line
        r2.font.size = Pt(font_size)
        r2.font.bold = bold
        r2.font.color.rgb = color
    return txBox

W = prs.slide_width
H = prs.slide_height

for idx, (question, answer) in enumerate(flashcards, 1):

    # ── FRONT (Question) slide ─────────────────────────────────────────────
    slide_q = prs.slides.add_slide(blank_layout)

    # Background
    add_rect(slide_q, 0, 0, W, H, DARK_BLUE)

    # Top banner
    add_rect(slide_q, 0, 0, W, Inches(0.55), MID_BLUE)
    add_textbox(slide_q,
                f"PSM Flashcard  {idx} / {len(flashcards)}   |   QUESTION",
                Inches(0.2), Inches(0.06), W - Inches(0.4), Inches(0.45),
                font_size=11, bold=False, color=LIGHT_BLUE, align=PP_ALIGN.LEFT)

    # Card body (white box)
    card_top  = Inches(0.75)
    card_h    = Inches(3.7)
    card_left = Inches(1.0)
    card_w    = W - Inches(2.0)
    add_rect(slide_q, card_left, card_top, card_w, card_h, WHITE)

    # Question mark icon text
    add_textbox(slide_q, "?",
                card_left, card_top + Inches(0.1),
                card_w, Inches(0.8),
                font_size=36, bold=True, color=DARK_BLUE, align=PP_ALIGN.CENTER)

    # Question text
    add_textbox(slide_q, question,
                card_left + Inches(0.25), card_top + Inches(0.85),
                card_w - Inches(0.5), card_h - Inches(1.1),
                font_size=21, bold=True, color=DARK_TEXT, align=PP_ALIGN.CENTER)

    # Bottom hint
    add_textbox(slide_q,
                "Think of the answer, then flip to the next slide →",
                Inches(0.2), H - Inches(0.55), W - Inches(0.4), Inches(0.45),
                font_size=11, bold=False, color=YELLOW, align=PP_ALIGN.CENTER)

    # ── BACK (Answer) slide ────────────────────────────────────────────────
    slide_a = prs.slides.add_slide(blank_layout)

    # Background
    add_rect(slide_a, 0, 0, W, H, MID_BLUE)

    # Top banner
    add_rect(slide_a, 0, 0, W, Inches(0.55), DARK_BLUE)
    add_textbox(slide_a,
                f"PSM Flashcard  {idx} / {len(flashcards)}   |   ANSWER",
                Inches(0.2), Inches(0.06), W - Inches(0.4), Inches(0.45),
                font_size=11, bold=False, color=LIGHT_BLUE, align=PP_ALIGN.LEFT)

    # Card body
    add_rect(slide_a, card_left, card_top, card_w, card_h, WHITE)

    # Tick icon
    add_textbox(slide_a, "✓",
                card_left, card_top + Inches(0.05),
                card_w, Inches(0.7),
                font_size=30, bold=True, color=MID_BLUE, align=PP_ALIGN.CENTER)

    # Answer text
    answer_font = 18 if len(answer) > 120 else 20
    add_textbox(slide_a, answer,
                card_left + Inches(0.3), card_top + Inches(0.75),
                card_w - Inches(0.6), card_h - Inches(0.9),
                font_size=answer_font, bold=False, color=DARK_TEXT, align=PP_ALIGN.CENTER)

    # Bottom hint
    add_textbox(slide_a,
                "← Go back to re-read the question or move to next card →",
                Inches(0.2), H - Inches(0.55), W - Inches(0.4), Inches(0.45),
                font_size=11, bold=False, color=YELLOW, align=PP_ALIGN.CENTER)

# ── Cover slide ───────────────────────────────────────────────────────────────
from pptx.oxml.ns import qn
cover = prs.slides.add_slide(blank_layout)
# insert cover at position 0
xml_slides = prs.slides._sldIdLst
xml_slides.insert(0, xml_slides[-1])
xml_slides.remove(xml_slides[-1])

add_rect(cover, 0, 0, W, H, DARK_BLUE)
add_rect(cover, 0, Inches(1.8), W, Inches(2.2), MID_BLUE)
add_textbox(cover, "PSM / Community Medicine",
            Inches(0.5), Inches(0.3), W - Inches(1), Inches(0.9),
            font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_textbox(cover, "TOP 25 ONE-LINER FLASHCARDS",
            Inches(0.5), Inches(1.9), W - Inches(1), Inches(0.8),
            font_size=26, bold=True, color=YELLOW, align=PP_ALIGN.CENTER)
add_textbox(cover, "For Daily Quick Revision",
            Inches(0.5), Inches(2.65), W - Inches(1), Inches(0.6),
            font_size=18, bold=False, color=LIGHT_BLUE, align=PP_ALIGN.CENTER)
add_textbox(cover,
            "Each flashcard: Question slide → Answer slide\n"
            "LNCT Vidyapeeth University  |  MBBS PSM  |  July 2026",
            Inches(0.5), Inches(3.5), W - Inches(1), Inches(0.9),
            font_size=13, bold=False, color=LIGHT_GREY, align=PP_ALIGN.CENTER)
add_textbox(cover, "25 cards  ·  50 slides total",
            Inches(0.5), H - Inches(0.7), W - Inches(1), Inches(0.5),
            font_size=12, bold=False, color=LIGHT_BLUE, align=PP_ALIGN.CENTER)

out_path = "/tmp/workspace/psm-study-guide/PSM_Flashcards_Top25.pptx"
prs.save(out_path)
print(f"SUCCESS: {out_path}")
print(f"Total slides: {len(prs.slides)}")
Running Command

python3 /tmp/workspace/psm-study-guide/make_flashcards.py

Your flashcards are ready! Download here:

PSM Flashcards Top25

Presentation · PPTX


What's in the file

  • 51 slides total - 1 cover + 25 question slides + 25 answer slides
  • Every card is a pair: Question slide (dark blue)Answer slide (blue)
  • Clear visual separation so you know which side you're on at a glance

All 25 flashcard topics

#Question Topic
1IMR - India value
2MMR - India value
3TFR - India & replacement level
4Normal curve - 68/95/99.7 rule
5Sensitivity & Specificity formulas
6Odds Ratio & Relative Risk formulas
7Residual chlorine standard
8TB new-case regimen (2HRZE/4HR)
9Ethambutol side effect
10Isoniazid neuropathy & prevention
11Kwashiorkor features
12Marasmus features
13Primordial prevention
14Kuppuswamy scale components
15ASHA - definition & coverage
16API (malaria)
17SPR formula (malaria)
18Schmutzdecke
19OT test
20Wilson & Jungner 10 criteria
21DOTS full form
22Nikshay Poshan Yojana
23NNT formula
24Hawthorne Effect
25Berkson's Bias

How to use for daily revision

Open on your phone in PowerPoint/Google Slides. Each morning, go through all cards - cover the answer, say your response aloud, then flip. Takes about 10-15 minutes once you know the material, and actively recalling beats re-reading every time. Aim to get through all 25 cards twice daily in the days before your exam.
This is a shared conversation. Sign in to Orris to start your own chat.