Answer the following questions for psm mbbs exam

Reading File
Running Command

cd /tmp/workspace/attachments/76deeef0-3cf3-4e72-8788-7e0acd3f3282 && python3 -c " import pdfplumber with pdfplumber.open('PSM 2 short cases .pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages[:5]): print(f'--- Page {i+1} ---') print(page.extract_text()) print() "

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Here are detailed answers to all 5 PSM short cases, based on Park's Textbook of Preventive and Social Medicine:

PSM 2 SHORT CASES - Model Answers


CASE 1: Obesity (42-year-old female, BMI 48, metabolic complications)

1. Definition of Obesity

Obesity is defined as an abnormal growth of the adipose tissue due to:
  • Hypertrophic obesity - enlargement of fat cell size
  • Hyperplastic obesity - increase in fat cell number
  • Mixed - combination of both
It is commonly expressed in terms of Body Mass Index (BMI). Overweight is usually due to obesity but can also arise from abnormal muscle development or fluid retention.
(Park's PSM)

2. Epidemiological Determinants of Obesity

CategoryFactors
GeneticFamily history; certain gene variants affecting fat metabolism
Dietary factorsHigh caloric intake, high fat diet, excess refined carbohydrates, sugar-sweetened beverages
Physical inactivitySedentary occupation (as in this case), desk jobs, low leisure physical activity
SocioeconomicHigher income in developing countries; lower income in developed nations; urbanization
AgeIncreases with age; especially post-menopausal women (LPL activity shifts)
SexWomen more prone post-menopause (premenopausal women have more gluteal/femoral fat)
HormonalHypothyroidism, Cushing's syndrome, PCOS
PsychologicalStress eating, binge eating disorder
Gut microbiomeDysbiosis associated with increased energy extraction
MedicationsCorticosteroids, antipsychotics, insulin
Note on this case: The patient has a sedentary occupation and failed dieting - classic interplay of physical inactivity + dietary failure.

3. Obesity Indices and Criteria for Assessment

a) Body Mass Index (BMI) - Quetelet's Index (most widely used)
BMI = Weight (kg) / Height² (m²)
WHO Classification of Obesity (BMI-based):
ClassificationBMI (kg/m²)Risk of Comorbidities
Underweight< 18.50Low (other risks increased)
Normal range18.50 - 24.99Average
Pre-obese (Overweight)25.00 - 29.99Increased
Obese Class I30.00 - 34.99Moderate
Obese Class II35.00 - 39.99Severe
Obese Class III (Morbid)≥ 40.00Very severe
This patient with BMI 48 falls in Class III (Morbid Obesity).
b) Other Indices:
  • Ponderal Index = Height (cm) / Cube root of body weight (kg)
  • Brocca Index = Height (cm) - 100 (ideal weight in kg)
  • Lorentz's formula = Ht (cm) - 100 - [Ht (cm) - 150] / 2 (women) or 4 (men)
  • Corpulence Index = Actual weight / Desirable weight (should not exceed 1.2)
  • Waist circumference - measures central/abdominal obesity (risk: >88 cm in women, >102 cm in men)
  • Waist-to-hip ratio (WHR) - apple shape (android) vs pear shape (gynoid)
  • Skinfold thickness - using calipers (triceps, subscapular); most accurate for body fat %
  • DEXA scan - gold standard for body composition (not routine)

4. Prevention of Obesity

Primary Prevention (prevent onset):
  • Dietary modification: reduce caloric intake; limit saturated fat, refined sugars; increase fruits, vegetables, whole grains
  • Regular physical activity: at least 30 minutes of moderate activity on most days
  • Health education and nutrition counseling
  • Workplace wellness programs (important for sedentary workers)
  • School-based interventions for children
  • Restriction of junk food advertising
Secondary Prevention (early detection & treatment):
  • Regular BMI and waist circumference monitoring
  • Weight loss target: 5-10% of body weight as initial realistic goal
  • Behavioral therapy, cognitive behavior therapy
  • Pharmacotherapy: when BMI >30 with comorbidities (e.g., orlistat)
  • Bariatric surgery: for BMI ≥40 or ≥35 with serious comorbidities (like this patient)
Tertiary Prevention:
  • Management of complications: HTN, T2DM (this patient has IFG + BP 145/92), sleep apnea (daytime somnolence), osteoarthritis (bilateral knee pain)
WHO recommendation: Healthy BMI range = 18.5-24.9 kg/m² should be maintained throughout adulthood. Preventing weight gain of more than 5 kg in all adults is a key goal.

CASE 2: PEM - Kwashiorkor (2-year-old, wasting + bilateral pedal edema)

1. Diagnosis

Kwashiorkor - a severe form of Protein-Energy Malnutrition (PEM)
Basis: Bilateral pedal edema + generalized wasting + progressive lethargy + inadequate protein intake + recurrent diarrhea in a child from a low-resource setting.
Note: The edema (hypoalbuminemia) distinguishes Kwashiorkor from Marasmus.

2. Classification of PEM and Differentiation

WHO Classification of PEM (Wellcome Classification):
TypeWeight for AgeEdema
Underweight60-80%Absent
Kwashiorkor60-80%Present
Marasmus< 60%Absent
Marasmic-Kwashiorkor< 60%Present
Gomez Classification (weight for age as % of standard):
GradeWeight for Age
Grade I (mild)75-90%
Grade II (moderate)60-74%
Grade III (severe)< 60%
IAP Classification (Indian Academy of Pediatrics):
GradeWeight for Age
Grade I71-80%
Grade II61-70%
Grade III51-60%
Grade IV< 50%
Waterlow Classification - uses Height-for-age (stunting) and Weight-for-height (wasting):
  • Stunting = chronic malnutrition
  • Wasting = acute malnutrition
Differentiation: Kwashiorkor vs Marasmus
FeatureKwashiorkorMarasmus
CausePredominantly protein deficiency (low P:E ratio)Deficiency of both protein AND calories
Age1-3 years (weaning age)<1 year (infancy)
OnsetRelatively suddenGradual
EdemaPresent (hallmark) - bilateral pittingAbsent
WastingPresent but masked by edemaSevere, marked
Subcutaneous fatPreservedMarkedly reduced ("skin and bones")
FaceMoon faceMonkey/old man face
SkinDermatosis - flaky paint, pigmentation, depigmentationLoose, wrinkled, dry
HairDepigmented (flag sign), sparse, easily pluckedSparse, thin
LiverEnlarged (fatty liver)Normal or small
AppetitePoorHungry, good appetite
Serum albuminMarkedly low (hypoalbuminemia)Low but less markedly
MoodIrritable, apatheticAlert but miserable
Serum proteinsMarkedly decreasedLess decreased

3. Epidemiology of PEM

  • PEM is a major health and nutrition problem in India, especially in children in the first years of life
  • Estimated to be underlying cause in 30% of deaths among children under 5
  • 27% of children in low-income countries have low height-for-age (stunting)
  • 17% of children have low weight-for-height (wasting)
  • Severely wasted children are 9 times more likely to die than well-nourished children
  • High-risk periods: weaning age (1-3 years), infancy
  • Associated with: poverty, illiteracy, large family size, infection (especially diarrhea, measles), poor complementary feeding
  • India specifics: NFHS data shows significant improvement but burden remains high in UP, Bihar, Jharkhand, and Rajasthan
Risk factors:
  • Low birth weight (maternal malnutrition)
  • Early cessation of breastfeeding
  • Inadequate complementary feeding
  • Recurrent infections (especially diarrheal disease)
  • Poverty and food insecurity

4. Prevention and Control of PEM

