i am reading steupup medicine and not irfan masood and give me uhs based past mcqs and practice nased daily mcqs for better understanding and to pass the upcoming exam. i want to use pomodoro technique and can not study more than 8 hours a day. i do not have internet connection and limited access to internet so can not consult you every time. i am using osmosis vedios for better understanding too. Give me timetable and resources according to it

Asking for Preferences
Asking for Preferences
Here is your full study plan. Everything below is designed for offline use - no internet needed once you read this.

UHS Final Year Block Exam Study Plan

Anatomy + Physiology + Biochemistry | 4 Weeks | Starting July 14, 2026


Your Study Framework

Books: Snell (Anatomy), Ganong/Guyton (Physiology), Harper/Lippincott (Biochemistry) MCQ Practice: Past UHS papers, Stepup to Medicine logic applied to basic sciences Videos: Osmosis (watch offline after downloading - use for concepts you read that day) Technique: Pomodoro - 25 min study + 5 min break = 1 cycle. 4 cycles = 1 long block (30 min break after)

Pomodoro Daily Schedule (7:00 AM - 10:30 PM)

Max 8 hours of actual study = 16 Pomodoros per day (25 min each = 400 min + breaks)
TimeActivity
7:00 - 7:25Pomodoro 1
7:25 - 7:30Break
7:30 - 7:55Pomodoro 2
7:55 - 8:00Break
8:00 - 8:25Pomodoro 3
8:25 - 8:30Break
8:30 - 8:55Pomodoro 4
8:55 - 9:25Long break (30 min)
9:25 - 10:50Block 2 (4 more Pomodoros)
10:50 - 11:20Long break (lunch)
11:20 - 12:45Block 3 (4 Pomodoros)
12:45 - 1:15Long break (prayer/rest)
1:15 - 2:40Block 4 (4 Pomodoros)
2:40 - 3:30Long break (Asr + rest)
3:30 - 4:55Block 5 - MCQ Practice only (4 Pomodoros)
4:55 - 5:30Evening break
5:30 - 6:30Osmosis video review + notes (1 hr)
6:30 - 7:00Maghrib + dinner break
7:00 - 8:00Daily MCQ revision + mistake review
8:00 - 8:30Next day planning + active recall
Total active study: ~8 hrs | Osmosis video: 1 hr (not counted as hard study)

4-Week Subject Allocation

WEEK 1 (July 14-20): ANATOMY Focus

DayTopicUHS High-Yield Focus
Mon 14Upper Limb - Bones, joints, musclesBrachial plexus injuries, rotator cuff, carpal tunnel
Tue 15Upper Limb - Nerves & vesselsSaturday night palsy, claw hand, wrist drop, ape hand
Wed 16Lower LimbFemoral triangle, sciatic nerve, foot drop, compartments
Thu 17Thorax - Heart, lungs, mediastinumSurface marking, heart borders, lung roots, pleura
Fri 18Abdomen - Foregut, midgut, hindgutInguinal canal, hernia types, portal-systemic
Sat 19Head & NeckCranial nerves, parotid, thyroid, triangle of neck
Sun 20Neuroanatomy + RevisionSpinal cord tracts, dermatomes, CSF pathways
Anatomy MCQ tip: UHS loves nerve injury scenarios. For every nerve - know the injury site, clinical sign, and muscle affected.

WEEK 2 (July 21-27): PHYSIOLOGY Focus

DayTopicUHS High-Yield Focus
Mon 21Cell physiology, membrane transportNernst equation, resting membrane potential, action potential
Tue 22CVS - Cardiac cycle, ECGJVP waves, Frank-Starling, heart sounds, Starling forces
Wed 23CVS - Circulation + controlBaroreceptors, autoregulation, shock types
Thu 24Respiratory physiologyV/Q ratio, compliance, spirometry values, hypoxia types
Fri 25Renal physiologyGFR, Tm, countercurrent, diuretic sites, acidosis/alkalosis
Sat 26GI + EndocrineGastric acid regulation, insulin/glucagon, thyroid physiology
Sun 27Neuromuscular + RevisionNMJ, muscle types, reflexes, ANS receptors
Physiology MCQ tip: UHS asks calculations - know normal values (GFR 125ml/min, FEV1/FVC >0.8, pH 7.35-7.45, etc.)

WEEK 3 (July 28 - Aug 3): BIOCHEMISTRY Focus

DayTopicUHS High-Yield Focus
Mon 28Carbohydrate metabolismGlycolysis, TCA, glycogen storage diseases, HMP shunt
Tue 29Lipid metabolismBeta-oxidation, ketone bodies, lipoprotein types, familial hypercholesterolaemia
Wed 30Protein metabolism + enzymesUrea cycle, amino acid disorders (PKU, alkaptonuria), enzyme kinetics
Thu 31Vitamins + MineralsFat/water soluble vitamins, deficiency diseases, coenzyme functions
Fri 1 AugMolecular biology + geneticsDNA replication, transcription, translation, mutations, PCR
Sat 2Acid-base + BuffersHenderson-Hasselbalch, compensation, ABG interpretation
Sun 3Inborn errors + Integration revisionAll metabolic disorders summary
Biochemistry MCQ tip: UHS loves vitamin deficiency + enzyme defect questions. Make a one-page table of each.

WEEK 4 (Aug 4-10): REVISION + MCQ BLITZ

DayFocus
Mon 4Anatomy full revision (high-yield notes only)
Tue 5Physiology full revision
Wed 6Biochemistry full revision
Thu 7Mixed MCQ paper (past UHS) - time yourself
Fri 8Weak areas from Thursday MCQ paper
Sat 9Full mock exam (3 hrs, all 3 subjects)
Sun 10Final light revision, rest, confidence building

Daily MCQ Practice Strategy (UHS-Style)

Each evening do 20 MCQs in this format:
Step 1 - Attempt (10 min): Do 20 MCQs without looking at answers Step 2 - Review (20 min): Check answers. For each wrong answer, write WHY it was wrong in one sentence Step 3 - Flag (5 min): Mark topics to re-read tomorrow morning
UHS MCQ Patterns to watch:
  • Clinical vignette + "which nerve is damaged?" (Anatomy)
  • "A patient has pH 7.28, PCO2 50..." (Physiology/Biochemistry ABG)
  • "Deficiency of which enzyme causes..." (Biochemistry)
  • "Which of the following is NOT a feature of..." (all subjects)
  • Muscle/nerve action questions with specific clinical findings

Osmosis Video Schedule (Offline - download in advance)

Use the last 1 hour of your day (5:30-6:30 PM) for Osmosis. Watch the video for whatever you studied that day.
Must-watch Osmosis playlists for your topics:
  • Brachial plexus injuries
  • Action potential and membrane physiology
  • Cardiac cycle and heart sounds
  • Spirometry and pulmonary function tests
  • Renal tubular physiology
  • Glycolysis and TCA cycle
  • Vitamins (full playlist)
  • Urea cycle and amino acid disorders
  • DNA replication and transcription
Tip: Download these NOW while you have internet. Save them offline. You do not need internet to watch downloaded Osmosis videos.

One-Page High-Yield Summary Tables (Make These Yourself)

These 5 tables will save you in the exam:
  1. Nerve injury table - Nerve | Injury site | Clinical sign | Muscles lost
  2. Normal values table - GFR, FEV1, TV, pH, HCO3, pCO2, electrolytes
  3. Enzyme defect table - Disease | Enzyme missing | Substrate accumulates | Clinical feature
  4. Vitamin table - Vitamin | Coenzyme function | Deficiency disease | Source
  5. ABG interpretation table - pH | pCO2 | HCO3 | Disorder | Compensation

Rules for the 4 Weeks

  1. No skipping MCQ practice - even on tired days, do minimum 10 MCQs
  2. Pomodoro is strict - phone face down, no notifications during 25-min block
  3. Osmosis is supplement, not replacement - read first, watch to reinforce
  4. Sunday is NOT a holiday - it is revision day, lighter but not off
  5. If you miss a day - do not try to "catch up" by doubling. Adjust the next day's plan
  6. Sleep minimum 7 hours - memory consolidation happens during sleep, not during extra study

Starting Tonight (July 13, Sunday)

Since your exam is in less than 4 weeks and today is Sunday evening:
  • Spend 30 min tonight collecting and organizing all your resources (Snell, Ganong, Harper)
  • Download all Osmosis videos you will need for Week 1 (brachial plexus, nerve injuries, limb anatomy)
  • Print or write out this timetable
  • Start fresh tomorrow July 14 with Upper Limb Anatomy
You have exactly 28 days from tomorrow. That is tight but very doable if you follow this plan without gaps.

