Natural history of disease in k park book

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Loading Image
Loading Image
Here is the complete topic of Natural History of Disease as presented in Park's Textbook of Preventive and Social Medicine.

Natural History of Disease

(Park's Textbook of Preventive and Social Medicine)
The natural history of disease refers to the course a disease takes in an individual over time, from its earliest beginnings to its ultimate outcome, without any medical intervention. It results from a complex interaction between man, the disease agent, and the environment.

The Leavell & Clark Model (Classic Framework)

The concept was classically described by Leavell and Clark and divides the natural history into two broad phases:
Natural History of Disease - Leavell & Clark diagram
(Fig. 8 from Park - Natural history of disease showing phases and corresponding levels of prevention)

Phase 1: Pre-Pathogenesis Phase

This is the period before the disease begins in the human host.
  • The disease agent has not yet entered the human body
  • However, the factors that favour interaction between agent and host are already present in the environment
  • This is described as "man in the midst of disease" or "man exposed to the risk of disease"
  • Potentially, we are all in the pre-pathogenesis phase of many diseases (both communicable and non-communicable)

The Epidemiological Triad

The three causative elements operating during this phase are:
Epidemiological Triad - Agent, Host, Environment
(Fig. 9 - The epidemiological triad)
  1. Agent - the causative factor (biological, chemical, physical, nutrient, genetic, psychological)
  2. Host - the human being (age, sex, immunity, nutrition, habits, genetics)
  3. Environment - physical, biological, and social surroundings
The mere presence of all three is not sufficient to start disease. What is required is an interaction of these three factors. The extent of this interaction determines whether disease occurs in a single individual or reaches epidemic proportions.

Phase 2: Pathogenesis Phase

This phase begins with the entry of the disease agent into the susceptible human host.

Sub-phases within Pathogenesis:

Sub-phaseDescription
Early pathogenesisAgent multiplies; tissue and physiologic changes begin (below the "clinical horizon")
Discernible early lesionsPathological changes detectable but signs/symptoms may still be absent
Advanced diseaseRecognizable signs and symptoms appear; disease is now clinically manifest
ConvalescenceRecovery or progression to disability/death

Key concept - the "Clinical Horizon"

  • The clinical horizon is the threshold above which disease becomes recognizable/diagnosable
  • In infectious diseases, early pathogenesis corresponds to the incubation period
  • In chronic diseases (coronary heart disease, hypertension, cancer), the early pathogenesis phase is called the presymptomatic phase - the disease is progressing below the clinical horizon with no outward signs. By the time symptoms appear, the disease is already in the late pathogenesis phase

Possible Outcomes:

  • Recovery (with immunity/resistance)
  • Disability or defect
  • Chronic state
  • Death

Host reaction to infection is not fully predictable:

  • The infection may be clinical or subclinical
  • It may be typical or atypical
  • The host may become a carrier (with or without clinical disease, e.g., diphtheria, hepatitis B)

Levels of Prevention (Corresponding to the Natural History)

The natural history directly maps onto the three levels of prevention:
Phase of DiseaseLevel of PreventionMode of Intervention
Pre-pathogenesisPrimary PreventionHealth Promotion + Specific Protection
Early Pathogenesis (below clinical horizon)Secondary PreventionEarly Diagnosis and Treatment
Late Pathogenesis / Advanced DiseaseTertiary PreventionDisability Limitation + Rehabilitation

Primary Prevention

Aims to prevent disease from ever occurring by acting during the pre-pathogenesis phase:
  • Health promotion: improving general health status (nutrition, sanitation, health education)
  • Specific protection: targeted measures against specific agents (immunization, use of specific nutrients, environmental sanitation, protection from occupational hazards)

Secondary Prevention

Aims to halt or reverse the progress of disease in its early stages (before symptoms are severe):
  • Early diagnosis and treatment: screening programmes, case-finding, prompt treatment to prevent spread and complications

Tertiary Prevention

Aims to minimize the impact of disease already established:
  • Disability limitation: preventing progression to disability when the disease is already advanced
  • Rehabilitation: restoring function - physical, psychological, vocational, and social

Agent Factors (Brief Overview)

Disease agents are classified as:
  1. Biological agents - viruses, bacteria, fungi, protozoa, metazoa
    • Key properties: infectivity (ability to invade/multiply), pathogenicity (ability to cause clinical illness), virulence (proportion of cases with severe outcomes)
  2. Nutrient agents - excess/deficiency of proteins, fats, carbohydrates, vitamins, minerals, water
  3. Chemical agents - drugs, poisons, allergens, industrial chemicals
  4. Physical agents - heat, cold, radiation, pressure, noise
  5. Genetic/congenital - inborn errors, chromosomal abnormalities
  6. Psychological agents - stress, emotional trauma

Source: Park's Textbook of Preventive and Social Medicine, pp. 46-47 (Natural History of Disease chapter, Leavell & Clark model)

Please make a notes for me to easily remember

Asking for Preferences
Reading File
Running Command

mkdir -p /tmp/workspace/natural-history-notes && ls /tmp/workspace/natural-history-notes/

Writing File

~/natural-history-notes/make_notes.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem
import urllib.request
from reportlab.platypus import Image as RLImage
import io

OUTPUT = "/tmp/workspace/natural-history-notes/Natural_History_of_Disease_Notes.pdf"

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

# ── Colour palette ──────────────────────────────────────────────────────────
MAROON   = colors.HexColor("#7B1B1B")
CREAM    = colors.HexColor("#FFF8F0")
LIGHT_TAN= colors.HexColor("#F5E6D3")
ACCENT   = colors.HexColor("#A0522D")
DARK     = colors.HexColor("#1A1A1A")
GRAY_BG  = colors.HexColor("#F0F0F0")
TEAL     = colors.HexColor("#1B6B7B")
GREEN    = colors.HexColor("#1B7B3A")
ORANGE   = colors.HexColor("#C85A00")

styles = getSampleStyleSheet()

# Custom styles
title_style = ParagraphStyle("Title", parent=styles["Normal"],
    fontSize=22, textColor=MAROON, spaceAfter=4,
    fontName="Helvetica-Bold", alignment=TA_CENTER)

subtitle_style = ParagraphStyle("Subtitle", parent=styles["Normal"],
    fontSize=11, textColor=ACCENT, spaceAfter=2,
    fontName="Helvetica-Oblique", alignment=TA_CENTER)

source_style = ParagraphStyle("Source", parent=styles["Normal"],
    fontSize=8.5, textColor=colors.HexColor("#888888"),
    fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=6)

section_head = ParagraphStyle("SectionHead", parent=styles["Normal"],
    fontSize=13, textColor=colors.white, fontName="Helvetica-Bold",
    spaceAfter=4, spaceBefore=10, leftIndent=6)

sub_head = ParagraphStyle("SubHead", parent=styles["Normal"],
    fontSize=11, textColor=MAROON, fontName="Helvetica-Bold",
    spaceAfter=3, spaceBefore=5)

body = ParagraphStyle("Body", parent=styles["Normal"],
    fontSize=9.5, textColor=DARK, fontName="Helvetica",
    leading=14, spaceAfter=3, alignment=TA_JUSTIFY)

bullet_style = ParagraphStyle("Bullet", parent=styles["Normal"],
    fontSize=9.5, textColor=DARK, fontName="Helvetica",
    leading=13, spaceAfter=2, leftIndent=14, firstLineIndent=-10)

mnemonic_style = ParagraphStyle("Mnemonic", parent=styles["Normal"],
    fontSize=10.5, textColor=MAROON, fontName="Helvetica-Bold",
    leading=15, alignment=TA_CENTER, spaceAfter=2)

label_style = ParagraphStyle("Label", parent=styles["Normal"],
    fontSize=9, textColor=DARK, fontName="Helvetica-Bold",
    leading=12, alignment=TA_CENTER)

def section_banner(text, color=MAROON):
    """Coloured banner row acting as a section heading."""
    t = Table([[Paragraph(text, section_head)]], colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("ROUNDEDCORNERS", [4]),
        ("TOPPADDING",   (0,0),(-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING",  (0,0),(-1,-1), 10),
    ]))
    return t

def info_box(text, bg=CREAM, border=MAROON):
    pstyle = ParagraphStyle("IB", parent=body, alignment=TA_LEFT)
    t = Table([[Paragraph(text, pstyle)]], colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0),(-1,-1), bg),
        ("BOX",        (0,0),(-1,-1), 1.2, border),
        ("ROUNDEDCORNERS", [5]),
        ("TOPPADDING",    (0,0),(-1,-1), 7),
        ("BOTTOMPADDING", (0,0),(-1,-1), 7),
        ("LEFTPADDING",   (0,0),(-1,-1), 10),
        ("RIGHTPADDING",  (0,0),(-1,-1), 10),
    ]))
    return t

