We just had chat about pathology
I am 2nd yr mbbs Student from nimsrc knruhs University
I wanna start my pathology from scratch my final exams are in September but I have pre final in July 1st week
| Week | Topics |
|---|---|
| Week 1 | Cell injury & death (necrosis, apoptosis), Intracellular accumulations, Pigments |
| Week 2 | Inflammation (acute & chronic), Wound healing & repair |
| Week 3 | Hemodynamic disorders (edema, thrombosis, embolism, infarction), Neoplasia |
| Week | Topics |
|---|---|
| Week 4 | CVS (IHD, rheumatic heart disease, hypertension), Respiratory (pneumonia, TB, lung carcinoma) |
| Week 5 | Hematology (anemias, leukemias), Kidney (GN, nephrotic/nephritic), Liver basics |
Let's study together... With best and realistic study plan to get distinction
Understand first, memorize second. Distinction students don't mug up - they explain why things happen. Examiners reward mechanism-based answers.
| Day | What to Study | Time |
|---|---|---|
| Mon (Today) | Cell injury - causes, mechanisms, reversible vs irreversible | 1.5 hrs |
| Tue | Necrosis - all 6 types with examples, coagulative vs liquefactive | 1.5 hrs |
| Wed | Apoptosis - intrinsic & extrinsic pathways, differences from necrosis | 1.5 hrs |
| Thu | Cell adaptations - hypertrophy, hyperplasia, atrophy, metaplasia, dysplasia | 1.5 hrs |
| Fri | Intracellular accumulations - fatty change, pigments (lipofuscin, hemosiderin, melanin, bilirubin) | 1.5 hrs |
| Sat | Full revision of Week 1 + write short notes on each topic | 2 hrs |
| Sun | Rest OR catch up if behind - do NOT skip rest entirely |
| Day | Topic |
|---|---|
| Mon | Acute inflammation - vascular & cellular events, chemical mediators |
| Tue | Chemical mediators in detail (histamine, prostaglandins, complement, cytokines) |
| Wed | Outcomes of acute inflammation, morphological types (serous, fibrinous, suppurative, etc.) |
| Thu | Chronic inflammation - causes, features, cells involved |
| Fri | Granulomatous inflammation - types, TB granuloma vs sarcoid vs foreign body |
| Sat | Full revision Week 2 + compare/contrast tables |
| Sun | Rest |
| Day | Topic |
|---|---|
| Mon | Wound healing by primary & secondary intention, factors affecting healing |
| Tue | Edema - mechanisms, types (exudate vs transudate), clinical examples |
| Wed | Thrombosis - Virchow's triad, fate of thrombus |
| Thu | Embolism - types, pulmonary embolism in detail |
| Fri | Infarction - types, red vs white, common sites |
| Sat | Shock - types, pathogenesis, stages |
| Sun | Rest + Weekly revision |
| Day | Topic |
|---|---|
| Mon | Definitions - tumor, neoplasia, benign vs malignant features |
| Tue | Carcinogenesis - chemical, radiation, viral carcinogens |
| Wed | Oncogenes, tumor suppressor genes, p53, Rb |
| Thu | Tumor invasion & metastasis - mechanisms, routes |
| Fri | Grading vs Staging, paraneoplastic syndromes, tumor markers |
| Sat | Full General Pathology revision (Week 1-4 summary) |
| Sun | Rest |
| Day | System | Key Topics |
|---|---|---|
| Jun 22 | CVS | IHD (angina, MI - zones, enzymes), Rheumatic heart disease, IE |
| Jun 23 | Respiratory | Pneumonia (lobar, broncho), TB (primary vs secondary), Lung carcinoma |
| Jun 24 | Hematology 1 | Anemias - iron deficiency, megaloblastic, hemolytic, sickle cell |
| Jun 25 | Hematology 2 | Leukemias - ALL, AML, CLL, CML (basic differentiation) |
| Jun 26 | Kidney | GN - nephrotic vs nephritic, membranous, minimal change, PSGN |
| Jun 27 | Liver | Hepatitis (A,B,C patterns), cirrhosis, hepatocellular carcinoma |
| Jun 28 | Mock exam day | Write 5-mark and 10-mark answers under timed conditions |
| Jun 29-30 | Final revision before pre-finals | Focus on weak areas only |
| What | How |
|---|---|
| Theory answers | Always: Definition → Classification → Pathogenesis → Morphology → Clinical features → Complications |
| Diagrams | Draw at least 1 diagram per answer where applicable (gross + microscopic) |
| Tables | Compare/contrast tables score extra marks (e.g., benign vs malignant, necrosis vs apoptosis) |
| Buzzwords | Learn classic exam buzzwords - examiners love them |
| Past papers | Solve last 5 years KNRUHS papers - pattern repeats heavily |
| Book | Purpose |
|---|---|
| Harsh Mohan | Primary textbook - Indian exam focused, covers KNRUHS syllabus perfectly |
| Pathoma (Husain Sattar) | Concept clarity - watch videos for tough topics |
| Robbins Basic Pathology | Reference for mechanisms when Harsh Mohan isn't enough |
| Me (Orris) | Daily teaching, notes, MCQs, doubt clearing - use me every session |
"Today I'm studying [topic]"
Create a printable study schedule I can download
ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
mkdir -p /home/daytona/workspace/pathology-schedule
~/pathology-schedule/generate_schedule.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/pathology-schedule/Pathology_Study_Schedule_MBBS.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.5*cm,
leftMargin=1.5*cm,
topMargin=1.5*cm,
bottomMargin=1.5*cm
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'Title', parent=styles['Title'],
fontSize=18, textColor=colors.HexColor('#1a237e'),
spaceAfter=4, alignment=TA_CENTER, fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'Subtitle', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#37474f'),
spaceAfter=2, alignment=TA_CENTER
)
phase_style = ParagraphStyle(
'Phase', parent=styles['Normal'],
fontSize=13, textColor=colors.white,
fontName='Helvetica-Bold', alignment=TA_CENTER
)
section_style = ParagraphStyle(
'Section', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#1a237e'),
fontName='Helvetica-Bold', spaceAfter=4, spaceBefore=10
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=8.5, textColor=colors.HexColor('#37474f'),
leading=12
)
small_style = ParagraphStyle(
'Small', parent=styles['Normal'],
fontSize=8, textColor=colors.HexColor('#212121'), leading=11
)
footer_style = ParagraphStyle(
'Footer', parent=styles['Normal'],
fontSize=8, textColor=colors.HexColor('#78909c'),
alignment=TA_CENTER
)
# Color palette
DARK_BLUE = colors.HexColor('#1a237e')
MED_BLUE = colors.HexColor('#1565c0')
LIGHT_BLUE = colors.HexColor('#e3f2fd')
PHASE1_COL = colors.HexColor('#1b5e20') # green
PHASE2_COL = colors.HexColor('#e65100') # orange
PHASE3_COL = colors.HexColor('#4a148c') # purple
PHASE4_COL = colors.HexColor('#b71c1c') # red
HEADER_BG = colors.HexColor('#1565c0')
ALT_ROW = colors.HexColor('#f5f9ff')
WHITE = colors.white
GOLD = colors.HexColor('#f9a825')
story = []
# ── HEADER ──────────────────────────────────────────────────────────────────
story.append(Paragraph("PATHOLOGY DISTINCTION STUDY PLAN", title_style))
story.append(Paragraph("2nd Year MBBS | NIMSRC, KNRUHS University", subtitle_style))
story.append(Paragraph("May 25, 2026 → September 2026", subtitle_style))
story.append(Spacer(1, 0.3*cm))
# Timeline banner
banner_data = [
[
Paragraph("<b>TODAY</b>\nMay 25, 2026", ParagraphStyle('b', parent=styles['Normal'], fontSize=9, alignment=TA_CENTER, textColor=WHITE)),
Paragraph("<b>PRE-FINALS</b>\nJuly 1st Week", ParagraphStyle('b', parent=styles['Normal'], fontSize=9, alignment=TA_CENTER, textColor=WHITE)),
Paragraph("<b>FINALS</b>\nSeptember 2026", ParagraphStyle('b', parent=styles['Normal'], fontSize=9, alignment=TA_CENTER, textColor=WHITE)),
]
]
banner = Table(banner_data, colWidths=[5.8*cm, 5.8*cm, 5.8*cm])
banner.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), PHASE1_COL),
('BACKGROUND', (1,0), (1,0), PHASE2_COL),
('BACKGROUND', (2,0), (2,0), PHASE4_COL),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('ROWHEIGHT', (0,0), (-1,-1), 1.1*cm),
('ROUNDEDCORNERS', [5,5,5,5]),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 8),
]))
story.append(banner)
story.append(Spacer(1, 0.4*cm))
# ── GOLDEN RULE ─────────────────────────────────────────────────────────────
golden_data = [[
Paragraph(
'<b>THE DISTINCTION FORMULA:</b> Understand first, memorize second. '
'For every answer: <b>Definition → Classification → Pathogenesis → Morphology → Clinical features → Complications</b>. '
'Always add a diagram + comparison table where possible.',
ParagraphStyle('g', parent=styles['Normal'], fontSize=8.5, textColor=colors.HexColor('#1a237e'))
)
]]
golden = Table(golden_data, colWidths=[17.4*cm])
golden.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#fff8e1')),
('BOX', (0,0), (-1,-1), 1.5, GOLD),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
story.append(golden)
story.append(Spacer(1, 0.5*cm))
# ═══════════════════════════════════════════════════════════════════════════
# PHASE 1 - GENERAL PATHOLOGY
# ═══════════════════════════════════════════════════════════════════════════
phase1_hdr = [[Paragraph("PHASE 1: GENERAL PATHOLOGY | May 25 – June 20 (4 Weeks)", phase_style)]]
ph1 = Table(phase1_hdr, colWidths=[17.4*cm])
ph1.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), PHASE1_COL),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
]))
story.append(ph1)
story.append(Spacer(1, 0.25*cm))
# Week tables helper
def week_table(title, date_range, rows, color):
"""rows = list of (Day/Date, Topic, Focus Points)"""
header = [
Paragraph(f"<b>{title}</b> | {date_range}", ParagraphStyle('wh', parent=styles['Normal'], fontSize=9.5, textColor=WHITE, fontName='Helvetica-Bold')),
'', ''
]
col_headers = [
Paragraph("<b>Day</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Topic</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Key Focus Points</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
]
data = [header, col_headers]
for i, (day, topic, focus) in enumerate(rows):
bg = ALT_ROW if i % 2 == 0 else WHITE
data.append([
Paragraph(day, small_style),
Paragraph(f"<b>{topic}</b>", small_style),
Paragraph(focus, small_style),
])
t = Table(data, colWidths=[2.8*cm, 5.8*cm, 8.8*cm])
style = TableStyle([
('SPAN', (0,0), (2,0)),
('BACKGROUND', (0,0), (2,0), color),
('BACKGROUND', (0,1), (2,1), colors.HexColor('#37474f')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTSIZE', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
])
# Alt row colouring
for i in range(len(rows)):
bg = ALT_ROW if i % 2 == 0 else WHITE
style.add('BACKGROUND', (0, i+2), (2, i+2), bg)
t.setStyle(style)
return t
W1_GREEN = colors.HexColor('#2e7d32')
W2_TEAL = colors.HexColor('#00695c')
W3_INDIGO= colors.HexColor('#283593')
W4_DEEP = colors.HexColor('#4527a0')
# Week 1
w1_rows = [
("Mon May 25", "Cell Injury - Causes & Mechanisms", "ATP depletion, free radicals, membrane damage, reversible vs irreversible changes"),
("Tue May 26", "Necrosis - All 6 Types", "Coagulative, liquefactive, caseous, fat, fibrinoid, gangrenous - examples for each"),
("Wed May 27", "Apoptosis", "Intrinsic vs extrinsic pathways, Bcl-2, caspases, differences from necrosis (table)"),
("Thu May 28", "Cell Adaptations", "Hypertrophy, hyperplasia, atrophy, metaplasia, dysplasia - definitions + examples"),
("Fri May 29", "Intracellular Accumulations & Pigments", "Fatty change (steatosis), lipofuscin, hemosiderin, melanin, bilirubin, carbon"),
("Sat May 30", "FULL REVISION - Week 1", "Write short notes on each topic; draw necrosis types table; MCQs"),
("Sun May 31", "REST / Catch-up", "Light review only if behind; NO new topics"),
]
story.append(week_table("WEEK 1 - Cell Injury, Death & Adaptations", "May 25 - 31", w1_rows, W1_GREEN))
story.append(Spacer(1, 0.3*cm))
# Week 2
w2_rows = [
("Mon Jun 1", "Acute Inflammation - Vascular Events", "Vasodilation, increased permeability, exudate formation, stasis"),
("Tue Jun 2", "Acute Inflammation - Cellular Events", "Margination, rolling, adhesion (selectins, integrins), emigration, phagocytosis"),
("Wed Jun 3", "Chemical Mediators", "Histamine, serotonin, PGs, leukotrienes, complement (C3a/C5a), cytokines (IL-1, TNF)"),
("Thu Jun 4", "Morphological Types & Outcomes", "Serous, fibrinous, suppurative, ulcerative; outcomes: resolution, fibrosis, abscess"),
("Fri Jun 5", "Chronic Inflammation", "Causes, cells (macrophage, lymphocyte, plasma cell), granulomatous inflammation"),
("Sat Jun 6", "Granulomatous Inflammation in Detail", "TB granuloma (Langhans giant cells, central caseation) vs sarcoid vs foreign body"),
("Sun Jun 7", "REST + Revision", "Compare acute vs chronic table; review mediators flashcards"),
]
story.append(week_table("WEEK 2 - Inflammation (Acute & Chronic)", "June 1 - 7", w2_rows, W2_TEAL))
story.append(Spacer(1, 0.3*cm))
# Week 3
w3_rows = [
("Mon Jun 8", "Wound Healing", "Primary vs secondary intention; phases (hemostasis, inflammation, proliferation, remodelling)"),
("Tue Jun 9", "Factors Affecting Healing", "Local (infection, blood supply) vs systemic (nutrition, steroids, diabetes)"),
("Wed Jun 10", "Edema & Congestion", "Mechanisms (oncotic, hydrostatic, lymphatic); exudate vs transudate comparison table"),
("Thu Jun 11", "Thrombosis", "Virchow's triad; arterial vs venous; fate of thrombus (resolution, organization, embolism)"),
("Fri Jun 12", "Embolism", "Pulmonary embolism (saddle embolus, Hampton hump); fat, air, amniotic fluid embolism"),
("Sat Jun 13", "Infarction & Shock", "Red vs white infarct; types of shock - hypovolemic, septic, cardiogenic, neurogenic"),
("Sun Jun 14", "REST + Full Revision", "Draw Virchow's triad; write shock pathogenesis flowchart"),
]
story.append(week_table("WEEK 3 - Wound Healing & Hemodynamic Disorders", "June 8 - 14", w3_rows, W3_INDIGO))
story.append(Spacer(1, 0.3*cm))
# Week 4
w4_rows = [
("Mon Jun 15", "Neoplasia - Definitions & Features", "Tumor, neoplasia; benign vs malignant (growth rate, margins, metastasis, mitoses)"),
("Tue Jun 16", "Carcinogenesis - Chemical & Radiation", "Initiators vs promoters; direct/indirect acting carcinogens; UV, ionizing radiation"),
("Wed Jun 17", "Viral Carcinogenesis", "HPV (cervical ca), HBV/HCV (HCC), EBV (Burkitt, NPC), HTLV-1 (T-cell leukemia)"),
("Thu Jun 18", "Oncogenes & Tumor Suppressor Genes", "Proto-oncogene activation (RAS, MYC, HER2); TSG loss (p53, Rb, BRCA1/2)"),
("Fri Jun 19", "Metastasis & Tumor Markers", "Routes (hematogenous, lymphatic, transcoelemic); PSA, CEA, AFP, CA-125, CA 19-9"),
("Sat Jun 20", "Grading, Staging & Paraneoplastic Syndr.", "Grading (differentiation) vs staging (TNM); ACTH, PTHrP, SIADH, Lambert-Eaton"),
("Sun Jun 21", "REST + General Pathology FULL REVISION", "This is your pre-exam buffer - revise all 4 weeks; write model 10-mark answers"),
]
story.append(week_table("WEEK 4 - Neoplasia (Most Important Chapter)", "June 15 - 21", w4_rows, W4_DEEP))
story.append(Spacer(1, 0.5*cm))
# ═══════════════════════════════════════════════════════════════════════════
# PHASE 2
# ═══════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
phase2_hdr = [[Paragraph("PHASE 2: HIGH-YIELD SYSTEMIC PATHOLOGY | June 22 – June 30 (PRE-FINALS SPRINT)", phase_style)]]
ph2 = Table(phase2_hdr, colWidths=[17.4*cm])
ph2.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), PHASE2_COL),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
]))
story.append(ph2)
story.append(Spacer(1, 0.25*cm))
sprint_data = [
[
Paragraph("<b>Date</b>", ParagraphStyle('sh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>System</b>", ParagraphStyle('sh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Must-Know Topics</b>", ParagraphStyle('sh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Exam Tip</b>", ParagraphStyle('sh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold')),
],
[Paragraph("Jun 22", small_style), Paragraph("<b>CVS</b>", small_style),
Paragraph("IHD (stable/unstable angina, MI - zones of necrosis, cardiac enzymes timeline), Rheumatic heart disease (Aschoff bodies), Infective Endocarditis", small_style),
Paragraph("Draw MI enzyme graph - always scores marks", small_style)],
[Paragraph("Jun 23", small_style), Paragraph("<b>Respiratory</b>", small_style),
Paragraph("Lobar vs bronchopneumonia (stages of lobar), Primary vs secondary TB (Ghon complex, Simon foci), Lung carcinoma types (squamous, adeno, small cell)", small_style),
Paragraph("TB: primary vs secondary comparison table", small_style)],
[Paragraph("Jun 24", small_style), Paragraph("<b>Hematology 1</b>", small_style),
Paragraph("Iron deficiency anemia (microcytic hypochromic), Megaloblastic (B12/folate, hypersegmented neutrophils), Hemolytic anemias, Sickle cell - HbS, sickling crisis", small_style),
Paragraph("Anemia classification table by MCV/MCH", small_style)],
[Paragraph("Jun 25", small_style), Paragraph("<b>Hematology 2</b>", small_style),
Paragraph("ALL vs AML vs CLL vs CML - cell type, age, morphology (Auer rods in AML, Philadelphia chromosome in CML), TdT in ALL", small_style),
Paragraph("4-column comparison table of all leukemias", small_style)],
[Paragraph("Jun 26", small_style), Paragraph("<b>Kidney</b>", small_style),
Paragraph("Nephrotic vs Nephritic syndrome (table); Minimal change disease, PSGN (hump-shaped deposits), Membranous GN, RPGN (crescents)", small_style),
Paragraph("Nephrotic vs nephritic is a guaranteed question", small_style)],
[Paragraph("Jun 27", small_style), Paragraph("<b>Liver</b>", small_style),
Paragraph("Viral hepatitis patterns (A,B,C - serology), Alcoholic liver disease (steatosis → hepatitis → cirrhosis), Cirrhosis complications, HCC (AFP marker)", small_style),
Paragraph("Hep B serology (HBsAg, anti-HBs, HBeAg) often asked", small_style)],
[Paragraph("Jun 28", small_style), Paragraph("<b>MOCK EXAM DAY</b>", small_style),
Paragraph("Write 2 x 10-mark answers (timed 15 min each) + 10 MCQs; simulate real exam conditions", small_style),
Paragraph("Use past KNRUHS papers for questions", small_style)],
[Paragraph("Jun 29-30", small_style), Paragraph("<b>Final Revision</b>", small_style),
Paragraph("Revise weak areas only; re-read short notes; go through written model answers", small_style),
Paragraph("Sleep well before pre-finals!", small_style)],
]
sprint_table = Table(sprint_data, colWidths=[1.8*cm, 3.0*cm, 8.6*cm, 4.0*cm])
sprint_style = TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#bf360c')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTSIZE', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
('BACKGROUND', (0,7), (-1,7), colors.HexColor('#fff3e0')), # mock exam
('BACKGROUND', (0,8), (-1,8), colors.HexColor('#fce4ec')), # final revision
])
for i in range(1, len(sprint_data)):
if i not in [7, 8]:
bg = ALT_ROW if i % 2 == 0 else WHITE
sprint_style.add('BACKGROUND', (0,i), (-1,i), bg)
sprint_table.setStyle(sprint_style)
story.append(sprint_table)
story.append(Spacer(1, 0.5*cm))
# ═══════════════════════════════════════════════════════════════════════════
# PHASE 3 & 4
# ═══════════════════════════════════════════════════════════════════════════
phase3_hdr = [[Paragraph("PHASE 3: REMAINING SYSTEMIC PATHOLOGY | July 10 – August 20", phase_style)]]
ph3 = Table(phase3_hdr, colWidths=[17.4*cm])
ph3.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), PHASE3_COL),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
]))
story.append(ph3)
story.append(Spacer(1, 0.25*cm))
p3_data = [
[Paragraph("<b>System</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Key Topics to Cover</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Suggested Timing</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold'))],
[Paragraph("GIT", small_style), Paragraph("Peptic ulcer (H. pylori, complications), Carcinoma stomach (signet ring cells), Carcinoma colon (Duke's staging, FAP, HNPCC)", small_style), Paragraph("July 10-14", small_style)],
[Paragraph("Endocrine", small_style), Paragraph("Thyroid - goiter types, thyroid carcinoma (papillary = ground-glass nuclei); Diabetes mellitus - type 1 vs 2, complications", small_style), Paragraph("July 15-18", small_style)],
[Paragraph("Female Genital Tract", small_style), Paragraph("Carcinoma cervix (HPV 16/18, CIN grading), Carcinoma breast (types, BRCA, hormone receptors, HER2), Endometrial carcinoma", small_style), Paragraph("July 19-23", small_style)],
[Paragraph("Lymphoma", small_style), Paragraph("Hodgkin (RS cells, types, EBV) vs Non-Hodgkin (B vs T cell, Burkitt - t(8;14), Follicular - t(14;18), Mantle cell)", small_style), Paragraph("July 24-27", small_style)],
[Paragraph("CNS", small_style), Paragraph("Glioma (glioblastoma multiforme, pseudopalisading), Meningioma (whorls, psammoma bodies), CNS infections (bacterial meningitis, viral encephalitis)", small_style), Paragraph("July 28 - Aug 2", small_style)],
[Paragraph("Bone & Soft Tissue", small_style), Paragraph("Osteosarcoma (Codman triangle, sunburst), Ewing's sarcoma (onion-skin periosteal reaction, t(11;22)), Giant cell tumor (soap-bubble appearance)", small_style), Paragraph("Aug 3-7", small_style)],
[Paragraph("Skin & Miscellaneous", small_style), Paragraph("Melanoma (ABCDE, Clark levels), Basal cell carcinoma (rodent ulcer), Squamous cell carcinoma; Amyloidosis types", small_style), Paragraph("Aug 8-12", small_style)],
[Paragraph("Revision Buffer", small_style), Paragraph("Catch-up on any missed topics; revise all written notes; begin MCQ bank practice", small_style), Paragraph("Aug 13-20", small_style)],
]
p3_table = Table(p3_data, colWidths=[3.5*cm, 10.5*cm, 3.4*cm])
p3_style = TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#4a148c')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
('BACKGROUND', (0,8), (-1,8), colors.HexColor('#f3e5f5')),
])
for i in range(1, 8):
bg = ALT_ROW if i % 2 == 0 else WHITE
p3_style.add('BACKGROUND', (0,i), (-1,i), bg)
p3_table.setStyle(p3_style)
story.append(p3_table)
story.append(Spacer(1, 0.4*cm))
# Phase 4
phase4_hdr = [[Paragraph("PHASE 4: FINAL DISTINCTION REVISION | August 21 – September (Finals)", phase_style)]]
ph4 = Table(phase4_hdr, colWidths=[17.4*cm])
ph4.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), PHASE4_COL),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
]))
story.append(ph4)
story.append(Spacer(1, 0.25*cm))
p4_data = [
[Paragraph("<b>Activity</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>Details</b>", ParagraphStyle('ch', parent=styles['Normal'], fontSize=8.5, textColor=WHITE, fontName='Helvetica-Bold'))],
[Paragraph("Full Syllabus 2nd Pass", small_style), Paragraph("Read all short notes (much faster now - 2nd reading). Focus on highlighted/starred topics.", small_style)],
[Paragraph("Past Papers - Last 5 Years KNRUHS", small_style), Paragraph("MANDATORY. Pattern repeats heavily in university exams. Solve every question.", small_style)],
[Paragraph("Write Model 10-Mark Answers", small_style), Paragraph("Practice writing structured answers with diagrams. Aim for: Definition, Types, Pathogenesis, Morphology (gross + micro), Clinical, Complications.", small_style)],
[Paragraph("Daily MCQ Practice", small_style), Paragraph("30 MCQs/day from Pathoma, Robbins review, or standard question banks.", small_style)],
[Paragraph("Buzzwords & Diagrams Revision", small_style), Paragraph("Flashcard revision: Councilman bodies, Aschoff bodies, RS cells, Auer rods, Virchow's triad, Codman triangle, etc.", small_style)],
[Paragraph("Pre-Exam Week", small_style), Paragraph("Light revision only. No new topics. Sleep 7-8 hrs. Review your own written notes only.", small_style)],
]
p4_table = Table(p4_data, colWidths=[5.0*cm, 12.4*cm])
p4_style = TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#b71c1c')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
('BACKGROUND', (0,6), (-1,6), colors.HexColor('#fce4ec')),
])
for i in range(1, 6):
bg = ALT_ROW if i % 2 == 0 else WHITE
p4_style.add('BACKGROUND', (0,i), (-1,i), bg)
p4_table.setStyle(p4_style)
story.append(p4_table)
story.append(Spacer(1, 0.5*cm))
# ── BOOKS & DISTINCTION TIPS ─────────────────────────────────────────────
books_data = [
[Paragraph("<b>RECOMMENDED BOOKS</b>", ParagraphStyle('bh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph("<b>DISTINCTION WRITING TIPS</b>", ParagraphStyle('bh', parent=styles['Normal'], fontSize=9, textColor=WHITE, fontName='Helvetica-Bold'))],
[
Paragraph(
"<b>1. Harsh Mohan</b> - Primary textbook (Indian exam-focused)<br/>"
"<b>2. Pathoma (Husain Sattar)</b> - Video + book for concepts<br/>"
"<b>3. Robbins Basic Pathology</b> - Reference for mechanisms<br/>"
"<b>4. KNRUHS Past Papers</b> - Last 5 years (MANDATORY)",
small_style
),
Paragraph(
"✓ Always start with a crisp definition<br/>"
"✓ Use classification/types early in the answer<br/>"
"✓ Draw labeled diagrams (gross + microscopic)<br/>"
"✓ Add comparison tables wherever applicable<br/>"
"✓ End with clinical significance/complications<br/>"
"✓ Use buzzwords examiners expect to see",
small_style
),
]
]
books_table = Table(books_data, colWidths=[8.7*cm, 8.7*cm])
books_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), colors.HexColor('#1565c0')),
('BACKGROUND', (1,0), (1,0), colors.HexColor('#2e7d32')),
('BACKGROUND', (0,1), (0,1), LIGHT_BLUE),
('BACKGROUND', (1,1), (1,1), colors.HexColor('#f1f8e9')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
]))
story.append(books_table)
story.append(Spacer(1, 0.4*cm))
# Footer
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90a4ae')))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(
"Prepared by Orris AI | NIMSRC, KNRUHS University - 2nd Year MBBS Pathology | Pre-Finals: July 2026 | Finals: September 2026",
footer_style
))
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/pathology-schedule && python generate_schedule.py
ls -lh /home/daytona/workspace/pathology-schedule/
Pathology Study Schedule MBBS
PDF Document · PDF
Start teaching me Cell Injury right now

