hi

Hey! How can I help you today?

which subject do i have to study in firsy year mbbs in india nad which books should i study

Searching the Web

first year MBBS subjects books India NMC curriculum 2024

Here's the complete guide for First Year MBBS in India as per the latest NMC CBME 2024 curriculum:

πŸ“š First Year MBBS Subjects (Phase I)

The first year (Phase I) lasts 12 months and covers 3 core subjects plus additional modules:
SubjectTeaching Hours
Anatomy~620 hrs
Physiology~445 hrs
Biochemistry~232 hrs
Community Medicine (intro)~40 hrs
AETCOM (Ethics & Communication)Longitudinal
Early Clinical Exposure (ECE)Included
Foundation Course (2 weeks)~80 hrs

πŸ“– Recommended Books

🦴 Anatomy

BookAuthorNotes
Gray's Anatomy for StudentsDrake, Vogl, MitchellInternational standard
BD Chaurasia's Human Anatomy (3 volumes)B.D. ChaurasiaMost popular in India, exam-focused
Inderbir Singh's Textbook of Human AnatomyInderbir SinghGreat for Indian exams
Snell's Clinical AnatomyRichard SnellGood for clinical correlation
Vishram Singh AnatomyVishram SinghVery concise, popular for exams

πŸ«€ Physiology

BookAuthorNotes
Guyton & Hall Textbook of Medical PhysiologyGuyton & HallGold standard, NMC recommended
AK Jain's Textbook of PhysiologyAK JainMost popular in India
Ganong's Review of Medical PhysiologyBarrett et al.Excellent for concepts
Sembulingam PhysiologyK. SembulingamSimple language, good for beginners

πŸ§ͺ Biochemistry

BookAuthorNotes
Harper's Illustrated BiochemistryMurray et al.International standard
Lippincott's Illustrated Reviews: BiochemistryLieberman & MarksVery visual, concept-based
DM Vasudevan's Textbook of BiochemistryDM VasudevanMost popular in India
U Satyanarayan's BiochemistryU SatyanarayanaSimple, widely used in India

🧠 Additional Modules (First Year)

  • AETCOM - Attitude, Ethics and Communication module (runs throughout the year)
  • Early Clinical Exposure (ECE) - You'll visit hospitals/clinics from the first year itself
  • Foundation Course - 2-week orientation at the very start
  • Community Medicine intro - Basic public health concepts
  • Family Adoption Programme (FAP) - Village/community outreach

πŸ’‘ Tips for First Year MBBS

  1. Anatomy is the most time-consuming - start early, use atlas books like Netter's Atlas alongside your main text
  2. For Physiology, AK Jain is great for quick reading; use Guyton for deeper understanding
  3. For Biochemistry, U Satyanarayana or Vasudevan is enough for exams; Harper's for conceptual clarity
  4. The NExT exam (National Exit Test) is now the licensing exam - focus on competency-based learning, not just rote memorization
  5. Your university will have a recommended book list - always check that first as it may vary slightly by college
Good luck with your MBBS journey! It's a tough but rewarding path. 🩺

Create a study schedule guide for first year MBBS

Asking for Preferences
Reading File
Running Command

mkdir -p /home/daytona/workspace/mbbs-schedule && ls /home/daytona/workspace/

Writing File

~/mbbs-schedule/generate_schedule.py

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

OUTPUT = "/home/daytona/workspace/mbbs-schedule/First_Year_MBBS_Study_Schedule.pdf"

# ── Color palette ──────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3C5E")
MED_BLUE    = colors.HexColor("#2E6DA4")
LIGHT_BLUE  = colors.HexColor("#D6E8FA")
ACCENT_RED  = colors.HexColor("#C0392B")
ACCENT_GREEN= colors.HexColor("#1E8449")
GOLD        = colors.HexColor("#D4AC0D")
LIGHT_GRAY  = colors.HexColor("#F4F6F7")
MID_GRAY    = colors.HexColor("#BDC3C7")
WHITE       = colors.white
ORANGE      = colors.HexColor("#E67E22")
PURPLE      = colors.HexColor("#6C3483")

# ── Styles ─────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kwargs):
    return ParagraphStyle(name, **kwargs)

title_style = S("Title2",
    fontSize=28, textColor=WHITE, alignment=TA_CENTER,
    fontName="Helvetica-Bold", spaceAfter=4, leading=34)

subtitle_style = S("Sub",
    fontSize=13, textColor=LIGHT_BLUE, alignment=TA_CENTER,
    fontName="Helvetica", spaceAfter=2)

h1 = S("H1",
    fontSize=16, textColor=WHITE, fontName="Helvetica-Bold",
    alignment=TA_CENTER, spaceAfter=4, leading=20)