story = []

# ═══════════════════════════════════════════════════════════════════════════
# HEADER BANNER
# ═══════════════════════════════════════════════════════════════════════════
header_data = [[Paragraph("📖  NATURAL HISTORY OF DISEASE", title_style)],
               [Paragraph("Quick Revision Notes — Park's Preventive & Social Medicine", subtitle_style)],
               [Paragraph("Source: Park's Textbook of Preventive and Social Medicine (Leavell & Clark Model)", source_style)]]
header_table = Table(header_data, colWidths=[17.4*cm])
header_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,-1), LIGHT_TAN),
    ("BOX",        (0,0),(-1,-1), 2, MAROON),
    ("ROUNDEDCORNERS", [8]),
    ("TOPPADDING",    (0,0),(-1,-1), 10),
    ("BOTTOMPADDING", (0,0),(-1,-1), 10),
]))
story.append(header_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# DEFINITION
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("📌  DEFINITION"))
story.append(Spacer(1, 0.15*cm))
story.append(info_box(
    "<b>Natural History of Disease</b> = The course a disease takes from its earliest beginning to its "
    "ultimate outcome <b>without any medical intervention</b>. It results from complex interaction "
    "between <b>Man ↔ Agent ↔ Environment</b>.",
    bg=CREAM, border=MAROON
))
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# TWO PHASES — side by side
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🔄  TWO PHASES OF DISEASE", color=TEAL))
story.append(Spacer(1, 0.15*cm))

phase_head_style = ParagraphStyle("PH", parent=styles["Normal"],
    fontSize=11, textColor=colors.white, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=15)
phase_body_style = ParagraphStyle("PB", parent=styles["Normal"],
    fontSize=9, textColor=DARK, fontName="Helvetica",
    leading=13, alignment=TA_LEFT)
phase_title_style = ParagraphStyle("PT", parent=styles["Normal"],
    fontSize=10, textColor=colors.white, fontName="Helvetica-Bold",
    alignment=TA_CENTER)

p1_items = [
    "• Before agent enters the human host",
    "• Factors favouring interaction <b>already present</b>",
    "• \"Man in the midst of disease\"",
    "• Epidemiological TRIAD operates:",
    "    → AGENT + HOST + ENVIRONMENT",
    "• Interaction of all 3 needed to start disease",
]
p2_items = [
    "• Begins with <b>entry of agent</b> into susceptible host",
    "• Sub-phases:",
    "    1. Early pathogenesis (incubation in infections)",
    "    2. Discernible early lesions",
    "    3. Advanced disease (signs & symptoms appear)",
    "    4. Convalescence",
    "• Outcomes: Recovery / Disability / Chronic / Death",
]

p1_text = "<br/>".join(p1_items)
p2_text = "<br/>".join(p2_items)

