Hey orris I just got 26 days to prepare for my final 4th yr bhms theory exams with subject practice ofmedicine materia Medica organon repertory psm can you make a shedule for 20 days

Asking for Preferences
All 5 subjects are weak - that means every subject gets serious attention. With 12+ hours/day and 20 study days, here's your complete schedule:

๐Ÿ“… BHMS 4th Year Theory Exam - 20-Day Study Schedule

Start: July 25, 2026 | End: August 13, 2026 Daily Target: 12 hours | 3 sessions per day

๐Ÿ—“๏ธ SUBJECT ALLOCATION OVERVIEW

SubjectDaysDates
Practice of Medicine (PoM)5 daysJuly 25-29
Materia Medica (MM)5 daysJuly 30 - Aug 3
Organon of Medicine4 daysAug 4-7
Repertory3 daysAug 8-10
PSM3 daysAug 11-13
Revision (Weak Subject Focus)6 daysEmbedded daily
The last 6 days are woven INTO the daily schedule as "evening revision blocks" targeting your weakest areas - this is more efficient than saving all revision for the end.

๐Ÿ“š PHASE 1 - PRACTICE OF MEDICINE (July 25-29) | 5 Days

Daily Structure: Morning 6-10am | Afternoon 11am-3pm | Evening 4pm-8pm + Night 9pm-12am

Day 1 - July 25 (Saturday)

SessionTimeTopics
Morning (4 hrs)6am-10amCardiovascular: Heart failure, Hypertension, IHD, Rheumatic fever
Afternoon (4 hrs)11am-3pmRespiratory: Pneumonia, Bronchitis, COPD, Asthma, TB
Evening (3 hrs)4pm-7pmGIT: Typhoid, Cholera, Dysentery, Peptic ulcer, Hepatitis
Night Revision (1 hr)9pm-10pmQuick re-read CV + Resp key points, write remedies for each disease

Day 2 - July 26 (Sunday)

SessionTimeTopics
Morning (4 hrs)6am-10amNervous system: Meningitis, Encephalitis, Epilepsy, Paralysis, Migraine
Afternoon (4 hrs)11am-3pmRenal: UTI, Nephritis, Nephrotic syndrome, Renal failure
Evening (3 hrs)4pm-7pmEndocrine: Diabetes mellitus, Thyroid disorders, Addison's, Cushing's
Night Revision (1 hr)9pm-10pmNervous + Renal revision - focus on clinical features

Day 3 - July 27 (Monday)

SessionTimeTopics
Morning (4 hrs)6am-10amFevers: Malaria, Dengue, Typhoid revisit, Viral fevers, Septicemia
Afternoon (4 hrs)11am-3pmBlood disorders: Anemia types, Leukemia, Thrombocytopenia, Bleeding disorders
Evening (3 hrs)4pm-7pmMusculoskeletal: Rheumatoid arthritis, Gout, Osteoarthritis, SLE
Night Revision (1 hr)9pm-10pmFever management, important investigations for blood disorders

Day 4 - July 28 (Tuesday)

SessionTimeTopics
Morning (4 hrs)6am-10amSkin diseases: Psoriasis, Eczema, Urticaria, Acne, Vitiligo
Afternoon (4 hrs)11am-3pmPediatrics: Diarrhea in children, Kwashiorkor, Marasmus, Worm infestations, Vaccination
Evening (3 hrs)4pm-7pmGynecological conditions: Menstrual disorders, PCOD, PID
Night Revision (1 hr)9pm-10pmPYQ practice - write 10-mark answers on PoM topics

Day 5 - July 29 (Wednesday)

SessionTimeTopics
Morning (4 hrs)6am-10amMiasmatic understanding of diseases + Homoeopathic approach to emergencies
Afternoon (4 hrs)11am-3pmPoM PYQs - solve last 5 years papers, focus on case-based questions
Evening (3 hrs)4pm-7pmHomeopathic therapeutics: Specific remedies for all major diseases covered
Night (1 hr)9pm-10pmPoM full revision - make one-page summary per system

๐Ÿ“š PHASE 2 - MATERIA MEDICA (July 30 - Aug 3) | 5 Days

Strategy: Focus on keynotes, modalities, mentals, and comparison of drugs

Day 6 - July 30 (Thursday)

SessionTimeTopics
Morning (4 hrs)6am-10amPolychrests: Sulphur, Calcarea carb, Lycopodium - full drug pictures
Afternoon (4 hrs)11am-3pmPolychrests: Natrum mur, Pulsatilla, Sepia, Silicea
Evening (3 hrs)4pm-7pmPolychrests: Nux vomica, Arsenicum album, Phosphorus
Night Revision (1 hr)9pm-10pmCompare Sulphur vs Calcarea carb vs Lycopodium mentals

Day 7 - July 31 (Friday)

SessionTimeTopics
Morning (4 hrs)6am-10amMinerals: Kali carb, Kali bich, Kali phos, Natrum sulph, Natrum ars
Afternoon (4 hrs)11am-3pmMinerals: Magnesia carb, Magnesia mur, Calcarea phos, Calcarea sulph
Evening (3 hrs)4pm-7pmAcids: Acid phos, Phosphoric acid, Nitric acid, Muriatic acid
Night Revision (1 hr)9pm-10pmAcid group comparison - common exam differentials

Day 8 - Aug 1 (Saturday)

SessionTimeTopics
Morning (4 hrs)6am-10amPlants: Belladonna, Aconite, Chamomilla, Ignatia, Staphysagria
Afternoon (4 hrs)11am-3pmPlants: Rhus tox, Bryonia, Colocynth, Drosera, Ipecac
Evening (3 hrs)4pm-7pmPlants: Gelsemium, Veratrum alb, Spigelia, Cactus, Digitalis
Night Revision (1 hr)9pm-10pmAconite vs Belladonna vs Chamomilla - classic comparison

Day 9 - Aug 2 (Sunday)

SessionTimeTopics
Morning (4 hrs)6am-10amAnimal remedies: Apis mel, Lachesis, Naja, Crotalus, Tarentula
Afternoon (4 hrs)11am-3pmNosodes: Psorinum, Medorrhinum, Syphilinum, Tuberculinum, Carcinosin
Evening (3 hrs)4pm-7pmBowel nosodes + small remedies: Morgan, Gaertner, Bach + Hydrastis, Ceanothus
Night Revision (1 hr)9pm-10pmNosodes comparison - miasmatic relation

Day 10 - Aug 3 (Monday)

