attachment
attachment

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

analyse_media
I can see everything clearly from your notes. You're a 3rd-year Pharm.D student in India with 6-7 subjects to master, your college doesn't provide placements, and you want to build a career in Pharmacovigilance / Research while becoming the most skilled student possible. Let me give you a full, structured plan.

Your Complete Pharm.D Success Roadmap

Part 1 - How to Master 6-7 Subjects at Once

The Core Study Strategy

1. Active Recall over Passive Reading Don't re-read your notes. Instead, close the book and write down everything you remember. This forces your brain to actually retrieve information, which is the same action as answering an exam question.
2. Spaced Repetition (your most powerful tool) Use the free app Anki (available on Android/PC). Create flashcards for:
  • Drug names + mechanisms
  • Receptor subtypes and their effects
  • Drug side effects and contraindications
Review cards daily. Anki automatically schedules difficult cards more often and easy cards less often. Within 3 months you will have hundreds of drug facts locked in memory with minimal daily effort.
3. Integrate Subjects - Don't Silo Them This is the single biggest mistake Indian pharmacy students make. Pharmacology and Medicinal Chemistry are the same subject viewed from two angles:
  • Med Chem explains WHY a drug looks the way it does (structure-activity relationship)
  • Pharmacology explains WHAT that drug does in the body
When studying a drug class (e.g., beta-blockers):
  1. Open Med Chem - understand the core phenethylamine scaffold, the -OH group for beta-selectivity
  2. Immediately open Pharmacology - see how that structure binds beta-1 vs beta-2 receptors
  3. Open Clinical Pharmacy - see when you give it to a patient (hypertension, angina, arrhythmia) and when you DON'T (asthma, diabetes)
One drug = one learning session covering all subjects.

Part 2 - How to Remember Drugs

The Suffix System (memorize these)

SuffixDrug ClassExample
-ololBeta-blockersAtenolol, Propranolol
-prilACE inhibitorsEnalapril, Lisinopril
-sartanARBsLosartan, Valsartan
-statinHMG-CoA reductase inhibitorsAtorvastatin
-mabMonoclonal antibodiesRituximab, Trastuzumab
-cillinPenicillinsAmoxicillin
-cyclineTetracyclinesDoxycycline
-azoleAzole antifungals / PPIsOmeprazole, Fluconazole
-pam / -lamBenzodiazepinesDiazepam, Alprazolam
-dipineCalcium channel blockers (DHP)Amlodipine, Nifedipine
Learn the suffix - you automatically know the class and mechanism.

The Disease-to-Drug Flowchart Method

For every disease, draw this chain: Disease → Pathophysiology → Receptor/Enzyme Target → Drug Class → Specific Drug → Dose/Side Effect
Example:
Hypertension → Increased peripheral resistance + cardiac output → Beta-1 receptor (heart) / ACE (vasoconstriction) → Beta-blocker / ACE inhibitor → Atenolol 50mg / Enalapril 5mg → Bradycardia / Dry cough
Draw this once on paper. You will never forget it.

Part 3 - How to Provide the Right Drug to a Patient

This is Clinical Pharmacy - your most important practical skill. Follow this 5-step SOAP framework for every patient case:
  1. Subjective - What does the patient complain of?
  2. Objective - Lab values, vitals, ECG, imaging
  3. Assessment - What is the diagnosis?
  4. Plan - Which drug? What dose? Which route? For how long?
Before selecting any drug, always ask:
  • Does the patient have renal/hepatic impairment? (adjust dose or avoid the drug)
  • Is the patient pregnant? (check FDA/TGA pregnancy categories)
  • Any drug interactions with current medications?
  • Any allergies?
  • Is the patient a child or elderly? (dose adjustment needed)
Practice this on free clinical case study websites like NEJM Case Records, PharmaFactz, or Osmosis case studies.

Part 4 - Pharmacovigilance Career Path (Your Goal)

Pharmacovigilance is one of the fastest-growing sectors in Indian pharma. Here is exactly what you need:

Skills to Build Now (in order of priority)

1. MedDRA Coding - Learn the Medical Dictionary for Regulatory Activities terminology. It's the universal language of adverse drug reactions. Free learning available on the MedDRA MSSO website.
2. ICH Guidelines - Especially:
  • ICH E2A (Definitions and Standards for Expedited Reporting)
  • ICH E2B (Electronic Transmission of Individual Case Safety Reports)
  • ICH E6 (GCP - Good Clinical Practice)