phase_table = Table(
    [[Paragraph("PHASE 1", phase_title_style), Paragraph("PHASE 2", phase_title_style)],
     [Paragraph("PRE-PATHOGENESIS", phase_head_style), Paragraph("PATHOGENESIS", phase_head_style)],
     [Paragraph(p1_text, phase_body_style), Paragraph(p2_text, phase_body_style)]],
    colWidths=[8.5*cm, 8.9*cm]
)
phase_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(0,1), MAROON),
    ("BACKGROUND", (1,0),(1,1), TEAL),
    ("BACKGROUND", (0,2),(0,2), CREAM),
    ("BACKGROUND", (1,2),(1,2), colors.HexColor("#E8F4F7")),
    ("BOX",        (0,0),(-1,-1), 1.5, DARK),
    ("INNERGRID",  (0,0),(-1,-1), 0.5, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "TOP"),
]))
story.append(phase_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# CLINICAL HORIZON BOX
# ═══════════════════════════════════════════════════════════════════════════
story.append(info_box(
    "⚡ <b>CLINICAL HORIZON</b> — The threshold above which disease becomes clinically recognizable. "
    "In <b>chronic diseases</b> (CHD, hypertension, cancer), the presymptomatic phase lies <i>below</i> "
    "the clinical horizon. By the time symptoms appear, disease is already in <b>LATE pathogenesis</b>.",
    bg=colors.HexColor("#FFF3CD"), border=ORANGE
))
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# LEVELS OF PREVENTION TABLE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🛡️  LEVELS OF PREVENTION  (Leavell & Clark)", color=colors.HexColor("#1B5E20")))
story.append(Spacer(1, 0.15*cm))

col_head = ParagraphStyle("CH", parent=styles["Normal"],
    fontSize=10, textColor=colors.white, fontName="Helvetica-Bold",
    alignment=TA_CENTER, leading=14)
col_body = ParagraphStyle("CB", parent=styles["Normal"],
    fontSize=9, textColor=DARK, fontName="Helvetica",
    alignment=TA_LEFT, leading=13)

prev_data = [
    [Paragraph("LEVEL", col_head),
     Paragraph("PHASE OF DISEASE", col_head),
     Paragraph("MODE OF INTERVENTION", col_head),
     Paragraph("EXAMPLES", col_head)],
    [Paragraph("<b>PRIMARY</b>", col_body),
     Paragraph("Pre-pathogenesis", col_body),
     Paragraph("1. Health Promotion\n2. Specific Protection", col_body),
     Paragraph("Immunization, nutrition, sanitation, health education, occupational safety", col_body)],
    [Paragraph("<b>SECONDARY</b>", col_body),
     Paragraph("Early Pathogenesis\n(below clinical horizon)", col_body),
     Paragraph("Early Diagnosis & Treatment", col_body),
     Paragraph("Screening, case-finding, prompt treatment to prevent complications/spread", col_body)],
    [Paragraph("<b>TERTIARY</b>", col_body),
     Paragraph("Late Pathogenesis /\nAdvanced Disease", col_body),
     Paragraph("1. Disability Limitation\n2. Rehabilitation", col_body),
     Paragraph("Physiotherapy, vocational rehab, social reintegration, prosthetics", col_body)],
]

prev_table = Table(prev_data, colWidths=[2.8*cm, 3.8*cm, 4.4*cm, 6.4*cm])
prev_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,0), colors.HexColor("#1B5E20")),
    ("BACKGROUND", (0,1),(-1,1), colors.HexColor("#E8F5E9")),
    ("BACKGROUND", (0,2),(-1,2), colors.HexColor("#FFF8E1")),
    ("BACKGROUND", (0,3),(-1,3), colors.HexColor("#FCE4EC")),
    ("BOX",        (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID",  (0,0),(-1,-1), 0.4, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 7),
    ("RIGHTPADDING",  (0,0),(-1,-1), 7),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story.append(prev_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# DISEASE AGENT CLASSIFICATION
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🦠  DISEASE AGENT CLASSIFICATION", color=ACCENT))
story.append(Spacer(1, 0.15*cm))

agent_data = [
    [Paragraph("<b>TYPE</b>", col_head), Paragraph("<b>EXAMPLES</b>", col_head), Paragraph("<b>KEY NOTE</b>", col_head)],
    [Paragraph("Biological", col_body), Paragraph("Viruses, bacteria, fungi, protozoa, metazoa", col_body),
     Paragraph("Infectivity → Pathogenicity → Virulence", col_body)],
    [Paragraph("Nutrient", col_body), Paragraph("Proteins, fats, carbs, vitamins, minerals, water", col_body),
     Paragraph("Excess OR deficiency causes disease (PEM, anaemia, obesity)", col_body)],
    [Paragraph("Chemical", col_body), Paragraph("Drugs, poisons, allergens, industrial chemicals", col_body),
     Paragraph("Dose-response relationship important", col_body)],
    [Paragraph("Physical", col_body), Paragraph("Heat, cold, radiation, pressure, noise", col_body),
     Paragraph("Environmental exposure crucial", col_body)],
    [Paragraph("Genetic /\nCongenital", col_body), Paragraph("Chromosomal abnormalities, inborn errors", col_body),
     Paragraph("Present from birth / conception", col_body)],
    [Paragraph("Psychological", col_body), Paragraph("Stress, emotional trauma, anxiety", col_body),
     Paragraph("Increasingly recognized in non-communicable diseases", col_body)],
]

agent_table = Table(agent_data, colWidths=[3*cm, 6.2*cm, 8.2*cm])
agent_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,0), ACCENT),
    ("ROWBACKGROUNDS", (0,1),(-1,-1), [colors.HexColor("#FFF8F0"), colors.HexColor("#F5E6D3")]),
    ("BOX",        (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID",  (0,0),(-1,-1), 0.4, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 5),
    ("BOTTOMPADDING", (0,0),(-1,-1), 5),
    ("LEFTPADDING",   (0,0),(-1,-1), 7),
    ("RIGHTPADDING",  (0,0),(-1,-1), 7),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story.append(agent_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# BIOLOGICAL AGENT PROPERTIES — quick box
# ═══════════════════════════════════════════════════════════════════════════
story.append(KeepTogether([
    info_box(
        "🔬 <b>Key Properties of Biological Agents (must memorize):</b><br/>"
        "1. <b>Infectivity</b> — Ability to <i>invade and multiply</i> in a host<br/>"
        "2. <b>Pathogenicity</b> — Ability to produce <i>clinically apparent illness</i><br/>"
        "3. <b>Virulence</b> — Proportion of clinical cases with <i>severe outcomes</i> (measured by Case Fatality Rate)",
        bg=colors.HexColor("#E8F4F7"), border=TEAL
    ),
    Spacer(1, 0.3*cm)
]))

# ═══════════════════════════════════════════════════════════════════════════
# HOST REACTION OUTCOMES
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🎯  HOST REACTIONS & OUTCOMES", color=TEAL))
story.append(Spacer(1, 0.15*cm))

outcome_data = [
    [Paragraph("HOST REACTION TO INFECTION", ParagraphStyle("HH", parent=col_head, fontSize=9)),
     Paragraph("FINAL OUTCOMES OF DISEASE", ParagraphStyle("HH", parent=col_head, fontSize=9))],
    [Paragraph(
        "• Clinical disease (typical / atypical)<br/>"
        "• Subclinical / Inapparent infection<br/>"
        "• Carrier state (with or without clinical disease)<br/>"
        "  e.g., Diphtheria, Hepatitis B",
        col_body),
     Paragraph(
        "• <b>Recovery</b> (with immunity/resistance)<br/>"
        "• <b>Disability</b> or Defect<br/>"
        "• <b>Chronic state</b><br/>"
        "• <b>Death</b>",
        col_body)]
]
outcome_table = Table(outcome_data, colWidths=[8.5*cm, 8.9*cm])
outcome_table.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,0), TEAL),
    ("BACKGROUND", (0,1),(0,1), colors.HexColor("#E8F4F7")),
    ("BACKGROUND", (1,1),(1,1), colors.HexColor("#FFF8F0")),
    ("BOX",        (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID",  (0,0),(-1,-1), 0.5, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "TOP"),
]))
story.append(outcome_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# MNEMONICS & MEMORY AIDS
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🧠  MNEMONICS & MEMORY AIDS", color=colors.HexColor("#4A148C")))
story.append(Spacer(1, 0.15*cm))

mnem_style = ParagraphStyle("MS", parent=styles["Normal"],
    fontSize=9.5, textColor=DARK, fontName="Helvetica", leading=14)
mnem_head  = ParagraphStyle("MH", parent=styles["Normal"],
    fontSize=10, textColor=colors.HexColor("#4A148C"), fontName="Helvetica-Bold", leading=14)

mnem_data = [
    [Paragraph("PHASES", mnem_head),
     Paragraph(
         "<b>\"PRE-PATH\"</b><br/>"
         "<b>PRE</b> = Pre-pathogenesis (before agent enters)<br/>"
         "<b>PATH</b> = Pathogenesis (agent inside host → Early → Lesions → Advanced → Convalescence)",
         mnem_style)],
    [Paragraph("TRIAD", mnem_head),
     Paragraph(
         "<b>\"A-H-E\"</b> → <b>A</b>gent + <b>H</b>ost + <b>E</b>nvironment<br/>"
         "Think: <i>'All Humans are Exposed'</i>",
         mnem_style)],
    [Paragraph("PREVENTION\nLEVELS", mnem_head),
     Paragraph(
         "<b>\"HP-SP / EDT / DL-R\"</b><br/>"
         "Primary: <b>H</b>ealth <b>P</b>romotion + <b>S</b>pecific <b>P</b>rotection<br/>"
         "Secondary: <b>E</b>arly <b>D</b>iagnosis & <b>T</b>reatment<br/>"
         "Tertiary: <b>D</b>isability <b>L</b>imitation + <b>R</b>ehabilitation",
         mnem_style)],
    [Paragraph("BIO AGENT\nPROPERTIES", mnem_head),
     Paragraph(
         "<b>\"I-P-V\"</b> → <b>I</b>nfectivity → <b>P</b>athogenicity → <b>V</b>irulence<br/>"
         "Think: <i>'I Patiently Vanquish'</i>",
         mnem_style)],
    [Paragraph("AGENT TYPES", mnem_head),
     Paragraph(
         "<b>\"B-N-C-P-G-Ps\"</b><br/>"
         "<b>B</b>iological, <b>N</b>utrient, <b>C</b>hemical, <b>P</b>hysical, <b>G</b>enetic, <b>Ps</b>ychological",
         mnem_style)],
]

mnem_table = Table(mnem_data, colWidths=[3.2*cm, 14.2*cm])
mnem_table.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0),(-1,-1), [colors.HexColor("#F3E5F5"), colors.HexColor("#EDE7F6")]),
    ("BOX",       (0,0),(-1,-1), 1.2, colors.HexColor("#4A148C")),
    ("INNERGRID", (0,0),(-1,-1), 0.4, colors.HexColor("#CE93D8")),
    ("TOPPADDING",    (0,0),(-1,-1), 7),
    ("BOTTOMPADDING", (0,0),(-1,-1), 7),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story.append(mnem_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# QUICK FIRE Q&A
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("⚡  QUICK FIRE — EXAM Q&A", color=colors.HexColor("#B71C1C")))
story.append(Spacer(1, 0.15*cm))