Health Promotion:
  1. Measures for pregnant and lactating women (supplements, education)
  2. Promotion of breastfeeding (exclusive for 6 months)
  3. Development of low-cost weaning foods; frequent feeding
  4. Improving family diet
  5. Nutrition education - correct feeding practices
  6. Home economics
  7. Family planning and birth spacing
  8. Better family environment
Specific Protection:
  1. Protein and energy-rich diet (milk, eggs, fresh fruits)
  2. Immunization (measles vaccination particularly important)
  3. Food fortification
Government Programs:
  • ICDS (Integrated Child Development Services) - supplementary nutrition
  • Mid-Day Meal Scheme
  • Poshan Abhiyaan (National Nutrition Mission) - target: reduce stunting, wasting, underweight and anemia
  • SAM (Severe Acute Malnutrition) management through NRCs (Nutrition Rehabilitation Centres)

CASE 3: Vitamin A Deficiency (3-year-old, night blindness + Bitot's spots)

1. Diagnosis

Xerophthalmia due to Vitamin A Deficiency (VAD)
Basis: Night blindness (XN) + Bitot's spots on temporal bulbar conjunctiva (X1B) + prolonged exclusive cereal-based weaning with no Vitamin A supplementation + drought-affected area (food scarcity) + age 3 years (highest risk group: 6 months to 6 years).
WHO Classification of Xerophthalmia:
StageClassification
XNNight blindness
X1AConjunctival xerosis
X1BBitot's spots with conjunctival xerosis
X2Corneal xerosis
X3ACorneal ulceration/keratomalacia (<1/3 corneal surface)
X3BCorneal ulceration/keratomalacia (≥1/3 corneal surface)
XSCorneal scar
XFXerophthalmic fundus
This child has XN + X1B.

2. Clinical Features of Vitamin A Deficiency

Ocular manifestations (most prominent):
  • Night blindness (Nyctalopia) - earliest symptom; inability to see in dim light
  • Conjunctival xerosis - dry, hazy, lusterless conjunctiva
  • Bitot's spots - foamy, cheesy, triangular, whitish deposits on the temporal conjunctiva; composed of desquamated epithelial cells and dried secretions
  • Corneal xerosis - dull, hazy cornea
  • Keratomalacia - corneal softening/melting; sight-threatening emergency
  • Corneal ulceration - can lead to permanent blindness
  • Corneal scarring - after healing
Systemic manifestations:
  • Skin: Follicular hyperkeratosis (phrynoderma/"toad skin") - dry, rough skin with follicular plugging
  • Increased susceptibility to infections - respiratory, GI (Vitamin A maintains epithelial integrity)
  • Increased child mortality - 20% of Vitamin A deficient children at increased risk of death from common infections
  • Growth retardation
  • Anemia (often coexists)
  • Reproductive failure in severe deficiency

3. Methods to Prevent Vitamin A Deficiency

Short-term measures (most immediate impact):
Massive dose Vitamin A supplementation (National Programme):
  • First dose: 1,00,000 IU given with measles vaccination at 9 months
  • Subsequent doses: 2,00,000 IU every 6 months up to age 5 years
  • For sick children with xerophthalmia: treat at health facility
  • Children with measles: give one dose of Vitamin A if not received in previous 1 month
  • Cases of severe malnutrition: give one additional dose
Treatment dosing (AAP/WHO):
  • Day 1 + Day 2 + Day 8-14: age-based mega-dose
Medium-term measures:
  • Food fortification - with Vitamin A (see below)
  • Nutrition rehabilitation
Long-term measures:
  • Promoting consumption of Vitamin A-rich foods (dark green leafy vegetables, yellow/orange fruits, liver, eggs, milk, fish)
  • Promoting breastfeeding
  • Immunization against measles (measles depletes Vitamin A stores)
  • Control of diarrhea (environmental sanitation, safe water)
  • Better maternal and child health services
  • Health and nutrition education

4. Food Fortification

Food fortification is the addition of one or more essential nutrients to a food item (whether or not it is normally contained in the food) for the purpose of preventing or correcting a demonstrated deficiency of one or more nutrients in the population.
Types of fortification:
  • Mass fortification - adding nutrients to commonly consumed staple foods (salt, flour, oil, sugar)
  • Targeted fortification - for specific at-risk populations (infant formula, complementary foods)
  • Market-driven fortification - voluntary by manufacturers
Examples relevant to Vitamin A:
  • Edible oil and vanaspati - fortified with Vitamin A (mandatory in India)
  • Sugar - fortified with Vitamin A in some countries (Central America model)
  • Milk - Vitamin A + D fortification
  • Wheat flour - multi-micronutrient fortification
FSSAI Standards (India): The Food Safety and Standards Authority of India mandates fortification of oil (Vitamin A + D), flour (iron, folic acid, Vitamin B12), milk, rice, and salt (double-fortified with iron and iodine) under the "+F" logo program.
Advantages of food fortification:
  1. Does not require change in food habits
  2. Reaches large populations through existing food distribution
  3. Cost-effective compared to supplementation
  4. Sustainable long-term strategy
  5. Does not require medical infrastructure for delivery
  6. Socially acceptable
Limitations:
  • Requires food technology and industry cooperation
  • Must preserve food quality (taste, color, shelf life)
  • Not everyone consumes fortified vehicle
  • Needs regulation and quality control
  • May not reach the most vulnerable (subsistence farmers, remote areas)

CASE 4: Nutritional Anaemia / Iron Deficiency Anaemia (32-year-old woman, menorrhagia, microcytic hypochromic)

1. Diagnosis

Iron Deficiency Anaemia (IDA) - the most common form of nutritional anaemia
Basis: Premenopausal woman + menorrhagia (increased iron loss) + diet lacking red meat (inadequate iron intake) + fatigue + pallor + pica (ice craving = pagophagia) + microcytic hypochromic indices + markedly low serum ferritin.
WHO Definition of Anaemia (Hb cut-offs):
GroupHb Cut-off
Adult men< 13 g/dL
Non-pregnant women< 12 g/dL
Pregnant women< 11 g/dL
Children 6-59 months< 11 g/dL
Children 5-11 years< 11.5 g/dL
Children 12-14 years< 12 g/dL
Classification by severity (India - National Programme):
GradeHb (g/dL)
Mild10-10.9 (non-pregnant); 10-10.9
Moderate7-9.9
Severe< 7
Very severe< 4

2. Interventions to Control Nutritional Anaemia in the Community

Three main strategies:
A. Iron and Folic Acid (IFA) Supplementation:
Dosages under National Program:
  • Pregnant/Lactating women: 1 tablet daily containing 100 mg elemental iron (300 mg ferrous sulphate) + 0.5 mg folic acid - continue 2-3 months after Hb normalizes
  • Children 6-60 months: Liquid formulation - 20 mg elemental iron + 0.1 mg folic acid daily for 100 days
  • Children 6-10 years: 30 mg elemental iron + 250 mcg folic acid/day for 100 days
  • Adolescents: Same as adults
At health facility: if Hb 10-10.9 g/dL → IFA tablets; if Hb < 10 g/dL → refer to PHC
B. Iron Fortification:
  • Double Fortified Salt (DFS) - fortified with both iron and iodine; proven to reduce anaemia prevalence
  • Iron-fortified wheat flour - mandatory fortification under FSSAI
  • WHO historically had reservations but NIN Hyderabad studies proved efficacy of ferric ortho-phosphate fortified salt
  • Salt was chosen as the vehicle since it is universally consumed, no special delivery system needed
C. Long-term dietary/other strategies:
  • Dietary diversification - promoting iron-rich foods (leafy greens, meat, pulses)
  • Promoting Vitamin C-rich foods alongside iron sources (enhances absorption)
  • Avoiding tea/coffee with meals (inhibit non-heme iron absorption)
  • Control of hookworm, malaria, schistosomiasis (major causes of anaemia)
  • Nutritional education and counseling
  • Promotion of delayed cord clamping in newborns
  • Use of iron pots for cooking

3. Anaemia Mukt Bharat (AMB)

Anaemia Mukt Bharat is a national strategy launched as part of POSHAN Abhiyaan and Intensified National Iron Plus Initiative (I-NIPI) to reduce anaemia prevalence in India.
Launched: 2018, under the Ministry of Health and Family Welfare.
Target: Reduce anaemia prevalence by 3 percentage points per year across the life cycle.
Six targeted beneficiary groups (6x6x6 strategy):
  1. Children 6-59 months
  2. Children 5-9 years
  3. Adolescent girls and boys (10-19 years)
  4. Women of reproductive age (20-49 years)
  5. Pregnant women
  6. Lactating mothers
Six interventions:
  1. IFA supplementation - prophylactic and therapeutic
  2. Deworming - Albendazole (National Deworming Day - Feb 10 and Aug 10)
  3. Point of care testing for anaemia - using digital hemoglobinometer at facilities
  4. Behaviour Change Communication (BCC) - nutrition counselling, dietary advice
  5. Delayed cord clamping - for newborns (retains 40-60 mL iron-rich blood)
  6. Mandatory fortified rice distribution through PDS and government schemes (MDM, ICDS, PMGKY)
Six delivery platforms:
  1. ICDS (Anganwadi)
  2. School Health Programme
  3. RBSK (Rashtriya Bal Swasthya Karyakram)
  4. Reproductive, Maternal, Newborn, Child, and Adolescent Health (RMNCHA+)
  5. National Adolescent Health Programme (RKSK / Rashtriya Kishor Swasthya Karyakram)
  6. Primary Healthcare / HWCs (Health and Wellness Centres)
Key measures:
  • AMB Tracker App for real-time monitoring
  • Hemoglobinometer at all delivery platforms
  • Dedicated AMB Day / Nutrition Day at Anganwadis
  • Village Health and Sanitation Nutrition Days (VHSNDs)

CASE 5: Endemic Fluorosis (50-year-old farmer, Rajasthan, mottled teeth + spinal stiffness)

1. Diagnosis

Endemic Fluorosis (Skeletal + Dental Fluorosis)
Basis:
  • Lives in known fluoride-endemic area (Rajasthan)
  • Lifelong consumption of deep borewell water (>100 feet; groundwater has high fluoride)
  • Dental fluorosis - brownish-yellow mottling and pitting of permanent teeth
  • Skeletal fluorosis - progressive low back pain, morning stiffness of spine, difficulty climbing stairs (5 years duration)
  • Adult children who migrated are unaffected - confirms environmental/water-borne cause
  • No family history of similar complaints in migrated children confirms it is acquired, not genetic
Permissible fluoride levels (BIS/WHO):
  • Safe: 0.5-0.8 mg/L
  • Permissible: up to 1.5 mg/L (dental fluorosis threshold)
  • Toxic: > 3.0 mg/L (skeletal fluorosis)

2. Sources of Fluoride

Natural Sources (most important):
  • Groundwater (deep borewells) - most common source in endemic areas; fluoride leaches from fluorapatite and other fluoride-containing rocks
  • Fluoride in soil
  • Food: tea leaves (high), fish, some vegetables grown in fluoride-rich soil
  • Seafood and marine fish
Anthropogenic (man-made) Sources:
  • Industrial emissions: aluminum smelting, phosphate fertilizer plants, brick kilns
  • Fluoride-containing pesticides
  • Dental products: fluoride toothpaste, fluoride gels (not relevant in endemic areas)
  • Fluoridated drinking water (in some countries, intentionally added for caries prevention at 0.7-1 mg/L)
  • Coal combustion products (in China, India - burning coal can release fluoride)
  • Sorghum/jowar-based diet - promotes higher fluoride retention from water
Endemic areas in India: Andhra Pradesh (Nellore, Nalgonda, Prakasam), Punjab, Haryana, Karnataka, Kerala, Tamil Nadu, and Rajasthan

3. Clinical Features of Fluorosis

A. Dental Fluorosis (most common; occurs with fluoride > 1.5 mg/L during tooth formation):
  • Dean's Index classifies dental fluorosis (very mild → mild → moderate → severe)
  • Occurs only during first 7 years of life (calcification period of permanent teeth)
  • Early: Loss of shiny appearance; chalk-white patches on enamel (especially upper incisors)
  • Progressive: White patches turn yellow → brown → black
  • Severe: Loss of enamel gives teeth a "corroded" or pitted appearance
  • Almost entirely confined to permanent teeth
  • Mottling best seen on incisors of upper jaw
  • Cosmetically disfiguring but teeth are actually more resistant to caries
B. Skeletal Fluorosis (fluoride intake 3.0-6.0 mg/L+ for prolonged periods):
  • Early (pre-skeletal stage): Backache, joint pains, muscle weakness
  • Stage 1: Sporadic pain in small joints; slight stiffness; radiological changes (osteosclerosis)
  • Stage 2: Chronic joint pain, arthritis, calcification of ligaments and tendons (especially spinal ligaments); intermittent acute exacerbations
  • Stage 3 (Crippling fluorosis): Occurs when fluoride > 10 mg/L; permanent disability, kyphosis, flexion deformities, neurological compression
  • Radiological: Osteosclerosis, chalky-white dense bones, calcified interosseous membranes, osteoporosis in some forms
C. Genu Valgum Fluorosis (special form in South India):
  • Characterized by genu valgum (knock-knees) and osteoporosis of lower limbs
  • Seen in AP and Tamil Nadu
  • Associated with sorghum (jowar)-based staple diet
  • Sorghum promotes higher fluoride retention compared to rice-based diet
D. Non-skeletal/Soft tissue manifestations:
  • Neurological: myelopathy, radiculopathy from spinal cord/nerve root compression
  • Thyroid dysfunction
  • Reproductive dysfunction (high doses)
  • Kidney damage
Intervention/Control:
  • Change water source to one with lower fluoride (< 0.8 mg/L); surface water has lower fluoride
  • Nalgonda technique - defluoridation using lime + alum (flocculation, sedimentation, filtration); developed by NEERI, Nagpur
  • Avoid fluoride supplements and fluoride toothpaste (in children < 6 years) in endemic areas
  • NPPCF (National Programme for Prevention and Control of Fluorosis) under Ministry of Health

All answers sourced from Park's Textbook of Preventive and Social Medicine (24th edition).

Create a summary PDF with exam-focused tables for quick revision

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || echo "workspace empty or missing"

Running Command

mkdir -p /tmp/workspace/psm-revision && python3 -c "from reportlab.lib import colors; print('reportlab OK')"

Writing File

~/psm-revision/generate_pdf.py

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

OUTPUT = "/tmp/workspace/psm-revision/PSM_Short_Cases_Revision.pdf"

# ── Colour palette ────────────────────────────────────────────────
C_DEEP_BLUE   = colors.HexColor("#1A3A5C")
C_MID_BLUE    = colors.HexColor("#2563A8")
C_LIGHT_BLUE  = colors.HexColor("#D6E4F0")
C_TEAL        = colors.HexColor("#0B7A75")
C_TEAL_LIGHT  = colors.HexColor("#D0EFED")
C_ORANGE      = colors.HexColor("#E07B39")
C_ORANGE_LIGHT= colors.HexColor("#FDEBD0")
C_GREEN       = colors.HexColor("#1E7A1E")
C_GREEN_LIGHT = colors.HexColor("#D5F0D5")
C_RED         = colors.HexColor("#C0392B")
C_RED_LIGHT   = colors.HexColor("#FADBD8")
C_PURPLE      = colors.HexColor("#6C3483")
C_PURPLE_LIGHT= colors.HexColor("#E8DAEF")
C_YELLOW_LIGHT= colors.HexColor("#FEF9E7")
C_GRAY_LIGHT  = colors.HexColor("#F5F5F5")
C_GRAY_MED    = colors.HexColor("#CCCCCC")
C_BLACK       = colors.black
C_WHITE       = colors.white

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

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

styles = getSampleStyleSheet()

# ── Custom styles ─────────────────────────────────────────────────
def make_style(name, parent="Normal", **kw):
    return ParagraphStyle(name, parent=styles[parent], **kw)

S_COVER_TITLE = make_style("CoverTitle",
    fontSize=26, fontName="Helvetica-Bold",
    textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=8)
S_COVER_SUB   = make_style("CoverSub",
    fontSize=13, fontName="Helvetica",
    textColor=C_LIGHT_BLUE, alignment=TA_CENTER, spaceAfter=4)
S_CASE_HEADER = make_style("CaseHdr",
    fontSize=13, fontName="Helvetica-Bold",
    textColor=C_WHITE, alignment=TA_LEFT, spaceAfter=0, leading=17)
S_SECTION_HDR = make_style("SecHdr",
    fontSize=10.5, fontName="Helvetica-Bold",
    textColor=C_DEEP_BLUE, spaceBefore=6, spaceAfter=3)
S_BODY        = make_style("Body",
    fontSize=9, fontName="Helvetica",
    textColor=C_BLACK, leading=13, spaceAfter=3)
S_BODY_BOLD   = make_style("BodyBold",
    fontSize=9, fontName="Helvetica-Bold",
    textColor=C_BLACK, leading=13, spaceAfter=3)
S_KEY         = make_style("Key",
    fontSize=8.5, fontName="Helvetica-Bold",
    textColor=C_RED, leading=12)
S_NOTE        = make_style("Note",
    fontSize=8.5, fontName="Helvetica-Oblique",
    textColor=C_TEAL, leading=12, spaceAfter=4)
S_FOOTER      = make_style("Footer",
    fontSize=7.5, fontName="Helvetica",
    textColor=colors.grey, alignment=TA_CENTER)
S_TBL_HDR     = make_style("TblHdr",
    fontSize=8.5, fontName="Helvetica-Bold",
    textColor=C_WHITE, alignment=TA_CENTER, leading=11)
S_TBL_CELL    = make_style("TblCell",
    fontSize=8.3, fontName="Helvetica",
    textColor=C_BLACK, leading=11)
S_TBL_CELL_B  = make_style("TblCellB",
    fontSize=8.3, fontName="Helvetica-Bold",
    textColor=C_BLACK, leading=11)
S_TBL_CELL_RED= make_style("TblCellRed",
    fontSize=8.3, fontName="Helvetica-Bold",
    textColor=C_RED, leading=11)

# ── Helper functions ──────────────────────────────────────────────
def case_banner(num, title, subtitle, bg_color):
    """Returns a Table acting as a coloured case header banner."""
    inner = Table([
        [Paragraph(f"CASE {num}  |  {title}", S_CASE_HEADER)],
        [Paragraph(subtitle, make_style(f"CS{num}",
            fontSize=8.5, fontName="Helvetica-Oblique",
            textColor=C_LIGHT_BLUE, leading=11))],
    ], colWidths=[W])
    inner.setStyle(TableStyle([
        ("BACKGROUND",  (0,0), (-1,-1), bg_color),
        ("LEFTPADDING",  (0,0), (-1,-1), 10),
        ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("TOPPADDING",   (0,0), (0,0),   8),
        ("BOTTOMPADDING",(0,-1),(-1,-1), 8),
        ("ROUNDEDCORNERS", [6]),
    ]))
    return inner

def section_label(text, color=C_DEEP_BLUE):
    bar = Table([[Paragraph(text, make_style("SL",
        fontSize=9.5, fontName="Helvetica-Bold",
        textColor=C_WHITE, leading=12))]],
        colWidths=[W])
    bar.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), color),
        ("TOPPADDING",   (0,0),(-1,-1), 4),
        ("BOTTOMPADDING",(0,0),(-1,-1), 4),
        ("LEFTPADDING",  (0,0),(-1,-1), 8),
    ]))
    return bar