3. Individual Case Safety Reports (ICSRs) - Learn how to write an ICSR. This is the core document in PV work. Practice templates are available on CDSCO (India's drug regulator) and EMA websites.
4. Regulatory Knowledge - Know the difference between FDA (USA), EMA (Europe), and CDSCO (India). Understand Schedule Y of the Indian Drugs and Cosmetics Act.
5. Pharmacovigilance Software - Oracle Argus Safety and ArisGlobal Relsys are the industry standards. You won't get full access as a student, but take any Udemy or Coursera course that introduces you to these platforms.

Certifications to Get

CertificationPlatformCost
GCP CertificateCITI Program (online)Free for students
PV Foundation CourseUppsala Monitoring Centre (UMC)Partially free
Clinical Research FundamentalsCoursera (ICH-GCP)Free to audit
Adverse Drug Reaction ReportingCDSCO PvPI portalFree

Real-Time Projects Without College Support

  1. Adverse Drug Reaction Reporting - Go to your hospital/pharmacist rotation. Identify ANY suspected ADR and file it on the Indian PvPI (Pharmacovigilance Programme of India) portal at pvpi.gov.in. Each report you file is real-world PV work you can put on your CV.
  2. Case Reports - When you encounter an interesting drug-related case during internship, write it up as a case report and submit to free journals like Journal of Pharmacovigilance or Indian Journal of Pharmacology. A single published case report places you above 95% of fresh Pharm.D graduates.
  3. Systematic Reviews - Team up with a professor. Choose a drug topic, search PubMed/Cochrane, and summarize the evidence. This is publishable work and teaches you research methodology.
  4. LinkedIn - Create a profile NOW. Follow people working in PV at Sun Pharma, Cipla, Dr. Reddy's, Lupin, and IQVIA. Comment on their posts. Many PV jobs in India are found through connections, not placements.

Part 5 - Your Weekly Study Schedule Blueprint

Here is a realistic schedule to master 6-7 subjects while building career skills:
DayAcademic Study (3-4 hrs)Career Skill (1 hr)
MonPharmacology (1 drug class, full depth)Anki review + new cards
TueMedicinal Chemistry (link to Monday's drug)Read 1 ICH guideline section
WedClinical Pharmacy (patient case using Monday's drug)MedDRA browsing
ThuPharmaceutics / PharmacokineticsGCP course module
FriPathology / MicrobiologyWrite summary of the week
SatFull revision (all subjects, Anki)Work on 1 case report or literature search
SunRest + 1 hr light reviewBrowse PubMed for current PV papers

Part 6 - Qualities of a Skillful Pharm.D Student

You asked "what qualities should I have?" Here they are, ranked by impact:
  1. Curiosity about mechanism - Always ask WHY, not just WHAT. Why does this drug cause this side effect? Why is it contraindicated here?
  2. Systematic thinking - Use frameworks (like SOAP above) instead of random memorization
  3. Strong reading habit - Read at least one pharmacology or clinical article per week on PubMed
  4. Communication - A pharmacist who cannot explain a drug clearly to a patient or doctor is not useful regardless of knowledge
  5. Self-accountability - Since your college doesn't support you, you must replace that support yourself with discipline and online resources
  6. Documentation skills - In research and PV, if you didn't write it down, it didn't happen

Quick Resource List

  • Katzung & Trevor's Pharmacology - Best pharmacology textbook for conceptual understanding
  • Rang & Dale's Pharmacology - Deeper mechanisms
  • Goodman & Gilman - The ultimate drug reference
  • PubMed (pubmed.ncbi.nlm.nih.gov) - Free research papers
  • Osmosis (osmosis.org) - Video-based clinical pharmacology
  • Anki (apps.ankiweb.net) - Spaced repetition flashcards
  • CDSCO (cdsco.gov.in) - Indian regulatory guidelines
  • PvPI portal - For ADR reporting practice

You have a clear goal and the right mindset. Your college's failure to provide placements is a constraint, not a barrier - the skills you build independently will actually make you stronger than students who relied entirely on campus placements. Start with Anki today for drug memorization, and register on the CITI Program for a free GCP certificate this week. Those two steps take less than 2 hours and will immediately differentiate you.

I have subject thereputics 2 Pharmacology 2 Medical chem Pharmaceutical analysis Formulation Judiciary

Asking for Preferences
Perfect timing - starting from the beginning of semester is the best position to be in. Here is everything you need: a complete guide for all 6 subjects covering key topics, how to study each one, how to link them together, and a full semester plan.

Complete Pharm.D 3rd Year Semester Plan

How These 6 Subjects Connect (The Big Picture)

Before studying anything, understand this map - it will save you hundreds of hours:
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
Every drug you study passes through all 6 levels. Use this chain daily.

Subject 1 - Therapeutics 2

What This Subject Is

The clinical application of drugs to specific diseases. This is where pharmacology becomes patient care.

Key Topic Areas (Pharm.D 3rd Year Standard)

SystemMajor Diseases
CardiovascularHypertension, Heart failure, Angina, Arrhythmias, Dyslipidemia
RespiratoryAsthma, COPD, Tuberculosis
EndocrineDiabetes mellitus (Type 1 & 2), Thyroid disorders, Cushing's
CNSEpilepsy, Parkinson's, Schizophrenia, Depression, Anxiety
GIPUD, GERD, IBD, Liver disease
RenalCKD, UTI, Nephrotic syndrome
InfectionsAntimicrobial therapy selection, Sepsis

How to Study It

Use the SOAP-DRP method for every disease:
  1. Disease - What is the pathophysiology in 3 lines?
  2. Drug of choice - First-line, second-line, alternatives
  3. Reason for choice - Mechanism that matches the pathophysiology
  4. Patient factors - What changes if the patient has renal failure? Is pregnant? Is elderly?
  5. Problems - Common drug interactions and side effects to monitor
Practice tool: For every disease, create a one-page "Disease Summary Sheet":
  • Pathophysiology (diagram)
  • First-line drug + dose
  • Monitoring parameters (what lab values to check)
  • When to switch/add therapy

Best Resources

  • DiPiro's Pharmacotherapy: A Pathophysiologic Approach - The Bible for Therapeutics. Every topic is disease → drug → monitoring.
  • Goodman & Gilman for drug details
  • Osmosis.org - Free video explanations per disease (excellent for Indian students)

Subject 2 - Pharmacology 2

What This Subject Is

The mechanisms of drug action at receptor/molecular level. This is the "engine" behind Therapeutics.

Key Topic Areas

SystemMajor Drug Classes
CardiovascularAntihypertensives (all classes), Antiarrhythmics, Anticoagulants, Thrombolytics
CNSAntiepileptics, Antipsychotics, Antidepressants, Anxiolytics, Analgesics (opioids)
EndocrineInsulin types, Oral antidiabetics, Thyroid drugs, Corticosteroids
ChemotherapyCancer pharmacology, Antibiotics (mechanisms of action), Antifungals, Antivirals
AutonomicAdrenergic drugs, Cholinergic drugs (foundation for everything)

How to Study It

The Receptor-Action-Effect Table method:
For every drug class, fill this table:
ParameterDetails
Receptor/TargetBeta-1, ACE, Na channel, etc.
MechanismBlock, activate, inhibit enzyme
PharmacokineticsOral/IV, half-life, metabolism (CYP?)
Effects (wanted)Lower BP, reduce HR
Effects (unwanted)Bradycardia, hypotension, cough
ContraindicationsAsthma, pregnancy, renal failure
Drug class mastery trick: Study the prototype drug of each class deeply. Once you know Propranolol (the prototype beta-blocker), all other beta-blockers are just variations. Same for every class.
ClassPrototype to Master First
Beta-blockersPropranolol
ACE inhibitorsCaptopril
BenzodiazepinesDiazepam
OpioidsMorphine
PenicillinsBenzylpenicillin
FluoroquinolonesCiprofloxacin
SSRIsFluoxetine

Best Resources

  • Rang & Dale's Pharmacology (7th/8th Ed) - Best for mechanisms
  • Katzung's Basic & Clinical Pharmacology - Excellent balance of mechanism + clinical
  • Lippincott's Pharmacology - Best for visual learners, great tables and diagrams

Subject 3 - Medicinal Chemistry

What This Subject Is

The relationship between a drug's chemical structure and its biological activity (Structure-Activity Relationship = SAR). This explains WHY drugs work.

Key Topic Areas

TopicWhat to Focus On
SAR of CNS drugsBenzodiazepines, Barbiturates, Phenothiazines
SAR of Cardiovascular drugsBeta-blockers (phenethylamine scaffold), Calcium channel blockers
SAR of AntibioticsBeta-lactam ring (penicillins/cephalosporins), why resistance develops
SAR of AnalgesicsOpioid scaffold, NSAIDs (carboxylic acid group)
Drug metabolismPhase 1 (CYP450 oxidation), Phase 2 (conjugation) - how structure changes
ProdrugsEnalapril → Enalaprilat, why we make prodrugs
StereochemistryChirality in drugs, why S-omeprazole is better than racemic omeprazole

How to Study It

The SAR Triangle:
For every drug, connect 3 points:
STRUCTURE (functional groups)
        ↓
PHYSICAL PROPERTIES (solubility, pKa, lipophilicity)
        ↓
BIOLOGICAL ACTIVITY (receptor binding, metabolism, toxicity)
Example - Aspirin:
  • Structure: Acetyl group on salicylic acid
  • Property: Irreversibly acetylates COX enzyme
  • Activity: Permanent inhibition (why it's different from ibuprofen)
  • If you remove the acetyl group → salicylic acid → less effective, more GI irritation
Draw every structure by hand at least once. Don't just read it. Drawing forces you to understand it.

Best Resources

  • Foye's Principles of Medicinal Chemistry - The standard textbook
  • Graham Patrick's Introduction to Medicinal Chemistry - Easier to understand, good for beginners
  • Draw structures on paper or use free tool ChemDraw online

Subject 4 - Pharmaceutical Analysis

What This Subject Is

Methods to test drug purity, identity, potency, and quality. It supports formulation and regulatory compliance.

Key Topic Areas

CategoryMethods
TitrimetryAcid-base, redox, complexometric, precipitation titrations
SpectroscopyUV-Vis, IR (identification), NMR (structure confirmation), fluorimetry
ChromatographyTLC (basic), HPLC (most important), GC, ion exchange
Pharmacopoeial testsLOD, LOI, Ash value, Heavy metals, Dissolution testing
Stability testingICH Q1A guidelines, accelerated stability, degradation products
ValidationAccuracy, precision, linearity, LOD, LOQ, specificity

How to Study It

The "Why is this test done?" approach: Don't memorize methods blindly. For each test, ask:
  • What are we looking for? (impurity? strength? degradation?)
  • Why this method and not another?
  • What does the result tell a pharmacist/regulatory body?
HPLC is the most important technique - understand it deeply:
  1. Sample injected → 2. Mobile phase carries it through column → 3. Stationary phase separates components by polarity → 4. Detector measures absorbance → 5. Peak area = concentration
Validation parameters (memorize these - they appear in every exam and every pharma job):
  • Accuracy - How close to true value?
  • Precision - Repeatability (same analyst, same day) and Reproducibility
  • Linearity - Does response increase proportionally with concentration?
  • LOD - Lowest detectable amount
  • LOQ - Lowest quantifiable amount
  • Specificity - Does it measure only what you want?
  • Robustness - Does it still work with small changes in conditions?

Best Resources

  • Chatwal & Anand: Instrumental Methods of Chemical Analysis (popular in India)
  • A.H. Beckett & J.B. Stenlake: Practical Pharmaceutical Chemistry
  • ICH Guidelines Q1A, Q2(R1) - Free PDF on ich.org (read these - they are what pharma companies actually use)

Subject 5 - Formulation (Pharmaceutics)

What This Subject Is

How drugs are turned into actual dosage forms - tablets, capsules, injections, creams, patches, etc.

Key Topic Areas

Dosage FormKey Concepts
TabletsGranulation (wet/dry), compression, coating, disintegration, dissolution
CapsulesHard gelatin vs soft gelatin, fill materials
Injections/ParenteralsSterility, pyrogen testing, isotonicity, pH adjustment
Suspensions & EmulsionsStability, zeta potential, HLB value
Controlled releaseMatrix, reservoir systems, OROS, transdermal patches
Topical/TransdermalPenetration enhancers, bases (oleaginous, water-miscible, emulsion)
OphthalmicpH, tonicity, preservatives
PreformulationPhysicochemical properties - polymorphism, solubility, stability

How to Study It

The Formulation Design Logic:
Every formulation decision is made to solve a problem. Ask:
  • What is the drug's physical problem? (poorly soluble → need to improve dissolution)
  • What is the delivery goal? (slow release → controlled release matrix)
  • What excipients solve this? (which binder, disintegrant, coating agent?)
Key excipient categories to memorize:
FunctionExamples
BinderPVP, HPMC, starch paste
DisintegrantCroscarmellose, sodium starch glycolate, SSG
LubricantMagnesium stearate
Filler/DiluentLactose, MCC, calcium phosphate
GlidantColloidal silicon dioxide (Aerosil)
CoatingHPMC, Eudragit (enteric), Opadry
Bioavailability connection: Always link formulation to bioavailability. A poorly dissolved tablet = poor absorption = treatment failure. This is why dissolution testing (from Pharmaceutical Analysis) matters.

Best Resources

  • Aulton's Pharmaceutics: The Design and Manufacture of Medicines - Best global textbook
  • Lachman, Lieberman & Kanig: Theory and Practice of Industrial Pharmacy - Indian syllabus standard
  • Indian Pharmacopoeia (IP) - Free online, has official formulation standards

Subject 6 - Pharmacy Judiciary (Pharmaceutical Jurisprudence)

What This Subject Is

The laws and regulations governing pharmacy practice, drug manufacturing, sales, and clinical trials in India.

Key Topic Areas

LawWhat It Covers
Drugs & Cosmetics Act 1940 + Rules 1945Drug licensing, Schedule H/H1/X, import/export, clinical trial rules (Schedule Y)
Pharmacy Act 1948Registration of pharmacists, PCI (Pharmacy Council of India)
DPCO (Drug Price Control Order)Essential medicines pricing, NPPA
Narcotic Drugs & Psychotropic Substances Act 1985Opioids, controlled substances
Consumer Protection Act 2019Patient rights, medical negligence
Intellectual Property / PatentsProduct 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

How to Study It

The "Schedule Map" method:
Indian drug laws are organized into Schedules. Map them out once:
ScheduleContains
Schedule HPrescription-only drugs
Schedule H1Third-generation antibiotics, anti-TB drugs (stricter control)
Schedule XPsychotropics, narcotics (strictest control)
Schedule GDrugs requiring medical supervision (antihistamines etc.)
Schedule MGMP requirements for manufacturing
Schedule YRequirements for clinical trials of new drugs in India
Schedule NMinimum equipment for pharmacies
Tip for this subject: Make a one-page table for each major Act with: Year enacted, Purpose, Key provisions, Regulatory body in charge, Penalty for violation. This format is directly exam-answerable.
Connect to your PV career goal: Schedule Y + New Drugs & Clinical Trial Rules 2019 + ICH-GCP = the legal backbone of pharmacovigilance in India. Knowing these deeply makes you very valuable.

Best Resources

  • Mulla's Pharmacy Laws or B.S. Kuchekar's Pharmaceutical Jurisprudence - Standard Indian textbooks
  • CDSCO website (cdsco.gov.in) - Actual Acts and Rules available free
  • New Drugs and Clinical Trials Rules 2019 - PDF available free, read the key sections

The Integration Study Session (Most Powerful Technique)

Once per week, pick ONE drug and study it through ALL 6 subjects in one sitting. Example with Metformin:
SubjectWhat to Study
Therapeutics 2Type 2 Diabetes - when do we use metformin? Which patient?
Pharmacology 2AMPK activation, reduces hepatic glucose output, mechanism
Medicinal ChemistryBiguanide structure, why it's hydrophilic, not metabolized by CYP450
FormulationMetformin 500mg/850mg/1000mg tablets, extended-release formulation (why?)
Pharm AnalysisHow is metformin quantified? HPLC method, pharmacopoeial test
JudiciaryIs it Schedule H? Pricing under DPCO? Any patent issues?
After this one session, you KNOW metformin completely. Do this every week with one drug.

Semester Timeline (Starting Now)

WeeksFocus
1-4Build foundation in each subject - read Chapter 1 of each textbook. Set up Anki.
5-8Deep study by system - Do cardiovascular system across ALL subjects in these weeks
9-12CNS system across all subjects
13-16Endocrine + GI + Renal systems
17-20Formulation dosage forms deep dive + Analysis techniques
21-24Judiciary - all major Acts
25-28Full revision using Anki, past papers, case studies
29-30Exam preparation - previous year questions, mock tests

Daily Study Template (2.5-3 hours per day minimum)

TimeActivity
30 minAnki review (existing cards)
60 minNew topic (deep study with textbook)
30 minCreate Anki cards from today's study
30 minCareer skill (ICH guideline / PV / case report)
20 minLink today's drug through the 6-subject chain

You have all 6 subjects mapped out. The most important action you can take today is to start Anki and add your first 10 drug cards. Every day you delay, you miss a spaced repetition cycle. Come back anytime you want to go deep on a specific topic from any of these subjects and I will teach it in full detail.

Generate a semester study schedule spreadsheet I can follow

Reading File
Reading File
Running Command

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

Writing File

~/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}")
Running Command

cd /tmp/workspace/pharmd-schedule && python build_schedule.py

Running Command

ls -lh /tmp/workspace/pharmd-schedule/PharmD_3rdYear_StudySchedule.xlsx

Your spreadsheet is ready. Download it here:

PharmD 3rdYear StudySchedule

Spreadsheet · XLSX


What's Inside (7 Sheets)

SheetWhat It Contains
Overview & LegendColour coding guide, subject abbreviations, recommended hours, and instructions on how to use every sheet
Weekly ScheduleFull 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 Tracker155 topics across all 6 subjects with dropdown status (Not Started / In Progress / Completed / Needs Review), date completed, difficulty rating, and notes column
Drug Master List30 prototype drugs pre-filled with Class, Mechanism, Indication, Side Effects, Contraindication, Key Interaction, and Anki card checkbox
Integration Log30 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 DashboardAutomatic % completion for each subject - just update the "Topics Done" number each Sunday and the formulas calculate everything
Daily TimetableA printable hour-by-hour daily template from 6:30 AM to 9:30 PM you can follow every day

How to Start Today

  1. Open the Weekly Schedule tab - go to Week 1
  2. Open the Topic Tracker - mark your first topics as "In Progress"
  3. Open the Drug Master List - add your first Anki card (Adrenaline/Atenolol)
  4. Print the Daily Timetable and stick it on your wall

Generate a semester study schedule spreadsheet I can follow

The spreadsheet was already generated in our previous message! You can download it right here:

PharmD 3rdYear StudySchedule

Spreadsheet · XLSX

It contains 7 sheets:
  1. Overview & Legend - colour guide and instructions
  2. Weekly Schedule - 30-week day-by-day plan for all 6 subjects
  3. Topic Tracker - 155 topics with status dropdowns
  4. Drug Master List - 30 prototype drugs with full pharmacology details
  5. Integration Log - weekly "one drug through all 6 subjects" tracker
  6. Progress Dashboard - auto-calculates your % completion per subject
  7. Daily Timetable - printable hour-by-hour daily study template
If the file doesn't open or you need a different format (e.g. Google Sheets compatible, PDF, or a simpler version), just let me know!

I am adhd and autism can you make me what I want

Asking for Preferences
Writing File

~/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}")
Running Command

cd /tmp/workspace/pharmd-schedule && python build_adhd_schedule.py

Running Command

ls -lh /tmp/workspace/pharmd-schedule/PharmD_ADHD_StudyPlanner.xlsx

Here it is, built specifically for your brain:

PharmD ADHD StudyPlanner

Spreadsheet · XLSX


What Makes This Different for ADHD + Autism

This is not the previous overwhelming planner. Here is what changed:
FeatureWhat it does for you
20-min Pomodoro blocksEvery study block is exactly 20 min - no guessing how long to study
One task per cellNo 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 scheduleA 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 satisfactionTick ✅ when done - one small win at a time
Reward rowsGold "You finished today!" row at the bottom of daily tasks

6 Sheets - All Simple

  1. 🟢 START HERE - The 3 rules. Read this every morning. That's it.
  2. 📅 Weekly Plan - 30 weeks. One short topic per day. Big coloured cells.
  3. 📆 Today's Tasks - Your hour-by-hour Pomodoro timer sheet. Fill in today's date and go.
  4. ✅ Topic Checklist - 99 topics with dropdown status. Change to ✅ when done.
  5. 💊 Drug Flashcards - 22 drugs. Cover columns and test yourself. One row at a time.
  6. 📈 My Progress - Just update one number per subject. Emoji tells you how you're doing.

Start with the 🟢 START HERE sheet. Read the 3 rules. Then go to 📆 Today's Tasks and set your first 20-min timer. That's your only job right now.
This is a shared conversation. Sign in to Orris to start your own chat.