Arrange all the questions according to priority vice
| Priority | Focus | Time |
|---|---|---|
| 🔴 P1 (5-star) | 6 LAQs + 19 SAQs | First |
| 🟠 P2 (3-star) | 8 LAQs + 29 SAQs | Second |
| 🟡 P3 (standard) | Remaining LAQs + SAQs | Third |
| 🟢 P4 (1-star/VSAQ) | Short notes, 2-3 mark answers | Last |
Create a study schedule PDF with time allocation per topic
mkdir -p /home/daytona/workspace/anatomy-schedule && ls /home/daytona/workspace/…
~/anatomy-schedule/create_schedule.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import PageBreak
# ── Colors ──────────────────────────────────────────────────────────────────
RED = colors.HexColor("#C0392B")
ORANGE = colors.HexColor("#E67E22")
YELLOW = colors.HexColor("#F1C40F")
GREEN = colors.HexColor("#27AE60")
DARK_BLUE = colors.HexColor("#1A3A5C")
MID_BLUE = colors.HexColor("#2980B9")
LIGHT_BG = colors.HexColor("#EBF5FB")
CREAM = colors.HexColor("#FDFEFE")
GREY_BG = colors.HexColor("#F2F3F4")
WHITE = colors.white
BLACK = colors.black
P1_BG = colors.HexColor("#FADBD8")
P2_BG = colors.HexColor("#FAE5D3")
P3_BG = colors.HexColor("#FEF9E7")
P4_BG = colors.HexColor("#EAFAF1")
# ── Document ─────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
"/home/daytona/workspace/anatomy-schedule/Abdomen_Pelvis_Study_Schedule.pdf",
pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Abdomen & Pelvis Anatomy Study Schedule",
author="MBBSInsider"
)
styles = getSampleStyleSheet()
# Custom styles
def make_style(name, parent='Normal', **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
return s
title_style = make_style('TitleStyle', fontSize=22, textColor=WHITE, alignment=TA_CENTER, fontName='Helvetica-Bold', leading=28)
sub_style = make_style('SubStyle', fontSize=11, textColor=WHITE, alignment=TA_CENTER, fontName='Helvetica', leading=16)
h1_style = make_style('H1Style', fontSize=14, textColor=WHITE, alignment=TA_LEFT, fontName='Helvetica-Bold', leading=20)
h2_style = make_style('H2Style', fontSize=11, textColor=DARK_BLUE, alignment=TA_LEFT, fontName='Helvetica-Bold', leading=16)
body_style = make_style('BodyStyle', fontSize=9, textColor=BLACK, alignment=TA_LEFT, fontName='Helvetica', leading=13)
small_style = make_style('SmallStyle', fontSize=8, textColor=BLACK, alignment=TA_LEFT, fontName='Helvetica', leading=11)
center_style = make_style('CenterStyle', fontSize=9, textColor=BLACK, alignment=TA_CENTER, fontName='Helvetica', leading=13)
bold_center = make_style('BoldCenter', fontSize=9, textColor=WHITE, alignment=TA_CENTER, fontName='Helvetica-Bold', leading=13)
tbl_hdr_style = make_style('TblHdr', fontSize=9, textColor=WHITE, alignment=TA_CENTER, fontName='Helvetica-Bold', leading=12)
note_style = make_style('NoteStyle', fontSize=8, textColor=colors.HexColor("#5D6D7E"), alignment=TA_LEFT, fontName='Helvetica-Oblique', leading=12)
tag_style = make_style('TagStyle', fontSize=8, textColor=WHITE, alignment=TA_CENTER, fontName='Helvetica-Bold', leading=11)
story = []
# ═══════════════════════════════════════════════════════════════
# PAGE 1 – COVER / OVERVIEW
# ═══════════════════════════════════════════════════════════════
# Title banner
title_table = Table(
[[Paragraph("ABDOMEN & PELVIS ANATOMY", title_style)],
[Paragraph("14-Day Priority-Based Study Schedule", sub_style)],
[Paragraph("Based on MBBSInsider + TMs Anatomy 2nd Ed. | Previous 15 Years Analysis", note_style)]],
colWidths=[18*cm]
)
title_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,1), DARK_BLUE),
('BACKGROUND', (0,2), (-1,2), MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING',(0,0),(-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 14),
('RIGHTPADDING',(0,0), (-1,-1), 14),
('ROUNDEDCORNERS', [8]),
]))
story.append(title_table)
story.append(Spacer(1, 0.4*cm))
# Legend
legend_data = [
[Paragraph("🔴 PRIORITY 1", make_style('l1', fontSize=9, textColor=colors.HexColor("#C0392B"), fontName='Helvetica-Bold')),
Paragraph("5-star / Most Repeated – Do FIRST", body_style),
Paragraph("🟠 PRIORITY 2", make_style('l2', fontSize=9, textColor=colors.HexColor("#E67E22"), fontName='Helvetica-Bold')),
Paragraph("3-star / Frequently Asked", body_style)],
[Paragraph("🟡 PRIORITY 3", make_style('l3', fontSize=9, textColor=colors.HexColor("#D4AC0D"), fontName='Helvetica-Bold')),
Paragraph("Standard topics – Previous papers", body_style),
Paragraph("🟢 PRIORITY 4", make_style('l4', fontSize=9, textColor=colors.HexColor("#27AE60"), fontName='Helvetica-Bold')),
Paragraph("Low priority – Short notes / VSAQs", body_style)],
]
legend_tbl = Table(legend_data, colWidths=[3.5*cm, 5.5*cm, 3.5*cm, 5.5*cm])
legend_tbl.setStyle(TableStyle([
('BOX', (0,0), (-1,-1), 0.5, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor("#AED6F1")),
('BACKGROUND', (0,0), (-1,-1), LIGHT_BG),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING',(0,0),(-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
]))
story.append(legend_tbl)
story.append(Spacer(1, 0.3*cm))
# ── Time Overview Table ────────────────────────────────────────
story.append(Paragraph("Overall Time Allocation at a Glance", h2_style))
story.append(Spacer(1, 0.2*cm))
overview_header = [
Paragraph("Priority", tbl_hdr_style),
Paragraph("Focus Area", tbl_hdr_style),
Paragraph("Days", tbl_hdr_style),
Paragraph("Hours/Day", tbl_hdr_style),
Paragraph("Total Hours", tbl_hdr_style),
Paragraph("% of Schedule", tbl_hdr_style),
]
overview_rows = [
["🔴 P1 (5-star)", "Stomach, Liver, Portal Vein, Rectum, Anal Canal, Uterus\n+ High-yield SAQs", "Days 1-4", "6-7 hrs", "~26 hrs", "~37%"],
["🟠 P2 (3-star)", "Rectus Sheath, Inguinal Canal, Pancreas, Duodenum,\nKidney, Biliary App., Testis, Vermiform Appendix + SAQs", "Days 5-8", "5-6 hrs", "~22 hrs", "~31%"],
["🟡 P3 (standard)", "Remaining LAQs: Spleen, Urinary Bladder, Colon,\nPelvis structures + Standard SAQs", "Days 9-11", "5 hrs", "~15 hrs", "~21%"],
["🟢 P4 (low)", "VSAQs, 2-3 mark short notes, Revision of definitions", "Days 12-13", "4 hrs", "~8 hrs", "~11%"],
["🔄 REVISION", "Full syllabus revision + Mock Q&A", "Day 14", "6 hrs", "6 hrs", "—"],
]
ov_col_w = [2.6*cm, 6.8*cm, 2.2*cm, 2.2*cm, 2.2*cm, 2*cm]
ov_data = [overview_header] + [[Paragraph(str(c), small_style) for c in row] for row in overview_rows]
ov_table = Table(ov_data, colWidths=ov_col_w, repeatRows=1)
ov_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('BACKGROUND', (0,1), (-1,1), P1_BG),
('BACKGROUND', (0,2), (-1,2), P2_BG),
('BACKGROUND', (0,3), (-1,3), P3_BG),
('BACKGROUND', (0,4), (-1,4), P4_BG),
('BACKGROUND', (0,5), (-1,5), colors.HexColor("#EBF5FB")),
('BOX', (0,0), (-1,-1), 0.8, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor("#AED6F1")),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING',(0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
('ALIGN', (2,0), (-1,-1), 'CENTER'),
]))
story.append(ov_table)
story.append(Spacer(1, 0.4*cm))
# ── Daily Hour Split ──────────────────────────────────────────
story.append(Paragraph("Recommended Daily Study Split (6-hour day example)", h2_style))
story.append(Spacer(1, 0.15*cm))
daily_data = [
[Paragraph("Session", tbl_hdr_style), Paragraph("Time Slot", tbl_hdr_style),
Paragraph("Duration", tbl_hdr_style), Paragraph("Activity", tbl_hdr_style)],
["Morning Session 1", "6:00 AM – 8:30 AM", "2.5 hrs", "Learn NEW LAQ topic (read + write key points)"],
["Morning Session 2", "9:00 AM – 10:30 AM", "1.5 hrs", "Short notes + SAQs for same topic"],
["Afternoon Session", "2:00 PM – 3:30 PM", "1.5 hrs", "Previous year Q practice / diagram drawing"],
["Evening Revision", "7:00 PM – 7:30 PM", "30 min", "Rapid recall – headings only, no book"],
["Night Review", "9:30 PM – 10:00 PM", "30 min", "Quick flip through today's written notes"],
]
daily_col_w = [3.5*cm, 3.8*cm, 2.2*cm, 8.5*cm]
daily_table = Table(
[[Paragraph(str(c), tbl_hdr_style) if i == 0 else Paragraph(str(c), small_style) for i, c in enumerate(row)] for row in daily_data],
colWidths=daily_col_w, repeatRows=1
)
daily_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), MID_BLUE),
('ROWBACKGROUNDS',(0,1),(-1,-1), [CREAM, GREY_BG]),
('BOX', (0,0), (-1,-1), 0.8, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor("#AED6F1")),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING',(0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(daily_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Tip: Use the Pomodoro technique – 50 min study + 10 min break. Draw every diagram at least once. "
"Write answers to at least 1 LAQ per day to build exam speed.",
note_style
))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════
# PAGE 2 – DAYS 1-7 (Priority 1 & 2)
# ═══════════════════════════════════════════════════════════════
def day_header(day_num, title, priority_label, priority_color, hrs):
data = [[
Paragraph(f"DAY {day_num}", make_style(f'dh{day_num}', fontSize=13, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph(title, make_style(f'dt{day_num}', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold')),
Paragraph(f"{priority_label} | {hrs}", make_style(f'dp{day_num}', fontSize=9, textColor=WHITE, fontName='Helvetica', alignment=TA_RIGHT)),
]]
t = Table(data, colWidths=[2.5*cm, 11*cm, 4.5*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), priority_color),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
return t
def session_table(rows, bg=CREAM):
"""rows = list of (session, time, mins, topics, tip)"""
header = [
Paragraph("Session", tbl_hdr_style),
Paragraph("Time", tbl_hdr_style),
Paragraph("Mins", tbl_hdr_style),
Paragraph("Topics to Cover", tbl_hdr_style),
Paragraph("Tip / Output", tbl_hdr_style),
]
data = [header]
for r in rows:
data.append([Paragraph(str(c), small_style) for c in r])
col_w = [2.8*cm, 2.8*cm, 1.2*cm, 7.0*cm, 4.2*cm]
t = Table(data, colWidths=col_w, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('ROWBACKGROUNDS',(0,1),(-1,-1), [CREAM, GREY_BG]),
('BOX', (0,0), (-1,-1), 0.6, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.HexColor("#AED6F1")),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 4),
]))
return t
# ── DAY 1 ────────────────────────────────────────────────────
story.append(day_header(1, "STOMACH (P1 - 5 Stars)", "🔴 Priority 1", RED, "6.5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:30 AM", "150", "Parts & morphology, External features, Relations (anterior/posterior), Bed of stomach", "Sketch stomach + label all borders"],
["Morning 2", "9:00–10:30 AM", "90", "Blood supply (arteries+veins), Lymphatic drainage, Nerve supply (vagal+sympathetic)", "Draw blood supply diagram"],
["Afternoon", "2:00–3:30 PM", "90", "Interior of stomach, Applied anatomy: peptic ulcer, volvulus, gastrectomy, referred pain", "Write 1 full LAQ answer"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Stomach bed, Greater omentum, Lesser omentum, Morrison's pouch", "Write headings from memory"],
["Night", "9:30–10:00 PM", "30", "Rapid recall: all relations, blood supply branches", "Close book recall"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 2 ────────────────────────────────────────────────────
story.append(day_header(2, "LIVER + PORTAL VEIN (P1 - 5 Stars)", "🔴 Priority 1", RED, "7 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:30 AM", "150", "Liver: location, external features, surfaces, borders, lobes (Riedel's lobe), ligaments, hepatic segments (Couinaud)", "Draw liver surfaces + label segments"],
["Morning 2", "9:00–10:30 AM", "90", "Liver: vascular supply (hepatic artery, portal vein, hepatic veins), bare area, surgical importance", "Note: bare area = surgical importance ⭐"],
["Afternoon", "2:00–3:30 PM", "90", "Portal vein: formation, course, tributaries, portocaval anastomosis sites (5), portal hypertension, caput medusae", "Draw portocaval anastomosis diagram"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Hepatoduodenal ligament, Calot's triangle, Epiploic foramen, Referred pain of gallbladder", "Write in point format"],
["Night", "9:30–10:00 PM", "30", "Revision: liver surfaces + portal vein tributaries", "Rapid headings recall"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 3 ────────────────────────────────────────────────────
story.append(day_header(3, "RECTUM + ANAL CANAL (P1 - 5 Stars)", "🔴 Priority 1", RED, "6.5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:30 AM", "150", "Rectum: extent, external features, course & direction, flexures (3 lateral + 2 AP), relations (male/female separately)", "Draw sagittal section male pelvis"],
["Morning 2", "9:00–10:30 AM", "90", "Rectum: mucosal folds (Houston valves), vascular supply, lymphatics, clinical anatomy (cancer spread)", "Write blood supply in tabular form"],
["Afternoon", "2:00–3:30 PM", "90", "Anal canal: extent, direction, interior (columns of Morgagni, pectinate line, white line), musculature (sphincters), surgical spaces, blood supply, nerve supply", "Pectinate line – differences above/below"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Pectinate line, Ischiorectal fossa, Perineal body, Perineal membrane", "Short note format"],
["Night", "9:30–10:00 PM", "30", "Recall: anal canal interior + sphincter complex", "Draw from memory"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 4 ────────────────────────────────────────────────────
story.append(day_header(4, "UTERUS + HIGH-YIELD P1 SAQs (P1 - 5 Stars)", "🔴 Priority 1", RED, "6.5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:30 AM", "150", "Uterus: size/shape, normal position (anteversion + anteflexion), parts, relations (ant/post/lateral), peritoneal relations, pouches", "Draw uterus in situ"],
["Morning 2", "9:00–10:30 AM", "90", "Uterus: ligaments & supports (4 main supports – Mackenrodt's, uterosacral, round, broad), vascular supply, uterine prolapse", "Supports table: ligament + function"],
["Afternoon", "2:00–3:30 PM", "90", "SAQs P1 (5-star): Hesselbach's triangle, Spermatic cord, Direct vs. indirect inguinal hernia, Greater omentum, Perineal body, Ischiorectal fossa, Lobes of prostate, Trigone of bladder", "Write each as a short note (~half page)"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Fallopian tube parts, Inguinal ligament modifications, Surgical bare area of liver", "Bullet point revision"],
["Night", "9:30–10:00 PM", "30", "Uterus rapid recall: supports + blood supply", "Without notes"],
]))
story.append(PageBreak())
# ── DAY 5 ────────────────────────────────────────────────────
story.append(day_header(5, "RECTUS SHEATH + INGUINAL CANAL (P2 - 3 Stars)", "🟠 Priority 2", ORANGE, "6 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:00 AM", "120", "Rectus sheath: formation above/below arcuate line, contents (6), blood supply (superior + inferior epigastric), nerve supply", "Draw cross-section above + below arcuate line"],
["Morning 2", "9:00–10:30 AM", "90", "Inguinal canal: boundaries (anterior/posterior/roof/floor), contents (male vs female), mechanisms (3), inguinal hernia types", "Table: direct vs indirect hernia"],
["Afternoon", "2:00–3:30 PM", "90", "SAQs: Hesselbach's triangle, Conjoint tendon, Transpyloric plane, Deep & superficial inguinal rings, Cremasteric reflex, Fascia transversalis", "Short notes for each"],
["Evening", "7:00–7:30 PM", "30", "P2 SAQs: Pampiniform plexus, Layers of scrotum, Descent of testis", "Bullet points"],
["Night", "9:30–10:00 PM", "30", "Recall: inguinal canal boundaries + contents", "Without notes"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 6 ────────────────────────────────────────────────────
story.append(day_header(6, "PANCREAS + EXTRA-HEPATIC BILIARY APPARATUS (P2 - 3 Stars)", "🟠 Priority 2", ORANGE, "6 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:00 AM", "120", "Pancreas: external features, parts (head/neck/body/tail), relations of each part, ducts (main + accessory), vascular supply", "Draw pancreas + ducts in situ"],
["Morning 2", "9:00–10:30 AM", "90", "Development of pancreas (annular pancreas), Histology of pancreas (islets of Langerhans); Extra-hepatic biliary apparatus: gallbladder (parts, relations, Hartmann's pouch), ducts, vascular supply, nerve supply", "Write applied anatomy of gallbladder"],
["Afternoon", "2:00–3:30 PM", "90", "SAQs: Calot's triangle, Murphy's sign, Courvoisier's law, Parts/relations of gallbladder, Referred pain of gallbladder, Common bile duct, Coeliac trunk", "Clinical correlations focus"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Lesser omentum, Epiploic foramen, Ligament of Treitz", "Bullet revision"],
["Night", "9:30–10:00 PM", "30", "Recall: pancreatic duct openings + biliary tree", "Draw from memory"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 7 ────────────────────────────────────────────────────
story.append(day_header(7, "DUODENUM + VERMIFORM APPENDIX + KIDNEY (P2 - 3 Stars)", "🟠 Priority 2", ORANGE, "6 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:00 AM", "120", "Duodenum: length (25 cm), C-shape, 4 parts – location + relations of each part, openings (major & minor duodenal papillae), vascular supply, histology", "Draw duodenum + head of pancreas"],
["Morning 2", "9:00–10:00 AM", "60", "Vermiform appendix: external features, 6 positions (retrocaecal most common), peritoneal relations, McBurney's point, blood supply, nerve supply, applied (appendicitis)", "Positions of appendix diagram"],
["Afternoon", "2:00–3:30 PM", "90", "Kidney: external features, location (left higher than right), relations (anterior + posterior separately), coverings (3 layers), vascular supply (segmental + variation), development (horseshoe), anomalies", "Draw posterior relations of kidney"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Suprarenal gland, Ureter (course + constrictions), Superior mesenteric artery, Inferior mesenteric artery, Abdominal aorta branches", "Quick notes"],
["Night", "9:30–10:00 PM", "30", "Recall: kidney relations + vascular supply", "Table format recall"],
]))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════
# PAGE 3 – DAYS 8-11 (Priority 2 remainder & Priority 3)
# ═══════════════════════════════════════════════════════════════
# ── DAY 8 ────────────────────────────────────────────────────
story.append(day_header(8, "TESTIS + P2 SAQs COMPLETION (P2 - 3 Stars)", "🟠 Priority 2", ORANGE, "5.5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:00 AM", "120", "Testis: external features, coverings (7 layers – processus vaginalis), internal structure (seminiferous tubules, rete testis), vascular supply (testicular artery), varicocele, cryptorchidism, ectopic testis", "Draw cross-section of testis"],
["Morning 2", "9:00–10:30 AM", "90", "P2 SAQs: Pelvic diaphragm (muscles, nerve supply), Urogenital triangle, Perineal membrane, O,I,N,A of psoas major, Spleen (SAQ level – features + relations + applied)", "Write each as a 5-mark short note"],
["Afternoon", "2:00–3:00 PM", "60", "SAQs: Morrison's pouch, Rectouterine pouch, Greater omentum, Mesentery, Marginal artery of Drummond", "Applied correlations"],
["Evening", "7:00–7:30 PM", "30", "P2 SAQ: Portocaval anastomosis ⭐ (most starred in prev. papers)", "Full short note"],
["Night", "9:30–10:00 PM", "30", "Rapid recall: Day 5–8 topics", "Headings only"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 9 ────────────────────────────────────────────────────
story.append(day_header(9, "SPLEEN + URINARY BLADDER + COLON SEGMENTS (P3)", "🟡 Priority 3", colors.HexColor("#D4AC0D"), "5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–7:30 AM", "90", "Spleen: external features (notches, hilum), relations (gastrosplenic, splenorenal ligaments), blood supply, rupture, accessory spleen, splenomegaly", "Draw spleen with ligaments"],
["Morning 2", "8:00–9:30 AM", "90", "Urinary bladder: external features, relations (male/female), supports (detrusor, pubovesical ligaments), interior (trigone, uvula), blood supply, nerve supply, applied (cystoscopy, cystitis)", "Draw trigone of bladder"],
["Afternoon", "2:00–3:30 PM", "90", "Colon segments: Cecum, Ascending, Transverse, Descending, Sigmoid – parts, relations, blood supply, clinical points; Jejunum vs ileum differences", "Make a comparison table"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Linea alba, Anterior abdominal wall layers, Rectus sheath (short note)", "Bullet points"],
["Night", "9:30–10:00 PM", "30", "Recall: urinary bladder supports + trigone", "Without notes"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 10 ────────────────────────────────────────────────────
story.append(day_header(10, "PELVIS STRUCTURES – OVARY, UTERINE TUBE, PROSTATE (P3)", "🟡 Priority 3", colors.HexColor("#D4AC0D"), "5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–7:30 AM", "90", "Ovary: external features, relations, ligaments (mesovarium, ovarian ligament, suspensory), blood supply, nerve supply, applied (ovarian cyst, ectopic ovulation)", "Sketch ovary in situ"],
["Morning 2", "8:00–9:30 AM", "90", "Uterine tube/Fallopian tube: parts (interstitial, isthmus, ampulla, infundibulum), peritoneal relations, blood supply, ectopic pregnancy; Prostate: lobes (5 McNeill zones + 4 anatomical lobes), relations, blood supply, applied (BPH, cancer spread)", "Ectopic pregnancy sites table"],
["Afternoon", "2:00–3:30 PM", "90", "SAQs P3: Rectouterine pouch (Douglas), Broad ligament, Internal iliac artery branches, Pelvic fascia, Uterine ligaments, Ischiorectal fossa, Pelvic diaphragm", "Short note each"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Ureter course + 3 constrictions, Suprarenal gland zones + hormones", "Tabular notes"],
["Night", "9:30–10:00 PM", "30", "Recall: ovary + uterine tube relations", "Quick sketch"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 11 ────────────────────────────────────────────────────
story.append(day_header(11, "HISTOLOGY + EMBRYOLOGY + REMAINING SAQs (P3)", "🟡 Priority 3", colors.HexColor("#D4AC0D"), "5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–7:30 AM", "90", "Histology: Duodenum ⭐, Liver ⭐, Pancreas (islets vs. acini), Adrenal gland ⭐ (cortex zones – GFR rule)", "Draw labeled histology diagrams"],
["Morning 2", "8:00–9:30 AM", "90", "Embryology: Derivatives of midgut ⭐, Development of diaphragm + anomalies (CDH – Bochdalek/Morgagni), Exomphalos/Omphalocele, Meckel's diverticulum (Rule of 2s)", "Rule of 2s for Meckel's"],
["Afternoon", "2:00–3:30 PM", "90", "Remaining SAQs: Oesophageal features & relations, IVC tributaries + formation, Superior mesenteric artery branches, Inferior mesenteric artery, Coeliac trunk branches, Abdominal aorta", "Draw vascular tree diagram"],
["Evening", "7:00–7:30 PM", "30", "SAQs: Exomphalos, Kupffer cells, Peritoneum, Lesser sac, Appendix, Derivatives of midgut", "Bullet notes"],
["Night", "9:30–10:00 PM", "30", "Recall: histology features of each organ", "Labeled sketches"],
]))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════
# PAGE 4 – DAYS 12-14 + QUICK REFERENCE TABLE
# ═══════════════════════════════════════════════════════════════
# ── DAY 12 ────────────────────────────────────────────────────
story.append(day_header(12, "VSAQs + LOW-PRIORITY SHORT NOTES (P4)", "🟢 Priority 4", GREEN, "4 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning", "6:00–8:00 AM", "120", "VSAQs (2-3 marks each): Histology of duodenum ⭐, Histology of adrenal gland ⭐, Derivatives of midgut ⭐, Kupffer cells, Peritoneum, Greater omentum, Lesser sac, Appendix", "30-word definitions for each"],
["Afternoon", "2:00–3:00 PM", "60", "Short notes: Caput medusae, Portal hypertension, Pectinate line, Meckel's diverticulum, Linea alba, Umbilicus, Clinical significance of Scarpa's fascia", "Half-page each"],
["Evening", "7:00–7:30 PM", "30", "VSAQs Pelvis: Perineal body ⭐, Perineal tear, Broad ligament, Pelvic diaphragm, Rectouterine pouch, Internal iliac artery, Supports of uterus", "Bullet notes"],
["Night", "9:30–10:00 PM", "30", "Rapid revision: all P4 topics", "Headings only"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 13 ────────────────────────────────────────────────────
story.append(day_header(13, "SELECTIVE REVISION + WEAK AREAS (P1 + P2)", "🔄 Revision", MID_BLUE, "5 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–8:00 AM", "120", "Revise P1 LAQs: Stomach + Liver + Portal Vein (written summaries, key diagrams only)", "Write brief answer outlines"],
["Morning 2", "9:00–10:30 AM", "90", "Revise P1 LAQs: Rectum + Anal Canal + Uterus (write key subtopics list)", "Table of key points per topic"],
["Afternoon", "2:00–3:30 PM", "90", "Revise P2 LAQs: Rectus Sheath, Inguinal Canal, Pancreas, Duodenum, Kidney – rapid review of key facts", "1-page summary per organ"],
["Evening", "7:00–7:30 PM", "30", "High-yield SAQs: Portocaval anastomosis, Hesselbach's triangle, Spermatic cord, Calot's triangle", "Quick written notes"],
["Night", "9:30–10:00 PM", "30", "Identify remaining gaps – make a 'weak topics' list for Day 14", "List on paper"],
]))
story.append(Spacer(1, 0.3*cm))
# ── DAY 14 ────────────────────────────────────────────────────
story.append(day_header(14, "FULL REVISION + MOCK Q&A (All Priorities)", "🔄 Final Revision", DARK_BLUE, "6 hrs"))
story.append(Spacer(1, 0.15*cm))
story.append(session_table([
["Morning 1", "6:00–7:30 AM", "90", "Attempt 2 full LAQ answers (timed – 20 min each): Pick from P1 list randomly. Self-assess: structure, content, diagrams", "Check against standard answer"],
["Morning 2", "8:00–9:30 AM", "90", "Attempt 4 SAQ answers (10 min each) from P1 + P2 list. Practice diagram drawing (portal vein, inguinal canal, anal canal)", "Time yourself strictly"],
["Afternoon", "2:00–3:00 PM", "60", "Rapid fire: 15 VSAQ definitions out loud / written (2 min each)", "Cover the book, recall only"],
["Afternoon 2","3:00–4:00 PM", "60", "Revise 'weak topics list' from Day 13", "Focus only on gaps"],
["Evening", "7:00–8:00 PM", "60", "Final scan: Most Repeated Topics list (MBBSInsider) – mentally tick off each one", "You should know all 12 MR topics"],
["Night", "9:30–10:00 PM", "30", "Rest – no new learning. Recall 5 key diagrams mentally", "Sleep well!"],
]))
story.append(Spacer(1, 0.4*cm))
# ── QUICK REFERENCE: Time per topic ──────────────────────────
story.append(Paragraph("Quick Reference – Time Allocation per Major Topic", h2_style))
story.append(Spacer(1, 0.2*cm))
qr_header = [
Paragraph("Topic", tbl_hdr_style),
Paragraph("Priority", tbl_hdr_style),
Paragraph("Day", tbl_hdr_style),
Paragraph("Approx. Time", tbl_hdr_style),
Paragraph("Exam Weightage", tbl_hdr_style),
]
def pr(text, col=BLACK):
return Paragraph(text, ParagraphStyle('qr', fontSize=8, textColor=col, fontName='Helvetica', leading=11))
qr_rows = [
["Stomach", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 1", "~4 hrs", "LAQ – 10 marks"],
["Liver", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 2", "~3.5 hrs", "LAQ – 10 marks"],
["Portal Vein + Portocaval Anastomosis", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 2", "~2.5 hrs", "LAQ / SAQ"],
["Rectum", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 3", "~3 hrs", "LAQ – 10 marks"],
["Anal Canal", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 3", "~2.5 hrs", "LAQ – 10 marks"],
["Uterus", "🔴 P1 (⭐⭐⭐⭐⭐)", "Day 4", "~3.5 hrs", "LAQ – 10 marks"],
["Rectus Sheath", "🟠 P2 (⭐⭐⭐)", "Day 5", "~2.5 hrs", "LAQ – 10 marks"],
["Inguinal Canal", "🟠 P2 (⭐⭐⭐)", "Day 5", "~2.5 hrs", "LAQ – 10 marks"],
["Pancreas", "🟠 P2 (⭐⭐⭐)", "Day 6", "~2.5 hrs", "LAQ – 10 marks"],
["Extra-Hepatic Biliary Apparatus", "🟠 P2 (⭐⭐⭐)", "Day 6", "~2 hrs", "LAQ – 10 marks"],
["Duodenum", "🟠 P2 (⭐⭐⭐)", "Day 7", "~2 hrs", "LAQ – 10 marks"],
["Vermiform Appendix", "🟠 P2 (⭐⭐⭐)", "Day 7", "~1 hr", "LAQ / SAQ"],
["Kidney + Suprarenal", "🟠 P2 (⭐⭐⭐)", "Day 7", "~2 hrs", "LAQ – 10 marks"],
["Testis", "🟠 P2 (⭐⭐⭐)", "Day 8", "~2 hrs", "LAQ"],
["Spleen", "🟡 P3", "Day 9", "~1.5 hrs", "SAQ – 5 marks"],
["Urinary Bladder", "🟡 P3", "Day 9", "~1.5 hrs", "LAQ / SAQ"],
["Colon Segments", "🟡 P3", "Day 9", "~1.5 hrs", "SAQ – 5 marks"],
["Ovary + Uterine Tube", "🟡 P3", "Day 10", "~2 hrs", "SAQ"],
["Prostate", "🟡 P3", "Day 10", "~1 hr", "SAQ / LAQ"],
["Histology (Liver, Duodenum, Pancreas, Adrenal)", "🟡 P3", "Day 11", "~1.5 hrs", "SAQ / VSAQ"],
["Embryology (Midgut, Diaphragm)", "🟡 P3", "Day 11", "~1.5 hrs", "SAQ / VSAQ"],
["VSAQs + Short Notes", "🟢 P4", "Day 12", "~3 hrs", "2-3 marks each"],
]
qr_data = [qr_header] + [[pr(c) for c in row] for row in qr_rows]
qr_col_w = [5.5*cm, 3.0*cm, 1.8*cm, 2.5*cm, 5.2*cm]
qr_table = Table(qr_data, colWidths=qr_col_w, repeatRows=1)
row_colors = []
for i, row in enumerate(qr_rows):
if "P1" in row[1]:
row_colors.append(('BACKGROUND', (0, i+1), (-1, i+1), P1_BG))
elif "P2" in row[1]:
row_colors.append(('BACKGROUND', (0, i+1), (-1, i+1), P2_BG))
elif "P3" in row[1]:
row_colors.append(('BACKGROUND', (0, i+1), (-1, i+1), P3_BG))
else:
row_colors.append(('BACKGROUND', (0, i+1), (-1, i+1), P4_BG))
qr_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('BOX', (0,0), (-1,-1), 0.8, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.HexColor("#AED6F1")),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 4),
] + row_colors))
story.append(qr_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Note: Time allocations are approximate for a 6-7 hour study day. Adjust based on your existing knowledge. "
"Always prioritize writing practice over passive reading - anatomy exams reward structured written answers and clear diagrams.",
note_style
))
# ── BUILD ─────────────────────────────────────────────────────
doc.build(story)
print("PDF created successfully!")
cd /home/daytona/workspace/anatomy-schedule && python create_schedule.py
ls -lh /home/daytona/workspace/anatomy-schedule/
Abdomen Pelvis Study Schedule
PDF Document · PDF
| Days | Focus | Priority |
|---|---|---|
| 1-4 | Stomach, Liver, Portal Vein, Rectum, Anal Canal, Uterus | 🔴 P1 |
| 5-8 | Rectus Sheath, Inguinal Canal, Pancreas, Biliary App., Duodenum, Kidney, Testis | 🟠 P2 |
| 9-11 | Spleen, Bladder, Colon, Ovary, Histology, Embryology | 🟡 P3 |
| 12 | VSAQs + Short Notes | 🟢 P4 |
| 13 | Selective revision + weak areas | 🔄 |
| 14 | Full mock Q&A + final revision | 🔄 |