def make_table(headers, rows, col_widths, hdr_color=C_DEEP_BLUE, alt=True):
    header_row = [Paragraph(h, S_TBL_HDR) for h in headers]
    table_data = [header_row]
    for r in rows:
        table_data.append([Paragraph(str(c), S_TBL_CELL) if not str(c).startswith("**")
                           else Paragraph(str(c)[2:-2], S_TBL_CELL_B) for c in r])
    t = Table(table_data, colWidths=col_widths, repeatRows=1)
    style = [
        ("BACKGROUND",   (0,0), (-1,0),  hdr_color),
        ("TEXTCOLOR",    (0,0), (-1,0),  C_WHITE),
        ("GRID",         (0,0), (-1,-1), 0.4, C_GRAY_MED),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ("LEFTPADDING",  (0,0), (-1,-1), 5),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
    ]
    if alt:
        for i in range(1, len(table_data)):
            if i % 2 == 0:
                style.append(("BACKGROUND", (0,i), (-1,i), C_GRAY_LIGHT))
    t.setStyle(TableStyle(style))
    return t

def highlight_box(text, bg=C_YELLOW_LIGHT, border=C_ORANGE):
    t = Table([[Paragraph(text, S_BODY)]], colWidths=[W])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), bg),
        ("BOX",          (0,0),(-1,-1), 1, border),
        ("TOPPADDING",   (0,0),(-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING",  (0,0),(-1,-1), 10),
    ]))
    return t