| Cause | Example | Exam Buzzword |
|---|---|---|
| Hypoxia / Ischemia | Blocked artery, anemia, lung disease | Most common cause |
| Infectious agents | Bacteria, viruses, fungi, parasites | Toxins + immune responses |
| Toxins | Alcohol, CO, drugs, insecticides | Dose-dependent |
| Immunologic reactions | Autoimmune disease, allergies | Inflammation as the weapon |
| Genetic abnormalities | Sickle cell, Down syndrome, inborn errors | Mutations → misfolded proteins |
| Nutritional imbalances | Protein-calorie malnutrition, vitamin deficiency | Obesity also causes injury |
| Physical agents | Trauma, radiation, heat, cold, electric shock | Radiation → DNA damage |
Exam tip: "What are the causes of cell injury?" - List these 7 categories, give one example each. That's a full 5-mark answer structure.
Definition: A derangement of function and morphology that the cell can RECOVER from if the damaging stimulus is removed.

| Feature | Reversible Injury | Irreversible Injury |
|---|---|---|
| ATP | Decreased | Severely depleted |
| Cell swelling | Present | Present + worse |
| Mitochondria | Swollen, recoverable | Permanently damaged |
| Membranes | Intact | Ruptured (plasma + lysosomal) |
| Nuclear changes | Chromatin clumping | Pyknosis/karyolysis/karyorrhexis |
| Outcome | Recovery | Necrosis or Apoptosis |
| Protein synthesis | Decreased | Stopped |
| Buzzword | Meaning |
|---|---|
| Hydropic change | Cell swelling with clear vacuoles in cytoplasm |
| Steatosis | Fatty change (lipid accumulation, esp. liver) |
| Myelin figures | Phospholipid whorls from damaged membranes |
| MPTP | Mitochondrial permeability transition pore |
| ROS | Reactive oxygen species - free radicals |
| Point of no return | Stage when injury becomes irreversible |
| Ischemia-reperfusion injury | Restoration of blood flow WORSENS damage by releasing a burst of ROS |