h2 = S("H2",
    fontSize=13, textColor=DARK_BLUE, fontName="Helvetica-Bold",
    spaceBefore=8, spaceAfter=4, leading=16)

h3 = S("H3",
    fontSize=11, textColor=MED_BLUE, fontName="Helvetica-Bold",
    spaceBefore=4, spaceAfter=2, leading=14)

body = S("Body2",
    fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
    fontName="Helvetica", spaceAfter=3, leading=13)

body_bold = S("BodyBold",
    fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
    fontName="Helvetica-Bold", spaceAfter=3, leading=13)

bullet_style = S("Bullet",
    fontSize=9.5, textColor=colors.HexColor("#2C3E50"),
    fontName="Helvetica", leftIndent=12, spaceAfter=2,
    leading=13, bulletIndent=4)

small_center = S("SmallC",
    fontSize=8, textColor=colors.HexColor("#7F8C8D"),
    alignment=TA_CENTER, fontName="Helvetica", leading=10)

tip_style = S("Tip",
    fontSize=9, textColor=colors.HexColor("#1A5276"),
    fontName="Helvetica-Oblique", leftIndent=8, spaceAfter=2, leading=12)

# ── Helper: colored section header ─────────────────────────────────────────
def section_header(text, bg=DARK_BLUE, style=h1):
    data = [[Paragraph(text, style)]]
    t = Table(data, colWidths=[17*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("ROUNDEDCORNERS", [6,6,6,6]),
        ("TOPPADDING",    (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING",   (0,0), (-1,-1), 12),
        ("RIGHTPADDING",  (0,0), (-1,-1), 12),
    ]))
    return t

# ── Helper: info box ────────────────────────────────────────────────────────
def info_box(text, bg=LIGHT_BLUE, text_color=DARK_BLUE):
    st = S("IB", fontSize=9.5, textColor=text_color,
           fontName="Helvetica", leading=13, alignment=TA_LEFT)
    data = [[Paragraph(text, st)]]
    t = Table(data, colWidths=[17*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 7),
        ("BOTTOMPADDING", (0,0), (-1,-1), 7),
        ("LEFTPADDING",   (0,0), (-1,-1), 12),
        ("RIGHTPADDING",  (0,0), (-1,-1), 12),
        ("BOX", (0,0), (-1,-1), 1, MED_BLUE),
    ]))
    return t

# ── Document ────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=2*cm, rightMargin=2*cm,
    topMargin=1.5*cm, bottomMargin=2*cm,
    title="First Year MBBS Study Schedule Guide",
    author="Orris AI"
)

story = []

# ════════════════════════════════════════════════════════
# PAGE 1 – COVER
# ════════════════════════════════════════════════════════
cover_data = [[Paragraph("🩺 FIRST YEAR MBBS", title_style)],
              [Paragraph("Complete Study Schedule Guide", subtitle_style)],
              [Paragraph("India | NMC CBME 2024 Curriculum", subtitle_style)]]
cover = Table(cover_data, colWidths=[17*cm])
cover.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING",    (0,0), (-1,-1), 18),
    ("BOTTOMPADDING", (0,0), (-1,-1), 18),
    ("LEFTPADDING",   (0,0), (-1,-1), 16),
    ("RIGHTPADDING",  (0,0), (-1,-1), 16),
]))
story.append(cover)
story.append(Spacer(1, 0.4*cm))