i am reading steupup medicine and not irfan masood and give me uhs based past mcqs and practice nased daily mcqs for better understanding and to pass the upcoming exam. i want to use pomodoro technique and can not study more than 8 hours a day. i do not have internet connection and limited access to internet so can not consult you every time. i am using osmosis vedios for better understanding too. Give me timetable and resources according to it

Asking for Preferences
Asking for Preferences
Here is your complete offline study plan. Save this or print it - you will not need internet after this.

UHS Final Year Block Exam - Complete Study Plan

Medicine + Paediatrics + Psychiatry | 13 Days | Starting July 14, 2026

Reading: Step-Up to Medicine | Technique: Pomodoro | Max: 8 hrs/day | Start: 9:00 AM


Your Pomodoro Daily Block Structure

1 Pomodoro = 25 min study + 5 min break After every 4 Pomodoros = 30 min long break 8 hours of study = 16 Pomodoros
TimeWhat
9:00 - 10:50Block 1: 4 Pomodoros (new topic reading)
10:50 - 11:20Long Break (30 min)
11:20 - 1:10 PMBlock 2: 4 Pomodoros (continue topic + notes)
1:10 - 1:50Long Break (Zuhr + lunch)
1:50 - 3:40Block 3: 4 Pomodoros (MCQ practice - past UHS)
3:40 - 4:10Long Break (Asr + rest)
4:10 - 5:00Block 4: 2 Pomodoros (Osmosis video - today's topic)
5:00 - 5:30Maghrib + tea break
5:30 - 6:20Block 5: 2 Pomodoros (MCQ mistake review + active recall)
6:20 - 7:00Dinner / Isha
7:00 - 7:251 Final Pomodoro: Next day preview (read headings only)
Study ends by 7:30 PM. Sleep by 11 PM. No late nights - memory consolidates during sleep.

13-Day Master Timetable

DAY 1 - Monday July 14: MEDICINE - CVS

BlockTopicStep-Up Pages/Chapter
Block 1Heart failure (types, staging, treatment)Step-Up Ch. 1
Block 2IHD, MI, ACS (STEMI vs NSTEMI)Step-Up Ch. 1
Block 320 MCQs - CVS (see MCQ section below)Past UHS
Block 4Osmosis: Heart failure + MI videosOffline
Block 5Review wrong answers, make 1 tableSelf
Tonight preview: Hypertension + Arrhythmias headings

DAY 2 - Tuesday July 15: MEDICINE - CVS + Respiratory

BlockTopic
Block 1Hypertension, arrhythmias (AF, VT, VF, heart block)
Block 2Valvular heart disease (murmurs, causes, management)
Block 320 MCQs - CVS continued
Block 4Osmosis: Arrhythmias / Valvular disease
Block 5MCQ review + consolidate CVS notes

DAY 3 - Wednesday July 16: MEDICINE - Respiratory

BlockTopic
Block 1Asthma vs COPD (differences, management, stepwise)
Block 2Pneumonia, TB, Lung Ca, Pleural effusion
Block 320 MCQs - Respiratory
Block 4Osmosis: Asthma / COPD / TB
Block 5MCQ review + Resp summary table

DAY 4 - Thursday July 17: MEDICINE - Gastroenterology + Hepatology

BlockTopic
Block 1Peptic ulcer, GERD, IBD (Crohn's vs UC)
Block 2Liver disease: Hepatitis, cirrhosis, complications (ascites, SBP, HE, HRS)
Block 320 MCQs - GI + Liver
Block 4Osmosis: Cirrhosis / IBD
Block 5MCQ review + GI table

DAY 5 - Friday July 18: MEDICINE - Endocrine + Renal

BlockTopic
Block 1Diabetes (type 1 vs 2, complications, DKA vs HHS)
Block 2Thyroid disorders, adrenal disorders, renal failure (AKI vs CKD)
Block 320 MCQs - Endocrine + Renal
Block 4Osmosis: Diabetes / Thyroid
Block 5MCQ review
Jumma - adjust Block 1 time if needed. Short break at 12:30.

DAY 6 - Saturday July 19: MEDICINE - Neurology + Haematology

BlockTopic
Block 1Stroke (ischaemic vs haemorrhagic), seizures, meningitis
Block 2Anaemia types, leukaemia, lymphoma, coagulation disorders
Block 320 MCQs - Neuro + Haem
Block 4Osmosis: Stroke / Anaemia types
Block 5MCQ review + Haem table

DAY 7 - Sunday July 20: MEDICINE REVISION + Mock MCQs

BlockActivity
Block 1Rapid revision: CVS + Resp (notes only, no re-reading)
Block 2Rapid revision: GI + Endo + Renal + Neuro
Block 340 MCQ Mock Test - Full Medicine (timed, no peeking)
Block 4Review all wrong answers carefully
Block 5Weak topic targeted re-reading

DAY 8 - Monday July 21: PAEDIATRICS

BlockTopic
Block 1Neonatal emergencies: RDS, meconium aspiration, neonatal jaundice, sepsis
Block 2Growth & development milestones, malnutrition (kwashiorkor vs marasmus), immunisation schedule
Block 320 MCQs - Paeds Neonates + Nutrition
Block 4Osmosis: Neonatal jaundice / Malnutrition
Block 5MCQ review

DAY 9 - Tuesday July 22: PAEDIATRICS continued

BlockTopic
Block 1Paeds respiratory: Pneumonia, croup, bronchiolitis, asthma in children
Block 2Paeds cardiac: VSD, ASD, TOF, PDA - features and differences
Block 320 MCQs - Paeds CVS + Resp
Block 4Osmosis: TOF / Congenital heart disease
Block 5MCQ review + Congenital heart table

DAY 10 - Wednesday July 23: PAEDIATRICS + Early Psychiatry

BlockTopic
Block 1Paeds GI + Diarrhoeal diseases + ORS (IMCI approach)
Block 2Paeds Neuro: Seizures in children, meningitis, febrile fits
Block 320 MCQs - Paeds mixed
Block 4Osmosis: Febrile seizures / Paeds meningitis
Block 5MCQ review + Paeds revision table

DAY 11 - Thursday July 24: PSYCHIATRY

BlockTopic
Block 1Schizophrenia (types, features, antipsychotics - typical vs atypical, side effects)
Block 2Depression, Bipolar, Anxiety disorders (GAD, panic, OCD, PTSD)
Block 320 MCQs - Psychiatry
Block 4Osmosis: Schizophrenia / Depression
Block 5MCQ review

DAY 12 - Friday July 25: PSYCHIATRY + Full Revision Start

BlockTopic
Block 1Substance use, personality disorders, somatoform disorders, ECT
Block 2Psychiatry emergencies (neuroleptic malignant syndrome, serotonin syndrome, lithium toxicity)
Block 320 MCQs - Psychiatry complete
Block 4Osmosis: Personality disorders / Bipolar
Block 5All 5 summary tables review

DAY 13 - Saturday July 26: GRAND REVISION + FULL MOCK

BlockActivity
Block 1Rapid review all summary tables (Medicine)
Block 2Rapid review Paeds + Psychiatry tables
Block 360 MCQ Full Mock Exam - all subjects, timed (90 min)
Block 4Review every wrong answer
Block 5REST. Light reading only. Sleep early.

UHS-Style MCQ Practice Bank (Daily Use - Offline)

Use these every day. These follow the exact UHS pattern - clinical vignette then single best answer.

MEDICINE MCQs

CVS:
  1. A 65-year-old man presents with orthopnoea, PND, and bilateral pitting oedema. CXR shows cardiomegaly and pulmonary congestion. LVEF is 35%. Which drug reduces mortality most in this patient?
  • A) Furosemide
  • B) Digoxin
  • C) Carvedilol
  • D) Amlodipine
  • E) Hydralazine Answer: C - Beta blockers (carvedilol) reduce mortality in HFrEF. Furosemide relieves symptoms only.
  1. A 55-year-old hypertensive male presents with sudden severe chest pain radiating to the back. BP: 180/100 in right arm, 150/90 in left arm. CXR shows widened mediastinum. Diagnosis?
  • A) STEMI
  • B) Aortic dissection
  • C) Pulmonary embolism
  • D) Oesophageal rupture
  • E) Tension pneumothorax Answer: B - Unequal BP in both arms + widened mediastinum = aortic dissection. Hypertension is the #1 risk factor.
  1. A 70-year-old woman has an irregularly irregular pulse. ECG shows absent P waves with irregular narrow complex QRS. Most appropriate initial management?
  • A) Amiodarone IV
  • B) DC cardioversion
  • C) Warfarin + rate control
  • D) Digoxin only
  • E) Adenosine Answer: C - AF management: assess stroke risk (CHA2DS2-VASc), anticoagulate, rate control with beta-blocker or digoxin.
  1. A patient with known mitral stenosis presents with progressive dyspnoea. On examination, there is a loud S1, opening snap, and mid-diastolic rumbling murmur at the apex. Most likely cause?
  • A) Rheumatic fever
  • B) Infective endocarditis
  • C) Marfan syndrome
  • D) Congenital defect
  • E) SLE Answer: A - Rheumatic fever is the most common cause of mitral stenosis in Pakistan/South Asia.