SessionTimeTopics
Morning (4 hrs)6am-10amMM PYQs - essay type: drug pictures, compare remedies, drug relationship questions
Afternoon (4 hrs)11am-3pmThermal relationship + Miasmatic classification of all drugs studied
Evening (3 hrs)4pm-7pmDrug relationships: complementary, inimical, antidotes for all major drugs
Night (1 hr)9pm-10pmMM one-liners and keynotes revision

๐Ÿ“š PHASE 3 - ORGANON OF MEDICINE (Aug 4-7) | 4 Days

Strategy: Aphorisms + their explanations + Hahnemannian philosophy

Day 11 - Aug 4 (Tuesday)

SessionTimeTopics
Morning (4 hrs)6am-10amAphorisms 1-70: Concept of health, disease, cure, vital force, susceptibility
Afternoon (4 hrs)11am-3pmAphorisms 71-104: Classification of diseases, chronic diseases, miasms (Psora, Sycosis, Syphilis)
Evening (3 hrs)4pm-7pmAphorisms 105-145: Drug proving, pure experiments, remedy selection
Night (1 hr)9pm-10pmWrite 10 important aphorisms with their explanations from memory

Day 12 - Aug 5 (Wednesday)

SessionTimeTopics
Morning (4 hrs)6am-10amAphorisms 146-203: Homoeopathic aggravation, direction of cure, accessory symptoms
Afternoon (4 hrs)11am-3pmAphorisms 204-260: Obstacles to cure, diet & regimen, management during treatment
Evening (3 hrs)4pm-7pmAphorisms 261-291: Posology - dose, potency, repetition, LM potencies
Night (1 hr)9pm-10pmPotency selection rules - important for exam short notes

Day 13 - Aug 6 (Thursday)

SessionTimeTopics
Morning (4 hrs)6am-10amCase taking: Aphorisms 83-104 in detail - totality, characteristic symptoms, PQRS
Afternoon (4 hrs)11am-3pmSecond prescription: Hering's law, Kentian philosophy vs Hahnemannian
Evening (3 hrs)4pm-7pmComparison topics: Psora vs Sycosis vs Syphilis; Acute vs Chronic disease
Night (1 hr)9pm-10pmImportant definitions from Organon - for one-word/short answers

Day 14 - Aug 7 (Friday)

SessionTimeTopics
Morning (4 hrs)6am-10amOrganon PYQs - 5 years paper practice
Afternoon (4 hrs)11am-3pmEssay topics: Vital force, Ideal cure, Miasms, Drug proving, LM potency
Evening (3 hrs)4pm-7pmFootnotes of Organon (6th edition) - commonly asked in exams
Night (1 hr)9pm-10pmQuick revision: Aphorisms number + keywords mapping

๐Ÿ“š PHASE 4 - REPERTORY (Aug 8-10) | 3 Days

Strategy: Kent's Repertory structure + rubric selection + practical application

Day 15 - Aug 8 (Saturday)

SessionTimeTopics
Morning (4 hrs)6am-10amIntroduction to Repertories: Kent, Boger, Boenninghausen, Murphy - structure & comparison
Afternoon (4 hrs)11am-3pmKent's Repertory: Mind chapter - important rubrics, marking system
Evening (3 hrs)4pm-7pmKent's chapters: Head, Eye, Ear, Nose - important rubrics + remedies
Night (1 hr)9pm-10pmRubric selection practice - convert symptoms to rubrics

Day 16 - Aug 9 (Sunday)

SessionTimeTopics
Morning (4 hrs)6am-10amKent's Repertory: Chest, Heart, Stomach, Abdomen chapters
Afternoon (4 hrs)11am-3pmRepertorization methods: Kent's, Boenninghausen's, Card repertory, Computer repertory
Evening (3 hrs)4pm-7pmTotality of symptoms: Complete symptom (location, sensation, modality, concomitant)
Night (1 hr)9pm-10pmSolve 5 cases using repertorization

Day 17 - Aug 10 (Monday)

SessionTimeTopics
Morning (4 hrs)6am-10amBoger's Repertory + Boenninghausen's TTBCM - structure and use
Afternoon (4 hrs)11am-3pmRepertory PYQs - rubric finding, case repertorization, comparison questions
Evening (3 hrs)4pm-7pmClinical repertories: Murphy's, Phatak's - common exam questions
Night (1 hr)9pm-10pmImportant rubrics by heart - Mind: Suicidal, Fear, Jealousy, Sadness, Anger

๐Ÿ“š PHASE 5 - PSM / COMMUNITY MEDICINE (Aug 11-13) | 3 Days

Strategy: Epidemiology concepts + National health programs + Biostatistics

Day 18 - Aug 11 (Tuesday)

SessionTimeTopics
Morning (4 hrs)6am-10amEpidemiology: Basic concepts, modes of transmission, herd immunity, disease prevention levels
Afternoon (4 hrs)11am-3pmCommunicable diseases: Malaria, TB, HIV, Polio, Measles, Cholera - control measures
Evening (3 hrs)4pm-7pmImmunization schedule (UIP), Cold chain, National Health Mission
Night (1 hr)9pm-10pmImportant definitions: Incidence, Prevalence, R0, NMR, IMR, MMR

Day 19 - Aug 12 (Wednesday)

SessionTimeTopics
Morning (4 hrs)6am-10amBiostatistics: Types of data, mean/median/mode, SD, normal distribution, tests of significance
Afternoon (4 hrs)11am-3pmNational health programs: RNTCP, NVBDCP, NPCDCS, RCH, Janani Suraksha, Ayushman Bharat
Evening (3 hrs)4pm-7pmEnvironment health: Water, Air, Sanitation standards. Occupational diseases
Night (1 hr)9pm-10pmPSM abbreviations and schemes - rapid fire revision

Day 20 - Aug 13 (Thursday)

SessionTimeTopics
Morning (4 hrs)6am-10amPSM PYQs - last 5 years, focus on MCQ patterns + essay topics
Afternoon (4 hrs)11am-3pmNutrition: PEM, vitamins deficiency, food adulteration, ICDS scheme
Evening (3 hrs)4pm-7pmFULL EXAM REVISION - All 5 subjects: one-page summary each
Night (1 hr)9pm-10pmMental preparation + organize notes for remaining 6 days

๐Ÿ” REMAINING 6 DAYS - Weak Subject Intensive (Aug 14-19)

Since ALL subjects are weak, rotate by subject with a 2-day focus each:
DaysFocusWhat to do
Aug 14-15Practice of MedicineAll PYQs + Therapeutics quick revision
Aug 16-17Materia Medica + OrganonDrug comparisons + Aphorisms recall test
Aug 18-19Repertory + PSMCase repertorization practice + PSM schemes

โฐ DAILY TIME TABLE TEMPLATE