# Quick overview boxes
overview = [
    ["πŸ“š  Subjects", "Anatomy Β· Physiology Β· Biochemistry"],
    ["⏱  Duration",  "12 Months (Phase I)"],
    ["🎯  Exam",      "University Theory + Practical | NExT"],
    ["πŸ“…  Schedule",  "Daily Hour-by-Hour Timetable Included"],
]
ov_table = Table(overview, colWidths=[5*cm, 12*cm])
ov_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,-1), MED_BLUE),
    ("BACKGROUND",    (1,0), (1,-1), LIGHT_BLUE),
    ("TEXTCOLOR",     (0,0), (0,-1), WHITE),
    ("TEXTCOLOR",     (1,0), (1,-1), DARK_BLUE),
    ("FONTNAME",      (0,0), (0,-1), "Helvetica-Bold"),
    ("FONTNAME",      (1,0), (1,-1), "Helvetica"),
    ("FONTSIZE",      (0,0), (-1,-1), 10),
    ("TOPPADDING",    (0,0), (-1,-1), 7),
    ("BOTTOMPADDING", (0,0), (-1,-1), 7),
    ("LEFTPADDING",   (0,0), (-1,-1), 10),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
]))
story.append(ov_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Generated by Orris AI  β€’  Based on NMC CBME 2024 Guidelines", small_center))
story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 2 – SUBJECT OVERVIEW & WEIGHTAGE
# ════════════════════════════════════════════════════════
story.append(section_header("πŸ“‹  SUBJECT OVERVIEW & EXAM PATTERN"))
story.append(Spacer(1, 0.3*cm))

subj_data = [
    ["Subject", "Theory\nHours", "Practical\nHours", "Theory\nMarks", "Practical\nMarks", "Pass\nMarks"],
    ["Anatomy",       "210", "400", "200", "100", "50% each"],
    ["Physiology",    "130", "305", "200", "100", "50% each"],
    ["Biochemistry",  " 78", "144", "200", "100", "50% each"],
    ["Comm. Medicine","  20", " 20", " 50", "β€”",  "50%"],
]
subj_hdr = S("SH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold",
             alignment=TA_CENTER, leading=11)
subj_cell = S("SC", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica",
              alignment=TA_CENTER, leading=11)

subj_table = Table(
    [[Paragraph(c, subj_hdr) if r==0 else Paragraph(c, subj_cell) for c in row]
     for r, row in enumerate(subj_data)],
    colWidths=[4.5*cm, 2.2*cm, 2.5*cm, 2.2*cm, 2.5*cm, 2.6*cm]
)
subj_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  DARK_BLUE),
    ("BACKGROUND",    (0,1), (-1,1),  LIGHT_GRAY),
    ("BACKGROUND",    (0,2), (-1,2),  WHITE),
    ("BACKGROUND",    (0,3), (-1,3),  LIGHT_GRAY),
    ("BACKGROUND",    (0,4), (-1,4),  WHITE),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(subj_table)
story.append(Spacer(1, 0.4*cm))

story.append(Paragraph("Additional Compulsory Modules:", h2))
mods = [
    ("🧠 AETCOM", "Attitude, Ethics & Communication β€” runs as a longitudinal module throughout the year"),
    ("πŸ₯ ECE",    "Early Clinical Exposure β€” hospital visits integrated into all 3 subjects"),
    ("🌿 FAP",    "Family Adoption Programme β€” village outreach & community health"),
    ("πŸŽ“ Foundation", "2-week orientation course at the very start of the year"),
]
for icon_name, desc in mods:
    row_data = [[Paragraph(f"<b>{icon_name}</b>", body_bold), Paragraph(desc, body)]]
    t = Table(row_data, colWidths=[3.5*cm, 13.5*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (0,0), LIGHT_BLUE),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("BOX",           (0,0), (-1,-1), 0.5, MID_GRAY),
    ]))
    story.append(t)
    story.append(Spacer(1, 0.15*cm))

story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 3 – DAILY HOUR-BY-HOUR TIMETABLE (WEEKDAY)
# ════════════════════════════════════════════════════════
story.append(section_header("⏰  DAILY HOUR-BY-HOUR TIMETABLE  (Monday – Friday)", bg=MED_BLUE))
story.append(Spacer(1, 0.3*cm))
story.append(info_box(
    "⚑  This timetable covers both college hours and self-study. Adapt the self-study blocks "
    "to your personal speed. College timetable may vary by institution β€” adjust accordingly."
))
story.append(Spacer(1, 0.3*cm))

time_hdr = S("TH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold",
             alignment=TA_CENTER, leading=12)
time_cell_time = S("TT", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica-Bold",
                   alignment=TA_CENTER, leading=12)
time_cell_act  = S("TA", fontSize=9, textColor=colors.HexColor("#2C3E50"),
                   fontName="Helvetica", leading=12)
time_cell_note = S("TN", fontSize=8.5, textColor=colors.HexColor("#7F8C8D"),
                   fontName="Helvetica-Oblique", leading=11)

def time_row(t, activity, note="", bg=WHITE):
    return [Paragraph(t, time_cell_time), Paragraph(activity, time_cell_act),
            Paragraph(note, time_cell_note), bg]