Respiratory:
  1. A 40-year-old smoker has chronic productive cough for >3 months over 2 consecutive years. Spirometry shows FEV1/FVC = 0.65. He is now on LABA + LAMA. His FEV1 is 45% predicted. Which additional drug reduces exacerbations?
  • A) Oral prednisolone
  • B) Inhaled corticosteroid
  • C) Theophylline
  • D) Roflumilast
  • E) Azithromycin prophylaxis Answer: B - GOLD guidelines: add ICS when FEV1 <50% + frequent exacerbations in COPD.
  1. A 25-year-old woman presents with fever, night sweats, weight loss, and productive cough for 3 months. CXR shows upper lobe cavitation with hilar lymphadenopathy. Sputum AFB x3 positive. First-line treatment?
  • A) Rifampicin + Isoniazid for 6 months
  • B) RHZE for 2 months then RH for 4 months
  • C) RHZE for 6 months
  • D) RH for 6 months
  • E) Streptomycin + INH for 9 months Answer: B - Standard TB regimen: 2RHZE / 4RH. Rifampicin, Isoniazid, Pyrazinamide, Ethambutol for 2 months intensive, then RH for 4 months continuation.

GI + Liver:
  1. A 45-year-old alcoholic male presents with massive haematemesis. On examination, he has spider naevi, palmar erythema, and splenomegaly. The most immediate life-saving intervention?
  • A) IV omeprazole
  • B) Endoscopic band ligation
  • C) IV terlipressin + endoscopy
  • D) Sengstaken-Blakemore tube
  • E) Propranolol Answer: C - Variceal bleed: IV terlipressin (reduces portal pressure) + urgent endoscopy with banding. Prophylactic antibiotics also given.
  1. A 30-year-old woman presents with bloody diarrhoea, crampy abdominal pain, and tenesmus for 6 weeks. Colonoscopy shows continuous mucosal inflammation from rectum to splenic flexure. Biopsy shows crypt abscesses. Diagnosis?
  • A) Crohn's disease
  • B) Ulcerative colitis
  • C) Infectious colitis
  • D) Ischaemic colitis
  • E) Colorectal carcinoma Answer: B - UC: continuous, starts from rectum, mucosal only, crypt abscesses, pseudopolyps. Crohn's: skip lesions, transmural, anywhere from mouth to anus.

Endocrine:
  1. A 19-year-old type 1 diabetic presents with confusion, rapid deep breathing, and fruity breath. Blood glucose is 28 mmol/L, pH 7.12, bicarbonate 10, ketones +++. Which is the MOST critical initial step?
  • A) IV insulin infusion immediately
  • B) IV 0.9% NaCl 1 litre over 1 hour
  • C) IV sodium bicarbonate
  • D) Oral glucose
  • E) IM glucagon Answer: B - DKA: FLUID first (corrects dehydration + reduces glucose), then insulin. Starting insulin before fluids can cause fatal hypokalaemia.
  1. A 55-year-old woman presents with weight gain, cold intolerance, constipation, and dry skin. TSH is 18 mIU/L, free T4 is low. Most appropriate treatment?
  • A) Carbimazole
  • B) Propranolol
  • C) Levothyroxine
  • D) Radioiodine
  • E) Lugol's iodine Answer: C - Hypothyroidism: high TSH + low T4. Treatment = Levothyroxine (T4 replacement). Start low, go slow in elderly/cardiac patients.

PAEDIATRICS MCQs

  1. A newborn at 32 weeks gestation develops progressive respiratory distress within 2 hours of birth. CXR shows ground-glass appearance with air bronchograms. Most likely diagnosis?
  • A) Meconium aspiration syndrome
  • B) Transient tachypnoea of newborn
  • C) Respiratory distress syndrome (RDS)
  • D) Congenital pneumonia
  • E) Diaphragmatic hernia Answer: C - RDS = premature baby + surfactant deficiency. Ground glass + air bronchograms = classic. Treatment: surfactant replacement + CPAP.
  1. A 3-month-old infant has not yet smiled socially. He holds his head up when prone. He vocalises with cooing sounds. Which milestone is DELAYED?
  • A) Head control
  • B) Cooing
  • C) Social smile
  • D) All are normal
  • E) Prone position ability Answer: C - Social smile is expected at 6-8 weeks (2 months). At 3 months, absence of social smile is a red flag.
  1. A 2-year-old child in rural Pakistan presents with generalised oedema, hair discolouration (reddish), skin lesions, and a miserable affect. Weight is low but not as severely reduced as height. Serum albumin is very low. Diagnosis?
  • A) Marasmus
  • B) Kwashiorkor
  • C) Marasmic kwashiorkor
  • D) Vitamin A deficiency
  • E) Iron deficiency anaemia Answer: B - Kwashiorkor: protein deficiency with adequate calories. Features: oedema, hypoalbuminaemia, skin/hair changes, miserable child. Marasmus = severe caloric deficiency, wasted but no oedema.
  1. A 6-month-old child presents with fever, barking cough, inspiratory stridor, and hoarse voice. Symptoms are worse at night. CXR shows steeple sign. Most appropriate management?
  • A) IV antibiotics
  • B) Nebulised adrenaline + oral dexamethasone
  • C) Intubation
  • D) Tracheostomy
  • E) Humidified oxygen only Answer: B - Croup (laryngotracheobronchitis): barking cough + steeple sign + age 6mo-3yrs. Mild-moderate: nebulised adrenaline + systemic corticosteroid (dexamethasone).
  1. A 4-year-old child develops a rash that started on the face and spread downward, preceded by 3-4 days of fever, coryza, cough, and conjunctivitis. White spots are seen on the buccal mucosa. Diagnosis?
  • A) Rubella
  • B) Roseola infantum
  • C) Measles
  • D) Chickenpox
  • E) Scarlet fever Answer: C - Measles (rubeola): 3 Cs (Cough, Coryza, Conjunctivitis) + Koplik spots (pathognomonic) + rash spreading cephalocaudally.
  1. A 5-year-old presents with cyanosis, clubbing, and dyspnoea. Echo shows VSD, pulmonary stenosis, overriding aorta, and RVH. The child squats after exercise. Diagnosis?
  • A) VSD alone
  • B) ASD
  • C) Patent ductus arteriosus
  • D) Tetralogy of Fallot
  • E) Transposition of great arteries Answer: D - TOF: the 4 features are VSD + pulmonary stenosis + overriding aorta + RVH. Cyanotic from birth. Squatting increases SVR, reduces right-to-left shunt, relieves cyanosis.

PSYCHIATRY MCQs

  1. A 28-year-old man has been hearing voices that comment on his actions, believing his thoughts are being broadcast on TV, and has been acting bizarrely for 8 months. He has never had a mood episode. Most likely diagnosis?
  • A) Bipolar disorder with psychosis
  • B) Brief psychotic disorder
  • C) Schizophrenia
  • D) Schizoaffective disorder
  • E) Delusional disorder Answer: C - Schizophrenia: >6 months, 2+ symptoms (hallucinations, delusions, disorganised speech, negative symptoms), no mood episode. Thought broadcasting = first-rank symptom.
  1. A 35-year-old woman on lithium for bipolar disorder presents with coarse tremor, vomiting, diarrhoea, and confusion. Lithium level is 2.8 mEq/L. Most appropriate management?
  • A) Reduce lithium dose
  • B) Add propranolol for tremor
  • C) Stop lithium, IV fluids, haemodialysis
  • D) Activated charcoal
  • E) IV sodium bicarbonate Answer: C - Lithium toxicity >2.0 mEq/L: STOP lithium, aggressive IV hydration (0.9% NaCl), haemodialysis for severe toxicity or level >4. There is no antidote.
  1. A 22-year-old medical student presents with persistent low mood for 6 weeks, loss of interest, insomnia, poor concentration, feelings of worthlessness, but no suicidal ideation. Most appropriate first-line treatment?
  • A) Tricyclic antidepressant
  • B) SSRI + CBT
  • C) Benzodiazepine
  • D) Lithium
  • E) Antipsychotic Answer: B - Moderate depression: SSRI (e.g. fluoxetine/sertraline) + CBT are first-line. TCAs are second-line due to side effects and toxicity in overdose.
  1. A patient with schizophrenia on haloperidol develops hyperthermia (40°C), muscle rigidity, fluctuating consciousness, and autonomic instability. CK is markedly elevated. Most dangerous immediate concern?
  • A) Tardive dyskinesia
  • B) Acute dystonia
  • C) Neuroleptic malignant syndrome
  • D) Serotonin syndrome
  • E) Anticholinergic toxicity Answer: C - NMS: the 4 features are hyperthermia + muscle rigidity + altered consciousness + autonomic instability. Stop the antipsychotic immediately. Treat with dantrolene + bromocriptine.