qa_q = ParagraphStyle("QAQ", parent=styles["Normal"], fontSize=9.5,
    fontName="Helvetica-Bold", textColor=MAROON, leading=14)
qa_a = ParagraphStyle("QAA", parent=styles["Normal"], fontSize=9.5,
    fontName="Helvetica", textColor=DARK, leading=14)

qa_data = [
    [Paragraph("Q", qa_q), Paragraph("A", qa_q)],
    [Paragraph("Natural history of disease concept given by?", qa_q),
     Paragraph("Leavell and Clark", qa_a)],
    [Paragraph("Phase before agent enters the host?", qa_q),
     Paragraph("Pre-pathogenesis phase", qa_a)],
    [Paragraph("\"Man in the midst of disease\" refers to?", qa_q),
     Paragraph("Pre-pathogenesis phase", qa_a)],
    [Paragraph("The three factors of epidemiological triad?", qa_q),
     Paragraph("Agent, Host, Environment", qa_a)],
    [Paragraph("In infectious disease, early pathogenesis = ?", qa_q),
     Paragraph("Incubation period", qa_a)],
    [Paragraph("In chronic disease, early pathogenesis = ?", qa_q),
     Paragraph("Presymptomatic phase (below clinical horizon)", qa_a)],
    [Paragraph("Level of prevention targeting pre-pathogenesis?", qa_q),
     Paragraph("Primary prevention (Health promotion + Specific protection)", qa_a)],
    [Paragraph("Level of prevention: early diagnosis & treatment?", qa_q),
     Paragraph("Secondary prevention", qa_a)],
    [Paragraph("Rehabilitation falls under which level?", qa_q),
     Paragraph("Tertiary prevention", qa_a)],
    [Paragraph("Case fatality rate measures which property?", qa_q),
     Paragraph("Virulence", qa_a)],
    [Paragraph("Ability to invade and multiply in a host?", qa_q),
     Paragraph("Infectivity", qa_a)],
    [Paragraph("Carrier state example (2 diseases)?", qa_q),
     Paragraph("Diphtheria, Hepatitis B", qa_a)],
]

qa_table = Table(qa_data, colWidths=[8.7*cm, 8.7*cm])
qa_table.setStyle(TableStyle([
    ("BACKGROUND",     (0,0),(-1,0),  colors.HexColor("#B71C1C")),
    ("ROWBACKGROUNDS", (0,1),(-1,-1), [colors.white, colors.HexColor("#FFF5F5")]),
    ("BOX",       (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID", (0,0),(-1,-1), 0.4, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
    ("TEXTCOLOR",     (0,0),(-1,0),  colors.white),
]))
story.append(qa_table)
story.append(Spacer(1, 0.3*cm))

# ═══════════════════════════════════════════════════════════════════════════
# FOOTER NOTE
# ═══════════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=1, color=MAROON))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
    "Source: Park's Textbook of Preventive and Social Medicine | "
    "Leavell & Clark (Preventive Medicine for the Doctor in His Community, McGraw-Hill)",
    source_style
))

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

cd /tmp/workspace/natural-history-notes && python make_notes.py

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

Your PDF contains 7 colour-coded sections:
  1. Definition - concise one-liner with the key concept
  2. Two Phases - Pre-pathogenesis vs Pathogenesis side by side in a coloured table
  3. Clinical Horizon box - highlighted callout about chronic vs infectious disease distinction
  4. Levels of Prevention - full table with Phase → Level → Intervention → Examples
  5. Disease Agent Classification - all 6 types (Biological, Nutrient, Chemical, Physical, Genetic, Psychological) with key notes
  6. Mnemonics - memory aids for every important cluster (A-H-E, HP-SP/EDT/DL-R, I-P-V, etc.)
  7. Quick-Fire Q&A - 12 exam-style questions with answers (carrier state examples, Leavell & Clark attribution, CFR = virulence, etc.)

Natural History of Disease Notes

PDF Document · PDF

Determination of health in community medicine k park

Finding Sources
Reading File
Reading File
Reading File
Reading File
Loading Image
Reading File
I now have all 8 determinants with full detail. Let me compile the complete answer.

Determinants of Health