5:30 AM   - Wake up, freshen up, light exercise
6:00 AM   - Session 1 (4 hrs)
10:00 AM  - Breakfast + 30-min break
10:30 AM  - Light revision / make notes
11:00 AM  - Session 2 (4 hrs)
3:00 PM   - Lunch + rest (60 min)
4:00 PM   - Session 3 (3 hrs)
7:00 PM   - Dinner + walk (60 min)
8:00 PM   - PYQ practice / Answer writing (1 hr)
9:00 PM   - Night revision (1 hr)
10:00 PM  - Sleep

๐Ÿ“Œ EXAM STRATEGY TIPS

  1. Answer writing: Practice 10-mark and 5-mark formats daily from Day 4 onwards
  2. PYQs: Last 5 years are non-negotiable - do them for every subject
  3. Materia Medica: Use Kent's Materia Medica + Boericke - focus on BOLD symptoms
  4. Organon: Memorize aphorism numbers for commonly asked ones (ยง1, ยง9, ยง10, ยง11, ยง29, ยง70, ยง153, ยง269)
  5. Repertory: Always practice converting clinical symptoms to repertory rubrics - this is where marks are lost
  6. PSM: Focus on national programs, epidemiological definitions, and immunization schedule - high-yield for BHMS
  7. Sleep 7 hours minimum - memory consolidation during sleep is not optional

You have 26 days total - this plan uses 20 intensively + 6 days buffer/revision. You're starting July 25. All the best! ๐Ÿ™Œ

Create a printable PDF of this schedule I can pin on my wall

Reading File
Running Command

mkdir -p /tmp/workspace/bhms-schedule && ls /tmp/workspace/bhms-schedule/

Writing File

~/bhms-schedule/generate_schedule.py

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

OUTPUT = "/tmp/workspace/bhms-schedule/BHMS_4th_Year_20Day_Schedule.pdf"

# โ”€โ”€ Colour Palette โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
C_HEADER   = colors.HexColor("#1A1A2E")   # deep navy
C_POM      = colors.HexColor("#C0392B")   # red
C_MM       = colors.HexColor("#8E44AD")   # purple
C_ORG      = colors.HexColor("#1A5276")   # dark blue
C_REP      = colors.HexColor("#117A65")   # teal
C_PSM      = colors.HexColor("#B7950B")   # gold
C_REV      = colors.HexColor("#2E4053")   # charcoal
C_LIGHT    = colors.HexColor("#F8F9FA")   # near-white
C_ALT      = colors.HexColor("#EAF2FF")   # light blue tint
C_NIGHT    = colors.HexColor("#FFF3E0")   # warm cream for night session
C_STRIPE   = colors.HexColor("#F0F0F0")
C_WHITE    = colors.white
C_BLACK    = colors.HexColor("#1C1C1C")

SUBJECT_COLORS = {
    "POM": C_POM, "MM": C_MM, "ORG": C_ORG,
    "REP": C_REP, "PSM": C_PSM, "REV": C_REV,
}

def subject_color(tag):
    return SUBJECT_COLORS.get(tag, C_HEADER)


# โ”€โ”€ Page Setup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
PAGE_W, PAGE_H = A4          # 595 x 842 pts
MARGIN = 1.5 * cm

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=MARGIN, rightMargin=MARGIN,
    topMargin=1.8*cm, bottomMargin=1.5*cm,
    title="BHMS 4th Year โ€“ 20-Day Study Schedule",
    author="Orris Study Planner",
)

# โ”€โ”€ Styles โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
styles = getSampleStyleSheet()

def sty(name, **kw):
    return ParagraphStyle(name, **kw)

TITLE = sty("Title2", fontName="Helvetica-Bold", fontSize=18, textColor=C_WHITE,
            alignment=TA_CENTER, leading=22, spaceAfter=2)
SUBTITLE = sty("Sub", fontName="Helvetica", fontSize=9, textColor=colors.HexColor("#AAAACC"),
               alignment=TA_CENTER, leading=12, spaceAfter=4)
PHASE_TITLE = sty("PhaseT", fontName="Helvetica-Bold", fontSize=11, textColor=C_WHITE,
                  alignment=TA_LEFT, leading=14)
DAY_HEAD = sty("DayH", fontName="Helvetica-Bold", fontSize=8.5, textColor=C_WHITE,
               alignment=TA_LEFT, leading=11)
CELL_BOLD = sty("CellB", fontName="Helvetica-Bold", fontSize=7.5, textColor=C_BLACK, leading=10)
CELL_NORM = sty("CellN", fontName="Helvetica", fontSize=7, textColor=C_BLACK, leading=9.5)
TIME_STY  = sty("TimeS", fontName="Helvetica-Bold", fontSize=7, textColor=colors.HexColor("#555555"), leading=9)
TIP_STY   = sty("TipS", fontName="Helvetica-Oblique", fontSize=7, textColor=C_BLACK, leading=10)
SMALL_HDR = sty("SmHdr", fontName="Helvetica-Bold", fontSize=8, textColor=C_WHITE,
                alignment=TA_CENTER, leading=10)
FOOTER_STY= sty("Footer", fontName="Helvetica-Oblique", fontSize=6.5,
                textColor=colors.HexColor("#888888"), alignment=TA_CENTER, leading=9)


# โ”€โ”€ Helper: coloured section header โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def phase_header(label, tag, date_range, days):
    col = subject_color(tag)
    data = [[
        Paragraph(f"<b>{label}</b>", PHASE_TITLE),
        Paragraph(f"<b>{date_range}  |  {days}</b>", PHASE_TITLE),
    ]]
    t = Table(data, colWidths=[10*cm, 7.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",  (0,0), (-1,-1), col),
        ("TEXTCOLOR",   (0,0), (-1,-1), C_WHITE),
        ("ALIGN",       (1,0), (1,0), "RIGHT"),
        ("VALIGN",      (0,0), (-1,-1), "MIDDLE"),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
        ("RIGHTPADDING",(0,0), (-1,-1), 8),
        ("TOPPADDING",  (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("ROUNDEDCORNERS", [4]),
    ]))
    return t

def day_header_row(day_num, date_str, tag):
    col = subject_color(tag)
    lighter = colors.HexColor("%02x%02x%02x" % (
        min(255, col.red*255 + 40),
        min(255, col.green*255 + 40),
        min(255, col.blue*255 + 40),
    ))
    data = [[Paragraph(f"<b>Day {day_num}  โ€“  {date_str}</b>", DAY_HEAD)]]
    t = Table(data, colWidths=[17.4*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), col),
        ("LEFTPADDING",  (0,0),(-1,-1), 8),
        ("TOPPADDING",   (0,0),(-1,-1), 3),
        ("BOTTOMPADDING",(0,0),(-1,-1), 3),
        ("ROUNDEDCORNERS",[3]),
    ]))
    return t

