Natural history of disease in k park book

Reading File
The "Natural History of Disease" is a core concept in preventive medicine, covering how a disease progresses from pre-pathogenesis through clinical disease if left untreated. Let me search K Park's textbook directly.
Searching sources...
Finding Sources
Finding Sources
Found it - Park's Textbook of Preventive and Social Medicine, block1.md at line 3573. Let me read that section now, along with surrounding content for context.
Reading File
Good content, but truncated. Let me read the next section to get more detail on the pathogenesis phase and levels of prevention.
Reading File
I now have the key content. Let me also fetch the main Natural History of Disease diagram (Fig. 8) for visual aid.
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

What format do you want the notes in?

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
Found it. Reading the full section now.
Searching sources...
Reading File
Reading File
Reading File
Reading File
Now let me fetch the main diagram and get the missing sections (socioeconomic, health services, etc.).
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

Could you clarify what you'd like the PDF to contain?
Asking for Preferences

What should the PDF be about?

Newmonic for remember determinant

Here are the best mnemonics to remember all 8 Determinants of Health from Park's:

🧠 Master Mnemonic — "BESH AGOI"

LetterDeterminant
BBiological
EEnvironment
SSocio-economic
HHealth services
AAgeing of population
GGender
OOthers (Science, ICT)
IInformation & Communication

💬 Memory Sentence

"Big Elephants Sometimes Help Ageing Grandmas Overcome Illness"

🔡 Sub-factor Mnemonics

Socio-economic sub-factors → "EEOP"
Economic status | Education | Occupation | Political system "Every Educated Occupation needs Politics"
Environment components → "PBP"
Physical | Biological | Psychosocial "People Build Psyches"
Health services components → "PPCR"
Promotive | Preventive | Curative | Rehabilitativeive "People Prefer Complete Recovery"
Lifestyle is learnt from → "PPFSM"
Parents | Peers | Friends & siblings | School | Mass media "Parents Prepare Future Students Majorly"

⚡ Quick Number Anchors

StatValue
WHO GNP target for health≥ 5%
India GNP spend on health~1%
Kerala IMR (2016)10
All-India IMR (2016)34
Kerala female literacy97.9%
Global Commission on Women's Health1993
"WHO says 5, India does 1" — easy to remember the GNP gap!

My nipple is getting cracked when it grows what I do

Reading File
Finding Sources
Reading File
Based on Bailey & Love's Surgery, here is what you need to know about a cracked nipple:

Cracked Nipple

What is it?

A cracked nipple occurs in about 10% of nursing (breastfeeding) mothers. It starts as a small blister on the nipple from the strong suction force during breastfeeding, which then ruptures to form a small ulcer/crack.

Why is it a problem?

  • The crack gets colonised by bacteria or fungi
  • Microbes can enter the milk ducts and progress to lactational mastitis (breast infection) if untreated

What to do:

StepAction
1. Rest the nippleStop direct feeding for 48 hours
2. Empty the breastUse a breast pump to avoid milk stasis
3. Clean gentlyWash the sore nipple with warm water and moisturising soap
4. Apply creamApply antimicrobial cream - Mupirocin is the recommended choice

Important warning signs - see a doctor if:

  • Breast becomes red, swollen, warm, or painful (signs of mastitis)
  • You develop fever
  • Pain is severe or the crack is not healing
  • There is pus or discharge from the nipple