The 5 Essential Summary Tables (Make These on Paper)

Table 1: Heart Failure

FeatureHFrEF (Systolic)HFpEF (Diastolic)
LVEF<40%>50%
CauseIHD, DCMHTN, HCM, age
Mortality drugBB + ACEi + MRANone proven
DiureticYes (symptom)Yes (symptom)

Table 2: COPD vs Asthma

FeatureCOPDAsthma
Age>40Any (often young)
SmokingAlmost alwaysNot required
FEV1/FVC<0.7 (irreversible)<0.7 but reversible
EosinophiliaUncommonCommon
Steroid responsePartialExcellent

Table 3: Congenital Heart Disease

DiseaseShuntCyanotic?Key Feature
VSDL→RNo (unless Eisenmenger)Pansystolic murmur
ASDL→RNoFixed split S2
PDAL→RNoContinuous murmur
TOFR→LYesSquatting, steeple
TGAR→LYes from birthEgg-on-side CXR

Table 4: Antipsychotics

DrugTypeKey Side Effect
HaloperidolTypicalEPS, NMS
ChlorpromazineTypicalSedation, hypotension
RisperidoneAtypicalMetabolic, prolactin
ClozapineAtypicalAgranulocytosis (monitor WBC)
OlanzapineAtypicalWeight gain, metabolic

Table 5: Key Paeds Milestones

AgeGross MotorFine MotorSocialLanguage
2 moLifts head prone-Social smileCoos
6 moSits with supportPalmar graspStranger anxiety startsBabbles
12 moWalks with supportPincer graspWaves bye-bye1-2 words
18 moWalks aloneScribblesParallel play10-20 words
2 yrRunsTower of 6Parallel play2-word phrases
3 yrRides tricycleCopies circleGroup playFull sentences

Step-Up to Medicine - High Yield Chapters for Your Exam

Step-Up is organized by organ system. For your 13 days, focus on:
  • Chapter 1: Cardiovascular disease (most UHS questions come from here)
  • Chapter 2: Pulmonary disease
  • Chapter 3: Gastroenterology
  • Chapter 4: Nephrology (renal failure, electrolytes)
  • Chapter 5: Hematology/Oncology
  • Chapter 7: Endocrinology
  • Chapter 9: Neurology
For Paediatrics and Psychiatry, Step-Up does not have dedicated chapters. Use your ward notes / lecture notes for those, and use the MCQs above as your practice base.

Offline Osmosis Videos to Download NOW (Before Your Internet Runs Out)

Download these playlists immediately. You will watch one per day:
Medicine:
  • Heart failure (systolic vs diastolic)
  • Acute MI and ACS
  • Atrial fibrillation
  • COPD vs Asthma
  • Pulmonary tuberculosis
  • Liver cirrhosis and complications
  • DKA vs HHS
  • Stroke types
Paediatrics:
  • Neonatal respiratory distress syndrome
  • Congenital heart diseases
  • Developmental milestones
  • Measles, Mumps, Rubella (MMR)
  • Febrile seizures
Psychiatry:
  • Schizophrenia
  • Bipolar disorder
  • Major depressive disorder
  • Antipsychotic drugs and side effects
  • Neuroleptic malignant syndrome

10 Rules for the Next 13 Days

  1. Read Step-Up first, then watch Osmosis - never the other way around. Video reinforces reading.
  2. Do 20 MCQs every single day - non-negotiable, even on revision days.
  3. Write your mistakes in a notebook - a physical error log. Review it before bed.
  4. Do not re-read what you already know - use your time for gaps only.
  5. Pomodoro is strict - phone in another room, timer on, 25 minutes of zero interruption.
  6. Never skip sleep - 7 hours minimum. Sleep consolidates what you studied.
  7. Tables over notes - for every topic, condense into a comparison table. Your brain remembers tables.
  8. No new topics after Day 11 - Days 12-13 are revision and mock only.
  9. UHS asks "most likely" and "most appropriate" - always pick the single best answer, not the perfect answer.
  10. On exam day - read each question twice, eliminate clearly wrong options first, trust your first instinct.

Quick Reference: UHS MCQ Patterns