(Park's Textbook of Preventive and Social Medicine, pp. 23-25)
Health is multifactorial. The factors that influence health lie both within the individual and externally in the society in which he or she lives. Health of individuals and communities is determined by two broad sets of forces - genetic factors and environmental factors - and their interactions (which may be health-promoting or deleterious).

The Determinants of Health (Fig. 3 - Park)

Determinants of Health - Park's diagram showing Health at the centre surrounded by Biological, Behavioural, Environmental, Socio-economic, Health system, Socio-cultural, Ageing, Science & technology, Information & communication, Gender, Equity & social justice, Human rights
(Fig. 3 - Determinants of Health operating at the level of Individuals, Families, Communities and Societies)

1. Biological Determinants

  • Physical and mental traits of every individual are, to some extent, determined by genes at the moment of conception
  • Genetic make-up is unique and cannot be altered after conception
  • Diseases of genetic origin: chromosomal anomalies, inborn errors of metabolism, mental retardation, some types of diabetes
  • Health (from a genetic standpoint) = absence of genes corresponding to serious defects + presence of a normal karyotype
  • Medical genetics now offers hope via genetic screening and gene therapy
  • WHO's "positive health" implies that a person should be able to express as completely as possible the potentialities of his genetic heritage - possible only in a healthy environment

2. Behavioural and Socio-cultural Conditions

  • Lifestyle = "the way people live" - cultural and behavioural patterns and lifelong personal habits
  • Lifestyle is learnt through social interaction (parents, peers, siblings, school, mass media)
  • Developed countries: CHD, obesity, lung cancer, drug addiction - associated with unhealthy lifestyle changes
  • Developing countries (India): risks linked to poor sanitation, poor nutrition, personal hygiene, customs
  • Not all lifestyle factors are harmful - adequate nutrition, sleep, physical activity promote health
  • "Health is both a consequence of an individual's lifestyle and a factor in determining it"

3. Environment

  • First related by Hippocrates (climate, water, air); later revived by Pettenkofer in Germany
  • Classified into:
    • Internal environment - tissues, organs, organ systems (domain of internal medicine)
    • External (macro) environment - all that is external to the human host after conception; includes:
      • Physical component - climate, housing, water supply
      • Biological component - pathogens, vectors
      • Psychosocial component - stress, family structure, social support
  • Also described: micro-environment (domestic - eating habits, smoking, drinking) and occupational/socioeconomic/moral environments
  • Environmental factors range from housing and water supply through psychosocial stress and family structure to organization of health services
  • "If the environment is favourable to the individual, he can make full use of his physical and mental capabilities"

4. Socio-economic Conditions

For the majority of the world's people, health status is determined primarily by their level of socio-economic development. The main factors are:
Sub-factorKey Points
(i) Economic statusPer capita GNP is the most accepted measure. Determines purchasing power, standard of living, family size, pattern of disease. Ironically, affluence also causes illness (CHD, diabetes, obesity in upper socioeconomic groups).
(ii) EducationEspecially female education. World map of illiteracy coincides with maps of poverty, malnutrition, high infant mortality. Kerala example: IMR = 10 vs all-India 34 (2016), due to 97.9% female literacy vs 68.4% national.
(iii) OccupationEmployment promotes health; unemployed show higher incidence of illness and death. Job loss = loss of income, status, psychological and social damage.
(iv) Political systemResource allocation, manpower policy, health service accessibility are shaped by politics. WHO target: ≥5% of GNP on health. India spends ~1% of GNP on health and family welfare. Political commitment to social development is essential.

5. Health Services

  • Health and family welfare services cover a wide range - promotive, preventive, curative and rehabilitative
  • Health services should be universally accessible, affordable, and acceptable
  • A strong health system = better health outcomes at both individual and community level
  • Inequitable access to health services is itself a determinant of poor health

6. Ageing of the Population

  • Increase in the proportion of elderly (>60 years) in the population is a global trend
  • This demographic shift creates new health challenges: chronic diseases, disabilities, dementia, social isolation
  • Healthy ageing requires preventive strategies across the life course

7. Gender

  • Women and men have different health needs, exposures, and vulnerabilities
  • In 1993, the Global Commission on Women's Health was established
  • Agenda for action covered: nutrition, reproductive health, violence consequences, ageing, lifestyle conditions, occupational environment
  • Increased awareness among policy-makers of women's health issues as a development priority

8. Other Factors

  • Science and technology: Information revolution and communication technologies provide instant access to medical information - benefiting physicians, researchers, and the public
  • Information and communication systems: Mass media and the internet contribute to health knowledge dissemination
  • Health-related systems outside formal health care: food & agriculture, education, industry, social welfare, rural development
  • Economic and social policies that raise the standard of living (employment, wages, prepaid medical programmes, family support)
  • "Medicine is not the sole contributor to health and well-being - intersectoral contributions are increasingly recognized"

Summary Table

#DeterminantKey Concept
1BiologicalGenes, genetic make-up, chromosomal constitution
2Behavioural/Socio-culturalLifestyle, habits, culture, socialization
3EnvironmentPhysical, biological, psychosocial
4Socio-economicGNP, education, occupation, political system
5Health servicesAccess, equity, coverage, quality
6AgeingDemographic shift, chronic disease burden
7GenderDifferential needs, women's health
8OthersScience, technology, ICT, intersectoral action

Source: Park's Textbook of Preventive and Social Medicine, pp. 23-25

Create a revision PDF of Determinants of Health with mnemonics and Q&A

Writing File

~/determinants-health-notes/make_notes.py

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

os.makedirs("/tmp/workspace/determinants-health-notes", exist_ok=True)
OUTPUT = "/tmp/workspace/determinants-health-notes/Determinants_of_Health_Notes.pdf"

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

# ── Palette ──────────────────────────────────────────────────────────────────
MAROON   = colors.HexColor("#7B1B1B")
CREAM    = colors.HexColor("#FFF8F0")
LIGHT_TAN= colors.HexColor("#F5E6D3")
TEAL     = colors.HexColor("#1B6B7B")
GREEN    = colors.HexColor("#1B5E20")
ORANGE   = colors.HexColor("#C85A00")
PURPLE   = colors.HexColor("#4A148C")
DARK     = colors.HexColor("#1A1A1A")
BLUE     = colors.HexColor("#0D47A1")
PINK     = colors.HexColor("#880E4F")

styles = getSampleStyleSheet()

def ps(name, base="Normal", **kw):
    return ParagraphStyle(name, parent=styles[base], **kw)

title_s   = ps("T",  fontSize=21, textColor=MAROON, fontName="Helvetica-Bold",
                alignment=TA_CENTER, spaceAfter=3)
sub_s     = ps("Su", fontSize=10.5, textColor=colors.HexColor("#7B4F2E"),
                fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=2)
src_s     = ps("Sr", fontSize=8,   textColor=colors.HexColor("#999999"),
                fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=4)
sec_s     = ps("Sh", fontSize=12,  textColor=colors.white, fontName="Helvetica-Bold",
                spaceAfter=3, spaceBefore=6, leftIndent=6)
body_s    = ps("B",  fontSize=9.5, textColor=DARK, fontName="Helvetica",
                leading=14, spaceAfter=2, alignment=TA_JUSTIFY)
bullet_s  = ps("Bl", fontSize=9.5, textColor=DARK, fontName="Helvetica",
                leading=13, spaceAfter=1, leftIndent=12, firstLineIndent=-10)
col_h     = ps("CH", fontSize=9.5, textColor=colors.white, fontName="Helvetica-Bold",
                alignment=TA_CENTER, leading=13)
col_b     = ps("CB", fontSize=9,   textColor=DARK, fontName="Helvetica",
                alignment=TA_LEFT,  leading=13)
mnem_h    = ps("MH", fontSize=9.5, textColor=PURPLE, fontName="Helvetica-Bold", leading=14)
mnem_b    = ps("MB", fontSize=9,   textColor=DARK,   fontName="Helvetica", leading=13)
qa_q      = ps("QQ", fontSize=9.5, textColor=MAROON, fontName="Helvetica-Bold", leading=14)
qa_a      = ps("QA", fontSize=9.5, textColor=DARK,   fontName="Helvetica", leading=14)
num_s     = ps("NS", fontSize=22,  textColor=colors.white, fontName="Helvetica-Bold",
                alignment=TA_CENTER)

def banner(text, color=MAROON):
    t = Table([[Paragraph(text, sec_s)]], colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), color),
        ("TOPPADDING",   (0,0),(-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING",  (0,0),(-1,-1), 10),
    ]))
    return t

def box(text, bg=CREAM, border=MAROON, style=None):
    s = style or ps("BX", fontSize=9.5, textColor=DARK, fontName="Helvetica", leading=14)
    t = Table([[Paragraph(text, s)]], colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), bg),
        ("BOX",          (0,0),(-1,-1), 1.2, border),
        ("TOPPADDING",   (0,0),(-1,-1), 7),
        ("BOTTOMPADDING",(0,0),(-1,-1), 7),
        ("LEFTPADDING",  (0,0),(-1,-1), 10),
        ("RIGHTPADDING", (0,0),(-1,-1), 10),
    ]))
    return t

def sp(h=0.25):
    return Spacer(1, h*cm)

# ════════════════════════════════════════════════════════════════════════════
story = []

# ── HEADER ──────────────────────────────────────────────────────────────────
hdr = Table([
    [Paragraph("🏥  DETERMINANTS OF HEALTH", title_s)],
    [Paragraph("Quick Revision Notes — Park's Preventive & Social Medicine", sub_s)],
    [Paragraph("Source: Park's Textbook of Preventive and Social Medicine, pp. 23–25", src_s)],
], colWidths=[17.4*cm])
hdr.setStyle(TableStyle([
    ("BACKGROUND",   (0,0),(-1,-1), colors.HexColor("#F5E6D3")),
    ("BOX",          (0,0),(-1,-1), 2, MAROON),
    ("TOPPADDING",   (0,0),(-1,-1), 10),
    ("BOTTOMPADDING",(0,0),(-1,-1), 10),
]))
story += [hdr, sp(0.3)]

# ── DEFINITION ──────────────────────────────────────────────────────────────
story.append(banner("📌  DEFINITION"))
story.append(sp(0.15))
story.append(box(
    "<b>Health is MULTIFACTORIAL.</b> The factors influencing health lie both <b>within the individual</b> "
    "and <b>externally in the society</b>. Health of individuals and whole communities is the result of "
    "interactions between <b>GENETIC factors</b> (internal) and <b>ENVIRONMENTAL factors</b> (external). "
    "These interactions may be <i>health-promoting</i> or <i>deleterious</i>.",
    bg=CREAM, border=MAROON
))
story.append(sp(0.3))

# ── MASTER MNEMONIC ─────────────────────────────────────────────────────────
story.append(banner("🧠  MASTER MNEMONIC — Remember ALL 8 Determinants", color=PURPLE))
story.append(sp(0.15))

mm_cell_s = ps("MMC", fontSize=11, textColor=DARK, fontName="Helvetica-Bold",
                alignment=TA_CENTER, leading=16)