Note: This information is from a surgical/medical context (Bailey & Love's Surgery). If you are currently breastfeeding and experiencing this, please consult a doctor or lactation specialist for personalised advice.

No I’m 22 yr age without lactation and pregnancy

This is an important clarification. A cracked/sore nipple in a non-lactating, non-pregnant person needs proper evaluation.
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Good - I have solid clinical information. Here is a comprehensive answer:

Cracked/Sore Nipple at Age 22 - Non-Lactating

This is actually a well-recognised condition and has several possible causes. Here is a breakdown:

Most Likely Causes

1. Nipple Eczema (Most Common)

  • The most frequent cause of cracked, fissured nipples in non-lactating women
  • Causes painful fissuring, oozing, and crusting around the nipple/areola
  • Sub-types include:
    • Atopic Dermatitis (AD) - can appear as the sole manifestation in adult women, even without other skin involvement
    • Irritant Contact Dermatitis - from friction (tight bras, seams, synthetic fabric rubbing against the nipple), or poorly fitting brassieres in asymmetric/larger breasts
    • Allergic Contact Dermatitis - reaction to skin creams, fabric softeners, soaps, perfumed products

2. Jogger's Nipple / Friction Nipple

  • Caused by repeated friction from clothing during exercise or daily activity
  • Very common in young, active people - both men and women
  • Results in cracking, soreness, and even bleeding

3. Dry Skin / Environmental Factors

  • Cold, dry weather and low humidity can cause nipple skin to crack as it stretches

⚠️ When to See a Doctor (Red Flags)

SignWhy It Matters
Nipple changes only on one side lasting >3 monthsMust rule out Paget's disease (rare but serious - a biopsy is mandatory)
Oozing, weeping, or bloody dischargeCould indicate erosive adenomatosis or other breast condition
A lump or mass felt in the breastNeeds urgent breast specialist referral
Skin not responding to any treatmentBiopsy needed to exclude Paget's disease
Paget's disease is rare at age 22 but important to know - it presents as a persistent, eczema-like lesion of the nipple that doesn't heal with normal treatment.

What You Can Do Right Now

  1. Moisturise - apply a fragrance-free, gentle emollient (like petroleum jelly/Vaseline) to the cracked area daily
  2. Avoid friction - wear soft, seamless, cotton bras; avoid tight synthetic fabrics
  3. Avoid irritants - don't use scented soaps, perfumes, or harsh products on the nipple area
  4. If eczema - a mild topical steroid cream (e.g. hydrocortisone 1%) is often effective for nipple eczema (short-term use only)
  5. Keep the area clean and dry

Bottom Line

At 22, without pregnancy or lactation, the most likely cause is nipple eczema (atopic or irritant type) or friction. Both are very manageable. However, if the cracking is:
  • Only on one side
  • Not healing after a few weeks
  • Getting worse despite treatment
...you should see a doctor for a proper examination. Do not self-treat for more than 3-4 weeks without professional evaluation.
(Sources: Andrews' Diseases of the Skin; Tintinalli's Emergency Medicine)

Crack in both nipple and one nipple is not growing

This combination of symptoms needs clarification before I can give accurate information.
Asking for Preferences

Are you male or female? · When you say 'one nipple is not growing' — what do you mean?

Finding Sources
Finding Sources
Reading File
Reading File
Thank you for clarifying. Here is a clear, honest explanation:

Your Two Separate Issues Explained

You have two things happening at the same time:

Issue 1 — Cracked Nipples (Both Sides)

Since it is bilateral (both sides), this is most likely:
  • Nipple eczema - atopic or irritant type (very common in young women)
  • Friction dermatitis - from bra fabric/seams rubbing on the nipple
  • Dry skin causing the nipple skin to crack as it stretches during growth
Bilateral cracking is reassuring - it strongly points away from anything serious (serious causes like Paget's disease are almost always unilateral).
What to do:
  • Apply fragrance-free moisturiser (petroleum jelly/coconut oil) daily
  • Wear soft, seamless, cotton bras
  • Avoid scented soaps directly on the nipple
  • If itchy and red - short course of mild hydrocortisone 1% cream can help

Issue 2 — One Nipple Is Flat/Inverted

This is called Congenital Nipple Inversion and is the key point here:
"At age 14-16 years, elongation of the major milk ducts leads to projection of the nipple. Lack of elongation of the major milk ducts leads to failure of the nipple to protrude - called nipple inversion." (Bailey & Love's Surgery)
Important facts:
  • It is very common - can be unilateral (one side only)
  • It is a developmental variation, not a disease
  • It does NOT predispose to breast cancer
  • It often corrects spontaneously during pregnancy
  • Minor degrees can sometimes be corrected by gently pulling the nipple forward
At 22, if this nipple has always been flat/inverted since puberty - this is almost certainly congenital and completely harmless.

⚠️ One Important Distinction

TypeWhat it means
Congenital inversion (present since puberty, always been that way)Normal variation - no concern
Acquired retraction (nipple that was normal and recently pulled inward)Needs urgent evaluation - can indicate periductal mastitis or, rarely, carcinoma

When You MUST See a Doctor

  • If the inverted nipple is new/recent - was normal before and now has pulled in
  • If there is a lump anywhere in the breast
  • If there is any discharge from the nipple (especially bloody)
  • If the cracking is only on one side and not healing after 3-4 weeks
  • If there is redness, swelling, or pain deep in the breast

Bottom line: At 22, with bilateral cracking (eczema/friction most likely) and a nipple that has probably been inverted since puberty - this is very likely benign. But please do see a doctor for a physical examination to confirm, especially to verify the inverted nipple has been this way since puberty and is not a recent change.
(Sources: Bailey & Love's Surgery; Robbins Pathologic Basis of Disease; Andrews' Diseases of the Skin)

Search for images of congenital nipple inversion to understand the condition

I can share the clinical diagram from the medical textbook that was already retrieved. Let me fetch it.
Loading Image
Here is the clinical image from Bailey & Love's Surgery (Figure 58.17 - Congenital Nipple Inversion):

What you can see in this image:

  • The right nipple (left in image) is flat/inverted - it sits flush with the areola and does not project outward, showing just a small central dimple
  • The left nipple (right in image) is normal - it projects outward as expected
  • This is a classic example of unilateral congenital nipple inversion
  • The breast tissue itself looks completely normal and healthy on both sides

This is what yours likely looks like

If your inverted nipple has been this way since puberty and looks similar to this image - it is a congenital (birth/development) variation, not a disease or growth problem.
Cause: During puberty (age 14-16), the major milk ducts normally elongate and push the nipple outward. In congenital inversion, the ducts are slightly shorter or tethered, so the nipple is pulled inward instead.

Key reassurance:

  • It is very common - affects up to 10% of women
  • Does NOT cause or predict breast cancer
  • Does NOT mean anything is wrong with the breast tissue
  • Can often be gently everted by pulling the nipple outward with fingers
  • Often corrects naturally during pregnancy
If yours looks similar and has been this way since your teens, you can be reassured. But still worth mentioning to a doctor at your next check-up for confirmation.
This is a shared conversation. Sign in to Orris to start your own chat.