def mnemonic_box(mnemonic, meaning):
    rows = [[Paragraph(f"<b>{m.strip()}</b>", S_TBL_CELL_B),
             Paragraph(meaning[i].strip(), S_TBL_CELL)]
            for i, m in enumerate(mnemonic)]
    t = Table(rows, colWidths=[1.5*cm, W-1.5*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), C_YELLOW_LIGHT),
        ("GRID",         (0,0),(-1,-1), 0.3, C_GRAY_MED),
        ("TOPPADDING",   (0,0),(-1,-1), 3),
        ("BOTTOMPADDING",(0,0),(-1,-1), 3),
        ("LEFTPADDING",  (0,0),(-1,-1), 5),
    ]))
    return t

def sp(n=1): return Spacer(1, n*mm)

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

# ── COVER PAGE ────────────────────────────────────────────────────
cover = Table([[
    Paragraph("PSM SHORT CASES", S_COVER_TITLE),
    Paragraph("Exam-Focused Quick Revision Summary", S_COVER_SUB),
    Paragraph("MBBS Final Year  |  Preventive & Social Medicine", S_COVER_SUB),
    Paragraph("Based on Park's Textbook of PSM (24th Ed.)", make_style("CV3",
        fontSize=10, fontName="Helvetica-Oblique",
        textColor=colors.HexColor("#A9CCE3"), alignment=TA_CENTER)),
    Spacer(1, 6*mm),
    Paragraph("Cases Covered:", make_style("CV4", fontSize=11,
        fontName="Helvetica-Bold", textColor=C_ORANGE, alignment=TA_CENTER)),
    Paragraph(
        "1. Obesity   •   2. Protein-Energy Malnutrition (PEM)"
        "   •   3. Vitamin A Deficiency<br/>"
        "4. Nutritional Anaemia / IDA   •   5. Endemic Fluorosis",
        make_style("CV5", fontSize=10, fontName="Helvetica",
            textColor=C_LIGHT_BLUE, alignment=TA_CENTER, leading=16)),
]], colWidths=[W])
cover.setStyle(TableStyle([
    ("BACKGROUND",   (0,0),(-1,-1), C_DEEP_BLUE),
    ("TOPPADDING",   (0,0),(-1,-1), 28),
    ("BOTTOMPADDING",(0,0),(-1,-1), 28),
    ("LEFTPADDING",  (0,0),(-1,-1), 20),
    ("RIGHTPADDING", (0,0),(-1,-1), 20),
    ("ROUNDEDCORNERS",[8]),
]))
story.append(cover)
story.append(sp(8))
story.append(Paragraph("Quick-Reference Summary  |  MedMayur  |  July 2026",
                        S_FOOTER))
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════
# CASE 1 — OBESITY
# ══════════════════════════════════════════════════════════════════
story.append(case_banner(1, "OBESITY", "42F, BMI 48, HTN, IFG, knee pain, sleep apnea", C_DEEP_BLUE))
story.append(sp(4))