mm_word_s = ps("MMW", fontSize=18, textColor=PURPLE, fontName="Helvetica-Bold",
                alignment=TA_CENTER, leading=22)
mm_exp_s  = ps("MME", fontSize=9,  textColor=DARK, fontName="Helvetica",
                alignment=TA_CENTER, leading=12)

mnemonic_rows = [
    ["B", "E", "S", "H", "A", "G", "O", "I"],
    ["Biological", "Environment", "Socio-\neconomic", "Health\nServices",
     "Ageing", "Gender", "Others\n(Science/ICT)", "Information &\nCommunication*"],
]

mm_table = Table(
    [[Paragraph(c, mm_word_s) for c in mnemonic_rows[0]],
     [Paragraph(c, mm_exp_s)  for c in mnemonic_rows[1]]],
    colWidths=[2.175*cm]*8
)
mm_table.setStyle(TableStyle([
    ("BACKGROUND",   (0,0),(-1,0), colors.HexColor("#EDE7F6")),
    ("BACKGROUND",   (0,1),(-1,1), colors.HexColor("#F3E5F5")),
    ("BOX",          (0,0),(-1,-1), 1.5, PURPLE),
    ("INNERGRID",    (0,0),(-1,-1), 0.5, colors.HexColor("#CE93D8")),
    ("TOPPADDING",   (0,0),(-1,-1), 6),
    ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ("VALIGN",       (0,0),(-1,-1), "MIDDLE"),
]))
story.append(mm_table)
story.append(sp(0.1))
story.append(Paragraph(
    '<i>* "Behavioural" = included under Socio-cultural conditions (determinant 2). '
    '"Others" covers Science & Technology, Information & Communication, intersectoral factors.</i>',
    ps("Note", fontSize=8, textColor=colors.HexColor("#777777"), fontName="Helvetica-Oblique")
))
story.append(sp(0.1))
story.append(box(
    '💡 <b>Memory phrase:</b> <b>"<font color="#4A148C">B</font>ig '
    '<font color="#4A148C">E</font>lephants '
    '<font color="#4A148C">S</font>ometimes '
    '<font color="#4A148C">H</font>elp '
    '<font color="#4A148C">A</font>geing '
    '<font color="#4A148C">G</font>randmas '
    '<font color="#4A148C">O</font>vercome '
    '<font color="#4A148C">I</font>llness"</b>',
    bg=colors.HexColor("#EDE7F6"), border=PURPLE
))
story.append(sp(0.3))

# ── 8 DETERMINANTS ──────────────────────────────────────────────────────────
story.append(banner("📋  THE 8 DETERMINANTS IN DETAIL", color=TEAL))
story.append(sp(0.2))

dets = [
    {
        "num": "1",
        "title": "BIOLOGICAL DETERMINANTS",
        "color": colors.HexColor("#1565C0"),
        "bg": colors.HexColor("#E3F2FD"),
        "points": [
            "Physical & mental traits determined by <b>genes at moment of conception</b>",
            "Genetic make-up is <b>unique and CANNOT be altered</b> after conception",
            "Genetic diseases: chromosomal anomalies, inborn errors of metabolism, mental retardation, some types of diabetes",
            "From genetic standpoint: health = absence of defective genes + <b>normal karyotype</b>",
            "WHO 'positive health' = ability to fully express <b>genetic potentialities</b> in a healthy environment",
            "Role in: <b>genetic screening</b> and <b>gene therapy</b>",
        ],
        "key": "🔑 Key fact: Only determinant that CANNOT be changed after conception"
    },
    {
        "num": "2",
        "title": "BEHAVIOURAL & SOCIO-CULTURAL CONDITIONS",
        "color": colors.HexColor("#2E7D32"),
        "bg": colors.HexColor("#E8F5E9"),
        "points": [
            "Lifestyle = 'the way people live' — cultural & behavioural patterns + lifelong personal habits",
            "Lifestyle is <b>learnt</b> through: parents, peer groups, siblings, school, mass media",
            "Developed countries: CHD, obesity, lung cancer, drug addiction linked to <b>unhealthy lifestyle</b>",
            "Developing countries (India): risks from poor sanitation, poor nutrition, cultural patterns",
            "Positive lifestyle factors: adequate nutrition, enough sleep, sufficient physical activity",
            "'Health is both a <b>consequence</b> of lifestyle and a <b>factor in determining</b> it'",
        ],
        "key": "🔑 Key fact: NOT all lifestyle factors are harmful — many promote health"
    },
    {
        "num": "3",
        "title": "ENVIRONMENT",
        "color": colors.HexColor("#00695C"),
        "bg": colors.HexColor("#E0F2F1"),
        "points": [
            "First related to disease by <b>Hippocrates</b> (climate, water, air); revived by <b>Pettenkofer</b>",
            "<b>Internal</b> environment: tissues, organs, organ systems → domain of <i>internal medicine</i>",
            "<b>External (macro)</b> environment: all external to the host after conception — Physical + Biological + Psychosocial",
            "<b>Micro-environment</b>: personal/domestic (eating habits, smoking, drinking)",
            "Also: occupational, socioeconomic, moral environments",
            "Physical, biological & psychological components are <b>inextricably linked</b> — must be viewed in tototo",
        ],
        "key": "🔑 Key fact: Hippocrates (first) → Pettenkofer (revived) the disease-environment concept"
    },
    {
        "num": "4",
        "title": "SOCIO-ECONOMIC CONDITIONS",
        "color": colors.HexColor("#E65100"),
        "bg": colors.HexColor("#FFF3E0"),
        "points": [
            "For the majority of the world's people, health is determined <b>primarily</b> by socio-economic level",
            "(i) <b>Economic status</b>: Per capita GNP = most accepted measure. Affluence can also CAUSE disease (CHD, diabetes, obesity)",
            "(ii) <b>Education</b>: Especially female education. Kerala IMR = <b>10</b> vs all-India <b>34</b> (2016); female literacy 97.9% vs 68.4%",
            "(iii) <b>Occupation</b>: Employment promotes health; unemployment → higher illness, death, psychological damage",
            "(iv) <b>Political system</b>: Shapes resource allocation, manpower, access to services. WHO target: <b>≥5% GNP on health</b>; India spends ~<b>1%</b>",
        ],
        "key": "🔑 Key fact: Kerala example — high female literacy compensates poverty effects on health"
    },
    {
        "num": "5",
        "title": "HEALTH SERVICES",
        "color": colors.HexColor("#6A1B9A"),
        "bg": colors.HexColor("#F3E5F5"),
        "points": [
            "Health & family welfare services cover: <b>promotive, preventive, curative and rehabilitative</b> care",
            "Must be <b>universally accessible, affordable, and acceptable</b>",
            "Inequitable access to health services is itself a <b>determinant of poor health</b>",
            "A strong health system leads to better individual and community health outcomes",
        ],
        "key": "🔑 Key fact: 4 components — Promotive, Preventive, Curative, Rehabilitative (PPCR)"
    },
    {
        "num": "6",
        "title": "AGEING OF THE POPULATION",
        "color": colors.HexColor("#558B2F"),
        "bg": colors.HexColor("#F1F8E9"),
        "points": [
            "Global trend: increasing proportion of elderly (>60 years) in population",
            "Demographic shift creates: chronic diseases, disabilities, dementia, social isolation",
            "Healthy ageing requires <b>preventive strategies across the life course</b>",
            "Ageing is a major emerging challenge for health systems worldwide",
        ],
        "key": "🔑 Key fact: Ageing → Chronic disease burden (NCD epidemic)"
    },
    {
        "num": "7",
        "title": "GENDER",
        "color": colors.HexColor("#AD1457"),
        "bg": colors.HexColor("#FCE4EC"),
        "points": [
            "Women and men have <b>different health needs, exposures, and vulnerabilities</b>",
            "<b>Global Commission on Women's Health</b> established in <b>1993</b>",
            "Agenda for action: nutrition, reproductive health, consequences of violence, ageing, lifestyle, occupational environment",
            "Policy-makers increasingly include women's health in all development plans as a <b>priority</b>",
        ],
        "key": "🔑 Key fact: Global Commission on Women's Health — 1993"
    },
    {
        "num": "8",
        "title": "OTHER FACTORS",
        "color": colors.HexColor("#37474F"),
        "bg": colors.HexColor("#ECEFF1"),
        "points": [
            "<b>Science & technology</b>: Biomedical advances, new therapies, diagnostic tools",
            "<b>Information & communication</b>: Mass media, internet → instant access to health information worldwide",
            "<b>Health-related systems</b>: Food & agriculture, education, industry, social welfare, rural development",
            "<b>Economic & social policies</b>: Employment, wages, prepaid medical programmes, family support",
            "<b>Intersectoral action</b>: 'Medicine is NOT the sole contributor to health and well-being'",
        ],
        "key": "🔑 Key fact: Intersectoral approach — health is influenced by ALL sectors, not just medicine"
    },
]