def session_table(rows, tag):
    """rows: list of (session_label, time, topics_str)"""
    col = subject_color(tag)
    table_data = [[
        Paragraph("<b>Session</b>", SMALL_HDR),
        Paragraph("<b>Time</b>", SMALL_HDR),
        Paragraph("<b>Topics</b>", SMALL_HDR),
    ]]
    for i, (sess, time_, topics) in enumerate(rows):
        bg = C_LIGHT if i % 2 == 0 else C_STRIPE
        if "Night" in sess or "Revision" in sess.lower():
            bg = C_NIGHT
        table_data.append([
            Paragraph(f"<b>{sess}</b>", CELL_BOLD),
            Paragraph(time_, TIME_STY),
            Paragraph(topics, CELL_NORM),
        ])
    t = Table(table_data, colWidths=[2.8*cm, 2.5*cm, 12.1*cm])
    style = [
        # Header row
        ("BACKGROUND",   (0,0),(-1,0), col),
        ("TEXTCOLOR",    (0,0),(-1,0), C_WHITE),
        ("ALIGN",        (0,0),(-1,0), "CENTER"),
        ("FONTNAME",     (0,0),(-1,0), "Helvetica-Bold"),
        ("FONTSIZE",     (0,0),(-1,0), 7.5),
        ("TOPPADDING",   (0,0),(-1,0), 4),
        ("BOTTOMPADDING",(0,0),(-1,0), 4),
        # Data rows
        ("FONTSIZE",     (0,1),(-1,-1), 7),
        ("TOPPADDING",   (0,1),(-1,-1), 3),
        ("BOTTOMPADDING",(0,1),(-1,-1), 3),
        ("LEFTPADDING",  (0,0),(-1,-1), 5),
        ("RIGHTPADDING", (0,0),(-1,-1), 5),
        ("VALIGN",       (0,0),(-1,-1), "TOP"),
        ("GRID",         (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
        ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_LIGHT, C_STRIPE]),
    ]
    # Night session highlight
    for i, (sess, _, _) in enumerate(rows, 1):
        if "Night" in sess:
            style.append(("BACKGROUND", (0,i),(-1,i), C_NIGHT))
    t.setStyle(TableStyle(style))
    return t


# โ”€โ”€ Build content โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story = []

# ---- COVER BANNER ----
cover_data = [[Paragraph("BHMS 4th Year Theory Exams", TITLE)],
              [Paragraph("20-Day Intensive Study Schedule  |  July 25 โ€“ August 13, 2026", SUBTITLE)],
              [Paragraph("Subjects: Practice of Medicine  โ€ข  Materia Medica  โ€ข  Organon  โ€ข  Repertory  โ€ข  PSM", SUBTITLE)]]
cover_tbl = Table(cover_data, colWidths=[17.4*cm])
cover_tbl.setStyle(TableStyle([
    ("BACKGROUND",   (0,0),(-1,-1), C_HEADER),
    ("LEFTPADDING",  (0,0),(-1,-1), 10),
    ("RIGHTPADDING", (0,0),(-1,-1), 10),
    ("TOPPADDING",   (0,0),(0,0), 12),
    ("TOPPADDING",   (0,1),(-1,-1), 2),
    ("BOTTOMPADDING",(0,0),(-1,-2), 2),
    ("BOTTOMPADDING",(0,-1),(-1,-1), 12),
    ("ROUNDEDCORNERS",[6]),
]))
story.append(cover_tbl)
story.append(Spacer(1, 8))

# ---- OVERVIEW TABLE ----
ov_header = [
    Paragraph("<b>Subject</b>", SMALL_HDR),
    Paragraph("<b>Days</b>", SMALL_HDR),
    Paragraph("<b>Dates</b>", SMALL_HDR),
    Paragraph("<b>Focus</b>", SMALL_HDR),
]
ov_rows = [
    ("Practice of Medicine", "5 days", "July 25โ€“29", "Systems, Therapeutics, PYQs"),
    ("Materia Medica", "5 days", "July 30 โ€“ Aug 3", "Polychrests, Nosodes, Drug Relations"),
    ("Organon of Medicine", "4 days", "Aug 4โ€“7", "Aphorisms, Philosophy, Posology"),
    ("Repertory", "3 days", "Aug 8โ€“10", "Kent, Boger, Rubric Selection"),
    ("PSM", "3 days", "Aug 11โ€“13", "Epidemiology, Programs, Biostats"),
    ("Revision (Weak Focus)", "6 days", "Aug 14โ€“19", "PYQs, Comparisons, Mock Practice"),
]
ov_colors_list = [C_POM, C_MM, C_ORG, C_REP, C_PSM, C_REV]
ov_data = [ov_header]
for row in ov_rows:
    ov_data.append([Paragraph(row[i], CELL_BOLD if i==0 else CELL_NORM) for i in range(4)])

ov_tbl = Table(ov_data, colWidths=[4.5*cm, 2.2*cm, 4.5*cm, 6.2*cm])
ov_style = [
    ("BACKGROUND",    (0,0),(-1,0), C_HEADER),
    ("TEXTCOLOR",     (0,0),(-1,0), C_WHITE),
    ("ALIGN",         (0,0),(-1,0), "CENTER"),
    ("GRID",          (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0),(-1,-1), 3),
    ("BOTTOMPADDING", (0,0),(-1,-1), 3),
    ("LEFTPADDING",   (0,0),(-1,-1), 5),
    ("FONTSIZE",      (0,0),(-1,-1), 7.5),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]
for i, col_c in enumerate(ov_colors_list, 1):
    ov_style.append(("LEFTBORDERPADDING", (0,i),(-1,i), 0))
    ov_style.append(("LINEAFTER",  (-1,i),(-1,i), 2, col_c))
    ov_style.append(("LINEBEFORE", (0,i),(0,i),  3, col_c))
    light = colors.Color(col_c.red, col_c.green, col_c.blue, alpha=0.08)
    ov_style.append(("BACKGROUND", (0,i),(-1,i), light))
ov_tbl.setStyle(TableStyle(ov_style))
story.append(ov_tbl)
story.append(Spacer(1, 10))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 1 โ€“ PRACTICE OF MEDICINE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ“š PHASE 1 โ€“ PRACTICE OF MEDICINE", "POM", "July 25โ€“29", "5 Days"))
story.append(Spacer(1, 4))