story.append(section_label("Q1. Definition of Obesity", C_MID_BLUE))
story.append(sp(2))
story.append(highlight_box(
    "<b>Obesity</b> = Abnormal growth of adipose tissue due to:<br/>"
    "• <b>Hypertrophic obesity</b> – enlargement of fat cell size<br/>"
    "• <b>Hyperplastic obesity</b> – increase in fat cell number<br/>"
    "• <b>Mixed</b> – combination of both<br/><br/>"
    "Expressed as BMI (kg/m²). Overweight = BMI ≥25; Obesity = BMI ≥30."
))
story.append(sp(4))

story.append(section_label("Q2. Epidemiological Determinants of Obesity", C_MID_BLUE))
story.append(sp(2))
story.append(make_table(
    ["Category", "Key Determinants"],
    [
        ["Genetic", "Family history; gene variants (FTO gene); heritable tendency for fat storage"],
        ["Dietary", "High caloric intake, saturated fats, refined sugars, sugar-sweetened beverages"],
        ["Physical activity", "Sedentary occupation (this case), desk jobs, screen time, low leisure activity"],
        ["Socioeconomic", "Higher income in developing countries; urbanization; processed food access"],
        ["Age & Sex", "Increases with age; post-menopausal women (shift in LPL activity)"],
        ["Hormonal", "Hypothyroidism, Cushing's syndrome, PCOS, hyperinsulinism"],
        ["Psychological", "Stress eating, binge eating disorder, night eating syndrome"],
        ["Medications", "Corticosteroids, antipsychotics (olanzapine), insulin, some antidepressants"],
        ["Gut microbiome", "Dysbiosis → increased energy extraction from diet"],
    ],
    [3.2*cm, W-3.2*cm], C_DEEP_BLUE
))
story.append(sp(4))

story.append(section_label("Q3. Obesity Indices & Criteria for Assessment", C_MID_BLUE))
story.append(sp(2))
story.append(make_table(
    ["Index", "Formula", "Threshold"],
    [
        ["**BMI (Quetelet's Index)**", "Weight (kg) / Height² (m²)", "Obesity ≥ 30"],
        ["Ponderal Index", "Height (cm) / ∛Weight (kg)", "Obesity < 12.5 (lower = obese)"],
        ["Brocca Index", "Height (cm) − 100 = ideal weight (kg)", "> 20% above ideal = obese"],
        ["Lorentz formula", "Ht−100−(Ht−150)/4 men; /2 women", "Ideal weight in kg"],
        ["Corpulence Index", "Actual weight / Desirable weight", "> 1.2 = overweight"],
        ["Waist Circumference", "Measured at umbilicus level", "Risk: ♀>88 cm, ♂>102 cm"],
        ["Waist-Hip Ratio (WHR)", "Waist / Hip circumference", "Risk: ♀>0.85, ♂>1.0"],
        ["Skinfold thickness", "Calipers at triceps, subscapular", "Best field estimate of body fat %"],
    ],
    [4.5*cm, 6*cm, W-10.5*cm], C_TEAL
))
story.append(sp(3))

story.append(Paragraph("<b>WHO BMI Classification (Adults):</b>", S_SECTION_HDR))
story.append(make_table(
    ["Classification", "BMI (kg/m²)", "Comorbidity Risk"],
    [
        ["Underweight", "< 18.5", "Low (but other risks ↑)"],
        ["Normal", "18.5 – 24.9", "Average"],
        ["Pre-obese (Overweight)", "25.0 – 29.9", "Increased"],
        ["Obese Class I", "30.0 – 34.9", "Moderate"],
        ["Obese Class II", "35.0 – 39.9", "Severe"],
        ["**Obese Class III (Morbid)**", "**≥ 40.0**", "**Very Severe**"],
    ],
    [5*cm, 4*cm, W-9*cm], C_ORANGE
))
story.append(sp(2))
story.append(Paragraph(
    "★ This patient (BMI 48) = Class III Morbid Obesity → very severe risk",
    S_KEY))
story.append(sp(4))

story.append(section_label("Q4. Prevention of Obesity", C_MID_BLUE))
story.append(sp(2))
story.append(make_table(
    ["Level", "Intervention"],
    [
        ["**Primary Prevention**",
         "Dietary modification (↓ saturated fat, ↓ refined sugars, ↑ fiber); "
         "≥30 min moderate activity most days; health education; school-based programs; "
         "restriction of junk food advertising; workplace wellness"],
        ["**Secondary Prevention**",
         "Regular BMI & waist circumference screening; target 5-10% weight loss initially; "
         "behavioural therapy / CBT; pharmacotherapy (orlistat for BMI >30 with comorbidities)"],
        ["**Tertiary Prevention**",
         "Bariatric surgery for BMI ≥40 or ≥35 with serious comorbidities; "
         "management of HTN, T2DM, sleep apnoea, osteoarthritis"],
    ],
    [3.5*cm, W-3.5*cm], C_GREEN
))
story.append(sp(2))
story.append(Paragraph(
    "WHO Goal: Maintain BMI 18.5–24.9 throughout adulthood; prevent weight gain >5 kg in all adults.",
    S_NOTE))

story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════
# CASE 2 — PEM
# ══════════════════════════════════════════════════════════════════
story.append(case_banner(2, "PROTEIN-ENERGY MALNUTRITION (PEM)",
    "2-year-old child, wasting + bilateral pedal edema, recurrent diarrhea",
    colors.HexColor("#5D4037")))
story.append(sp(4))

story.append(section_label("Q1. Diagnosis", colors.HexColor("#5D4037")))
story.append(sp(2))
story.append(highlight_box(
    "<b>KWASHIORKOR</b> — Severe form of PEM<br/><br/>"
    "Key diagnostic features: <b>Bilateral pedal edema</b> (hallmark) + <b>generalized wasting</b> + "
    "lethargy + low albumin + inadequate protein intake + recurrent diarrhea + age 1–3 years.",
    bg=C_RED_LIGHT, border=C_RED
))
story.append(sp(4))

story.append(section_label("Q2. Classification of PEM & Differentiation", colors.HexColor("#5D4037")))
story.append(sp(2))

story.append(Paragraph("<b>Wellcome Classification:</b>", S_SECTION_HDR))
story.append(make_table(
    ["Type", "% Standard Weight", "Edema"],
    [
        ["Underweight", "60–80%", "Absent"],
        ["**Kwashiorkor**", "**60–80%**", "**Present**"],
        ["Marasmus", "< 60%", "Absent"],
        ["Marasmic-Kwashiorkor", "< 60%", "Present"],
    ],
    [4.5*cm, 4*cm, W-8.5*cm], colors.HexColor("#5D4037")
))
story.append(sp(3))