point_s = ps("PT", fontSize=9, textColor=DARK, fontName="Helvetica", leading=13)
key_s   = ps("KS", fontSize=9, textColor=colors.HexColor("#B71C1C"), fontName="Helvetica-BoldOblique", leading=13)

for d in dets:
    num_cell = Table(
        [[Paragraph(d["num"], ps("N", fontSize=18, textColor=colors.white,
                                  fontName="Helvetica-Bold", alignment=TA_CENTER))]],
        colWidths=[1.2*cm], rowHeights=[1.2*cm]
    )
    num_cell.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), d["color"]),
        ("VALIGN",       (0,0),(-1,-1), "MIDDLE"),
    ]))

    title_cell = Paragraph(d["title"], ps("DT", fontSize=11, textColor=colors.white,
                                           fontName="Helvetica-Bold", leading=15))
    title_bar  = Table([[num_cell, title_cell]], colWidths=[1.4*cm, 16.0*cm])
    title_bar.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), d["color"]),
        ("VALIGN",       (0,0),(-1,-1), "MIDDLE"),
        ("TOPPADDING",   (0,0),(-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING",  (0,0),(-1,-1), 5),
    ]))

    pts_text = "<br/>".join(f"• {p}" for p in d["points"])
    key_text = d["key"]

    content_cell = Table([
        [Paragraph(pts_text, point_s)],
        [Paragraph(key_text,  key_s)],
    ], colWidths=[17.4*cm])
    content_cell.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,0), d["bg"]),
        ("BACKGROUND",   (0,1),(-1,1), colors.HexColor("#FFF8E1")),
        ("BOX",          (0,0),(-1,-1), 0.8, d["color"]),
        ("LINEBELOW",    (0,0),(-1,0), 0.5, d["color"]),
        ("TOPPADDING",   (0,0),(-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING",  (0,0),(-1,-1), 9),
        ("RIGHTPADDING", (0,0),(-1,-1), 9),
    ]))

    story.append(KeepTogether([title_bar, content_cell, sp(0.2)]))

story.append(sp(0.1))

# ── QUICK COMPARISON TABLE ──────────────────────────────────────────────────
story.append(banner("📊  SUMMARY TABLE — ALL 8 DETERMINANTS", color=BLUE))
story.append(sp(0.15))

sum_data = [
    [Paragraph("#", col_h), Paragraph("DETERMINANT", col_h),
     Paragraph("KEY CONCEPT", col_h), Paragraph("REMEMBER THIS", col_h)],
    [Paragraph("1", col_b), Paragraph("Biological", col_b),
     Paragraph("Genes, karyotype, genetic constitution", col_b),
     Paragraph("Unalterable after conception", col_b)],
    [Paragraph("2", col_b), Paragraph("Behavioural /\nSocio-cultural", col_b),
     Paragraph("Lifestyle, habits, socialization", col_b),
     Paragraph("Learnt from parents, peers, media", col_b)],
    [Paragraph("3", col_b), Paragraph("Environment", col_b),
     Paragraph("Physical, Biological, Psychosocial", col_b),
     Paragraph("Hippocrates → Pettenkofer", col_b)],
    [Paragraph("4", col_b), Paragraph("Socio-economic", col_b),
     Paragraph("GNP, education, occupation, politics", col_b),
     Paragraph("Kerala: IMR 10, literacy 97.9%", col_b)],
    [Paragraph("5", col_b), Paragraph("Health services", col_b),
     Paragraph("Promotive, Preventive, Curative, Rehab", col_b),
     Paragraph("PPCR — access & equity", col_b)],
    [Paragraph("6", col_b), Paragraph("Ageing", col_b),
     Paragraph("Demographic shift, elderly proportion", col_b),
     Paragraph("NCD & chronic disease burden", col_b)],
    [Paragraph("7", col_b), Paragraph("Gender", col_b),
     Paragraph("Different needs, vulnerabilities", col_b),
     Paragraph("Global Commission on Women's Health — 1993", col_b)],
    [Paragraph("8", col_b), Paragraph("Others", col_b),
     Paragraph("Science, ICT, intersectoral action", col_b),
     Paragraph("Medicine ≠ sole contributor to health", col_b)],
]