weekday_rows = [
    # time, activity, note, row_bg
    ("5:00 – 5:30 AM",  "Wake up, freshen up, light exercise/yoga",
     "Keeps mind alert; skip if you sleep late",        LIGHT_GRAY),
    ("5:30 – 7:00 AM",  "πŸ“–  Self-Study Block 1 β€” Anatomy",
     "Read BD Chaurasia / Gray's; draw diagrams",       WHITE),
    ("7:00 – 7:30 AM",  "Breakfast + travel to college",
     "Avoid skipping breakfast",                         LIGHT_GRAY),
    ("8:00 – 9:00 AM",  "🏫  College: Anatomy Lecture",
     "Annotate notes during class",                     WHITE),
    ("9:00 – 10:00 AM", "🏫  College: Physiology Lecture",
     "Key concepts + diagrams",                         LIGHT_GRAY),
    ("10:00 – 11:00 AM","🏫  College: Biochemistry Lecture",
     "Pathways, enzymes, clinical correlations",        WHITE),
    ("11:00 – 11:15 AM","β˜•  Short break",
     "Hydrate, snack",                                  LIGHT_GRAY),
    ("11:15 AM – 1:15 PM","πŸ”¬  Practical / Dissection Hall",
     "Anatomy dissection or Physio/Biochem practical",  WHITE),
    ("1:15 – 2:00 PM",  "🍽  Lunch + Rest",
     "20-min power nap if possible",                    LIGHT_GRAY),
    ("2:00 – 3:00 PM",  "🏫  Tutorial / SGL (Small Group Learning)",
     "ECE / AETCOM sessions on some days",              WHITE),
    ("3:00 – 3:30 PM",  "Travel home + freshen up",
     "",                                                 LIGHT_GRAY),
    ("3:30 – 5:30 PM",  "πŸ“–  Self-Study Block 2 β€” Physiology",
     "AK Jain / Guyton; solve MCQs from Across",        WHITE),
    ("5:30 – 6:00 PM",  "πŸƒ  Physical activity / break",
     "Sports, walk, or hobby",                          LIGHT_GRAY),
    ("6:00 – 7:00 PM",  "πŸ“–  Self-Study Block 3 β€” Biochemistry",
     "Vasudevan / Harper's; flowcharts of pathways",    WHITE),
    ("7:00 – 7:30 PM",  "🍽  Dinner",
     "",                                                 LIGHT_GRAY),
    ("7:30 – 9:00 PM",  "πŸ“  Revision + Note-Making",
     "Revise today's lectures; write short notes",      WHITE),
    ("9:00 – 9:30 PM",  "πŸ”  Quick MCQ Practice",
     "10–15 MCQs per subject (Across/Sparsh app)",       LIGHT_GRAY),
    ("9:30 – 10:00 PM", "πŸ“…  Plan tomorrow + wind down",
     "Review next day's topics; no screens after 10",   WHITE),
    ("10:00 PM",        "😴  Sleep",
     "7–8 hrs essential for memory consolidation",      LIGHT_GRAY),
]

header_row = [
    Paragraph("TIME", time_hdr),
    Paragraph("ACTIVITY", time_hdr),
    Paragraph("NOTES", time_hdr),
]

table_data = [header_row]
row_bgs = [DARK_BLUE]

for ttime, act, note, bg in weekday_rows:
    table_data.append([
        Paragraph(ttime, time_cell_time),
        Paragraph(act, time_cell_act),
        Paragraph(note, time_cell_note),
    ])
    row_bgs.append(bg)

col_w = [3.8*cm, 7.2*cm, 6.0*cm]
tt = Table(table_data, colWidths=col_w)

ts_cmds = [
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("GRID",       (0,0), (-1,-1), 0.4, MID_GRAY),
    ("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"),
]
for i, bg in enumerate(row_bgs[1:], start=1):
    ts_cmds.append(("BACKGROUND", (0,i), (-1,i), bg))

tt.setStyle(TableStyle(ts_cmds))
story.append(tt)
story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 4 – SATURDAY & SUNDAY SCHEDULE
# ════════════════════════════════════════════════════════
story.append(section_header("πŸ“…  SATURDAY & SUNDAY SCHEDULE", bg=PURPLE))
story.append(Spacer(1, 0.3*cm))

# Saturday
story.append(Paragraph("SATURDAY β€” Half-Day College + Extended Self Study", h2))

sat_rows = [
    ("5:30 – 7:00 AM",   "πŸ“–  Anatomy / Physiology deep reading",         "Cover 1 full chapter"),
    ("7:00 – 7:30 AM",   "Breakfast + travel",                             ""),
    ("8:00 – 12:00 PM",  "🏫  College (Lectures / Practicals)",            "Most colleges have Saturday morning classes"),
    ("12:00 – 1:00 PM",  "🍽  Lunch + rest",                               ""),
    ("1:00 – 3:00 PM",   "πŸ“  Weekly revision β€” Anatomy",                  "Re-read all week's notes; draw labeled diagrams"),
    ("3:00 – 5:00 PM",   "πŸ“  Weekly revision β€” Physiology",               "Flashcards, flowcharts, previous year questions"),
    ("5:00 – 5:30 PM",   "β˜•  Break",                                       ""),
    ("5:30 – 7:00 PM",   "πŸ“  Weekly revision β€” Biochemistry",             "Metabolic pathways in color diagrams"),
    ("7:00 – 8:00 PM",   "🍽  Dinner + leisure",                           ""),
    ("8:00 – 9:30 PM",   "πŸ“–  Extra reading / Doubt clearing",             "Netter's atlas, clinical cases, YouTube lectures"),
    ("10:00 PM",         "😴  Sleep",                                       ""),
]