story.append(Paragraph("<b>Gomez Classification (Weight-for-Age):</b>", S_SECTION_HDR))
story.append(make_table(
    ["Grade", "Weight for Age", "Severity"],
    [
        ["Grade I", "75–90% of standard", "Mild"],
        ["Grade II", "60–74% of standard", "Moderate"],
        ["Grade III", "< 60% of standard", "Severe"],
    ],
    [2.5*cm, 5*cm, W-7.5*cm], colors.HexColor("#795548")
))
story.append(sp(3))

story.append(Paragraph("<b>Kwashiorkor vs. Marasmus — High-Yield Differentiation:</b>", S_SECTION_HDR))
story.append(make_table(
    ["Feature", "Kwashiorkor", "Marasmus"],
    [
        ["Cause", "Protein deficiency (low P:E ratio)", "Deficiency of protein + calories"],
        ["Age", "1–3 years (weaning age)", "< 1 year (infancy)"],
        ["**Edema**", "**Present (HALLMARK)**", "**Absent**"],
        ["Wasting", "Present but masked by edema", "Severe, very marked"],
        ["Subcutaneous fat", "Relatively preserved", "Markedly reduced ('skin & bones')"],
        ["Face", "Moon face", "Monkey/old man face"],
        ["Skin", "Flaky paint dermatosis, pigmentation", "Loose, wrinkled, dry"],
        ["Hair", "Depigmented, Flag sign, easily plucked", "Sparse, thin"],
        ["Liver", "Enlarged (fatty liver)", "Normal or small"],
        ["Appetite", "Poor, irritable", "Hungry, alert"],
        ["Serum albumin", "Markedly low", "Less markedly reduced"],
        ["Mood", "Apathetic, irritable", "Alert but miserable"],
    ],
    [3.5*cm, 5.5*cm, W-9*cm], colors.HexColor("#5D4037")
))
story.append(sp(2))
story.append(Paragraph(
    "★ Mnemonic for Kwashiorkor: EDEMA-MHFL = Edema, Depigmentation, "
    "Enlarged liver, Moon face, Apathy, Muscle wasting (hidden), Hair changes, Fatty liver, Low albumin",
    S_NOTE))
story.append(sp(4))

story.append(section_label("Q3. Epidemiology of PEM", colors.HexColor("#5D4037")))
story.append(sp(2))
story.append(make_table(
    ["Key Fact", "Data"],
    [
        ["Child mortality", "Underlying cause in ~30% of under-5 deaths"],
        ["Stunting (low HFA)", "~27% of children in low-income countries"],
        ["Wasting (low WFH)", "~17% of children globally"],
        ["Mortality risk", "Severely wasted children 9× more likely to die"],
        ["High-risk age", "6 months – 3 years (weaning period)"],
        ["Key risk factors", "Poverty, low literacy, large family, diarrhea, measles, poor weaning foods"],
        ["India: high burden states", "UP, Bihar, Jharkhand, Rajasthan, MP"],
    ],
    [5*cm, W-5*cm], colors.HexColor("#795548")
))
story.append(sp(4))

story.append(section_label("Q4. Prevention & Control of PEM", colors.HexColor("#5D4037")))
story.append(sp(2))
story.append(make_table(
    ["Strategy", "Measures"],
    [
        ["Health Promotion",
         "Exclusive breastfeeding ×6 months; low-cost weaning foods; "
         "nutrition education; birth spacing; maternal supplementation; home economics"],
        ["Specific Protection",
         "Protein & energy-rich diet (milk, eggs, fruits); immunization (measles); "
         "food fortification"],
        ["Early Detection",
         "Growth monitoring charts (weight-for-age); MUAC < 12.5 cm = severe malnutrition; "
         "12.5–13.5 cm = mild-moderate"],
        ["Government Programs",
         "ICDS (supplementary nutrition); Mid-Day Meal; Poshan Abhiyaan; "
         "SAM management via NRCs (Nutrition Rehabilitation Centres)"],
    ],
    [3.8*cm, W-3.8*cm], colors.HexColor("#5D4037")
))

story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════
# CASE 3 — VITAMIN A DEFICIENCY
# ══════════════════════════════════════════════════════════════════
story.append(case_banner(3, "VITAMIN A DEFICIENCY (XEROPHTHALMIA)",
    "3-year-old, night blindness + Bitot's spots, no Vit.A supplementation",
    C_TEAL))
story.append(sp(4))

story.append(section_label("Q1. Diagnosis", C_TEAL))
story.append(sp(2))
story.append(highlight_box(
    "<b>XEROPHTHALMIA</b> due to Vitamin A Deficiency<br/><br/>"
    "Stage: <b>XN (Night blindness) + X1B (Bitot's spots)</b><br/><br/>"
    "Basis: Night blindness + bilateral foamy Bitot's spots + prolonged exclusive cereal weaning "
    "(no Vit.A) + drought area (food scarcity) + age 3 years (highest risk: 6 months–6 years).",
    bg=C_TEAL_LIGHT, border=C_TEAL
))
story.append(sp(4))

story.append(section_label("Q2. Clinical Features", C_TEAL))
story.append(sp(2))
story.append(Paragraph("<b>WHO Xerophthalmia Classification:</b>", S_SECTION_HDR))
story.append(make_table(
    ["Stage", "Code", "Feature"],
    [
        ["Night blindness", "XN", "Earliest symptom; child cannot see in dim light"],
        ["Conjunctival xerosis", "X1A", "Dry, hazy, lusterless conjunctiva"],
        ["**Bitot's spots**", "**X1B**", "**Foamy, cheesy triangular white deposits on temporal conjunctiva**"],
        ["Corneal xerosis", "X2", "Dull, hazy cornea"],
        ["Corneal ulcer / keratomalacia (<1/3)", "X3A", "Partial corneal melt"],
        ["Corneal ulcer / keratomalacia (≥1/3)", "X3B", "Major corneal melt — emergency"],
        ["Corneal scar", "XS", "After healing — permanent"],
        ["Xerophthalmic fundus", "XF", "Rare fundus changes"],
    ],
    [4.5*cm, 1.5*cm, W-6*cm], C_TEAL
))
story.append(sp(3))
story.append(Paragraph("<b>Systemic features:</b>", S_SECTION_HDR))
story.append(make_table(
    ["System", "Manifestation"],
    [
        ["Skin", "Follicular hyperkeratosis (Phrynoderma / 'toad skin') — dry, rough, follicular plugging"],
        ["Immunity", "↑ susceptibility to respiratory & GI infections; 20% of VAD children at ↑ mortality risk"],
        ["Growth", "Growth retardation"],
        ["Blood", "Anaemia (often co-exists)"],
        ["Reproduction", "Reproductive failure in severe, prolonged deficiency"],
    ],
    [3*cm, W-3*cm], C_TEAL
))
story.append(sp(4))

story.append(section_label("Q3. Methods to Prevent Vitamin A Deficiency", C_TEAL))
story.append(sp(2))
story.append(make_table(
    ["Approach", "Measures"],
    [
        ["**Massive Dose Supplementation\n(Short-term — most impactful)**",
         "• 9 months: 1,00,000 IU (with measles vaccine)\n"
         "• Every 6 months up to age 5: 2,00,000 IU\n"
         "• Xerophthalmia: treat at facility\n"
         "• Measles cases: 1 dose Vit.A (if not received in past 1 month)\n"
         "• SAM cases: 1 additional dose"],
        ["Food Fortification\n(Medium-term)",
         "Edible oil / vanaspati with Vit.A (mandatory in India); "
         "sugar (Central America model); milk (Vit.A+D)"],
        ["Dietary Diversification\n(Long-term)",
         "Dark green leafy vegetables, yellow/orange fruits & veg, liver, eggs, milk, fish; "
         "promote breastfeeding"],
        ["Infection Control",
         "Immunization against measles; control diarrhea (safe water, sanitation); "
         "treat infections promptly"],
    ],
    [4.5*cm, W-4.5*cm], C_TEAL
))
story.append(sp(4))

