I have 10 more days for my 1st year mbbs university exam. Ihave to srudy whole syllabus with in 10 days. I have attached the time table, so give me correct and effective time table to study whole syllabus
| Time | Activity |
|---|---|
| 5:30 AM | Wake up, freshen up |
| 6:00 - 9:00 AM | Study Block 1 (3 hrs - First subject) |
| 9:00 - 9:30 AM | Breakfast + short break |
| 9:30 AM - 12:30 PM | Study Block 2 (3 hrs - Continue/same subject) |
| 12:30 - 1:30 PM | Lunch + rest |
| 1:30 - 4:30 PM | Study Block 3 (3 hrs - Second subject) |
| 4:30 - 5:00 PM | Tea break + walk |
| 5:00 - 7:00 PM | Study Block 4 (2 hrs - Quick review/MCQs) |
| 7:00 - 8:00 PM | Dinner + break |
| 8:00 - 10:00 PM | Study Block 5 (2 hrs - Third subject/previous year Qs) |
| 10:00 PM | Sleep (mandatory - memory consolidation) |
| Day | Morning (6 hrs) | Evening (4 hrs) |
|---|---|---|
| Day 1 - Aug 11 | Upper Limb: Bones, joints, muscles, nerves (brachial plexus) | Upper Limb: Vessels + Previous year Qs |
| Day 2 - Aug 12 | Lower Limb: Bones, joints, muscles, nerves (lumbosacral plexus) | Lower Limb: Vessels + MCQ practice |
| Day 3 - Aug 13 | Thorax: Heart, lungs, mediastinum, pleura | Thorax: Great vessels + diagrams |
| Day 4 - Aug 14 | Abdomen: GI tract, liver, pancreas, kidneys, peritoneum | Abdomen: Posterior abdominal wall + PYQs |
| Day | Morning (6 hrs) | Evening (4 hrs) |
|---|---|---|
| Day 5 - Aug 15 | Head & Neck: Triangles, cranial nerves, orbit, ear | Head & Neck: Pharynx, larynx + PYQs |
| Day 6 - Aug 16 | Neuroanatomy: Brain, spinal cord, tracts | Neuroanatomy: Cranial nerve nuclei + MCQs |
| Day | Morning (6 hrs) | Evening (4 hrs) |
|---|---|---|
| Day 7 - Aug 17 | Physio Paper I: Blood, CVS (cardiac cycle, ECG, BP regulation), Respiratory | CVS numericals + PYQs |
| Day 8 - Aug 18 | Physio Paper II: Nerve-muscle, GIT, Renal, Endocrine, Reproductive | CNS + special senses + MCQs |
| Day | Morning (6 hrs) | Evening (4 hrs) |
|---|---|---|
| Day 9 - Aug 19 | Biochem Paper I: Carbohydrate metabolism, TCA cycle, Glycolysis, Gluconeogenesis, Proteins, Enzymes | Lipid metabolism + PYQs |
| Day 10 - Aug 20 | Biochem Paper II: Molecular biology, DNA replication, Vitamins, Minerals, Nutrition, Clinical biochemistry | Hormones + MCQs |
| Day | Focus |
|---|---|
| Aug 21 (Fri) | Anatomy Paper I - Full revision + diagrams |
| Aug 22 (Sat) | Anatomy Paper II - Full revision + neuroanatomy diagrams |
| Aug 23 (Sun) | Physiology - Both papers, focus on CVS + graphs |
| Aug 24 (Mon) | Biochemistry - Both papers + metabolic pathways |
| Subject | High Priority (must do) | Medium | Low (if time permits) |
|---|---|---|---|
| Anatomy I | Brachial plexus, Heart, Inguinal canal | Joints, Vessels | Detailed muscle origins |
| Anatomy II | Cranial nerves, Brain tracts | Embryology | Detailed histology |
| Physiology I | ECG, Cardiac cycle, Spirometry | Blood groups, Haemostasis | Detailed pharmacoreceptors |
| Physiology II | Renal clearance, GFR, Hormones | Nerve conduction | Detailed GIT |
| Biochem I | Glycolysis, TCA, HMP shunt | Protein structure | Detailed enzyme kinetics |
| Biochem II | DNA replication, Vitamins, PCR | Hormones | Trace elements |
I want daily 10 hours study and studying all 3 subjects daily and give it in pdf
mkdir -p /tmp/workspace/mbbs-timetable && ls /tmp/workspace/mbbs-timetable/
~/mbbs-timetable/generate_timetable.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import KeepTogether
OUTPUT = "/tmp/workspace/mbbs-timetable/MBBS_10Day_StudyTimetable.pdf"
# ββ Colors ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_BLUE = colors.HexColor("#0D3B66")
MED_BLUE = colors.HexColor("#1A6EB5")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
ANAT_CLR = colors.HexColor("#1565C0") # deep blue
ANAT_LIGHT = colors.HexColor("#DDEEFF")
PHYSIO_CLR = colors.HexColor("#2E7D32") # deep green
PHYSIO_LIGHT= colors.HexColor("#DDEFDD")
BIOCHEM_CLR = colors.HexColor("#6A1B9A") # deep purple
BIOCHEM_LIGHT=colors.HexColor("#EDE7F6")
BREAK_CLR = colors.HexColor("#F5F5F5")
HEADER_CLR = colors.HexColor("#E3F2FD")
REV_CLR = colors.HexColor("#FFF8E1")
REV_BORDER = colors.HexColor("#F9A825")
WHITE = colors.white
BLACK = colors.black
GOLD = colors.HexColor("#F9A825")
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
topMargin=1.5*cm, bottomMargin=1.5*cm,
leftMargin=1.5*cm, rightMargin=1.5*cm
)
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
title_style = S("Title2", fontName="Helvetica-Bold", fontSize=16,
textColor=WHITE, alignment=TA_CENTER, spaceAfter=4)
subtitle_style = S("Sub", fontName="Helvetica", fontSize=10,
textColor=WHITE, alignment=TA_CENTER, spaceAfter=2)
day_header = S("DayH", fontName="Helvetica-Bold", fontSize=13,
textColor=WHITE, alignment=TA_CENTER)
cell_bold = S("CB", fontName="Helvetica-Bold", fontSize=8.5,
textColor=BLACK, leading=11)
cell_norm = S("CN", fontName="Helvetica", fontSize=8,
textColor=BLACK, leading=11)
cell_small= S("CS", fontName="Helvetica-Oblique", fontSize=7.5,
textColor=colors.HexColor("#444444"), leading=10)
tip_style = S("Tip", fontName="Helvetica", fontSize=8.5,
textColor=BLACK, leading=12)
tip_bold = S("TipB", fontName="Helvetica-Bold", fontSize=9,
textColor=DARK_BLUE, leading=13)
section_hdr=S("SecH", fontName="Helvetica-Bold", fontSize=11,
textColor=WHITE, alignment=TA_CENTER)
story = []
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# COVER / HEADER BANNER
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
banner_data = [[
Paragraph("π MBBS Phase I β 10-Day Intensive Study Timetable", title_style),
],[
Paragraph("RGUHS Β· August 2026 Examination | 10 Hours/Day Β· All 3 Subjects Daily", subtitle_style),
],[
Paragraph("Anatomy β’ Physiology β’ Biochemistry", subtitle_style),
]]
banner = Table(banner_data, colWidths=[18*cm])
banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("ROUNDEDCORNERS", [8,8,8,8]),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
story.append(banner)
story.append(Spacer(1, 0.35*cm))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# EXAM SCHEDULE BOX
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
exam_hdr = [[ Paragraph("π EXAM SCHEDULE", section_hdr) ]]
exam_hdr_tbl = Table(exam_hdr, colWidths=[18*cm])
exam_hdr_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MED_BLUE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
]))
story.append(exam_hdr_tbl)
exam_rows = [
["Date", "Day", "Subject", "QP Code"],
["25 Aug 2026","Tuesday","Anatomy Paper β I","1020 / 5501"],
["27 Aug 2026","Thursday","Anatomy Paper β II","1021 / 5502"],
["29 Aug 2026","Saturday","Physiology Paper β I","1022 / 5503"],
["31 Aug 2026","Monday","Physiology Paper β II","1023 / 5504"],
["02 Sep 2026","Wednesday","Biochemistry Paper β I","1024 / 5505"],
["04 Sep 2026","Friday","Biochemistry Paper β II","1025 / 5506"],
["09 Sep 2026 onwards","β","Practical Examinations","β"],
]
exam_table = Table(
[[Paragraph(c, S("ec", fontName="Helvetica-Bold" if i==0 else "Helvetica",
fontSize=8.5, leading=11,
textColor=WHITE if i==0 else BLACK))
for c in row]
for i, row in enumerate(exam_rows)],
colWidths=[4.2*cm, 3*cm, 7*cm, 3.8*cm]
)
exam_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("BACKGROUND", (0,1), (-1,1), ANAT_LIGHT),
("BACKGROUND", (0,2), (-1,2), ANAT_LIGHT),
("BACKGROUND", (0,3), (-1,3), PHYSIO_LIGHT),
("BACKGROUND", (0,4), (-1,4), PHYSIO_LIGHT),
("BACKGROUND", (0,5), (-1,5), BIOCHEM_LIGHT),
("BACKGROUND", (0,6), (-1,6), BIOCHEM_LIGHT),
("BACKGROUND", (0,7), (-1,7), REV_CLR),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(exam_table)
story.append(Spacer(1, 0.4*cm))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# DAILY SCHEDULE TEMPLATE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
daily_hdr = [[ Paragraph("β° DAILY SCHEDULE TEMPLATE (10 Hours Study / Day)", section_hdr) ]]
daily_hdr_tbl = Table(daily_hdr, colWidths=[18*cm])
daily_hdr_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
]))
story.append(daily_hdr_tbl)
daily_rows = [
["Time Slot", "Duration", "Activity", "Subject"],
["5:30 β 6:00 AM", "30 min", "Wake up, freshen up, light warm-up", "β"],
["6:00 β 8:30 AM", "2.5 hrs", "π Study Block 1", "ANATOMY"],
["8:30 β 9:00 AM", "30 min", "Breakfast + short break", "β"],
["9:00 β 11:30 AM", "2.5 hrs", "π Study Block 2", "PHYSIOLOGY"],
["11:30 β 11:45 AM","15 min", "Quick break / walk", "β"],
["11:45 AM β 2:00 PM","2.15 hrs","π Study Block 3", "BIOCHEMISTRY"],
["2:00 β 2:45 PM", "45 min", "Lunch + rest", "β"],
["2:45 β 4:30 PM", "1.45 hrs","π Study Block 4 β PYQ + MCQ Practice", "ALL 3 SUBJECTS"],
["4:30 β 5:00 PM", "30 min", "Tea break + walk", "β"],
["5:00 β 6:30 PM", "1.5 hrs", "π Study Block 5 β Revision of Day's Topics","ALL 3 SUBJECTS"],
["6:30 β 7:30 PM", "1 hr", "Dinner + relax", "β"],
["7:30 β 8:00 PM", "30 min", "Write short notes / diagrams from memory", "Rotate daily"],
["8:00 β 9:00 PM", "1 hr", "Optional: Weak topic / extra revision", "As needed"],
["9:00 β 9:30 PM", "30 min", "Wind down, review tomorrow's plan", "β"],
["9:30 PM", "β", "SLEEP (Non-negotiable β memory consolidation!)", "β"],
["TOTAL STUDY", "~10 hrs", "Blocks 1+2+3+4+5 = core 10 hrs", "β
"],
]
def daily_row_style(i, row):
is_study = "Block" in row[2] or "PYQ" in row[2] or "Revision" in row[2] or "notes" in row[2]
is_break = "break" in row[2].lower() or "Lunch" in row[2] or "Dinner" in row[2] or "Wake" in row[2] or "Wind" in row[2] or "Sleep" in row[0] or "SLEEP" in row[2]
is_total = "TOTAL" in row[0]
is_hdr = i == 0
if is_hdr:
return colors.HexColor("#1A6EB5"), WHITE
if is_total:
return colors.HexColor("#1B5E20"), WHITE
if "Block 1" in row[2]:
return ANAT_LIGHT, BLACK
if "Block 2" in row[2]:
return PHYSIO_LIGHT, BLACK
if "Block 3" in row[2]:
return BIOCHEM_LIGHT, BLACK
if "Block 4" in row[2] or "Block 5" in row[2]:
return colors.HexColor("#FFF9C4"), BLACK
if "notes" in row[2] or "Optional" in row[2]:
return colors.HexColor("#F3E5F5"), BLACK
return BREAK_CLR, colors.HexColor("#555555")
daily_table_data = []
for i, row in enumerate(daily_rows):
bg, fg = daily_row_style(i, row)
fn = "Helvetica-Bold" if i == 0 or "TOTAL" in row[0] else "Helvetica"
daily_table_data.append([
Paragraph(c, S(f"dr{i}{j}", fontName=fn, fontSize=8.5, leading=11, textColor=fg))
for j, c in enumerate(row)
])
daily_table = Table(daily_table_data, colWidths=[3.8*cm, 2.2*cm, 7.8*cm, 4.2*cm])
ts_commands = [
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]
for i, row in enumerate(daily_rows):
bg, _ = daily_row_style(i, row)
ts_commands.append(("BACKGROUND", (0,i), (-1,i), bg))
daily_table.setStyle(TableStyle(ts_commands))
story.append(daily_table)
story.append(Spacer(1, 0.5*cm))
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# 10-DAY PLAN β one section per day
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Subject topic data
# Anatomy topics split into Paper I and Paper II
# Physiology: Paper I and Paper II
# Biochemistry: Paper I and Paper II
days = [
{
"num": 1, "date": "Mon, 11 Aug", "label": "Day 1 of 10",
"focus": "Anatomy (Foundation) Β· Physiology (Blood) Β· Biochem (Carbohydrates)",
"anatomy": ("Upper Limb β Bones, Joints, Muscles (Day's focus: Shoulder & Arm)",
"Brachial plexus overview; rotator cuff muscles; axillary & brachial artery"),
"physiology":("Blood β Composition, Plasma proteins, Blood groups (ABO, Rh)",
"Blood coagulation cascade; bleeding time vs clotting time"),
"biochem": ("Carbohydrate Chemistry & Glycolysis (Embden-Meyerhof pathway)",
"Key enzymes: hexokinase, PFK-1, pyruvate kinase; regulation points"),
"pyq": "Draw brachial plexus; write short note on ABO blood grouping; glycolysis enzyme deficiencies",
"revision": "Re-read brachial plexus + coagulation factors + glycolysis steps",
"tip": "Use colour coding: Blue=Anatomy, Green=Physiology, Purple=Biochemistry in your notes.",
},
{
"num": 2, "date": "Tue, 12 Aug", "label": "Day 2 of 10",
"focus": "Anatomy (Forearm/Hand) Β· Physiology (CVS-1) Β· Biochem (TCA Cycle)",
"anatomy": ("Upper Limb β Forearm, Hand: muscles, nerves (median, ulnar, radial)",
"Carpal tunnel, anatomical snuff box, nerve injury signs (wrist drop, ape hand, claw hand)"),
"physiology":("CVS β Cardiac cycle, Heart sounds, JVP, Frank-Starling law",
"Systole/diastole timings; Wiggers diagram; pressure-volume loops"),
"biochem": ("TCA Cycle (Krebs Cycle) β all 8 reactions, enzymes, energy yield",
"Regulation: isocitrate dehydrogenase, Ξ±-ketoglutarate DH; anaplerosis"),
"pyq": "Nerve injury at different levels (median/ulnar/radial); draw Wiggers diagram; TCA energy count",
"revision": "Upper limb nerve injuries + cardiac cycle diagram + TCA cycle",
"tip": "Nerve injury signs are HIGH YIELD in Anatomy Paper I β memorise all 3 (median, ulnar, radial).",
},
{
"num": 3, "date": "Wed, 13 Aug", "label": "Day 3 of 10",
"focus": "Anatomy (Lower Limb) Β· Physiology (CVS-2 ECG) Β· Biochem (Gluconeogenesis/HMP)",
"anatomy": ("Lower Limb β Hip joint, thigh muscles (quadriceps, hamstrings), femoral triangle",
"Femoral nerve, obturator nerve, sciatic nerve; hip joint stability & dislocation"),
"physiology":("CVS β ECG (normal intervals, axis, lead system), cardiac arrhythmias",
"Normal ECG waveforms; rate calculation; Q waves; BBB patterns"),
"biochem": ("Gluconeogenesis (key steps & bypass enzymes) + HMP Shunt (Pentose Phosphate Pathway)",
"G6PD deficiency; NADPH role; regulation of gluconeogenesis vs glycolysis"),
"pyq": "Femoral triangle boundaries & contents; draw normal ECG; G6PD deficiency short note",
"revision": "Lower limb nerves + ECG interpretation + gluconeogenesis bypass reactions",
"tip": "For ECG: practice drawing it from memory. Examiners love asking to label all waves.",
},
{
"num": 4, "date": "Thu, 14 Aug", "label": "Day 4 of 10",
"focus": "Anatomy (Thorax) Β· Physiology (Respiration) Β· Biochem (Lipid Metabolism)",
"anatomy": ("Thorax β Heart (chambers, valves, blood supply, conducting system), Lungs & pleura",
"Coronary arteries; sinuatrial node; bronchopulmonary segments; pleural recesses"),
"physiology":("Respiratory β Lung volumes/capacities, spirometry, V/Q ratio, gas exchange",
"FEV1/FVC ratio; restrictive vs obstructive pattern; hypoxia types; O2 dissociation curve"),
"biochem": ("Lipid Metabolism β Ξ²-oxidation of fatty acids, ketone body synthesis",
"Odd-chain FA; carnitine shuttle; DKA; lipoprotein structure (LDL/HDL/VLDL)"),
"pyq": "Draw conducting system of heart; spirometry graph; Ξ²-oxidation of palmitic acid energy",
"revision": "Coronary arteries + lung volumes + fatty acid oxidation steps",
"tip": "Spirometry graphs and lung volumes table are very frequently asked in Physiology Paper I.",
},
{
"num": 5, "date": "Fri, 15 Aug", "label": "Day 5 of 10",
"focus": "Anatomy (Abdomen) Β· Physiology (Renal) Β· Biochem (Proteins & Enzymes)",
"anatomy": ("Abdomen β Peritoneum, GIT (stomach, small & large intestine), liver, bile ducts",
"Portal circulation; inguinal canal; portosystemic anastomoses; McBurney's point"),
"physiology":("Renal β GFR, tubular reabsorption/secretion, clearance tests, concentration of urine",
"Juxtaglomerular apparatus; RAAS; ADH; autoregulation; renal clearance formula"),
"biochem": ("Proteins β structure (1Β°-4Β°), denaturation; Enzyme kinetics (Michaelis-Menten, Km, Vmax)",
"Enzyme inhibition (competitive vs non-competitive); isoenzymes; clinical enzymes (AST/ALT/LDH)"),
"pyq": "Inguinal canal β boundaries & contents; draw GFR autoregulation; Michaelis-Menten graph",
"revision": "Portal circulation + renal clearance formula + enzyme inhibition types",
"tip": "Inguinal canal is extremely HIGH YIELD. Know it inside out β deep ring, superficial ring, contents.",
},
{
"num": 6, "date": "Sat, 16 Aug", "label": "Day 6 of 10",
"focus": "Anatomy (Head & Neck) Β· Physiology (GIT & Endocrine) Β· Biochem (Amino Acid Metabolism)",
"anatomy": ("Head & Neck β Triangles of neck, thyroid gland, carotid arteries, cranial nerves VII-XII",
"Parotid gland; facial nerve branches; submandibular triangle; ansa cervicalis"),
"physiology":("GIT β Secretions (gastric, pancreatic, bile), motility, absorption",
"Endocrine β Anterior/posterior pituitary hormones; thyroid function; insulin/glucagon"),
"biochem": ("Amino Acid Metabolism β transamination, deamination, urea cycle",
"Essential amino acids; one-carbon metabolism; PKU; maple syrup urine disease"),
"pyq": "Facial nerve course and branches; bile composition & functions; urea cycle enzymes",
"revision": "Cranial nerves + GIT secretions + urea cycle",
"tip": "Urea cycle enzyme deficiency diseases are very common in Biochemistry Paper I MCQs.",
},
{
"num": 7, "date": "Sun, 17 Aug", "label": "Day 7 of 10",
"focus": "Anatomy (Neuroanatomy) Β· Physiology (Nerve-Muscle) Β· Biochem (Nucleotides & Molecular Bio)",
"anatomy": ("Neuroanatomy β Spinal cord (tracts, lesions), brainstem, cerebellum, cerebral cortex",
"Blood-brain barrier; meninges; CSF; UMN vs LMN lesions; Brown-SΓ©quard syndrome"),
"physiology":("Nerve & Muscle β Resting membrane potential, action potential, NMJ, muscle contraction",
"Excitation-contraction coupling; end-plate potential; types of muscle fibers"),
"biochem": ("Nucleotide metabolism β purine/pyrimidine synthesis & degradation; DNA replication",
"Gout (xanthine oxidase); Lesch-Nyhan syndrome; HGPRT; semi-conservative replication"),
"pyq": "Draw spinal cord tracts; action potential graph with phases; purine salvage pathway",
"revision": "UMN/LMN + NMJ + purine/pyrimidine differences",
"tip": "Brown-SΓ©quard & spinal cord syndromes are guaranteed long question in Anatomy Paper II.",
},
{
"num": 8, "date": "Mon, 18 Aug", "label": "Day 8 of 10",
"focus": "Anatomy (Embryology & Histology) Β· Physiology (Special Senses & Repro) Β· Biochem (Vitamins)",
"anatomy": ("Embryology β 1st-8th week, germ layers, neural tube, CVS development, congenital defects",
"Histology β Epithelium types, connective tissue, cartilage, bone, muscle, nerve histology"),
"physiology":("Special Senses β Vision (visual pathway, dark adaptation), Hearing (cochlea, audiogram)",
"Reproductive β Spermatogenesis, oogenesis, menstrual cycle, hormonal changes"),
"biochem": ("Vitamins β Fat-soluble (A, D, E, K) and Water-soluble (B complex, C) β deficiencies & functions",
"Minerals β Iron metabolism, ferritin, transferrin, haemoglobin synthesis"),
"pyq": "Neural tube defects; visual pathway lesion effects; vitamin D metabolism & deficiency",
"revision": "Embryological derivatives + menstrual cycle graph + vitamin deficiency diseases",
"tip": "Vitamin deficiency table: make a 1-page cheat sheet with Vitamin β Deficiency β Clinical feature.",
},
{
"num": 9, "date": "Tue, 19 Aug", "label": "Day 9 of 10 β FULL REVISION DAY 1",
"focus": "Revision: Anatomy Papers I & II Β· Physiology Papers I & II Β· Biochem Papers I & II",
"anatomy": ("REVISION β Upper limb, Lower limb, Thorax, Abdomen, Head & Neck, Neuro, Embryo, Histo",
"Focus: Previous year long questions + diagram practice (brachial plexus, heart, spinal cord)"),
"physiology":("REVISION β Blood, CVS (ECG, cardiac cycle), Respiration, Renal, GIT, Neuro, Endocrine, Repro",
"Focus: Graphs & diagrams (ECG, spirometry, O2 dissociation, GFR, renal clearance)"),
"biochem": ("REVISION β Glycolysis, TCA, HMP, Gluconeogenesis, Ξ²-oxidation, Urea cycle, DNA, Vitamins",
"Focus: Metabolic pathway flowcharts + enzyme deficiency diseases + clinical correlations"),
"pyq": "Solve 2 full sets of RGUHS PYQs (one Anatomy, one Physiology or Biochem) under timed conditions",
"revision": "Weak topics only β do not re-read strong topics, use flashcards/short notes instead",
"tip": "Today: NO new topics. Only revision & PYQs. Eat well, hydrate, sleep by 9:30 PM.",
},
{
"num": 10, "date": "Wed, 20 Aug", "label": "Day 10 of 10 β FULL REVISION DAY 2",
"focus": "Final Revision + Mock Answers + Diagrams + PYQ Marathon",
"anatomy": ("FINAL REVISION β Clinical anatomy (nerve injuries, hernias, joints), Cranial nerves, Tracts",
"Write 5-mark answers from memory for: brachial plexus, inguinal canal, spinal cord tracts"),
"physiology":("FINAL REVISION β Write answers for: cardiac cycle, ECG interpretation, renal clearance",
"Practise drawing Wiggers diagram, spirometry graph, oxygen dissociation curve from memory"),
"biochem": ("FINAL REVISION β Draw all major metabolic pathways from memory (glycolysisβTCAβETC)",
"Short notes: G6PD deficiency, DKA, Gout, PKU, Vitamin deficiencies β 5 marks each"),
"pyq": "FULL MOCK: Attempt 10 long questions (mix of all subjects) in 3 hrs β simulate exam conditions",
"revision": "Review mock answers β identify gaps β quick read of missed topics only",
"tip": "Sleep by 9 PM tonight. Exam is in 5 days. Your brain needs rest more than cramming.",
},
]
# Helper to make subject block row
def make_subject_row(subject, color, topic_main, topic_detail, pstyle_bold, pstyle_norm):
return [
Paragraph(subject, S("sh", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE)),
Paragraph(topic_main, pstyle_bold),
Paragraph(topic_detail, pstyle_norm),
]
for i, day in enumerate(days):
# Day header
is_revision = day["num"] >= 9
hdr_bg = REV_BORDER if is_revision else DARK_BLUE
day_hdr_data = [[
Paragraph(f"DAY {day['num']} β {day['date']}", day_header),
Paragraph(day["label"], S("dl", fontName="Helvetica", fontSize=10, textColor=colors.HexColor("#CCDDFF"), alignment=TA_RIGHT)),
]]
day_hdr_tbl = Table(day_hdr_data, colWidths=[12*cm, 6*cm])
day_hdr_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), hdr_bg),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 10),
("RIGHTPADDING",(0,0),(-1,-1), 10),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
# Focus line
focus_data = [[ Paragraph(f"π― Focus: {day['focus']}", S("fc", fontName="Helvetica-Oblique", fontSize=8.5, textColor=DARK_BLUE)) ]]
focus_tbl = Table(focus_data, colWidths=[18*cm])
focus_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), HEADER_CLR),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING", (0,0),(-1,-1), 4),
("LEFTPADDING", (0,0),(-1,-1), 8),
("GRID", (0,0),(-1,-1), 0.3, colors.HexColor("#BBBBBB")),
]))
# Subject grid
subj_hdr = [
Paragraph("Subject", S("sh2", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE)),
Paragraph("Main Topics", S("sh2", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE)),
Paragraph("Key Focus / High-Yield Points", S("sh2", fontName="Helvetica-Bold", fontSize=8.5, textColor=WHITE)),
]
anat_row = [
Paragraph("π ANATOMY", S("as", fontName="Helvetica-Bold", fontSize=8.5, textColor=ANAT_CLR)),
Paragraph(day["anatomy"][0], S("at", fontName="Helvetica-Bold", fontSize=8.5, textColor=BLACK, leading=11)),
Paragraph(day["anatomy"][1], S("ad", fontName="Helvetica", fontSize=8, textColor=BLACK, leading=10)),
]
physio_row = [
Paragraph("π PHYSIOLOGY", S("ps", fontName="Helvetica-Bold", fontSize=8.5, textColor=PHYSIO_CLR)),
Paragraph(day["physiology"][0], S("pt", fontName="Helvetica-Bold", fontSize=8.5, textColor=BLACK, leading=11)),
Paragraph(day["physiology"][1], S("pd", fontName="Helvetica", fontSize=8, textColor=BLACK, leading=10)),
]
biochem_row = [
Paragraph("π BIOCHEMISTRY", S("bs", fontName="Helvetica-Bold", fontSize=8.5, textColor=BIOCHEM_CLR)),
Paragraph(day["biochem"][0], S("bt", fontName="Helvetica-Bold", fontSize=8.5, textColor=BLACK, leading=11)),
Paragraph(day["biochem"][1], S("bd", fontName="Helvetica", fontSize=8, textColor=BLACK, leading=10)),
]
subj_table = Table([subj_hdr, anat_row, physio_row, biochem_row],
colWidths=[2.8*cm, 7.2*cm, 8*cm])
subj_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("BACKGROUND", (0,1), (-1,1), ANAT_LIGHT),
("BACKGROUND", (0,2), (-1,2), PHYSIO_LIGHT),
("BACKGROUND", (0,3), (-1,3), BIOCHEM_LIGHT),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
]))
# PYQ + revision + tip row
bottom_data = [[
Paragraph(f"π PYQ Practice:\n{day['pyq']}",
S("pyq", fontName="Helvetica", fontSize=8, textColor=BLACK, leading=10)),
Paragraph(f"π Evening Revision:\n{day['revision']}",
S("rev", fontName="Helvetica", fontSize=8, textColor=BLACK, leading=10)),
Paragraph(f"π‘ Tip: {day['tip']}",
S("tip2", fontName="Helvetica-Oblique", fontSize=8, textColor=colors.HexColor("#4A148C"), leading=10)),
]]
bottom_table = Table(bottom_data, colWidths=[6*cm, 6*cm, 6*cm])
bottom_table.setStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), colors.HexColor("#FFF9C4")),
("BACKGROUND", (1,0),(1,0), colors.HexColor("#E8F5E9")),
("BACKGROUND", (2,0),(2,0), colors.HexColor("#F3E5F5")),
("GRID", (0,0),(-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 6),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
block = KeepTogether([
day_hdr_tbl,
focus_tbl,
subj_table,
bottom_table,
Spacer(1, 0.45*cm),
])
story.append(block)
# Page break after day 5 to keep layout clean
if day["num"] == 5:
story.append(PageBreak())
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# PRIORITY & TIPS PAGE
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
tips_hdr = [[ Paragraph("β
HIGH-YIELD PRIORITY MATRIX & SMART STUDY TIPS", section_hdr) ]]
tips_hdr_tbl = Table(tips_hdr, colWidths=[18*cm])
tips_hdr_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1), 6),
]))
story.append(tips_hdr_tbl)
story.append(Spacer(1, 0.2*cm))
priority_data = [
["Subject", "HIGH PRIORITY (do first)", "MEDIUM", "LOW (if time permits)"],
["Anatomy I", "Brachial plexus, Inguinal canal, Heart & coronary arteries", "All joints, Abdominal viscera", "Detailed muscle origins/insertions"],
["Anatomy II", "Cranial nerves, Spinal cord tracts, Brown-SΓ©quard", "Embryology, Head & Neck triangles", "Detailed histology slides"],
["Physio I", "ECG, Cardiac cycle (Wiggers), Spirometry, O2 dissociation curve", "Blood groups, Haemostasis", "Pharmacoreceptors, Autonomic"],
["Physio II", "Renal clearance, GFR, Hormone axes (pituitary-target)", "Menstrual cycle, Spermatogenesis", "Detailed GIT motility physiology"],
["Biochem I", "Glycolysis, TCA cycle, HMP shunt, Ξ²-oxidation, Urea cycle", "Gluconeogenesis, Enzyme kinetics", "Detailed protein folding"],
["Biochem II", "DNA replication/transcription, Vitamins (deficiencies), PCR", "Hormone mechanism of action", "Trace element metabolism"],
]
priority_table = Table(
[[Paragraph(c, S(f"pm{i}{j}",
fontName="Helvetica-Bold" if i==0 or j==0 else "Helvetica",
fontSize=8, leading=10,
textColor=WHITE if i==0 else BLACK))
for j, c in enumerate(row)]
for i, row in enumerate(priority_data)],
colWidths=[2.8*cm, 6.2*cm, 5*cm, 4*cm]
)
priority_commands = [
("BACKGROUND", (0,0), (-1,0), MED_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("BACKGROUND", (0,0), (0,-1), colors.HexColor("#E8EAF6")),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
]
for r in [1,2]:
priority_commands.append(("BACKGROUND", (1,r),(3,r), ANAT_LIGHT))
for r in [3,4]:
priority_commands.append(("BACKGROUND", (1,r),(3,r), PHYSIO_LIGHT))
for r in [5,6]:
priority_commands.append(("BACKGROUND", (1,r),(3,r), BIOCHEM_LIGHT))
priority_table.setStyle(TableStyle(priority_commands))
story.append(priority_table)
story.append(Spacer(1, 0.4*cm))
# SMART TIPS
tips_list = [
("π Anatomy", "Draw diagrams DAILY. Brachial plexus, conducting system of heart, Circle of Willis, spinal cord cross-section. Diagrams = guaranteed marks. Use BD Chaurasia Vol 1-3 + Snell's for clinical anatomy."),
("π Physiology", "Every graph must be drawn from memory: ECG, Wiggers diagram, spirometry, O2 dissociation curve, renal clearance. Use AK Jain or Sembulingam. Numerical problems in renal clearance β practice the formula."),
("π Biochemistry", "Draw all metabolic pathways as flowcharts (1 pathway = 1 page). Enzyme deficiency table is a MUST. Use Vasudevan or Lippincott. Vitamins: one cheat sheet covers 10-15 marks."),
("π PYQ Strategy", "RGUHS repeats questions heavily. Solve last 5 years PYQs for ALL subjects. Pattern: 2 long questions (10 marks each) + short notes (5 marks each). Identify the top 20 repeated topics per subject."),
("π§ Memory Tricks", "Use mnemonics: Cranial nerves = 'On Old Olympus Towering Top A Finn And German Viewed A Hop'; Rotator cuff = SITS; Essential amino acids = PVT TIM HALL; Fat-soluble vitamins = ADEK."),
("π΄ Sleep & Health", "7-8 hrs sleep is non-negotiable. Sleep consolidates memory β you WILL retain more. Drink 2-3 L water/day. Light exercise for 20 min/day improves focus. Avoid energy drinks after 4 PM."),
("β±οΈ Exam Strategy", "3-hour paper: Spend 10 min reading, 2.5 hrs writing, 20 min review. Start with your STRONGEST topic. Write points clearly, draw neat diagrams, underline keywords. Examiners reward clarity."),
]
for subj, tip_text in tips_list:
tip_row = [[
Paragraph(subj, S("ts", fontName="Helvetica-Bold", fontSize=9, textColor=DARK_BLUE)),
Paragraph(tip_text, S("tt", fontName="Helvetica", fontSize=8.5, leading=11, textColor=BLACK)),
]]
tip_tbl = Table(tip_row, colWidths=[3*cm, 15*cm])
tip_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), LIGHT_BLUE),
("BACKGROUND", (1,0),(1,0), WHITE),
("GRID", (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 6),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
story.append(tip_tbl)
story.append(Spacer(1, 0.5*cm))
# FINAL COUNTDOWN BOX
countdown_data = [[
Paragraph("π
EXAM COUNTDOWN", S("cd", fontName="Helvetica-Bold", fontSize=10, textColor=WHITE, alignment=TA_CENTER)),
]]
countdown_hdr = Table(countdown_data, colWidths=[18*cm])
countdown_hdr.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), DARK_BLUE),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
]))
story.append(countdown_hdr)
countdown_rows = [
["Aug 11-20","Days 1-10","Intensive Study (10 hrs/day, all 3 subjects)"],
["Aug 21-22","Days 11-12","Anatomy Revision (Paper I & II deep revision + diagrams)"],
["Aug 23-24","Days 13-14","Physiology & Biochem Final Revision + PYQ Marathon"],
["Aug 25","EXAM DAY 1","π― Anatomy Paper I β Be at centre by 8:30 AM"],
["Aug 26","Rest","Light review of Anatomy Paper II topics only"],
["Aug 27","EXAM DAY 2","π― Anatomy Paper II"],
["Aug 28","Rest","Physiology revision"],
["Aug 29","EXAM DAY 3","π― Physiology Paper I"],
["Aug 30","Rest","Physiology Paper II + Biochem Paper I revision"],
["Aug 31","EXAM DAY 4","π― Physiology Paper II"],
["Sep 1","Rest","Biochem Paper II topics"],
["Sep 2","EXAM DAY 5","π― Biochemistry Paper I"],
["Sep 3","Rest","Final Biochem revision"],
["Sep 4","EXAM DAY 6","π― Biochemistry Paper II"],
["Sep 9+","PRACTICALS","Practical Examinations begin"],
]
countdown_table = Table(
[[Paragraph(c, S(f"cr{i}{j}",
fontName="Helvetica-Bold" if "EXAM DAY" in row[1] else "Helvetica",
fontSize=8.5, leading=11,
textColor=WHITE if "EXAM DAY" in row[1] else BLACK))
for j, c in enumerate(row)]
for i, row in enumerate(countdown_rows)],
colWidths=[3.5*cm, 3.5*cm, 11*cm]
)
cd_commands = [
("GRID", (0,0),(-1,-1), 0.4, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("LEFTPADDING", (0,0),(-1,-1), 6),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]
for i, row in enumerate(countdown_rows):
if "EXAM DAY" in row[1]:
cd_commands.append(("BACKGROUND", (0,i),(-1,i), colors.HexColor("#B71C1C")))
elif row[1] in ["Days 1-10"]:
cd_commands.append(("BACKGROUND", (0,i),(-1,i), colors.HexColor("#1565C0")))
cd_commands.append(("TEXTCOLOR", (0,i),(-1,i), WHITE))
elif row[1] in ["Days 11-12", "Days 13-14"]:
cd_commands.append(("BACKGROUND", (0,i),(-1,i), colors.HexColor("#0D47A1")))
cd_commands.append(("TEXTCOLOR", (0,i),(-1,i), WHITE))
elif row[1] == "PRACTICALS":
cd_commands.append(("BACKGROUND", (0,i),(-1,i), colors.HexColor("#4A148C")))
cd_commands.append(("TEXTCOLOR", (0,i),(-1,i), WHITE))
elif row[1] == "Rest":
cd_commands.append(("BACKGROUND", (0,i),(-1,i), colors.HexColor("#E8F5E9")))
countdown_table.setStyle(TableStyle(cd_commands))
story.append(countdown_table)
story.append(Spacer(1, 0.5*cm))
# Footer message
footer_data = [[
Paragraph(
"You have everything it takes. Stay consistent, trust the process, and give your best. All the best for your RGUHS MBBS Phase I Examinations! π",
S("ft", fontName="Helvetica-Bold", fontSize=10, textColor=WHITE, alignment=TA_CENTER)
)
]]
footer_tbl = Table(footer_data, colWidths=[18*cm])
footer_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), DARK_BLUE),
("TOPPADDING", (0,0),(-1,-1), 10),
("BOTTOMPADDING",(0,0),(-1,-1), 10),
("LEFTPADDING",(0,0),(-1,-1), 10),
("RIGHTPADDING",(0,0),(-1,-1), 10),
]))
story.append(footer_tbl)
# ββ Build ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/mbbs-timetable && python generate_timetable.py 2>&1
ls -lh /tmp/workspace/mbbs-timetable/MBBS_10Day_StudyTimetable.pdf
MBBS 10Day StudyTimetable
PDF Document Β· PDF
| Block | Time | Subject |
|---|---|---|
| Block 1 | 6:00-8:30 AM | Anatomy (2.5 hrs) |
| Block 2 | 9:00-11:30 AM | Physiology (2.5 hrs) |
| Block 3 | 11:45 AM-2:00 PM | Biochemistry (2.15 hrs) |
| Block 4 | 2:45-4:30 PM | PYQ + MCQ all subjects (1.75 hrs) |
| Block 5 | 5:00-6:30 PM | Revision all subjects (1.5 hrs) |