I am pharm d 3rd year student i struggle to study and my college don't provide the high quality of teaching i need your helpto get everything done
| Suffix | Drug Class | Example |
|---|---|---|
| -olol | Beta-blockers | Atenolol, Propranolol |
| -pril | ACE inhibitors | Enalapril, Lisinopril |
| -sartan | ARBs | Losartan, Valsartan |
| -statin | HMG-CoA reductase inhibitors | Atorvastatin |
| -mab | Monoclonal antibodies | Rituximab, Trastuzumab |
| -cillin | Penicillins | Amoxicillin |
| -cycline | Tetracyclines | Doxycycline |
| -azole | Azole antifungals / PPIs | Omeprazole, Fluconazole |
| -pam / -lam | Benzodiazepines | Diazepam, Alprazolam |
| -dipine | Calcium channel blockers (DHP) | Amlodipine, Nifedipine |
Hypertension → Increased peripheral resistance + cardiac output → Beta-1 receptor (heart) / ACE (vasoconstriction) → Beta-blocker / ACE inhibitor → Atenolol 50mg / Enalapril 5mg → Bradycardia / Dry cough
| Certification | Platform | Cost |
|---|---|---|
| GCP Certificate | CITI Program (online) | Free for students |
| PV Foundation Course | Uppsala Monitoring Centre (UMC) | Partially free |
| Clinical Research Fundamentals | Coursera (ICH-GCP) | Free to audit |
| Adverse Drug Reaction Reporting | CDSCO PvPI portal | Free |
| Day | Academic Study (3-4 hrs) | Career Skill (1 hr) |
|---|---|---|
| Mon | Pharmacology (1 drug class, full depth) | Anki review + new cards |
| Tue | Medicinal Chemistry (link to Monday's drug) | Read 1 ICH guideline section |
| Wed | Clinical Pharmacy (patient case using Monday's drug) | MedDRA browsing |
| Thu | Pharmaceutics / Pharmacokinetics | GCP course module |
| Fri | Pathology / Microbiology | Write summary of the week |
| Sat | Full revision (all subjects, Anki) | Work on 1 case report or literature search |
| Sun | Rest + 1 hr light review | Browse PubMed for current PV papers |
I have subject thereputics 2 Pharmacology 2 Medical chem Pharmaceutical analysis Formulation Judiciary
DISEASE (Pathophysiology)
↓
What drug do we use? → THERAPEUTICS 2
↓
How does it work in the body? → PHARMACOLOGY 2
↓
Why is the molecule shaped that way? → MEDICINAL CHEMISTRY
↓
How do we make it into a tablet/injection? → FORMULATION
↓
How do we test if it's pure and potent? → PHARMACEUTICAL ANALYSIS
↓
What laws govern its manufacture, sale, use? → PHARMACY JUDICIARY
| System | Major Diseases |
|---|---|
| Cardiovascular | Hypertension, Heart failure, Angina, Arrhythmias, Dyslipidemia |
| Respiratory | Asthma, COPD, Tuberculosis |
| Endocrine | Diabetes mellitus (Type 1 & 2), Thyroid disorders, Cushing's |
| CNS | Epilepsy, Parkinson's, Schizophrenia, Depression, Anxiety |
| GI | PUD, GERD, IBD, Liver disease |
| Renal | CKD, UTI, Nephrotic syndrome |
| Infections | Antimicrobial therapy selection, Sepsis |
| System | Major Drug Classes |
|---|---|
| Cardiovascular | Antihypertensives (all classes), Antiarrhythmics, Anticoagulants, Thrombolytics |
| CNS | Antiepileptics, Antipsychotics, Antidepressants, Anxiolytics, Analgesics (opioids) |
| Endocrine | Insulin types, Oral antidiabetics, Thyroid drugs, Corticosteroids |
| Chemotherapy | Cancer pharmacology, Antibiotics (mechanisms of action), Antifungals, Antivirals |
| Autonomic | Adrenergic drugs, Cholinergic drugs (foundation for everything) |
| Parameter | Details |
|---|---|
| Receptor/Target | Beta-1, ACE, Na channel, etc. |
| Mechanism | Block, activate, inhibit enzyme |
| Pharmacokinetics | Oral/IV, half-life, metabolism (CYP?) |
| Effects (wanted) | Lower BP, reduce HR |
| Effects (unwanted) | Bradycardia, hypotension, cough |
| Contraindications | Asthma, pregnancy, renal failure |
| Class | Prototype to Master First |
|---|---|
| Beta-blockers | Propranolol |
| ACE inhibitors | Captopril |
| Benzodiazepines | Diazepam |
| Opioids | Morphine |
| Penicillins | Benzylpenicillin |
| Fluoroquinolones | Ciprofloxacin |
| SSRIs | Fluoxetine |
| Topic | What to Focus On |
|---|---|
| SAR of CNS drugs | Benzodiazepines, Barbiturates, Phenothiazines |
| SAR of Cardiovascular drugs | Beta-blockers (phenethylamine scaffold), Calcium channel blockers |
| SAR of Antibiotics | Beta-lactam ring (penicillins/cephalosporins), why resistance develops |
| SAR of Analgesics | Opioid scaffold, NSAIDs (carboxylic acid group) |
| Drug metabolism | Phase 1 (CYP450 oxidation), Phase 2 (conjugation) - how structure changes |
| Prodrugs | Enalapril → Enalaprilat, why we make prodrugs |
| Stereochemistry | Chirality in drugs, why S-omeprazole is better than racemic omeprazole |
STRUCTURE (functional groups)
↓
PHYSICAL PROPERTIES (solubility, pKa, lipophilicity)
↓
BIOLOGICAL ACTIVITY (receptor binding, metabolism, toxicity)
| Category | Methods |
|---|---|
| Titrimetry | Acid-base, redox, complexometric, precipitation titrations |
| Spectroscopy | UV-Vis, IR (identification), NMR (structure confirmation), fluorimetry |
| Chromatography | TLC (basic), HPLC (most important), GC, ion exchange |
| Pharmacopoeial tests | LOD, LOI, Ash value, Heavy metals, Dissolution testing |
| Stability testing | ICH Q1A guidelines, accelerated stability, degradation products |
| Validation | Accuracy, precision, linearity, LOD, LOQ, specificity |
| Dosage Form | Key Concepts |
|---|---|
| Tablets | Granulation (wet/dry), compression, coating, disintegration, dissolution |
| Capsules | Hard gelatin vs soft gelatin, fill materials |
| Injections/Parenterals | Sterility, pyrogen testing, isotonicity, pH adjustment |
| Suspensions & Emulsions | Stability, zeta potential, HLB value |
| Controlled release | Matrix, reservoir systems, OROS, transdermal patches |
| Topical/Transdermal | Penetration enhancers, bases (oleaginous, water-miscible, emulsion) |
| Ophthalmic | pH, tonicity, preservatives |
| Preformulation | Physicochemical properties - polymorphism, solubility, stability |
| Function | Examples |
|---|---|
| Binder | PVP, HPMC, starch paste |
| Disintegrant | Croscarmellose, sodium starch glycolate, SSG |
| Lubricant | Magnesium stearate |
| Filler/Diluent | Lactose, MCC, calcium phosphate |
| Glidant | Colloidal silicon dioxide (Aerosil) |
| Coating | HPMC, Eudragit (enteric), Opadry |
| Law | What It Covers |
|---|---|
| Drugs & Cosmetics Act 1940 + Rules 1945 | Drug licensing, Schedule H/H1/X, import/export, clinical trial rules (Schedule Y) |
| Pharmacy Act 1948 | Registration of pharmacists, PCI (Pharmacy Council of India) |
| DPCO (Drug Price Control Order) | Essential medicines pricing, NPPA |
| Narcotic Drugs & Psychotropic Substances Act 1985 | Opioids, controlled substances |
| Consumer Protection Act 2019 | Patient rights, medical negligence |
| Intellectual Property / Patents | Product vs process patents, Section 3(d) of Indian Patent Act |
| GMP (Schedule M) | Manufacturing standards |
| Clinical Trials (New Drugs & Clinical Trial Rules 2019) | Ethics committees, informed consent, SAE reporting |
| Schedule | Contains |
|---|---|
| Schedule H | Prescription-only drugs |
| Schedule H1 | Third-generation antibiotics, anti-TB drugs (stricter control) |
| Schedule X | Psychotropics, narcotics (strictest control) |
| Schedule G | Drugs requiring medical supervision (antihistamines etc.) |
| Schedule M | GMP requirements for manufacturing |
| Schedule Y | Requirements for clinical trials of new drugs in India |
| Schedule N | Minimum equipment for pharmacies |
| Subject | What to Study |
|---|---|
| Therapeutics 2 | Type 2 Diabetes - when do we use metformin? Which patient? |
| Pharmacology 2 | AMPK activation, reduces hepatic glucose output, mechanism |
| Medicinal Chemistry | Biguanide structure, why it's hydrophilic, not metabolized by CYP450 |
| Formulation | Metformin 500mg/850mg/1000mg tablets, extended-release formulation (why?) |
| Pharm Analysis | How is metformin quantified? HPLC method, pharmacopoeial test |
| Judiciary | Is it Schedule H? Pricing under DPCO? Any patent issues? |
| Weeks | Focus |
|---|---|
| 1-4 | Build foundation in each subject - read Chapter 1 of each textbook. Set up Anki. |
| 5-8 | Deep study by system - Do cardiovascular system across ALL subjects in these weeks |
| 9-12 | CNS system across all subjects |
| 13-16 | Endocrine + GI + Renal systems |
| 17-20 | Formulation dosage forms deep dive + Analysis techniques |
| 21-24 | Judiciary - all major Acts |
| 25-28 | Full revision using Anki, past papers, case studies |
| 29-30 | Exam preparation - previous year questions, mock tests |
| Time | Activity |
|---|---|
| 30 min | Anki review (existing cards) |
| 60 min | New topic (deep study with textbook) |
| 30 min | Create Anki cards from today's study |
| 30 min | Career skill (ICH guideline / PV / case report) |
| 20 min | Link today's drug through the 6-subject chain |
Generate a semester study schedule spreadsheet I can follow
mkdir -p /tmp/workspace/pharmd-schedule && ls /tmp/workspace/pharmd-schedule/
~/pharmd-schedule/build_schedule.py
from openpyxl import Workbook
from openpyxl.styles import (
Font, PatternFill, Alignment, Border, Side, GradientFill
)
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.datavalidation import DataValidation
wb = Workbook()
# ── COLOUR PALETTE ──────────────────────────────────────────────────────────
C_HEADER_DARK = "1F3864" # deep navy
C_HEADER_MID = "2E5090" # medium blue
C_THER = "C6EFCE" # soft green – Therapeutics 2
C_PHARM = "DDEBF7" # soft blue – Pharmacology 2
C_MEDCHEM = "FFF2CC" # soft yellow – Medicinal Chemistry
C_ANALYSIS = "FCE4D6" # soft orange – Pharm Analysis
C_FORM = "E2EFDA" # pale green – Formulation
C_JUDIC = "F2CEEF" # soft purple – Judiciary
C_CAREER = "D9E1F2" # slate blue – Career / PV skill
C_REVISION = "FFE699" # amber – Revision
C_EXAM = "FF7070" # red – Exam prep
C_WEEKEND = "F5F5F5" # light grey – Weekend
C_ALT_ROW = "F9FAFB" # very light – alternating rows
C_WHITE = "FFFFFF"
C_GOLD = "BF8F00"
C_DARK_TEXT = "1A1A1A"
def fill(hex_col):
return PatternFill("solid", fgColor=hex_col)
def hdr_font(bold=True, size=10, color="FFFFFF"):
return Font(name="Arial", bold=bold, size=size, color=color)
def body_font(bold=False, size=9, color=C_DARK_TEXT):
return Font(name="Arial", bold=bold, size=size, color=color)
def thin_border():
s = Side(style="thin", color="BFBFBF")
return Border(left=s, right=s, top=s, bottom=s)
def thick_border():
s = Side(style="medium", color="595959")
return Border(left=s, right=s, top=s, bottom=s)
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)
# ════════════════════════════════════════════════════════════════════════════
# SHEET 1 – OVERVIEW / LEGEND
# ════════════════════════════════════════════════════════════════════════════
ws0 = wb.active
ws0.title = "Overview & Legend"
ws0.sheet_view.showGridLines = False
# Title
ws0.merge_cells("A1:H1")
ws0["A1"] = "Pharm.D 3rd Year – Semester Study Planner"
ws0["A1"].font = Font(name="Arial", bold=True, size=16, color="FFFFFF")
ws0["A1"].fill = fill(C_HEADER_DARK)
ws0["A1"].alignment = center()
ws0.row_dimensions[1].height = 36
ws0.merge_cells("A2:H2")
ws0["A2"] = "Academic Year 2026-27 | Duration: 30 Weeks | 6 Subjects | Start: August 2026"
ws0["A2"].font = Font(name="Arial", bold=False, size=10, color="FFFFFF")
ws0["A2"].fill = fill(C_HEADER_MID)
ws0["A2"].alignment = center()
# Subjects legend
legend_data = [
("Subject", "Abbreviation", "Color", "Key Textbook", "Weekly Hours"),
("Therapeutics 2", "THER", C_THER, "DiPiro's Pharmacotherapy", "5 hrs"),
("Pharmacology 2", "PHARM", C_PHARM, "Rang & Dale / Katzung", "5 hrs"),
("Medicinal Chemistry", "MEDCHEM", C_MEDCHEM, "Foye's Principles of Med Chem", "4 hrs"),
("Pharm Analysis", "ANAL", C_ANALYSIS, "Chatwal & Anand", "4 hrs"),
("Formulation", "FORM", C_FORM, "Aulton's Pharmaceutics", "4 hrs"),
("Pharmacy Judiciary", "JUDIC", C_JUDIC, "Mulla's Pharmacy Laws / CDSCO website", "3 hrs"),
("Career / PV Skill", "CAREER", C_CAREER, "ICH Guidelines / CITI / Anki", "1 hr"),
("Revision / Integration","REV", C_REVISION, "All subjects integrated", "2 hrs"),
]
ws0.row_dimensions[3].height = 6
r = 4
for i, row in enumerate(legend_data):
ws0.row_dimensions[r].height = 22
for c, val in enumerate(row, start=1):
cell = ws0.cell(row=r, column=c, value=val)
cell.border = thin_border()
if i == 0:
cell.font = hdr_font(color="FFFFFF")
cell.fill = fill(C_HEADER_DARK)
cell.alignment = center()
else:
if c == 3: # color column
cell.fill = fill(row[2])
cell.value = ""
else:
cell.fill = fill(C_ALT_ROW if i % 2 == 0 else C_WHITE)
cell.font = body_font(bold=(i == 0))
cell.alignment = left(wrap=False)
r += 1
# Study philosophy box
r += 1
ws0.merge_cells(f"A{r}:H{r}")
ws0.cell(row=r, column=1).value = "HOW TO USE THIS PLANNER"
ws0.cell(row=r, column=1).font = hdr_font(size=11, color="FFFFFF")
ws0.cell(row=r, column=1).fill = fill(C_HEADER_MID)
ws0.cell(row=r, column=1).alignment = center()
ws0.row_dimensions[r].height = 22
r += 1
tips = [
"1. Weekly Schedule tab – your day-by-day timetable for each of the 30 weeks.",
"2. Topic Tracker tab – tick off each chapter/topic as you complete it.",
"3. Drug Master List tab – build your Anki deck from this growing list of drugs.",
"4. Integration Log tab – log your weekly 'one drug through all 6 subjects' session.",
"5. Progress Dashboard – auto-calculates % completion for each subject.",
"6. Every Sunday: review the week's Anki cards + update the Progress Dashboard.",
"7. Highlight completed rows in GREEN. Flag difficult topics in RED for re-study.",
]
for tip in tips:
ws0.merge_cells(f"A{r}:H{r}")
ws0.cell(row=r, column=1).value = tip
ws0.cell(row=r, column=1).font = body_font(size=9)
ws0.cell(row=r, column=1).fill = fill(C_WHITE)
ws0.cell(row=r, column=1).alignment = left()
ws0.cell(row=r, column=1).border = thin_border()
ws0.row_dimensions[r].height = 18
r += 1
col_widths_0 = [28, 14, 12, 40, 14, 10, 10, 10]
for i, w in enumerate(col_widths_0, start=1):
ws0.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 2 – WEEKLY SCHEDULE (30 weeks × 7 days)
# ════════════════════════════════════════════════════════════════════════════
ws1 = wb.create_sheet("Weekly Schedule")
ws1.sheet_view.showGridLines = False
ws1.freeze_panes = "A4"
# Phase map (week_start, week_end, phase_name)
phases = [
(1, 4, "PHASE 1 – Foundation Building"),
(5, 8, "PHASE 2 – Cardiovascular System"),
(9, 12, "PHASE 3 – CNS & Neurological"),
(13, 16, "PHASE 4 – Endocrine & Metabolic"),
(17, 20, "PHASE 5 – GI, Renal & Infection"),
(21, 24, "PHASE 6 – Formulation Deep Dive"),
(25, 27, "PHASE 7 – Judiciary & Regulation"),
(28, 29, "PHASE 8 – Full Revision"),
(30, 30, "PHASE 9 – Exam Preparation"),
]
# Subject colour by day-of-week allocation
# Mon=THER, Tue=PHARM, Wed=MEDCHEM, Thu=ANAL, Fri=FORM, Sat=JUDIC/CAREER, Sun=REVISION
day_fills = {
"Monday": (C_THER, "Therapeutics 2"),
"Tuesday": (C_PHARM, "Pharmacology 2"),
"Wednesday": (C_MEDCHEM, "Medicinal Chemistry"),
"Thursday": (C_ANALYSIS,"Pharm Analysis"),
"Friday": (C_FORM, "Formulation"),
"Saturday": (C_JUDIC, "Judiciary + Career Skill"),
"Sunday": (C_REVISION,"Revision + Anki"),
}
# Weekly topics per subject per phase
week_topics = {
# Phase 1 – Foundation
1: {
"Mon": "THER: Introduction to Therapeutics; CVS pathophysiology overview",
"Tue": "PHARM: Autonomic Pharmacology – Adrenergic receptors (α, β) overview",
"Wed": "MEDCHEM: Drug-receptor interactions; Physicochemical properties (pKa, logP)",
"Thu": "ANAL: Introduction to analysis; Titrimetry – Acid-base titrations",
"Fri": "FORM: Preformulation – Solubility, polymorphism, stability",
"Sat": "JUDIC: Drugs & Cosmetics Act 1940 – Introduction + Schedules overview | CAREER: Set up Anki + CITI GCP enrolment",
"Sun": "REVISION: Summarise week's topics. Start Integration Log (Drug: Adrenaline through all 6 subjects)",
},
2: {
"Mon": "THER: Hypertension – pathophysiology, JNC classification, goals of therapy",
"Tue": "PHARM: Adrenergic drugs – Alpha agonists/antagonists; Beta-blockers (Propranolol prototype)",
"Wed": "MEDCHEM: SAR of Beta-blockers (phenethylamine scaffold, -olol series)",
"Thu": "ANAL: Redox titrations (Permanganometry, Cerimetry, Iodimetry)",
"Fri": "FORM: Tablet technology – granulation methods (wet vs dry), excipients",
"Sat": "JUDIC: D&C Act – Schedule H, H1, X drugs; licensing requirements | CAREER: MedDRA introduction (ICH website)",
"Sun": "REVISION: Anki review. Integration: Atenolol (Hypertension drug through all 6 subjects)",
},
3: {
"Mon": "THER: Hypertension management – ACE inhibitors, ARBs, CCBs, diuretics; special populations",
"Tue": "PHARM: ACE inhibitors (Captopril prototype), ARBs (Losartan); Calcium channel blockers",
"Wed": "MEDCHEM: SAR of ACE inhibitors; Prodrug concept (Enalapril → Enalaprilat)",
"Thu": "ANAL: Complexometric titrations (EDTA, metallochromic indicators)",
"Fri": "FORM: Tablet compression; granule properties; disintegration & dissolution testing",
"Sat": "JUDIC: Pharmacy Act 1948 – Pharmacist registration, PCI, State Pharmacy Councils | CAREER: ICH E6 GCP reading (Chapter 1)",
"Sun": "REVISION: Anki review. Past MCQs on Hypertension drugs. Integration: Enalapril",
},
4: {
"Mon": "THER: Dyslipidemia – classification, ATP III / ACC/AHA guidelines, statin therapy",
"Tue": "PHARM: Lipid-lowering drugs – Statins (mechanism, adverse effects), fibrates, ezetimibe",
"Wed": "MEDCHEM: SAR of statins; HMG-CoA reductase binding; prodrug statins (Lovastatin)",
"Thu": "ANAL: UV-Vis Spectroscopy – Beer-Lambert law, instrumentation, applications",
"Fri": "FORM: Capsule technology (hard gelatin, soft gelatin); fill formulations",
"Sat": "JUDIC: DPCO 2013 – Essential medicines list, price control, NPPA role | CAREER: Adverse Drug Reaction (ADR) reporting – PvPI portal walkthrough",
"Sun": "REVISION: Full Phase 1 review. Anki batch review. Integration: Atorvastatin",
},
# Phase 2 – Cardiovascular
5: {
"Mon": "THER: Angina pectoris – stable, unstable, Prinzmetal; treatment stepladder",
"Tue": "PHARM: Nitrates (mechanism, tolerance), beta-blockers, ranolazine; anti-anginal drugs",
"Wed": "MEDCHEM: SAR of nitrates; organic nitrate metabolism to NO; tolerance mechanism",
"Thu": "ANAL: IR Spectroscopy – functional group identification, fingerprint region",
"Fri": "FORM: Modified-release tablets – matrix vs reservoir systems; OROS technology",
"Sat": "JUDIC: New Drugs & Clinical Trials Rules 2019 – key definitions, Schedule Y | CAREER: ICH E2A – Expedited safety reporting definitions",
"Sun": "REVISION: Anki review. Integration: Isosorbide mononitrate",
},
6: {
"Mon": "THER: Heart failure – systolic vs diastolic, NYHA classification, GDMT",
"Tue": "PHARM: Cardiac glycosides (Digoxin), diuretics in HF, RAAS blockade in HF, sacubitril-valsartan",
"Wed": "MEDCHEM: SAR of cardiac glycosides; steroidal lactone ring; Na/K ATPase binding",
"Thu": "ANAL: HPLC – principles, instrumentation, mobile phase selection, gradient elution",
"Fri": "FORM: Parenteral formulations – sterility, pyrogen testing, tonicity, pH adjustment",
"Sat": "JUDIC: Clinical trial phases; Ethics committee (IEC) requirements; informed consent rules | CAREER: Practice writing an ICSR (mock ADR report)",
"Sun": "REVISION: Anki review. Integration: Digoxin",
},
7: {
"Mon": "THER: Cardiac arrhythmias – classification (Vaughan-Williams), AF, VT, SVT management",
"Tue": "PHARM: Class I-IV antiarrhythmics; Amiodarone (Class III); Adenosine",
"Wed": "MEDCHEM: SAR of Class I antiarrhythmics; Na-channel blocking and use-dependence",
"Thu": "ANAL: HPLC method development; method validation (ICH Q2(R1)) – accuracy, precision, linearity",
"Fri": "FORM: Emulsions and suspensions – stability, zeta potential, HLB values",
"Sat": "JUDIC: Narcotic Drugs & Psychotropic Substances (NDPS) Act 1985 – schedules, licensing | CAREER: GCP certification module (CITI Program) – progress check",
"Sun": "REVISION: Anki review. Integration: Amiodarone",
},
8: {
"Mon": "THER: Anticoagulation & thromboembolic diseases – DVT, PE, AF anticoagulation; warfarin vs NOACs",
"Tue": "PHARM: Heparin, warfarin, DOACs (Rivaroxaban, Apixaban, Dabigatran); antiplatelet drugs",
"Wed": "MEDCHEM: SAR of warfarin (coumarin scaffold); SAR of DOACs; thrombin active site binding",
"Thu": "ANAL: LOD/LOQ calculations; Specificity and Robustness validation",
"Fri": "FORM: Topical/Transdermal formulations – penetration enhancers, TDDS patch design",
"Sat": "JUDIC: Consumer Protection Act 2019 – patient rights, medical negligence; drug recall procedures | CAREER: Search PubMed for 1 PV paper; summarise findings",
"Sun": "REVISION: Full Phase 2 (CVS) review. Past year CVS questions. Integration: Rivaroxaban",
},
# Phase 3 – CNS
9: {
"Mon": "THER: Epilepsy – seizure classification (ILAE), first-line drug selection by seizure type",
"Tue": "PHARM: Antiepileptics – Phenytoin, Carbamazepine, Valproate, Levetiracetam; mechanism by class",
"Wed": "MEDCHEM: SAR of Phenytoin (hydantoin ring); SAR of Carbamazepine (dibenzazepine)",
"Thu": "ANAL: Gas Chromatography – principles, detectors (FID, ECD), applications",
"Fri": "FORM: Ophthalmic preparations – pH, tonicity, preservatives; ointment bases",
"Sat": "JUDIC: GMP – Schedule M requirements; quality control, batch records | CAREER: ICH E2B – electronic ICSR transmission standards",
"Sun": "REVISION: Anki review. Integration: Sodium valproate",
},
10: {
"Mon": "THER: Parkinson's disease – pathophysiology, non-pharmacological and pharmacological management",
"Tue": "PHARM: Levodopa/Carbidopa, Dopamine agonists, MAO-B inhibitors, COMT inhibitors",
"Wed": "MEDCHEM: SAR of Levodopa; catecholamine metabolism; why combine with Carbidopa",
"Thu": "ANAL: Fluorimetry – principles and applications in drug analysis",
"Fri": "FORM: Aerosols and inhalation – MDI, DPI, nebulisers; formulation considerations",
"Sat": "JUDIC: Patents – product vs process patent; Section 3(d) Indian Patent Act; compulsory licensing | CAREER: Explore LinkedIn – follow PV professionals at Cipla, Sun Pharma",
"Sun": "REVISION: Anki review. Integration: Levodopa/Carbidopa",
},
11: {
"Mon": "THER: Schizophrenia – positive/negative symptoms; antipsychotic treatment guidelines",
"Tue": "PHARM: Typical antipsychotics (Haloperidol, Chlorpromazine); Atypicals (Clozapine, Olanzapine, Risperidone)",
"Wed": "MEDCHEM: SAR of Phenothiazines (Chlorpromazine); SAR of Butyrophenones (Haloperidol)",
"Thu": "ANAL: Pharmacopoeial tests – LOD, LOI, Ash value, Heavy metals; dissolution testing",
"Fri": "FORM: Nasal and rectal drug delivery – formulation principles, suppositories",
"Sat": "JUDIC: Biological products regulation; vaccine manufacturing rules; blood product licensing | CAREER: Write 1-page mock medical writing summary (drug safety report)",
"Sun": "REVISION: Anki review. Integration: Risperidone",
},
12: {
"Mon": "THER: Depression and anxiety – diagnostic criteria, SSRI/SNRI first-line, treatment duration",
"Tue": "PHARM: Antidepressants – SSRIs, SNRIs, TCAs, MAOIs; anxiolytics (benzodiazepines, buspirone)",
"Wed": "MEDCHEM: SAR of SSRIs (Fluoxetine – trifluoromethyl group); SAR of Benzodiazepines",
"Thu": "ANAL: Stability testing – ICH Q1A guidelines, accelerated stability, degradation products",
"Fri": "FORM: Controlled/Modified release oral drug delivery systems – osmotic pumps, multi-particulate",
"Sat": "JUDIC: Advertising laws – D&C Act rules on drug advertising; misleading claims | CAREER: Review GCP certificate progress; complete remaining CITI modules",
"Sun": "REVISION: Full Phase 3 (CNS) review. Past year CNS questions. Integration: Fluoxetine",
},
# Phase 4 – Endocrine
13: {
"Mon": "THER: Diabetes mellitus Type 2 – diagnosis, ADA targets, lifestyle + metformin initiation",
"Tue": "PHARM: Oral antidiabetics – Metformin, Sulphonylureas, DPP-4 inhibitors, SGLT-2 inhibitors, GLP-1 agonists",
"Wed": "MEDCHEM: SAR of Metformin (biguanide); SAR of Sulphonylureas (SUR1 binding); Glipizide vs Glibenclamide",
"Thu": "ANAL: HPLC validation for antidiabetic drugs – practical case study",
"Fri": "FORM: Insulin formulations – regular, NPH, long-acting analogues; pen device technology",
"Sat": "JUDIC: Import/Export regulations – D&C Act provisions; drug smuggling penalties | CAREER: PvPI ADR report submission practice (Metformin case)",
"Sun": "REVISION: Anki review. Integration: Metformin",
},
14: {
"Mon": "THER: Diabetes mellitus Type 1 – insulin regimens, basal-bolus, sick day rules",
"Tue": "PHARM: Insulin types (onset, peak, duration); hypoglycaemia management; glucagon",
"Wed": "MEDCHEM: Structure of insulin; A-chain, B-chain; modifications in analogues (Glargine, Aspart, Lispro)",
"Thu": "ANAL: Karl Fischer titration; determination of water content in pharmaceuticals",
"Fri": "FORM: Controlled-release parenteral – depot injections (microspheres, implants)",
"Sat": "JUDIC: Drug Information Centres; rational drug use policies; WHO essential medicines | CAREER: Literature search on SGLT-2 inhibitors in PV database (EudraVigilance)",
"Sun": "REVISION: Anki review. Integration: Insulin Glargine",
},
15: {
"Mon": "THER: Thyroid disorders – Hypothyroidism (TSH targets), Hyperthyroidism (Graves' disease) management",
"Tue": "PHARM: Levothyroxine, antithyroid drugs (PTU, Methimazole), Radioactive Iodine; Beta-blockers in thyrotoxicosis",
"Wed": "MEDCHEM: SAR of antithyroid drugs; thioureylene group; iodine metabolism",
"Thu": "ANAL: Potentiometry – pH meter, ion-selective electrodes; applications",
"Fri": "FORM: Lyophilisation (freeze-drying) – process, equipment, formulation of lyophilised injectables",
"Sat": "JUDIC: Poison Act 1919; Insecticides Act; veterinary drug laws | CAREER: Attend 1 free webinar on pharmacovigilance (search LinkedIn Events)",
"Sun": "REVISION: Anki review. Integration: Levothyroxine",
},
16: {
"Mon": "THER: Corticosteroids in disease – asthma, COPD, autoimmune; Cushing's syndrome management",
"Tue": "PHARM: Corticosteroids – mechanism (GRE-mediated), mineralocorticoid vs glucocorticoid potency; tapering",
"Wed": "MEDCHEM: SAR of corticosteroids – steroid nucleus; halogenation at C9; 16-methyl group for potency",
"Thu": "ANAL: Gravimetry; Loss on drying; residue on ignition – pharmacopoeial applications",
"Fri": "FORM: Semi-solid formulations – creams, ointments, gels; base selection (oleaginous, emulsifying)",
"Sat": "JUDIC: State Drug Controller vs CDSCO – jurisdiction, licensing; Drug Inspector powers | CAREER: Write case report outline (pick 1 interesting ADR observed in clinicals)",
"Sun": "REVISION: Full Phase 4 (Endocrine) review. Past year questions. Integration: Prednisolone",
},
# Phase 5 – GI, Renal, Infection
17: {
"Mon": "THER: PUD and GERD – H. pylori eradication regimens, PPI therapy; GERD stepwise treatment",
"Tue": "PHARM: PPIs (Omeprazole – prodrug activation), H2 blockers (Ranitidine), antacids, sucralfate",
"Wed": "MEDCHEM: SAR of PPIs – thioether to sulphenamide activation; Omeprazole vs Esomeprazole (chirality)",
"Thu": "ANAL: HPLC analysis of PPI drugs – case study; forced degradation study design",
"Fri": "FORM: Enteric-coated tablets and capsules – Eudragit polymer types, pH-dependent release",
"Sat": "JUDIC: Spurious drugs definition and penalties; drug quality surveillance | CAREER: ICH Q8 – Pharmaceutical Development introduction",
"Sun": "REVISION: Anki review. Integration: Omeprazole",
},
18: {
"Mon": "THER: IBD (Crohn's and UC) – induction and maintenance; biologics in IBD",
"Tue": "PHARM: 5-ASA drugs, corticosteroids (local), immunosuppressants (Azathioprine, Methotrexate), anti-TNF agents",
"Wed": "MEDCHEM: SAR of 5-ASA compounds; pro-drug design (Sulfasalazine → 5-ASA + Sulfapyridine)",
"Thu": "ANAL: Polarimetry and optical rotation – stereoisomers; chiral HPLC",
"Fri": "FORM: Suppositories and rectal drug delivery; sustained-release rectal formulations",
"Sat": "JUDIC: Medical devices regulation – Drugs and Medical Devices Act 2023 key provisions | CAREER: Draft 1 page on 'Pharmacovigilance in Biologics'",
"Sun": "REVISION: Anki review. Integration: Mesalazine",
},
19: {
"Mon": "THER: UTI and renal diseases – CKD staging, drug dose adjustment in renal failure",
"Tue": "PHARM: Diuretics – mechanism by class (Thiazide, Loop, K-sparing, Osmotic); drug interactions",
"Wed": "MEDCHEM: SAR of Furosemide (sulfonamide scaffold); SAR of Thiazides; carbonic anhydrase inhibitors",
"Thu": "ANAL: Ion exchange chromatography; capillary electrophoresis – applications",
"Fri": "FORM: Microencapsulation – techniques (coacervation, spray-drying); targeted drug delivery",
"Sat": "JUDIC: WHO prequalification; ICH Q10 Pharmaceutical Quality System | CAREER: Practice dose adjustment calculation in CKD (creatinine clearance using Cockcroft-Gault)",
"Sun": "REVISION: Anki review. Integration: Furosemide",
},
20: {
"Mon": "THER: Antimicrobial therapy – selecting the right antibiotic; empirical vs culture-directed; stewardship",
"Tue": "PHARM: Antibiotics – Beta-lactams (mechanism + resistance), Aminoglycosides, Fluoroquinolones, Macrolides, Tetracyclines",
"Wed": "MEDCHEM: SAR of Beta-lactams – lactam ring, side chain modifications; MRSA resistance mechanism",
"Thu": "ANAL: Microbiological assays; biological methods of analysis; sterility testing",
"Fri": "FORM: Oral liquids – solutions, syrups, elixirs, suspensions; preservative selection",
"Sat": "JUDIC: Counterfeit drug enforcement; Drug Price Monitoring; FDC drug regulation | CAREER: Search for pharmacovigilance internship openings on LinkedIn/Naukri",
"Sun": "REVISION: Full Phase 5 (GI/Renal/Infection) review. Integration: Amoxicillin-Clavulanate",
},
# Phase 6 – Formulation deep dive
21: {
"Mon": "THER: Antifungal and antiviral therapy – selection, resistance patterns",
"Tue": "PHARM: Antifungals (Azoles, Polyenes, Echinocandins); Antivirals (HIV, Influenza, HCV)",
"Wed": "MEDCHEM: SAR of Azole antifungals (Fluconazole – triazole ring); Reverse transcriptase inhibitor scaffold",
"Thu": "ANAL: Biosimilar analysis – characterisation methods; peptide mapping; glycan analysis overview",
"Fri": "FORM: Nanoparticle and liposome drug delivery – preparation, characterisation, applications",
"Sat": "JUDIC: Biosimilar regulations in India; CDSCO approval pathway for similar biologics | CAREER: ICH Q11 – Development of biological APIs overview",
"Sun": "REVISION: Anki review. Integration: Fluconazole",
},
22: {
"Mon": "THER: Cancer pharmacotherapy – alkylating agents, antimetabolites, targeted therapy (TKIs)",
"Tue": "PHARM: Anticancer drug mechanisms – DNA damage, spindle poisons, hormone antagonists, monoclonal antibodies",
"Wed": "MEDCHEM: SAR of alkylating agents (nitrogen mustards); SAR of Methotrexate (DHFR inhibition)",
"Thu": "ANAL: Validation of biologics analytical methods; ELISA for protein quantitation",
"Fri": "FORM: Liposomes in cancer drug delivery – Doxil formulation; pegylation concept",
"Sat": "JUDIC: Orphan drug designation; rare disease drug approval; DPCO exemptions | CAREER: PubMed search – 1 recent systematic review on a topic relevant to PV career",
"Sun": "REVISION: Anki review. Integration: Methotrexate",
},
23: {
"Mon": "THER: Immunosuppression in transplant; autoimmune diseases (RA, SLE) – treatment algorithms",
"Tue": "PHARM: Calcineurin inhibitors (Cyclosporin, Tacrolimus), mTOR inhibitors; Biologics in RA",
"Wed": "MEDCHEM: SAR of Cyclosporin; peptide macrolide structure; CYP3A4 substrate and inhibitor properties",
"Thu": "ANAL: TLC – principles, Rf values, applications in drug purity testing",
"Fri": "FORM: Transdermal drug delivery systems – patches (Fentanyl, Scopolamine); iontophoresis",
"Sat": "JUDIC: Drug regulatory authority comparisons – FDA, EMA, CDSCO jurisdictions and timelines | CAREER: Update LinkedIn profile with PV certifications and skills",
"Sun": "REVISION: Anki review. Integration: Tacrolimus",
},
24: {
"Mon": "THER: Palliative care pharmacotherapy; pain management; opioid rotation",
"Tue": "PHARM: Opioid pharmacology – MOR/KOR/DOR; Morphine prototype; tolerance, dependence, withdrawal",
"Wed": "MEDCHEM: SAR of opioids – morphine scaffold; N-methyl group importance; modification to codeine, oxycodone",
"Thu": "ANAL: Full method validation project – compile validation report for one HPLC method (practice)",
"Fri": "FORM: Packaging materials – primary vs secondary; glass vs plastic; permeability; child-resistant closures",
"Sat": "JUDIC: Full revision of D&C Act schedules; prepare Schedule table summary | CAREER: Draft CV / resume – include GCP cert, PvPI report, and any publications",
"Sun": "REVISION: Full Phase 6 review. Integration: Morphine",
},
# Phase 7 – Judiciary
25: {
"Mon": "THER: Geriatric pharmacotherapy – polypharmacy, Beers criteria, drug dose adjustment in elderly",
"Tue": "PHARM: Pharmacokinetics in special populations – elderly, paediatric, pregnancy, renal/hepatic",
"Wed": "MEDCHEM: Chirality and drug activity – R/S naming; thalidomide case study; racemic vs enantiopure drugs",
"Thu": "ANAL: Full instrument revision – UV, IR, NMR, HPLC, GC, Mass Spectrometry overview",
"Fri": "FORM: Revision of all dosage forms – key features, advantages, limitations table",
"Sat": "JUDIC: Complete revision – all Acts (D&C, Pharmacy Act, NDPS, Patents, DPCO) in one sitting",
"Sun": "REVISION: Anki review. Integration: Warfarin (focus on special populations)",
},
26: {
"Mon": "THER: Paediatric pharmacotherapy – weight-based dosing, unlicensed drug use, formulation challenges",
"Tue": "PHARM: Pharmacogenomics – CYP450 polymorphisms; HLA-B*5701 (Abacavir); G6PD deficiency",
"Wed": "MEDCHEM: Bioisosterism and drug design; metabolic stability improvement strategies",
"Thu": "ANAL: Quality by Design (QbD) in analytical method development – Design of Experiments",
"Fri": "FORM: QbD in formulation development – Critical Quality Attributes, Design Space, QTPP",
"Sat": "JUDIC: Clinical establishment standards; pharmacy practice regulations; hospital pharmacy laws | CAREER: Research 3 PV job descriptions; identify skill gaps",
"Sun": "REVISION: Anki review. Write mock exam answers for 5 long-form questions",
},
27: {
"Mon": "THER: Drug interactions – pharmacokinetic (CYP) and pharmacodynamic; clinically significant pairs",
"Tue": "PHARM: Drug interactions deep dive – induction vs inhibition; narrow therapeutic index drugs",
"Wed": "MEDCHEM: CYP450 inducers and inhibitors – structural features; time-dependent inhibition",
"Thu": "ANAL: Hyphenated techniques – LC-MS/MS overview; applications in pharmacokinetic studies",
"Fri": "FORM: Scale-up and technology transfer – lab to pilot to commercial; IQ/OQ/PQ qualification",
"Sat": "JUDIC: Final revision – prepare a 1-page Act Summary sheet for each major law | CAREER: Finalise case report draft (submit to professor for review)",
"Sun": "REVISION: Full Phase 7 review. Mock test on Judiciary (30 MCQs). Integration: Warfarin + Drug interactions",
},
# Phase 8 – Full Revision
28: {
"Mon": "FULL REVISION: Therapeutics 2 – CVS + CNS systems; go through all Disease Summary Sheets",
"Tue": "FULL REVISION: Pharmacology 2 – receptor pharmacology + prototype drugs; all Anki cards flagged hard",
"Wed": "FULL REVISION: Medicinal Chemistry – all SAR topics; draw key structures from memory",
"Thu": "FULL REVISION: Pharmaceutical Analysis – all techniques; validation parameters table",
"Fri": "FULL REVISION: Formulation – all dosage forms; key excipients table; bioavailability links",
"Sat": "FULL REVISION: Judiciary – all Acts, Schedules, penalties; mock MCQs | CAREER: GCP cert completion if not done",
"Sun": "MOCK TEST 1 – attempt full mock paper (all 6 subjects); mark and analyse weak areas",
},
29: {
"Mon": "TARGETED REVISION: Therapeutics weak areas identified from Mock Test 1",
"Tue": "TARGETED REVISION: Pharmacology weak areas – re-do difficult Anki cards",
"Wed": "TARGETED REVISION: Medicinal Chemistry weak topics; re-draw SAR diagrams",
"Thu": "TARGETED REVISION: Analysis weak topics; redo validation calculations",
"Fri": "TARGETED REVISION: Formulation weak topics; re-read key excipient tables",
"Sat": "TARGETED REVISION: Judiciary weak areas; practice MCQs | CAREER: Finish CV; apply for 1 PV internship",
"Sun": "MOCK TEST 2 – attempt second full mock paper; compare with Mock Test 1; final gaps list",
},
# Phase 9 – Exam Prep
30: {
"Mon": "EXAM PREP: Past year question papers (Therapeutics + Pharmacology) – solve and self-mark",
"Tue": "EXAM PREP: Past year question papers (Medicinal Chemistry + Analysis) – solve and self-mark",
"Wed": "EXAM PREP: Past year question papers (Formulation + Judiciary) – solve and self-mark",
"Thu": "EXAM PREP: Final Anki session – clear ALL remaining due cards",
"Fri": "EXAM PREP: Write short notes on 20 most important topics across all subjects",
"Sat": "EXAM PREP: Final revision of Drug Master List – all prototype drugs; review Integration Log",
"Sun": "REST + Light review of summary sheets only. Sleep early. Exam week begins tomorrow!",
},
}
# Build header
ws1.merge_cells("A1:I1")
ws1["A1"] = "Pharm.D 3rd Year – 30-Week Daily Study Schedule"
ws1["A1"].font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
ws1["A1"].fill = fill(C_HEADER_DARK)
ws1["A1"].alignment = center()
ws1.row_dimensions[1].height = 32
ws1.merge_cells("A2:I2")
ws1["A2"] = "6 Subjects | August 2026 – March 2027 | Colour = Subject Focus"
ws1["A2"].font = Font(name="Arial", bold=False, size=9, color="FFFFFF")
ws1["A2"].fill = fill(C_HEADER_MID)
ws1["A2"].alignment = center()
ws1.row_dimensions[2].height = 18
# Column headers row 3
headers = ["Week", "Phase", "Monday\n(Therapeutics 2)", "Tuesday\n(Pharmacology 2)",
"Wednesday\n(Med Chem)", "Thursday\n(Pharm Analysis)",
"Friday\n(Formulation)", "Saturday\n(Judiciary + Career)", "Sunday\n(Revision + Anki)"]
col_fills = [C_HEADER_DARK, C_HEADER_DARK, C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC, C_REVISION]
ws1.row_dimensions[3].height = 36
for c, (h, cf) in enumerate(zip(headers, col_fills), start=1):
cell = ws1.cell(row=3, column=c, value=h)
cell.font = hdr_font(size=9, color="FFFFFF" if cf in [C_HEADER_DARK, C_HEADER_MID] else C_DARK_TEXT)
cell.fill = fill(cf)
cell.alignment = center(wrap=True)
cell.border = thick_border()
# Phase name lookup
phase_lookup = {}
for ps, pe, pname in phases:
for w in range(ps, pe + 1):
phase_lookup[w] = pname
phase_colors = {
"PHASE 1": "1F3864",
"PHASE 2": "375623",
"PHASE 3": "7B2C2C",
"PHASE 4": "7B5A00",
"PHASE 5": "1F4E79",
"PHASE 6": "4B0082",
"PHASE 7": "2F4F4F",
"PHASE 8": "5C1A1A",
"PHASE 9": "8B0000",
}
# Determine if we need a new phase header row
current_phase = None
row = 4
for week in range(1, 31):
phase_name = phase_lookup[week]
phase_key = phase_name.split(" – ")[0]
if phase_name != current_phase:
# Phase divider row
ws1.merge_cells(f"A{row}:I{row}")
phase_cell = ws1.cell(row=row, column=1, value=f"◆ {phase_name}")
pc = phase_colors.get(phase_key, C_HEADER_DARK)
phase_cell.font = Font(name="Arial", bold=True, size=10, color="FFFFFF")
phase_cell.fill = fill(pc)
phase_cell.alignment = left(wrap=False)
phase_cell.border = thick_border()
ws1.row_dimensions[row].height = 20
current_phase = phase_name
row += 1
# Week row
ws1.row_dimensions[row].height = 72
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
day_cols = [C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC, C_REVISION]
# Week number
wk_cell = ws1.cell(row=row, column=1, value=f"Week {week}")
wk_cell.font = Font(name="Arial", bold=True, size=9, color="FFFFFF")
wk_cell.fill = fill(C_HEADER_MID)
wk_cell.alignment = center()
wk_cell.border = thin_border()
# Phase short
ph_cell = ws1.cell(row=row, column=2, value=phase_key)
ph_cell.font = Font(name="Arial", bold=False, size=8, color="FFFFFF")
ph_cell.fill = fill(phase_colors.get(phase_key, C_HEADER_DARK))
ph_cell.alignment = center(wrap=True)
ph_cell.border = thin_border()
wk_topics = week_topics.get(week, {})
for ci, (day, dcol) in enumerate(zip(days, day_cols), start=3):
txt = wk_topics.get(day, "Self-study / catch-up")
cell = ws1.cell(row=row, column=ci, value=txt)
cell.font = Font(name="Arial", size=8, color=C_DARK_TEXT)
cell.fill = fill(dcol)
cell.alignment = left(wrap=True)
cell.border = thin_border()
row += 1
# Column widths
col_widths_1 = [8, 12, 32, 32, 32, 32, 32, 36, 32]
for i, w in enumerate(col_widths_1, start=1):
ws1.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 3 – TOPIC TRACKER
# ════════════════════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("Topic Tracker")
ws2.sheet_view.showGridLines = False
ws2.freeze_panes = "A4"
ws2.merge_cells("A1:F1")
ws2["A1"] = "Topic Tracker – Mark each topic as you complete it"
ws2["A1"].font = hdr_font(size=12)
ws2["A1"].fill = fill(C_HEADER_DARK)
ws2["A1"].alignment = center()
ws2.row_dimensions[1].height = 28
all_topics = {
"THERAPEUTICS 2": {
"color": C_THER,
"topics": [
"Hypertension – pathophysiology & classification",
"Hypertension – drug therapy & special populations",
"Dyslipidemia – statins & other agents",
"Angina pectoris – stable & unstable",
"Heart failure – systolic & diastolic, GDMT",
"Cardiac arrhythmias – Vaughan-Williams classification",
"Anticoagulation – DVT, PE, AF management",
"Epilepsy – seizure types & drug selection",
"Parkinson's disease – pharmacological management",
"Schizophrenia – antipsychotic therapy",
"Depression & Anxiety – antidepressants, anxiolytics",
"Diabetes mellitus Type 2 – oral agents",
"Diabetes mellitus Type 1 – insulin therapy",
"Thyroid disorders – hypo & hyperthyroidism",
"Corticosteroid therapy in disease",
"PUD & GERD – H. pylori, PPIs",
"IBD – Crohn's & UC management",
"UTI & CKD – drug dose adjustment in renal failure",
"Antimicrobial selection – stewardship principles",
"Antifungal & antiviral therapy",
"Cancer pharmacotherapy",
"Immunosuppression – transplant & autoimmune",
"Pain management & palliative care",
"Geriatric pharmacotherapy & Beers criteria",
"Paediatric pharmacotherapy",
"Drug interactions – CYP & pharmacodynamic",
]
},
"PHARMACOLOGY 2": {
"color": C_PHARM,
"topics": [
"Autonomic pharmacology – adrenergic receptors",
"Adrenergic agonists & antagonists",
"Beta-blockers (Propranolol prototype)",
"ACE inhibitors & ARBs",
"Calcium channel blockers",
"Diuretics – mechanism by class",
"Antiarrhythmics – Class I–IV",
"Anticoagulants – Heparin, Warfarin, DOACs",
"Antiepileptics – mechanisms by drug",
"Antiparkinsonian drugs",
"Antipsychotics – typical & atypical",
"Antidepressants – SSRIs, SNRIs, TCAs, MAOIs",
"Anxiolytics – benzodiazepines & buspirone",
"Insulin types & pharmacokinetics",
"Oral antidiabetics – all classes",
"Thyroid drugs",
"Corticosteroids – potency comparison",
"PPIs & H2 antagonists",
"Antibiotics – beta-lactam mechanism & resistance",
"Antibiotics – aminoglycosides, fluoroquinolones, macrolides",
"Antifungals & antivirals",
"Anticancer drugs – mechanism by class",
"Opioid pharmacology – MOR/KOR/DOR",
"Pharmacogenomics – CYP450 polymorphisms",
"Drug interactions – CYP induction/inhibition",
]
},
"MEDICINAL CHEMISTRY": {
"color": C_MEDCHEM,
"topics": [
"Drug-receptor interactions & physicochemical properties",
"SAR of beta-blockers (phenethylamine scaffold)",
"SAR of ACE inhibitors (prodrug concept)",
"SAR of statins",
"SAR of nitrates",
"SAR of cardiac glycosides",
"SAR of Class I antiarrhythmics",
"SAR of warfarin & anticoagulants",
"SAR of antiepileptics (Phenytoin, Carbamazepine)",
"SAR of Levodopa/Carbidopa",
"SAR of phenothiazines & butyrophenones",
"SAR of SSRIs & benzodiazepines",
"SAR of metformin & sulphonylureas",
"Structure of insulin & analogues",
"SAR of antithyroid drugs",
"SAR of corticosteroids",
"SAR of PPIs (pro-drug activation, chirality)",
"SAR of 5-ASA compounds",
"SAR of furosemide & diuretics",
"SAR of beta-lactam antibiotics",
"SAR of azole antifungals",
"SAR of alkylating agents & antimetabolites",
"SAR of opioids (morphine scaffold)",
"Bioisosterism & metabolic stability",
"CYP450 inhibitors/inducers – structural features",
"Chirality in drugs – R/S; thalidomide case",
]
},
"PHARMACEUTICAL ANALYSIS": {
"color": C_ANALYSIS,
"topics": [
"Acid-base titrations",
"Redox titrations (Permanganometry, Iodimetry)",
"Complexometric titrations (EDTA)",
"Precipitation titrations",
"UV-Vis spectroscopy – Beer-Lambert law",
"IR spectroscopy – functional group identification",
"Fluorimetry – principles & applications",
"Gas Chromatography – detectors & applications",
"HPLC – principles & instrumentation",
"HPLC method development",
"HPLC method validation (ICH Q2(R1))",
"TLC – Rf values & applications",
"Ion exchange & capillary electrophoresis",
"Pharmacopoeial tests – LOD, Ash, Heavy metals",
"Dissolution testing",
"Stability testing – ICH Q1A guidelines",
"Degradation product analysis",
"Karl Fischer titration",
"Potentiometry – ISE & pH meter",
"Gravimetry",
"LC-MS/MS overview",
"Validation parameters – LOD, LOQ, specificity",
"Microbiological assays",
"Biosimilar analytical characterisation",
"QbD in analytical method development",
"Full method validation report (practical)",
]
},
"FORMULATION": {
"color": C_FORM,
"topics": [
"Preformulation – solubility, polymorphism, stability",
"Tablet technology – granulation methods",
"Tablet compression & excipients",
"Tablet coating – film, enteric, sugar",
"Disintegration & dissolution testing",
"Capsule technology – hard & soft gelatin",
"Parenteral formulations – sterility, tonicity, pH",
"Emulsions – stability, HLB values",
"Suspensions – zeta potential, flocculation",
"Modified-release tablets – matrix & reservoir",
"Osmotic pump (OROS) systems",
"Transdermal drug delivery – TDDS patches",
"Topical formulations – creams, ointments, gels",
"Ophthalmic preparations",
"Nasal & rectal drug delivery; suppositories",
"Aerosols & inhalation – MDI, DPI, nebuliser",
"Oral liquids – solutions, syrups, suspensions",
"Controlled-release parenterals – depot, microspheres",
"Lyophilisation (freeze-drying)",
"Nanotechnology – nanoparticles, liposomes",
"Microencapsulation techniques",
"Packaging materials – glass, plastic, permeability",
"Semi-solid formulations deep dive",
"QbD in formulation – CQA, Design Space, QTPP",
"Scale-up & technology transfer",
"IQ/OQ/PQ qualification overview",
]
},
"PHARMACY JUDICIARY": {
"color": C_JUDIC,
"topics": [
"Drugs & Cosmetics Act 1940 – introduction & key definitions",
"D&C Act – Schedule H, H1, X classification",
"D&C Act – drug licensing & import/export",
"Pharmacy Act 1948 – pharmacist registration, PCI",
"DPCO 2013 – price control, NPPA, essential medicines",
"NDPS Act 1985 – schedules, controlled substances",
"New Drugs & Clinical Trials Rules 2019",
"Schedule Y – clinical trial requirements",
"Ethics committee (IEC) & informed consent rules",
"GMP – Schedule M requirements",
"Consumer Protection Act 2019 – patient rights",
"Drug advertising laws",
"Patents – product vs process; Section 3(d)",
"Compulsory licensing",
"Poison Act 1919",
"Biological products & biosimilar regulations",
"Medical devices regulation (2023 Act)",
"Spurious drugs – definition and enforcement",
"Drug Price Monitoring & FDC drug regulation",
"Import regulations & Drug Inspector powers",
"Orphan drug designation",
"WHO prequalification; ICH Q10",
"Clinical establishment standards",
"State vs CDSCO jurisdiction",
"Counter-feit drug enforcement",
"Full Schedule revision – all Schedules mapped",
]
},
}
# Add dropdown validation
dv = DataValidation(type="list", formula1='"Not Started,In Progress,Completed,Needs Review"', allow_blank=True)
ws2.add_data_validation(dv)
# Header row 3
h3_data = ["Subject", "Topic", "Status", "Date Completed", "Difficulty (1-5)", "Notes"]
h3_cols = [C_HEADER_DARK] * 6
ws2.row_dimensions[3].height = 22
for c, (h, cf) in enumerate(zip(h3_data, h3_cols), start=1):
cell = ws2.cell(row=3, column=c, value=h)
cell.font = hdr_font()
cell.fill = fill(cf)
cell.alignment = center()
cell.border = thin_border()
r = 4
for subj, data in all_topics.items():
# Subject header row
ws2.merge_cells(f"A{r}:F{r}")
sc = ws2.cell(row=r, column=1, value=subj)
sc.font = Font(name="Arial", bold=True, size=10, color=C_DARK_TEXT)
sc.fill = fill(data["color"])
sc.alignment = left(wrap=False)
sc.border = thick_border()
ws2.row_dimensions[r].height = 20
r += 1
for ti, topic in enumerate(data["topics"]):
ws2.row_dimensions[r].height = 18
row_fill = fill(data["color"]) if ti % 2 == 0 else fill(C_WHITE)
c1 = ws2.cell(row=r, column=1, value=subj)
c1.font = body_font(size=8)
c1.fill = row_fill
c1.alignment = center(wrap=False)
c1.border = thin_border()
c2 = ws2.cell(row=r, column=2, value=topic)
c2.font = body_font(size=9)
c2.fill = row_fill
c2.alignment = left()
c2.border = thin_border()
c3 = ws2.cell(row=r, column=3, value="Not Started")
c3.font = body_font(size=9)
c3.fill = fill(C_WHITE)
c3.alignment = center()
c3.border = thin_border()
dv.add(c3)
c4 = ws2.cell(row=r, column=4, value="")
c4.font = body_font(size=9)
c4.fill = fill(C_WHITE)
c4.alignment = center()
c4.border = thin_border()
c5 = ws2.cell(row=r, column=5, value="")
c5.font = body_font(size=9)
c5.fill = fill(C_WHITE)
c5.alignment = center()
c5.border = thin_border()
c6 = ws2.cell(row=r, column=6, value="")
c6.font = body_font(size=9)
c6.fill = fill(C_WHITE)
c6.alignment = left()
c6.border = thin_border()
r += 1
col_widths_2 = [22, 48, 16, 16, 16, 30]
for i, w in enumerate(col_widths_2, start=1):
ws2.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 4 – DRUG MASTER LIST
# ════════════════════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("Drug Master List")
ws3.sheet_view.showGridLines = False
ws3.freeze_panes = "A4"
ws3.merge_cells("A1:H1")
ws3["A1"] = "Drug Master List – Your Anki Source"
ws3["A1"].font = hdr_font(size=12)
ws3["A1"].fill = fill(C_HEADER_DARK)
ws3["A1"].alignment = center()
ws3.row_dimensions[1].height = 28
ws3.merge_cells("A2:H2")
ws3["A2"] = "For each drug: know Class → Mechanism → Indication → Side Effects → Contraindications → Key Interaction"
ws3["A2"].font = Font(name="Arial", size=9, color="FFFFFF")
ws3["A2"].fill = fill(C_HEADER_MID)
ws3["A2"].alignment = center()
h_row = ["Drug Name", "Class / Suffix", "Mechanism", "Key Indication(s)", "Major Side Effects",
"Key Contraindication", "Important Interaction", "Anki Card Added?"]
ws3.row_dimensions[3].height = 22
for c, h in enumerate(h_row, start=1):
cell = ws3.cell(row=3, column=c, value=h)
cell.font = hdr_font()
cell.fill = fill(C_HEADER_DARK)
cell.alignment = center(wrap=True)
cell.border = thin_border()
drugs = [
# CVS
("Atenolol", "Beta-blocker (-olol)", "Beta-1 receptor antagonist → ↓HR, ↓BP", "Hypertension, Angina, Post-MI", "Bradycardia, fatigue, cold extremities", "Asthma, severe bradycardia", "Verapamil (complete heart block)", ""),
("Propranolol", "Beta-blocker (non-selective)", "Non-selective β1/β2 block", "Hypertension, Angina, Arrhythmia, Hyperthyroidism", "Bronchospasm, bradycardia, hypoglycaemia masking", "Asthma, COPD", "Insulin (masks hypoglycaemia)", ""),
("Enalapril", "ACE inhibitor (-pril)", "Inhibits ACE → ↓Angiotensin II, ↓Aldosterone", "Hypertension, Heart failure, Post-MI", "Dry cough, hyperkalaemia, angioedema", "Pregnancy, bilateral RAS", "Potassium-sparing diuretics → hyperkalaemia", ""),
("Losartan", "ARB (-sartan)", "AT1 receptor antagonist → vasodilation", "Hypertension, Diabetic nephropathy", "Hyperkalaemia, dizziness (no cough)", "Pregnancy", "NSAIDs (reduce effect)", ""),
("Amlodipine", "CCB-DHP (-dipine)", "L-type Ca2+ channel block → vasodilation", "Hypertension, Stable angina, Raynaud's", "Ankle oedema, flushing, headache", "Severe aortic stenosis", "Simvastatin (increased statin level)", ""),
("Atorvastatin", "Statin (-statin)", "HMG-CoA reductase inhibitor → ↓LDL", "Dyslipidaemia, CV risk reduction", "Myopathy, rhabdomyolysis, elevated LFTs", "Active liver disease, pregnancy", "Gemfibrozil (↑myopathy risk)", ""),
("Furosemide", "Loop diuretic", "Inhibits Na-K-2Cl transporter in LoH", "HF, oedema, hypertensive urgency", "Hypokalaemia, ototoxicity, dehydration", "Anuria, sulpha allergy", "Aminoglycosides (↑nephrotoxicity)", ""),
("Digoxin", "Cardiac glycoside", "Inhibits Na/K-ATPase → ↑intracellular Ca", "Heart failure, AF rate control", "Nausea, bradycardia, arrhythmia (narrow TI)", "Hypertrophic obstructive cardiomyopathy", "Amiodarone, Quinidine (increase digoxin levels)", ""),
("Warfarin", "Oral anticoagulant (coumarin)", "Inhibits Vit K epoxide reductase → ↓Factors II,VII,IX,X", "DVT, PE, AF (thromboembolic prevention)", "Bleeding, skin necrosis", "Pregnancy, active bleeding", "Hundreds of CYP2C9 interactions", ""),
("Amiodarone", "Class III antiarrhythmic", "K+ channel block, Na/Ca/β block", "VF, VT, AF", "Thyroid toxicity, pulmonary fibrosis, photosensitivity", "Thyroid disease, iodine allergy", "Digoxin, Warfarin (increases levels of both)", ""),
# CNS
("Phenytoin", "Class IB antiepileptic / Na-channel blocker", "Blocks voltage-gated Na+ channels (use-dependent)", "Tonic-clonic, partial seizures", "Gingival hyperplasia, ataxia, diplopia, teratogenicity", "Absence seizures", "Warfarin, oral contraceptives (CYP inducer)", ""),
("Valproate", "Broad-spectrum antiepileptic", "Na+ channel block + GABA enhancement + T-Ca block", "All seizure types incl. absence, bipolar", "Weight gain, hair loss, hepatotoxicity, teratogenicity (NTD)", "Pregnancy (Category X for neural tube defects)", "Carbapenem antibiotics (reduce valproate level)", ""),
("Levetiracetam", "Antiepileptic (SV2A)", "Binds synaptic vesicle glycoprotein SV2A", "Focal + generalised seizures", "Behavioural disturbance (irritability)", "Few absolute contraindications", "Minimal CYP interactions (safe choice)", ""),
("Levodopa/Carbidopa","Anti-Parkinson", "L-DOPA crosses BBB → dopamine; Carbidopa inhibits peripheral DOPA decarboxylase", "Parkinson's disease", "Dyskinesia, on-off fluctuations, nausea", "Closed-angle glaucoma", "MAO-B inhibitors (Selegiline – beneficial combination; non-selective MAOIs – hypertensive crisis)", ""),
("Haloperidol", "Typical antipsychotic (butyrophenone)", "D2 receptor antagonist", "Schizophrenia, acute psychosis, delirium", "EPS, tardive dyskinesia, NMS, hyperprolactinaemia", "Parkinson's disease", "QT-prolonging drugs (additive risk)", ""),
("Clozapine", "Atypical antipsychotic", "Multi-receptor: D4, 5-HT2A, M1, H1, α1 block", "Treatment-resistant schizophrenia", "Agranulocytosis (MANDATORY FBC monitoring), seizures, hypersalivation", "Previous agranulocytosis", "Carbamazepine (↑seizure + agranulocytosis risk)", ""),
("Fluoxetine", "SSRI", "Serotonin reuptake inhibitor (SERT)", "Depression, OCD, Panic disorder, PMDD", "Sexual dysfunction, nausea, insomnia, serotonin syndrome (overdose)", "Concurrent MAOIs (washout 14 days)", "MAOIs → serotonin syndrome; CYP2D6 inhibitor", ""),
("Diazepam", "Benzodiazepine", "Positive allosteric modulator of GABA-A → ↑Cl- influx", "Anxiety, status epilepticus, alcohol withdrawal", "Sedation, dependence, tolerance, respiratory depression", "Sleep apnoea, myasthenia gravis", "Alcohol, opioids (CNS depression)", ""),
# Endocrine/Metabolic
("Metformin", "Biguanide oral antidiabetic", "Activates AMPK → ↓hepatic glucose output, ↑insulin sensitivity", "Type 2 DM (first-line)", "GI upset, lactic acidosis (rare, in renal failure)", "eGFR <30, contrast media (hold 48h)", "Alcohol (↑lactic acidosis risk)", ""),
("Glibenclamide", "Sulphonylurea oral antidiabetic","Closes K-ATP channel in beta cells → ↑insulin secretion", "Type 2 DM", "Hypoglycaemia, weight gain", "Type 1 DM, pregnancy, severe renal/hepatic failure", "Fluconazole (↑sulphonylurea effect)", ""),
("Sitagliptin", "DPP-4 inhibitor (-gliptin)", "Inhibits DPP-4 → ↑GLP-1, GIP → ↑insulin, ↓glucagon", "Type 2 DM", "Pancreatitis (rare), nasopharyngitis, weight neutral", "Diabetic ketoacidosis", "Few significant interactions", ""),
("Insulin Glargine", "Long-acting insulin analogue", "Binds insulin receptor → glucose uptake; forms microprecipitate at neutral pH → slow absorption", "Type 1 & 2 DM (basal)", "Hypoglycaemia, weight gain, injection site reactions", "Hypoglycaemia", "Corticosteroids (increase glucose → insulin need ↑)", ""),
("Omeprazole", "PPI (-prazole)", "Prodrug activated in parietal cell → irreversibly inhibits H+/K+ ATPase", "GERD, PUD, H. pylori (triple therapy)", "Hypomagnesaemia, C. diff risk, long-term B12 deficiency", "Concurrent atazanavir/nelfinavir use", "Clopidogrel (CYP2C19 inhibitor → ↓antiplatelet effect)", ""),
("Ciprofloxacin", "Fluoroquinolone antibiotic", "Inhibits DNA gyrase (topoisomerase II) and topoisomerase IV", "UTI, respiratory infections, anthrax", "Tendinopathy/tendon rupture, QT prolongation, CNS effects", "Children (growing cartilage), pregnancy, myasthenia gravis", "Antacids/Ca2+/Fe2+ (chelation, ↓absorption)", ""),
("Amoxicillin", "Aminopenicillin (beta-lactam)", "Inhibits PBP → disrupts peptidoglycan synthesis → cell lysis", "Community pneumonia, AOM, UTI, H. pylori", "Rash, diarrhoea, hypersensitivity", "Penicillin allergy", "Allopurinol (↑rash risk)", ""),
("Fluconazole", "Azole antifungal (-azole)", "Inhibits CYP51 (lanosterol 14α-demethylase) → depletes ergosterol", "Candidiasis, Cryptococcal meningitis", "Hepatotoxicity, QT prolongation, drug interactions", "Concurrent terfenadine/cisapride (QT risk)", "Warfarin, sulphonylureas, statins (CYP2C9/3A4 inhibitor)", ""),
("Morphine", "Opioid analgesic (MOR agonist)", "μ-opioid receptor agonist → ↓pain transmission, euphoria, respiratory depression", "Severe pain, pulmonary oedema, MI pain", "Respiratory depression, constipation, nausea, dependence, miosis", "Respiratory depression, head injury (raised ICP)", "MAOIs (serotonin syndrome), CNS depressants", ""),
("Prednisolone", "Corticosteroid (glucocorticoid)", "Binds GR → enters nucleus → gene transcription → ↓inflammation", "Asthma, IBD, RA, immunosuppression", "Cushing's, osteoporosis, hyperglycaemia, immunosuppression", "Active infection (relative), live vaccines", "NSAIDs (↑GI bleed), hypoglycaemics (hyperglycaemia)", ""),
("Methotrexate", "Antimetabolite / DMARD", "Inhibits DHFR → ↓folate → ↓DNA synthesis; also inhibits purine synthesis", "RA, psoriasis, cancer (high dose)", "Hepatotoxicity, myelosuppression, mucositis, teratogenicity", "Pregnancy, renal failure, bone marrow suppression", "NSAIDs (↑methotrexate toxicity), Trimethoprim", ""),
]
dv3 = DataValidation(type="list", formula1='"Yes,No"', allow_blank=True)
ws3.add_data_validation(dv3)
drug_subj_colors = {
"Beta-blocker": C_THER, "ACE inhibitor": C_THER, "ARB": C_THER, "CCB": C_THER,
"Statin": C_THER, "Loop diuretic": C_THER, "Cardiac glycoside": C_THER,
"Oral anticoagulant": C_THER, "Class III": C_THER, "antiepileptic": C_PHARM,
"Anti-Parkinson": C_PHARM, "antipsychotic": C_PHARM, "SSRI": C_PHARM,
"Benzodiazepine": C_PHARM, "Biguanide": C_ANALYSIS, "Sulphonylurea": C_ANALYSIS,
"DPP-4": C_ANALYSIS, "insulin": C_THER, "PPI": C_FORM,
"Fluoroquinolone": C_FORM, "Aminopenicillin": C_FORM, "Azole": C_MEDCHEM,
"Opioid": C_MEDCHEM, "Corticosteroid": C_JUDIC, "Antimetabolite": C_JUDIC,
}
for i, drug_row in enumerate(drugs, start=4):
ws3.row_dimensions[i].height = 40
row_color = C_ALT_ROW if i % 2 == 0 else C_WHITE
for c, val in enumerate(drug_row, start=1):
cell = ws3.cell(row=i, column=c, value=val)
cell.font = body_font(size=8)
cell.fill = fill(row_color)
cell.alignment = left(wrap=True)
cell.border = thin_border()
if drug_row[7] == "":
ws3.cell(row=i, column=8).value = "No"
dv3.add(ws3.cell(row=i, column=8))
col_widths_3 = [18, 22, 36, 28, 32, 28, 32, 14]
for i, w in enumerate(col_widths_3, start=1):
ws3.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 5 – INTEGRATION LOG
# ════════════════════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("Integration Log")
ws4.sheet_view.showGridLines = False
ws4.freeze_panes = "A4"
ws4.merge_cells("A1:H1")
ws4["A1"] = "Integration Log – One Drug Through All 6 Subjects (Weekly)"
ws4["A1"].font = hdr_font(size=12)
ws4["A1"].fill = fill(C_HEADER_DARK)
ws4["A1"].alignment = center()
ws4.row_dimensions[1].height = 28
ws4.merge_cells("A2:H2")
ws4["A2"] = "Every Sunday: pick the week's key drug and write one insight from each subject below."
ws4["A2"].font = Font(name="Arial", size=9, color="FFFFFF")
ws4["A2"].fill = fill(C_HEADER_MID)
ws4["A2"].alignment = center()
int_headers = ["Week", "Drug Selected", "Therapeutics 2\n(Clinical Use)", "Pharmacology 2\n(Mechanism)",
"Med Chem\n(SAR Insight)", "Pharm Analysis\n(How Tested)", "Formulation\n(Dosage Form)", "Judiciary\n(Legal/Reg Note)"]
ws4.row_dimensions[3].height = 36
int_hdr_colors = [C_HEADER_DARK, C_HEADER_DARK, C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC]
for c, (h, cf) in enumerate(zip(int_headers, int_hdr_colors), start=1):
cell = ws4.cell(row=3, column=c, value=h)
cell.font = hdr_font(size=9, color="FFFFFF" if cf in [C_HEADER_DARK] else C_DARK_TEXT)
cell.fill = fill(cf)
cell.alignment = center(wrap=True)
cell.border = thin_border()
# Pre-fill suggested drugs per week
suggested_drugs = {
1: "Adrenaline (Epinephrine)", 2: "Atenolol", 3: "Enalapril", 4: "Atorvastatin",
5: "Isosorbide Mononitrate", 6: "Digoxin", 7: "Amiodarone", 8: "Rivaroxaban",
9: "Sodium Valproate", 10: "Levodopa/Carbidopa", 11: "Risperidone", 12: "Fluoxetine",
13: "Metformin", 14: "Insulin Glargine", 15: "Levothyroxine", 16: "Prednisolone",
17: "Omeprazole", 18: "Mesalazine", 19: "Furosemide", 20: "Amoxicillin-Clavulanate",
21: "Fluconazole", 22: "Methotrexate", 23: "Tacrolimus", 24: "Morphine",
25: "Warfarin (elderly)", 26: "Ciprofloxacin", 27: "Warfarin + Interactions",
28: "Student's Choice", 29: "Student's Choice", 30: "Student's Choice",
}
for wk in range(1, 31):
r = wk + 3
ws4.row_dimensions[r].height = 55
row_color = C_ALT_ROW if wk % 2 == 0 else C_WHITE
ws4.cell(row=r, column=1, value=f"Week {wk}").font = body_font(bold=True, size=9)
ws4.cell(row=r, column=1).fill = fill(C_HEADER_MID if wk % 2 == 0 else C_HEADER_DARK)
ws4.cell(row=r, column=1).font = Font(name="Arial", bold=True, size=9, color="FFFFFF")
ws4.cell(row=r, column=1).alignment = center()
ws4.cell(row=r, column=1).border = thin_border()
ws4.cell(row=r, column=2, value=suggested_drugs.get(wk, "")).font = body_font(bold=True, size=9, color="1F3864")
ws4.cell(row=r, column=2).fill = fill(C_REVISION)
ws4.cell(row=r, column=2).alignment = center(wrap=True)
ws4.cell(row=r, column=2).border = thin_border()
int_colors = [C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC]
for c in range(3, 9):
cell = ws4.cell(row=r, column=c, value="")
cell.fill = fill(int_colors[c - 3])
cell.font = body_font(size=8)
cell.alignment = left(wrap=True)
cell.border = thin_border()
col_widths_4 = [10, 22, 28, 28, 28, 28, 28, 28]
for i, w in enumerate(col_widths_4, start=1):
ws4.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 6 – PROGRESS DASHBOARD
# ════════════════════════════════════════════════════════════════════════════
ws5 = wb.create_sheet("Progress Dashboard")
ws5.sheet_view.showGridLines = False
ws5.merge_cells("A1:F1")
ws5["A1"] = "Progress Dashboard – Updated Weekly"
ws5["A1"].font = hdr_font(size=13)
ws5["A1"].fill = fill(C_HEADER_DARK)
ws5["A1"].alignment = center()
ws5.row_dimensions[1].height = 30
ws5.merge_cells("A2:F2")
ws5["A2"] = "Update the 'Topics Done' column manually each Sunday. The % and status will update automatically."
ws5["A2"].font = Font(name="Arial", size=9, color="FFFFFF")
ws5["A2"].fill = fill(C_HEADER_MID)
ws5["A2"].alignment = center()
dash_headers = ["Subject", "Total Topics", "Topics Done", "% Complete", "Status", "Target (End of Sem)"]
ws5.row_dimensions[3].height = 22
for c, h in enumerate(dash_headers, start=1):
cell = ws5.cell(row=3, column=c, value=h)
cell.font = hdr_font()
cell.fill = fill(C_HEADER_DARK)
cell.alignment = center(wrap=True)
cell.border = thin_border()
dash_subjects = [
("Therapeutics 2", C_THER, 26),
("Pharmacology 2", C_PHARM, 25),
("Medicinal Chemistry", C_MEDCHEM, 26),
("Pharm Analysis", C_ANALYSIS, 26),
("Formulation", C_FORM, 26),
("Pharmacy Judiciary", C_JUDIC, 26),
]
for i, (subj, col, total) in enumerate(dash_subjects, start=4):
ws5.row_dimensions[i].height = 24
ws5.cell(row=i, column=1, value=subj).font = body_font(bold=True, size=10)
ws5.cell(row=i, column=1).fill = fill(col)
ws5.cell(row=i, column=1).alignment = left()
ws5.cell(row=i, column=1).border = thin_border()
ws5.cell(row=i, column=2, value=total).font = body_font(size=10)
ws5.cell(row=i, column=2).fill = fill(C_WHITE)
ws5.cell(row=i, column=2).alignment = center()
ws5.cell(row=i, column=2).border = thin_border()
done_col = get_column_letter(3)
total_col = get_column_letter(2)
ws5.cell(row=i, column=3, value=0).font = body_font(size=10, color="0070C0")
ws5.cell(row=i, column=3).fill = fill(C_WHITE)
ws5.cell(row=i, column=3).alignment = center()
ws5.cell(row=i, column=3).border = thin_border()
pct_formula = f"=IF({total_col}{i}=0,0,{done_col}{i}/{total_col}{i})"
ws5.cell(row=i, column=4, value=pct_formula).font = body_font(size=10)
ws5.cell(row=i, column=4).number_format = "0.0%"
ws5.cell(row=i, column=4).fill = fill(col)
ws5.cell(row=i, column=4).alignment = center()
ws5.cell(row=i, column=4).border = thin_border()
status_formula = f'=IF(D{i}=0,"Not Started",IF(D{i}<0.5,"In Progress",IF(D{i}<1,"Almost There!","COMPLETE!")))'
ws5.cell(row=i, column=5, value=status_formula).font = body_font(size=10)
ws5.cell(row=i, column=5).fill = fill(C_WHITE)
ws5.cell(row=i, column=5).alignment = center()
ws5.cell(row=i, column=5).border = thin_border()
ws5.cell(row=i, column=6, value="100%").font = body_font(size=10, color="375623")
ws5.cell(row=i, column=6).fill = fill(C_WHITE)
ws5.cell(row=i, column=6).alignment = center()
ws5.cell(row=i, column=6).border = thin_border()
# Overall progress
r_total = len(dash_subjects) + 4
ws5.row_dimensions[r_total].height = 26
ws5.cell(row=r_total, column=1, value="OVERALL PROGRESS").font = hdr_font(size=11)
ws5.cell(row=r_total, column=1).fill = fill(C_HEADER_DARK)
ws5.cell(row=r_total, column=1).alignment = center()
ws5.cell(row=r_total, column=1).border = thick_border()
total_topics_formula = f"=SUM(B4:B{r_total-1})"
ws5.cell(row=r_total, column=2, value=total_topics_formula).font = hdr_font(size=11)
ws5.cell(row=r_total, column=2).fill = fill(C_HEADER_MID)
ws5.cell(row=r_total, column=2).alignment = center()
ws5.cell(row=r_total, column=2).border = thick_border()
total_done_formula = f"=SUM(C4:C{r_total-1})"
ws5.cell(row=r_total, column=3, value=total_done_formula).font = hdr_font(size=11)
ws5.cell(row=r_total, column=3).fill = fill(C_HEADER_MID)
ws5.cell(row=r_total, column=3).alignment = center()
ws5.cell(row=r_total, column=3).border = thick_border()
overall_pct = f"=IF(B{r_total}=0,0,C{r_total}/B{r_total})"
ws5.cell(row=r_total, column=4, value=overall_pct).font = hdr_font(size=11)
ws5.cell(row=r_total, column=4).number_format = "0.0%"
ws5.cell(row=r_total, column=4).fill = fill(C_GOLD)
ws5.cell(row=r_total, column=4).font = Font(name="Arial", bold=True, size=11, color="FFFFFF")
ws5.cell(row=r_total, column=4).alignment = center()
ws5.cell(row=r_total, column=4).border = thick_border()
col_widths_5 = [28, 14, 14, 14, 18, 20]
for i, w in enumerate(col_widths_5, start=1):
ws5.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 7 – DAILY TIMETABLE TEMPLATE
# ════════════════════════════════════════════════════════════════════════════
ws6 = wb.create_sheet("Daily Timetable")
ws6.sheet_view.showGridLines = False
ws6.merge_cells("A1:E1")
ws6["A1"] = "Daily Study Timetable Template (Photocopy / Print for Each Day)"
ws6["A1"].font = hdr_font(size=12)
ws6["A1"].fill = fill(C_HEADER_DARK)
ws6["A1"].alignment = center()
ws6.row_dimensions[1].height = 28
daily_blocks = [
("TIME SLOT", "ACTIVITY", "SUBJECT", "TOPIC", "STATUS", ""),
("6:30 – 7:00 AM", "Morning Anki Review", "All Subjects", "Review due cards from previous days", "", ""),
("7:00 – 8:00 AM", "Deep Study Block 1", "TODAY'S MAIN SUBJECT", "Chapter / Topic (see Weekly Schedule)", "", ""),
("8:00 – 8:30 AM", "Breakfast + Break", "-", "-", "", ""),
("8:30 – 9:30 AM", "Deep Study Block 2", "TODAY'S MAIN SUBJECT", "Continue topic / worked examples", "", ""),
("9:30 – 10:00 AM", "Anki Card Creation", "Today's subject", "Make 10–15 new cards from today's study", "", ""),
("10:00 – 11:00 AM","College / Lectures", "As per timetable", "-", "", ""),
("11:00 – 1:00 PM", "College / Practicals", "As per timetable", "-", "", ""),
("1:00 – 2:00 PM", "Lunch + Rest", "-", "-", "", ""),
("2:00 – 3:00 PM", "Study Block 3 (Linked Subject)","Link to adjacent subject", "e.g. Mon=THER, Tue review the PHARM angle of Monday's drug", "", ""),
("3:00 – 3:30 PM", "Career Skill Time", "PV / ICH / Research", "GCP module / MedDRA / literature search / ICSR practice", "", ""),
("3:30 – 4:00 PM", "Break + Movement", "-", "-", "", ""),
("4:00 – 5:00 PM", "Study Block 4 (Weak Topic)", "Weakest subject this week","Re-study a flagged topic from Topic Tracker", "", ""),
("5:00 – 6:00 PM", "Exercise / Free time", "-", "-", "", ""),
("8:00 – 9:00 PM", "Evening Review", "Today's full topic", "Re-read notes; solve 5 MCQs on today's topic", "", ""),
("9:00 – 9:30 PM", "Integration Link (10 mins)", "All subjects", "How does today's drug connect to all 6 subjects? Write 1 line each", "", ""),
("9:30 PM", "Sleep", "-", "Consistent sleep is non-negotiable for memory consolidation", "", ""),
]
daily_colors = [C_HEADER_DARK, C_THER, C_THER, C_WEEKEND, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM,
C_WEEKEND, C_JUDIC, C_CAREER, C_WEEKEND, C_REVISION, C_WEEKEND, C_REVISION, C_CAREER, C_REVISION]
for i, (row_data, rc) in enumerate(zip(daily_blocks, daily_colors), start=2):
ws6.row_dimensions[i].height = 28 if i == 2 else 22
for c, val in enumerate(row_data, start=1):
cell = ws6.cell(row=i, column=c, value=val)
if i == 2:
cell.font = hdr_font()
cell.fill = fill(C_HEADER_DARK)
cell.alignment = center(wrap=True)
else:
cell.font = body_font(bold=(c == 1), size=9)
cell.fill = fill(rc)
cell.alignment = center(wrap=True) if c in [1, 3, 5] else left(wrap=True)
cell.border = thin_border()
col_widths_6 = [20, 28, 24, 48, 14, 10]
for i, w in enumerate(col_widths_6, start=1):
ws6.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SAVE
# ════════════════════════════════════════════════════════════════════════════
out_path = "/tmp/workspace/pharmd-schedule/PharmD_3rdYear_StudySchedule.xlsx"
wb.save(out_path)
print(f"Saved: {out_path}")
cd /tmp/workspace/pharmd-schedule && python build_schedule.py
ls -lh /tmp/workspace/pharmd-schedule/PharmD_3rdYear_StudySchedule.xlsx
PharmD 3rdYear StudySchedule
Spreadsheet · XLSX
| Sheet | What It Contains |
|---|---|
| Overview & Legend | Colour coding guide, subject abbreviations, recommended hours, and instructions on how to use every sheet |
| Weekly Schedule | Full 30-week day-by-day plan across all 6 subjects. Each week has specific topics for Monday-Sunday. 9 colour-coded phases from Foundation to Exam Prep |
| Topic Tracker | 155 topics across all 6 subjects with dropdown status (Not Started / In Progress / Completed / Needs Review), date completed, difficulty rating, and notes column |
| Drug Master List | 30 prototype drugs pre-filled with Class, Mechanism, Indication, Side Effects, Contraindication, Key Interaction, and Anki card checkbox |
| Integration Log | 30 rows (one per week) with a pre-suggested drug and space to write one insight per subject - your weekly "one drug through all 6 subjects" session |
| Progress Dashboard | Automatic % completion for each subject - just update the "Topics Done" number each Sunday and the formulas calculate everything |
| Daily Timetable | A printable hour-by-hour daily template from 6:30 AM to 9:30 PM you can follow every day |
Generate a semester study schedule spreadsheet I can follow
PharmD 3rdYear StudySchedule
Spreadsheet · XLSX
I am adhd and autism can you make me what I want
~/pharmd-schedule/build_adhd_schedule.py
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.datavalidation import DataValidation
wb = Workbook()
# ── COLOUR PALETTE (high-contrast, calming but distinct) ──────────────────
C_BG = "F8F8F8" # near-white background
C_THER = "FF6B6B" # coral red – Therapeutics
C_PHARM = "4ECDC4" # teal – Pharmacology
C_MEDCHEM = "FFE66D" # warm yellow – Med Chem
C_ANALYSIS = "A8E6CF" # mint green – Analysis
C_FORM = "C3B1E1" # soft purple – Formulation
C_JUDIC = "FFB347" # orange – Judiciary
C_BREAK = "D3D3D3" # light grey – Break
C_DONE = "B7E4C7" # success green – completed
C_HEADER = "2C3E50" # dark navy – headers
C_WHITE = "FFFFFF"
C_WARN = "FF4500" # urgent red
C_REWARD = "FFD700" # gold reward
subj_colors = {
"Therapeutics 2": C_THER,
"Pharmacology 2": C_PHARM,
"Medicinal Chemistry": C_MEDCHEM,
"Pharm Analysis": C_ANALYSIS,
"Formulation": C_FORM,
"Judiciary": C_JUDIC,
}
subj_emoji = {
"Therapeutics 2": "💊",
"Pharmacology 2": "🔬",
"Medicinal Chemistry": "⚗️",
"Pharm Analysis": "📊",
"Formulation": "🧪",
"Judiciary": "⚖️",
}
def fill(hex_col):
return PatternFill("solid", fgColor=hex_col)
def border(color="CCCCCC", style="thin"):
s = Side(style=style, color=color)
return Border(left=s, right=s, top=s, bottom=s)
def thick_border():
s = Side(style="medium", color="888888")
return Border(left=s, right=s, top=s, bottom=s)
def hdr(size=11, bold=True, color="FFFFFF"):
return Font(name="Arial", bold=bold, size=size, color=color)
def body(size=10, bold=False, color="1A1A1A"):
return Font(name="Arial", bold=bold, size=size, color=color)
def c(wrap=True, h="center", v="center"):
return Alignment(horizontal=h, vertical=v, wrap_text=wrap)
def left_align():
return Alignment(horizontal="left", vertical="center", wrap_text=True)
# ════════════════════════════════════════════════════════════════════════════
# SHEET 1 ── START HERE (Big welcome, simple rules)
# ════════════════════════════════════════════════════════════════════════════
ws0 = wb.active
ws0.title = "🟢 START HERE"
ws0.sheet_view.showGridLines = False
def set_cell(ws, cell_ref, value, fnt=None, fil=None, aln=None, brd=None, row_h=None, num_fmt=None):
cell = ws[cell_ref]
cell.value = value
if fnt: cell.font = fnt
if fil: cell.fill = fil
if aln: cell.alignment = aln
if brd: cell.border = brd
if num_fmt: cell.number_format = num_fmt
return cell
# Big title
ws0.merge_cells("A1:F1")
ws0["A1"] = "YOUR PHARMD STUDY PLANNER 🎓"
ws0["A1"].font = Font(name="Arial", bold=True, size=22, color="FFFFFF")
ws0["A1"].fill = fill(C_HEADER)
ws0["A1"].alignment = c()
ws0.row_dimensions[1].height = 52
ws0.merge_cells("A2:F2")
ws0["A2"] = "Made for YOUR brain | ADHD & Autism friendly | 20-min focus blocks | One task at a time"
ws0["A2"].font = Font(name="Arial", bold=False, size=11, color=C_HEADER)
ws0["A2"].fill = fill(C_REWARD)
ws0["A2"].alignment = c()
ws0.row_dimensions[2].height = 26
# Spacer
ws0.row_dimensions[3].height = 10
# THE 3 RULES (big, simple, coloured)
rules = [
("RULE 1", "Only look at ONE box at a time. Cover the rest with your hand if needed.", C_THER),
("RULE 2", "Every box = 20 minutes. Set a timer. When it rings → STOP, take a 5-min break.", C_PHARM),
("RULE 3", "Tick the ✅ box when done. That's your only job right now.", C_MEDCHEM),
]
r = 4
for title, text, col in rules:
ws0.merge_cells(f"A{r}:B{r}")
ws0.cell(row=r, column=1, value=title).font = Font(name="Arial", bold=True, size=16, color="FFFFFF")
ws0.cell(row=r, column=1).fill = fill(C_HEADER)
ws0.cell(row=r, column=1).alignment = c()
ws0.cell(row=r, column=1).border = thick_border()
ws0.row_dimensions[r].height = 50
ws0.merge_cells(f"C{r}:F{r}")
ws0.cell(row=r, column=3, value=text).font = Font(name="Arial", bold=True, size=13, color="1A1A1A")
ws0.cell(row=r, column=3).fill = fill(col)
ws0.cell(row=r, column=3).alignment = c()
ws0.cell(row=r, column=3).border = thick_border()
r += 1
ws0.row_dimensions[r].height = 14
r += 1
# Subject key
ws0.merge_cells(f"A{r}:F{r}")
ws0.cell(row=r, column=1, value="SUBJECT COLOUR KEY").font = Font(name="Arial", bold=True, size=13, color="FFFFFF")
ws0.cell(row=r, column=1).fill = fill(C_HEADER)
ws0.cell(row=r, column=1).alignment = c()
ws0.row_dimensions[r].height = 26
r += 1
for subj, col in subj_colors.items():
emoji = subj_emoji[subj]
ws0.merge_cells(f"A{r}:C{r}")
ws0.cell(row=r, column=1, value=f"{emoji} {subj}").font = Font(name="Arial", bold=True, size=12, color="1A1A1A")
ws0.cell(row=r, column=1).fill = fill(col)
ws0.cell(row=r, column=1).alignment = c()
ws0.cell(row=r, column=1).border = border()
ws0.merge_cells(f"D{r}:F{r}")
ws0.cell(row=r, column=4, value="").fill = fill(C_WHITE)
ws0.row_dimensions[r].height = 28
r += 1
ws0.row_dimensions[r].height = 14
r += 1
# Break reminder
ws0.merge_cells(f"A{r}:F{r}")
ws0.cell(row=r, column=1, value="⬜ BREAK (5 min after every 20-min block) — walk, water, stretch, breathe").font = Font(name="Arial", bold=True, size=12, color="1A1A1A")
ws0.cell(row=r, column=1).fill = fill(C_BREAK)
ws0.cell(row=r, column=1).alignment = c()
ws0.cell(row=r, column=1).border = thick_border()
ws0.row_dimensions[r].height = 30
r += 1
ws0.row_dimensions[r].height = 14
r += 1
# Navigation tip
ws0.merge_cells(f"A{r}:F{r}")
ws0.cell(row=r, column=1, value="👉 GO TO SHEET: 📅 Weekly Plan → then 📆 Today's Tasks → then ✅ Topic Checklist").font = Font(name="Arial", bold=True, size=12, color="FFFFFF")
ws0.cell(row=r, column=1).fill = fill(C_HEADER)
ws0.cell(row=r, column=1).alignment = c()
ws0.cell(row=r, column=1).border = thick_border()
ws0.row_dimensions[r].height = 36
col_w = [14, 14, 30, 18, 18, 18]
for i, w in enumerate(col_w, 1):
ws0.column_dimensions[get_column_letter(i)].width = w
# ════════════════════════════════════════════════════════════════════════════
# SHEET 2 ── WEEKLY PLAN (30 weeks, ONE subject per day, big visual blocks)
# ════════════════════════════════════════════════════════════════════════════
ws1 = wb.create_sheet("📅 Weekly Plan")
ws1.sheet_view.showGridLines = False
ws1.freeze_panes = "A4"
ws1.merge_cells("A1:H1")
ws1["A1"] = "📅 30-WEEK PLAN | Each cell = ONE topic for that day"
ws1["A1"].font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
ws1["A1"].fill = fill(C_HEADER)
ws1["A1"].alignment = c()
ws1.row_dimensions[1].height = 36
ws1.merge_cells("A2:H2")
ws1["A2"] = "Mon=💊Ther | Tue=🔬Pharm | Wed=⚗️MedChem | Thu=📊Analysis | Fri=🧪Formulation | Sat=⚖️Judiciary | Sun=🔁 Revise"
ws1["A2"].font = Font(name="Arial", bold=False, size=10, color="1A1A1A")
ws1["A2"].fill = fill(C_REWARD)
ws1["A2"].alignment = c()
ws1.row_dimensions[2].height = 22
# Column headers
days = ["Mon\n💊 Ther", "Tue\n🔬 Pharm", "Wed\n⚗️ MedChem", "Thu\n📊 Analysis", "Fri\n🧪 Form", "Sat\n⚖️ Judiciary", "Sun\n🔁 Revise"]
day_cols = [C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC, C_BREAK]
ws1.row_dimensions[3].height = 40
ws1.cell(row=3, column=1, value="WEEK").font = hdr(size=11)
ws1.cell(row=3, column=1).fill = fill(C_HEADER)
ws1.cell(row=3, column=1).alignment = c()
ws1.cell(row=3, column=1).border = thick_border()
for ci, (day, dc) in enumerate(zip(days, day_cols), start=2):
cell = ws1.cell(row=3, column=ci, value=day)
cell.font = Font(name="Arial", bold=True, size=10, color="1A1A1A")
cell.fill = fill(dc)
cell.alignment = c()
cell.border = thick_border()
# Weekly topics (SHORT - one line per cell, no walls of text)
weekly_topics = {
1: ["Hypertension – causes & BP targets", "Beta-blockers – Propranolol (how it works)", "What is SAR? Drug shapes & activity", "Acid-base titrations – how & why", "Preformulation – solubility & stability", "D&C Act 1940 – what it is & key Schedules", "Revise Week 1 + make 10 Anki cards"],
2: ["Hypertension drugs – ACE inhibitors", "ACE inhibitors – Enalapril (mechanism)", "SAR of ACE inhibitors – prodrug concept", "Redox titrations – permanganometry", "Tablets – granulation methods", "Schedule H, H1, X – which drug goes where", "Revise Week 2 + Anki review"],
3: ["Hypertension – CCBs & diuretics", "Calcium channel blockers – Amlodipine", "SAR of beta-blockers – phenethylamine ring", "Complexometric titrations – EDTA", "Tablet compression & key excipients", "Pharmacy Act 1948 – pharmacist registration","Revise Week 3 + Integration: Atenolol"],
4: ["Dyslipidemia – when to treat & targets","Statins – Atorvastatin (mechanism)", "SAR of statins – HMG-CoA binding", "UV-Vis spectroscopy – Beer-Lambert law", "Tablet coating – enteric vs film", "DPCO 2013 – drug price control basics", "Revise Week 4 + Anki batch review"],
5: ["Angina – types & treatment ladder", "Nitrates – Isosorbide mononitrate", "SAR of nitrates – NO release mechanism", "IR spectroscopy – functional groups", "Modified-release tablets – matrix systems", "Clinical Trials Rules 2019 – overview", "Revise Week 5 + Integration: Atenolol full"],
6: ["Heart failure – classification & drugs","Digoxin – mechanism & toxicity", "SAR of cardiac glycosides – steroid ring", "HPLC – how it works (basics)", "Parenteral formulations – sterility & pH", "Schedule Y – clinical trial requirements", "Revise Week 6 + Anki review"],
7: ["Arrhythmias – types & drug classes", "Amiodarone – Class III mechanism", "SAR of Class I antiarrhythmics", "HPLC method development", "Emulsions & suspensions – stability", "NDPS Act 1985 – controlled substances", "Revise Week 7 + Integration: Digoxin"],
8: ["Anticoagulation – DVT, PE, AF", "Warfarin vs Rivaroxaban – key differences", "SAR of warfarin – coumarin scaffold", "HPLC validation – accuracy & precision", "Topical formulations – creams & ointments", "Consumer Protection Act – patient rights", "PHASE 2 REVIEW: All CVS topics + big Anki"],
9: ["Epilepsy – seizure types & drugs", "Phenytoin & Valproate – mechanisms", "SAR of Phenytoin – hydantoin ring", "LOD & LOQ – what they mean", "Ophthalmic preparations – key requirements", "GMP – Schedule M basics", "Revise Week 9 + Integration: Valproate"],
10: ["Parkinson's – why dopamine drops", "Levodopa/Carbidopa – why combined", "SAR of Levodopa – catecholamine metabolism", "Gas chromatography – detectors (FID)", "Aerosols & inhalation – MDI vs DPI", "Patent law – product vs process patent", "Revise Week 10 + Anki review"],
11: ["Schizophrenia – positive/negative sx", "Haloperidol vs Clozapine – differences", "SAR of phenothiazines – Chlorpromazine", "Fluorimetry – principles & uses", "Nasal & rectal drug delivery – suppositories","Section 3(d) Indian Patent Act", "Revise Week 11 + Integration: Levodopa"],
12: ["Depression & Anxiety – diagnosis & Rx", "SSRIs (Fluoxetine) vs TCAs – why SSRIs win", "SAR of SSRIs – trifluoromethyl group", "Stability testing – ICH Q1A overview", "Controlled-release oral systems – OROS", "Drug advertising laws – what is allowed", "PHASE 3 REVIEW: All CNS topics + big Anki"],
13: ["Type 2 Diabetes – diagnosis & goals", "Metformin – AMPK mechanism", "SAR of Metformin – biguanide structure", "Pharmacopoeial tests – LOD, Ash value", "Insulin formulations – types & devices", "Import/export drug regulations", "Revise Week 13 + Integration: Metformin"],
14: ["Type 1 Diabetes – insulin regimens", "Insulin types – onset, peak, duration", "Structure of insulin – A/B chain modifications","Karl Fischer titration – water content","Depot injections – microspheres & implants", "Drug Information Centre rules", "Revise Week 14 + Anki review"],
15: ["Thyroid disorders – hypo & hyperthyroid","Levothyroxine & antithyroid drugs", "SAR of antithyroid drugs – thioureylene", "Potentiometry – pH meter & ISE", "Lyophilisation (freeze-drying) – how & why", "Poison Act 1919 – key points", "Revise Week 15 + Integration: Levothyroxine"],
16: ["Corticosteroids in disease – when & why","Prednisolone – GR mechanism & tapering", "SAR of corticosteroids – steroid nucleus", "Gravimetry – residue on ignition", "Semi-solid formulations – base selection", "Biological products regulation in India", "PHASE 4 REVIEW: All Endocrine topics"],
17: ["PUD & GERD – H. pylori & PPI therapy", "Omeprazole – prodrug activation in stomach", "SAR of PPIs – sulphenamide activation", "HPLC case study – PPI drugs analysis", "Enteric-coated tablets – Eudragit polymers", "Spurious drug laws & penalties", "Revise Week 17 + Integration: Omeprazole"],
18: ["IBD – Crohn's & UC treatment", "5-ASA & immunosuppressants in IBD", "SAR of 5-ASA – prodrug Sulfasalazine", "Chiral HPLC – optical rotation", "Suppositories – formulation principles", "Medical devices regulation 2023", "Revise Week 18 + Anki review"],
19: ["CKD – staging & dose adjustment", "Diuretics – loop vs thiazide vs K-sparing", "SAR of Furosemide – sulfonamide scaffold", "Ion exchange chromatography", "Microencapsulation – coacervation technique", "WHO prequalification basics", "Revise Week 19 + Integration: Furosemide"],
20: ["Antibiotics – how to choose the right one","Beta-lactams – mechanism & MRSA resistance","SAR of penicillins – lactam ring & side chains","Microbiological assays & sterility test","Oral liquids – syrups & suspensions", "FDC drug regulation & counterfeit laws", "PHASE 5 REVIEW: All GI/Renal/Infection"],
21: ["Antifungal & antiviral therapy", "Fluconazole & HIV drugs – mechanisms", "SAR of azole antifungals – triazole ring", "Biosimilar analysis overview", "Nanoparticles & liposomes – how prepared", "Biosimilar CDSCO approval pathway", "Revise Week 21 + Integration: Fluconazole"],
22: ["Cancer pharmacotherapy – drug classes", "Methotrexate & targeted therapy – mechanisms","SAR of alkylating agents & antimetabolites", "Validation of biological methods", "Liposomes in cancer – Doxil as example", "Orphan drug designation – what & why", "Revise Week 22 + Anki review"],
23: ["Immunosuppression – transplant & RA", "Cyclosporin & Tacrolimus – mechanisms", "SAR of Cyclosporin – peptide macrolide", "TLC – Rf values & purity testing", "Transdermal patches – Fentanyl & Scopolamine","FDA vs EMA vs CDSCO – jurisdiction table", "Revise Week 23 + Integration: Tacrolimus"],
24: ["Pain & palliative care – opioid use", "Morphine – MOR receptor & tolerance", "SAR of opioids – morphine scaffold changes", "Full validation report practice", "Packaging – glass vs plastic; permeability", "All D&C Act Schedules – full revision table","PHASE 6 REVIEW: All Formulation-heavy topics"],
25: ["Geriatric pharmacotherapy – Beers list","PK in elderly, children & pregnancy", "Chirality – R/S; thalidomide disaster", "All spectroscopy revision – UV, IR, NMR","All dosage forms – features & limits table", "All major Acts – one-line summary revision","Revise Week 25 + Integration: Warfarin elderly"],
26: ["Paediatric dosing – weight-based rules","Pharmacogenomics – CYP450 polymorphisms", "Bioisosterism & metabolic stability", "QbD in analytical methods – overview", "QbD in formulation – CQA & Design Space", "Hospital pharmacy & clinical establishment laws","Revise Week 26 + write 5 mock long answers"],
27: ["Drug interactions – TOP 10 clinical pairs","CYP induction vs inhibition – key examples","CYP450 inhibitors – structural features", "LC-MS/MS overview – application in PK", "Scale-up & technology transfer", "Final judiciary revision – all Acts table", "PHASE 7 REVIEW: Drug interactions + Judiciary MCQs"],
28: ["FULL REVISION: CVS & CNS therapeutics", "FULL REVISION: All prototype drug cards", "FULL REVISION: Draw 10 SAR diagrams from memory","FULL REVISION: All analytical techniques","FULL REVISION: All dosage forms table", "FULL REVISION: All Schedules & penalties", "MOCK TEST 1 – full paper all subjects"],
29: ["Fix weak spots from Mock Test 1", "Redo hardest Anki cards", "Re-draw SAR diagrams you got wrong", "Redo validation calculations", "Re-read dosage form summaries", "Judiciary MCQ practice (30 questions)", "MOCK TEST 2 – compare with Mock Test 1"],
30: ["Past year Ther + Pharm question papers","Past year MedChem + Analysis papers", "Short notes – 10 most tested SAR topics", "Instrument revision – 1 page each", "Past year Formulation questions", "Past year Judiciary questions", "REST + Light review only. Early sleep. Exams start!"],
}
phase_map = [
(1, 4, "PHASE 1 – Building Your Foundation", C_ANALYSIS),
(5, 8, "PHASE 2 – Heart & Blood (CVS)", C_THER),
(9, 12, "PHASE 3 – Brain & Nerves (CNS)", C_PHARM),
(13,16, "PHASE 4 – Hormones (Endocrine)", C_MEDCHEM),
(17,20, "PHASE 5 – Gut, Kidneys & Infection", C_FORM),
(21,24, "PHASE 6 – Formulation Deep Dive", C_JUDIC),
(25,27, "PHASE 7 – Revision & Judiciary", C_BREAK),
(28,29, "PHASE 8 – Full Revision", C_WARN),
(30,30, "PHASE 9 – Exam Preparation", "8B0000"),
]
ph_lookup = {}
for ps, pe, pn, pc in phase_map:
for w in range(ps, pe+1):
ph_lookup[w] = (pn, pc)
row = 4
prev_phase = None
for wk in range(1, 31):
pname, pcol = ph_lookup[wk]
if pname != prev_phase:
ws1.merge_cells(f"A{row}:H{row}")
pc = ws1.cell(row=row, column=1, value=f"▶ {pname}")
pc.font = Font(name="Arial", bold=True, size=11, color="FFFFFF")
pc.fill = fill(pcol)
pc.alignment = c()
pc.border = thick_border()
ws1.row_dimensions[row].height = 22
prev_phase = pname
row += 1
ws1.row_dimensions[row].height = 60
# Week number cell
wk_cell = ws1.cell(row=row, column=1, value=f"Wk\n{wk}")
wk_cell.font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
wk_cell.fill = fill(C_HEADER)
wk_cell.alignment = c()
wk_cell.border = thick_border()
topics = weekly_topics.get(wk, [""] * 7)
cols = [C_THER, C_PHARM, C_MEDCHEM, C_ANALYSIS, C_FORM, C_JUDIC, C_BREAK]
for ci, (topic, col) in enumerate(zip(topics, cols), start=2):
cell = ws1.cell(row=row, column=ci, value=topic)
cell.font = Font(name="Arial", bold=False, size=9, color="1A1A1A")
cell.fill = fill(col)
cell.alignment = c()
cell.border = border()
row += 1
# Column widths
ws1.column_dimensions["A"].width = 7
for ci in range(2, 9):
ws1.column_dimensions[get_column_letter(ci)].width = 26
# ════════════════════════════════════════════════════════════════════════════
# SHEET 3 ── TODAY'S TASKS (the daily Pomodoro sheet)
# ════════════════════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("📆 Today's Tasks")
ws2.sheet_view.showGridLines = False
ws2.merge_cells("A1:E1")
ws2["A1"] = "📆 TODAY'S TASKS — One block at a time. Set a 20-min timer."
ws2["A1"].font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
ws2["A1"].fill = fill(C_HEADER)
ws2["A1"].alignment = c()
ws2.row_dimensions[1].height = 40
ws2.merge_cells("A2:E2")
ws2["A2"] = "Fill in today's date and subject below. Do each block → tick it → take a 5-min break → next block."
ws2["A2"].font = Font(name="Arial", bold=False, size=10, color="1A1A1A")
ws2["A2"].fill = fill(C_REWARD)
ws2["A2"].alignment = c()
ws2.row_dimensions[2].height = 24
# Date/subject input
ws2.row_dimensions[3].height = 14
ws2["A4"] = "📅 TODAY'S DATE:"
ws2["A4"].font = Font(name="Arial", bold=True, size=12, color=C_HEADER)
ws2["A4"].fill = fill(C_BREAK)
ws2["A4"].alignment = c()
ws2.merge_cells("B4:C4")
ws2["B4"] = ""
ws2["B4"].fill = fill(C_WHITE)
ws2["B4"].border = thick_border()
ws2["D4"] = "📚 TODAY'S SUBJECT:"
ws2["D4"].font = Font(name="Arial", bold=True, size=12, color=C_HEADER)
ws2["D4"].fill = fill(C_BREAK)
ws2["D4"].alignment = c()
ws2["E4"] = ""
ws2["E4"].fill = fill(C_WHITE)
ws2["E4"].border = thick_border()
ws2.row_dimensions[4].height = 30
ws2.row_dimensions[5].height = 10
# Pomodoro blocks
pom_headers = ["#", "⏱ TIME BLOCK", "📝 TASK (what you'll study)", "✅ DONE?", "💬 HOW DID IT GO?"]
pom_cols = [5, 18, 40, 10, 22]
ws2.row_dimensions[6].height = 28
for ci, (h, w) in enumerate(zip(pom_headers, pom_cols), start=1):
cell = ws2.cell(row=6, column=ci, value=h)
cell.font = hdr(size=11)
cell.fill = fill(C_HEADER)
cell.alignment = c()
cell.border = thick_border()
ws2.column_dimensions[get_column_letter(ci)].width = w
# 8 pomodoro blocks per day (with breaks built in)
pomodoro_blocks = [
("1", "⏰ 07:00 – 07:20", "Anki review – due cards only", "", ""),
("🛑", "☕ 07:20 – 07:30", "BREAK – water, stretch, breathe", "⬜", ""),
("2", "⏰ 07:30 – 07:50", "Main topic – Block 1 (see Weekly Plan)", "", ""),
("🛑", "☕ 07:50 – 08:00", "BREAK – walk around, look outside", "⬜", ""),
("3", "⏰ 08:00 – 08:20", "Main topic – Block 2 (continue same topic)", "", ""),
("🛑", "☕ 08:20 – 08:30", "BREAK – snack, rest your eyes", "⬜", ""),
("4", "⏰ 08:30 – 08:50", "Make Anki cards from today's study (10 cards)","", ""),
("🛑", "☕ 08:50 – 09:00", "BREAK – long break before college", "⬜", ""),
("—", "🏫 09:00 – 02:00", "COLLEGE / LECTURES / PRACTICALS", "", ""),
("🛑", "☕ 02:00 – 02:30", "LUNCH BREAK – no study. Eat. Rest.", "⬜", ""),
("5", "⏰ 02:30 – 02:50", "Linked subject – connect today's drug to another subject", "", ""),
("🛑", "☕ 02:50 – 03:00", "BREAK", "⬜", ""),
("6", "⏰ 03:00 – 03:20", "Career skill – ICH guideline / PV / GCP module","", ""),
("🛑", "☕ 03:20 – 03:30", "BREAK – go outside if possible", "⬜", ""),
("7", "⏰ 04:00 – 04:20", "Weak topic from last session – re-study it", "", ""),
("🛑", "☕ 04:20 – 04:30", "BREAK", "⬜", ""),
("—", "🌅 05:00 – 08:00", "FREE TIME / exercise / dinner / rest", "", ""),
("8", "⏰ 08:00 – 08:20", "Evening review – read today's notes + 5 MCQs", "", ""),
("🛑", "☕ 08:20 – 08:30", "BREAK", "⬜", ""),
("9", "⏰ 08:30 – 08:50", "Integration: How does today's drug connect to all 6 subjects? Write 1 line each.", "", ""),
("🛑", "🌙 09:00 PM+", "SLEEP – consistent sleep = better memory. No screens.", "⬜", ""),
]
break_rows = {"🛑", "—"}
row = 7
dv2 = DataValidation(type="list", formula1='"✅ Done,❌ Skipped,⏳ Partially,⬜ Not yet"', allow_blank=True)
ws2.add_data_validation(dv2)
for block in pomodoro_blocks:
num, time_slot, task, done, how = block
is_break = num in break_rows
row_color = C_BREAK if is_break else C_WHITE
text_color = "555555" if is_break else "1A1A1A"
ws2.row_dimensions[row].height = 34 if not is_break else 26
c1 = ws2.cell(row=row, column=1, value=num)
c1.font = Font(name="Arial", bold=True, size=13, color="FFFFFF" if not is_break else "555555")
c1.fill = fill(C_HEADER if not is_break else C_BREAK)
c1.alignment = c()
c1.border = border()
c2 = ws2.cell(row=row, column=2, value=time_slot)
c2.font = Font(name="Arial", bold=True, size=10, color=text_color)
c2.fill = fill(row_color)
c2.alignment = c()
c2.border = border()
c3 = ws2.cell(row=row, column=3, value=task)
c3.font = Font(name="Arial", bold=False, size=10, color=text_color)
c3.fill = fill(row_color)
c3.alignment = left_align()
c3.border = border()
c4 = ws2.cell(row=row, column=4, value=done if done else "⬜ Not yet")
c4.font = Font(name="Arial", size=11)
c4.fill = fill(C_DONE if done == "✅" else C_WHITE)
c4.alignment = c()
c4.border = border()
if not is_break:
dv2.add(c4)
c5 = ws2.cell(row=row, column=5, value=how)
c5.font = Font(name="Arial", size=9, color="555555")
c5.fill = fill(C_WHITE)
c5.alignment = left_align()
c5.border = border()
row += 1
# Reward row
ws2.merge_cells(f"A{row}:E{row}")
ws2.cell(row=row, column=1, value="🏆 YOU FINISHED TODAY! You showed up. That is what matters. Mark tomorrow's week on the Weekly Plan.").font = Font(name="Arial", bold=True, size=11, color="1A1A1A")
ws2.cell(row=row, column=1).fill = fill(C_REWARD)
ws2.cell(row=row, column=1).alignment = c()
ws2.cell(row=row, column=1).border = thick_border()
ws2.row_dimensions[row].height = 32
# ════════════════════════════════════════════════════════════════════════════
# SHEET 4 ── TOPIC CHECKLIST (visual, one topic per row, big checkboxes)
# ════════════════════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("✅ Topic Checklist")
ws3.sheet_view.showGridLines = False
ws3.freeze_panes = "A4"
ws3.merge_cells("A1:D1")
ws3["A1"] = "✅ TOPIC CHECKLIST — Tick off each topic when done"
ws3["A1"].font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
ws3["A1"].fill = fill(C_HEADER)
ws3["A1"].alignment = c()
ws3.row_dimensions[1].height = 36
ws3.merge_cells("A2:D2")
ws3["A2"] = "Change STATUS to ✅ Done when finished. Red = needs review. Don't rush — one topic at a time."
ws3["A2"].font = Font(name="Arial", size=10, color="1A1A1A")
ws3["A2"].fill = fill(C_REWARD)
ws3["A2"].alignment = c()
ws3.row_dimensions[2].height = 22
ch_headers = ["Subject", "Topic", "Status", "Difficulty (1=Easy 5=Hard)"]
ch_widths = [22, 46, 16, 30]
ws3.row_dimensions[3].height = 24
for ci, (h, w) in enumerate(zip(ch_headers, ch_widths), start=1):
cell = ws3.cell(row=3, column=ci, value=h)
cell.font = hdr(size=11)
cell.fill = fill(C_HEADER)
cell.alignment = c()
cell.border = thick_border()
ws3.column_dimensions[get_column_letter(ci)].width = w
all_topics = [
# Therapeutics
("💊 Therapeutics 2", "Hypertension – types & BP targets", C_THER),
("💊 Therapeutics 2", "Hypertension drugs – ACE, ARB, CCB, beta-blocker", C_THER),
("💊 Therapeutics 2", "Dyslipidemia – statin therapy", C_THER),
("💊 Therapeutics 2", "Angina – stable, unstable, treatment", C_THER),
("💊 Therapeutics 2", "Heart failure – GDMT", C_THER),
("💊 Therapeutics 2", "Arrhythmias – drug classification", C_THER),
("💊 Therapeutics 2", "Anticoagulation – DVT, PE, AF", C_THER),
("💊 Therapeutics 2", "Epilepsy – drug selection by seizure type", C_THER),
("💊 Therapeutics 2", "Parkinson's – treatment algorithm", C_THER),
("💊 Therapeutics 2", "Schizophrenia – antipsychotic therapy", C_THER),
("💊 Therapeutics 2", "Depression & Anxiety – SSRI first-line", C_THER),
("💊 Therapeutics 2", "Diabetes Type 2 – oral agents", C_THER),
("💊 Therapeutics 2", "Diabetes Type 1 – insulin regimens", C_THER),
("💊 Therapeutics 2", "Thyroid – hypo & hyperthyroid drugs", C_THER),
("💊 Therapeutics 2", "Corticosteroids – when & which", C_THER),
("💊 Therapeutics 2", "PUD & GERD – H. pylori & PPIs", C_THER),
("💊 Therapeutics 2", "IBD – Crohn's & UC treatment", C_THER),
("💊 Therapeutics 2", "CKD – drug dose adjustment", C_THER),
("💊 Therapeutics 2", "Antibiotics – how to choose the right one", C_THER),
("💊 Therapeutics 2", "Cancer – drug class overview", C_THER),
("💊 Therapeutics 2", "Geriatric – Beers criteria", C_THER),
("💊 Therapeutics 2", "Drug interactions – TOP 10", C_THER),
# Pharmacology
("🔬 Pharmacology 2", "Beta-blockers – Propranolol prototype", C_PHARM),
("🔬 Pharmacology 2", "ACE inhibitors & ARBs", C_PHARM),
("🔬 Pharmacology 2", "Calcium channel blockers", C_PHARM),
("🔬 Pharmacology 2", "Diuretics – loop, thiazide, K-sparing", C_PHARM),
("🔬 Pharmacology 2", "Antiarrhythmics – Class I–IV", C_PHARM),
("🔬 Pharmacology 2", "Anticoagulants – heparin, warfarin, DOACs", C_PHARM),
("🔬 Pharmacology 2", "Antiepileptics – mechanism by drug", C_PHARM),
("🔬 Pharmacology 2", "Anti-Parkinson drugs – Levodopa mechanism", C_PHARM),
("🔬 Pharmacology 2", "Antipsychotics – typical vs atypical", C_PHARM),
("🔬 Pharmacology 2", "Antidepressants – SSRIs, SNRIs, TCAs", C_PHARM),
("🔬 Pharmacology 2", "Oral antidiabetics – all classes", C_PHARM),
("🔬 Pharmacology 2", "Insulin types & pharmacokinetics", C_PHARM),
("🔬 Pharmacology 2", "PPIs & H2 blockers", C_PHARM),
("🔬 Pharmacology 2", "Antibiotics – mechanisms & resistance", C_PHARM),
("🔬 Pharmacology 2", "Antifungals & antivirals", C_PHARM),
("🔬 Pharmacology 2", "Opioids – MOR receptor & tolerance", C_PHARM),
("🔬 Pharmacology 2", "Pharmacogenomics – CYP450 variants", C_PHARM),
# Med Chem
("⚗️ Med Chemistry", "SAR basics – physicochemical properties", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of beta-blockers", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of ACE inhibitors – prodrug concept", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of statins", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of nitrates", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of cardiac glycosides", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of antiepileptics", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of SSRIs & benzodiazepines", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of Metformin & sulphonylureas", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of PPIs – chirality concept", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of beta-lactam antibiotics", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of azole antifungals", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of opioids – morphine scaffold", C_MEDCHEM),
("⚗️ Med Chemistry", "SAR of corticosteroids", C_MEDCHEM),
("⚗️ Med Chemistry", "Chirality in drugs – thalidomide case", C_MEDCHEM),
("⚗️ Med Chemistry", "Bioisosterism – drug design tool", C_MEDCHEM),
# Analysis
("📊 Pharm Analysis", "Acid-base titrations", C_ANALYSIS),
("📊 Pharm Analysis", "Redox titrations", C_ANALYSIS),
("📊 Pharm Analysis", "Complexometric titrations – EDTA", C_ANALYSIS),
("📊 Pharm Analysis", "UV-Vis spectroscopy", C_ANALYSIS),
("📊 Pharm Analysis", "IR spectroscopy – functional groups", C_ANALYSIS),
("📊 Pharm Analysis", "Fluorimetry", C_ANALYSIS),
("📊 Pharm Analysis", "Gas Chromatography", C_ANALYSIS),
("📊 Pharm Analysis", "HPLC – principles & instrumentation", C_ANALYSIS),
("📊 Pharm Analysis", "HPLC method development", C_ANALYSIS),
("📊 Pharm Analysis", "HPLC validation – all 7 parameters", C_ANALYSIS),
("📊 Pharm Analysis", "TLC – Rf values", C_ANALYSIS),
("📊 Pharm Analysis", "Stability testing – ICH Q1A", C_ANALYSIS),
("📊 Pharm Analysis", "Karl Fischer titration", C_ANALYSIS),
("📊 Pharm Analysis", "LOD & LOQ – calculations", C_ANALYSIS),
("📊 Pharm Analysis", "Pharmacopoeial tests – LOD, Ash, Heavy metals", C_ANALYSIS),
# Formulation
("🧪 Formulation", "Preformulation – solubility & polymorphism", C_FORM),
("🧪 Formulation", "Tablets – granulation & compression", C_FORM),
("🧪 Formulation", "Tablet coating – film, enteric, sugar", C_FORM),
("🧪 Formulation", "Capsules – hard & soft gelatin", C_FORM),
("🧪 Formulation", "Parenteral formulations – sterility & tonicity",C_FORM),
("🧪 Formulation", "Emulsions & suspensions", C_FORM),
("🧪 Formulation", "Modified-release tablets", C_FORM),
("🧪 Formulation", "Transdermal patches – TDDS", C_FORM),
("🧪 Formulation", "Topical – creams, ointments, gels", C_FORM),
("🧪 Formulation", "Ophthalmic preparations", C_FORM),
("🧪 Formulation", "Aerosols & inhalation – MDI, DPI", C_FORM),
("🧪 Formulation", "Nasal & rectal; suppositories", C_FORM),
("🧪 Formulation", "Lyophilisation – freeze drying", C_FORM),
("🧪 Formulation", "Nanoparticles & liposomes", C_FORM),
("🧪 Formulation", "Packaging – glass, plastic, permeability", C_FORM),
("🧪 Formulation", "QbD in formulation – CQA & Design Space", C_FORM),
# Judiciary
("⚖️ Judiciary", "D&C Act 1940 – key definitions", C_JUDIC),
("⚖️ Judiciary", "Schedule H, H1, X – drug classification", C_JUDIC),
("⚖️ Judiciary", "Pharmacy Act 1948 – pharmacist registration", C_JUDIC),
("⚖️ Judiciary", "DPCO 2013 – price control & NPPA", C_JUDIC),
("⚖️ Judiciary", "NDPS Act 1985 – controlled substances", C_JUDIC),
("⚖️ Judiciary", "Clinical Trials Rules 2019", C_JUDIC),
("⚖️ Judiciary", "Schedule Y – clinical trial requirements", C_JUDIC),
("⚖️ Judiciary", "GMP – Schedule M", C_JUDIC),
("⚖️ Judiciary", "Patent law – Section 3(d)", C_JUDIC),
("⚖️ Judiciary", "Consumer Protection Act 2019", C_JUDIC),
("⚖️ Judiciary", "Spurious drugs – laws & penalties", C_JUDIC),
("⚖️ Judiciary", "Drug advertising laws", C_JUDIC),
]
dv3 = DataValidation(type="list", formula1='"⬜ Not Started,📖 In Progress,✅ Done,🔴 Needs Review"', allow_blank=True)
ws3.add_data_validation(dv3)
dv4 = DataValidation(type="list", formula1='"1,2,3,4,5"', allow_blank=True)
ws3.add_data_validation(dv4)
current_subj = None
r = 4
for subj, topic, col in all_topics:
if subj != current_subj:
# Subject divider
ws3.merge_cells(f"A{r}:D{r}")
sc = ws3.cell(row=r, column=1, value=subj)
sc.font = Font(name="Arial", bold=True, size=12, color="1A1A1A")
sc.fill = fill(col)
sc.alignment = c()
sc.border = thick_border()
ws3.row_dimensions[r].height = 26
current_subj = subj
r += 1
ws3.row_dimensions[r].height = 24
c1 = ws3.cell(row=r, column=1, value=subj)
c1.font = body(size=9)
c1.fill = fill(col)
c1.alignment = c(wrap=False)
c1.border = border()
c2 = ws3.cell(row=r, column=2, value=topic)
c2.font = body(size=10)
c2.fill = fill(C_WHITE if r % 2 == 0 else "FAFAFA")
c2.alignment = left_align()
c2.border = border()
c3 = ws3.cell(row=r, column=3, value="⬜ Not Started")
c3.font = body(size=10)
c3.fill = fill(C_WHITE)
c3.alignment = c()
c3.border = border()
dv3.add(c3)
c4 = ws3.cell(row=r, column=4, value="")
c4.font = body(size=11)
c4.fill = fill(C_WHITE)
c4.alignment = c()
c4.border = border()
dv4.add(c4)
r += 1
# ════════════════════════════════════════════════════════════════════════════
# SHEET 5 ── DRUG FLASHCARDS (ADHD-friendly: one drug, big font, few words)
# ════════════════════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("💊 Drug Flashcards")
ws4.sheet_view.showGridLines = False
ws4.merge_cells("A1:F1")
ws4["A1"] = "💊 DRUG FLASHCARDS — Use like Anki. Cover column and guess before you look."
ws4["A1"].font = Font(name="Arial", bold=True, size=13, color="FFFFFF")
ws4["A1"].fill = fill(C_HEADER)
ws4["A1"].alignment = c()
ws4.row_dimensions[1].height = 36
ws4.merge_cells("A2:F2")
ws4["A2"] = "Focus on ONE ROW at a time. Cover the rest. Each row = one drug to master."
ws4["A2"].font = Font(name="Arial", size=10, color="1A1A1A")
ws4["A2"].fill = fill(C_REWARD)
ws4["A2"].alignment = c()
ws4.row_dimensions[2].height = 22
fc_headers = ["💊 DRUG", "CLASS", "HOW IT WORKS\n(Mechanism)", "USED FOR\n(Indication)", "WATCH OUT FOR\n(Side Effect)", "DON'T GIVE IF\n(Contraindication)"]
fc_widths = [18, 20, 32, 26, 28, 28]
ws4.row_dimensions[3].height = 36
for ci, (h, w) in enumerate(zip(fc_headers, fc_widths), start=1):
cell = ws4.cell(row=3, column=ci, value=h)
cell.font = hdr(size=10)
cell.fill = fill(C_HEADER)
cell.alignment = c()
cell.border = thick_border()
ws4.column_dimensions[get_column_letter(ci)].width = w
flashcards = [
# (drug, class, mechanism, indication, side_effect, contraindication, color)
("Atenolol", "Beta-blocker\n(-olol)", "Blocks beta-1 receptor\n→ ↓Heart rate, ↓BP", "Hypertension\nAngina\nPost-MI", "Bradycardia\nFatigue\nCold hands", "Asthma\nSevere bradycardia", C_THER),
("Enalapril", "ACE inhibitor\n(-pril)", "Blocks ACE enzyme\n→ ↓Angiotensin II", "Hypertension\nHeart failure", "Dry cough\nAngioedema\nHigh K+", "Pregnancy\nBilateral renal artery stenosis", C_THER),
("Amlodipine", "CCB (-dipine)", "Blocks Ca2+ channels\nin blood vessel walls", "Hypertension\nAngina", "Ankle swelling\nFlushing", "Severe aortic stenosis", C_THER),
("Atorvastatin", "Statin (-statin)", "Blocks HMG-CoA reductase\n→ ↓LDL cholesterol", "High cholesterol\nCV risk reduction", "Muscle pain (myopathy)\n↑Liver enzymes", "Liver disease\nPregnancy", C_THER),
("Furosemide", "Loop diuretic", "Blocks Na-K-2Cl in Loop\nof Henle → ↑urine", "Heart failure\nOedema", "Low K+ (hypokalaemia)\nDeafness (high dose)","No urine (anuria)", C_THER),
("Digoxin", "Cardiac glycoside", "Inhibits Na/K ATPase\n→ ↑Heart contraction", "Heart failure\nAF (rate control)", "Nausea\nArrhythmia\nYellow vision", "Hypertrophic cardiomyopathy", C_PHARM),
("Warfarin", "Anticoagulant\n(coumarin)", "Blocks Vit K\n→ ↓Clotting factors", "DVT, PE\nAF (clot prevention)", "BLEEDING\nSkin necrosis", "Pregnancy\nActive bleeding", C_PHARM),
("Amiodarone", "Class III antiarrhythmic", "Blocks K+ channels\n→ slows heart rhythm", "VT, VF, AF", "Thyroid problems\nLung fibrosis\nSun sensitivity","Thyroid disease", C_PHARM),
("Phenytoin", "Antiepileptic\n(Na-channel)", "Blocks Na+ channels\n→ stops seizure spread", "Tonic-clonic seizures\nPartial seizures", "Gum overgrowth\nAtaxia\nBirth defects", "Absence seizures", C_PHARM),
("Sodium Valproate", "Broad antiepileptic", "Na+ block + ↑GABA\n+ blocks T-Ca channels", "ALL seizure types\nBipolar", "Weight gain\nHair loss\nLiver damage", "Pregnancy (causes NTDs!)", C_PHARM),
("Levodopa/Carbidopa","Anti-Parkinson", "L-DOPA → dopamine in brain\nCarbidopa stops conversion outside brain","Parkinson's disease","Dyskinesia\nOn-off effect\nNausea","Closed-angle glaucoma", C_PHARM),
("Haloperidol", "Typical antipsychotic\n(D2 block)","Blocks D2 receptors\nin brain", "Schizophrenia\nAcute psychosis", "Stiff muscles (EPS)\nTardive dyskinesia", "Parkinson's disease", C_PHARM),
("Fluoxetine", "SSRI", "Blocks serotonin reuptake\n→ ↑serotonin in synapse","Depression\nOCD\nPanic", "Nausea\nSex problems\nInsomnia", "MAO inhibitors (wait 14 days!)", C_PHARM),
("Metformin", "Biguanide\n(oral antidiabetic)", "Activates AMPK\n→ ↓glucose from liver", "Type 2 Diabetes\n(FIRST LINE)", "Stomach upset\nLactic acidosis (rare)", "Kidney failure (eGFR <30)\nContrast dye", C_MEDCHEM),
("Insulin Glargine", "Long-acting insulin", "Binds insulin receptor\n→ moves glucose into cells","Type 1 & 2 Diabetes\n(bedtime dose)", "Low blood sugar\nWeight gain", "Don't mix with other insulins!", C_MEDCHEM),
("Omeprazole", "PPI (-prazole)", "Prodrug → activated in stomach\n→ blocks acid pump permanently","GERD\nPUD\nH. pylori", "Low Mg2+\nC. diff risk\nB12 deficiency", "Concurrent atazanavir", C_MEDCHEM),
("Amoxicillin", "Penicillin\n(beta-lactam)", "Binds PBP → breaks\nbacterial cell wall", "Chest infection\nUTI\nH. pylori", "Rash\nDiarrhoea\nAllergy", "Penicillin allergy", C_FORM),
("Ciprofloxacin", "Fluoroquinolone", "Inhibits DNA gyrase\n→ kills bacteria", "UTI\nChest infection", "Tendon rupture\nQT prolongation", "Children\nPregnancy\nMyasthenia gravis", C_FORM),
("Fluconazole", "Azole antifungal\n(-azole)", "Inhibits CYP51\n→ depletes fungal ergosterol", "Candida infection\nFungal meningitis", "Liver toxicity\nQT prolongation", "Concurrent terfenadine", C_JUDIC),
("Morphine", "Opioid\n(MOR agonist)", "Activates mu-opioid receptor\n→ ↓pain signals", "Severe pain\nMI pain\nPulmonary oedema", "Respiratory depression\nConstipation\nDependence","Head injury\nRespiratory depression", C_JUDIC),
("Prednisolone", "Corticosteroid\n(glucocorticoid)","Binds GR → enters nucleus\n→ ↓inflammation", "Asthma\nIBD\nRheumatoid arthritis", "Cushing's syndrome\nHigh blood sugar\nOsteoporosis","Active infection\nLive vaccines", C_JUDIC),
("Methotrexate", "Antimetabolite\n(DMARD)", "Inhibits DHFR\n→ ↓DNA synthesis", "RA\nCancer\nPsoriasis", "Liver damage\nLow blood count\nMouth ulcers","Pregnancy\nRenal failure", C_JUDIC),
]
for i, fc in enumerate(flashcards, start=4):
drug, cls, mech, ind, se, ci_text, col = fc
ws4.row_dimensions[i].height = 52
row_fill = col if i % 2 == 0 else C_WHITE
vals = [drug, cls, mech, ind, se, ci_text]
for ci2, val in enumerate(vals, start=1):
cell = ws4.cell(row=i, column=ci2, value=val)
cell.font = Font(name="Arial", bold=(ci2 == 1), size=10 if ci2 > 1 else 11, color="1A1A1A")
cell.fill = fill(col if ci2 == 1 else (C_WHITE if ci2 % 2 == 0 else "FAFAFA"))
cell.alignment = c()
cell.border = border()
# ════════════════════════════════════════════════════════════════════════════
# SHEET 6 ── MY PROGRESS (simple, visual, motivating)
# ════════════════════════════════════════════════════════════════════════════
ws5 = wb.create_sheet("📈 My Progress")
ws5.sheet_view.showGridLines = False
ws5.merge_cells("A1:E1")
ws5["A1"] = "📈 MY PROGRESS — Update every Sunday"
ws5["A1"].font = Font(name="Arial", bold=True, size=14, color="FFFFFF")
ws5["A1"].fill = fill(C_HEADER)
ws5["A1"].alignment = c()
ws5.row_dimensions[1].height = 36
ws5.merge_cells("A2:E2")
ws5["A2"] = "Just change the 'Topics Done' number. Everything else updates automatically."
ws5["A2"].font = Font(name="Arial", size=10, color="1A1A1A")
ws5["A2"].fill = fill(C_REWARD)
ws5["A2"].alignment = c()
ws5.row_dimensions[2].height = 24
prog_headers = ["Subject", "Total\nTopics", "Topics\nDone ✏️", "% Complete", "How am I doing?"]
prog_widths = [26, 12, 14, 16, 22]
ws5.row_dimensions[3].height = 32
for ci, (h, w) in enumerate(zip(prog_headers, prog_widths), start=1):
cell = ws5.cell(row=3, column=ci, value=h)
cell.font = hdr(size=11)
cell.fill = fill(C_HEADER)
cell.alignment = c()
cell.border = thick_border()
ws5.column_dimensions[get_column_letter(ci)].width = w
progress_data = [
("💊 Therapeutics 2", C_THER, 22),
("🔬 Pharmacology 2", C_PHARM, 18),
("⚗️ Medicinal Chemistry", C_MEDCHEM, 16),
("📊 Pharm Analysis", C_ANALYSIS, 15),
("🧪 Formulation", C_FORM, 16),
("⚖️ Judiciary", C_JUDIC, 12),
]
for i, (subj, col, total) in enumerate(progress_data, start=4):
ws5.row_dimensions[i].height = 32
ws5.cell(row=i, column=1, value=subj).font = Font(name="Arial", bold=True, size=11, color="1A1A1A")
ws5.cell(row=i, column=1).fill = fill(col)
ws5.cell(row=i, column=1).alignment = c()
ws5.cell(row=i, column=1).border = border()
ws5.cell(row=i, column=2, value=total).font = Font(name="Arial", bold=True, size=12)
ws5.cell(row=i, column=2).fill = fill(C_WHITE)
ws5.cell(row=i, column=2).alignment = c()
ws5.cell(row=i, column=2).border = border()
ws5.cell(row=i, column=3, value=0).font = Font(name="Arial", bold=True, size=14, color="0070C0")
ws5.cell(row=i, column=3).fill = fill(C_WHITE)
ws5.cell(row=i, column=3).alignment = c()
ws5.cell(row=i, column=3).border = thick_border()
pct = f"=IF(B{i}=0,0,C{i}/B{i})"
ws5.cell(row=i, column=4, value=pct).number_format = "0%"
ws5.cell(row=i, column=4).font = Font(name="Arial", bold=True, size=12, color="1A1A1A")
ws5.cell(row=i, column=4).fill = fill(col)
ws5.cell(row=i, column=4).alignment = c()
ws5.cell(row=i, column=4).border = border()
status = f'=IF(C{i}=0,"🔴 Not started yet",IF(D{i}<0.3,"🟡 Just getting started",IF(D{i}<0.6,"🟠 Making progress!",IF(D{i}<1,"🟢 Almost there!","⭐ COMPLETE!"))))'
ws5.cell(row=i, column=5, value=status).font = Font(name="Arial", bold=True, size=11)
ws5.cell(row=i, column=5).fill = fill(C_WHITE)
ws5.cell(row=i, column=5).alignment = c()
ws5.cell(row=i, column=5).border = border()
# Total row
r_total = len(progress_data) + 4
ws5.row_dimensions[r_total].height = 36
ws5.cell(row=r_total, column=1, value="🏆 OVERALL").font = Font(name="Arial", bold=True, size=13, color="FFFFFF")
ws5.cell(row=r_total, column=1).fill = fill(C_HEADER)
ws5.cell(row=r_total, column=1).alignment = c()
ws5.cell(row=r_total, column=1).border = thick_border()
ws5.cell(row=r_total, column=2, value=f"=SUM(B4:B{r_total-1})").font = Font(name="Arial", bold=True, size=13, color="FFFFFF")
ws5.cell(row=r_total, column=2).fill = fill(C_HEADER)
ws5.cell(row=r_total, column=2).alignment = c()
ws5.cell(row=r_total, column=2).border = thick_border()
ws5.cell(row=r_total, column=3, value=f"=SUM(C4:C{r_total-1})").font = Font(name="Arial", bold=True, size=13, color="FFFFFF")
ws5.cell(row=r_total, column=3).fill = fill(C_HEADER)
ws5.cell(row=r_total, column=3).alignment = c()
ws5.cell(row=r_total, column=3).border = thick_border()
ws5.cell(row=r_total, column=4, value=f"=IF(B{r_total}=0,0,C{r_total}/B{r_total})").number_format = "0%"
ws5.cell(row=r_total, column=4).font = Font(name="Arial", bold=True, size=14, color="1A1A1A")
ws5.cell(row=r_total, column=4).fill = fill(C_REWARD)
ws5.cell(row=r_total, column=4).alignment = c()
ws5.cell(row=r_total, column=4).border = thick_border()
ws5.cell(row=r_total, column=5, value=f'=IF(D{r_total}=1,"⭐ SEMESTER COMPLETE! Amazing work!","Keep going — you\'re doing great! 💪")').font = Font(name="Arial", bold=True, size=11, color="1A1A1A")
ws5.cell(row=r_total, column=5).fill = fill(C_REWARD)
ws5.cell(row=r_total, column=5).alignment = c()
ws5.cell(row=r_total, column=5).border = thick_border()
# Motivational notes
r_mot = r_total + 2
ws5.merge_cells(f"A{r_mot}:E{r_mot}")
ws5.cell(row=r_mot, column=1, value="💡 REMEMBER: Your brain works differently — that is a strength. Short focused bursts beat long unfocused hours every time.").font = Font(name="Arial", bold=True, size=11, color="FFFFFF")
ws5.cell(row=r_mot, column=1).fill = fill(C_HEADER)
ws5.cell(row=r_mot, column=1).alignment = c()
ws5.cell(row=r_mot, column=1).border = thick_border()
ws5.row_dimensions[r_mot].height = 32
# ════════════════════════════════════════════════════════════════════════════
# SAVE
# ════════════════════════════════════════════════════════════════════════════
out_path = "/tmp/workspace/pharmd-schedule/PharmD_ADHD_StudyPlanner.xlsx"
wb.save(out_path)
print(f"✅ Saved: {out_path}")
cd /tmp/workspace/pharmd-schedule && python build_adhd_schedule.py
ls -lh /tmp/workspace/pharmd-schedule/PharmD_ADHD_StudyPlanner.xlsx
PharmD ADHD StudyPlanner
Spreadsheet · XLSX
| Feature | What it does for you |
|---|---|
| 20-min Pomodoro blocks | Every study block is exactly 20 min - no guessing how long to study |
| One task per cell | No walls of text. Each box = one thing to do |
| Big colours per subject | 🔴 Red = Therapeutics, 🟢 Teal = Pharmacology, 🟡 Yellow = Med Chem - find your subject instantly |
| Breaks built into the schedule | A grey break row after every study block - permission to stop is already written in |
| Emoji everywhere | 💊 🔬 ⚗️ 📊 🧪 ⚖️ - visual anchors so your brain knows which subject at a glance |
| Checkbox satisfaction | Tick ✅ when done - one small win at a time |
| Reward rows | Gold "You finished today!" row at the bottom of daily tasks |