story.append(section_label("Q4. Food Fortification", C_TEAL))
story.append(sp(2))
story.append(highlight_box(
    "<b>Food Fortification</b> = Addition of one or more essential nutrients to a food "
    "(whether or not normally present) to prevent/correct demonstrated deficiency in the population."
))
story.append(sp(2))
story.append(make_table(
    ["Type", "Definition", "Example"],
    [
        ["Mass fortification", "Nutrients added to staple foods for general population",
         "Iodized salt, Vitamin A in oil"],
        ["Targeted fortification", "For specific at-risk groups",
         "Infant formula, complementary foods"],
        ["Market-driven", "Voluntary by food industry", "Fortified breakfast cereals"],
    ],
    [3.5*cm, 5.5*cm, W-9*cm], C_TEAL
))
story.append(sp(2))
story.append(Paragraph("<b>Advantages:</b> No change in food habits needed | Reaches large populations "
    "via existing distribution | Cost-effective | Sustainable | No medical infrastructure required<br/>"
    "<b>FSSAI '+F' program</b>: Mandates fortification of oil (Vit A+D), flour (Fe+FA+B12), "
    "milk, rice, and double-fortified salt.", S_BODY))

story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════
# CASE 4 — NUTRITIONAL ANAEMIA / IDA
# ══════════════════════════════════════════════════════════════════
story.append(case_banner(4, "IRON DEFICIENCY ANAEMIA (NUTRITIONAL ANAEMIA)",
    "32F, menorrhagia, red-meat deficient diet, microcytic hypochromic, low ferritin",
    C_RED))
story.append(sp(4))

story.append(section_label("Q1. Diagnosis", C_RED))
story.append(sp(2))
story.append(highlight_box(
    "<b>Iron Deficiency Anaemia (IDA)</b> — most common nutritional anaemia<br/><br/>"
    "WHO Definition: 'A condition where Hb is lower than normal due to deficiency of ≥1 essential "
    "nutrients, regardless of cause.' (WHO)<br/><br/>"
    "Key findings: Premenopausal + menorrhagia (↑ Fe loss) + diet lacking red meat (↓ Fe intake) "
    "+ fatigue + pallor + <b>pagophagia (pica for ice)</b> + microcytic hypochromic + low serum ferritin.",
    bg=C_RED_LIGHT, border=C_RED
))
story.append(sp(3))
story.append(Paragraph("<b>WHO Haemoglobin Cut-offs for Anaemia:</b>", S_SECTION_HDR))
story.append(make_table(
    ["Group", "Hb Cut-off (g/dL)"],
    [
        ["Adult men", "< 13.0"],
        ["**Non-pregnant women**", "**< 12.0**"],
        ["Pregnant women", "< 11.0"],
        ["Children 6–59 months", "< 11.0"],
        ["Children 5–11 years", "< 11.5"],
        ["Children 12–14 years", "< 12.0"],
    ],
    [6*cm, W-6*cm], C_RED
))
story.append(sp(2))
story.append(Paragraph("<b>Severity Classification (India, National Programme):</b>", S_SECTION_HDR))
story.append(make_table(
    ["Grade", "Hb (g/dL)", "Management"],
    [
        ["Mild", "10.0 – 10.9", "IFA tablets at health facility"],
        ["Moderate", "7.0 – 9.9", "Refer to PHC"],
        ["Severe", "< 7.0", "Refer to hospital"],
        ["Very severe", "< 4.0", "Emergency referral"],
    ],
    [2.5*cm, 4*cm, W-6.5*cm], colors.HexColor("#922B21")
))
story.append(sp(4))

story.append(section_label("Q2. Community Interventions to Control Nutritional Anaemia", C_RED))
story.append(sp(2))
story.append(make_table(
    ["Strategy", "Details"],
    [
        ["**1. IFA Supplementation\n(Most immediate)**",
         "• Pregnant/Lactating: 100 mg elemental Fe + 0.5 mg FA/day\n"
         "• Children 6–60 months: 20 mg Fe + 0.1 mg FA (liquid) × 100 days\n"
         "• Children 6–10 yrs: 30 mg Fe + 250 mcg FA × 100 days\n"
         "• Adolescents: same as adults"],
        ["**2. Iron Fortification\n(Medium-term)**",
         "Double Fortified Salt (DFS) with Fe + Iodine — universally consumed, no special delivery; "
         "ferric ortho-phosphate in salt proven by NIN Hyderabad; "
         "FSSAI mandates Fe-fortified wheat flour"],
        ["**3. Dietary Diversification\n(Long-term)**",
         "↑ iron-rich foods (green leafy veg, meat, pulses, jaggery); "
         "↑ Vitamin C (enhances Fe absorption); "
         "avoid tea/coffee with meals (inhibit non-heme Fe absorption); "
         "use iron cooking pots"],
        ["4. Parasite & Infection Control",
         "Deworming (hookworm major cause of Fe loss); treatment of malaria; sanitation"],
        ["5. Other measures",
         "Delayed cord clamping (retains 40–60 mL iron-rich blood); "
         "nutrition education; health awareness"],
    ],
    [3.8*cm, W-3.8*cm], C_RED
))
story.append(sp(4))

story.append(section_label("Q3. Anaemia Mukt Bharat (AMB)", C_RED))
story.append(sp(2))
story.append(make_table(
    ["Item", "Detail"],
    [
        ["Full name", "Anaemia Mukt Bharat (AMB)"],
        ["Launched", "2018, Ministry of Health & Family Welfare"],
        ["Parent program", "POSHAN Abhiyaan + Intensified National Iron Plus Initiative (I-NIPI)"],
        ["Target", "Reduce anaemia by 3 percentage points per year across life cycle"],
        ["Framework", "6 × 6 × 6 Strategy"],
    ],
    [4*cm, W-4*cm], colors.HexColor("#922B21")
))
story.append(sp(3))
story.append(Paragraph("<b>6 × 6 × 6 Strategy:</b>", S_SECTION_HDR))
story.append(make_table(
    ["6 Target Groups", "6 Interventions", "6 Delivery Platforms"],
    [
        ["Children 6–59 months", "IFA supplementation", "ICDS / Anganwadi"],
        ["Children 5–9 years", "Deworming (Albendazole)", "School Health Programme"],
        ["Adolescent girls & boys", "Point-of-care Hb testing", "RBSK"],
        ["WRA 20–49 years", "Behaviour Change Communication", "RMNCHA+"],
        ["Pregnant women", "Delayed cord clamping", "RKSK (Adolescent Health)"],
        ["Lactating mothers", "Fortified rice via PDS/MDM/ICDS", "HWCs / Primary Healthcare"],
    ],
    [(W/3), (W/3), (W/3)], C_RED
))
story.append(sp(2))
story.append(Paragraph(
    "★ National Deworming Day: February 10 and August 10 annually | "
    "AMB Tracker App for real-time monitoring",
    S_NOTE))

story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════
# CASE 5 — ENDEMIC FLUOROSIS
# ══════════════════════════════════════════════════════════════════
story.append(case_banner(5, "ENDEMIC FLUOROSIS",
    "50M, Rajasthan, borewell water, mottled teeth + spinal stiffness × 5 years",
    C_PURPLE))
story.append(sp(4))