# Sunday
sun_rows = [
    ("6:00 – 7:00 AM",   "Wake, exercise, light yoga / walk",              "Recharge for the week"),
    ("7:00 – 7:30 AM",   "Breakfast",                                       ""),
    ("7:30 – 9:30 AM",   "πŸ“–  Self Study β€” Topic of Choice / Weak Area",   "Focus on toughest topic this week"),
    ("9:30 – 11:00 AM",  "πŸ“  Previous Year Question (PYQ) Practice",      "1 hr per subject rotating weekly"),
    ("11:00 AM – 12:00 PM","β˜•  Break / leisure",                            ""),
    ("12:00 – 1:30 PM",  "πŸ“–  Biochemistry: pathway diagrams & mnemonics", ""),
    ("1:30 – 2:30 PM",   "🍽  Lunch + nap",                                ""),
    ("2:30 – 4:00 PM",   "πŸ“  Mock test / MCQ block (all 3 subjects)",     "Time yourself; 50 MCQs in 50 min"),
    ("4:00 – 5:30 PM",   "πŸ”  Analyze mistakes from mock test",            "Most important step β€” understand why you erred"),
    ("5:30 – 6:00 PM",   "πŸƒ  Outdoor activity / walk",                    ""),
    ("6:00 – 7:30 PM",   "πŸ“…  Plan next week's topics",                    "Set daily targets for Mon–Fri"),
    ("7:30 – 8:30 PM",   "🍽  Dinner + family / leisure time",             ""),
    ("8:30 – 9:30 PM",   "πŸ“–  Light reading β€” anatomy atlas / physio",     "No heavy study on Sunday evening"),
    ("10:00 PM",         "😴  Sleep",                                       ""),
]

def make_day_table(rows, hdr_text, hdr_color):
    hdr = [Paragraph("TIME", time_hdr), Paragraph("ACTIVITY", time_hdr), Paragraph("NOTES", time_hdr)]
    data = [hdr]
    bgs  = [hdr_color]
    for i, (tt2, act, note) in enumerate(rows):
        data.append([Paragraph(tt2, time_cell_time), Paragraph(act, time_cell_act),
                     Paragraph(note, time_cell_note)])
        bgs.append(LIGHT_GRAY if i % 2 == 0 else WHITE)

    t = Table(data, colWidths=[3.8*cm, 7.2*cm, 6.0*cm])
    cmds = [
        ("BACKGROUND",    (0,0), (-1,0), hdr_color),
        ("GRID",          (0,0), (-1,-1), 0.4, MID_GRAY),
        ("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"),
    ]
    for i, bg in enumerate(bgs[1:], 1):
        cmds.append(("BACKGROUND", (0,i), (-1,i), bg))
    t.setStyle(TableStyle(cmds))
    return t

story.append(make_day_table(sat_rows, "SATURDAY", PURPLE))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("SUNDAY β€” Rest + Deep Study + Planning", h2))
story.append(make_day_table(sun_rows, "SUNDAY", ACCENT_GREEN))
story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 5 – WEEKLY & MONTHLY PLAN
# ════════════════════════════════════════════════════════
story.append(section_header("πŸ“†  WEEKLY SUBJECT ROTATION PLAN", bg=ACCENT_GREEN))
story.append(Spacer(1, 0.3*cm))
story.append(info_box(
    "Rotate the evening self-study focus each day so all 3 subjects get equal attention. "
    "Anatomy needs the most time β€” give it priority on 2–3 days per week."
))
story.append(Spacer(1, 0.3*cm))

week_data = [
    ["DAY", "Morning Self-Study\n(5:30–7 AM)", "Evening Block 2\n(3:30–5:30 PM)",
     "Evening Block 3\n(6–7 PM)", "Night Revision\n(7:30–9 PM)"],
    ["Monday",    "Anatomy β€” Gross",     "Physiology",        "Biochemistry",  "Today's lectures"],
    ["Tuesday",   "Anatomy β€” Histo",     "Anatomy",           "Physiology",    "Today's lectures"],
    ["Wednesday", "Physiology",          "Biochemistry",      "Anatomy",       "Today's lectures"],
    ["Thursday",  "Biochemistry",        "Physiology",        "Anatomy",       "Today's lectures"],
    ["Friday",    "Anatomy β€” Neuro",     "Anatomy",           "Biochemistry",  "Week mini-test (MCQs)"],
    ["Saturday",  "Anatomy / Physio",    "Full revision",     "Full revision", "Doubt clearing"],
    ["Sunday",    "Weak area",           "PYQ practice",      "Mock test",     "Next week plan"],
]

wh = S("WH", fontSize=8.5, textColor=WHITE, fontName="Helvetica-Bold",
       alignment=TA_CENTER, leading=11)