days_pom = [
    (1, "July 25 (Sat)", [
        ("Morning",  "6:00โ€“10:00 AM", "Cardiovascular: Heart failure, Hypertension, IHD, Rheumatic fever"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Respiratory: Pneumonia, Bronchitis, COPD, Asthma, Tuberculosis"),
        ("Evening",  "4:00โ€“7:00 PM",  "GIT: Typhoid, Cholera, Dysentery, Peptic ulcer, Hepatitis"),
        ("Night Rev","9:00โ€“10:00 PM", "Quick re-read CV + Resp key points; write remedies for each disease"),
    ]),
    (2, "July 26 (Sun)", [
        ("Morning",  "6:00โ€“10:00 AM", "Nervous system: Meningitis, Encephalitis, Epilepsy, Paralysis, Migraine"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Renal: UTI, Nephritis, Nephrotic syndrome, Renal failure"),
        ("Evening",  "4:00โ€“7:00 PM",  "Endocrine: Diabetes mellitus, Thyroid disorders, Addison's, Cushing's"),
        ("Night Rev","9:00โ€“10:00 PM", "Nervous + Renal revision โ€“ focus on clinical features"),
    ]),
    (3, "July 27 (Mon)", [
        ("Morning",  "6:00โ€“10:00 AM", "Fevers: Malaria, Dengue, Typhoid revisit, Viral fevers, Septicemia"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Blood: Anaemia types, Leukemia, Thrombocytopenia, Bleeding disorders"),
        ("Evening",  "4:00โ€“7:00 PM",  "Musculoskeletal: Rheumatoid arthritis, Gout, Osteoarthritis, SLE"),
        ("Night Rev","9:00โ€“10:00 PM", "Fever management + important investigations for blood disorders"),
    ]),
    (4, "July 28 (Tue)", [
        ("Morning",  "6:00โ€“10:00 AM", "Skin: Psoriasis, Eczema, Urticaria, Acne, Vitiligo"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Paediatrics: Diarrhoea, Kwashiorkor, Marasmus, Worm infestations, Vaccination"),
        ("Evening",  "4:00โ€“7:00 PM",  "Gynaecological: Menstrual disorders, PCOD, PID"),
        ("Night Rev","9:00โ€“10:00 PM", "PYQ practice โ€“ write 10-mark answers on PoM topics"),
    ]),
    (5, "July 29 (Wed)", [
        ("Morning",  "6:00โ€“10:00 AM", "Miasmatic understanding of diseases + Homoeopathic emergencies"),
        ("Afternoon","11:00 AMโ€“3:00 PM","PoM PYQs โ€“ last 5 years, focus on case-based questions"),
        ("Evening",  "4:00โ€“7:00 PM",  "Homoeopathic therapeutics: Specific remedies for all major diseases"),
        ("Night Rev","9:00โ€“10:00 PM", "Full PoM revision โ€“ make one-page summary per system"),
    ]),
]
for day_num, date_str, sessions in days_pom:
    story.append(day_header_row(day_num, date_str, "POM"))
    story.append(session_table(sessions, "POM"))
    story.append(Spacer(1, 5))

story.append(Spacer(1, 6))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 2 โ€“ MATERIA MEDICA
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ“š PHASE 2 โ€“ MATERIA MEDICA", "MM", "July 30 โ€“ Aug 3", "5 Days"))
story.append(Spacer(1, 4))

days_mm = [
    (6, "July 30 (Thu)", [
        ("Morning",  "6:00โ€“10:00 AM", "Polychrests: Sulphur, Calcarea carb, Lycopodium โ€“ full drug pictures"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Polychrests: Natrum mur, Pulsatilla, Sepia, Silicea"),
        ("Evening",  "4:00โ€“7:00 PM",  "Polychrests: Nux vomica, Arsenicum album, Phosphorus"),
        ("Night Rev","9:00โ€“10:00 PM", "Compare Sulphur vs Calcarea carb vs Lycopodium mentals"),
    ]),
    (7, "July 31 (Fri)", [
        ("Morning",  "6:00โ€“10:00 AM", "Minerals: Kali carb, Kali bich, Kali phos, Natrum sulph, Natrum ars"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Minerals: Magnesia carb, Magnesia mur, Calcarea phos, Calcarea sulph"),
        ("Evening",  "4:00โ€“7:00 PM",  "Acids: Acid phos, Phosphoric acid, Nitric acid, Muriatic acid"),
        ("Night Rev","9:00โ€“10:00 PM", "Acid group comparison โ€“ common exam differentials"),
    ]),
    (8, "Aug 1 (Sat)", [
        ("Morning",  "6:00โ€“10:00 AM", "Plants: Belladonna, Aconite, Chamomilla, Ignatia, Staphysagria"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Plants: Rhus tox, Bryonia, Colocynth, Drosera, Ipecac"),
        ("Evening",  "4:00โ€“7:00 PM",  "Plants: Gelsemium, Veratrum alb, Spigelia, Cactus, Digitalis"),
        ("Night Rev","9:00โ€“10:00 PM", "Aconite vs Belladonna vs Chamomilla โ€“ classic comparison"),
    ]),
    (9, "Aug 2 (Sun)", [
        ("Morning",  "6:00โ€“10:00 AM", "Animal remedies: Apis mel, Lachesis, Naja, Crotalus, Tarentula"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Nosodes: Psorinum, Medorrhinum, Syphilinum, Tuberculinum, Carcinosin"),
        ("Evening",  "4:00โ€“7:00 PM",  "Bowel nosodes + small remedies: Morgan, Gaertner, Bach"),
        ("Night Rev","9:00โ€“10:00 PM", "Nosodes comparison โ€“ miasmatic relations"),
    ]),
    (10, "Aug 3 (Mon)", [
        ("Morning",  "6:00โ€“10:00 AM", "MM PYQs โ€“ essay: drug pictures, compare remedies, drug relationships"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Thermal relations + miasmatic classification of all drugs studied"),
        ("Evening",  "4:00โ€“7:00 PM",  "Drug relationships: Complementary, inimical, antidotes for major drugs"),
        ("Night Rev","9:00โ€“10:00 PM", "MM one-liners and keynotes revision"),
    ]),
]
for day_num, date_str, sessions in days_mm:
    story.append(day_header_row(day_num, date_str, "MM"))
    story.append(session_table(sessions, "MM"))
    story.append(Spacer(1, 5))

story.append(Spacer(1, 6))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 3 โ€“ ORGANON
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ“š PHASE 3 โ€“ ORGANON OF MEDICINE", "ORG", "Aug 4โ€“7", "4 Days"))
story.append(Spacer(1, 4))

days_org = [
    (11, "Aug 4 (Tue)", [
        ("Morning",  "6:00โ€“10:00 AM", "Aphorisms 1-70: Concept of health, disease, cure, vital force, susceptibility"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Aphorisms 71-104: Classification of diseases, chronic diseases, miasms"),
        ("Evening",  "4:00โ€“7:00 PM",  "Aphorisms 105-145: Drug proving, pure experiments, remedy selection"),
        ("Night Rev","9:00โ€“10:00 PM", "Write 10 important aphorisms with explanations from memory"),
    ]),
    (12, "Aug 5 (Wed)", [
        ("Morning",  "6:00โ€“10:00 AM", "Aphorisms 146-203: Homoeopathic aggravation, direction of cure, accessory symptoms"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Aphorisms 204-260: Obstacles to cure, diet & regimen, management"),
        ("Evening",  "4:00โ€“7:00 PM",  "Aphorisms 261-291: Posology โ€“ dose, potency, repetition, LM potencies"),
        ("Night Rev","9:00โ€“10:00 PM", "Potency selection rules โ€“ important for exam short notes"),
    ]),
    (13, "Aug 6 (Thu)", [
        ("Morning",  "6:00โ€“10:00 AM", "Case taking: Aph 83-104 in detail โ€“ totality, characteristic symptoms, PQRS"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Second prescription: Hering's law, Kentian vs Hahnemannian philosophy"),
        ("Evening",  "4:00โ€“7:00 PM",  "Comparisons: Psora vs Sycosis vs Syphilis; Acute vs Chronic disease"),
        ("Night Rev","9:00โ€“10:00 PM", "Important definitions from Organon โ€“ for one-word/short answers"),
    ]),
    (14, "Aug 7 (Fri)", [
        ("Morning",  "6:00โ€“10:00 AM", "Organon PYQs โ€“ 5 years paper practice"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Essay topics: Vital force, Ideal cure, Miasms, Drug proving, LM potency"),
        ("Evening",  "4:00โ€“7:00 PM",  "Footnotes of Organon (6th edition) โ€“ commonly asked in exams"),
        ("Night Rev","9:00โ€“10:00 PM", "Quick revision: Aphorism number + keywords mapping"),
    ]),
]
for day_num, date_str, sessions in days_org:
    story.append(day_header_row(day_num, date_str, "ORG"))
    story.append(session_table(sessions, "ORG"))
    story.append(Spacer(1, 5))

story.append(Spacer(1, 6))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 4 โ€“ REPERTORY
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ“š PHASE 4 โ€“ REPERTORY", "REP", "Aug 8โ€“10", "3 Days"))
story.append(Spacer(1, 4))

days_rep = [
    (15, "Aug 8 (Sat)", [
        ("Morning",  "6:00โ€“10:00 AM", "Introduction: Kent, Boger, Boenninghausen, Murphy โ€“ structure & comparison"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Kent's Repertory: Mind chapter โ€“ important rubrics, marking system"),
        ("Evening",  "4:00โ€“7:00 PM",  "Kent's chapters: Head, Eye, Ear, Nose โ€“ important rubrics + remedies"),
        ("Night Rev","9:00โ€“10:00 PM", "Rubric selection practice โ€“ convert symptoms to rubrics"),
    ]),
    (16, "Aug 9 (Sun)", [
        ("Morning",  "6:00โ€“10:00 AM", "Kent's Repertory: Chest, Heart, Stomach, Abdomen chapters"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Repertorization methods: Kent's, Boenninghausen's, Card, Computer"),
        ("Evening",  "4:00โ€“7:00 PM",  "Totality of symptoms: Complete symptom (location, sensation, modality, concomitant)"),
        ("Night Rev","9:00โ€“10:00 PM", "Solve 5 cases using repertorization"),
    ]),
    (17, "Aug 10 (Mon)", [
        ("Morning",  "6:00โ€“10:00 AM", "Boger's Repertory + Boenninghausen's TTBCM โ€“ structure and use"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Repertory PYQs โ€“ rubric finding, case repertorization, comparison questions"),
        ("Evening",  "4:00โ€“7:00 PM",  "Clinical repertories: Murphy's, Phatak's โ€“ common exam questions"),
        ("Night Rev","9:00โ€“10:00 PM", "Important rubrics by heart: Suicidal, Fear, Jealousy, Sadness, Anger"),
    ]),
]
for day_num, date_str, sessions in days_rep:
    story.append(day_header_row(day_num, date_str, "REP"))
    story.append(session_table(sessions, "REP"))
    story.append(Spacer(1, 5))

story.append(Spacer(1, 6))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 5 โ€“ PSM
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ“š PHASE 5 โ€“ PREVENTIVE & SOCIAL MEDICINE (PSM)", "PSM", "Aug 11โ€“13", "3 Days"))
story.append(Spacer(1, 4))

days_psm = [
    (18, "Aug 11 (Tue)", [
        ("Morning",  "6:00โ€“10:00 AM", "Epidemiology: Basic concepts, modes of transmission, herd immunity, prevention levels"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Communicable diseases: Malaria, TB, HIV, Polio, Measles, Cholera โ€“ control measures"),
        ("Evening",  "4:00โ€“7:00 PM",  "Immunization schedule (UIP), Cold chain, National Health Mission"),
        ("Night Rev","9:00โ€“10:00 PM", "Important definitions: Incidence, Prevalence, R0, NMR, IMR, MMR"),
    ]),
    (19, "Aug 12 (Wed)", [
        ("Morning",  "6:00โ€“10:00 AM", "Biostatistics: Data types, mean/median/mode, SD, normal distribution, significance tests"),
        ("Afternoon","11:00 AMโ€“3:00 PM","National programs: RNTCP, NVBDCP, NPCDCS, RCH, Janani Suraksha, Ayushman Bharat"),
        ("Evening",  "4:00โ€“7:00 PM",  "Environment health: Water, Air, Sanitation standards. Occupational diseases"),
        ("Night Rev","9:00โ€“10:00 PM", "PSM abbreviations and schemes โ€“ rapid fire revision"),
    ]),
    (20, "Aug 13 (Thu)", [
        ("Morning",  "6:00โ€“10:00 AM", "PSM PYQs โ€“ last 5 years, focus on MCQ patterns + essay topics"),
        ("Afternoon","11:00 AMโ€“3:00 PM","Nutrition: PEM, vitamin deficiencies, food adulteration, ICDS scheme"),
        ("Evening",  "4:00โ€“7:00 PM",  "FULL EXAM REVISION โ€“ All 5 subjects: one-page summary each"),
        ("Night Rev","9:00โ€“10:00 PM", "Mental prep + organise notes for remaining 6 days"),
    ]),
]
for day_num, date_str, sessions in days_psm:
    story.append(day_header_row(day_num, date_str, "PSM"))
    story.append(session_table(sessions, "PSM"))
    story.append(Spacer(1, 5))

story.append(Spacer(1, 6))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PHASE 6 โ€“ 6-DAY REVISION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(phase_header("๐Ÿ” 6-DAY WEAK SUBJECT INTENSIVE REVISION", "REV", "Aug 14โ€“19", "6 Days"))
story.append(Spacer(1, 4))

rev_data = [
    [Paragraph("<b>Days</b>", SMALL_HDR), Paragraph("<b>Dates</b>", SMALL_HDR),
     Paragraph("<b>Subject Focus</b>", SMALL_HDR), Paragraph("<b>What to Do</b>", SMALL_HDR)],
    [Paragraph("Day 21-22", CELL_BOLD), Paragraph("Aug 14โ€“15", CELL_NORM),
     Paragraph("Practice of Medicine", CELL_BOLD), Paragraph("All PYQs + therapeutics quick revision + write model answers", CELL_NORM)],
    [Paragraph("Day 23-24", CELL_BOLD), Paragraph("Aug 16โ€“17", CELL_NORM),
     Paragraph("Materia Medica + Organon", CELL_BOLD), Paragraph("Drug comparisons + aphorisms recall test + footnotes", CELL_NORM)],
    [Paragraph("Day 25-26", CELL_BOLD), Paragraph("Aug 18โ€“19", CELL_NORM),
     Paragraph("Repertory + PSM", CELL_BOLD), Paragraph("Case repertorization practice + PSM schemes + mock test", CELL_NORM)],
]
rev_tbl = Table(rev_data, colWidths=[2.2*cm, 2.5*cm, 5.0*cm, 7.7*cm])
rev_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0), C_REV),
    ("TEXTCOLOR",     (0,0),(-1,0), C_WHITE),
    ("GRID",          (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0),(-1,-1), 4),
    ("BOTTOMPADDING", (0,0),(-1,-1), 4),
    ("LEFTPADDING",   (0,0),(-1,-1), 5),
    ("FONTSIZE",      (0,0),(-1,-1), 7.5),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_LIGHT, C_STRIPE]),
]))
story.append(rev_tbl)
story.append(Spacer(1, 8))

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# DAILY TIMETABLE + TIPS (side by side)
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
timetable_items = [
    ("5:30 AM", "Wake up, freshen up, light exercise"),
    ("6:00 AM", "Session 1 โ€“ Major topic block (4 hrs)"),
    ("10:00 AM","Breakfast + 30-min break"),
    ("10:30 AM","Light review / make index cards"),
    ("11:00 AM","Session 2 โ€“ Major topic block (4 hrs)"),
    ("3:00 PM", "Lunch + rest (60 min)"),
    ("4:00 PM", "Session 3 โ€“ Third topic block (3 hrs)"),
    ("7:00 PM", "Dinner + walk (60 min)"),
    ("8:00 PM", "PYQ practice / Answer writing (1 hr)"),
    ("9:00 PM", "Night revision (1 hr)"),
    ("10:00 PM","Sleep โ€“ 7 hrs minimum"),
]
tips = [
    "Write 10-mark & 5-mark answers daily from Day 4",
    "Solve last 5 years PYQs for every subject",
    "MM: Use Kent's MM + Boericke; focus on BOLD symptoms",
    "Organon: Memorise ยง1, ยง9, ยง10, ยง11, ยง29, ยง70, ยง153, ยง269",
    "Repertory: Always convert clinical Sx to rubrics",
    "PSM: National programs + epidemiology defs = high yield",
    "Never skip Night Revision โ€“ 1 hr of review beats 2 hrs next day",
    "Sleep 7 hrs minimum โ€“ memory consolidation is not optional",
    "Drink water, take 5-min breaks every hour",
    "Sticky notes on wall for keynotes & aphorisms",
]

tt_data = [[Paragraph("<b>Time</b>", SMALL_HDR), Paragraph("<b>Activity</b>", SMALL_HDR)]]
for t, a in timetable_items:
    tt_data.append([Paragraph(t, CELL_BOLD), Paragraph(a, CELL_NORM)])
tt_tbl = Table(tt_data, colWidths=[2.2*cm, 5.8*cm])
tt_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0), C_HEADER),
    ("TEXTCOLOR",     (0,0),(-1,0), C_WHITE),
    ("GRID",          (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0),(-1,-1), 3),
    ("BOTTOMPADDING", (0,0),(-1,-1), 3),
    ("LEFTPADDING",   (0,0),(-1,-1), 5),
    ("FONTSIZE",      (0,0),(-1,-1), 7),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_LIGHT, C_STRIPE]),
]))

tips_header = [[Paragraph("<b>Exam Strategy Tips</b>", SMALL_HDR)]]
tips_rows = [[Paragraph(f"โ€ข {t}", TIP_STY)] for t in tips]
tips_data = tips_header + tips_rows
tips_tbl = Table(tips_data, colWidths=[8.8*cm])
tips_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,0), C_HEADER),
    ("TEXTCOLOR",     (0,0),(-1,0), C_WHITE),
    ("GRID",          (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0),(-1,-1), 3),
    ("BOTTOMPADDING", (0,0),(-1,-1), 3),
    ("LEFTPADDING",   (0,0),(-1,-1), 6),
    ("FONTSIZE",      (0,0),(-1,-1), 7),
    ("VALIGN",        (0,0),(-1,-1), "TOP"),
    ("ROWBACKGROUNDS",(0,1),(-1,-1), [C_LIGHT, C_STRIPE]),
]))