UHS almost always tests these patterns:
  • "Most likely diagnosis" given a clinical scenario
  • "Most appropriate initial management" (first step matters)
  • "Drug of choice" for a specific condition
  • "Which feature distinguishes X from Y" (e.g. Crohn's from UC)
  • Paeds: "Which developmental milestone is delayed?"
  • Psychiatry: "Which drug side effect is this describing?"
Always ask yourself: What is the examiner testing here? A diagnosis? A drug? A pathophysiology? This helps you eliminate distractors fast.

You have 13 days. It is tight but completely passable with this plan. Stick to the Pomodoro blocks, do not skip MCQ review, and use your Osmosis videos as evening reinforcement. Good luck on your exam.

Create a daily progress tracker spreadsheet to mark off completed blocks

Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/uhs-tracker && ls /home/daytona/workspace/uhs-t…

Writing File

~/uhs-tracker/create_tracker.py

from openpyxl import Workbook
from openpyxl.styles import (
    Font, PatternFill, Alignment, Border, Side, GradientFill
)
from openpyxl.utils import get_column_letter
from openpyxl.formatting.rule import ColorScaleRule, CellIsRule, FormulaRule
from openpyxl.worksheet.datavalidation import DataValidation

wb = Workbook()

# ─────────────────────────────────────────────
# COLOUR PALETTE
# ─────────────────────────────────────────────
C_DARK_BLUE   = "1A3A5C"   # header bg
C_MED_BLUE    = "2E6DA4"   # sub-header
C_LIGHT_BLUE  = "D9E8F5"   # alt row
C_WHITE       = "FFFFFF"
C_GREEN_DONE  = "70AD47"   # completed
C_ORANGE_IP   = "F4A83B"   # in progress
C_RED_SKIP    = "FF4444"   # skipped
C_YELLOW_HL   = "FFF2CC"   # highlight
C_GREY_HDR    = "F2F2F2"
C_DARK_TEXT   = "1F2D3D"
C_GREEN_BG    = "E2EFDA"
C_RED_BG      = "FFDEDE"

def hdr_font(sz=11, bold=True, color=C_WHITE):
    return Font(name="Arial", size=sz, bold=bold, color=color)

def body_font(sz=10, bold=False, color=C_DARK_TEXT):
    return Font(name="Arial", size=sz, bold=bold, color=color)

def fill(hex_color):
    return PatternFill("solid", start_color=hex_color, fgColor=hex_color)

def center(wrap=False):
    return Alignment(horizontal="center", vertical="center", wrap_text=wrap)

def left(wrap=True):
    return Alignment(horizontal="left", vertical="center", wrap_text=wrap)

thin = Side(style="thin", color="BFBFBF")
thick = Side(style="medium", color="1A3A5C")
def thin_border():
    return Border(left=thin, right=thin, top=thin, bottom=thin)
def thick_border():
    return Border(left=thick, right=thick, top=thick, bottom=thick)

# ═══════════════════════════════════════════════════════════════════════════════
# SHEET 1 – DAILY TRACKER
# ═══════════════════════════════════════════════════════════════════════════════
ws = wb.active
ws.title = "Daily Tracker"
ws.sheet_view.showGridLines = False
ws.sheet_view.zoomScale = 90

# freeze panes: keep day/header visible
ws.freeze_panes = "C4"

# ── DATA ────────────────────────────────────────────────────────────────────
days = [
    # (day_num, date_str, subject, topic, blocks)
    (1,  "Mon 14 Jul", "MEDICINE",     "CVS – Heart Failure, MI, ACS",
     ["Block 1: HF types, staging, drugs (Step-Up Ch.1)",
      "Block 2: IHD / MI / STEMI vs NSTEMI",
      "Block 3: 20 MCQs – CVS Past UHS",
      "Block 4: Osmosis – Heart Failure + MI",
      "Block 5: MCQ Review + Error Log"]),

    (2,  "Tue 15 Jul", "MEDICINE",     "CVS – HTN, Arrhythmias, Valvular",
     ["Block 1: Hypertension + Arrhythmias (AF, VT, Heart Block)",
      "Block 2: Valvular disease – murmurs, causes, management",
      "Block 3: 20 MCQs – CVS continued",
      "Block 4: Osmosis – Arrhythmias / Valvular disease",
      "Block 5: MCQ Review + CVS notes consolidation"]),

    (3,  "Wed 16 Jul", "MEDICINE",     "Respiratory – Asthma, COPD, TB, Lung",
     ["Block 1: Asthma vs COPD – differences, stepwise management",
      "Block 2: Pneumonia, TB, Lung Ca, Pleural effusion",
      "Block 3: 20 MCQs – Respiratory",
      "Block 4: Osmosis – Asthma / COPD / TB",
      "Block 5: MCQ Review + Resp summary table"]),

    (4,  "Thu 17 Jul", "MEDICINE",     "GI + Hepatology – Ulcer, IBD, Cirrhosis",
     ["Block 1: PUD, GERD, IBD (Crohn's vs UC)",
      "Block 2: Hepatitis, Cirrhosis, Complications (ascites, SBP, HE, HRS)",
      "Block 3: 20 MCQs – GI + Liver",
      "Block 4: Osmosis – Cirrhosis / IBD",
      "Block 5: MCQ Review + GI comparison table"]),

    (5,  "Fri 18 Jul", "MEDICINE",     "Endocrine + Renal – DM, Thyroid, AKI/CKD",
     ["Block 1: Diabetes – Type 1 vs 2, DKA vs HHS",
      "Block 2: Thyroid + Adrenal disorders; AKI vs CKD",
      "Block 3: 20 MCQs – Endocrine + Renal",
      "Block 4: Osmosis – Diabetes / Thyroid",
      "Block 5: MCQ Review"]),

    (6,  "Sat 19 Jul", "MEDICINE",     "Neurology + Haematology – Stroke, Anaemia",
     ["Block 1: Stroke (ischaemic vs haemorrhagic), Seizures, Meningitis",
      "Block 2: Anaemia types, Leukaemia, Lymphoma, Coagulation",
      "Block 3: 20 MCQs – Neuro + Haem",
      "Block 4: Osmosis – Stroke / Anaemia",
      "Block 5: MCQ Review + Haem table"]),

    (7,  "Sun 20 Jul", "MEDICINE",     "MEDICINE REVISION + 40 MCQ Mock",
     ["Block 1: Rapid revision – CVS + Respiratory (notes only)",
      "Block 2: Rapid revision – GI + Endo + Renal + Neuro",
      "Block 3: 40 MCQ Mock Test – Full Medicine (timed)",
      "Block 4: Review all wrong answers",
      "Block 5: Weak topic targeted re-reading"]),

    (8,  "Mon 21 Jul", "PAEDIATRICS",  "Neonates + Growth + Immunisation",
     ["Block 1: Neonatal emergencies – RDS, meconium, jaundice, sepsis",
      "Block 2: Growth milestones, Malnutrition (Kwashiorkor vs Marasmus), EPI",
      "Block 3: 20 MCQs – Paeds Neonates + Nutrition",
      "Block 4: Osmosis – Neonatal jaundice / Malnutrition",
      "Block 5: MCQ Review"]),

    (9,  "Tue 22 Jul", "PAEDIATRICS",  "Paeds CVS + Respiratory",
     ["Block 1: Paeds respiratory – Pneumonia, Croup, Bronchiolitis, Asthma",
      "Block 2: Congenital heart – VSD, ASD, TOF, PDA features",
      "Block 3: 20 MCQs – Paeds CVS + Resp",
      "Block 4: Osmosis – TOF / Congenital heart disease",
      "Block 5: MCQ Review + Congenital heart table"]),

    (10, "Wed 23 Jul", "PAEDIATRICS",  "Paeds GI + Neurology + Early Psych prep",
     ["Block 1: Diarrhoeal diseases, ORS, IMCI approach",
      "Block 2: Paeds Neuro – Seizures, Meningitis, Febrile fits",
      "Block 3: 20 MCQs – Paeds mixed",
      "Block 4: Osmosis – Febrile seizures / Paeds meningitis",
      "Block 5: MCQ Review + Paeds revision table"]),

    (11, "Thu 24 Jul", "PSYCHIATRY",   "Schizophrenia + Depression + Bipolar + Anxiety",
     ["Block 1: Schizophrenia – types, features, antipsychotics (typical vs atypical)",
      "Block 2: Depression, Bipolar, Anxiety (GAD, Panic, OCD, PTSD)",
      "Block 3: 20 MCQs – Psychiatry",
      "Block 4: Osmosis – Schizophrenia / Depression",
      "Block 5: MCQ Review"]),

    (12, "Fri 25 Jul", "PSYCHIATRY",   "Substance use + Personality + Emergencies",
     ["Block 1: Substance use, Personality disorders, Somatoform, ECT",
      "Block 2: Psychiatric emergencies – NMS, Serotonin syndrome, Lithium toxicity",
      "Block 3: 20 MCQs – Psychiatry complete",
      "Block 4: Osmosis – Personality disorders / Bipolar",
      "Block 5: Review all 5 summary tables"]),

    (13, "Sat 26 Jul", "GRAND REVISION", "Full Mock + Final Prep",
     ["Block 1: Rapid review – Medicine summary tables",
      "Block 2: Rapid review – Paeds + Psychiatry tables",
      "Block 3: 60 MCQ Full Mock (all subjects, timed 90 min)",
      "Block 4: Review every wrong answer",
      "Block 5: LIGHT REST – read notes only, sleep early"]),
]

STATUS_OPTIONS = ["", "Done ✓", "In Progress", "Skipped"]

# ── TITLE ROW ────────────────────────────────────────────────────────────────
ws.merge_cells("A1:K1")
title_cell = ws["A1"]
title_cell.value = "UHS FINAL YEAR BLOCK EXAM – DAILY PROGRESS TRACKER"
title_cell.font = Font(name="Arial", size=14, bold=True, color=C_WHITE)
title_cell.fill = fill(C_DARK_BLUE)
title_cell.alignment = center()
ws.row_dimensions[1].height = 32

ws.merge_cells("A2:K2")
sub_cell = ws["A2"]
sub_cell.value = "Medicine + Paediatrics + Psychiatry  |  July 14 – 26, 2026  |  Pomodoro 25+5 min  |  Max 8 hrs/day  |  Start 9:00 AM"
sub_cell.font = Font(name="Arial", size=10, italic=True, color=C_WHITE)
sub_cell.fill = fill(C_MED_BLUE)
sub_cell.alignment = center()
ws.row_dimensions[2].height = 20

# ── COLUMN HEADERS ───────────────────────────────────────────────────────────
headers = ["Day", "Date", "Subject", "Topic", "Study Block", "Status", "MCQs Attempted", "MCQs Correct", "Score %", "Osmosis ✓", "Notes / Mistakes"]
col_widths = [5, 12, 14, 32, 40, 14, 16, 14, 10, 12, 36]

for col_idx, (hdr, width) in enumerate(zip(headers, col_widths), start=1):
    cell = ws.cell(row=3, column=col_idx, value=hdr)
    cell.font = hdr_font(sz=10)
    cell.fill = fill(C_DARK_BLUE)
    cell.alignment = center(wrap=True)
    cell.border = thin_border()
    ws.column_dimensions[get_column_letter(col_idx)].width = width

ws.row_dimensions[3].height = 28

# ── DATA VALIDATION: dropdown for Status column (F) ──────────────────────────
dv = DataValidation(
    type="list",
    formula1='"Done ✓,In Progress,Skipped,"',
    allow_blank=True,
    showDropDown=False,
    showErrorMessage=True,
    error="Please choose: Done ✓, In Progress, Skipped, or leave blank",
    errorTitle="Invalid entry"
)
ws.add_data_validation(dv)

dv_osmosis = DataValidation(
    type="list",
    formula1='"Yes ✓,No,-"',
    allow_blank=True,
    showDropDown=False
)
ws.add_data_validation(dv_osmosis)

# ── ROW DATA ─────────────────────────────────────────────────────────────────
subject_colors = {
    "MEDICINE":      "D9E8F5",
    "PAEDIATRICS":   "E2EFDA",
    "PSYCHIATRY":    "FFF2CC",
    "GRAND REVISION":"FCE4D6",
}

current_row = 4
row_records = []   # (start_row, end_row, day_data)

for day_num, date_str, subject, topic, blocks in days:
    start_row = current_row
    subj_color = subject_colors.get(subject, C_WHITE)

    for b_idx, block_text in enumerate(blocks):
        is_first = (b_idx == 0)

        # Col A – Day number (merged across 5 block rows)
        cell_a = ws.cell(row=current_row, column=1)
        if is_first:
            cell_a.value = day_num
            cell_a.font = Font(name="Arial", size=11, bold=True, color=C_WHITE)
            cell_a.fill = fill(C_MED_BLUE)
        cell_a.alignment = center()
        cell_a.border = thin_border()

        # Col B – Date (merged)
        cell_b = ws.cell(row=current_row, column=2)
        if is_first:
            cell_b.value = date_str
            cell_b.font = Font(name="Arial", size=9, bold=True, color=C_DARK_TEXT)
            cell_b.fill = fill(subj_color)
        cell_b.alignment = center(wrap=True)
        cell_b.border = thin_border()

        # Col C – Subject (merged)
        cell_c = ws.cell(row=current_row, column=3)
        if is_first:
            cell_c.value = subject
            cell_c.font = Font(name="Arial", size=9, bold=True, color=C_DARK_TEXT)
            cell_c.fill = fill(subj_color)
        cell_c.alignment = center(wrap=True)
        cell_c.border = thin_border()

        # Col D – Topic (merged)
        cell_d = ws.cell(row=current_row, column=4)
        if is_first:
            cell_d.value = topic
            cell_d.font = Font(name="Arial", size=9, bold=False, color=C_DARK_TEXT)
            cell_d.fill = fill(subj_color)
        cell_d.alignment = left(wrap=True)
        cell_d.border = thin_border()

        # Col E – Study Block
        cell_e = ws.cell(row=current_row, column=5, value=block_text)
        cell_e.font = body_font(sz=9)
        cell_e.fill = fill(C_WHITE) if b_idx % 2 == 0 else fill(C_GREY_HDR)
        cell_e.alignment = left(wrap=True)
        cell_e.border = thin_border()

        # Col F – Status (dropdown)
        cell_f = ws.cell(row=current_row, column=6, value="")
        cell_f.font = body_font(sz=9, bold=True)
        cell_f.alignment = center()
        cell_f.border = thin_border()
        dv.add(cell_f)

        # Col G – MCQs Attempted
        cell_g = ws.cell(row=current_row, column=7, value="")
        cell_g.font = body_font(sz=10)
        cell_g.alignment = center()
        cell_g.border = thin_border()

        # Col H – MCQs Correct
        cell_h = ws.cell(row=current_row, column=8, value="")
        cell_h.font = body_font(sz=10)
        cell_h.alignment = center()
        cell_h.border = thin_border()

        # Col I – Score % (formula)
        g_addr = f"G{current_row}"
        h_addr = f"H{current_row}"
        cell_i = ws.cell(row=current_row, column=9,
                         value=f'=IF(AND({g_addr}<>"",{g_addr}>0),{h_addr}/{g_addr},"")')
        cell_i.number_format = "0%"
        cell_i.font = body_font(sz=10, bold=True)
        cell_i.alignment = center()
        cell_i.border = thin_border()

        # Col J – Osmosis watched
        cell_j = ws.cell(row=current_row, column=10, value="")
        cell_j.font = body_font(sz=9)
        cell_j.alignment = center()
        cell_j.border = thin_border()
        dv_osmosis.add(cell_j)

        # Col K – Notes
        cell_k = ws.cell(row=current_row, column=11, value="")
        cell_k.font = body_font(sz=9)
        cell_k.alignment = left(wrap=True)
        cell_k.border = thin_border()

        ws.row_dimensions[current_row].height = 22
        current_row += 1

    # Merge A, B, C, D for the 5 block rows
    end_row = current_row - 1
    for col in [1, 2, 3, 4]:
        ws.merge_cells(start_row=start_row, start_column=col,
                       end_row=end_row, end_column=col)

    row_records.append((start_row, end_row, subject))

    # Thick border around the full day block
    for r in range(start_row, end_row + 1):
        for c in range(1, 12):
            cell = ws.cell(row=r, column=c)
            left_s   = thick if c == 1 else thin
            right_s  = thick if c == 11 else thin
            top_s    = thick if r == start_row else thin
            bottom_s = thick if r == end_row else thin
            cell.border = Border(left=left_s, right=right_s,
                                 top=top_s, bottom=bottom_s)

# ── CONDITIONAL FORMATTING – colour Status column ────────────────────────────
status_range = f"F4:F{current_row - 1}"
ws.conditional_formatting.add(
    status_range,
    CellIsRule(operator="equal", formula=['"Done ✓"'],
               fill=PatternFill("solid", start_color=C_GREEN_DONE, fgColor=C_GREEN_DONE),
               font=Font(name="Arial", size=9, bold=True, color=C_WHITE))
)
ws.conditional_formatting.add(
    status_range,
    CellIsRule(operator="equal", formula=['"In Progress"'],
               fill=PatternFill("solid", start_color=C_ORANGE_IP, fgColor=C_ORANGE_IP),
               font=Font(name="Arial", size=9, bold=True, color=C_WHITE))
)
ws.conditional_formatting.add(
    status_range,
    CellIsRule(operator="equal", formula=['"Skipped"'],
               fill=PatternFill("solid", start_color=C_RED_SKIP, fgColor=C_RED_SKIP),
               font=Font(name="Arial", size=9, bold=True, color=C_WHITE))
)

# ── CONDITIONAL FORMATTING – Score % colour scale ────────────────────────────
score_range = f"I4:I{current_row - 1}"
ws.conditional_formatting.add(
    score_range,
    ColorScaleRule(start_type="num", start_value=0, start_color="FF4444",
                   mid_type="num", mid_value=0.6, mid_color="FFA500",
                   end_type="num", end_value=1, end_color="70AD47")
)

# ── SUMMARY STATS (below tracker) ────────────────────────────────────────────
total_blocks = current_row - 4
summary_row = current_row + 2

ws.merge_cells(f"A{summary_row}:K{summary_row}")
s_hdr = ws.cell(row=summary_row, column=1, value="PROGRESS SUMMARY")
s_hdr.font = Font(name="Arial", size=11, bold=True, color=C_WHITE)
s_hdr.fill = fill(C_DARK_BLUE)
s_hdr.alignment = center()
ws.row_dimensions[summary_row].height = 24

labels = [
    ("Total Blocks", f"={total_blocks}"),
    ("Completed (Done ✓)", f'=COUNTIF(F4:F{current_row-1},"Done ✓")'),
    ("In Progress",        f'=COUNTIF(F4:F{current_row-1},"In Progress")'),
    ("Skipped",            f'=COUNTIF(F4:F{current_row-1},"Skipped")'),
    ("Not Started",        f'=COUNTBLANK(F4:F{current_row-1})'),
    ("% Complete",         f'=COUNTIF(F4:F{current_row-1},"Done ✓")/{total_blocks}'),
    ("Total MCQs Done",    f"=SUM(G4:G{current_row-1})"),
    ("Total MCQs Correct", f"=SUM(H4:H{current_row-1})"),
    ("Overall MCQ Score",  f'=IFERROR(SUM(H4:H{current_row-1})/SUM(G4:G{current_row-1}),"")'),
    ("Osmosis Videos",     f'=COUNTIF(J4:J{current_row-1},"Yes ✓")'),
]
label_colors = [C_MED_BLUE, C_GREEN_DONE, C_ORANGE_IP, "FF4444", C_GREY_HDR,
                C_MED_BLUE, "5B9BD5", "5B9BD5", "5B9BD5", "70AD47"]
pct_rows = {6, 9}  # 1-indexed in labels list

for i, (label, formula) in enumerate(labels):
    r = summary_row + 1 + i
    ws.row_dimensions[r].height = 20
    lbl_cell = ws.cell(row=r, column=1, value=label)
    lbl_cell.font = Font(name="Arial", size=10, bold=True,
                         color=C_WHITE if label_colors[i] not in (C_GREY_HDR,) else C_DARK_TEXT)
    lbl_cell.fill = fill(label_colors[i])
    lbl_cell.alignment = left(wrap=False)
    lbl_cell.border = thin_border()

    val_cell = ws.cell(row=r, column=2, value=formula)
    val_cell.font = Font(name="Arial", size=10, bold=True, color=C_DARK_TEXT)
    val_cell.alignment = center()
    val_cell.border = thin_border()
    if i + 1 in pct_rows:
        val_cell.number_format = "0.0%"

    ws.merge_cells(f"C{r}:K{r}")
    ws.cell(row=r, column=3).border = thin_border()

# ═══════════════════════════════════════════════════════════════════════════════
# SHEET 2 – MCQ LOG
# ═══════════════════════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("MCQ Error Log")
ws2.sheet_view.showGridLines = False
ws2.freeze_panes = "A3"

ws2.merge_cells("A1:G1")
t = ws2["A1"]
t.value = "DAILY MCQ ERROR LOG – Write every wrong answer here"
t.font = Font(name="Arial", size=12, bold=True, color=C_WHITE)
t.fill = fill(C_DARK_BLUE)
t.alignment = center()
ws2.row_dimensions[1].height = 28

mcq_headers = ["Day", "Date", "Subject", "Question Summary", "Your Answer", "Correct Answer", "Why I Was Wrong / Key Concept"]
mcq_widths  = [5, 12, 14, 42, 20, 20, 50]

for col_idx, (hdr, width) in enumerate(zip(mcq_headers, mcq_widths), start=1):
    cell = ws2.cell(row=2, column=col_idx, value=hdr)
    cell.font = hdr_font(sz=10)
    cell.fill = fill(C_MED_BLUE)
    cell.alignment = center(wrap=True)
    cell.border = thin_border()
    ws2.column_dimensions[get_column_letter(col_idx)].width = width

ws2.row_dimensions[2].height = 26

# Pre-populate 40 empty rows
for r in range(3, 43):
    for c in range(1, 8):
        cell = ws2.cell(row=r, column=c, value="")
        cell.font = body_font(sz=9)
        cell.fill = fill(C_WHITE) if r % 2 != 0 else fill(C_GREY_HDR)
        cell.alignment = left(wrap=True)
        cell.border = thin_border()
        ws2.row_dimensions[r].height = 20

# ═══════════════════════════════════════════════════════════════════════════════
# SHEET 3 – POMODORO DAILY SCHEDULE
# ═══════════════════════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("Pomodoro Schedule")
ws3.sheet_view.showGridLines = False

ws3.merge_cells("A1:E1")
pt = ws3["A1"]
pt.value = "DAILY POMODORO SCHEDULE (9:00 AM – 7:30 PM)"
pt.font = Font(name="Arial", size=12, bold=True, color=C_WHITE)
pt.fill = fill(C_DARK_BLUE)
pt.alignment = center()
ws3.row_dimensions[1].height = 28

pom_headers = ["Time", "Block", "Duration", "Activity", "Notes"]
pom_widths  = [18, 20, 14, 40, 30]

for col_idx, (hdr, width) in enumerate(zip(pom_headers, pom_widths), start=1):
    cell = ws3.cell(row=2, column=col_idx, value=hdr)
    cell.font = hdr_font(sz=10)
    cell.fill = fill(C_MED_BLUE)
    cell.alignment = center()
    cell.border = thin_border()
    ws3.column_dimensions[get_column_letter(col_idx)].width = width
ws3.row_dimensions[2].height = 24

pom_rows = [
    ("9:00 – 9:25",   "Pomodoro 1",  "25 min", "New topic – reading (Step-Up)",      ""),
    ("9:25 – 9:30",   "Break 1",     "5 min",  "Rest / water",                        ""),
    ("9:30 – 9:55",   "Pomodoro 2",  "25 min", "Continue reading + make notes",       ""),
    ("9:55 – 10:00",  "Break 2",     "5 min",  "Rest",                                ""),
    ("10:00 – 10:25", "Pomodoro 3",  "25 min", "Continue topic / start next sub-topic",""),
    ("10:25 – 10:30", "Break 3",     "5 min",  "Rest",                                ""),
    ("10:30 – 10:55", "Pomodoro 4",  "25 min", "Summary table / flash notes",         ""),
    ("10:55 – 11:25", "LONG BREAK",  "30 min", "Stretch, snack, prayer",              ""),
    ("11:25 – 11:50", "Pomodoro 5",  "25 min", "Continue topic / Block 2 reading",    ""),
    ("11:50 – 11:55", "Break 5",     "5 min",  "Rest",                                ""),
    ("11:55 – 12:20", "Pomodoro 6",  "25 min", "Block 2 reading continued",           ""),
    ("12:20 – 12:25", "Break 6",     "5 min",  "Rest",                                ""),
    ("12:25 – 12:50", "Pomodoro 7",  "25 min", "Finalize topic notes",                ""),
    ("12:50 – 12:55", "Break 7",     "5 min",  "Rest",                                ""),
    ("12:55 – 1:20",  "Pomodoro 8",  "25 min", "Quick review of morning reading",     ""),
    ("1:20 – 1:50",   "LONG BREAK",  "30 min", "Zuhr + lunch",                        ""),
    ("1:50 – 2:15",   "Pomodoro 9",  "25 min", "MCQ Practice (past UHS) – 10 MCQs",  ""),
    ("2:15 – 2:20",   "Break 9",     "5 min",  "Rest",                                ""),
    ("2:20 – 2:45",   "Pomodoro 10", "25 min", "MCQ Practice – 10 more MCQs",        ""),
    ("2:45 – 2:50",   "Break 10",    "5 min",  "Rest",                                ""),
    ("2:50 – 3:15",   "Pomodoro 11", "25 min", "MCQ answer review – mark errors",     ""),
    ("3:15 – 3:20",   "Break 11",    "5 min",  "Rest",                                ""),
    ("3:20 – 3:45",   "Pomodoro 12", "25 min", "MCQ error log – write in Sheet 2",    ""),
    ("3:45 – 4:15",   "LONG BREAK",  "30 min", "Asr + rest",                          ""),
    ("4:15 – 4:40",   "Pomodoro 13", "25 min", "Osmosis video – today's topic",       ""),
    ("4:40 – 4:45",   "Break 13",    "5 min",  "Rest",                                ""),
    ("4:45 – 5:10",   "Pomodoro 14", "25 min", "Osmosis video continued / notes",     ""),
    ("5:10 – 5:30",   "Maghrib",     "20 min", "Prayer + tea break",                  ""),
    ("5:30 – 5:55",   "Pomodoro 15", "25 min", "Active recall – close notes, write summary",""),
    ("5:55 – 6:00",   "Break 15",    "5 min",  "Rest",                                ""),
    ("6:00 – 6:25",   "Pomodoro 16", "25 min", "MCQ mistake review + spaced repetition",""),
    ("6:25 – 7:00",   "Dinner/Isha", "35 min", "Dinner + prayer",                     ""),
    ("7:00 – 7:25",   "Final 25min", "25 min", "Next day preview (headings only)",    ""),
    ("7:25 – 7:30",   "DONE",        "5 min",  "Shut books. Rest. Sleep by 11 PM.",   ""),
]

pom_break_color = "FCE4D6"
pom_study_color = "D9E8F5"
pom_long_break  = "FFE699"
pom_prayer      = "E2EFDA"

for r_idx, row_data in enumerate(pom_rows, start=3):
    time_str, block, dur, activity, note = row_data
    if "LONG" in block or "LONG" in activity:
        bg = pom_long_break
    elif "Break" in block or "DONE" in block:
        bg = pom_break_color
    elif "Maghrib" in block or "Zuhr" in block or "Isha" in block or "Dinner" in block:
        bg = pom_prayer
    else:
        bg = pom_study_color

    row_vals = [time_str, block, dur, activity, note]
    for c_idx, val in enumerate(row_vals, start=1):
        cell = ws3.cell(row=r_idx, column=c_idx, value=val)
        cell.font = body_font(sz=9, bold=("LONG" in block or "DONE" in block))
        cell.fill = fill(bg)
        cell.alignment = center() if c_idx in [1, 2, 3] else left(wrap=False)
        cell.border = thin_border()
    ws3.row_dimensions[r_idx].height = 18

# ═══════════════════════════════════════════════════════════════════════════════
# SHEET 4 – SUMMARY TABLES (Cheat Sheet)
# ═══════════════════════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("Quick Reference Tables")
ws4.sheet_view.showGridLines = False

ws4.merge_cells("A1:F1")
qt = ws4["A1"]
qt.value = "HIGH-YIELD QUICK REFERENCE TABLES – UHS MCQ Cheat Sheet"
qt.font = Font(name="Arial", size=12, bold=True, color=C_WHITE)
qt.fill = fill(C_DARK_BLUE)
qt.alignment = center()
ws4.row_dimensions[1].height = 28

tables = [
    {
        "title": "TABLE 1: Heart Failure – HFrEF vs HFpEF",
        "headers": ["Feature", "HFrEF (Systolic)", "HFpEF (Diastolic)"],
        "rows": [
            ["LVEF", "< 40%", "> 50%"],
            ["Main cause", "IHD, Dilated CM", "Hypertension, HCM, Age"],
            ["Mortality-reducing drugs", "BB + ACEi + MRA (spironolactone)", "None proven"],
            ["Symptom relief", "Furosemide (loop diuretic)", "Furosemide (loop diuretic)"],
            ["CXR finding", "Cardiomegaly + pulmonary oedema", "May be normal size"],
            ["UHS hint", "Drug reducing mortality = Beta blocker", "Treat underlying cause"],
        ],
        "color": "D9E8F5"
    },
    {
        "title": "TABLE 2: COPD vs Asthma",
        "headers": ["Feature", "COPD", "Asthma"],
        "rows": [
            ["Age", "> 40 yrs", "Any age (often young)"],
            ["Cause", "Smoking (almost always)", "Allergy, atopy"],
            ["FEV1/FVC", "< 0.7 – irreversible", "< 0.7 – reversible"],
            ["Eosinophils", "Uncommon", "Common"],
            ["Steroid response", "Partial", "Excellent"],
            ["Key drug", "LAMA + LABA", "ICS + SABA"],
            ["UHS hint", "FEV1 < 50% + exacerbations = add ICS", "Stepwise: SABA → ICS → LABA"],
        ],
        "color": "E2EFDA"
    },
    {
        "title": "TABLE 3: Congenital Heart Disease",
        "headers": ["Disease", "Shunt", "Cyanotic?", "Key Feature", "UHS Hint"],
        "rows": [
            ["VSD", "L→R", "No*", "Pansystolic murmur, LLSB", "*Eisenmenger: reverses to R→L"],
            ["ASD", "L→R", "No", "Fixed split S2", "May present in adults"],
            ["PDA", "L→R", "No", "Continuous machinery murmur", "Indomethacin closes it"],
            ["TOF", "R→L", "YES", "Squatting relieves cyanosis", "Boot-shaped heart on CXR"],
            ["TGA", "R→L", "YES from birth", "Egg-on-side CXR", "PGE1 keeps PDA open"],
        ],
        "color": "FFF2CC"
    },
    {
        "title": "TABLE 4: Antipsychotic Drugs",
        "headers": ["Drug", "Type", "Key Side Effect", "UHS Hint"],
        "rows": [
            ["Haloperidol", "Typical (1st gen)", "EPS (dystonia, akathisia, TD), NMS", "Most common cause of NMS"],
            ["Chlorpromazine", "Typical", "Sedation, postural hypotension", "Anti-emetic too"],
            ["Risperidone", "Atypical (2nd gen)", "Metabolic syndrome, raised prolactin", ""],
            ["Clozapine", "Atypical", "AGRANULOCYTOSIS – monitor WBC weekly", "Only for treatment-resistant"],
            ["Olanzapine", "Atypical", "Weight gain, glucose intolerance", ""],
            ["NMS features", "-", "Hyperthermia + Rigidity + AMS + Autonomic instability", "Stop drug, give dantrolene"],
        ],
        "color": "FCE4D6"
    },
    {
        "title": "TABLE 5: Developmental Milestones",
        "headers": ["Age", "Gross Motor", "Fine Motor", "Social / Language"],
        "rows": [
            ["2 months", "Lifts head prone", "—", "Social smile, coos"],
            ["6 months", "Sits with support", "Palmar grasp", "Babbles, stranger anxiety"],
            ["9 months", "Pulls to stand", "Pincer grasp developing", "Mama/dada (non-specific)"],
            ["12 months", "Walks with support", "Neat pincer grasp", "1-2 words, waves bye-bye"],
            ["18 months", "Walks alone, runs", "Scribbles, tower of 4", "10-20 words, parallel play"],
            ["2 years", "Runs, kicks ball", "Tower of 6, copies line", "2-word phrases"],
            ["3 years", "Rides tricycle", "Copies circle", "Full sentences, group play"],
            ["UHS hint", "Absence of social smile by 3 months = RED FLAG", "", ""],
        ],
        "color": "E2EFDA"
    },
]

current_r = 3
ws4.column_dimensions["A"].width = 22
ws4.column_dimensions["B"].width = 28
ws4.column_dimensions["C"].width = 28
ws4.column_dimensions["D"].width = 30
ws4.column_dimensions["E"].width = 28
ws4.column_dimensions["F"].width = 30

for tbl in tables:
    # Table title
    n_cols = len(tbl["headers"])
    last_col = get_column_letter(n_cols)
    ws4.merge_cells(f"A{current_r}:{last_col}{current_r}")
    title_cell = ws4.cell(row=current_r, column=1, value=tbl["title"])
    title_cell.font = Font(name="Arial", size=10, bold=True, color=C_WHITE)
    title_cell.fill = fill(C_MED_BLUE)
    title_cell.alignment = left(wrap=False)
    title_cell.border = thin_border()
    ws4.row_dimensions[current_r].height = 22
    current_r += 1

    # Headers
    for c_idx, hdr in enumerate(tbl["headers"], start=1):
        cell = ws4.cell(row=current_r, column=c_idx, value=hdr)
        cell.font = Font(name="Arial", size=9, bold=True, color=C_WHITE)
        cell.fill = fill(C_DARK_BLUE)
        cell.alignment = center(wrap=True)
        cell.border = thin_border()
    ws4.row_dimensions[current_r].height = 20
    current_r += 1

    # Data rows
    for r_idx, row_data in enumerate(tbl["rows"]):
        for c_idx, val in enumerate(row_data, start=1):
            cell = ws4.cell(row=current_r, column=c_idx, value=val)
            cell.font = Font(name="Arial", size=9,
                             bold=(c_idx == 1),
                             color=C_DARK_TEXT)
            cell.fill = fill(tbl["color"]) if r_idx % 2 == 0 else fill(C_WHITE)
            cell.alignment = left(wrap=True)
            cell.border = thin_border()
        ws4.row_dimensions[current_r].height = 20
        current_r += 1

    current_r += 1  # gap between tables

# ═══════════════════════════════════════════════════════════════════════════════
# SAVE
# ═══════════════════════════════════════════════════════════════════════════════
output_path = "/home/daytona/workspace/uhs-tracker/UHS_Daily_Progress_Tracker.xlsx"
wb.save(output_path)
print(f"Saved: {output_path}")
Running Command

cd /home/daytona/workspace/uhs-tracker && python create_tracker.py

Running Command

cd /home/daytona/workspace/uhs-tracker && python create_tracker.py 2>&1 | head -…

Editing File

~/uhs-tracker/create_tracker.py

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/uhs-tracker/create_tracker.py'
Running Command

cd /home/daytona/workspace/uhs-tracker && python create_tracker.py

Running Command

python /home/daytona/skills/xlsx/scripts/recalc.py /home/daytona/workspace/uhs-t…

Running Command

python /home/daytona/skills/xlsx/scripts/recalc.py /home/daytona/workspace/uhs-t…

Zero formula errors, 75 formulas verified. Your tracker is ready.

UHS Daily Progress Tracker

Spreadsheet · XLSX


What's Inside the Spreadsheet

4 sheets in one file:

Sheet 1 - Daily Tracker (main sheet)

  • All 13 days, every block listed (Day 1 to Day 13, July 14-26)
  • Each of the 5 blocks per day is a separate row you can tick off
  • Status column has a dropdown: Done ✓ / In Progress / Skipped
    • Turns green when Done, orange when In Progress, red when Skipped (automatic)
  • MCQs Attempted + Correct columns - fill these in daily
  • Score % calculates automatically (turns red-orange-green based on your score)
  • Osmosis ✓ column - dropdown: Yes ✓ / No / -
  • Notes/Mistakes column - write key errors or things to review

Sheet 2 - MCQ Error Log

  • 40 pre-formatted rows to log every wrong MCQ
  • Columns: Day | Date | Subject | Question Summary | Your Answer | Correct Answer | Key Concept
  • Review this log every evening - it is your most important revision tool

Sheet 3 - Pomodoro Schedule

  • Full 9:00 AM - 7:30 PM timetable, colour-coded
  • Blue = study blocks | Orange = short breaks | Yellow = long breaks | Green = prayer/meals

Sheet 4 - Quick Reference Tables

  • All 5 high-yield tables pre-filled:
    • HFrEF vs HFpEF
    • COPD vs Asthma
    • Congenital Heart Disease
    • Antipsychotic drugs + NMS
    • Developmental Milestones
Summary stats at the bottom of Sheet 1 auto-calculate: total blocks completed, % progress, overall MCQ score - updates live as you fill it in.
This is a shared conversation. Sign in to Orris to start your own chat.