story.append(section_label("Q1. Diagnosis", C_PURPLE))
story.append(sp(2))
story.append(highlight_box(
    "<b>Endemic Fluorosis</b> (Dental + Skeletal)<br/><br/>"
    "• <b>Dental fluorosis</b>: brownish-yellow mottling and pitting of permanent teeth "
    "(fluoride > 1.5 mg/L during tooth calcification)<br/>"
    "• <b>Skeletal fluorosis</b>: progressive low back pain, morning spinal stiffness, "
    "difficulty climbing stairs (fluoride 3–6 mg/L lifetime intake)<br/><br/>"
    "Clue: Deep borewell water in fluoride-endemic Rajasthan + unaffected adult children who migrated "
    "= environmental/water-borne, NOT genetic.",
    bg=C_PURPLE_LIGHT, border=C_PURPLE
))
story.append(sp(2))
story.append(make_table(
    ["Fluoride Level", "Clinical Effect"],
    [
        ["< 0.5 mg/L", "Dental caries (no protective effect)"],
        ["0.5–0.8 mg/L", "Safe; WHO/BIS permissible (optimal for caries prevention)"],
        ["1.5 mg/L", "Threshold for dental fluorosis (enamel mottling)"],
        ["3.0–6.0 mg/L", "Skeletal fluorosis (lifetime daily intake)"],
        ["> 10 mg/L", "Crippling fluorosis"],
    ],
    [4*cm, W-4*cm], C_PURPLE
))
story.append(sp(4))

story.append(section_label("Q2. Sources of Fluoride", C_PURPLE))
story.append(sp(2))
story.append(make_table(
    ["Source Type", "Examples"],
    [
        ["**Groundwater (MOST IMPORTANT)**",
         "Deep borewells — fluoride leaches from fluorapatite/fluoride-containing rocks; "
         "higher in groundwater than surface water"],
        ["Soil & Rocks", "Fluorapatite, cryolite, fluorite deposits in soil"],
        ["Food", "Tea leaves (very high), seafood, marine fish, some vegetables from fluoride-rich soil"],
        ["Industrial emissions", "Aluminium smelting, phosphate fertilizer plants, brick kilns, coal combustion"],
        ["Pesticides", "Some fluoride-containing agricultural chemicals"],
        ["Dental products", "Fluoride toothpaste/gels (NOT relevant in endemic areas; AVOID in children < 6 yrs)"],
        ["Intentional fluoridation", "Added at 0.7–1.0 mg/L for caries prevention in some developed countries"],
        ["Diet-related",
         "Sorghum (jowar)-based diet promotes HIGHER fluoride retention compared to rice-based diet "
         "(relevant in AP & TN genu valgum fluorosis)"],
    ],
    [4.5*cm, W-4.5*cm], C_PURPLE
))
story.append(sp(2))
story.append(Paragraph(
    "★ Endemic areas in India: Andhra Pradesh (Nellore, Nalgonda, Prakasam), "
    "Punjab, Haryana, Karnataka, Kerala, Tamil Nadu, Rajasthan",
    S_NOTE))
story.append(sp(4))

story.append(section_label("Q3. Clinical Features of Fluorosis", C_PURPLE))
story.append(sp(2))
story.append(Paragraph("<b>A. Dental Fluorosis (Threshold: > 1.5 mg/L; during first 7 years of life):</b>",
    S_SECTION_HDR))
story.append(make_table(
    ["Stage", "Features"],
    [
        ["Early", "Loss of shiny enamel; chalk-white patches (upper incisors most affected)"],
        ["Progressive", "White patches → yellow → brown → black"],
        ["Severe", "Pitting, corroded appearance, loss of enamel"],
        ["Key points",
         "Confined to PERMANENT teeth | develops only during calcification period | "
         "Dean's Index grades severity | mottling best on upper incisors"],
    ],
    [3*cm, W-3*cm], C_PURPLE
))
story.append(sp(3))

story.append(Paragraph("<b>B. Skeletal Fluorosis (Threshold: 3–6 mg/L; lifetime exposure):</b>",
    S_SECTION_HDR))
story.append(make_table(
    ["Stage", "Features"],
    [
        ["Pre-skeletal",
         "Backache, joint pains, muscle weakness (fatigue, burning, tingling sensations)"],
        ["Stage 1",
         "Sporadic joint pain; slight stiffness; osteosclerosis on X-ray"],
        ["Stage 2",
         "Chronic joint pain, arthritis; calcification of ligaments & tendons; "
         "especially spinal (this patient's presentation)"],
        ["Stage 3 — Crippling\n(> 10 mg/L)",
         "Permanent disability; kyphosis; flexion deformities; neurological compression"],
        ["X-ray findings",
         "Osteosclerosis ('chalky white bones'); calcified interosseous membranes; "
         "bamboo spine appearance"],
    ],
    [3.5*cm, W-3.5*cm], C_PURPLE
))
story.append(sp(3))

story.append(Paragraph("<b>C. Genu Valgum Fluorosis (South India — AP, TN):</b>", S_SECTION_HDR))
story.append(highlight_box(
    "Knock-knee deformity (genu valgum) + osteoporosis of lower limbs<br/>"
    "Associated with <b>sorghum (jowar)</b>-based diet → promotes ↑ fluoride retention vs rice diet",
    bg=C_PURPLE_LIGHT, border=C_PURPLE
))
story.append(sp(3))

story.append(section_label("Intervention / Control of Fluorosis", C_PURPLE))
story.append(sp(2))
story.append(make_table(
    ["Method", "Details"],
    [
        ["Change water source", "Switch to surface water (< 0.8 mg/L); running surface water has less fluoride than deep wells"],
        ["**Nalgonda Technique**",
         "Defluoridation: Add lime + alum in sequence → flocculation → sedimentation → filtration; "
         "developed by NEERI Nagpur; moderately expensive"],
        ["Avoid fluoride products", "No fluoride toothpaste for children < 6 yrs in endemic areas; "
         "no fluoride supplements for children drinking fluoridated water"],
        ["NPPCF", "National Programme for Prevention and Control of Fluorosis — MoHFW"],
    ],
    [4*cm, W-4*cm], C_PURPLE
))

story.append(sp(5))
story.append(HRFlowable(W, thickness=1, color=C_GRAY_MED))
story.append(sp(3))
story.append(Paragraph(
    "Summary prepared by MedMayur  |  Based on Park's Textbook of PSM, 24th Ed.  |  July 2026",
    S_FOOTER))

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

cd /tmp/workspace/psm-revision && python3 generate_pdf.py 2>&1

Running Command

python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/psm-revision/PSM_Short_Cases_Revision.pdf') as pdf: print(f'Pages: {len(pdf.pages)}') print('Page 1 preview:') print(pdf.pages[0].extract_text()[:500]) "

Your PDF is ready - 11 pages, structured for fast exam revision.

PSM Short Cases Revision

PDF Document · PDF


What's inside the PDF:
SectionContent
Cover pageColour-coded title with all 5 cases listed
Case 1 - ObesityDefinition, determinants table, all obesity indices (BMI/Brocca/WHR etc.), WHO BMI classification table, prevention levels
Case 2 - PEMKwashiorkor diagnosis box, Wellcome + Gomez classification tables, high-yield Kwashiorkor vs Marasmus comparison table (12 features), epidemiology stats, prevention strategies
Case 3 - Vitamin A DeficiencyWHO Xerophthalmia staging (XN to XF), systemic features, supplementation doses (100k IU / 200k IU schedule), food fortification types + FSSAI '+F' program
Case 4 - IDA / Nutritional AnaemiaWHO Hb cut-offs table, severity classification + management, 5 community interventions with IFA dosages, full AMB 6×6×6 table
Case 5 - FluorosisFluoride level vs clinical effect table, sources of fluoride (groundwater highlighted), dental/skeletal/genu valgum features by stage, Nalgonda technique, NPPCF
All tables are colour-coded by case, with key exam points in red and clinical mnemonics highlighted in yellow boxes.
This is a shared conversation. Sign in to Orris to start your own chat.