bottom_row = Table([[tt_tbl, tips_tbl]], colWidths=[8.4*cm, 9*cm])
bottom_row.setStyle(TableStyle([
    ("VALIGN", (0,0),(-1,-1), "TOP"),
    ("LEFTPADDING",  (0,0),(-1,-1), 0),
    ("RIGHTPADDING", (0,0),(-1,-1), 0),
    ("TOPPADDING",   (0,0),(-1,-1), 0),
    ("BOTTOMPADDING",(0,0),(-1,-1), 0),
    ("INNERGRID",    (0,0),(-1,-1), 0, colors.white),
    ("BOX",          (0,0),(-1,-1), 0, colors.white),
]))

section_label = Paragraph("<b>DAILY TIMETABLE  &amp;  EXAM STRATEGY TIPS</b>",
    sty("secL", fontName="Helvetica-Bold", fontSize=8.5, textColor=C_WHITE,
        alignment=TA_CENTER, leading=12))
sec_hdr = Table([[section_label]], colWidths=[17.4*cm])
sec_hdr.setStyle(TableStyle([
    ("BACKGROUND", (0,0),(-1,-1), C_HEADER),
    ("TOPPADDING", (0,0),(-1,-1), 5),
    ("BOTTOMPADDING",(0,0),(-1,-1), 5),
    ("ROUNDEDCORNERS",[4]),
]))
story.append(sec_hdr)
story.append(Spacer(1, 4))
story.append(bottom_row)
story.append(Spacer(1, 8))