wc = S("WC", fontSize=8.5, textColor=DARK_BLUE, fontName="Helvetica",
       alignment=TA_CENTER, leading=11)
wd = S("WD", fontSize=8.5, textColor=DARK_BLUE, fontName="Helvetica-Bold",
       alignment=TA_LEFT, leading=11)

week_table_data = []
for r, row in enumerate(week_data):
    if r == 0:
        week_table_data.append([Paragraph(c, wh) for c in row])
    else:
        week_table_data.append(
            [Paragraph(row[0], wd)] + [Paragraph(c, wc) for c in row[1:]]
        )

wt = Table(week_table_data, colWidths=[2.5*cm, 3.5*cm, 3.5*cm, 3.5*cm, 4.0*cm])
wt_cmds = [
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("BACKGROUND", (0,6), (-1,6), colors.HexColor("#E8F8F5")),  # Saturday
    ("BACKGROUND", (0,7), (-1,7), colors.HexColor("#FEF9E7")),  # Sunday
    ("GRID",       (0,0), (-1,-1), 0.4, MID_GRAY),
    ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",(0,0), (-1,-1), 6), ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",     (0,0), (-1,-1), "MIDDLE"),
]
for i in [1, 3, 5]:
    wt_cmds.append(("BACKGROUND", (0,i), (-1,i), LIGHT_GRAY))
wt.setStyle(TableStyle(wt_cmds))
story.append(wt)

story.append(Spacer(1, 0.5*cm))
story.append(section_header("πŸ“…  MONTHLY MILESTONE PLAN (12 Months)", bg=ORANGE))
story.append(Spacer(1, 0.3*cm))

monthly = [
    ("Months 1–2",  "Foundation + Orientation",
     "Complete Foundation Course. Start Anatomy (Upper Limb + Lower Limb). "
     "Begin Physiology Unit 1 (Cell physiology, Blood). Biochemistry: Carbohydrate metabolism."),
    ("Months 3–4",  "Core Building",
     "Anatomy: Thorax + Abdomen + Pelvis. Physiology: CVS + Respiratory. "
     "Biochemistry: Lipid metabolism, Proteins. First internal assessment."),
    ("Months 5–6",  "Deep Study",
     "Anatomy: Head & Neck + Neuroanatomy. Physiology: Nervous system + Endocrine. "
     "Biochemistry: Nucleic acids, enzymes, vitamins. Mid-term revision."),
    ("Month 7",     "First Internal Exam Prep",
     "Comprehensive revision of all topics covered. PYQ practice. Full-length mock tests."),
    ("Months 8–9",  "Advanced Topics",
     "Anatomy: Embryology + Histology in detail. Physiology: Renal + GIT + Reproduction. "
     "Biochemistry: Clinical biochemistry, nutrition."),
    ("Months 10–11","Second Internal + Revision",
     "Second internal exam. Topic-wise revision. Focus on weak areas. High-yield MCQ banks."),
    ("Month 12",    "Final Exam Preparation",
     "Full syllabus revision. Daily mock tests. Practical viva preparation. "
     "Anatomy spotters, Physio experiments, Biochem practicals."),
]

mh = S("MH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold",
       alignment=TA_CENTER, leading=12)
mm_s = S("MM", fontSize=9, textColor=ORANGE, fontName="Helvetica-Bold",
         alignment=TA_LEFT, leading=12)
md = S("MD", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica",
       alignment=TA_LEFT, leading=12, wordWrap='LTR')

month_hdr_row = [Paragraph("PERIOD", mh), Paragraph("FOCUS", mh), Paragraph("TOPICS & TARGETS", mh)]
month_data = [month_hdr_row]
for i, (period, focus, detail) in enumerate(monthly):
    month_data.append([
        Paragraph(period, mm_s),
        Paragraph(f"<b>{focus}</b>", S("MF", fontSize=9, textColor=ACCENT_GREEN,
                                       fontName="Helvetica-Bold", leading=12)),
        Paragraph(detail, md)
    ])

