Solve with ref to park
"Essential health care based on practical, scientifically sound and socially acceptable methods and technology made universally accessible to individuals and families in the community through their full participation and at a cost that the community and country can afford to maintain at every stage of their development in the spirit of self-determination." (Alma-Ata Declaration, 1978)
| Level | Facility | Coverage |
|---|---|---|
| Village | Sub-Centre (ANM + MPW) | 3,000-5,000 population (plain); 1,000-3,000 (hilly/tribal) |
| Block | Primary Health Centre (MO + staff) | 20,000-30,000 population |
| Sub-district | Community Health Centre | 80,000-1,20,000 population |
| District | District Hospital | District population |
| Category | Type of Contact | PEP |
|---|---|---|
| I | Touching/feeding animals, licks on intact skin | None (if history reliable) |
| II | Nibbling of uncovered skin, minor scratches without bleeding | Wound washing + vaccine |
| III | Single/multiple transdermal bites, contamination of mucous membrane, bat bites | Wound washing + RIG + vaccine |
Prevention/Mitigation
↑
Recovery ←→ Preparedness
↓
Response
| Syndrome | Common Organisms | Treatment |
|---|---|---|
| Urethral discharge | N. gonorrhoeae, C. trachomatis | Cefixime/Ceftriaxone + Doxycycline/Azithromycin |
| Vaginal discharge | T. vaginalis, Candida, BV | Metronidazole + Fluconazole |
| Genital ulcer disease | H. ducreyi, T. pallidum, HSV | Benzathine penicillin + Erythromycin |
| Lower abdominal pain (PID) | N. gonorrhoeae, C. trachomatis, anaerobes | Ceftriaxone + Doxycycline + Metronidazole |
| Inguinal bubo | C. trachomatis (LGV), H. ducreyi | Doxycycline |
| Neonatal eye discharge | N. gonorrhoeae, C. trachomatis | Ceftriaxone eye drops |
| Colour | Container | Waste type |
|---|---|---|
| Yellow | Bag/Container | Infectious/pathological waste - human tissues, body parts, blood bags, discarded medicines, cytotoxic, chemical waste, placenta |
| Red | Bag/Container | Contaminated recyclable waste - tubing, catheters, IV sets, syringes WITHOUT needles, gloves |
| White/Translucent | Puncture-proof container | Sharps - needles, syringes WITH needles, blades, lancets |
| Blue | Cardboard box | Glassware - broken/discarded glass, slides, vials |
| Disease + (Gold Standard +) | Disease - (Gold Standard -) | Total | |
|---|---|---|---|
| Test + | a (True Positive) | b (False Positive) | a+b |
| Test - | c (False Negative) | d (True Negative) | c+d |
| Total | a+c | b+d | N |
| Hazard Type | PPE |
|---|---|
| Head injury | Hard hat/safety helmet |
| Eye/face | Safety goggles, face shield |
| Ear/noise | Earplugs, earmuffs (>85 dB) |
| Respiratory | Dust mask (N95), respirator (PAPR for IDLH environments) |
| Hand | Gloves (latex, nitrile, leather, cut-resistant) |
| Foot | Safety shoes (steel-toed), chemical-resistant boots |
| Body/skin | Coveralls, aprons (lead apron for radiation) |
| Fall protection | Safety harness, lanyards |
| Feature | Quarantine | Isolation |
|---|---|---|
| Applied to | Contacts (exposed but not yet ill) | Cases (confirmed sick persons) |
| Purpose | Prevent spread from potentially incubating disease | Prevent spread from infectious cases |
| Duration | For the period of maximum incubation period | Until no longer infectious |
| Setting | May be at home or designated facility | Hospital, home or facility |
| Example | COVID-19 contacts quarantined for 14 days | Active TB patient in negative pressure room |
CBR = (Number of live births in a year / Mid-year total population) × 1,000
NRR = GRR × (proportion of female birth cohort surviving to mean age of childbearing)
| Category | Examples |
|---|---|
| Visual only | Posters, charts, graphs, flannel boards, flip charts, blackboard, photographs, exhibits |
| Audio only | Radio, tape recordings, public address system |
| Audio-visual | Television, cinema/films, video, multimedia projectors |
| Projected | Slides, filmstrips, overhead projector transparencies, LCD projector |
| Non-projected | Flash cards, flannel graphs, puppet shows, demonstrations, models |
| Pamphlets, leaflets, booklets, health magazines |
| Measure | Definition | Formula/Notes |
|---|---|---|
| Range | Difference between max and min value | Max - Min; simple but affected by outliers |
| Mean Deviation | Average of absolute deviations from mean | Σ|x - x̄|/n |
| Variance | Average of squared deviations from mean | Σ(x - x̄)²/n |
| Standard Deviation (SD) | Square root of variance; most commonly used | √variance; same unit as data |
| Coefficient of Variation (CV) | SD/Mean × 100%; used to compare dispersion between different units | % |
| Interquartile Range (IQR) | Q3 - Q1; middle 50% of data; robust to outliers | Used with median |
| Standard Error (SE) | SD/√n; measure of reliability of the mean estimate | Used in inferential statistics |
Create a doc should contain everything
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/community-medicine && cat > /tmp/workspace/community-medicine/create_doc.py << 'PYEOF' 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.top_margin = Inches(1.0) section.bottom_margin = Inches(1.0) section.left_margin = Inches(1.1) section.right_margin = Inches(1.1) # ── Default Normal style ────────────────────────────────────────────────────── normal = doc.styles["Normal"] normal.font.name = "Calibri" normal.font.size = Pt(11) # ── Helper: add coloured heading ───────────────────────────────────────────── def add_title(doc, text, level=1, color=None): h = doc.add_heading(text, level=level) h.alignment = WD_ALIGN_PARAGRAPH.LEFT for run in h.runs: if color: run.font.color.rgb = RGBColor(*color) return h # ── Helper: add body paragraph ─────────────────────────────────────────────── def add_body(doc, text, bold=False, italic=False): p = doc.add_paragraph(text) p.style = doc.styles["Normal"] if bold or italic: for run in p.runs: run.bold = bold run.italic = italic return p # ── Helper: add bullet ─────────────────────────────────────────────────────── def add_bullet(doc, text): p = doc.add_paragraph(text, style="List Bullet") p.style.font.size = Pt(11) return p # ── Helper: add simple table ───────────────────────────────────────────────── def add_table(doc, headers, rows, col_widths=None): table = doc.add_table(rows=1+len(rows), cols=len(headers)) table.style = "Table Grid" # header row hdr = table.rows[0] for i, h in enumerate(headers): cell = hdr.cells[i] cell.text = h for run in cell.paragraphs[0].runs: run.bold = True run.font.size = Pt(10) cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), "1F4E79") tcPr.append(shd) for run in cell.paragraphs[0].runs: run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) # data rows for r_i, row_data in enumerate(rows): row = table.rows[r_i + 1] for c_i, val in enumerate(row_data): cell = row.cells[c_i] cell.text = val cell.paragraphs[0].runs[0].font.size = Pt(10) if r_i % 2 == 0: for cell in row.cells: tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), "D6E4F0") tcPr.append(shd) if col_widths: for row in table.rows: for i, cell in enumerate(row.cells): cell.width = Inches(col_widths[i]) doc.add_paragraph() return table # ── Helper: page break ──────────────────────────────────────────────────────── def page_break(doc): doc.add_page_break() # ═══════════════════════════════════════════════════════════════════════════════ # COVER # ═══════════════════════════════════════════════════════════════════════════════ doc.add_paragraph() doc.add_paragraph() title_para = doc.add_paragraph() title_para.alignment = WD_ALIGN_PARAGRAPH.CENTER run = title_para.add_run("COMMUNITY MEDICINE") run.bold = True; run.font.size = Pt(26); run.font.color.rgb = RGBColor(0x1F, 0x4E, 0x79) sub_para = doc.add_paragraph() sub_para.alignment = WD_ALIGN_PARAGRAPH.CENTER run2 = sub_para.add_run("Complete Solved Question Papers") run2.bold = True; run2.font.size = Pt(16); run2.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5) doc.add_paragraph() ref_para = doc.add_paragraph() ref_para.alignment = WD_ALIGN_PARAGRAPH.CENTER run3 = ref_para.add_run("Reference: Park's Textbook of Preventive and Social Medicine") run3.italic = True; run3.font.size = Pt(13); run3.font.color.rgb = RGBColor(0x40, 0x40, 0x40) doc.add_paragraph() papers_para = doc.add_paragraph() papers_para.alignment = WD_ALIGN_PARAGRAPH.CENTER run4 = papers_para.add_run( "Paper 1: MBBS 3rd Prof (Part-I) Community Medicine-II [JAN-2023]\n" "Paper 2: RGUHS Karnataka Community Medicine Paper-I [Feb 2023]" ) run4.font.size = Pt(12) page_break(doc) # ═══════════════════════════════════════════════════════════════════════════════ # PAPER 1 # ═══════════════════════════════════════════════════════════════════════════════ add_title(doc, "PAPER 1 — MBBS 3rd Prof (Part-I) Community Medicine-II [JAN-23]", 1, (0x1F,0x4E,0x79)) add_title(doc, "SECTION A (50 Marks)", 2, (0x2E,0x74,0xB5)) # ─── Q1 PHC ────────────────────────────────────────────────────────────────── add_title(doc, "Q1. Primary Health Care [2+3+5]", 2, (0xC0,0x00,0x00)) add_title(doc, "Definition (Park, p.30):", 3) add_body(doc, '"Essential health care based on practical, scientifically sound and socially ' 'acceptable methods and technology made universally accessible to individuals and ' 'families in the community through their full participation and at a cost that the ' 'community and country can afford to maintain at every stage of their development ' 'in the spirit of self-determination." (Alma-Ata Declaration, 1978)') add_title(doc, "Background:", 3) add_body(doc, "The concept arose from the 1978 Joint WHO-UNICEF International Conference at Alma-Ata (USSR), " "where 134 governments declared the goal of \"Health for All by 2000 A.D.\" through PHC. " "Principles: social equity, nationwide coverage, self-reliance, intersectoral coordination, people's involvement.") add_title(doc, "8 Essential Elements (Alma-Ata):", 3) elements = [ "Education about prevailing health problems and methods of preventing and controlling them", "Promotion of food supply and proper nutrition", "Safe water supply and basic sanitation", "Maternal and child health care, including family planning", "Immunization against major infectious diseases", "Prevention and control of endemic diseases", "Appropriate treatment of common diseases and injuries", "Provision of essential drugs" ] for i, e in enumerate(elements, 1): add_bullet(doc, f"{i}. {e}") add_title(doc, "PHC in Rural Odisha — Infrastructure:", 3) add_table(doc, ["Level", "Facility", "Coverage"], [ ["Village", "Sub-Centre (ANM + MPW)", "3,000-5,000 population (plain); 1,000-3,000 (hilly/tribal)"], ["Block", "Primary Health Centre (MO + staff)", "20,000-30,000 population"], ["Sub-district", "Community Health Centre", "80,000-1,20,000 population"], ["District", "District Hospital", "District population"], ], col_widths=[1.0, 2.5, 2.5] ) for pt in [ "ASHA (Accredited Social Health Activist): 1 per 1,000 population — first contact for community health services", "Sub-centre: ANM + MPW; provides MCH, family planning, immunization, health education, treatment of minor ailments", "PHC: 1 Medical Officer + 14 paramedical staff; 6 beds; OPD, referrals, public health functions", "CHC: 30 beds, 4 specialists (Surgery, Medicine, OB-Gyn, Paediatrics), 24-hour emergency", "Odisha: Mobile Health Units for remote/tribal areas; Odisha State Health Mission under NHM" ]: add_bullet(doc, pt) # ─── Q1 OR NVBDCP ──────────────────────────────────────────────────────────── doc.add_paragraph() add_title(doc, "OR: National Vector Borne Disease Control Programme (NVBDCP) [10]", 2, (0xC0,0x00,0x00)) add_body(doc, "NVBDCP is a centrally-sponsored programme under MoHFW, Government of India, launched in 2003-04 " "by merging earlier individual disease programmes. It is the nodal programme for prevention and " "control of all major vector-borne diseases in India.") add_title(doc, "Diseases Covered:", 3) for d in ["Malaria", "Dengue / DHF", "Chikungunya", "Kala-azar (Visceral Leishmaniasis)", "Japanese Encephalitis (JE)", "Lymphatic Filariasis"]: add_bullet(doc, d) add_title(doc, "1. Malaria Control:", 3) for pt in [ "Early Diagnosis and Prompt Treatment (EDPT): RDKs and microscopy; ACT for P. falciparum; Chloroquine + Primaquine for P. vivax", "Vector control: Indoor Residual Spraying (IRS); LLIN distribution in high-burden areas; source reduction; larvivorous fish", "Mass Drug Administration (MDA) in high-endemic areas", "Surveillance indicators: ABER (target >10%); SPR; API (Annual Parasite Incidence)" ]: add_bullet(doc, pt) add_title(doc, "2. Kala-azar (VL):", 3) for pt in [ "Target: Elimination (<1 case/10,000 population at block level)", "Treatment: Miltefosine (oral), Amphotericin B (IV), SSG", "Vector control: DDT spraying against Phlebotomus sandfly; insecticide-treated bed nets", "Active and passive surveillance" ]: add_bullet(doc, pt) add_title(doc, "3. Dengue & Chikungunya:", 3) for pt in [ "No specific drug/vaccine widely available; management is supportive", "Vector (Aedes aegypti) control: source reduction — elimination of breeding sites (coolers, tyres, containers)", "Biological methods; community participation" ]: add_bullet(doc, pt) add_title(doc, "4. Japanese Encephalitis:", 3) for pt in [ "JE vaccine (SA 14-14-2 live attenuated) in endemic districts: 1 dose at 9-12 months; 2nd dose at 16-24 months", "Vector control: Culex mosquito (breeds in rice fields)", "Piggery management (pigs are amplifying hosts)" ]: add_bullet(doc, pt) add_title(doc, "5. Lymphatic Filariasis:", 3) for pt in [ "MDA with DEC + Albendazole annually in all endemic districts", "Triple drug MDA (DEC + Albendazole + Ivermectin) in certain districts", "Morbidity management: lymphoedema management and hydrocelectomy" ]: add_bullet(doc, pt) page_break(doc) # ─── Q2 Short Questions ─────────────────────────────────────────────────────── add_title(doc, "Q2. Short Questions (Answer any 4) [5×4]", 2, (0xC0,0x00,0x00)) # (a) PEP Rabies add_title(doc, "(a) Post-Exposure Prophylaxis (PEP) for Rabies", 3) add_body(doc, "Rabies is caused by Lyssavirus (Rhabdoviridae). Nearly 100% fatal once symptoms appear. " "India accounts for ~36% of world rabies deaths.") add_title(doc, "First Aid:", 4) for pt in [ "Wash wound immediately and thoroughly with soap and water for at least 15 minutes", "Apply antiseptic (povidone iodine, spirit, etc.)", "Do NOT suture wound (if unavoidable, suture loosely after infiltrating with RIG)" ]: add_bullet(doc, pt) add_title(doc, "WHO Classification of Exposure:", 4) add_table(doc, ["Category", "Type of Contact", "PEP Required"], [ ["I", "Touching/feeding animals, licks on intact skin", "None"], ["II", "Nibbling of uncovered skin, minor scratches without bleeding", "Wound washing + Vaccine"], ["III", "Transdermal bites, contamination of mucous membrane, bat bites", "Wound washing + RIG + Vaccine"], ], col_widths=[0.8, 3.0, 2.2] ) add_title(doc, "Vaccination Schedules:", 4) for pt in [ "IM Essen (5-dose): Days 0, 3, 7, 14, 28", "IM Zagreb (2-1-1): 2 doses Day 0 (both deltoids), 1 dose Day 7, 1 dose Day 21", "ID Updated Thai Red Cross (2-2-2-0-2): 0.1 mL ID at 2 sites on Days 0, 3, 7, 28" ]: add_bullet(doc, pt) add_title(doc, "Rabies Immunoglobulin (RIG) — Category III only:", 4) for pt in [ "Human RIG (HRIG): 20 IU/kg", "Equine RIG (ERIG): 40 IU/kg", "Infiltrate all RIG into/around wound; remainder IM at distant site", "Must be given on Day 0 (or up to Day 7); do NOT mix with vaccine in same syringe" ]: add_bullet(doc, pt) # (c) Disaster Cycle add_title(doc, "(c) Disaster Cycle", 3) add_body(doc, "Disaster: \"A serious disruption of the functioning of a community or society involving widespread human, " "material, economic or environmental losses, which exceeds the ability of the affected community to cope " "using its own resources.\" (UNISDR)") add_title(doc, "4 Phases of the Disaster Cycle:", 4) add_table(doc, ["Phase", "Timing", "Key Activities"], [ ["1. Mitigation / Prevention", "Pre-disaster", "Building codes, land use planning, levees, immunization, public education; reduce probability/impact"], ["2. Preparedness", "Pre-disaster", "Disaster plans, early warning systems, training, mock drills, stockpiling, incident command"], ["3. Response", "During disaster", "Search & rescue, emergency medical care, triage, evacuation, food/shelter/water; activation of EOC"], ["4. Recovery / Rehabilitation", "Post-disaster", "Short-term relief (debris, shelter); long-term reconstruction; psychosocial rehab; livelihood restoration"], ], col_widths=[1.7, 1.2, 3.1] ) add_body(doc, "Note: The cycle is continuous — lessons from recovery feed back into mitigation and preparedness.") # (d) GOBI add_title(doc, "(d) GOBI", 3) add_body(doc, "GOBI is an acronym for low-cost, high-impact child survival strategies promoted by UNICEF (1980s):") for item in [ "G — Growth monitoring (early detection of malnutrition)", "O — Oral Rehydration Therapy (control of diarrhoeal deaths)", "B — Breast-feeding promotion (nutrition + passive immunity)", "I — Immunization via EPI (diphtheria, pertussis, tetanus, polio, TB, measles)" ]: add_bullet(doc, item) add_body(doc, "Later expanded to GOBI-FFF:") for item in ["F — Female education", "F — Family planning", "F — Food supplementation"]: add_bullet(doc, item) add_body(doc, "Impact: Estimated potential to save 5-7 million children per year. ORS considered the greatest " "medical advance of the 20th century for diarrhoeal disease control.") # (e) Syndromic Approach to STD add_title(doc, "(e) Syndromic Approach to STD", 3) add_body(doc, "Definition: Managing STIs based on identifying a consistent group of symptoms and recognizable " "signs (syndromes), and providing treatment covering the majority of organisms responsible for that syndrome.") add_title(doc, "Rationale:", 4) for pt in [ "Accurate etiological diagnosis requires labs not available at peripheral levels", "Most patients lost to follow-up if asked to return for results", "Co-infections are common (e.g., gonorrhoea + chlamydia)", "Treatment must be immediate to prevent further transmission" ]: add_bullet(doc, pt) add_title(doc, "Common Syndromes and Treatment:", 4) add_table(doc, ["Syndrome", "Common Organisms", "Treatment"], [ ["Urethral discharge", "N. gonorrhoeae, C. trachomatis", "Cefixime/Ceftriaxone + Doxycycline/Azithromycin"], ["Vaginal discharge", "T. vaginalis, Candida, BV", "Metronidazole + Fluconazole"], ["Genital ulcer disease", "H. ducreyi, T. pallidum, HSV", "Benzathine penicillin + Erythromycin"], ["Lower abdominal pain (PID)", "N. gonorrhoeae, C. trachomatis, anaerobes", "Ceftriaxone + Doxycycline + Metronidazole"], ["Inguinal bubo", "C. trachomatis (LGV), H. ducreyi", "Doxycycline"], ["Neonatal eye discharge", "N. gonorrhoeae, C. trachomatis", "Ceftriaxone eye drops"], ], col_widths=[1.5, 2.2, 2.3] ) for item in ["Advantages: No lab needed; immediate treatment; reduces transmission; cost-effective; patient-centred", "Disadvantages: Over-treatment; does not identify specific pathogen; may miss asymptomatic infections"]: add_bullet(doc, item) page_break(doc) # ─── Q3 Very Short ─────────────────────────────────────────────────────────── add_title(doc, "Q3. Very Short Questions (Answer All) [3×5]", 2, (0xC0,0x00,0x00)) vsq = [ ("(a) Mass Drug Administration (MDA)", [ "Administration of a drug/combination to the entire eligible population of a defined area, regardless of individual infection status, at periodic intervals", "Used in India for: Lymphatic Filariasis (DEC + Albendazole ± Ivermectin); Soil-transmitted helminths (Albendazole — National Deworming Day); Trachoma (Azithromycin)", "For filariasis: given annually on National Filaria Day; contraindicated in children <2 yrs, pregnant women, severely ill persons", "Aim: Reduce microfilaraemia below transmission threshold" ]), ("(b) NITI Aayog", [ "National Institution for Transforming India — established 1st January 2015, replacing Planning Commission (est. 1950)", "Chaired by the Prime Minister of India", "Key difference: Policy think-tank (not fund-allocating); promotes cooperative federalism; bottom-up planning", "Health work: State Health Index, Aspirational Districts Programme, SDG India Index, National Health Policy 2017" ]), ("(c) Kangaroo Mother Care (KMC)", [ "Method of care for preterm/LBW (<2000 g) neonates: skin-to-skin contact (baby on mother's chest) + exclusive breastfeeding + early discharge with follow-up", "Named after kangaroo marsupial care of underdeveloped young", "Benefits: Prevents hypothermia, promotes breastfeeding, reduces infections and mortality, better bonding, shorter hospital stay", "WHO recommends initiating KMC as soon as possible for all babies <2000 g or <34 weeks" ]), ("(d) Long-Lasting Insecticidal Nets (LLIN)", [ "Bed nets impregnated with pyrethroid insecticide (permethrin/deltamethrin) retaining efficacy for at least 3 years (20 washes) without re-treatment", "Mechanism: Mosquitoes (Anopheles) killed/repelled on contact; community-level protection even for those not under net", "Used under NVBDCP for malaria prevention in high-endemic/tribal/forest areas", "Advantages over ITNs: No re-treatment needed; more durable; cost-effective over time" ]), ("(e) Age Pyramid", [ "Graphical representation of age-sex distribution: X-axis = population number/%; Y-axis = 5-year age groups; Males left, Females right", "Expansive/Progressive pyramid (broad base, narrow apex): High birth rate, high death rate — developing countries (India)", "Stationary/Constrictive pyramid (near-equal all ages): Low birth rate, low death rate — developed countries", "Regressive pyramid (narrow base, broad apex): Below-replacement fertility — some European countries", "Uses: Demographic analysis, health service planning, dependency ratio, future population projection" ]), ] for heading, bullets in vsq: add_title(doc, heading, 3) for b in bullets: add_bullet(doc, b) page_break(doc) # ═══════════════════════════════════════════════════════════════════════════════ # PAPER 2 # ═══════════════════════════════════════════════════════════════════════════════ add_title(doc, "PAPER 2 — RGUHS Karnataka Community Medicine Paper-I [Feb 2023]", 1, (0x1F,0x4E,0x79)) add_title(doc, "LONG ESSAYS (2×10 = 20 Marks)", 2, (0x2E,0x74,0xB5)) # Q1 Health Indicators add_title(doc, "Q1. Health Indicators — Characteristics, Classification, Morbidity Indicators", 2, (0xC0,0x00,0x00)) add_title(doc, "Definition:", 3) add_body(doc, "A health indicator is a variable susceptible to direct measurement that reflects the state of " "health of persons in a community. (Park)") add_title(doc, "Characteristics of a Good Health Indicator (VIRUS):", 3) add_table(doc, ["Characteristic", "Meaning"], [ ["Valid", "Measures what it is supposed to measure"], ["Reliable/Reproducible", "Consistent results under different circumstances"], ["Sensitive", "Detects changes in health situation"], ["Specific", "Reflects changes only in the situation concerned"], ["Feasible", "Data available or obtainable"], ["Relevant", "Contributes to understanding the situation"], ], col_widths=[2.0, 4.0] ) add_title(doc, "Classification of Health Indicators:", 3) indicators = [ ("A. Mortality Indicators", ["Crude Death Rate (CDR)", "Age-specific death rates", "Infant Mortality Rate (IMR) — most sensitive indicator of community health status", "Under-5 Mortality Rate (U5MR)", "Maternal Mortality Rate/Ratio (MMR)", "Proportional Mortality Ratio (PMR)", "Life expectancy at birth"]), ("B. Morbidity Indicators", ["Incidence and prevalence rates (specific diseases)", "Hospital admission/discharge rates", "Duration of hospital stay", "Notification rates of communicable diseases", "School/work absenteeism rates", "Disability rates"]), ("C. Disability Indicators", ["Days of restricted activity", "DALY (Disability-Adjusted Life Year)", "HALE (Health-Adjusted Life Expectancy)", "Activity limitation"]), ("D. Nutritional Status Indicators", ["Anthropometric measurements (weight-for-age, height-for-age, weight-for-height)", "BMI", "Biochemical indicators (Hb, serum albumin)"]), ("E. Health Care Delivery Indicators", ["Doctor-population ratio", "Nurse-population ratio", "Population per hospital bed", "Immunization coverage"]), ("F. Socioeconomic Indicators", ["Per capita GNP", "Literacy rate", "Dependency ratio"]), ("G. Composite/Social Indicators", ["PQLI (Physical Quality of Life Index): IMR + Infant literacy + Life expectancy at age 1; scale 0-100", "HDI (Human Development Index): Health + Education + Income", "Basic Needs Index"]), ] for cat, items in indicators: add_title(doc, cat, 4) for item in items: add_bullet(doc, item) # Q2 Endemic/Epidemic/Pandemic add_title(doc, "Q2. Endemic, Epidemic, Pandemic + Steps in Epidemic Investigation", 2, (0xC0,0x00,0x00)) add_table(doc, ["Term", "Definition", "Example"], [ ["Endemic", "Habitual/constant presence of a disease within a given geographic area at usual/expected level", "Malaria in NE India; Cholera in Bangladesh"], ["Epidemic", "Occurrence of cases clearly in excess of normal expectancy in a community or region, related in time and place", "COVID-19 in 2020 (initial phase)"], ["Pandemic", "Epidemic occurring worldwide, crossing international boundaries, affecting large numbers", "COVID-19 (WHO declared Mar 2020); 1918 Influenza"], ["Sporadic", "Disease occurs irregularly, haphazardly, without discernible pattern", "Tetanus cases in a district"], ], col_widths=[1.3, 3.2, 1.5] ) add_title(doc, "10 Steps in Investigation of an Epidemic (Park):", 3) steps = [ "Verify the diagnosis — confirm cases are real; check case definitions; laboratory confirmation", "Confirm the existence of an epidemic — compare with usual rates; establish baseline", "Define a case — standard case definition (clinical, epidemiological, laboratory criteria)", "Find all cases — active case finding, search records, survey", "Describe the epidemic — by TIME (epidemic curve), PLACE (spot map), PERSON (age, sex, occupation)", "Generate a hypothesis — likely source, mode of transmission, vehicles, incubation period", "Test the hypothesis — analytical studies (case-control or cohort)", "Implement control measures — simultaneously; do not wait for full confirmation", "Evaluate control measures — are they working?", "Report findings — communicate to health authorities and community" ] for i, s in enumerate(steps, 1): add_bullet(doc, f"Step {i}: {s}") page_break(doc) # SHORT ESSAYS add_title(doc, "SHORT ESSAYS (8×5 = 40 Marks)", 2, (0x2E,0x74,0xB5)) # Q3 Household waste add_title(doc, "Q3. Classify Household Waste & Bangalore Method of Composting", 2, (0xC0,0x00,0x00)) add_title(doc, "Classification of Household/Solid Waste:", 3) for w in ["Garbage — food waste, putrescible organic matter", "Rubbish — combustible (paper, wood) and non-combustible (metal, glass)", "Ashes and residues", "Large/Bulky wastes — furniture, appliances", "Dead animals", "Abandoned vehicles", "Construction/demolition waste", "Special wastes — hazardous, biomedical"]: add_bullet(doc, w) add_title(doc, "Bangalore Method of Composting:", 3) add_body(doc, "Developed at Indian Institute of Horticulture Research, Bangalore. A modified anaerobic composting method.") for s in [ "Dig a trench 2 m wide × 1 m deep × 4-5 m long in a shaded place", "Spread 15-25 cm layer of waste material (leaves, straw, kitchen waste, sweepings)", "Spread 5 cm layer of night soil/cattle dung on top", "Continue alternating layers of waste and night soil until trench is full (mound 0.5 m above ground)", "Cover with 2 cm layer of soil", "Water periodically (once weekly) to maintain moisture", "Do NOT turn the heap (anaerobic — unlike Indore method)", "After 3 months (hot weather) or up to 6 months: dark, crumbly, inoffensive compost is ready" ]: add_bullet(doc, s) add_body(doc, "Advantages: Simple, minimal labour, kills pathogens, produces good manure, no odour if properly covered.") # Q4 BMW add_title(doc, "Q4 & Q5. Bio-Medical Waste Management in Health Facility", 2, (0xC0,0x00,0x00)) add_body(doc, "Governed by: Bio-Medical Waste Management Rules 2016 (amended 2018), India.") add_title(doc, "Colour-Coded Segregation (BMW Rules 2016):", 3) add_table(doc, ["Colour", "Container", "Waste Type"], [ ["Yellow", "Bag/Container", "Infectious/pathological — human tissues, body parts, blood bags, discarded medicines, cytotoxic, chemical waste, placenta"], ["Red", "Bag/Container", "Contaminated recyclable — tubing, catheters, IV sets, syringes WITHOUT needles, gloves, urine bags"], ["White/Translucent", "Puncture-proof container", "Sharps — needles, syringes WITH needles, blades, lancets"], ["Blue", "Cardboard box", "Glassware — broken/discarded glass, slides, vials"], ], col_widths=[1.0, 1.5, 3.5] ) add_title(doc, "Steps in BMW Management:", 3) for s in [ "Segregation at source — using correct colour-coded bags at point of generation", "Collection and transportation — within facility; double-bagging if leakage risk; trolleys", "Storage — in designated room; not exceeding 48 hours", "Treatment: Yellow bag — Incineration/autoclaving; Red bag — Autoclaving/microwaving then recycler; White — Autoclaving + recycler; Blue — Disinfection + disposal", "Pre-treatment: Autoclaving (134°C, 3 bar, 18 min) or chemical disinfection before sending to CBWTF" ]: add_bullet(doc, s) # Q6 Iron Deficiency Anaemia add_title(doc, "Q6. Iron Deficiency Anaemia — Burden, Causes and Prevention", 2, (0xC0,0x00,0x00)) add_title(doc, "Burden:", 3) for b in [ "Most common nutritional deficiency disorder in the world; affects >2 billion people (WHO)", "India (NFHS-5): Children 6-59 months: ~40%; Women 15-49 yrs: ~53%; Men: ~25%", "Most common in young children and women of reproductive age" ]: add_bullet(doc, b) add_title(doc, "Causes:", 3) add_table(doc, ["Category", "Examples"], [ ["Inadequate intake", "Low bioavailability (phytates, oxalates); low heme iron in vegetarian diets"], ["Increased demands", "Pregnancy, lactation, rapid growth (infants, adolescents)"], ["Increased losses", "Hookworm infestation (commonest cause in India), malaria, menstrual blood loss, GI bleeding"], ["Malabsorption", "Coeliac disease, post-gastrectomy"], ], col_widths=[1.8, 4.2] ) add_title(doc, "Prevention (Park's Prophylaxis):", 3) for p in [ "Dietary diversification: iron-rich foods (dark leafy vegetables, meat, fish, pulses); Vitamin C to enhance absorption", "Fortification: Iron fortification of wheat flour, rice, salt (NIN India)", "Supplementation: Pregnant women — 100 mg elemental Fe + 500 mcg Folic acid daily × 180 days (IFA under PMMSY)", "Infants (6-59 months): Weekly iron syrup; School children (5-10 yr): Weekly IFA 45 mg + 400 mcg FA (WIFS)", "Adolescents: Weekly IFA 60 mg Fe + 500 mcg FA (WIFS Programme)", "Control of infections: Deworming (Albendazole 400 mg twice yearly); malaria control", "Early detection: Hb estimation at ANCs; iron treatment for diagnosed cases" ]: add_bullet(doc, p) # Q7 Plumbism add_title(doc, "Q7. Prevention and Control of Plumbism (Lead Poisoning)", 2, (0xC0,0x00,0x00)) add_title(doc, "Sources of Exposure:", 3) for s in ["Lead-based paints (walls, toys)", "Lead pipes (drinking water)", "Lead-soldered canned food", "Lead smelting/battery industries", "Contaminated soil near industrial areas"]: add_bullet(doc, s) add_title(doc, "Clinical Effects:", 3) for e in [ "Children: Encephalopathy, cognitive impairment, lowered IQ (no safe BLL threshold)", "Adults: Peripheral neuropathy, renal damage, hypertension, Burton's line (gum), colic, anaemia (basophilic stippling)", "BLL >10 mcg/dL = elevated (CDC); no safe level exists" ]: add_bullet(doc, e) add_title(doc, "Prevention and Control:", 3) add_table(doc, ["Level", "Measures"], [ ["Primary (Source control)", "Ban leaded petrol (done in India); legislation on lead-free paints (IS 419); replace lead pipes; industrial emission controls"], ["Secondary (Exposure reduction)", "BLL screening of workers/children; hand washing; PPE (respirators, gloves); wet cleaning methods in industries; no eating at workplace"], ["Tertiary (Treatment)", "Chelation therapy (CaNa2EDTA, DMSA-succimer) for symptomatic/high BLL; removal from exposure source"], ], col_widths=[1.8, 4.2] ) # Q8 Validity 2x2 add_title(doc, "Q8. Validity of a Screening Test — Components with 2×2 Table", 2, (0xC0,0x00,0x00)) add_table(doc, ["", "Disease + (Gold Std +)", "Disease - (Gold Std -)", "Total"], [ ["Test +", "a (True Positive)", "b (False Positive)", "a+b"], ["Test -", "c (False Negative)", "d (True Negative)", "c+d"], ["Total", "a+c", "b+d", "N"], ], col_widths=[1.0, 1.7, 1.7, 1.0] ) add_title(doc, "Components of Validity:", 3) add_table(doc, ["Measure", "Formula", "Interpretation"], [ ["Sensitivity", "a/(a+c) × 100", "Ability to detect true positives (PID); High sensitivity = fewer missed cases"], ["Specificity", "d/(b+d) × 100", "Ability to identify true negatives (NIH); High specificity = fewer false positives"], ["PPV (PVP)", "a/(a+b) × 100", "Probability that positive test = true positive; rises with prevalence"], ["NPV (PVN)", "d/(c+d) × 100", "Probability that negative test = true negative"], ], col_widths=[1.3, 1.7, 3.0] ) add_body(doc, "Trade-off: Increasing sensitivity reduces specificity (ROC curve). Optimal cut-off depends on consequences of false positives vs. false negatives.") # Q9 Sex Ratio add_title(doc, "Q9. Sex Ratio — Definition and Measures to Reduce Adverse Sex Ratio", 2, (0xC0,0x00,0x00)) add_body(doc, "Sex ratio = Number of females per 1,000 males (Indian Census definition).") for f in ["India 2011: Overall sex ratio = 943 females per 1,000 males; CSR (0-6 yrs) = 919 (alarming)", "Highest sex ratio: Kerala (1,084); Lowest: Haryana (879)"]: add_bullet(doc, f) add_title(doc, "Causes of Adverse Sex Ratio:", 3) for c in ["Sex-selective abortions (female foeticide) using ultrasound", "Female infanticide", "Neglect of girl child (nutrition, healthcare)", "Maternal mortality"]: add_bullet(doc, c) add_title(doc, "Measures:", 3) add_table(doc, ["Category", "Measures"], [ ["Legislative", "PC-PNDT Act 1994 (prohibits sex determination/sex-selective abortion; amended 2003 for pre-conception);\nMTP Act 1971 (restricts abortions)"], ["Programme", "Beti Bachao Beti Padhao (2015) — 100 lowest-CSR districts; multi-ministry;\nSukanya Samriddhi Yojana; Conditional cash transfer schemes (Ladli Laxmi, Kanya Sumangala)"], ["Social", "Community mobilization; women empowerment; girls' education; changing norms about dowry;\nASHA/ANM counselling against sex determination"], ], col_widths=[1.5, 4.5] ) # Q10 FGD add_title(doc, "Q10. Focus Group Discussion — Process, Advantages, Disadvantages", 2, (0xC0,0x00,0x00)) add_body(doc, "Definition: A qualitative research method in which 6-12 individuals discuss a specific topic in an " "informal, interactive setting guided by a moderator.") add_title(doc, "Process:", 3) for s in [ "Preparation: Define objective; develop semi-structured guide; select homogeneous participants (6-10); determine venue", "Setting: Comfortable, neutral, private venue; circular arrangement; audio/video recording with consent", "Introduction: Moderator introduces topic; establishes ground rules (no right/wrong answer; confidentiality)", "Discussion: Moderator uses guide; probes for depth; ensures all contribute; assistant notes non-verbal cues", "Closing: Summarize key points; thank participants", "Analysis: Thematic analysis of transcripts" ]: add_bullet(doc, s) add_title(doc, "Advantages:", 3) for a in ["Rich qualitative data in participants' own words", "Group interaction generates ideas not produced in individual interviews", "Quick and relatively inexpensive", "Useful for exploring attitudes, beliefs, health behaviours, pre-testing questionnaires"]: add_bullet(doc, a) add_title(doc, "Disadvantages:", 3) for d in ["Not representative — cannot generalize (small, purposive sample)", "Group dynamics may suppress minority views (bandwagon effect)", "Dominant participant can bias discussion", "Moderator skill-dependent", "Confidentiality difficult to maintain among participants", "Analysis is time-consuming and subjective"]: add_bullet(doc, d) page_break(doc) # SHORT ANSWERS add_title(doc, "SHORT ANSWERS (10×3 = 30 Marks)", 2, (0x2E,0x74,0xB5)) short_ans = [ ("Q11. Measures to Prevent Air Pollution", ["Source control: Cleaner fuels (CNG, LPG, EV); industrial emission standards; catalytic converters; chimney filters", "Legal: Air (Prevention and Control of Pollution) Act 1981; NAAQS; vehicle emission norms (BS-VI)", "Urban planning: Green belts, pollution-free zones, relocating industries", "Education/alternatives: Public transport, cycling; ban on crop stubble burning; LPG/solar in rural homes (Ujjwala Yojana)", "Monitoring: CAAQMS; AQI dissemination"]), ("Q12. Types of Rehabilitation", ["Definition: \"Combined and coordinated use of medical, social, educational and vocational measures for training/retraining the individual to the highest possible level of functional ability.\" (WHO)", "Medical rehabilitation: Physiotherapy, occupational therapy, prosthetics, speech therapy, surgery", "Vocational rehabilitation: Training/retraining for suitable employment; sheltered workshops", "Social rehabilitation: Resocialization, restoration of family/community roles, counselling, removing barriers", "Psychological rehabilitation: Managing mental sequelae; psychotherapy, CBT"]), ("Q13. Management of Expired/Discarded Medications", ["Segregation: Separate from active stock; identify and label all expired/discarded drugs", "Record keeping: Log all discarded medicines (name, quantity, expiry date)", "Return to manufacturer/supplier where possible", "Disposal: Yellow bag → CBWTF for incineration (preferred for cytotoxic, antibiotics)", "Encapsulation (remote areas): Mix with cement/lime in container, then bury", "Never flush down drain (environmental contamination); never crush and bury without treatment"]), ("Q14. Food Standards", ["Codex Alimentarius Commission (FAO/WHO): International food standards; established 1963", "India: Food Safety and Standards Act (FSSA) 2006 — replaced PFA Act 1954", "FSSAI: Statutory body under FSSA 2006; sets standards; regulates manufacture, storage, distribution, sale, import", "Standards include: Permissible levels of additives, pesticide residues, contaminants, microbiological criteria", "Mandatory labelling: Nutritional info, ingredients, date of manufacture/expiry, FSSAI licence number", "Quality marks: Agmark (agriculture), BIS/ISI (manufactured goods), Eco mark (environment-friendly)"]), ("Q15. PPE for Occupational Hazard Protection", ["Head injury: Hard hat/safety helmet", "Eye/face: Safety goggles, face shield", "Ear/noise: Earplugs, earmuffs (for noise >85 dB)", "Respiratory: Dust mask (N95), respirator, PAPR (for IDLH environments)", "Hand: Gloves (latex, nitrile, leather, cut-resistant)", "Foot: Safety shoes (steel-toed), chemical-resistant boots", "Body/skin: Coveralls, aprons (lead apron for radiation exposure)", "Fall protection: Safety harness, lanyards", "Note: PPE is the LAST resort in the hierarchy of controls (Elimination > Substitution > Engineering > Administrative > PPE)"]), ("Q16. Quarantine vs Isolation", ["Quarantine: Applied to CONTACTS (exposed, not yet ill); prevents spread from potentially incubating disease; duration = maximum incubation period", "Isolation: Applied to CASES (confirmed sick); prevents spread from infectious patients; until no longer infectious", "Example: COVID-19 contacts quarantined 14 days (quarantine) vs. active TB patient in negative pressure room (isolation)", "Modified quarantine: Selective restriction (e.g., HCW can work but not in ICU)", "Surveillance quarantine: Active monitoring only, no restriction"]), ("Q17. Crude Birth Rate — Formula and Disadvantages", ["Formula: CBR = (Number of live births in a year / Mid-year total population) × 1,000", "India's CBR (2020): ~19.5 per 1,000", "Disadvantage 1: Does not account for age-sex composition (proportion of women of reproductive age)", "Disadvantage 2: Cannot compare populations with different age structures", "Disadvantage 3: Only records live births (excludes stillbirths, foetal loss)", "Disadvantage 4: Affected by sex ratio and proportion married", "Better alternatives: General Fertility Rate, Age-Specific Fertility Rate, Total Fertility Rate"]), ("Q18. Net Reproduction Rate (NRR)", ["Definition: Average number of daughters born to a woman surviving through her entire reproductive lifespan (15-49 years), given current age-specific fertility AND mortality rates", "Formula: NRR = GRR × (proportion of female cohort surviving to mean age of childbearing)", "NRR = 1: Each generation replaces itself → stationary population", "NRR > 1: Population will grow; NRR < 1: Population will decline (below replacement)", "India's NRR: ~1.0 (near replacement, declining)", "Difference from GRR: GRR ignores mortality of mothers; NRR corrects for this"]), ("Q19. Audio-Visual Aids for Health Education", ["Visual only: Posters, charts, graphs, flannel boards, flip charts, blackboard, photographs, exhibits", "Audio only: Radio, tape recordings, public address system", "Audio-visual: Television, cinema/films, video, multimedia projectors", "Projected: Slides, filmstrips, OHP transparencies, LCD projector", "Non-projected: Flash cards, flannel graphs, puppet shows, demonstrations, models", "Print: Pamphlets, leaflets, booklets, health magazines", "Demonstration is most effective for skill teaching (I do-you watch → I do-you help → you do-I watch)"]), ("Q20. Measures of Dispersion", ["Range: Max - Min; simple but affected by outliers", "Mean Deviation: Average of absolute deviations from mean = Σ|x - x̄|/n", "Variance: Average of squared deviations from mean = Σ(x - x̄)²/n", "Standard Deviation (SD): √Variance; most commonly used; same unit as data", "Coefficient of Variation (CV): SD/Mean × 100%; compares dispersion between different units (%)", "Interquartile Range (IQR): Q3 - Q1; middle 50% of data; robust to outliers (used with median)", "Standard Error (SE): SD/√n; reliability of mean estimate; used in inferential statistics"]), ] for heading, bullets in short_ans: add_title(doc, heading, 3) for b in bullets: add_bullet(doc, b) doc.add_paragraph() page_break(doc) # MCQs add_title(doc, "MCQ ANSWERS WITH EXPLANATIONS (10×1 = 10 Marks)", 2, (0x2E,0x74,0xB5)) add_table(doc, ["Q.No", "Answer", "Explanation"], [ ["21i", "B — Stomach poison", "Pyrethrum (from Chrysanthemum flowers) acts as a stomach/contact poison affecting the insect nervous system; classified as stomach poison in standard PSM MCQs"], ["21ii", "B — Red bag", "Urine bags and catheters are contaminated recyclable plastic/rubber waste → Red bag (BMW Rules 2016)"], ["21iii", "B — Diet which contains variety of foods to safeguard from deficiencies", "Prudent diet = balanced variety preventing nutritional deficiencies while limiting excess saturated fat, sugar, salt"], ["21iv", "C — Secondary prevention", "Monitoring BP detects established hypertension early to prevent complications = Secondary prevention. (Primary = preventing HTN; Primordial = preventing risk factors)"], ["21v", "A — Sugarcane fibres", "Bagassosis = occupational hypersensitivity pneumonitis from inhalation of mouldy bagasse (sugarcane fibre residue after juice extraction)"], ["22i", "A — Ecological studies", "Ecological (correlational) studies use group/population-level data as the unit of analysis, NOT the individual"], ["22ii", "B — Regulatory", "Legislation/law (e.g., Child Marriage Restraint Act) = Regulatory approach to health; uses state authority to mandate/prohibit behaviour"], ["22iii", "C — 3", "SDG 3: \"Ensure healthy lives and promote well-being for all at all ages\" — the dedicated health goal among 17 SDGs"], ["22iv", "C — Stratified random sampling", "Divides population into strata (here: primary/middle/high school levels) then randomly samples from each — ensures proportional representation from all levels"], ["22v", "D — Difference between the population between two census", "Demographic gap = intercensal population increase = difference in total population between two consecutive census counts"], ], col_widths=[0.6, 2.0, 3.4] ) # Save out_path = "/tmp/workspace/community-medicine/Community_Medicine_Solved_Paper_Park.docx" doc.save(out_path) print(f"Saved: {out_path}") PYEOF echo "Script written successfully"
cd /tmp/workspace/community-medicine && python3 create_doc.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/community-medicine/Community_Medicine_Solved_Paper_Park.docx') count = 0 for p in doc.paragraphs: if p.text.strip(): count += 1 print(f'Total non-empty paragraphs: {count}') # check tables print(f'Total tables: {len(doc.tables)}') # file size import os size = os.path.getsize('/tmp/workspace/community-medicine/Community_Medicine_Solved_Paper_Park.docx') print(f'File size: {size} bytes ({size//1024} KB)') "
Community Medicine Solved Paper Park
Word Document · DOCX
| Section | Content |
|---|---|
| Cover Page | Title, reference to Park's, both exam papers |
| Paper 1 - Q1 | PHC definition, 8 elements, rural Odisha infrastructure table |
| Paper 1 - Q1 OR | NVBDCP — all 5 diseases (Malaria, Kala-azar, Dengue, JE, Filariasis) |
| Paper 1 - Q2 | PEP Rabies (WHO categories table + schedules), Disaster Cycle (4-phase table), GOBI + GOBI-FFF, Syndromic approach to STD (syndrome-treatment table) |
| Paper 1 - Q3 | MDA, NITI Aayog, KMC, LLIN, Age Pyramid (all 5 VSQ) |
| Paper 2 - Long Essays | Health Indicators (classification table), Endemic/Epidemic/Pandemic (definitions + 10 steps investigation) |
| Paper 2 - Short Essays | Bangalore composting, BMW colour-coded table, Iron deficiency anaemia, Plumbism, Validity 2x2 table, Sex ratio (PC-PNDT, BBBP), FGD |
| Short Answers Q11-Q20 | Air pollution, Rehabilitation, Expired drugs, Food standards, PPE table, Quarantine vs Isolation, CBR, NRR, AV aids, Measures of dispersion |
| MCQs | All 10 MCQs with correct answers and Park's-based explanations |
With ref to park
| Level | Target | Phase of Disease | Actions |
|---|---|---|---|
| Primordial | General population | Before risk factors established | Social and environmental conditions |
| Primary | Susceptible host | Pre-pathogenesis | Health promotion + specific protection |
| Secondary | Early disease | Early pathogenesis | Early diagnosis + prompt treatment |
| Tertiary | Advanced disease | Late pathogenesis | Disability limitation + rehabilitation |
| Type | Description | Example |
|---|---|---|
| Vaccine product-related | Caused by inherent properties of vaccine | Febrile seizure after measles vaccine |
| Vaccine quality defect | Due to manufacturing defect | Contaminated batch causing reactions |
| Immunization error-related (programme error) | Due to error in preparation, handling, or administration | Abscess from non-sterile technique; BCG lymphadenitis from wrong injection site |
| Immunization anxiety-related | Psychological fear of injection | Vasovagal syncope (fainting) post-injection |
| Coincidental | Not caused by vaccine; would have occurred anyway | Febrile convulsion due to concurrent infection |
| Type | Data type | Use |
|---|---|---|
| Bar diagram (simple, multiple, component/100%) | Discrete/categorical | Compare groups; most versatile |
| Histogram | Continuous data with class intervals | Frequency distribution; bars touch each other |
| Frequency polygon | Continuous | Comparing two frequency distributions; line connects midpoints |
| Line diagram (graph) | Time series / continuous | Trends over time (e.g., disease incidence over years) |
| Pie chart | Categorical (proportions) | Parts of a whole; limited to <6 categories |
| Scatter diagram | Bivariate data (2 continuous variables) | Relationship between two variables; correlation |
| Pictogram/Pictograph | Categorical | For lay/public audience; easy visual impact |
| Map (spot map, area map) | Geographic/spatial | Disease distribution by place |
| Box-and-whisker plot | Continuous | Distribution, spread, outliers (median, IQR) |
| Ogive (cumulative frequency curve) | Continuous | Cumulative distribution; find median, percentiles |
| Disease | Occupation/Hazard | Agent |
|---|---|---|
| Silicosis | Miners, stone cutters, quarry workers | Crystalline silica dust |
| Asbestosis + mesothelioma | Insulation, shipyard, asbestos mining workers | Asbestos fibres |
| Byssinosis | Cotton textile workers | Cotton/hemp/flax dust |
| Coal worker's pneumoconiosis | Coal miners | Coal dust |
| Bagassosis | Sugar cane factory workers | Bagasse (mouldy) |
| Occupational asthma | Bakers, painters, healthcare workers | Multiple allergens |
| NIHL | Factory workers, miners, musicians | Noise >85 dB |
| Decompression sickness | Deep sea divers, tunnel workers | High pressure N2 |
| Plumbism | Battery factories, painters, smelters | Lead |
| Minamata disease | Chemical plant workers (organic mercury exposure) | Mercury |
| Occupational dermatitis | Healthcare workers, cement workers, hairdressers | Chemical irritants/allergens |
| Leukaemia/aplastic anaemia | Radiologists, radiation workers | Ionizing radiation / Benzene |
| Brucellosis | Farmers, veterinarians, abattoir workers | Brucella spp. |
| Anthrax | Wool sorters, tannery workers | Bacillus anthracis |
| Disease | R0 | Herd Immunity Threshold |
|---|---|---|
| Measles | 12-18 | ~92-95% |
| Polio | 5-7 | ~80-86% |
| Smallpox | 5-7 | ~80-85% |
| COVID-19 | 2-4 (varies) | ~50-75% |
| Influenza | 2-3 | ~50-67% |
| Feature | Disability | Handicap |
|---|---|---|
| Definition (WHO) | "Any restriction or lack of ability to perform an activity in the manner or within the range considered normal for a human being" | "A disadvantage for a given individual resulting from an impairment or disability that limits or prevents the fulfilment of a role that is normal for that individual" |
| Level | At the level of the PERSON | At the level of SOCIETY |
| Nature | Functional limitation (what the person CAN'T DO) | Social disadvantage (how society restricts the person) |
| Sequence | Follows impairment | Follows disability (impairment → disability → handicap) |
| Example | A person who lost a leg has difficulty walking (disability) | The same person cannot get employment because workplace has no ramp (handicap) |
| WHO ICIDH sequence | Impairment → Disability → Handicap | (Final level in the sequence) |
| Modern term (ICF 2001) | "Activity limitation" | "Participation restriction" |
| Feature | Food Fortification | Food Adulteration |
|---|---|---|
| Definition | Addition of one or more essential nutrients to a food, whether or not it is normally contained in the food, for the purpose of preventing or correcting a demonstrated deficiency (Codex Alimentarius/Park) | Addition of any substance to food which makes it impure, injurious, inferior, or misbranded; it also includes removal of any constituent from food |
| Intent | Beneficial - to improve nutritional quality and public health | Harmful/fraudulent - to increase profit, extend shelf life, improve appearance deceptively |
| Legal status | Mandatory or voluntary; regulated by law (FSSAI in India) | Illegal; punishable under FSSA 2006 and PCA Act |
| Examples | Iodized salt (iodine + salt), Vitamin A & D fortified milk, Iron + folic acid in atta (flour), Vitamin C in fruit drinks | Adding water to milk, starch to chilli powder, brick dust to red chilli, chalk to flour, pesticide residues, argemone oil in mustard oil |
| Health impact | Positive: Prevents deficiency diseases (IDD, night blindness, anaemia) | Negative: Can cause acute poisoning, cancer, organ damage |
| Regulation in India | FSSAI mandates double fortified salt (DFS), fortified rice/wheat flour | Prevention of Food Adulteration Act (PFA) 1954 (now replaced by FSSA 2006) |
| Feature | Screening Test | Diagnostic Test |
|---|---|---|
| Purpose | To detect disease in apparently healthy/asymptomatic individuals (presumptive identification) | To confirm disease in symptomatic patients or those with positive screening tests |
| Population | Applied to large, apparently healthy populations | Applied to individuals who have symptoms or positive screening results |
| Nature | Simple, quick, inexpensive, acceptable, non-invasive | More complex, detailed, sometimes invasive, may be expensive |
| Accuracy | High sensitivity (catches most positives); some false positives acceptable | High specificity + sensitivity; high PPV required |
| Cut-off | Set to maximize sensitivity (may lower specificity) | Set to maximize accuracy |
| Result | Gives "positive/negative" result requiring further confirmation | Gives definitive diagnosis |
| Examples | PAP smear (cervical cancer), Mantoux test, blood sugar (random), mammography, VDRL | Colposcopy + biopsy, sputum culture, OGTT (fasting + 2h post-load), histopathology |
| Who performs | Community/paramedical level | Clinician/specialist level |
| Criteria for good screen (Wilson & Jungner) | Disease important, test acceptable, treatment available, natural history understood, cost-benefit favourable | N/A |
| Feature | Monitoring | Surveillance |
|---|---|---|
| Definition (Park) | "Performance and analysis of routine measurements aimed at detecting changes in the environment or health status of population" | "Continuous analysis, interpretation and feedback of systematically collected data" for disease control and public health action |
| Scope | More specific; measures a defined variable or parameter | Broader; includes analysis, interpretation, feedback, AND action |
| Nature | More intermittent/episodic; uses standardized methods; can be automated | Continuous and ongoing; requires professional epidemiological judgement |
| Output | Raw data on changes; alerts when threshold exceeded | Actionable intelligence leading to recommendations for disease control |
| Examples | Monitoring water quality (daily chlorine residual); growth monitoring; AQI monitoring | Epidemiological surveillance of TB, HIV, dengue; Integrated Disease Surveillance Programme (IDSP) |
| Relationship | Monitoring is a component/tool within surveillance | Surveillance is the broader concept that encompasses monitoring + analysis + action |
| Action | Data collected; corrective action may follow | Action (investigation, control measures) is an integral part of surveillance |
| Feature | Probability Sampling | Non-Probability Sampling |
|---|---|---|
| Definition | Every unit in the population has a known, non-zero probability of being selected | Selection is based on subjective judgement; probability of selection unknown |
| Basis of selection | Random (chance) | Non-random (convenience, judgement, quota) |
| Representativeness | Representative; can generalize findings to population | May not be representative; limited generalizability |
| Sampling error | Can be calculated statistically | Cannot be estimated mathematically |
| Bias | Less prone to selection bias | More prone to selection bias |
| Cost/Time | More expensive, time-consuming (requires sampling frame) | Cheaper, faster; no sampling frame needed |
| Types | Simple random, Systematic random, Stratified random, Cluster, Multi-stage | Convenience, Purposive/judgement, Quota, Snowball, Volunteer |
| Use | Epidemiological surveys, national health surveys, clinical trials | Qualitative research, pilot studies, focus groups, preliminary investigations |
| Example | NFHS (National Family Health Survey) uses multi-stage stratified random sampling | Focus group of diabetes patients (purposive); online survey (convenience) |
| Statistical validity | Valid for inferential statistics and hypothesis testing | Not valid for inferential statistics; exploratory only |
Create a pdf with all these content in a story teddy way with tables.and diagrams from park if possible
Create a pdf with all these content in a strctucted way with tables.and diagrams from park if possible
ls -la /tmp/workspace/community-medicine/
~/community-medicine/create_pdf.py
#!/usr/bin/env python3
"""
Community Medicine MBBS 3rd Prof 2023 — Solved Paper PDF
Reference: Park's Textbook of Preventive and Social Medicine
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
PageBreak, HRFlowable, KeepTogether
)
from reportlab.platypus.flowables import Flowable
from reportlab.graphics.shapes import Drawing, Rect, String, Line, Circle, Polygon, Arrow
from reportlab.graphics import renderPDF
from reportlab.graphics.charts.barcharts import VerticalBarChart
from reportlab.pdfgen import canvas
import textwrap
# ── Colours ──────────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1F4E79")
MID_BLUE = colors.HexColor("#2E74B5")
LIGHT_BLUE = colors.HexColor("#D6E4F0")
ACCENT_RED = colors.HexColor("#C00000")
ACCENT_GRN = colors.HexColor("#375623")
LIGHT_GRN = colors.HexColor("#E2EFDA")
LIGHT_RED = colors.HexColor("#FCE4D6")
LIGHT_GREY = colors.HexColor("#F2F2F2")
TABLE_HEAD = DARK_BLUE
WHITE = colors.white
BLACK = colors.black
W, H = A4
# ── Styles ────────────────────────────────────────────────────────────────────
base_styles = getSampleStyleSheet()
def make_style(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=base_styles[parent], **kw)
return s
sTitle = make_style("sTitle", fontSize=24, textColor=DARK_BLUE, alignment=TA_CENTER,
fontName="Helvetica-Bold", spaceAfter=6, leading=28)
sSubT = make_style("sSubT", fontSize=13, textColor=MID_BLUE, alignment=TA_CENTER,
fontName="Helvetica", spaceAfter=4, leading=16)
sCover = make_style("sCover", fontSize=11, textColor=colors.HexColor("#404040"),
alignment=TA_CENTER, spaceAfter=3, leading=14)
sH1 = make_style("sH1", fontSize=14, textColor=WHITE, fontName="Helvetica-Bold",
leading=18, spaceAfter=2, spaceBefore=12)
sH2 = make_style("sH2", fontSize=12, textColor=DARK_BLUE, fontName="Helvetica-Bold",
leading=16, spaceAfter=2, spaceBefore=10)
sH3 = make_style("sH3", fontSize=11, textColor=ACCENT_RED, fontName="Helvetica-Bold",
leading=14, spaceAfter=1, spaceBefore=6)
sH4 = make_style("sH4", fontSize=10, textColor=MID_BLUE, fontName="Helvetica-Bold",
leading=13, spaceAfter=1, spaceBefore=4)
sBody = make_style("sBody", fontSize=9.5, leading=13, spaceAfter=2,
alignment=TA_JUSTIFY)
sBullet = make_style("sBullet", fontSize=9.5, leading=13, leftIndent=14,
firstLineIndent=-10, spaceAfter=1)
sNote = make_style("sNote", fontSize=8.5, textColor=colors.HexColor("#555555"),
leading=11, leftIndent=10, italic=1, spaceAfter=2)
sCell = make_style("sCell", fontSize=8.5, leading=11, spaceAfter=0)
sCellB = make_style("sCellB", fontSize=8.5, leading=11, fontName="Helvetica-Bold",
textColor=WHITE, spaceAfter=0, alignment=TA_CENTER)
sAns = make_style("sAns", fontSize=10, textColor=ACCENT_GRN, fontName="Helvetica-Bold",
leading=14, spaceAfter=1)
# ── Header / Footer ──────────────────────────────────────────────────────────
def on_page(canvas_obj, doc):
canvas_obj.saveState()
# Header bar
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(1.5*cm, H - 1.5*cm, W - 3*cm, 0.55*cm, fill=1, stroke=0)
canvas_obj.setFillColor(WHITE)
canvas_obj.setFont("Helvetica-Bold", 8)
canvas_obj.drawString(1.7*cm, H - 1.1*cm, "COMMUNITY MEDICINE — MBBS 3rd Prof 2023")
canvas_obj.setFont("Helvetica", 8)
canvas_obj.drawRightString(W - 1.7*cm, H - 1.1*cm, "Ref: Park's PSM")
# Footer
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(1.5*cm, 1.0*cm, W - 3*cm, 0.4*cm, fill=1, stroke=0)
canvas_obj.setFillColor(WHITE)
canvas_obj.setFont("Helvetica", 7.5)
canvas_obj.drawCentredString(W/2, 1.15*cm, f"Page {doc.page}")
canvas_obj.restoreState()
# ── Heading banner ────────────────────────────────────────────────────────────
class BannerH1(Flowable):
def __init__(self, text, color=DARK_BLUE, width=None):
super().__init__()
self.text = text
self.color = color
self.width = width or (W - 3*cm)
self.height = 0.65*cm
def draw(self):
self.canv.setFillColor(self.color)
self.canv.rect(0, 0, self.width, self.height, fill=1, stroke=0)
self.canv.setFillColor(WHITE)
self.canv.setFont("Helvetica-Bold", 11)
self.canv.drawString(0.3*cm, 0.18*cm, self.text)
def wrap(self, w, h):
return self.width, self.height + 4
class BannerH2(Flowable):
def __init__(self, text, color=MID_BLUE, width=None):
super().__init__()
self.text = text
self.color = color
self.width = width or (W - 3*cm)
self.height = 0.55*cm
def draw(self):
self.canv.setFillColor(self.color)
self.canv.rect(0, 0, self.width, self.height, fill=1, stroke=0)
self.canv.setFillColor(WHITE)
self.canv.setFont("Helvetica-Bold", 10)
self.canv.drawString(0.3*cm, 0.16*cm, self.text)
def wrap(self, w, h):
return self.width, self.height + 4
# ── Table helper ──────────────────────────────────────────────────────────────
def make_table(headers, rows, col_widths=None, zebra=True, head_color=TABLE_HEAD):
available = W - 3*cm
if col_widths is None:
n = len(headers)
col_widths = [available/n]*n
# build data
data = [[Paragraph(f"<b>{h}</b>", sCellB) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), sCell) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0,0), (-1,0), head_color),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ROWBACKGROUNDS", (0,1), (-1,-1),
[LIGHT_BLUE if zebra else WHITE, WHITE] if zebra else [WHITE]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING",(0,0),(-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING",(0,0), (-1,-1), 4),
]
t.setStyle(TableStyle(style))
return t
# ── Bullet helper ─────────────────────────────────────────────────────────────
def bullets(items, indent=0):
out = []
for item in items:
out.append(Paragraph(f"<bullet>•</bullet> {item}", sBullet))
return out
def numbered(items):
return [Paragraph(f"<b>{i+1}.</b> {item}", sBullet) for i, item in enumerate(items)]
def sp(n=1):
return Spacer(1, n*0.18*cm)
# ── Diagram: Natural History of Disease ──────────────────────────────────────
def diagram_natural_history():
d = Drawing(480, 150)
# Timeline arrow
d.add(Line(10, 75, 470, 75, strokeColor=DARK_BLUE, strokeWidth=2))
d.add(Polygon([460,80, 470,75, 460,70], fillColor=DARK_BLUE, strokeColor=DARK_BLUE))
# Pre-pathogenesis box
d.add(Rect(10, 85, 180, 50, fillColor=LIGHT_BLUE, strokeColor=MID_BLUE, strokeWidth=1.2))
d.add(String(100, 118, "PRE-PATHOGENESIS", textAnchor='middle', fontSize=8, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
d.add(String(100, 105, "Agent–Host–Environment", textAnchor='middle', fontSize=7.5, fillColor=BLACK))
d.add(String(100, 94, "Interaction (No disease yet)", textAnchor='middle', fontSize=7.5, fillColor=BLACK))
# Pathogenesis box
d.add(Rect(200, 85, 260, 50, fillColor=LIGHT_RED, strokeColor=ACCENT_RED, strokeWidth=1.2))
d.add(String(330, 118, "PATHOGENESIS PERIOD", textAnchor='middle', fontSize=8, fontName='Helvetica-Bold', fillColor=ACCENT_RED))
d.add(String(330, 105, "Early → Discernible → Advanced", textAnchor='middle', fontSize=7.5, fillColor=BLACK))
d.add(String(330, 94, "Subclinical → Clinical Disease", textAnchor='middle', fontSize=7.5, fillColor=BLACK))
# Stimulus / Exposure marker
d.add(Line(195, 60, 195, 90, strokeColor=ACCENT_RED, strokeWidth=1.2, strokeDashArray=[3,2]))
d.add(String(195, 55, "Stimulus", textAnchor='middle', fontSize=7.5, fillColor=ACCENT_RED))
# Outcomes
for x, txt, col in [(260,55,"Recovery",ACCENT_GRN),(340,55,"Disability",MID_BLUE),(420,55,"Death",ACCENT_RED)]:
d.add(String(x, 55, txt, textAnchor='middle', fontSize=7.5, fillColor=col, fontName='Helvetica-Bold'))
# Level labels
for x, lbl in [(100,30),(250,30),(340,30),(430,30)]:
pass
# Levels of prevention labels below
d.add(String(60, 18, "Primordial/Primary Prevention", textAnchor='middle', fontSize=7, fillColor=MID_BLUE))
d.add(Line(10, 28, 200, 28, strokeColor=MID_BLUE, strokeWidth=0.8))
d.add(String(290, 18, "Secondary Prevention", textAnchor='middle', fontSize=7, fillColor=ACCENT_GRN))
d.add(Line(200, 28, 380, 28, strokeColor=ACCENT_GRN, strokeWidth=0.8))
d.add(String(430, 18, "Tertiary", textAnchor='middle', fontSize=7, fillColor=ACCENT_RED))
d.add(Line(380, 28, 470, 28, strokeColor=ACCENT_RED, strokeWidth=0.8))
return d
# ── Diagram: Iceberg Concept ─────────────────────────────────────────────────
def diagram_iceberg():
d = Drawing(350, 160)
# Water line
d.add(Rect(0, 70, 350, 4, fillColor=MID_BLUE, strokeColor=MID_BLUE))
d.add(String(300, 76, "Water Line", fontSize=8, fillColor=MID_BLUE))
# Tip (visible)
tip_pts = [175,150, 225,150, 250,74, 100,74]
d.add(Polygon(tip_pts, fillColor=colors.HexColor("#BDD7EE"), strokeColor=DARK_BLUE, strokeWidth=1.2))
d.add(String(175, 115, "CLINICAL CASES", textAnchor='middle', fontSize=8.5, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
d.add(String(175, 100, "(VISIBLE)", textAnchor='middle', fontSize=7.5, fillColor=DARK_BLUE))
# Submerged part
sub_pts = [100, 74, 250, 74, 300, 10, 50, 10]
d.add(Polygon(sub_pts, fillColor=colors.HexColor("#4472C4"), strokeColor=DARK_BLUE, strokeWidth=1.2))
d.add(String(175, 55, "SUBCLINICAL / UNDETECTED CASES", textAnchor='middle', fontSize=8, fontName='Helvetica-Bold', fillColor=WHITE))
d.add(String(175, 40, "(THE BULK — BELOW WATERLINE)", textAnchor='middle', fontSize=7.5, fillColor=LIGHT_BLUE))
d.add(String(175, 25, "Screening reveals these hidden cases", textAnchor='middle', fontSize=7, fillColor=LIGHT_BLUE))
return d
# ── Diagram: Disaster Cycle ───────────────────────────────────────────────────
def diagram_disaster_cycle():
d = Drawing(320, 200)
cx, cy, r = 160, 100, 70
import math
phases = [("MITIGATION\n/PREVENTION", 90),
("PREPAREDNESS", 0),
("RESPONSE", 270),
("RECOVERY", 180)]
phase_colors = [ACCENT_GRN, MID_BLUE, ACCENT_RED, colors.HexColor("#7030A0")]
# Draw circle
d.add(Circle(cx, cy, r+5, fillColor=LIGHT_GREY, strokeColor=DARK_BLUE, strokeWidth=1.5))
d.add(String(cx, cy-5, "DISASTER", textAnchor='middle', fontSize=9, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
d.add(String(cx, cy-17, "CYCLE", textAnchor='middle', fontSize=9, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
for (label, angle), col in zip(phases, phase_colors):
rad = math.radians(angle)
bx = cx + (r+38)*math.cos(rad)
by = cy + (r+38)*math.sin(rad)
lx = cx + (r+15)*math.cos(rad)
ly = cy + (r+15)*math.sin(rad)
d.add(Circle(lx, ly, 10, fillColor=col, strokeColor=WHITE, strokeWidth=1))
lines = label.split('\n')
for i, ln in enumerate(lines):
d.add(String(bx, by + (len(lines)-1-i)*10, ln,
textAnchor='middle', fontSize=7.5, fontName='Helvetica-Bold', fillColor=col))
# arrow
ax = cx + (r+3)*math.cos(rad)
ay = cy + (r+3)*math.sin(rad)
# Circular arrows (simple arcs indicated by 4 lines)
for angle, col in [(45, ACCENT_GRN),(315,MID_BLUE),(225,ACCENT_RED),(135,colors.HexColor("#7030A0"))]:
rad = math.radians(angle)
x1 = cx + r*math.cos(rad); y1 = cy + r*math.sin(rad)
d.add(String(x1, y1, "→", textAnchor='middle', fontSize=10, fillColor=col))
return d
# ── Diagram: Herd Immunity ─────────────────────────────────────────────────
def diagram_herd_immunity():
d = Drawing(460, 130)
# Two scenarios side by side
# Left: No herd immunity
d.add(String(95, 118, "No Herd Immunity", textAnchor='middle', fontSize=8.5, fontName='Helvetica-Bold', fillColor=ACCENT_RED))
positions_left = [(20,90),(50,90),(80,90),(110,90),(140,90),(170,90),
(20,60),(50,60),(80,60),(110,60),(140,60),(170,60)]
immune_left = []
for i,(x,y) in enumerate(positions_left):
col = ACCENT_RED # all susceptible
d.add(Circle(x+10, y, 10, fillColor=col, strokeColor=WHITE, strokeWidth=1))
d.add(String(95, 30, "All susceptible → epidemic", textAnchor='middle', fontSize=7.5, fillColor=ACCENT_RED))
# Right: High herd immunity
d.add(String(340, 118, "High Herd Immunity", textAnchor='middle', fontSize=8.5, fontName='Helvetica-Bold', fillColor=ACCENT_GRN))
positions_right = [(245,90),(275,90),(305,90),(335,90),(365,90),(395,90),(425,90),
(245,60),(275,60),(305,60),(335,60),(365,60),(395,60),(425,60)]
immune_idx = [0,1,2,4,5,6,7,8,9,11,12,13]
for i,(x,y) in enumerate(positions_right):
col = MID_BLUE if i in immune_idx else ACCENT_RED
d.add(Circle(x+10, y, 10, fillColor=col, strokeColor=WHITE, strokeWidth=1))
d.add(String(340, 30, "Most immune → chain broken", textAnchor='middle', fontSize=7.5, fillColor=ACCENT_GRN))
# Legend
d.add(Circle(15, 15, 6, fillColor=ACCENT_RED, strokeColor=WHITE))
d.add(String(25, 11, "Susceptible", fontSize=7))
d.add(Circle(100, 15, 6, fillColor=MID_BLUE, strokeColor=WHITE))
d.add(String(110, 11, "Immune", fontSize=7))
# Divider
d.add(Line(220, 0, 220, 130, strokeColor=LIGHT_GREY, strokeWidth=1.5))
return d
# ── Diagram: Levels of Prevention pyramid ─────────────────────────────────────
def diagram_prevention_levels():
d = Drawing(380, 200)
levels = [
("PRIMORDIAL", "Prevent risk factors from emerging", colors.HexColor("#548235"), 340, 35),
("PRIMARY", "Health Promo + Specific Protection", MID_BLUE, 270, 45),
("SECONDARY", "EDPT + Disability Limitation", colors.HexColor("#ED7D31"), 200, 45),
("TERTIARY", "Disability Limitation + Rehab", ACCENT_RED, 130, 45),
]
base_y = 25
for name, desc, col, base_w, ht in reversed(levels):
x_start = (380 - base_w) / 2
d.add(Rect(x_start, base_y, base_w, ht-3, fillColor=col, strokeColor=WHITE, strokeWidth=1.5))
d.add(String(190, base_y + ht//2 - 3, name, textAnchor='middle', fontSize=9,
fontName='Helvetica-Bold', fillColor=WHITE))
base_y += ht
# Labels on right
base_y2 = 25
for name, desc, col, base_w, ht in reversed(levels):
d.add(String(355, base_y2 + ht//2 - 3, desc, fontSize=6.5, fillColor=col))
base_y2 += ht
d.add(String(190, 185, "LEVELS OF PREVENTION (Leavell & Clark)",
textAnchor='middle', fontSize=8, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
return d
# ── Diagram: Chlorination Breakpoint ─────────────────────────────────────────
def diagram_chlorination():
d = Drawing(360, 160)
# Axes
d.add(Line(40, 20, 40, 145, strokeColor=BLACK, strokeWidth=1.5))
d.add(Line(40, 20, 340, 20, strokeColor=BLACK, strokeWidth=1.5))
d.add(String(5, 80, "Residual\nCl", fontSize=7.5, fillColor=DARK_BLUE))
d.add(String(175, 8, "Chlorine Dose Added →", textAnchor='middle', fontSize=7.5, fillColor=DARK_BLUE))
# Curve points (approximated breakpoint curve)
pts = [40,20, 80,65, 110,90, 150,70, 170,45, 195,30, 220,50, 260,90, 300,125, 340,145]
for i in range(0, len(pts)-2, 2):
d.add(Line(pts[i], pts[i+1], pts[i+2], pts[i+3], strokeColor=MID_BLUE, strokeWidth=2))
# Breakpoint marker
d.add(Line(195, 20, 195, 50, strokeColor=ACCENT_RED, strokeWidth=1.2, strokeDashArray=[3,2]))
d.add(String(195, 13, "Breakpoint", textAnchor='middle', fontSize=7, fillColor=ACCENT_RED))
# Labels
d.add(String(120, 100, "Chloramines\nformed", textAnchor='middle', fontSize=7, fillColor=colors.HexColor("#7030A0")))
d.add(String(270, 105, "Free Residual\nChlorine", textAnchor='middle', fontSize=7, fillColor=ACCENT_GRN, fontName='Helvetica-Bold'))
d.add(String(190, 145, "BREAKPOINT CHLORINATION CURVE", textAnchor='middle',
fontSize=8, fontName='Helvetica-Bold', fillColor=DARK_BLUE))
return d
# ═══════════════════════════════════════════════════════════════════════════════
# BUILD CONTENT
# ═══════════════════════════════════════════════════════════════════════════════
story = []
# ── COVER ──────────────────────────────────────────────────────────────────────
story.append(Spacer(1, 2.5*cm))
story.append(Paragraph("COMMUNITY MEDICINE", sTitle))
story.append(Paragraph("MBBS 3<sup>rd</sup> Prof. 2023 — Complete Solved Paper", sSubT))
story.append(Spacer(1, 0.4*cm))
story.append(HRFlowable(width="80%", thickness=2, color=MID_BLUE, spaceAfter=8))
story.append(Paragraph("Reference: Park's Textbook of Preventive and Social Medicine", sCover))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Community Medicine including Humanities — Paper A (Feb. 2023)", sCover))
story.append(Spacer(1, 2*cm))
# Info box
info_data = [
[Paragraph("<b>Exam</b>", sCellB), Paragraph("MBBS 3rd Prof. 2023", sCell)],
[Paragraph("<b>Paper</b>", sCellB), Paragraph("Community Medicine including Humanities — Paper A", sCell)],
[Paragraph("<b>Marks</b>", sCellB), Paragraph("100 | Time: 3 Hours", sCell)],
[Paragraph("<b>Reference</b>", sCellB), Paragraph("Park's Textbook of Preventive and Social Medicine (PSM)", sCell)],
]
t = Table(info_data, colWidths=[4*cm, 11.7*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,-1), DARK_BLUE),
("BACKGROUND", (1,0), (1,-1), LIGHT_BLUE),
("TEXTCOLOR", (0,0), (0,-1), WHITE),
("FONTNAME", (0,0), (-1,-1), "Helvetica"),
("FONTSIZE", (0,0), (-1,-1), 9.5),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#999999")),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
story.append(t)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# PART — I
# ══════════════════════════════════════════════════════════════════════════════
story.append(BannerH1("PART — I"))
story.append(sp(2))
# ─────────────────────────────────────────────────────────────────────────────
# Q1: Natural History of Disease + Levels of Prevention
# ─────────────────────────────────────────────────────────────────────────────
story.append(BannerH2("Q1. Natural History of Disease | Levels of Prevention | Modes of Intervention [2+3+3+2=10]", MID_BLUE))
story.append(sp())
story.append(Paragraph("<b>Natural History of Disease (Park)</b>", sH2))
story.append(Paragraph(
"The natural history of disease is the course a disease takes in an individual over time — "
"from its inception to its resolution — <b>in the absence of treatment or intervention</b>. "
"It consists of two main periods:", sBody))
story.append(Paragraph("<b>1. Pre-pathogenesis Period</b> — Before any pathological change occurs in the host", sH3))
story += bullets([
"Interaction among <b>agent, host, and environment</b> (epidemiological triad)",
"Disease determinants/risk factors present in environment, no tissue changes yet",
"Interventions here = <b>Primordial and Primary prevention</b>"
])
story.append(Paragraph("<b>2. Pathogenesis Period</b> — Disease has begun in the host", sH3))
story += bullets([
"Early pathogenesis → subclinical changes (below iceberg waterline)",
"Discernible early disease → first detectable signs and symptoms",
"Advanced disease → severe clinical manifestations",
"Outcome: Recovery / Disability / Death"
])
story.append(sp())
story.append(Paragraph("<b>Fig 1: Natural History of Disease — Timeline Diagram</b>", sNote))
story.append(diagram_natural_history())
story.append(sp())
story.append(Paragraph("<b>Fig 2: Iceberg Concept (Park)</b> — Most disease is submerged (subclinical)", sNote))
story.append(diagram_iceberg())
story.append(sp(2))
# Levels of Prevention Table
story.append(Paragraph("<b>Levels of Prevention (Leavell & Clark, 1965)</b>", sH2))
story.append(make_table(
["Level", "Phase", "Target", "Intervention", "Example"],
[
["Primordial", "Before risk factors", "General population", "Social & environmental change; policy", "National food policy; ban on trans-fats; road safety laws"],
["Primary", "Pre-pathogenesis", "Susceptible host", "Health promotion + Specific protection", "BCG vaccine; fluoridation; IFA supplementation; mosquito nets"],
["Secondary", "Early pathogenesis", "Early disease", "EDPT + Disability limitation", "PAP smear; sputum smear for TB; blood sugar screening"],
["Tertiary", "Advanced disease", "Disability/rehab", "Disability limitation + Rehabilitation", "Prosthesis + vocational retraining; speech therapy post-stroke"],
],
col_widths=[2.2*cm, 3.0*cm, 2.8*cm, 4.0*cm, 4.2*cm]
))
story.append(sp())
story.append(diagram_prevention_levels())
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# Q2: Short Notes
# ─────────────────────────────────────────────────────────────────────────────
story.append(BannerH2("Q2. Short Notes [5×6=30]", MID_BLUE))
story.append(sp())
# (a) Prudent Diet
story.append(KeepTogether([
Paragraph("<b>(a) Prudent Diet</b>", sH3),
Paragraph(
"<b>Definition (Park):</b> A prudent diet provides <b>variety of foods</b> to safeguard against "
"deficiencies while preventing excess of any nutrient. It is the dietary pattern associated with "
"lowest risk of chronic non-communicable disease.", sBody),
]))
story.append(make_table(
["Component", "Recommendation", "Benefit"],
[
["Calories", "Maintain ideal BMI (18.5–24.9)", "Prevents obesity"],
["Carbohydrates", "55–65% total calories; complex/whole grains", "Stable blood glucose; fibre"],
["Fats", "Saturated fat <10%; adequate PUFA", "Cardiovascular protection"],
["Sugar", "Minimal refined sugar", "Prevents diabetes, dental caries"],
["Salt", "<5 g NaCl/day (WHO)", "Prevents hypertension"],
["Dietary fibre", ">25 g/day; fruits, vegetables, whole grains", "Prevents colorectal cancer, constipation"],
["Protein", "0.8–1.0 g/kg body weight; mixed sources", "Tissue repair; immune function"],
["Micronutrients", "Adequate vitamins, Ca, Fe, Zn from whole foods","Prevents deficiency diseases"],
["Alcohol", "None or minimal", "Liver, CVD, cancer risk reduction"],
],
col_widths=[3.2*cm, 5.5*cm, 7.0*cm]
))
story.append(sp())
# (b) AEFI
story.append(Paragraph("<b>(b) Adverse Events Following Immunization (AEFI)</b>", sH3))
story.append(Paragraph(
"<b>Definition (WHO 2012):</b> Any untoward medical occurrence which follows immunization "
"and which does not necessarily have a causal relationship with vaccine usage.", sBody))
story.append(make_table(
["WHO Category", "Cause", "Example"],
[
["Vaccine product-related", "Inherent properties of the vaccine", "Febrile seizure after measles vaccine"],
["Vaccine quality defect", "Manufacturing defect", "Contaminated batch reactions"],
["Immunization error-related", "Error in preparation/handling/administration","Abscess from non-sterile technique; BCG at wrong site"],
["Immunization anxiety-related", "Psychological fear of injection", "Vasovagal syncope (fainting)"],
["Coincidental", "Would have occurred regardless of vaccine", "Febrile convulsion from concurrent infection"],
],
col_widths=[4.0*cm, 5.5*cm, 6.2*cm]
))
story += bullets([
"<b>DPT:</b> Local pain/swelling, fever, febrile convulsions, hypotonic-hyporesponsive episode (rare)",
"<b>OPV:</b> VAPP (Vaccine-Associated Paralytic Polio) — 1 in 2.5 million doses",
"<b>BCG:</b> Local ulcer, keloid, BCG lymphadenitis, disseminated BCG (in immunocompromised)",
"<b>Measles/MMR:</b> Fever 7–12 days post-vaccine, mild rash, thrombocytopenia (rare)",
"<b>AEFI surveillance in India:</b> Passive reporting → CDSCO → District/State/National causality assessment committee"
])
story.append(sp())
# (c) Social Security
story.append(Paragraph("<b>(c) Social Security</b>", sH3))
story.append(Paragraph(
"<b>Definition (ILO/Park):</b> Protection provided by society through public measures against economic "
"and social distress caused by stoppage/reduction of earnings from sickness, maternity, employment injury, "
"unemployment, invalidity, old age, or death; plus provision of medical care and family subsidies.", sBody))
story.append(make_table(
["Component", "Description", "Indian Example"],
[
["Social Insurance", "Contributory; workers + employers pay premiums; benefits linked to contributions", "ESI Act 1948; EPF Act 1952"],
["Social Assistance", "Non-contributory; government-funded; means-tested", "Old age pension; widow pension; MGNREGA; PDS"],
["Medical Care", "Healthcare services provision", "Ayushman Bharat PM-JAY (Rs. 5 lakh/family/year)"],
["Universal Services", "Education, housing, nutrition subsidies", "ICDS, Mid-Day Meal scheme"],
],
col_widths=[3.5*cm, 6.0*cm, 6.2*cm]
))
story.append(sp())
# (d) Chlorination
story.append(Paragraph("<b>(d) Principles of Chlorination</b>", sH3))
story.append(Paragraph(
"Chlorination is the most widely used method of water disinfection. "
"Chlorine hydrolyzes to form <b>HOCl (hypochlorous acid)</b> — the germicidal form (active at acidic pH) "
"and OCl⁻ (hypochlorite ion, less active at alkaline pH).", sBody))
story += numbered([
"<b>Adequate Dosage:</b> Must meet chlorine demand + leave residual ≥0.2 mg/L at tap (0.5 mg/L at source)",
"<b>Chlorine Demand:</b> Chlorine consumed by organic matter, bacteria, NH₃, iron etc. before residual appears",
"<b>Breakpoint Chlorination:</b> Dose must exceed breakpoint (where all chloramines are destroyed) to get free residual chlorine",
"<b>Contact Time:</b> Minimum 30 minutes before consumption; longer at lower temperature/higher pH",
"<b>pH:</b> Optimal 6.5–7.5; HOCl (germicidal) maximum at pH 5–7; efficacy falls above pH 8",
"<b>Turbidity:</b> Water should be clarified/filtered BEFORE chlorination (particles protect organisms)",
"<b>Temperature:</b> Efficiency ↑ with temperature; increase contact time at low temperatures"
])
story.append(sp())
story.append(Paragraph("<b>Fig 3: Breakpoint Chlorination Curve</b>", sNote))
story.append(diagram_chlorination())
story.append(sp())
story.append(make_table(
["Form of Chlorine", "Available Cl Content", "Use"],
[
["Bleaching powder Ca(OCl)Cl", "~33%", "Routine water disinfection in India"],
["High Test Hypochlorite (HTH)", "~70%", "Emergency/large-scale disinfection"],
["Sodium hypochlorite", "Variable (5–15%)", "Household, hospital disinfection"],
["Chlorine gas (Cl₂)", "100%", "Large water treatment plants"],
["Chloramine-T", "12%", "Drinking water tablets, field use"],
],
col_widths=[4.5*cm, 3.5*cm, 7.7*cm]
))
story.append(sp())
# (e) Charts and Diagrams
story.append(Paragraph("<b>(e) Charts and Diagrams Used in Statistics</b>", sH3))
story.append(Paragraph(
'"A picture is worth a thousand words." — Diagrammatic presentation makes data easier to '
'understand, compare and communicate to both professional and lay audiences. (Park)', sBody))
story.append(make_table(
["Type of Diagram", "Data Type", "Best Used For", "Key Feature"],
[
["Bar diagram (Simple/Multiple/Component)", "Discrete / Categorical", "Comparing groups, proportions", "Bars separated; height = frequency"],
["Histogram", "Continuous (class intervals)", "Frequency distribution", "Bars touch each other (no gap)"],
["Frequency polygon", "Continuous", "Comparing two distributions", "Line connecting midpoints of class intervals"],
["Line graph (time-series)", "Time series / Continuous", "Trends over time (epidemics, disease incidence)", "X = time; Y = rate/count"],
["Pie chart", "Categorical (proportions)", "Parts of a whole (<6 categories)", "360° = 100%; each slice = proportion"],
["Scatter diagram", "Two continuous variables", "Correlation between variables", "Each point = one observation"],
["Pictogram", "Categorical", "Lay/public audience education", "Pictorial symbols represent units"],
["Spot map / Area map", "Geographic/spatial data", "Disease distribution by place", "Dots/shading on geographic map"],
["Box-and-whisker plot", "Continuous", "Distribution, spread, outliers", "Shows median, IQR, range"],
["Ogive (cumulative frequency)", "Continuous", "Finding median, percentiles", "S-shaped cumulative curve"],
],
col_widths=[4.2*cm, 2.8*cm, 3.8*cm, 4.9*cm]
))
story.append(sp())
# (f) Health protection of workers
story.append(Paragraph("<b>(f) Measures for Health Protection of Workers</b>", sH3))
story.append(make_table(
["Category", "Measures"],
[
["Engineering Controls\n(Hierarchy Level 2–3)",
"1. Substitution: Replace toxic substance with safer alternative\n"
"2. Enclosure/Isolation: Enclose hazardous process\n"
"3. Local Exhaust Ventilation (LEV): Capture fumes/dust at source\n"
"4. Wet methods: Wet grinding to suppress dust (prevents silicosis)\n"
"5. Automation: Remove human from hazardous exposure"],
["Administrative Controls\n(Level 4)",
"6. Pre-employment + periodic medical examinations\n"
"7. Biological monitoring (blood lead, urine mercury)\n"
"8. Job rotation to limit exposure duration\n"
"9. Restrict work hours in hazardous areas"],
["PPE (Last Resort — Level 5)",
"10. Respirators/masks (dusty/chemical environments)\n"
"11. Ear protection (earmuffs/plugs) for noise >85 dB\n"
"12. Eye protection (goggles, face shields)\n"
"13. Protective clothing (gloves, coveralls, boots, hard hat)"],
["Legislative",
"Factories Act 1948; Mines Act 1952; ESI Act 1948;\nEmployees Compensation Act; Plantation Labour Act 1951"],
["Health Education",
"Train workers on hazard recognition and PPE use;\nMSDS (Material Safety Data Sheets) for all chemicals"],
],
col_widths=[4.0*cm, 11.7*cm]
))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# MCQs Part I
# ══════════════════════════════════════════════════════════════════════════════
story.append(BannerH2("Q3. Multiple Choice Questions (MCQs) [1×10=10]", MID_BLUE))
story.append(sp())
story.append(make_table(
["Q.No", "Question Summary", "Answer", "Explanation (Park)"],
[
["1","Home health nurse doing skin care and repositioning",
"D — Rehabilitation",
"Preventing pressure sores in bedridden patient = disability limitation/rehabilitation (Tertiary prevention)"],
["2","Brick kiln worker: unconscious, hypotensive, sweating",
"A — Heat Stroke\n(= Heat Hyperpyrexia)",
"Heat stroke = hyperthermia + CNS dysfunction (unconsciousness). Exertional form can have sweating. Heat exhaustion = conscious with normal/low temp"],
["3","True statement about parboiling",
"B — Vitamins/minerals from outer aleurone layer driven into inner endosperm",
"Hot soaking drives water-soluble B-vitamins into endosperm → retained after milling. Starch gelatinization IMPROVES quality (not degrades)"],
["4","Hill's criteria — all EXCEPT:",
"C — Non-specificity of association",
"The actual criterion is SPECIFICITY. 'Non-specificity' is NOT a Hill criterion. All other 9 criteria are valid"],
["5","Chi-square calculated < critical value → H₀:",
"B — Accepted",
"When test statistic < critical value: fail to reject H₀ → accept H₀ (no significant association at that α level)"],
["6","Propagated epidemic characteristics — all EXCEPT:",
"D — Curve rises and falls rapidly",
"Rapid rise-and-fall = POINT SOURCE epidemic. Propagated epidemic: gradual rise, multiple peaks, continues as long as susceptibles available"],
["7","Secondary attack rate minimum in:",
"A — TB",
"SAR = cases in household contacts / susceptible contacts. TB has lowest SAR (~5–10%) vs. Measles (~80–90%) and Whooping cough (~80%)"],
["8","Child with PEM, subcutaneous fat loss — level of prevention:",
"C — Early diagnosis and prompt treatment",
"Patient already has disease (PEM) with clinical signs. EDPT = Secondary prevention. Not disability limitation as disease is active/treatable"],
["9","Smoking in pregnancy correlated with birth weight — study design:",
"D — Prospective study",
"Prospective cohort: follow pregnant women (exposure = smoking) → birth weight at delivery (outcome). Best design to establish temporal association"],
["10","Cap doxycycline for malaria chemoprophylaxis to healthy traveller:",
"B — Primary prevention",
"Specific protection in susceptible healthy person before disease = Primary prevention (specific protection component)"],
],
col_widths=[1.0*cm, 4.0*cm, 3.0*cm, 7.7*cm]
))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# PART — II
# ══════════════════════════════════════════════════════════════════════════════
story.append(BannerH1("PART — II"))
story.append(sp(2))
# Q4: Occupational Hazards
story.append(BannerH2("Q4. Types of Occupational Hazards and Occupational Diseases [4+6=10]", MID_BLUE))
story.append(sp())
story.append(make_table(
["Type of Hazard", "Examples", "Disease/Effect"],
[
["1. Physical — Noise", "Factories, mines, airports, musicians", "NIHL (Noise-Induced Hearing Loss), tinnitus; threshold: >85 dB"],
["1. Physical — Heat", "Brick kiln, bakery, iron foundry", "Heat cramps → Heat exhaustion → Heat stroke (hyperpyrexia)"],
["1. Physical — Vibration", "Chain saws, pneumatic drills", "Raynaud's phenomenon (vibration white finger), back pain"],
["1. Physical — Radiation\n(Ionizing)", "Radiologists, nuclear workers", "Leukaemia, aplastic anaemia, carcinoma, cataracts, sterility"],
["1. Physical — Radiation\n(Non-ionizing)", "Welders, UV exposure", "Conjunctivitis, cataracts, skin cancer"],
["1. Physical — Pressure", "Deep sea divers, tunnel workers", "Decompression sickness ('bends'), barotrauma"],
["2. Chemical — Dust", "Miners, stone cutters, cotton mill, sugar factory","Silicosis, CWP, Asbestosis, Byssinosis, Bagassosis (see table below)"],
["2. Chemical — Heavy metals","Battery factory (Pb), chemical plants (Hg)", "Plumbism (lead), Minamata disease (mercury), arsenicosis"],
["2. Chemical — Solvents", "Dry cleaning, printing, shoe manufacturing", "Benzene → aplastic anaemia, leukaemia; CCl₄ → hepatotoxicity"],
["2. Chemical — Pesticides", "Farmers, pesticide factories", "Organophosphate toxicity (cholinergic crisis)"],
["3. Biological", "Healthcare workers, abattoir, farm workers", "TB, HBV/HCV/HIV, Brucellosis, Anthrax, Leptospirosis"],
["4. Ergonomic", "Typists, assembly line, heavy lifters", "Carpal tunnel syndrome, low back pain, RSI"],
["5. Psychosocial", "Shift workers, ICU doctors, executives", "CVD, burnout, insomnia, substance abuse, mental illness"],
],
col_widths=[3.5*cm, 4.0*cm, 8.2*cm]
))
story.append(sp())
story.append(Paragraph("<b>Pneumoconioses — Key Occupational Dust Diseases (Park):</b>", sH3))
story.append(make_table(
["Disease", "Causative Dust", "Occupation", "Key Feature"],
[
["Silicosis", "Crystalline free silica (SiO₂)", "Miners, stone cutters, quarry workers","Progressive fibrosis; eggshell calcification on X-ray"],
["Asbestosis", "Asbestos fibres", "Insulation, shipyard, asbestos mining","Mesothelioma + bronchogenic carcinoma; pleural plaques"],
["CWP (Black lung)", "Coal dust", "Coal miners", "Progressive massive fibrosis (PMF) in severe cases"],
["Byssinosis", "Cotton/hemp/flax dust", "Cotton textile workers", "Monday morning fever; chest tightness on return to work"],
["Bagassosis", "Mouldy bagasse (sugarcane fibre)","Sugar cane factory workers", "Extrinsic allergic alveolitis (hypersensitivity pneumonitis)"],
["Farmer's lung", "Mouldy hay/grain dust", "Farmers", "Thermophilic actinomycetes; extrinsic allergic alveolitis"],
],
col_widths=[3.2*cm, 3.5*cm, 4.0*cm, 5.0*cm]
))
story.append(PageBreak())
# ─────────────────────────────────────────────────────────────────────────────
# Q5: Short Notes Part II
# ─────────────────────────────────────────────────────────────────────────────
story.append(BannerH2("Q5. Short Notes [5×6=30]", MID_BLUE))
story.append(sp())
# (a) Temporal Association
story.append(Paragraph("<b>(a) Temporal Association and Its Relevance</b>", sH3))
story.append(Paragraph(
"<b>Definition:</b> Temporality means the <b>cause must precede the effect</b>. The exposure must occur "
"before the disease develops. This is the <b>only absolute/essential criterion</b> in Bradford Hill's "
"framework — without it, causation cannot be established.", sBody))
story.append(Paragraph("<b>Bradford Hill's Criteria for Causation (1965) — All 9:</b>", sH4))
story.append(make_table(
["Criterion", "Meaning", "Absolute?"],
[
["1. Temporality", "Cause precedes effect in time", "YES — only essential criterion"],
["2. Strength", "Large Relative Risk or Odds Ratio", "No"],
["3. Consistency", "Replicated in different studies, populations, settings", "No"],
["4. Specificity", "One exposure → one specific disease", "No (less strict today)"],
["5. Biological gradient","More exposure → more disease (dose-response)", "No"],
["6. Plausibility", "Biologically makes sense", "No"],
["7. Coherence", "Consistent with known natural history", "No"],
["8. Experiment", "Removal of cause reduces disease (RCT)", "No"],
["9. Analogy", "Similar known cause-effect supports hypothesis", "No"],
],
col_widths=[3.5*cm, 9.0*cm, 3.2*cm]
))
story.append(Paragraph(
"<b>Relevance by Study Design:</b> Prospective cohort studies best establish temporality "
"(exposure documented before outcome). Cross-sectional studies CANNOT establish temporality. "
"Retrospective studies prone to recall bias distorting temporal sequence.", sBody))
story.append(sp())
# (b) Herd Immunity
story.append(Paragraph("<b>(b) Role of Herd Immunity in Public Health</b>", sH3))
story.append(Paragraph(
"<b>Definition (Park, p.115):</b> Herd immunity (community immunity) describes protection "
"conferred on <b>unimmunised/susceptible individuals</b> when a sufficient proportion of the "
"population is immune, making it difficult to maintain a chain of infection in the herd.", sBody))
story.append(Paragraph("<b>Fig 4: Herd Immunity — Concept Diagram</b>", sNote))
story.append(diagram_herd_immunity())
story.append(sp())
story.append(Paragraph("<b>Herd Immunity Threshold by Disease (Park):</b>", sH4))
story.append(make_table(
["Disease", "R₀ (Basic Reproduction Number)", "Herd Immunity Threshold", "Vaccine Required"],
[
["Measles", "12–18", "~92–95%", "MMR vaccine (2 doses)"],
["Poliomyelitis", "5–7", "~80–86%", "OPV/IPV (complete series)"],
["Smallpox", "5–7", "~80–85%", "Eradicated — no longer needed"],
["COVID-19", "2–4 (varies)", "~50–75%", "COVID-19 vaccines"],
["Influenza", "2–3", "~50–67%", "Annual influenza vaccine"],
["Tetanus", "N/A", "Does NOT apply", "Tetanus not person-to-person; herd immunity irrelevant"],
],
col_widths=[3.0*cm, 3.8*cm, 3.2*cm, 5.7*cm]
))
story += bullets([
"<b>Elements (Park):</b> (a) Clinical and subclinical infections in herd; (b) Immunization; (c) Herd structure (births, deaths, mobility)",
"<b>Threshold formula:</b> HIT = 1 – (1/R₀)",
"<b>Public health uses:</b> Basis of immunization programmes; protects immunocompromised/unvaccinated; guide for vaccination coverage targets",
"<b>Achieved for:</b> Diphtheria (near-elimination); Poliomyelitis (near-eradication); Smallpox (eradicated)",
"<b>Exception:</b> Tetanus — herd immunity does NOT protect individual (no person-to-person transmission)"
])
story.append(sp())
# (c) BMW plastic and sharp waste
story.append(Paragraph("<b>(c) BMW Management of Plastic and Sharp Waste</b>", sH3))
story.append(Paragraph(
"Governed by <b>Bio-Medical Waste Management Rules 2016</b> (amended 2018), Ministry of Environment, India.", sBody))
story.append(make_table(
["Waste Type", "Colour Code", "Container Type", "Treatment/Disposal"],
[
["Plastic waste (contaminated recyclable):\nIV tubing, catheters, syringes WITHOUT needles,\nurine bags, gloves, IV bottles",
"RED BAG", "Red polythene bag",
"Autoclaving (134°C, 3 bar, 18 min) or microwaving\n→ sent to authorized plastic recycler\nDO NOT incinerate (releases toxic dioxins from PVC)"],
["Sharp waste:\nNeedles, syringes WITH needles, scalpel blades,\nlancets, broken glass with blood",
"WHITE/\nTRANSLUCENT\nCONTAINER", "Rigid, puncture-proof, leak-proof container",
"Needle destroyers at point of use → autoclaving\n→ sent to authorized recycler for safe disposal\nAlternative: Deep burial / encapsulation in remote areas"],
],
col_widths=[4.5*cm, 1.8*cm, 3.2*cm, 6.2*cm]
))
story += bullets([
"NEVER recap needles with two hands (one-hand scoop method only if unavoidable)",
"NEVER bend, break, or cut needles after use",
"Sharp containers: fill to ¾ only, then seal and label",
"Store BMW max <b>48 hours</b> before sending to CBWTF (Common Bio-Medical Waste Treatment Facility)",
"Records maintained for <b>5 years</b>"
])
story.append(sp())
# (d) Doctor as communicator
story.append(Paragraph("<b>(d) Role of a Doctor as a Good Communicator</b>", sH3))
story.append(make_table(
["Role", "Key Communication Skills", "Tool/Method"],
[
["History Taking", "Open-ended questions first → specific probes;\nActive listening; empathy", "OSCE history; Patient-centred interview"],
["Patient Education", "Simple language; avoid jargon; use local language;\nTeach-back method", "IEC materials; demonstrations; models"],
["Counselling", "Breaking bad news (SPIKES protocol);\nMotivational interviewing for behaviour change", "SPIKES: Setting, Perception, Invitation, Knowledge, Emotions, Summary"],
["Non-verbal Communication","Eye contact, posture, touch (appropriate);\n55% body language + 38% tone + 7% words (Mehrabian)", "Body language awareness training"],
["Interprofessional", "Clear written referrals, discharge summaries;\nSBAR in emergencies", "SBAR: Situation, Background, Assessment, Recommendation"],
["Public Health", "Health education lectures; mass media;\nRisk communication during outbreaks", "IEC campaigns; social media; radio/TV"],
],
col_widths=[3.2*cm, 6.0*cm, 6.5*cm]
))
story += bullets([
"<b>Barriers to communication (Park):</b> Language differences, poor literacy, hearing impairment, cultural beliefs, doctor paternalism, patient anxiety/denial, time pressure",
"<b>Communication skills</b> are now a core MBBS competency under <b>AETCOM module</b> (NMC 2019 Competency-Based Medical Education)"
])
story.append(sp())
# (e) Health problems — no iodized salt
story.append(Paragraph("<b>(e) Health Problems in a 25-Year Married Female Not Using Iodized Salt Regularly</b>", sH3))
story.append(Paragraph(
"Iodine is essential for synthesis of thyroid hormones T₃ and T₄. Deficiency causes "
"<b>Iodine Deficiency Disorders (IDD)</b> — a spectrum of conditions (Park):", sBody))
story.append(make_table(
["IDD", "Mechanism", "Clinical Features"],
[
["Goitre", "Compensatory thyroid hypertrophy (↑TSH)", "Neck swelling; pressure symptoms (dysphagia, stridor); cosmetic disfigurement"],
["Hypothyroidism", "Insufficient T₃/T₄", "Fatigue, cold intolerance, weight gain, constipation, dry skin, hair loss, bradycardia, delayed reflexes"],
["Menstrual irregularities", "Hypothyroidism impairs ovulation", "Menorrhagia, oligomenorrhoea, anovulation, sub-fertility, increased miscarriage risk"],
["Neurological cretinism\n(in baby — if pregnant)", "Severe iodine deficiency in 1st trimester", "Irreversible mental retardation, deaf-mutism, spastic diplegia, squint — MOST SEVERE IDD"],
["Myxoedematous cretinism\n(in baby)", "Later trimester/postnatal iodine deficiency", "Hypothyroidism, growth retardation, sexual immaturity (some intelligence retained)"],
["Pregnancy complications", "Fetal hypothyroidism + iodine deficiency", "Stillbirths, spontaneous abortions, low birth weight, ↑ perinatal and infant mortality"],
["Cognitive impairment", "Suboptimal thyroid hormone in development", "Reduced school performance, poor concentration, apathy"],
],
col_widths=[3.5*cm, 4.0*cm, 8.2*cm]
))
story += bullets([
"<b>Prevention:</b> Universal Iodization of Salt (mandatory in India — FSSA; 15 ppm iodine at consumer level)",
"<b>Pregnancy:</b> Ensure iodine intake 220–250 mcg/day; iodized oil injections in severe endemic areas",
"<b>Programme:</b> National Iodine Deficiency Disorders Control Programme (NIDDCP)"
])
story.append(sp())
# (f) Health hazards without gloves
story.append(Paragraph("<b>(f) Health Hazards to an Intern Doctor Never Using Hand Gloves</b>", sH3))
story.append(make_table(
["Hazard Category", "Specific Risk", "Pathogen/Condition", "Risk Level"],
[
["Blood-borne infections\n(HIGHEST PRIORITY)",
"Needle-stick / skin cut / mucosal contact",
"HBV (~6–30% per NSI), HCV (~1.8%), HIV (~0.3%)",
"HIGH — HBV vaccine essential"],
["Skin infections",
"Contact with infected wounds, skin lesions",
"MRSA, Staphylococcus, Streptococcus, Scabies",
"MODERATE"],
["Herpetic whitlow",
"Contact with HSV-infected oral/genital secretions",
"Herpes Simplex Virus — painful vesicles on finger",
"MODERATE — common in ICU/dental"],
["Enteric/water-borne",
"Faecal contamination (without gloves)",
"C. difficile, E. coli, hepatitis A",
"MODERATE"],
["Healthcare-associated\ninfection (HAI)",
"Hand as vector for cross-infection",
"MRSA, Klebsiella, Acinetobacter, Pseudomonas",
"HIGH — patient safety risk"],
["Chemical dermatitis",
"Direct contact with antiseptics, chemicals",
"Irritant or allergic contact dermatitis",
"LOW-MODERATE"],
],
col_widths=[3.0*cm, 3.8*cm, 4.5*cm, 2.4*cm]
))
story += bullets([
"<b>WHO 5 Moments of Hand Hygiene:</b> Before patient contact; before aseptic procedure; after body fluid exposure; after patient contact; after contact with patient surroundings",
"<b>Post-exposure management:</b> HBV → HBIG + vaccine; HIV → PEP (ARVs within 2 hours)",
"<b>C. difficile:</b> Alcohol gel INEFFECTIVE — must use soap and water to remove spores",
"Failure to use PPE = breach of standard of care; may also transmit infections to other patients"
])
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# Q6: DIFFERENTIATIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(BannerH2("Q6. Differentiate Between [5×2=10]", MID_BLUE))
story.append(sp())
# (a) Disability vs Handicap
story.append(Paragraph("<b>(a) Disability vs. Handicap (WHO ICIDH / Park)</b>", sH3))
story.append(make_table(
["Feature", "DISABILITY", "HANDICAP"],
[
["WHO Definition", "Restriction/lack of ability to perform an activity in the manner considered normal for a human being",
"A disadvantage for a given individual resulting from an impairment or disability that limits/prevents fulfilment of a normal role"],
["Level", "At the level of the PERSON (functional limitation)", "At the level of SOCIETY (social disadvantage)"],
["Nature", "What the person CANNOT DO", "How SOCIETY restricts the person"],
["Sequence", "Follows impairment (Impairment → Disability)", "Follows disability (Disability → Handicap)"],
["Example", "Person who lost a leg has difficulty walking", "Same person cannot get employment because workplace has no ramp"],
["Modern term (ICF 2001)", "Activity Limitation", "Participation Restriction"],
],
col_widths=[3.2*cm, 7.0*cm, 5.5*cm], head_color=ACCENT_GRN
))
story.append(Paragraph(
"<i>Sequence: IMPAIRMENT (organ level) → DISABILITY (person level) → HANDICAP (society level)</i>", sNote))
story.append(sp())
# (b) Food fortification vs adulteration
story.append(Paragraph("<b>(b) Food Fortification vs. Food Adulteration</b>", sH3))
story.append(make_table(
["Feature", "FOOD FORTIFICATION", "FOOD ADULTERATION"],
[
["Definition", "Addition of essential nutrients to food to prevent/correct deficiency (Codex Alimentarius)",
"Addition of substance making food impure/injurious/inferior; or removal of a constituent to deceive"],
["Intent", "Beneficial — improve nutritional quality and public health", "Harmful/fraudulent — profit, shelf life, appearance"],
["Legal status", "Mandatory/voluntary; regulated (FSSAI in India)", "Illegal; punishable under FSSA 2006"],
["Indian Examples", "Iodized salt; Vitamin A+D fortified milk; double-fortified salt (DFS); iron-fortified atta",
"Water in milk; starch in chilli; brick dust in red chilli; argemone oil in mustard oil; chalk in flour"],
["Health impact", "Positive: Prevents IDD, night blindness, anaemia", "Negative: Poisoning, organ damage, cancer, epidemic dropsy"],
],
col_widths=[2.5*cm, 7.3*cm, 5.9*cm], head_color=ACCENT_GRN
))
story.append(sp())
# (c) Screening vs Diagnostic test
story.append(Paragraph("<b>(c) Screening Test vs. Diagnostic Test</b>", sH3))
story.append(make_table(
["Feature", "SCREENING TEST", "DIAGNOSTIC TEST"],
[
["Purpose", "Detect disease in ASYMPTOMATIC apparently healthy people (presumptive identification)",
"Confirm/exclude disease in SYMPTOMATIC patients or those with positive screen"],
["Population", "Large, healthy population", "Individuals with symptoms or positive screening"],
["Nature", "Simple, quick, inexpensive, non-invasive, acceptable", "Detailed, possibly invasive/expensive"],
["Accuracy", "Prioritize HIGH SENSITIVITY (catch most true positives; some FP acceptable)",
"Prioritize HIGH SPECIFICITY + Sensitivity; high PPV needed"],
["Result", "Positive/Negative only → needs confirmation", "Definitive diagnosis"],
["Examples", "PAP smear, Mantoux test, random blood sugar, mammography, VDRL",
"Colposcopy + biopsy, OGTT (fasting + 2h), sputum culture, histopathology"],
["Who performs", "Community/paramedical level", "Clinician/specialist level"],
["Wilson & Jungner criteria", "Apply (important disease, acceptable test, treatment available)",
"N/A"],
],
col_widths=[2.5*cm, 7.3*cm, 5.9*cm], head_color=ACCENT_GRN
))
story.append(sp())
# (d) Monitoring vs Surveillance
story.append(Paragraph("<b>(d) Monitoring vs. Surveillance (Park, p.51)</b>", sH3))
story.append(make_table(
["Feature", "MONITORING", "SURVEILLANCE"],
[
["Definition (Park)", "Performance and analysis of routine measurements aimed at detecting changes in environment or health status of population",
"Continuous analysis, interpretation and feedback of systematically collected data for disease control and public health action"],
["Scope", "Specific parameter or variable", "Broad — includes analysis, interpretation, feedback, AND action"],
["Nature", "More intermittent/episodic; can be automated", "Continuous and ongoing; requires professional epidemiological judgement"],
["Output", "Raw data on changes; alerts when threshold exceeded", "Actionable intelligence → recommendations for disease control"],
["Relationship", "A component/tool within surveillance", "Broader concept that encompasses monitoring + analysis + action"],
["Examples", "Daily water quality (Cl residual); growth monitoring; AQI monitoring",
"IDSP (Integrated Disease Surveillance Programme); TB/HIV/dengue surveillance systems"],
],
col_widths=[2.5*cm, 7.3*cm, 5.9*cm], head_color=ACCENT_GRN
))
story.append(sp())
# (e) Probability vs Non-probability sampling
story.append(Paragraph("<b>(e) Probability Sampling vs. Non-Probability Sampling</b>", sH3))
story.append(make_table(
["Feature", "PROBABILITY SAMPLING", "NON-PROBABILITY SAMPLING"],
[
["Definition", "Every unit has a KNOWN, non-zero probability of selection",
"Selection based on subjective judgement; probability of selection UNKNOWN"],
["Basis", "Random (chance)", "Non-random (convenience, judgement, quota)"],
["Representativeness", "Representative; generalizable to population", "May not be representative; limited generalizability"],
["Sampling error", "Can be calculated statistically", "Cannot be estimated mathematically"],
["Bias", "Less prone to selection bias", "More prone to selection bias"],
["Cost/Time", "More expensive; needs sampling frame", "Cheaper, faster; no sampling frame needed"],
["Types", "Simple random, Systematic, Stratified, Cluster, Multi-stage",
"Convenience, Purposive/Judgement, Quota, Snowball, Volunteer"],
["Use", "NFHS, national health surveys, clinical trials", "Qualitative research, pilot studies, FGDs, preliminary investigations"],
["Statistical validity", "Valid for inferential statistics and hypothesis testing",
"Not valid for inferential statistics; exploratory only"],
],
col_widths=[2.5*cm, 7.3*cm, 5.9*cm], head_color=ACCENT_GRN
))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# MCQs Part II + Q8
# ══════════════════════════════════════════════════════════════════════════════
story.append(BannerH2("Q7/Q8. MCQ Answers with Explanations [1×5=5]", MID_BLUE))
story.append(sp())
story.append(make_table(
["Q", "Question", "Correct Answer", "Explanation (Park)"],
[
["I", "Dose of Human Rabies Immunoglobulin (HRIG)", "B — 20 IU/kg body wt",
"HRIG = 20 IU/kg; ERIG = 40 IU/kg. All RIG infiltrated into/around wound; remainder given IM at distant site"],
["II", "Demographic goal of NRR", "1 (not 2)\n★ Correct = 1",
"NRR = 1 → each generation exactly replaces itself = replacement level fertility = demographic goal. Answer marked (a)2 is INCORRECT"],
["III", "Post-coital contraception within ___ hours", "C — 72 hours",
"Emergency contraceptive pills (Levonorgestrel 1.5 mg) most effective within 72 hours. Most effective within first 12–24 hours. Cu-IUCD effective up to 120 hours"],
["IV", "Prolonged pregnancy = ___ days after EDD", "B — 14 days",
"Post-term/prolonged pregnancy = ≥42 completed weeks = 14 days beyond expected date of delivery (EDD)"],
["V", "Kishori Shakti Yojana — age group", "C — 10 to 18 years",
"KSY targets adolescent girls aged 10–18 years (restructured from ICDS Kishori scheme). Covers nutrition, health, education and life skills"],
],
col_widths=[0.7*cm, 4.5*cm, 3.0*cm, 7.5*cm]
))
story.append(sp(2))
# Quick Reference box
story.append(BannerH2("QUICK REFERENCE — Key Park's Facts for MCQs", colors.HexColor("#7030A0")))
story.append(sp())
story.append(make_table(
["Topic", "Key Fact (Park)"],
[
["SAR — minimum", "TB (SAR ~5–10%); Measles highest (~80–90%)"],
["HRIG dose", "20 IU/kg; ERIG = 40 IU/kg"],
["NRR demographic goal", "NRR = 1 (replacement level)"],
["Post-coital contraception", "Within 72 hours (ECP); Cu-IUCD up to 120 hours"],
["Prolonged pregnancy", "≥42 weeks = 14 days beyond EDD"],
["KSY age group", "10–18 years"],
["BMR breakpoint chlorination","Residual Cl ≥ 0.2 mg/L at tap; 0.5 mg/L at source"],
["Herd immunity threshold", "Measles ~92–95%; Polio ~80–86%"],
["AEFI — VAPP risk", "1 in 2.5 million OPV doses"],
["IDD goal — iodized salt", "≥15 ppm iodine at consumer level (30 ppm at production)"],
["Prudent diet — salt", "<5 g NaCl/day (WHO recommendation)"],
["Hill's only essential criterion", "Temporality (cause must precede effect)"],
["BMW — Plastic waste colour","Red bag; Sharp waste = White/translucent puncture-proof container"],
["CHC beds", "30 beds; 4 specialists; 80,000–1,20,000 population"],
["PHC coverage", "20,000–30,000 population; 1 MO + 14 staff; 6 beds"],
],
col_widths=[5.0*cm, 10.7*cm], head_color=colors.HexColor("#7030A0")
))
story.append(sp(3))
story.append(HRFlowable(width="100%", thickness=1, color=MID_BLUE))
story.append(sp())
story.append(Paragraph(
"All content based on <b>Park's Textbook of Preventive and Social Medicine</b>. "
"Diagrams are illustrative representations of Park's conceptual figures.",
sNote))
# ══════════════════════════════════════════════════════════════════════════════
# GENERATE PDF
# ══════════════════════════════════════════════════════════════════════════════
out = "/tmp/workspace/community-medicine/Community_Medicine_Paper_A_2023_Park.pdf"
doc = SimpleDocTemplate(
out,
pagesize=A4,
leftMargin=1.5*cm,
rightMargin=1.5*cm,
topMargin=2.0*cm,
bottomMargin=1.8*cm,
title="Community Medicine MBBS 3rd Prof 2023 — Solved Paper (Park's)",
author="Orris AI",
subject="Community Medicine including Humanities Paper A"
)
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"PDF saved: {out}")
cd /tmp/workspace/community-medicine && python3 create_pdf.py 2>&1
~/community-medicine/create_pdf.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/community-medicine/create_pdf.py'
cd /tmp/workspace/community-medicine && python3 create_pdf.py 2>&1
~/community-medicine/create_pdf.py
Error: String not found in file: ' for x, txt, col in [(260,55,"Recovery",ACCENT_GRN),(340,55,"Disability",MID_BLUE),(420,55,"Death",ACCENT_RED)]:
col = ACCENT_GRN if txt == "Recovery" else (MID_BLUE if txt == "Disability" else ACCENT_RED)
d.add(String(x, 55, txt, textAnchor='middle', fontSize=7.5, fillColor=col, fontName='Helvetica-Bold'))'cd /tmp/workspace/community-medicine && python3 -c " content = open('create_pdf.py').read() old = ' for x, txt, col in [(260,55,\"Recovery\",ACCENT_GRN),(340,55,\"Disability\",MID_BLUE),(420,55,\"Death\",ACCENT_RED)]:\n d.add(String(x, 55, txt, textAnchor=\'middle\', fontSize=7.5, fillColor=col, fontName=\'Helvetica-Bold\'))' new = ' for x, txt, col in [(260,\"Recovery\",ACCENT_GRN),(340,\"Disability\",MID_BLUE),(420,\"Death\",ACCENT_RED)]:\n d.add(String(x, 55, txt, textAnchor=\'middle\', fontSize=7.5, fillColor=col, fontName=\'Helvetica-Bold\'))' if old in content: content = content.replace(old, new) open('create_pdf.py','w').write(content) print('Fixed') else: # show the exact line for i,l in enumerate(content.split('\n')[183:188],184): print(i,repr(l)) "
cd /tmp/workspace/community-medicine && python3 create_pdf.py 2>&1
python3 -c " import os path = '/tmp/workspace/community-medicine/Community_Medicine_Paper_A_2023_Park.pdf' size = os.path.getsize(path) print(f'File size: {size} bytes ({size//1024} KB)') from pypdf import PdfReader r = PdfReader(path) print(f'Total pages: {len(r.pages)}') print(f'Title: {r.metadata.title}') "
Community Medicine Paper A 2023 Park
PDF Document · PDF
| Section | Content |
|---|---|
| Cover Page | Exam details, reference to Park's, info table |
| Part I — Q1 | Natural History of Disease + 4-phase timeline diagram + Iceberg concept diagram + Levels of Prevention table + Prevention pyramid diagram |
| Part I — Q2 | All 6 short notes: Prudent Diet, AEFI, Social Security, Chlorination (with Breakpoint Curve diagram), Charts/Diagrams in statistics, Health protection of workers — all with colour-coded tables |
| Part I — Q3 MCQs | All 10 MCQs with correct answers + Park's-based explanations |
| Part II — Q4 | Occupational Hazards (all 5 types) + Pneumoconioses table |
| Part II — Q5 | All 6 short notes: Temporal association (Bradford Hill table), Herd Immunity (with concept diagram + R₀ threshold table), BMW plastic/sharp waste, Doctor as communicator, IDD in female (full table), Health hazards without gloves |
| Part II — Q6 | All 5 differentiations in colour-coded comparison tables |
| Q8 MCQs | All 5 MCQs with corrections (NRR=1 correction flagged) |
| Quick Reference | 15-point Park's fact table for last-minute revision |