# โ”€โ”€ Footer โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC")))
story.append(Spacer(1, 4))
story.append(Paragraph(
    "BHMS 4th Year  |  20-Day Study Schedule  |  Prepared by Orris Study Planner  |  July 2026  |  You've got this!",
    FOOTER_STY))

# โ”€โ”€ Build PDF โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

cd /tmp/workspace/bhms-schedule && python generate_schedule.py 2>&1

Editing File

~/bhms-schedule/generate_schedule.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/bhms-schedule/generate_schedule.py'
Running Command

cd /tmp/workspace/bhms-schedule && python generate_schedule.py 2>&1

Editing File

~/bhms-schedule/generate_schedule.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/bhms-schedule/generate_schedule.py'
Running Command

cd /tmp/workspace/bhms-schedule && python generate_schedule.py 2>&1

Running Command

ls -lh /tmp/workspace/bhms-schedule/BHMS_4th_Year_20Day_Schedule.pdf

Your printable PDF is ready! Download it here:

BHMS 4th Year 20Day Schedule

PDF Document ยท PDF


What's in the PDF:
  • Cover banner in deep navy with subject list and date range
  • Overview table - all 6 phases at a glance with colour-coded rows per subject
  • All 20 days fully detailed - each day has a colour-coded header (red for PoM, purple for MM, blue for Organon, teal for Repertory, gold for PSM) and a 4-row session table with exact times and topics
  • 6-Day Revision plan table (Aug 14-19)
  • Daily timetable (5:30 AM to 10:00 PM) side-by-side with 10 exam strategy tips
  • Footer with a motivational note