mt = Table(month_data, colWidths=[2.8*cm, 3.8*cm, 10.4*cm])
mt_cmds = [
    ("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
    ("GRID",       (0,0), (-1,-1), 0.4, MID_GRAY),
    ("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), "TOP"),
]
for i in range(1, len(monthly)+1):
    if i % 2 == 0:
        mt_cmds.append(("BACKGROUND", (0,i), (-1,i), LIGHT_GRAY))
mt.setStyle(TableStyle(mt_cmds))
story.append(mt)
story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 6 – STUDY TIPS, RESOURCES & EXAM STRATEGY
# ════════════════════════════════════════════════════════
story.append(section_header("πŸ’‘  STUDY TIPS, RESOURCES & EXAM STRATEGY", bg=ACCENT_RED))
story.append(Spacer(1, 0.3*cm))

# Subject-wise tips
tips = [
    (DARK_BLUE, "🦴  ANATOMY",
     [("Books", "BD Chaurasia (main) + Netter's Atlas (visual) + Snell's (clinical)"),
      ("Practicals", "Attend every dissection β€” you remember what you see and touch"),
      ("Diagrams", "Draw labeled diagrams daily β€” most exam marks come from diagrams"),
      ("Neuroanatomy", "Use 3D brain apps (e.g. Brain Atlas) β€” it's the toughest part"),
      ("Histology", "Use color-coded flash cards for tissue identification"),
      ("Radioanatomy", "Practice identifying structures on X-rays from day 1"),
     ]),
    (ACCENT_GREEN, "πŸ«€  PHYSIOLOGY",
     [("Books", "AK Jain for Indian exams; Guyton for deep concepts; Ganong for MCQs"),
      ("Graphs", "Practice drawing graphs (ECG, spirometry, renal clearance) perfectly"),
      ("Mnemonics", "Create your own β€” they stick better than memorizing borrowed ones"),
      ("Practicals", "Understand the principle behind each experiment β€” viva questions focus here"),
      ("MCQs", "Solve Across and Sparsh MCQ banks chapter by chapter"),
     ]),
    (PURPLE, "πŸ§ͺ  BIOCHEMISTRY",
     [("Books", "U Satyanarayana (main) + Lippincott's (visual) + Harper's (reference)"),
      ("Pathways", "Draw ALL metabolic pathways as flow diagrams on A3 paper β€” revise weekly"),
      ("Enzymes", "Learn enzymes with their co-factors and clinical deficiency diseases together"),
      ("Clinical", "Always link a pathway to a disease β€” makes it memorable and exam-relevant"),
      ("Practicals", "Understand the chemistry behind each lab test"),
     ]),
]

for color, title, tip_list in tips:
    story.append(Paragraph(title, S("TipH", fontSize=12, textColor=WHITE,
                                    fontName="Helvetica-Bold", spaceAfter=0,
                                    leading=14)))
    tip_hdr_data = [[Paragraph(title, S("TH2", fontSize=11, textColor=WHITE,
                                        fontName="Helvetica-Bold", alignment=TA_LEFT,
                                        leading=14))]]
    tip_hdr_t = Table(tip_hdr_data, colWidths=[17*cm])
    tip_hdr_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),
    ]))
    story.append(tip_hdr_t)
    for key, val in tip_list:
        row = [[Paragraph(f"<b>{key}</b>",
                          S("K", fontSize=9, textColor=color, fontName="Helvetica-Bold",
                            leading=12, alignment=TA_CENTER)),
                Paragraph(val, body)]]
        rt = Table(row, colWidths=[3*cm, 14*cm])
        rt.setStyle(TableStyle([
            ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4),
            ("LEFTPADDING",(0,0), (-1,-1), 8), ("RIGHTPADDING",  (0,0), (-1,-1), 8),
            ("GRID",       (0,0), (-1,-1), 0.3, MID_GRAY),
            ("VALIGN",     (0,0), (-1,-1), "MIDDLE"),
        ]))
        story.append(rt)
    story.append(Spacer(1, 0.3*cm))

story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("πŸ“±  Recommended Apps & Resources", h2))
apps_data = [
    ["App / Resource",              "Use For"],
    ["Across MCQ Bank",             "Best MCQ app for Phase I subjects"],
    ["Sparsh",                      "Anatomy, Physiology, Biochemistry MCQs"],
    ["Netter's Anatomy Flash Cards","Anatomy visual learning"],
    ["Anki (Flashcard app)",        "Spaced repetition for biochemistry pathways & anatomy"],
    ["YouTube β€” Armando Hasudungan","Beautiful hand-drawn physiology & biochemistry videos"],
    ["YouTube β€” Ninja Nerd Science","Excellent in-depth physiology lectures"],
    ["YouTube β€” Zero To Finals",    "Quick medical concept overviews"],
    ["USMLE First Aid (reference)", "High-yield tables for integrated learning"],
]
ah = S("AH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold",
       alignment=TA_LEFT, leading=12)
ac = S("AC", fontSize=9, textColor=DARK_BLUE, fontName="Helvetica",
       alignment=TA_LEFT, leading=12)
app_tbl = Table(
    [[Paragraph(r[0], ah if i==0 else ac), Paragraph(r[1], ah if i==0 else ac)]
     for i, r in enumerate(apps_data)],
    colWidths=[6*cm, 11*cm]
)
app_cmds = [
    ("BACKGROUND", (0,0), (-1,0), MED_BLUE),
    ("GRID",       (0,0), (-1,-1), 0.4, MID_GRAY),
    ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",(0,0), (-1,-1), 8), ("RIGHTPADDING",  (0,0), (-1,-1), 8),
]
for i in range(1, len(apps_data)):
    if i % 2 == 0:
        app_cmds.append(("BACKGROUND", (0,i), (-1,i), LIGHT_GRAY))