sum_table = Table(sum_data, colWidths=[0.7*cm, 3.1*cm, 6.8*cm, 6.8*cm])
sum_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0),  BLUE),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#EFF6FF"), colors.white]),
    ("BOX",           (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID",     (0,0),(-1,-1), 0.4, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 5),
    ("BOTTOMPADDING", (0,0),(-1,-1), 5),
    ("LEFTPADDING",   (0,0),(-1,-1), 6),
    ("RIGHTPADDING",  (0,0),(-1,-1), 6),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story += [sum_table, sp(0.3)]

# ── MNEMONICS PAGE ──────────────────────────────────────────────────────────
story.append(banner("🧠  MNEMONICS & MEMORY AIDS", color=PURPLE))
story.append(sp(0.15))

mnem_data = [
    [Paragraph("TOPIC", ps("MHH", fontSize=9.5, textColor=colors.white,
                             fontName="Helvetica-Bold", alignment=TA_CENTER)),
     Paragraph("MNEMONIC / MEMORY AID", ps("MHH", fontSize=9.5, textColor=colors.white,
                                             fontName="Helvetica-Bold", alignment=TA_CENTER))],

    [Paragraph("All 8 Determinants", mnem_h),
     Paragraph(
         '<b>"B-E-S-H-A-G-O-I"</b><br/>'
         '<b>B</b>ig <b>E</b>lephants <b>S</b>ometimes <b>H</b>elp <b>A</b>geing <b>G</b>randmas <b>O</b>vercome <b>I</b>llness<br/>'
         'Biological | Environment | Socio-economic | Health services | Ageing | Gender | Others | Information & communication',
         mnem_b)],

    [Paragraph("Socio-economic\nsub-factors", mnem_h),
     Paragraph(
         '<b>"EEOP"</b> → <b>E</b>conomic status | <b>E</b>ducation | <b>O</b>ccupation | <b>P</b>olitical system<br/>'
         'Memory: <i>"Every Educated Occupation needs Politics"</i>',
         mnem_b)],

    [Paragraph("Environmental\ncomponents", mnem_h),
     Paragraph(
         '<b>"PBP"</b> → <b>P</b>hysical | <b>B</b>iological | <b>P</b>sychosocial<br/>'
         'Memory: <i>"People Build Psyches"</i>',
         mnem_b)],

    [Paragraph("Health services\ncomponents", mnem_h),
     Paragraph(
         '<b>"PPCR"</b> → <b>P</b>romotive | <b>P</b>reventive | <b>C</b>urative | <b>R</b>ehabilitativeive<br/>'
         'Memory: <i>"People Prefer Complete Recovery"</i>',
         mnem_b)],

    [Paragraph("Biological agent\nproperties", mnem_h),
     Paragraph(
         '<b>"I-P-V"</b> → <b>I</b>nfectivity | <b>P</b>athogenicity | <b>V</b>irulence<br/>'
         'Memory: <i>"I Patiently Vanquish"</i>',
         mnem_b)],

    [Paragraph("Lifestyle is LEARNT\nfrom…", mnem_h),
     Paragraph(
         '<b>"P-P-F-S-M"</b> → <b>P</b>arents | <b>P</b>eer groups | <b>F</b>riends & siblings | <b>S</b>chool | <b>M</b>ass media<br/>'
         'Memory: <i>"Parents Prepare Future Students Majorly"</i>',
         mnem_b)],

    [Paragraph("Kerala example\n(key stats)", mnem_h),
     Paragraph(
         '<b>Kerala IMR = 10</b> (vs all-India 34) — year 2016<br/>'
         '<b>Female literacy = 97.9%</b> (vs all-India 68.4%) — 2015–16<br/>'
         'Concept: <i>Education compensates poverty effects on health</i>',
         mnem_b)],

    [Paragraph("WHO GNP target\nvs India", mnem_h),
     Paragraph(
         'WHO target: <b>≥5% GNP</b> on health<br/>'
         'India spends: <b>~1% GNP</b> on health & family welfare<br/>'
         'Memory: <i>"WHO says 5, India does 1"</i>',
         mnem_b)],

    [Paragraph("Who first linked\nenvironment & disease?", mnem_h),
     Paragraph(
         '<b>Hippocrates</b> (first) → climate, water, air<br/>'
         '<b>Pettenkofer</b> (Germany) → revived the concept<br/>'
         'Memory: <i>"Hip hop to Pettenkofer's pop"</i>',
         mnem_b)],
]

mnem_table = Table(mnem_data, colWidths=[3.6*cm, 13.8*cm])
mnem_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0),  PURPLE),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#F3E5F5"), colors.HexColor("#EDE7F6")]),
    ("BOX",           (0,0),(-1,-1), 1.2, PURPLE),
    ("INNERGRID",     (0,0),(-1,-1), 0.4, colors.HexColor("#CE93D8")),
    ("TOPPADDING",    (0,0),(-1,-1), 7),
    ("BOTTOMPADDING", (0,0),(-1,-1), 7),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story += [mnem_table, sp(0.3)]

# ── QUICK-FIRE Q&A ──────────────────────────────────────────────────────────
story.append(banner("⚡  QUICK-FIRE EXAM Q&A", color=colors.HexColor("#B71C1C")))
story.append(sp(0.15))

qa_pairs = [
    ("Health is multifactorial — what does this mean?",
     "Health depends on BOTH genetic (internal) AND environmental (external) factors and their interactions"),
    ("Which determinant CANNOT be altered after conception?",
     "Biological determinant (genetic make-up)"),
    ("Who first linked environment to disease?",
     "Hippocrates (climate, water, air); revived later by Pettenkofer in Germany"),
    ("What are the 3 components of the external environment?",
     "Physical, Biological, Psychosocial"),
    ("What is 'micro-environment'?",
     "Personal/domestic environment — eating habits, smoking, drinking, personal lifestyle"),
    ("Name the 4 sub-factors of socio-economic conditions.",
     "Economic status, Education, Occupation, Political system (EEOP)"),
    ("What is the WHO target for GNP expenditure on health?",
     "At least 5% of GNP. India spends approximately 1% of GNP."),
    ("Kerala's IMR vs all-India IMR (2016)?",
     "Kerala = 10; All-India = 34. Key reason: high female literacy (97.9% vs 68.4%)"),
    ("What is lifestyle and how is it acquired?",
     "Cultural & behavioural patterns + lifelong personal habits. Learnt from parents, peers, siblings, school, and mass media"),
    ("Give 2 examples of lifestyle-related diseases in developed countries.",
     "Coronary heart disease, obesity, lung cancer, drug addiction"),
    ("When was the Global Commission on Women's Health established?",
     "1993"),
    ("What are the 4 components of health services?",
     "Promotive, Preventive, Curative, Rehabilitative (PPCR)"),
    ("What does ageing of the population lead to?",
     "Increased chronic diseases, disabilities, dementia, social isolation — NCD burden"),
    ("What is 'positive health' according to WHO?",
     "Ability to fully express one's genetic potentialities in a healthy environment"),
    ("What is the principle of intersectoral action?",
     "Medicine is NOT the sole contributor to health — food, education, industry, social welfare all contribute"),
    ("What is per capita GNP used to measure?",
     "General economic performance — the most widely accepted measure of economic status"),
    ("Irony of affluence as a health determinant?",
     "Affluence can also CAUSE disease — high rates of CHD, diabetes, obesity in upper socioeconomic groups"),
    ("What is the definition of lifestyle?",
     "'The way people live' — reflecting a whole range of social values, attitudes and activities (Park, p.24)"),
]

qa_data = [[Paragraph("QUESTION", col_h), Paragraph("ANSWER", col_h)]]
for i, (q, a) in enumerate(qa_pairs):
    bg = colors.HexColor("#FFF5F5") if i % 2 == 0 else colors.white
    qa_data.append([Paragraph(q, qa_q), Paragraph(a, qa_a)])

qa_table = Table(qa_data, colWidths=[8.5*cm, 8.9*cm])
qa_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0),  colors.HexColor("#B71C1C")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [colors.HexColor("#FFF5F5"), colors.white]),
    ("BOX",           (0,0),(-1,-1), 1.2, DARK),
    ("INNERGRID",     (0,0),(-1,-1), 0.4, colors.HexColor("#AAAAAA")),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story += [qa_table, sp(0.3)]

# ── FOOTER ───────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=MAROON))
story.append(sp(0.1))
story.append(Paragraph(
    "Source: Park's Textbook of Preventive and Social Medicine, pp. 23–25 | "
    "Prepared for quick revision",
    src_s
))

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

cd /tmp/workspace/determinants-health-notes && python make_notes.py 2>&1

Editing File

~/determinants-health-notes/make_notes.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/determinants-health-notes/make_notes.py'
Running Command

cd /tmp/workspace/determinants-health-notes && python make_notes.py 2>&1

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

6 colour-coded sections across the PDF:
  1. Definition box - concise intro on multifactorial nature of health
  2. Master Mnemonic - "B-E-S-H-A-G-O-I" with the sentence "Big Elephants Sometimes Help Ageing Grandmas Overcome Illness" covering all 8 determinants
  3. 8 Determinants in Detail - each determinant gets its own colour-coded card with bullet points + a red "Key Fact" callout at the bottom
  4. Summary Table - all 8 at a glance with the single most important thing to remember for each
  5. Mnemonics Section - 9 targeted mnemonics covering sub-factors (EEOP, PBP, PPCR), Kerala stats, WHO GNP target, lifestyle sources, and more
  6. 18-question Quick-Fire Q&A - exam-style questions + answers (Kerala IMR, Hippocrates vs Pettenkofer, WHO targets, definitions, ironies of affluence, etc.)

Determinants of Health Notes

PDF Document · PDF

Create a pdf

Asking for Preferences
This is a shared conversation. Sign in to Orris to start your own chat.