It's formatted for A4 paper - just print at 100% scale (no "fit to page"), and it'll pin cleanly on your wall. All the best for your exams! ๐Ÿ’ช

Can you give topics what to study from 3.30 to 10 pm todays

Today is July 24 (Friday) - the day BEFORE your schedule starts. So 3:30โ€“10 PM today is your prep/head-start time (6.5 hours). Perfect to use it as a warm-up for Day 1 (Practice of Medicine starts tomorrow).
Here's exactly what to do today:

๐Ÿ“… Today โ€“ July 24 | 3:30 PM to 10:00 PM

Pre-Schedule Warm-Up + PoM Head Start


๐Ÿ•ž 3:30 PM โ€“ 5:30 PM (2 hrs) | ORIENTATION & SETUP

Don't open books yet. Prepare your battlefield.
  • Print / pin your schedule on the wall
  • Gather all 5 subject books and stack them in order
  • Make a small notebook/register for each subject (5 total) for notes
  • Write the aphorism ยง1 on a sticky note and put it on your desk
  • Skim the PoM syllabus/index โ€“ just get a feel for what's coming tomorrow
  • Write down YOUR OWN list of topics you fear most in each subject

๐Ÿ•  5:30 PM โ€“ 7:30 PM (2 hrs) | PRACTICE OF MEDICINE โ€“ Cardiovascular

Head start on tomorrow's Morning session
TopicWhat to Cover
Heart FailureDefinition, types (left/right), causes, clinical features, homoeopathic remedies (Digitalis, Cactus, Naja)
HypertensionClassification (JNC), causes, complications, remedies (Nat mur, Rauwolfia, Crataegus)
IHD / AnginaStable vs unstable, symptoms, ECG changes (basic), remedies (Cactus, Spigelia, Latrodectus)
Rheumatic FeverJones criteria, strep link, carditis, remedies (Rhus tox, Ledum, Kalmia)
Focus: Read + write keynote remedies for each condition in your PoM notebook.

๐Ÿ•ข 7:30 PM โ€“ 8:00 PM (30 min) | DINNER BREAK


๐Ÿ•— 8:00 PM โ€“ 9:00 PM (1 hr) | PRACTICE OF MEDICINE โ€“ Respiratory

Start of tomorrow's Afternoon block
TopicWhat to Cover
PneumoniaTypes (lobar, broncho), causative organisms, clinical features, remedies (Bryonia, Phosphorus, Chelidonium)
AsthmaTypes, triggers, clinical features, remedies (Arsenicum, Ipecac, Sambucus, Blatta orientalis)
TuberculosisPrimary vs secondary, Ghon focus, symptoms, remedies (Tuberculinum, Stannum met, Phosphorus)

๐Ÿ•˜ 9:00 PM โ€“ 10:00 PM (1 hr) | NIGHT REVISION

  • Close all books
  • From memory, write the top 3 homoeopathic remedies for each condition you studied today
  • Check your answers against notes
  • Write any remedies you missed 3 times in your notebook

โœ… End of Day Checklist

  • Schedule printed and pinned on wall
  • 5 subject notebooks ready
  • CV system topics read with remedies noted
  • Respiratory basics covered
  • Night revision done

Tomorrow (Day 1) you'll hit the ground running - CV and Respiratory will already be familiar, so you can go deeper in the morning session. ๐Ÿ”ฅ

I got my books all ready And topics also

That's the spirit! You're already ahead. ๐Ÿ’ช
Since your books and topics are ready, skip the setup block entirely. Here's your revised plan for today:

๐Ÿ“… Today โ€“ July 24 | 3:30 PM to 10:00 PM

Pure Study - PoM Head Start (6.5 hrs)

TimeSessionTopics
3:30 โ€“ 5:30 PMPoM - Cardiovascular (2 hrs)Heart failure, Hypertension, IHD/Angina, Rheumatic fever + remedies
5:30 โ€“ 7:30 PMPoM - Respiratory (2 hrs)Pneumonia, Asthma, Bronchitis, TB, COPD + remedies
7:30 โ€“ 8:00 PMDinner breakRest, walk, no books
8:00 โ€“ 9:00 PMPoM - GIT (1 hr)Typhoid, Cholera, Peptic ulcer, Hepatitis + remedies
9:00 โ€“ 10:00 PMNight revision (1 hr)Close books - write remedies from memory for all topics studied

By tonight you'll have covered Day 1's first two sessions already. Tomorrow morning you can go deeper or move faster into the nervous system.
Start at 3:30 PM sharp. All the best! ๐Ÿ”ฅ
This is a shared conversation. Sign in to Orris to start your own chat.