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
| Time Slot | Topic | Duration |
|---|---|---|
| Morning (9-10:30 AM) | Epidemiology | 1.5 hrs |
| 10:30-11:15 AM | Biostatistics | 45 min |
| Break | - | 15 min |
| 11:30 AM - 12:15 PM | Nutrition | 45 min |
| 12:15 - 1:15 PM | National Programs | 1 hr |
| Lunch break | - | 30 min |
| 2:00 - 2:45 PM | Environment & Water | 45 min |
| 2:45 - 3:15 PM | Demography | 30 min |
| 3:15 - 3:45 PM | Quick revision / past paper questions | 30 min |
Find last 5 years PSM question papers from your university
Lnct vidhyapeeth university
LNCT Vidyapeeth University MBBS PSM Community Medicine question paper previous years
| Topic | Type | Frequency |
|---|---|---|
| Epidemiological triad | LA | Every year |
| Case-control vs Cohort study | LA/SA | Very frequent |
| Sensitivity & Specificity | SA | Very frequent |
| Kwashiorkor vs Marasmus | LA | Very frequent |
| DOTS / RNTCP | SA | Every year |
| Immunization schedule (UIP) | SA/LA | Every year |
| Water purification / Chlorination | SA | Very frequent |
| Levels of prevention | SA | Every year |
| IMR, MMR definitions & values | One-liner | Every year |
| Kuppuswamy scale | One-liner | Very frequent |
Generate a study guide covering the 10 most-asked PSM topics
mkdir -p /tmp/workspace/psm-study-guide
~/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}")
python3 /tmp/workspace/psm-study-guide/generate_guide.py
PSM Top10 Study Guide
Word Document · DOCX
| # | Topic | What's Included |
|---|---|---|
| 1 | Epidemiological Triad & Levels of Prevention | Host-Agent-Environment table, all 4 levels with examples |
| 2 | Study Designs | Case-control vs Cohort full comparison table, OR & RR formulas, RCT phases |
| 3 | Screening | Wilson & Jungner criteria, Sensitivity/Specificity/PPV/NPV formulas with 2x2 table |
| 4 | Biostatistics | Mean/Median/Mode, Normal curve (68-95-99.7), data types, when to use which test |
| 5 | Kwashiorkor vs Marasmus | Full 14-row comparison table, Gomez classification |
| 6 | Immunization Schedule (UIP) | Complete age-wise vaccine table, cold chain, contraindications |
| 7 | RNTCP / NTEP | DOTS, 2HRZE/4HR regimen, drug side effects table, MDR-TB |
| 8 | Water Purification | Slow vs Rapid sand filter table, Horrock's apparatus, chlorination, OT test |
| 9 | Health Indicators & Demography | All formulas + India values, demographic transition stages, socioeconomic scales |
| 10 | National Health Programmes | NHM, ASHA, JSY, NVBDCP (Malaria API/SPR), ICDS 6 services |
| + | Quick Revision Page | 25 one-liners you must know for the exam |
Make flashcards from the one-liners page (for daily quick revision)
~/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)}")
python3 /tmp/workspace/psm-study-guide/make_flashcards.py
PSM Flashcards Top25
Presentation · PPTX
| # | Question Topic |
|---|---|
| 1 | IMR - India value |
| 2 | MMR - India value |
| 3 | TFR - India & replacement level |
| 4 | Normal curve - 68/95/99.7 rule |
| 5 | Sensitivity & Specificity formulas |
| 6 | Odds Ratio & Relative Risk formulas |
| 7 | Residual chlorine standard |
| 8 | TB new-case regimen (2HRZE/4HR) |
| 9 | Ethambutol side effect |
| 10 | Isoniazid neuropathy & prevention |
| 11 | Kwashiorkor features |
| 12 | Marasmus features |
| 13 | Primordial prevention |
| 14 | Kuppuswamy scale components |
| 15 | ASHA - definition & coverage |
| 16 | API (malaria) |
| 17 | SPR formula (malaria) |
| 18 | Schmutzdecke |
| 19 | OT test |
| 20 | Wilson & Jungner 10 criteria |
| 21 | DOTS full form |
| 22 | Nikshay Poshan Yojana |
| 23 | NNT formula |
| 24 | Hawthorne Effect |
| 25 | Berkson's Bias |