app_tbl.setStyle(TableStyle(app_cmds))
story.append(app_tbl)
story.append(PageBreak())

# ════════════════════════════════════════════════════════
# PAGE 7 – EXAM STRATEGY + FINAL REMINDERS
# ════════════════════════════════════════════════════════
story.append(section_header("🎯  EXAM STRATEGY & FINAL REMINDERS", bg=GOLD))
story.append(Spacer(1, 0.3*cm))

story.append(Paragraph("Theory Exam Strategy", h2))
theory_tips = [
    "Answer anatomy questions with LABELED DIAGRAMS β€” they fetch the most marks.",
    "For physiology, always explain in physiological order: stimulus β†’ response β†’ mechanism.",
    "Biochemistry essays: Start with the pathway diagram, then explain step by step.",
    "Write neatly β€” examiners reward clarity. Use headings and subheadings.",
    "Attempt ALL questions β€” partial marks can be the difference between pass and fail.",
    "Practice writing answers in timed conditions from month 4 onwards.",
]
for tip in theory_tips:
    story.append(Paragraph(f"βœ”  {tip}", bullet_style))

story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Practical / Viva Strategy", h2))
viva_tips = [
    "Anatomy viva: Know origins, insertions, nerve supply and blood supply for every muscle.",
    "Anatomy spotters: Practice identifying bones, histology slides, radiology images.",
    "Physiology practicals: Know the PRINCIPLE of each experiment β€” examiners always ask.",
    "Biochemistry practicals: Know normal reference values for all tests.",
    "Speak confidently in viva β€” say 'I'm not sure but...' rather than guessing wildly.",
    "Attend all practicals β€” practical attendance is compulsory for exam eligibility.",
]
for tip in viva_tips:
    story.append(Paragraph(f"βœ”  {tip}", bullet_style))

story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Mental Health & Self Care", h2))
story.append(info_box(
    "⚠️  MBBS is a marathon, not a sprint. Burnout in first year is common. "
    "Protect your sleep (minimum 7 hrs), eat properly, exercise, and maintain social connections. "
    "Your academic performance is better when you are mentally healthy. "
    "Seek help from seniors, counselors, or faculty when struggling β€” it's a sign of strength, not weakness.",
    bg=colors.HexColor("#FEF9E7"), text_color=DARK_BLUE
))

story.append(Spacer(1, 0.4*cm))

# Final motivational box
final_data = [[Paragraph(
    "\"The practice of medicine is an art, not a trade; a calling, not a business; "
    "a calling in which your heart will be exercised equally with your head.\"\nβ€” Sir William Osler",
    S("Quote", fontSize=10, textColor=WHITE, fontName="Helvetica-Oblique",
      alignment=TA_CENTER, leading=14)
)]]
ft = Table(final_data, colWidths=[17*cm])
ft.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
    ("TOPPADDING", (0,0), (-1,-1), 14), ("BOTTOMPADDING", (0,0), (-1,-1), 14),
    ("LEFTPADDING",(0,0), (-1,-1), 16), ("RIGHTPADDING",  (0,0), (-1,-1), 16),
]))
story.append(ft)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Good Luck with Your MBBS Journey! 🩺", h2))
story.append(Paragraph("Generated by Orris AI  β€’  Based on NMC CBME 2024 Curriculum  β€’  July 2026", small_center))

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

cd /home/daytona/workspace/mbbs-schedule && python generate_schedule.py

Running Command

ls -lh /home/daytona/workspace/mbbs-schedule/First_Year_MBBS_Study_Schedule.pdf

Your PDF is ready! Download it here:

First Year MBBS Study Schedule

PDF Document Β· PDF


Here's what's inside the 7-page guide:
PageContent
1Cover page with subject overview
2Subject weightage, exam pattern & compulsory modules
3Full weekday (Mon-Fri) hour-by-hour timetable
4Saturday & Sunday detailed schedules
5Weekly subject rotation plan + 12-month milestone plan
6Subject-wise study tips + recommended apps & YouTube channels
7Exam strategy (theory + viva) + mental health reminders
Key highlights of the schedule:
  • 5:30 AM - Start with Anatomy (toughest subject, needs the most time)
  • 3:30–5:30 PM - Evening deep study block for Physiology
  • 6:00–7:00 PM - Biochemistry pathways and flowcharts
  • 7:30–9:30 PM - Revision of the day's lectures + MCQ practice
  • Sundays - Mock tests + mistake analysis + next week planning
This is a shared conversation. Sign in to Orris to start your own chat.