Pharmacy me pharmacist exam k liye sabse phle Konsi subject se pdhna chaiye

Searching the Web

pharmacist exam India subject wise preparation priority GPAT 2025

Yahan ek complete subject-wise priority guide hai pharmacist exam ke liye (GPAT / State Pharmacist / Drug Inspector sab pe apply hota hai):

Pharmacist Exam - Subject Priority Order

πŸ₯‡ 1. Pharmacology (Sabse Pehle Padhein)

  • Kyun? - Sabse zyada marks yahi se aate hain (20-25% weightage)
  • Drug mechanisms, classifications, side effects, uses
  • Autonomic pharmacology, CVS, CNS, antibiotics
  • Yeh baaki subjects ko samajhne ka base bhi hai

πŸ₯ˆ 2. Pharmaceutics (Dusra Priority)

  • Dosage forms (tablets, capsules, injections, suspensions)
  • Formulation, stability, bioavailability
  • GPAT mein iska weightage bhi bahut zyada hai
  • Theory + numericals dono aate hain

πŸ₯‰ 3. Pharmaceutical Chemistry (Medicinal Chemistry)

  • Drug synthesis, structure-activity relationship (SAR)
  • Chemical classifications of drugs
  • Thoda heavy hai, lekin high-scoring subject

4. Pharmacognosy

  • Natural drugs - plants, alkaloids, glycosides, tannins
  • Relatively scoring subject
  • Rote learning + understanding dono chahiye

5. Biochemistry + Physiology

  • Body functions, metabolic pathways
  • Pharmacology ko better samajhne mein help karta hai
  • State exams mein zyada weightage

6. Pharmaceutical Analysis

  • Titrations, spectroscopy, chromatography
  • Numericals important hain
  • GPAT mein zaroor aata hai

7. Pharmaceutical Jurisprudence (Law)

  • Drugs & Cosmetics Act 1940, Pharmacy Act 1948
  • NDPS Act, Schedules (H, X, G)
  • Ek baar mein poora padh lo - scoring subject, zyada depth nahi

⚑ Smart Strategy

PhaseKya Karein
Week 1-4Pharmacology + Pharmaceutics basics
Week 5-8Medicinal Chemistry + Pharmacognosy
Week 9-12Analysis + Biochemistry + Law
Last 4 weeksFull revision + MCQ practice

πŸ’‘ Key Tips

  • Pharmacology pehle padhein - baaki sab subjects isse connect hote hain
  • MCQs daily practice karein - theory ke saath
  • Pharmaceutical Jurisprudence ko skip mat karein - easy marks hain
  • Previous year papers zaroor solve karein (last 10 years)
  • GPAT ke liye: Pharmaceutics + Pharmacology = ~50% paper

Kaunsa exam de rahe hain? (GPAT, State Pharmacist, Drug Inspector) batayein toh aur specific guidance de sakta hun!

State pharmacist

Searching the Web

state pharmacist exam syllabus subject wise weightage India 2025 2026

State Pharmacist exam ke liye yahan specific priority guide hai - yeh BPSC, RPSC, MPPSC, UPSSSC, RRB Pharmacist, ZP Pharmacist sab pe apply hota hai:

🎯 State Pharmacist Exam - Subject Priority

βœ… Exam Pattern (General)

SectionMarks
Professional Ability (Pharmacy)70-80%
General Awareness / GK10-15%
Reasoning / Aptitude5-10%
Pharmacy portion mein sabse zyada dhyan do.

πŸ“š Subject Priority (State Pharmacist ke liye)


πŸ₯‡ 1. Pharmacology - SABSE PEHLE

~25-30 questions aate hain
  • Drug classifications (antibiotic, antihypertensive, antidiabetic, etc.)
  • Mechanism of action
  • Side effects & contraindications
  • Important drugs by name (generic + brand)
  • Autonomic drugs, CVS drugs, CNS drugs
  • Yeh ek subject akela 25-30% paper cover karta hai

πŸ₯ˆ 2. Pharmaceutical Jurisprudence (Law) - DUSRA

~15-20 questions - Sabse EASY scoring subject
  • Drugs & Cosmetics Act 1940 - Schedules H, H1, X, G, C, C1
  • Pharmacy Act 1948 - Registration, Council
  • NDPS Act - Narcotic drugs
  • Drug schedules yaad kar lo (Schedule 1 to Schedule Y)
  • Sirf ek baar achhe se padho - marks pakke

πŸ₯‰ 3. Pharmaceutics - TEESRA

~15 questions
  • Dosage forms: tablets, capsules, injections, syrups, ointments
  • Routes of administration
  • Sterilization methods
  • Bioavailability & bioequivalence
  • Storage conditions (IP, BP labels)

4. Pharmacognosy - CHAUTHA

~10-12 questions
  • Crude drugs - source, active constituents, uses
  • Alkaloids, glycosides, tannins, volatile oils
  • Important plants: Rauwolfia, Digitalis, Cinchona, Opium, Nux Vomica
  • Adulteration tests

5. Biochemistry + Physiology - PAANCHWA

~8-10 questions
  • Carbohydrate, protein, lipid metabolism
  • Enzymes
  • Blood, kidney, liver functions
  • Vitamins & deficiency diseases

6. Pharmaceutical Chemistry - CHAATHWA

~5-8 questions (State mein GPAT se kam aata hai)
  • Inorganic pharmaceuticals
  • Assay methods (titrations)
  • Drug stability

⏱️ Study Schedule (3 Month Plan)

MonthSubjectTarget
Month 1Pharmacology (poora)Classifications + mechanisms complete
Month 1Jurisprudence (parallel)Acts + Schedules yaad karo
Month 2Pharmaceutics + PharmacognosyDosage forms + crude drugs
Month 2Biochemistry + PhysiologyPathways + body functions
Month 3Pharm ChemistryBasics only
Month 3Full revision + MCQ practice100 MCQ daily

πŸ’‘ State Pharmacist Specific Tips

  1. Jurisprudence pe zyada focus karo - GPAT mein yeh secondary tha, State mein primary hai. Government pharmacist ko laws pata hone chahiye.
  2. Drug Schedules rote karo:
    • Schedule H - Prescription drugs
    • Schedule H1 - Special prescription (antibiotics, etc.)
    • Schedule X - Habit-forming drugs
    • Schedule G - Industrial drugs
    • Schedule C & C1 - Biological products
  3. Previous year papers dekho apne specific state ke (UP/MP/Raj/Bihar) - pattern thoda alag ho sakta hai.
  4. GK prepare karo - Current health schemes (Ayushman Bharat, PM Jan Aushadhi), health ministers, WHO, ICMR.
  5. MCQ books: R.L. Miglani ya Sanjay Gupta ki Pharmacist MCQ book best hai.

Kaunse state se ho? (UP, MP, Rajasthan, Bihar...) batao toh us state ka exact syllabus aur pattern bata sakta hun! 🎯

Rajsthan

Searching the Web

Rajasthan pharmacist exam syllabus 2025 2026 RSMSSB subject wise weightage pattern

Reading Web Page

https://www.adda247.com/exams/nursing/rajasthan-pharmacist-s…

Rajasthan ka official syllabus mil gaya! Yahan RSMSSB Rajasthan Pharmacist ke liye complete guide hai:

πŸ“‹ Rajasthan Pharmacist Exam Pattern (RSMSSB)

SectionQuestionsMarks
General Knowledge4545
Pharmacist Subject105105
Total150150
  • ⏱️ Time: 180 minutes (3 ghante)
  • ❌ Negative Marking: 0.33 per wrong answer
  • Pharmacist Subject = 70% paper - yahan se hi game hai

🎯 Rajasthan Pharmacist - Subject Priority Order

πŸ₯‡ 1. Pharmacology & Toxicology - SABSE PEHLE PADHEIN

  • Exam mein sabse zyada questions yahan se
  • Drug classes, mechanisms, side effects, uses
  • Important drugs: antihypertensives, antibiotics, antidiabetics, NSAIDs
  • Toxicology: antidotes (atropine, naloxone, etc.)
  • Daily 2-3 ghante do

πŸ₯ˆ 2. Pharmaceutical Jurisprudence - DUSRA (EASY MARKS!)

  • Drugs & Cosmetics Act 1940 - Schedules, licensing
  • Pharmacy Act 1948 - Registration of pharmacists, PCI
  • NDPS Act - Narcotic drugs rules
  • Drug Schedules rote karo:
    • Schedule H = Prescription only
    • Schedule H1 = Special Rx (antibiotics, etc.)
    • Schedule X = Habit-forming
    • Schedule G = Caution drugs
    • Schedule C & C1 = Biological
  • Rajasthan mein yeh bahut important hai - government pharmacist ke liye

πŸ₯‰ 3. Pharmaceutics - TEESRA

  • Dosage forms: tablets, capsules, syrups, injections, ointments
  • Sterilization methods
  • Routes of administration
  • IP/BP standards
  • Packaging & storage

4. Pharmacognosy - CHAUTHA

  • Important crude drugs + plants
  • Alkaloids: Morphine (Opium), Quinine (Cinchona), Reserpine (Rauwolfia)
  • Glycosides: Digitalis, Senna
  • Volatile oils: Mentha, Clove, Eucalyptus
  • Adulteration & evaluation

5. Biochemistry & Clinical Pathology - PAANCHWA

  • Carbohydrate, protein, fat metabolism
  • Normal lab values (blood glucose, Hb, creatinine)
  • Liver function tests, kidney function tests
  • Vitamins & minerals

6. Human Anatomy & Physiology - CHAATHWA

  • Body systems: CVS, respiratory, renal, nervous
  • Basic anatomy - Rajasthan mein basic hi aata hai
  • Physiology of digestion, respiration, blood

7. Hospital & Clinical Pharmacy - SAATWA

  • Hospital formulary
  • Patient counselling
  • TPN, IV admixtures
  • Drug interactions

8. Drug Store & Business Management - AATHWA

  • Store management, inventory
  • Drug distribution systems
  • Purchase procedures

9. Health Education & Community Pharmacy - NAAWA

  • National Health Programs (TB, Malaria, HIV)
  • Immunization schedule
  • Family planning
  • Rajasthan specific schemes: Mukhyamantri Nishulk Dawa Yojana

10. Pharmaceutical Chemistry - DASWA

  • State mein kam questions aate hain
  • Basics enough - assay methods, drug stability

πŸ“… 3 Month Study Plan (Rajasthan)

MonthSubjectRoz kitna time
Month 1, Week 1-2Pharmacology3 ghante
Month 1, Week 3-4Jurisprudence + Schedules2 ghante
Month 2, Week 1-2Pharmaceutics + Pharmacognosy2.5 ghante
Month 2, Week 3-4Biochemistry + Anatomy2 ghante
Month 3, Week 1-2Hospital Pharmacy + Community1.5 ghante
Month 3, Week 3-4GK (Rajasthan) + Full revision2 ghante

πŸ“– GK (45 Marks) - Rajasthan Focus

Rajasthan GK zaroor padho:
  • Mukhyamantri Nishulk Dawa Yojana (free medicine scheme)
  • Rajasthan health department schemes
  • Chief Minister, Health Minister
  • Rajasthan ke famous places/history (basic)
  • National current affairs + science/technology

πŸ“š Best Books for Rajasthan Pharmacist

SubjectBook
PharmacologyK.D. Tripathi ya R.S. Satoskar
JurisprudencePharmaceutical Jurisprudence by Mithal
All subjects MCQR.L. Miglani - Pharmacist MCQ (best)
Rajasthan GKLucent + local Rajasthan GK book

⚑ Final Tips

  1. Negative marking hai - guessing mat karo, sirf sure answers mark karo
  2. Pharmacology + Jurisprudence = ~40-45 questions - yeh 2 subjects pakke karo
  3. Previous year Rajasthan Pharmacist papers zaroor solve karo
  4. Rajasthan health schemes yaad karo - GK mein aate hain
  5. Roz 50-100 MCQ practice karo from Month 1 se
All the best! πŸ’ŠπŸŽ― Koi specific subject mein doubt ho toh poochho!

Mujhe 3 month ki pure subject lo ki 350 Class h uske hisaab se tume table bnaa do

3 months = ~90 days, aur total 350 classes hain - pehle breakdown samajhte hain:
  • 350 classes Γ· 10 subjects = avg ~35 classes per subject
  • Priority ke hisaab se zyada important subjects ko zyada classes

πŸ“Š Rajasthan Pharmacist - 350 Classes / 3 Month Complete Timetable

Subject-wise Class Distribution (Total = 350)

#SubjectClassesPriorityReason
1Pharmacology & Toxicology75πŸ”΄ Highest25-30% paper, sabse zyada MCQ
2Pharmaceutical Jurisprudence50πŸ”΄ HighEasy scoring, Acts + Schedules
3Pharmaceutics45🟠 HighDosage forms, formulation
4Pharmacognosy35🟠 MediumCrude drugs, plant sources
5Biochemistry & Clinical Pathology30🟑 MediumLab values, metabolism
6Human Anatomy & Physiology25🟑 MediumBody systems basics
7Pharmaceutical Chemistry25🟑 MediumAssay, stability
8Hospital & Clinical Pharmacy20🟒 Low-MedHospital formulary
9Health Education & Community Pharmacy20🟒 Low-MedNational programs
10Drug Store & Business Management15🟒 LowStore mgmt, inventory
11General Knowledge (Rajasthan + National)10πŸ”΅ GKRevision + current affairs
TOTAL350

πŸ“… Month-wise Weekly Timetable

πŸ—“οΈ MONTH 1 (Day 1-30) - Foundation Phase

Focus: Pharmacology + Jurisprudence + Pharmaceutics start
WeekDaysSubjectClasses
Week 1Day 1-7Pharmacology - Autonomic NS, CVS drugs18 classes
Week 2Day 8-14Pharmacology - CNS, Antibiotics, Antidiabetics18 classes
Week 3Day 15-21Pharmacology - Remaining + Jurisprudence start (D&C Act)20 classes
Week 4Day 22-30Jurisprudence (Pharmacy Act, NDPS, Schedules) + Pharmaceutics start22 classes
Month 1 Total78 classes

πŸ—“οΈ MONTH 2 (Day 31-60) - Core Building Phase

Focus: Pharmaceutics + Pharmacognosy + Biochemistry + Anatomy
WeekDaysSubjectClasses
Week 5Day 31-37Pharmaceutics - Dosage forms, tablets, capsules, injections20 classes
Week 6Day 38-44Pharmaceutics remaining + Pharmacognosy start20 classes
Week 7Day 45-51Pharmacognosy (alkaloids, glycosides, volatile oils)18 classes
Week 8Day 52-60Biochemistry + Clinical Pathology22 classes
Month 2 Total80 classes

πŸ—“οΈ MONTH 3 (Day 61-90) - Completion + Revision Phase

Focus: Anatomy + Pharma Chemistry + Hospital + Community + GK + Full Revision
WeekDaysSubjectClasses
Week 9Day 61-67Human Anatomy & Physiology20 classes
Week 10Day 68-74Pharmaceutical Chemistry + Hospital Pharmacy22 classes
Week 11Day 75-81Community Pharmacy + Drug Store Management + GK22 classes
Week 12Day 82-90Full Revision + Mock Tests + Previous Year Papers28 classes
Month 3 Total92 classes

⚠️ Month 1+2+3 = 78+80+92 = 250 classes subject-wise + 100 classes revision/MCQ = 350 total βœ…

πŸ”„ Daily Class Pattern (4-5 classes/day average)

DinType
Monday - Saturday4-5 new topic classes
SundayRevision + 50 MCQ practice

βœ… Revision Classes Breakdown (100 classes)

Revision TypeClasses
Weekly topic revision30
Subject end revision25
Mock Tests / Full Papers20
Previous Year Papers (Rajasthan)15
Doubt clearing10
Total100

πŸ’‘ Key Rules

  1. Pharmacology sabse pehle - 75 classes mein poora karo, isko skip mat karo
  2. Jurisprudence mein Schedules ek baar rote karo, baar baar revise karo
  3. Sunday = MCQ day - roz 50 MCQ minimum
  4. Negative marking yaad rahe - 0.33 cut hai, guess mat karo
  5. GK ke liye roz 15-20 min alag se nikaalo
  6. Last 10 days sirf revision + mock tests

All the best! πŸ’ŠπŸŽ― Koi specific subject ka topic-wise breakdown chahiye toh batao!

Create a daily study checklist and time management template

Reading File
Running Command

mkdir -p /tmp/workspace/raj-pharmacist && ls /tmp/workspace/

Writing File

~/raj-pharmacist/create_template.py

import openpyxl
from openpyxl.styles import (
    PatternFill, Font, Alignment, Border, Side
)
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.datavalidation import DataValidation
import datetime

wb = openpyxl.Workbook()

# ── Color palette ──────────────────────────────────────────────
C_DARK_GREEN  = "1B5E20"
C_GREEN       = "2E7D32"
C_LIGHT_GREEN = "A5D6A7"
C_MINT        = "E8F5E9"
C_ORANGE      = "E65100"
C_AMBER       = "FF8F00"
C_YELLOW_BG   = "FFF9C4"
C_BLUE_DARK   = "0D47A1"
C_BLUE        = "1565C0"
C_LIGHT_BLUE  = "BBDEFB"
C_BLUE_BG     = "E3F2FD"
C_RED         = "B71C1C"
C_LIGHT_RED   = "FFCDD2"
C_PURPLE      = "4A148C"
C_PURPLE_LIGHT= "E1BEE7"
C_GREY_DARK   = "37474F"
C_GREY        = "546E7A"
C_GREY_LIGHT  = "ECEFF1"
C_WHITE       = "FFFFFF"

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

def font(bold=False, color="000000", size=11, italic=False):
    return Font(name="Arial", bold=bold, color=color, size=size, italic=italic)

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

def border_thin():
    s = Side(style="thin", color="BDBDBD")
    return Border(left=s, right=s, top=s, bottom=s)

def border_medium():
    s = Side(style="medium", color="757575")
    return Border(left=s, right=s, top=s, bottom=s)

def set_cell(ws, row, col, value, bold=False, fg_color=None, font_color="000000",
             font_size=11, h_align="center", v_align="center", wrap=False,
             italic=False, border=True):
    cell = ws.cell(row=row, column=col, value=value)
    cell.font = font(bold=bold, color=font_color, size=font_size, italic=italic)
    cell.alignment = align(h_align, v_align, wrap)
    if fg_color:
        cell.fill = fill(fg_color)
    if border:
        cell.border = border_thin()
    return cell

# ══════════════════════════════════════════════════════════════════
# SHEET 1 β€” DAILY STUDY CHECKLIST
# ══════════════════════════════════════════════════════════════════
ws1 = wb.active
ws1.title = "Daily Checklist"
ws1.sheet_view.showGridLines = False
ws1.column_dimensions["A"].width = 4
ws1.column_dimensions["B"].width = 28
ws1.column_dimensions["C"].width = 22
ws1.column_dimensions["D"].width = 14
ws1.column_dimensions["E"].width = 14
ws1.column_dimensions["F"].width = 14
ws1.column_dimensions["G"].width = 18
ws1.column_dimensions["H"].width = 22
ws1.row_dimensions[1].height = 50
ws1.row_dimensions[2].height = 22
ws1.row_dimensions[3].height = 22

# ── Title banner ──
ws1.merge_cells("A1:H1")
c = ws1["A1"]
c.value = "🎯  RAJASTHAN PHARMACIST EXAM β€” DAILY STUDY CHECKLIST"
c.font = Font(name="Arial", bold=True, size=16, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")

# Date & Day row
ws1.merge_cells("A2:B2")
set_cell(ws1, 2, 1, "πŸ“…  Date:", bold=True, fg_color=C_LIGHT_GREEN, font_size=11)
ws1.merge_cells("C2:D2")
set_cell(ws1, 2, 3, "", fg_color=C_YELLOW_BG, h_align="left")  # user fills date
ws1.merge_cells("E2:F2")
set_cell(ws1, 2, 5, "πŸ“†  Day No.:", bold=True, fg_color=C_LIGHT_GREEN, font_size=11)
ws1.merge_cells("G2:H2")
set_cell(ws1, 2, 7, "", fg_color=C_YELLOW_BG, h_align="left")

# Target score row
ws1.merge_cells("A3:B3")
set_cell(ws1, 3, 1, "πŸ†  Target Score:", bold=True, fg_color=C_LIGHT_BLUE, font_size=11)
ws1.merge_cells("C3:D3")
set_cell(ws1, 3, 3, "120 / 150", bold=True, fg_color=C_BLUE_BG, font_color=C_BLUE_DARK)
ws1.merge_cells("E3:F3")
set_cell(ws1, 3, 5, "⚠️  Neg. Marking:", bold=True, fg_color=C_LIGHT_RED, font_size=11)
ws1.merge_cells("G3:H3")
set_cell(ws1, 3, 7, "0.33 per wrong answer", bold=True, fg_color=C_LIGHT_RED, font_color=C_RED)

# ── Section A: Time Management ──
row = 5
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "⏰  SECTION A β€” TIME MANAGEMENT (Daily Schedule)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_BLUE)
c.alignment = align("left", "center")

row += 1
headers = ["#", "Time Slot", "Activity / Subject", "Topic", "Duration", "Completed?", "MCQs Done", "Notes"]
col_fills = [C_LIGHT_BLUE]*8
ws1.row_dimensions[row].height = 20
for i, h in enumerate(headers, 1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_BLUE_DARK, font_color=C_WHITE, font_size=10)

time_slots = [
    ("1", "5:00 AM – 5:30 AM", "Morning Routine / Prayer", "–", "30 min"),
    ("2", "5:30 AM – 7:30 AM", "Pharmacology", "Topic of the day", "2 hrs"),
    ("3", "7:30 AM – 8:00 AM", "Breakfast Break", "–", "30 min"),
    ("4", "8:00 AM – 9:30 AM", "Pharmaceutical Jurisprudence", "Acts / Schedules", "1.5 hrs"),
    ("5", "9:30 AM – 10:30 AM", "MCQ Practice (Morning)", "Yesterday topics", "1 hr"),
    ("6", "10:30 AM – 11:00 AM", "Short Break / Walk", "–", "30 min"),
    ("7", "11:00 AM – 12:30 PM", "Pharmaceutics / Pharmacognosy", "Topic of the day", "1.5 hrs"),
    ("8", "12:30 PM – 1:30 PM", "Lunch + Rest", "–", "1 hr"),
    ("9", "1:30 PM – 3:00 PM", "Biochemistry / Anatomy", "Topic of the day", "1.5 hrs"),
    ("10", "3:00 PM – 4:00 PM", "Hospital / Community Pharmacy", "Topic of the day", "1 hr"),
    ("11", "4:00 PM – 4:30 PM", "Evening Break / Tea", "–", "30 min"),
    ("12", "4:30 PM – 5:30 PM", "General Knowledge (Rajasthan)", "Current affairs / GK", "1 hr"),
    ("13", "5:30 PM – 6:30 PM", "MCQ Practice (Evening)", "Today's topics", "1 hr"),
    ("14", "6:30 PM – 7:00 PM", "Exercise / Relax", "–", "30 min"),
    ("15", "7:00 PM – 8:00 PM", "Dinner + Rest", "–", "1 hr"),
    ("16", "8:00 PM – 9:30 PM", "Revision (Morning topics)", "Notes review", "1.5 hrs"),
    ("17", "9:30 PM – 10:00 PM", "Daily Summary + Tomorrow Plan", "Diary writing", "30 min"),
    ("18", "10:00 PM", "SLEEP πŸ’€", "–", "7 hrs"),
]

for i, (num, slot, activity, topic, dur) in enumerate(time_slots):
    r = row + 1 + i
    ws1.row_dimensions[r].height = 18
    bg = C_MINT if i % 2 == 0 else C_WHITE
    # grey out break rows
    if "Break" in activity or "Routine" in activity or "Rest" in activity or \
       "Exercise" in activity or "Dinner" in activity or "SLEEP" in activity:
        bg = C_GREY_LIGHT
    set_cell(ws1, r, 1, num, fg_color=bg, font_color=C_GREY_DARK)
    set_cell(ws1, r, 2, slot, bold=True, fg_color=bg, font_color=C_BLUE_DARK, h_align="left")
    set_cell(ws1, r, 3, activity, fg_color=bg, h_align="left", font_color=C_GREY_DARK, bold=("Break" not in activity and "Routine" not in activity))
    set_cell(ws1, r, 4, topic, fg_color=bg, h_align="left", italic=True, font_color=C_GREY)
    set_cell(ws1, r, 5, dur, fg_color=bg, font_color=C_ORANGE, bold=True)
    # Completed? dropdown
    set_cell(ws1, r, 6, "☐ Pending", fg_color=C_YELLOW_BG, font_color=C_AMBER, bold=True)
    set_cell(ws1, r, 7, 0, fg_color=bg, font_color=C_BLUE)
    set_cell(ws1, r, 8, "", fg_color=bg, h_align="left")

current_row = row + 1 + len(time_slots) + 1

# ── Section B: Subject Checklist ──
row = current_row + 1
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "πŸ“š  SECTION B β€” SUBJECT CHECKLIST (Today's Topics)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_GREEN)
c.alignment = align("left", "center")

row += 1
subj_headers = ["#", "Subject", "Topic Covered Today", "Pages / Chapter", "Status", "Difficulty", "MCQ Score", "Revision Needed?"]
for i, h in enumerate(subj_headers, 1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE, font_size=10)

subjects = [
    ("1", "Pharmacology & Toxicology", "", "", "☐ Done", "⭐⭐⭐", "", ""),
    ("2", "Pharmaceutical Jurisprudence", "", "", "☐ Done", "⭐⭐", "", ""),
    ("3", "Pharmaceutics", "", "", "☐ Done", "⭐⭐", "", ""),
    ("4", "Pharmacognosy", "", "", "☐ Done", "⭐⭐", "", ""),
    ("5", "Biochemistry & Clinical Path.", "", "", "☐ Done", "⭐⭐", "", ""),
    ("6", "Human Anatomy & Physiology", "", "", "☐ Done", "⭐", "", ""),
    ("7", "Pharmaceutical Chemistry", "", "", "☐ Done", "⭐⭐", "", ""),
    ("8", "Hospital & Clinical Pharmacy", "", "", "☐ Done", "⭐", "", ""),
    ("9", "Community & Health Education", "", "", "☐ Done", "⭐", "", ""),
    ("10","Drug Store & Business Mgmt.", "", "", "☐ Done", "⭐", "", ""),
    ("11","General Knowledge (Rajasthan)", "", "", "☐ Done", "⭐", "", ""),
]

for i, row_data in enumerate(subjects):
    r = row + 1 + i
    ws1.row_dimensions[r].height = 18
    bg = C_MINT if i % 2 == 0 else C_WHITE
    colors = [C_GREY_DARK, C_BLUE_DARK, "000000", C_GREY, C_AMBER, C_ORANGE, C_BLUE, C_GREEN]
    for j, val in enumerate(row_data):
        fc = colors[j] if j < len(colors) else "000000"
        set_cell(ws1, r, j+1, val, fg_color=bg, font_color=fc,
                 h_align="left" if j in [1,2,3] else "center",
                 bold=(j == 1))

current_row = row + 1 + len(subjects) + 1

# ── Section C: MCQ Tracker ──
row = current_row + 1
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "πŸ“  SECTION C β€” MCQ TRACKER (Daily Practice)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_PURPLE)
c.alignment = align("left", "center")

row += 1
mcq_headers = ["#", "Subject", "MCQs Attempted", "Correct", "Wrong", "Score %", "Negative Marks", "Remarks"]
for i, h in enumerate(mcq_headers, 1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_PURPLE, font_color=C_WHITE, font_size=10)

for i in range(1, 6):
    r = row + i
    ws1.row_dimensions[r].height = 18
    bg = C_PURPLE_LIGHT if i % 2 == 0 else C_WHITE
    set_cell(ws1, r, 1, str(i), fg_color=bg)
    for j in range(2, 9):
        set_cell(ws1, r, j, "", fg_color=bg)

# Total row
r = row + 6
ws1.row_dimensions[r].height = 20
ws1.merge_cells(f"A{r}:B{r}")
set_cell(ws1, r, 1, "DAILY TOTAL", bold=True, fg_color=C_PURPLE, font_color=C_WHITE)
for j in range(3, 9):
    set_cell(ws1, r, j, "", fg_color=C_PURPLE_LIGHT, bold=True)

# ── Section D: Daily Self-Assessment ──
row = r + 2
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "🌟  SECTION D β€” DAILY SELF-ASSESSMENT"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_ORANGE)
c.alignment = align("left", "center")

row += 1
assess_items = [
    ("Today ki study kaisi rahi?",         "⭐⭐⭐⭐⭐ (1-5 stars)"),
    ("Kitne ghante padha?",                 "____ hours"),
    ("Total MCQs solved today?",            "____ MCQs"),
    ("Accuracy rate?",                      "____%"),
    ("Kya mujhe neend aayi padhte waqt?",   "Haan / Nahi"),
    ("Kal kya improve karna hai?",          "________________________"),
    ("Motivational note to self:",          "________________________"),
]

for i, (question, placeholder) in enumerate(assess_items):
    r = row + i
    ws1.row_dimensions[r].height = 20
    bg = C_YELLOW_BG if i % 2 == 0 else C_WHITE
    ws1.merge_cells(f"A{r}:D{r}")
    set_cell(ws1, r, 1, question, bold=True, fg_color=bg, font_color=C_GREY_DARK, h_align="left")
    ws1.merge_cells(f"E{r}:H{r}")
    set_cell(ws1, r, 5, placeholder, fg_color=C_WHITE, font_color=C_ORANGE, italic=True, h_align="left")


# ══════════════════════════════════════════════════════════════════
# SHEET 2 β€” 3-MONTH PLANNER
# ══════════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("3-Month Planner")
ws2.sheet_view.showGridLines = False
ws2.column_dimensions["A"].width = 8
ws2.column_dimensions["B"].width = 12
ws2.column_dimensions["C"].width = 22
ws2.column_dimensions["D"].width = 28
ws2.column_dimensions["E"].width = 20
ws2.column_dimensions["F"].width = 14
ws2.column_dimensions["G"].width = 14
ws2.column_dimensions["H"].width = 14
ws2.column_dimensions["I"].width = 20

# Title
ws2.merge_cells("A1:I1")
ws2.row_dimensions[1].height = 46
c = ws2["A1"]
c.value = "πŸ“…  RAJASTHAN PHARMACIST β€” 3 MONTH STUDY PLANNER (350 Classes)"
c.font = Font(name="Arial", bold=True, size=15, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")

# Subject distribution header
row = 3
ws2.merge_cells(f"A{row}:I{row}")
ws2.row_dimensions[row].height = 22
c = ws2[f"A{row}"]
c.value = "πŸ“Š  SUBJECT-WISE CLASS DISTRIBUTION"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_BLUE)
c.alignment = align("left", "center")

row += 1
dist_headers = ["#", "Subject", "Classes", "% of Total", "Priority", "Month 1", "Month 2", "Month 3", "Status"]
for i, h in enumerate(dist_headers, 1):
    set_cell(ws2, row, i, h, bold=True, fg_color=C_BLUE_DARK, font_color=C_WHITE)

subject_dist = [
    (1, "Pharmacology & Toxicology",      75, "21.4%", "πŸ”΄ Highest", 40, 20, 15, ""),
    (2, "Pharmaceutical Jurisprudence",   50, "14.3%", "πŸ”΄ High",    25, 15, 10, ""),
    (3, "Pharmaceutics",                  45, "12.9%", "🟠 High",    13, 25,  7, ""),
    (4, "Pharmacognosy",                  35, "10.0%", "🟠 Medium",   5, 22,  8, ""),
    (5, "Biochemistry & Clinical Path.",  30,  "8.6%", "🟑 Medium",   0, 20, 10, ""),
    (6, "Human Anatomy & Physiology",     25,  "7.1%", "🟑 Medium",   0,  5, 20, ""),
    (7, "Pharmaceutical Chemistry",       25,  "7.1%", "🟑 Medium",   0,  5, 20, ""),
    (8, "Hospital & Clinical Pharmacy",   20,  "5.7%", "🟒 Low-Med",  0,  0, 20, ""),
    (9, "Health Ed & Community Pharm.",   20,  "5.7%", "🟒 Low-Med",  0,  0, 20, ""),
    (10,"Drug Store & Business Mgmt.",    15,  "4.3%", "🟒 Low",      0,  0, 15, ""),
    (11,"General Knowledge (Rajasthan)",  10,  "2.9%", "πŸ”΅ GK",       0,  0, 10, ""),
    ("", "REVISION + MOCK TESTS",        100,  "--",   "πŸ” Ongoing", 10, 10, 80, ""),
]

total_row_colors = {11: C_LIGHT_RED}
for i, row_data in enumerate(subject_dist):
    r = row + 1 + i
    ws2.row_dimensions[r].height = 18
    is_total = (row_data[0] == "")
    bg = C_LIGHT_GREEN if is_total else (C_MINT if i % 2 == 0 else C_WHITE)
    for j, val in enumerate(row_data):
        fc = C_RED if is_total else (C_BLUE_DARK if j == 1 else "000000")
        set_cell(ws2, r, j+1, val, fg_color=bg, font_color=fc,
                 h_align="left" if j == 1 else "center", bold=is_total or j==1)

# Grand total
r = row + 1 + len(subject_dist)
ws2.row_dimensions[r].height = 22
ws2.merge_cells(f"A{r}:B{r}")
set_cell(ws2, r, 1, "GRAND TOTAL", bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
set_cell(ws2, r, 3, 350, bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
set_cell(ws2, r, 4, "100%", bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
for j in [5,6,7,8,9]:
    set_cell(ws2, r, j, "", fg_color=C_DARK_GREEN)

# ── Monthly breakdown ──
months_data = [
    ("MONTH 1 β€” Foundation Phase", C_BLUE, C_BLUE_BG, [
        ("Week 1", "Day 1–7",   "Pharmacology",                   "Autonomic NS, CVS Drugs",         18),
        ("Week 2", "Day 8–14",  "Pharmacology",                   "CNS, Antibiotics, Antidiabetics", 18),
        ("Week 3", "Day 15–21", "Pharmacology + Jurisprudence",   "Remaining Pharma + D&C Act 1940", 20),
        ("Week 4", "Day 22–30", "Jurisprudence + Pharmaceutics",  "Pharmacy Act, NDPS, Schedules",   22),
    ]),
    ("MONTH 2 β€” Core Building Phase", C_GREEN, C_MINT, [
        ("Week 5", "Day 31–37", "Pharmaceutics",                  "Dosage forms, Tablets, Injections",20),
        ("Week 6", "Day 38–44", "Pharmaceutics + Pharmacognosy",  "Remaining + Alkaloids, Glycosides",20),
        ("Week 7", "Day 45–51", "Pharmacognosy",                  "Volatile oils, Crude drugs",       18),
        ("Week 8", "Day 52–60", "Biochemistry & Clinical Path.",  "Metabolism, Lab values",           22),
    ]),
    ("MONTH 3 β€” Revision + Completion Phase", C_ORANGE, C_YELLOW_BG, [
        ("Week 9",  "Day 61–67", "Anatomy & Physiology",           "Body systems, CVS, Renal, NS",    20),
        ("Week 10", "Day 68–74", "Pharma Chemistry + Hospital",    "Assay, Stability, Formulary",     22),
        ("Week 11", "Day 75–81", "Community + Drug Store + GK",    "Health programs, Raj. schemes",   22),
        ("Week 12", "Day 82–90", "FULL REVISION + MOCK TESTS",     "All subjects + Prev. yr papers",  28),
    ]),
]

row = r + 2
for month_name, h_color, bg_color, weeks in months_data:
    ws2.merge_cells(f"A{row}:I{row}")
    ws2.row_dimensions[row].height = 24
    c = ws2[f"A{row}"]
    c.value = f"πŸ—“οΈ  {month_name}"
    c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
    c.fill = fill(h_color)
    c.alignment = align("left", "center")
    row += 1

    week_headers = ["Week", "Days", "Primary Subject", "Topics", "Classes", "Done?", "MCQ Target", "Actual MCQ", "Notes"]
    for i, h in enumerate(week_headers, 1):
        set_cell(ws2, row, i, h, bold=True, fg_color=h_color, font_color=C_WHITE)
    row += 1

    for i, (week, days, subj, topics, classes) in enumerate(weeks):
        ws2.row_dimensions[row].height = 18
        bg = bg_color if i % 2 == 0 else C_WHITE
        set_cell(ws2, row, 1, week, bold=True, fg_color=bg, font_color=h_color)
        set_cell(ws2, row, 2, days, fg_color=bg, font_color=C_GREY_DARK)
        set_cell(ws2, row, 3, subj, bold=True, fg_color=bg, font_color="000000", h_align="left")
        set_cell(ws2, row, 4, topics, fg_color=bg, h_align="left", italic=True, font_color=C_GREY)
        set_cell(ws2, row, 5, classes, bold=True, fg_color=bg, font_color=C_ORANGE)
        set_cell(ws2, row, 6, "☐", fg_color=C_YELLOW_BG, font_color=C_AMBER, bold=True)
        set_cell(ws2, row, 7, classes * 5, fg_color=bg, font_color=C_BLUE)  # 5 MCQ per class target
        set_cell(ws2, row, 8, "", fg_color=bg)
        set_cell(ws2, row, 9, "", fg_color=bg, h_align="left")
        row += 1
    row += 1


# ══════════════════════════════════════════════════════════════════
# SHEET 3 β€” WEEKLY PROGRESS TRACKER
# ══════════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("Weekly Progress")
ws3.sheet_view.showGridLines = False
for col, w in zip("ABCDEFGHIJ", [8,14,14,14,14,14,14,16,16,18]):
    ws3.column_dimensions[col].width = w

ws3.merge_cells("A1:J1")
ws3.row_dimensions[1].height = 44
c = ws3["A1"]
c.value = "πŸ“ˆ  WEEKLY PROGRESS TRACKER β€” Rajasthan Pharmacist Exam"
c.font = Font(name="Arial", bold=True, size=14, color=C_WHITE)
c.fill = fill(C_PURPLE)
c.alignment = align("center", "center")

row = 3
ws3.merge_cells(f"A{row}:J{row}")
ws3.row_dimensions[row].height = 22
c = ws3[f"A{row}"]
c.value = "πŸ“Š  Week-by-Week Study Summary (12 Weeks)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_GREY_DARK)
c.alignment = align("left", "center")

row += 1
wp_headers = ["Week", "Dates", "Classes Done", "MCQs Done", "Correct %", "Weak Topics", "Hours Studied", "Mock Score", "Revision Done?", "Plan for Next Week"]
for i, h in enumerate(wp_headers, 1):
    set_cell(ws3, row, i, h, bold=True, fg_color=C_GREY_DARK, font_color=C_WHITE)

week_dates = [
    ("Wk 1","Day 1-7"),("Wk 2","Day 8-14"),("Wk 3","Day 15-21"),("Wk 4","Day 22-30"),
    ("Wk 5","Day 31-37"),("Wk 6","Day 38-44"),("Wk 7","Day 45-51"),("Wk 8","Day 52-60"),
    ("Wk 9","Day 61-67"),("Wk 10","Day 68-74"),("Wk 11","Day 75-81"),("Wk 12","Day 82-90"),
]
for i, (wk, dates) in enumerate(week_dates):
    r = row + 1 + i
    ws3.row_dimensions[r].height = 20
    bg = C_PURPLE_LIGHT if i % 2 == 0 else C_WHITE
    month_bg = {0:C_BLUE_BG, 1:C_BLUE_BG, 2:C_BLUE_BG, 3:C_BLUE_BG,
                4:C_MINT,    5:C_MINT,    6:C_MINT,    7:C_MINT,
                8:C_YELLOW_BG,9:C_YELLOW_BG,10:C_YELLOW_BG,11:C_YELLOW_BG}
    bg = month_bg.get(i, C_WHITE)
    set_cell(ws3, r, 1, wk, bold=True, fg_color=bg, font_color=C_PURPLE)
    set_cell(ws3, r, 2, dates, fg_color=bg, font_color=C_GREY_DARK)
    for j in range(3, 11):
        set_cell(ws3, r, j, "", fg_color=bg)


# ══════════════════════════════════════════════════════════════════
# SHEET 4 β€” SUBJECT NOTES QUICK REFERENCE
# ══════════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("Quick Reference")
ws4.sheet_view.showGridLines = False
ws4.column_dimensions["A"].width = 4
ws4.column_dimensions["B"].width = 26
ws4.column_dimensions["C"].width = 32
ws4.column_dimensions["D"].width = 32
ws4.column_dimensions["E"].width = 28

ws4.merge_cells("A1:E1")
ws4.row_dimensions[1].height = 44
c = ws4["A1"]
c.value = "⚑  QUICK REFERENCE β€” Important Topics per Subject"
c.font = Font(name="Arial", bold=True, size=14, color=C_WHITE)
c.fill = fill(C_AMBER)
c.alignment = align("center", "center")

qr_data = [
    ("Pharmacology & Toxicology",  C_RED,
     "β€’ Autonomic drugs: Atropine, Neostigmine\nβ€’ CVS: Beta blockers, ACE inhibitors, Digoxin\nβ€’ CNS: Benzodiazepines, Opioids, Antiepileptics\nβ€’ Antibiotics: Penicillin, Cephalosporins, Aminoglycosides\nβ€’ Antidiabetics: Insulin, Metformin, Sulfonylureas\nβ€’ NSAIDs: Aspirin, Ibuprofen, COX-2 inhibitors",
     "β€’ Organophosphate poisoning β†’ Atropine antidote\nβ€’ Morphine overdose β†’ Naloxone\nβ€’ Paracetamol overdose β†’ NAC (N-Acetylcysteine)\nβ€’ Iron poisoning β†’ Deferoxamine\nβ€’ Cyanide β†’ Sodium Nitrite + Sodium Thiosulfate",
     "KD Tripathi - Essentials of Pharmacology\nRS Satoskar Pharmacology"),

    ("Pharmaceutical Jurisprudence", C_BLUE_DARK,
     "β€’ D&C Act 1940 + Rules 1945\nβ€’ Pharmacy Act 1948 (PCI, State Councils)\nβ€’ NDPS Act 1985\nβ€’ Schedule H, H1, X, G, C, C1\nβ€’ Drug Controller General of India (DCGI)\nβ€’ Central Drugs Standard Control Organization",
     "β€’ Schedule H = Rx only drugs\nβ€’ Schedule H1 = Rx + special record keeping\nβ€’ Schedule X = Habit-forming (30 day supply)\nβ€’ Schedule G = Caution/Industrial drugs\nβ€’ Schedule C = Biological products\nβ€’ Penalty: Adulteration = up to 10 yrs imprisonment",
     "Pharmaceutical Jurisprudence by Mithal\nGovt. of India Acts (free PDF)"),

    ("Pharmaceutics",              C_GREEN,
     "β€’ Tablets: Direct compression, granulation\nβ€’ Capsules: Hard gelatin, soft gelatin\nβ€’ Injections: Pyrogen-free, isotonic\nβ€’ Ointments/Creams: Oil-in-water, water-in-oil\nβ€’ Suppositories: Cocoa butter base\nβ€’ Aerosols: MDI, DPI",
     "β€’ Sterilization: Autoclave 121Β°C/15 min\nβ€’ Dry heat: 160Β°C/1 hr or 170Β°C/30 min\nβ€’ Bioavailability = AUC oral / AUC IV Γ— 100\nβ€’ IP = Indian Pharmacopoeia\nβ€’ BCS Class I = High solubility, high permeability",
     "Lachman & Lieberman - Theory & Practice\nRemington's Pharmaceutical Sciences"),

    ("Pharmacognosy",              C_DARK_GREEN,
     "β€’ Opium (Papaver somniferum) β†’ Morphine, Codeine\nβ€’ Cinchona bark β†’ Quinine, Quinidine\nβ€’ Rauwolfia β†’ Reserpine\nβ€’ Digitalis purpurea β†’ Digoxin, Digitoxin\nβ€’ Belladonna β†’ Atropine, Hyoscine\nβ€’ Senna β†’ Sennosides (laxative)",
     "β€’ Adulteration tests: Ash value, moisture content\nβ€’ Extraction: Maceration, percolation, infusion\nβ€’ TLC, UV spectroscopy for identification\nβ€’ WHO guidelines for herbal drugs\nβ€’ Ayurvedic plants: Neem, Tulsi, Ashwagandha",
     "CK Kokate - Pharmacognosy\nTyler, Brady & Robbers"),

    ("Biochemistry & Clinical Path.", C_PURPLE,
     "β€’ Blood glucose: Fasting 70-110 mg/dL\nβ€’ HbA1c: Normal <5.7%, Diabetic >6.5%\nβ€’ Hemoglobin: Male 13-17 g/dL, Female 12-15\nβ€’ Creatinine: 0.6-1.2 mg/dL\nβ€’ Total Cholesterol: <200 mg/dL desirable",
     "β€’ Glycolysis β†’ Pyruvate β†’ Acetyl CoA\nβ€’ TCA Cycle (Krebs) β†’ 38 ATP total\nβ€’ Beta oxidation of fatty acids\nβ€’ Urea cycle: NH3 β†’ Urea (liver)\nβ€’ Liver enzymes: SGOT, SGPT (ALT, AST)\nβ€’ Kidney: GFR, creatinine clearance",
     "Harper's Illustrated Biochemistry\nLippincott's Biochemistry"),
]

row = 3
qr_headers = ["#", "Subject", "Key Topics / Drugs", "Important Facts / Values", "Recommended Books"]
for i, h in enumerate(qr_headers, 1):
    set_cell(ws4, row, i, h, bold=True, fg_color=C_GREY_DARK, font_color=C_WHITE)

for idx, (subj, color, topics, facts, books) in enumerate(qr_data):
    r = row + 1 + idx
    ws4.row_dimensions[r].height = 90
    set_cell(ws4, r, 1, str(idx+1), fg_color=C_GREY_LIGHT, font_color=C_GREY_DARK, bold=True)
    set_cell(ws4, r, 2, subj, bold=True, fg_color=color, font_color=C_WHITE, v_align="top", h_align="left")
    set_cell(ws4, r, 3, topics, fg_color=C_MINT if idx%2==0 else C_WHITE,
             h_align="left", v_align="top", wrap=True, font_size=9)
    set_cell(ws4, r, 4, facts, fg_color=C_LIGHT_BLUE if idx%2==0 else C_WHITE,
             h_align="left", v_align="top", wrap=True, font_size=9)
    set_cell(ws4, r, 5, books, fg_color=C_YELLOW_BG, h_align="left", v_align="top",
             wrap=True, font_size=9, italic=True, font_color=C_GREY)

# ── Footer note on Sheet 4 ──
r = row + 1 + len(qr_data) + 1
ws4.merge_cells(f"A{r}:E{r}")
ws4.row_dimensions[r].height = 28
c = ws4[f"A{r}"]
c.value = "πŸ’Š  Best of luck for Rajasthan Pharmacist Exam! Study smart, revise daily, practice MCQs every day. You can do it! 🎯"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")


# ══════════════════════════════════════════════════════════════════
# Save
# ══════════════════════════════════════════════════════════════════
output_path = "/tmp/workspace/raj-pharmacist/Rajasthan_Pharmacist_Study_Template.xlsx"
wb.save(output_path)
print(f"Saved: {output_path}")
Running Command

cd /tmp/workspace/raj-pharmacist && python create_template.py

Taiyaar ho gaya! Yahan download karo:
πŸ‘‡ Excel file download karo:

Rajasthan Pharmacist Study Template

Spreadsheet Β· XLSX


πŸ“‹ File mein 4 Sheets hain:

πŸ“„ Sheet 1 - Daily Checklist

  • Section A: Pura din ka time table (5 AM se 10 PM)
    • Har time slot: subject, topic, duration, completed checkbox, MCQ count
  • Section B: 11 subjects ka aaj ka topic tracker
  • Section C: MCQ daily tracker - attempted, correct, wrong, score%, negative marks
  • Section D: Daily self-assessment - kitne ghante padhe, accuracy, kal kya sudharna hai

πŸ“„ Sheet 2 - 3-Month Planner

  • 350 classes ka subject-wise distribution table
  • Har subject ko kitne classes: Pharmacology 75, Jurisprudence 50...
  • Month 1, 2, 3 ka week-by-week schedule
  • MCQ target per week

πŸ“„ Sheet 3 - Weekly Progress Tracker

  • 12 weeks ka tracker
  • Classes done, MCQs done, accuracy %, weak topics, hours studied, mock score
  • Month-wise color coding (blue = Month 1, green = Month 2, yellow = Month 3)

πŸ“„ Sheet 4 - Quick Reference

  • Har subject ke important drugs, key values, important facts
  • Recommended books
  • Ek jagah pe poora ready reference

πŸ’‘ Kaise use karein:

  1. Roz suba Sheet 1 kholo - date aur day number bharo
  2. Har time slot complete karne pe "Completed" mark karo
  3. Raat ko MCQ score bharo aur self-assessment karo
  4. Sunday ko Sheet 3 mein weekly summary update karo
  5. Doubt aaye toh Sheet 4 ka Quick Reference dekho
All the best! πŸ’ŠπŸŽ―

Me Subh 9 bje se pdhta hu or saam 5 bje tak

Reading File
Writing File

~/raj-pharmacist/create_template_v2.py

import openpyxl
from openpyxl.styles import PatternFill, Font, Alignment, Border, Side

wb = openpyxl.Workbook()

# ── Colors ─────────────────────────────────────────────────────
C_DARK_GREEN   = "1B5E20"
C_GREEN        = "2E7D32"
C_LIGHT_GREEN  = "A5D6A7"
C_MINT         = "E8F5E9"
C_ORANGE       = "E65100"
C_AMBER        = "FF8F00"
C_YELLOW_BG    = "FFF9C4"
C_BLUE_DARK    = "0D47A1"
C_BLUE         = "1565C0"
C_LIGHT_BLUE   = "BBDEFB"
C_BLUE_BG      = "E3F2FD"
C_RED          = "B71C1C"
C_LIGHT_RED    = "FFCDD2"
C_PURPLE       = "4A148C"
C_PURPLE_LIGHT = "E1BEE7"
C_GREY_DARK    = "37474F"
C_GREY         = "546E7A"
C_GREY_LIGHT   = "ECEFF1"
C_WHITE        = "FFFFFF"
C_TEAL         = "004D40"
C_TEAL_LIGHT   = "B2DFDB"

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

def font(bold=False, color="000000", size=11, italic=False):
    return Font(name="Arial", bold=bold, color=color, size=size, italic=italic)

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

def thin_border():
    s = Side(style="thin", color="BDBDBD")
    return Border(left=s, right=s, top=s, bottom=s)

def set_cell(ws, row, col, value, bold=False, fg_color=None, font_color="000000",
             font_size=11, h_align="center", v_align="center", wrap=False,
             italic=False, border=True):
    cell = ws.cell(row=row, column=col, value=value)
    cell.font = font(bold=bold, color=font_color, size=font_size, italic=italic)
    cell.alignment = align(h_align, v_align, wrap)
    if fg_color:
        cell.fill = fill(fg_color)
    if border:
        cell.border = thin_border()
    return cell


# ═══════════════════════════════════════════════════════════════
# SHEET 1 β€” DAILY CHECKLIST  (9 AM – 5 PM)
# ═══════════════════════════════════════════════════════════════
ws1 = wb.active
ws1.title = "Daily Checklist"
ws1.sheet_view.showGridLines = False

col_widths = {"A":4,"B":22,"C":26,"D":26,"E":14,"F":14,"G":16,"H":22}
for col, w in col_widths.items():
    ws1.column_dimensions[col].width = w

# ── Title ──
ws1.merge_cells("A1:H1")
ws1.row_dimensions[1].height = 48
c = ws1["A1"]
c.value = "🎯  RAJASTHAN PHARMACIST EXAM β€” DAILY STUDY CHECKLIST  (9:00 AM – 5:00 PM)"
c.font = Font(name="Arial", bold=True, size=15, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")

# ── Info row ──
for r_num, items in [(2, [("A2:B2","πŸ“…  Date:","left",C_LIGHT_GREEN,True),
                           ("C2:D2","","left",C_YELLOW_BG,False),
                           ("E2:F2","πŸ“†  Day No.:","center",C_LIGHT_GREEN,True),
                           ("G2:H2","","left",C_YELLOW_BG,False)]),
                     (3, [("A3:C3","⏱  Study Window:  9:00 AM – 5:00 PM  (8 hrs)","left",C_LIGHT_BLUE,True),
                           ("D3:F3","❌  Neg. Marking: 0.33 / wrong answer","center",C_LIGHT_RED,True),
                           ("G3:H3","πŸ†  Target: 120/150","center",C_MINT,True)])]:
    ws1.row_dimensions[r_num].height = 22
    for merge_range, val, ha, bg, bld in items:
        ws1.merge_cells(merge_range)
        start = merge_range.split(":")[0]
        rc = ws1[start]
        rc.value = val
        rc.font = Font(name="Arial", bold=bld, size=11,
                       color=C_RED if "Neg" in val else
                             C_BLUE_DARK if "Window" in val else
                             C_DARK_GREEN if "Target" in val else "000000")
        rc.fill = fill(bg)
        rc.alignment = align(ha, "center")
        rc.border = thin_border()

# ── Section A header ──
row = 5
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "⏰  SECTION A β€” TIME TABLE  (9:00 AM to 5:00 PM)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_BLUE)
c.alignment = align("left", "center")

row += 1
ws1.row_dimensions[row].height = 20
for i, h in enumerate(["#","Time Slot","Subject","Today's Topic","Duration","Done?","MCQs Done","Notes"],1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_BLUE_DARK, font_color=C_WHITE)

# 8-hour schedule 9 AM – 5 PM
# Sessions: each ~1 hr study + short breaks, lunch break
time_slots = [
    # num  slot                   subject                       topic                   dur     break?
    ("1","9:00 – 10:00 AM",  "Pharmacology",              "Drug classification / Mechanisms",  "1 hr",  False),
    ("2","10:00 – 11:00 AM", "Pharmacology",              "CVS / Autonomic drugs",              "1 hr",  False),
    ("3","11:00 – 11:15 AM", "β˜•  Short Break",            "–",                                 "15 min", True),
    ("4","11:15 AM – 12:15 PM","Pharmaceutical Jurisprudence","D&C Act / Schedules",           "1 hr",  False),
    ("5","12:15 – 1:00 PM",  "Pharmaceutics",             "Dosage forms",                      "45 min", False),
    ("6","1:00 – 1:45 PM",   "🍽  Lunch Break",            "–",                                 "45 min", True),
    ("7","1:45 – 2:45 PM",   "Pharmacognosy",             "Crude drugs / Alkaloids",           "1 hr",  False),
    ("8","2:45 – 3:45 PM",   "Biochemistry / Physiology", "Metabolism / Lab values",           "1 hr",  False),
    ("9","3:45 – 4:00 PM",   "β˜•  Short Break",            "–",                                 "15 min", True),
    ("10","4:00 – 4:30 PM",  "General Knowledge",         "Rajasthan GK / Health schemes",     "30 min", False),
    ("11","4:30 – 5:00 PM",  "πŸ“  MCQ Revision Session",  "All today's topics",                "30 min", False),
]

for i, (num, slot, subj, topic, dur, is_break) in enumerate(time_slots):
    r = row + 1 + i
    ws1.row_dimensions[r].height = 20
    if is_break:
        bg = C_GREY_LIGHT
        fc = C_GREY
    else:
        bg = C_MINT if i % 2 == 0 else C_WHITE
        fc = "000000"

    set_cell(ws1, r, 1, num, fg_color=bg, font_color=C_GREY_DARK, bold=True)
    set_cell(ws1, r, 2, slot, fg_color=bg, font_color=C_BLUE_DARK, bold=not is_break, h_align="left")
    set_cell(ws1, r, 3, subj, fg_color=bg, font_color=fc, bold=not is_break, h_align="left")
    set_cell(ws1, r, 4, topic, fg_color=bg, font_color=C_GREY, italic=True, h_align="left")
    set_cell(ws1, r, 5, dur, fg_color=bg, font_color=C_ORANGE, bold=True)
    if is_break:
        set_cell(ws1, r, 6, "–", fg_color=C_GREY_LIGHT, font_color=C_GREY)
        set_cell(ws1, r, 7, "–", fg_color=C_GREY_LIGHT, font_color=C_GREY)
        set_cell(ws1, r, 8, "–", fg_color=C_GREY_LIGHT, font_color=C_GREY)
    else:
        set_cell(ws1, r, 6, "☐ Pending", fg_color=C_YELLOW_BG, font_color=C_AMBER, bold=True)
        set_cell(ws1, r, 7, 0, fg_color=bg, font_color=C_BLUE)
        set_cell(ws1, r, 8, "", fg_color=bg, h_align="left")

# Summary row – total study hours
r_sum = row + 1 + len(time_slots)
ws1.row_dimensions[r_sum].height = 22
ws1.merge_cells(f"A{r_sum}:D{r_sum}")
set_cell(ws1, r_sum, 1, "βœ…  Total Study Time (excl. breaks)  β†’  6 hrs 15 min  |  MCQ Revision: 30 min", bold=True,
         fg_color=C_DARK_GREEN, font_color=C_WHITE, h_align="left")
set_cell(ws1, r_sum, 5, "6h 15m", bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
ws1.merge_cells(f"F{r_sum}:H{r_sum}")
set_cell(ws1, r_sum, 6, "Total MCQs Today β†’", bold=True, fg_color=C_BLUE_DARK, font_color=C_WHITE)

# ── Section B β€” Subject checklist ──
row = r_sum + 2
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "πŸ“š  SECTION B β€” SUBJECT COMPLETION TRACKER"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_GREEN)
c.alignment = align("left", "center")

row += 1
for i, h in enumerate(["#","Subject","Topic Covered Today","Pages / Chapter","Status","Difficulty (1-5)","MCQ Score %","Revise Tomorrow?"],1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)

subjects = [
    ("1","Pharmacology & Toxicology","","","☐ Done","","",""),
    ("2","Pharmaceutical Jurisprudence","","","☐ Done","","",""),
    ("3","Pharmaceutics","","","☐ Done","","",""),
    ("4","Pharmacognosy","","","☐ Done","","",""),
    ("5","Biochemistry & Clinical Path.","","","☐ Done","","",""),
    ("6","Human Anatomy & Physiology","","","☐ Done","","",""),
    ("7","Pharmaceutical Chemistry","","","☐ Done","","",""),
    ("8","Hospital & Clinical Pharmacy","","","☐ Done","","",""),
    ("9","Community & Health Ed.","","","☐ Done","","",""),
    ("10","Drug Store & Business Mgmt.","","","☐ Done","","",""),
    ("11","General Knowledge (Rajasthan)","","","☐ Done","","",""),
]
for i, row_data in enumerate(subjects):
    r = row + 1 + i
    ws1.row_dimensions[r].height = 18
    bg = C_MINT if i % 2 == 0 else C_WHITE
    for j, val in enumerate(row_data):
        set_cell(ws1, r, j+1, val,
                 fg_color=bg,
                 font_color=C_BLUE_DARK if j==1 else C_AMBER if j==4 else C_GREY_DARK,
                 bold=(j==1),
                 h_align="left" if j in [1,2,3] else "center")

# ── Section C β€” MCQ Tracker ──
row = row + 1 + len(subjects) + 1
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "πŸ“  SECTION C β€” MCQ PRACTICE TRACKER"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_PURPLE)
c.alignment = align("left", "center")

row += 1
for i, h in enumerate(["#","Subject","Attempted","Correct","Wrong","Score %","Neg. Marks Cut","Remarks"],1):
    set_cell(ws1, row, i, h, bold=True, fg_color=C_PURPLE, font_color=C_WHITE)

for i in range(1, 7):
    r = row + i
    ws1.row_dimensions[r].height = 18
    bg = C_PURPLE_LIGHT if i % 2 == 0 else C_WHITE
    for j in range(1, 9):
        set_cell(ws1, r, j, "" if j > 1 else str(i), fg_color=bg,
                 font_color=C_PURPLE if j==1 else "000000")

r_tot = row + 7
ws1.row_dimensions[r_tot].height = 22
ws1.merge_cells(f"A{r_tot}:B{r_tot}")
set_cell(ws1, r_tot, 1, "DAILY TOTAL", bold=True, fg_color=C_PURPLE, font_color=C_WHITE)
for j in range(3, 9):
    set_cell(ws1, r_tot, j, "", fg_color=C_PURPLE_LIGHT, bold=True)

# ── Section D β€” Self Assessment ──
row = r_tot + 2
ws1.merge_cells(f"A{row}:H{row}")
ws1.row_dimensions[row].height = 24
c = ws1[f"A{row}"]
c.value = "🌟  SECTION D β€” END OF DAY SELF-ASSESSMENT  (5:00 PM)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_ORANGE)
c.alignment = align("left", "center")

assess = [
    ("Aaj kitne ghante padha?",              "______ hours (max 8)"),
    ("Total MCQs solve kiye?",               "______ MCQs"),
    ("MCQ accuracy?",                        "______%"),
    ("Sabse difficult subject aaj?",         "______________________________"),
    ("Kya sabhi time slots complete hue?",   "Haan βœ…  /  Nahi ❌"),
    ("Kal kya improve karna hai?",           "______________________________"),
    ("Motivational note:",                   "______________________________"),
]
for i, (q, ans) in enumerate(assess):
    r = row + 1 + i
    ws1.row_dimensions[r].height = 20
    bg = C_YELLOW_BG if i % 2 == 0 else C_WHITE
    ws1.merge_cells(f"A{r}:D{r}")
    c = ws1[f"A{r}"]
    c.value = q; c.font = Font(name="Arial", bold=True, size=11, color=C_GREY_DARK)
    c.fill = fill(bg); c.alignment = align("left", "center"); c.border = thin_border()
    ws1.merge_cells(f"E{r}:H{r}")
    c2 = ws1[f"E{r}"]
    c2.value = ans; c2.font = Font(name="Arial", italic=True, size=11, color=C_ORANGE)
    c2.fill = fill(C_WHITE); c2.alignment = align("left", "center"); c2.border = thin_border()


# ═══════════════════════════════════════════════════════════════
# SHEET 2 β€” 3-MONTH PLANNER
# ═══════════════════════════════════════════════════════════════
ws2 = wb.create_sheet("3-Month Planner")
ws2.sheet_view.showGridLines = False
for col, w in zip("ABCDEFGHI", [8,12,22,30,20,12,14,14,20]):
    ws2.column_dimensions[col].width = w

ws2.merge_cells("A1:I1")
ws2.row_dimensions[1].height = 46
c = ws2["A1"]
c.value = "πŸ“…  RAJASTHAN PHARMACIST β€” 3-MONTH PLANNER  |  350 Classes  |  9 AM – 5 PM"
c.font = Font(name="Arial", bold=True, size=14, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")

# Study hours summary box
row = 3
ws2.merge_cells(f"A{row}:I{row}")
ws2.row_dimensions[row].height = 22
c = ws2[f"A{row}"]
c.value = "πŸ“Š  Daily: 8 hrs total  |  6h 15min study  |  45min lunch  |  30min breaks  |  30min MCQ revision  |  90 days Γ— ~3.9 classes/day = 350 classes"
c.font = Font(name="Arial", bold=True, size=11, color=C_WHITE)
c.fill = fill(C_TEAL)
c.alignment = align("left", "center")

# Subject distribution
row = 5
ws2.merge_cells(f"A{row}:I{row}")
ws2.row_dimensions[row].height = 22
c = ws2[f"A{row}"]
c.value = "πŸ“‹  SUBJECT-WISE CLASS DISTRIBUTION (Total = 350)"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_BLUE)
c.alignment = align("left", "center")

row += 1
for i, h in enumerate(["#","Subject","Classes","% Share","Priority","Month 1","Month 2","Month 3","Remarks"],1):
    set_cell(ws2, row, i, h, bold=True, fg_color=C_BLUE_DARK, font_color=C_WHITE)

dist = [
    (1,"Pharmacology & Toxicology",     75,"21.4%","πŸ”΄ Highest",40,20,15,"Roz 2 hrs, 9-11 AM"),
    (2,"Pharmaceutical Jurisprudence",  50,"14.3%","πŸ”΄ High",   25,15,10,"Acts + Schedules"),
    (3,"Pharmaceutics",                 45,"12.9%","🟠 High",   13,25, 7,"Dosage forms focus"),
    (4,"Pharmacognosy",                 35,"10.0%","🟠 Medium",  5,22, 8,"Plants + alkaloids"),
    (5,"Biochemistry & Clinical Path.", 30, "8.6%","🟑 Medium",  0,20,10,"Lab values yaad karo"),
    (6,"Human Anatomy & Physiology",    25, "7.1%","🟑 Medium",  0, 5,20,"Body systems"),
    (7,"Pharmaceutical Chemistry",      25, "7.1%","🟑 Medium",  0, 5,20,"Assay + stability"),
    (8,"Hospital & Clinical Pharmacy",  20, "5.7%","🟒 Low-Med", 0, 0,20,"Formulary + TPN"),
    (9,"Health Ed & Community Pharm.",  20, "5.7%","🟒 Low-Med", 0, 0,20,"Nat. health programs"),
    (10,"Drug Store & Business Mgmt.",  15, "4.3%","🟒 Low",     0, 0,15,"Inventory, purchase"),
    (11,"General Knowledge (Rajasthan)",10, "2.9%","πŸ”΅ GK",      0, 0,10,"Raj. schemes + GK"),
    ("","REVISION + MOCK TESTS",       100,"  --","πŸ” Ongoing", 10,10,80,"Daily MCQ + weekly mock"),
]

for i, rd in enumerate(dist):
    r = row + 1 + i
    ws2.row_dimensions[r].height = 18
    is_rev = (rd[0] == "")
    bg = C_LIGHT_GREEN if is_rev else (C_MINT if i%2==0 else C_WHITE)
    for j, val in enumerate(rd):
        set_cell(ws2, r, j+1, val, fg_color=bg,
                 font_color=C_RED if is_rev else (C_BLUE_DARK if j==1 else "000000"),
                 bold=is_rev or j==1,
                 h_align="left" if j==1 else ("left" if j==8 else "center"))

# Grand total
r_gt = row + 1 + len(dist)
ws2.row_dimensions[r_gt].height = 22
ws2.merge_cells(f"A{r_gt}:B{r_gt}")
set_cell(ws2, r_gt, 1, "GRAND TOTAL", bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
set_cell(ws2, r_gt, 3, 350, bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
set_cell(ws2, r_gt, 4, "100%", bold=True, fg_color=C_DARK_GREEN, font_color=C_WHITE)
for j in range(5, 10):
    set_cell(ws2, r_gt, j, "", fg_color=C_DARK_GREEN)

# Monthly week-by-week
months = [
    ("MONTH 1 β€” Foundation  (Day 1–30)", C_BLUE, C_BLUE_BG, [
        ("Wk 1","Day 1–7",  "Pharmacology",                "Autonomic NS, CVS drugs",          18,"9-11 AM: Pharma, 11:15–12: Jurisprudence"),
        ("Wk 2","Day 8–14", "Pharmacology",                "CNS, Antibiotics, Antidiabetics",  18,"Roz 2 sessions pharma"),
        ("Wk 3","Day 15–21","Pharmacology + Jurisprudence","Remaining Pharma + D&C Act",       20,"Jurisprudence 11:15–12:15"),
        ("Wk 4","Day 22–30","Jurisprudence + Pharmaceutics","Pharmacy Act, NDPS, Schedules",  22,"Pharmaceutics 12:15–1 PM"),
    ]),
    ("MONTH 2 β€” Core Building  (Day 31–60)", C_GREEN, C_MINT, [
        ("Wk 5","Day 31–37","Pharmaceutics",               "Dosage forms, Tablets, Injections",20,"Morning slot: Pharmaceutics"),
        ("Wk 6","Day 38–44","Pharmaceutics + Pharmacognosy","Remaining + Alkaloids, Glycosides",20,"Afternoon: Pharmacognosy"),
        ("Wk 7","Day 45–51","Pharmacognosy",               "Volatile oils, Crude drugs",       18,"Roz 1 hr Pharmacognosy"),
        ("Wk 8","Day 52–60","Biochemistry & Clinical Path.","Metabolism, Lab values",          22,"2:45–3:45 PM slot"),
    ]),
    ("MONTH 3 β€” Completion + Revision  (Day 61–90)", C_ORANGE, C_YELLOW_BG, [
        ("Wk 9", "Day 61–67","Anatomy + Hospital Pharmacy", "Body systems, Hospital formulary", 20,"9–10 AM: Anatomy"),
        ("Wk 10","Day 68–74","Pharma Chemistry + Community","Assay, Health programs",          22,"11:15 + 2:45 slots"),
        ("Wk 11","Day 75–81","Drug Store + GK + Revision",  "Rajasthan schemes, Store mgmt",   22,"Last hour: Full revision"),
        ("Wk 12","Day 82–90","FULL REVISION + MOCK TESTS",  "All subjects + Prev. year papers",28,"5 mock tests, 100 MCQ/day"),
    ]),
]

row = r_gt + 2
for mname, hcol, bgcol, weeks in months:
    ws2.merge_cells(f"A{row}:I{row}")
    ws2.row_dimensions[row].height = 24
    c = ws2[f"A{row}"]
    c.value = f"πŸ—“οΈ  {mname}"
    c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
    c.fill = fill(hcol)
    c.alignment = align("left", "center")
    row += 1

    for i, h in enumerate(["Week","Days","Subject","Topics","Classes","Done?","MCQ Target","Actual MCQ","Notes"],1):
        set_cell(ws2, row, i, h, bold=True, fg_color=hcol, font_color=C_WHITE)
    row += 1

    for i, (wk, days, subj, topics, classes, notes) in enumerate(weeks):
        ws2.row_dimensions[row].height = 20
        bg = bgcol if i%2==0 else C_WHITE
        set_cell(ws2, row, 1, wk, bold=True, fg_color=bg, font_color=hcol)
        set_cell(ws2, row, 2, days, fg_color=bg, font_color=C_GREY_DARK)
        set_cell(ws2, row, 3, subj, bold=True, fg_color=bg, h_align="left")
        set_cell(ws2, row, 4, topics, fg_color=bg, h_align="left", italic=True, font_color=C_GREY)
        set_cell(ws2, row, 5, classes, bold=True, fg_color=bg, font_color=C_ORANGE)
        set_cell(ws2, row, 6, "☐", fg_color=C_YELLOW_BG, font_color=C_AMBER, bold=True)
        set_cell(ws2, row, 7, classes*5, fg_color=bg, font_color=C_BLUE)
        set_cell(ws2, row, 8, "", fg_color=bg)
        set_cell(ws2, row, 9, notes, fg_color=bg, h_align="left", font_size=9, font_color=C_GREY)
        row += 1
    row += 1


# ═══════════════════════════════════════════════════════════════
# SHEET 3 β€” WEEKLY PROGRESS TRACKER
# ═══════════════════════════════════════════════════════════════
ws3 = wb.create_sheet("Weekly Progress")
ws3.sheet_view.showGridLines = False
for col, w in zip("ABCDEFGHIJ", [8,14,14,14,14,18,14,16,16,22]):
    ws3.column_dimensions[col].width = w

ws3.merge_cells("A1:J1")
ws3.row_dimensions[1].height = 44
c = ws3["A1"]
c.value = "πŸ“ˆ  WEEKLY PROGRESS TRACKER β€” Rajasthan Pharmacist Exam  (12 Weeks)"
c.font = Font(name="Arial", bold=True, size=13, color=C_WHITE)
c.fill = fill(C_PURPLE)
c.alignment = align("center", "center")

row = 3
ws3.merge_cells(f"A{row}:J{row}")
ws3.row_dimensions[row].height = 20
c = ws3[f"A{row}"]
c.value = "πŸ”΅ Month 1 (Wk 1-4)  |  🟒 Month 2 (Wk 5-8)  |  🟑 Month 3 (Wk 9-12)"
c.font = Font(name="Arial", bold=True, size=11, color=C_WHITE)
c.fill = fill(C_GREY_DARK)
c.alignment = align("left", "center")

row += 1
for i, h in enumerate(["Week","Dates","Classes Done","MCQs Done","Accuracy %","Weak Topics","Hours Studied","Mock Score /150","Revision Done?","Next Week Plan"],1):
    set_cell(ws3, row, i, h, bold=True, fg_color=C_GREY_DARK, font_color=C_WHITE)

week_info = [
    ("Wk 1","Day 1-7"),  ("Wk 2","Day 8-14"),  ("Wk 3","Day 15-21"),("Wk 4","Day 22-30"),
    ("Wk 5","Day 31-37"),("Wk 6","Day 38-44"),  ("Wk 7","Day 45-51"),("Wk 8","Day 52-60"),
    ("Wk 9","Day 61-67"),("Wk 10","Day 68-74"),("Wk 11","Day 75-81"),("Wk 12","Day 82-90"),
]
m_bg = [C_BLUE_BG]*4 + [C_MINT]*4 + [C_YELLOW_BG]*4
for i, (wk, dates) in enumerate(week_info):
    r = row + 1 + i
    ws3.row_dimensions[r].height = 22
    bg = m_bg[i]
    set_cell(ws3, r, 1, wk, bold=True, fg_color=bg, font_color=C_PURPLE)
    set_cell(ws3, r, 2, dates, fg_color=bg, font_color=C_GREY_DARK)
    for j in range(3, 11):
        set_cell(ws3, r, j, "", fg_color=bg)


# ═══════════════════════════════════════════════════════════════
# SHEET 4 β€” QUICK REFERENCE CARD
# ═══════════════════════════════════════════════════════════════
ws4 = wb.create_sheet("Quick Reference")
ws4.sheet_view.showGridLines = False
for col, w in zip("ABCDE", [4,26,32,30,26]):
    ws4.column_dimensions[col].width = w

ws4.merge_cells("A1:E1")
ws4.row_dimensions[1].height = 44
c = ws4["A1"]
c.value = "⚑  QUICK REFERENCE β€” Key Topics, Important Values & Books"
c.font = Font(name="Arial", bold=True, size=14, color=C_WHITE)
c.fill = fill(C_AMBER)
c.alignment = align("center", "center")

row = 3
for i, h in enumerate(["#","Subject","Important Drugs / Topics","Key Facts / Values","Best Books"],1):
    set_cell(ws4, row, i, h, bold=True, fg_color=C_GREY_DARK, font_color=C_WHITE)

qr = [
    ("Pharmacology", C_RED,
     "Autonomic: Atropine, Neostigmine, Adrenaline\nCVS: Digoxin, Amlodipine, Atenolol, Enalapril\nCNS: Diazepam, Phenytoin, Morphine, Haloperidol\nAntibiotics: Amoxicillin, Ciprofloxacin, Gentamicin\nAntidiabetics: Metformin, Glibenclamide, Insulin\nNSAIDs: Aspirin, Ibuprofen, Diclofenac",
     "Antidotes:\nβ€’ Organophosphate β†’ Atropine + PAM\nβ€’ Morphine OD β†’ Naloxone\nβ€’ Paracetamol OD β†’ N-Acetylcysteine\nβ€’ Iron OD β†’ Deferoxamine\nβ€’ Heparin OD β†’ Protamine sulfate\nβ€’ Warfarin OD β†’ Vit K / FFP",
     "KD Tripathi - Pharmacology\nRS Satoskar\nRL Miglani MCQ Book"),

    ("Pharmaceutical Jurisprudence", C_BLUE_DARK,
     "Drug Schedules:\nβ€’ Schedule H = Rx only\nβ€’ Schedule H1 = Antibiotics + special record\nβ€’ Schedule X = Habit-forming (30-day limit)\nβ€’ Schedule G = Caution label\nβ€’ Schedule C & C1 = Biologicals\nβ€’ Schedule Y = Clinical trials",
     "Important Acts:\nβ€’ Drugs & Cosmetics Act 1940 + Rules 1945\nβ€’ Pharmacy Act 1948 (PCI registration)\nβ€’ NDPS Act 1985\nβ€’ Drugs (Price Control) Order\nβ€’ Consumer Protection Act\nPenalty: Adulteration = up to 10 yrs jail",
     "Pharmaceutical Jurisprudence - Mithal\nOfficial acts (free govt. PDF)"),

    ("Pharmaceutics", C_TEAL,
     "Dosage Forms:\nβ€’ Tablets: DC, wet granulation, dry granulation\nβ€’ Capsules: Hard gelatin, soft gelatin\nβ€’ Injections: IV, IM, SC β€” pyrogen-free\nβ€’ Ointments: W/O and O/W bases\nβ€’ Suspensions: Flocculated vs deflocculated\nβ€’ Aerosols: MDI propellants",
     "Key Values:\nβ€’ Autoclave: 121Β°C / 15 min (moist heat)\nβ€’ Dry heat: 160Β°C / 1 hr\nβ€’ Isotonic NaCl: 0.9%\nβ€’ Isotonic dextrose: 5%\nβ€’ Pyrogen test: Rabbit test / LAL test\nβ€’ BCS Class I = High sol + High perm",
     "Lachman & Lieberman\nRemington's Pharmaceutical Sciences"),

    ("Pharmacognosy", C_GREEN,
     "Alkaloids:\nβ€’ Opium (Papaver) β†’ Morphine, Codeine\nβ€’ Cinchona β†’ Quinine, Quinidine\nβ€’ Rauwolfia β†’ Reserpine\nβ€’ Belladonna β†’ Atropine\nβ€’ Ergot β†’ Ergotamine\nGlycosides:\nβ€’ Digitalis β†’ Digoxin (cardiac)\nβ€’ Senna β†’ Sennosides (laxative)",
     "Evaluation tests:\nβ€’ Ash value: Total, acid-insoluble, water-soluble\nβ€’ Moisture content (Loss on drying)\nβ€’ Extractive values\nβ€’ Foreign matter test\nTLC Rf values used for identification\nWHO guidelines for herbal quality",
     "CK Kokate - Pharmacognosy\nTyler, Brady & Robbers"),

    ("Biochemistry + Physiology", C_PURPLE,
     "Normal Lab Values:\nβ€’ Fasting glucose: 70–110 mg/dL\nβ€’ HbA1c: Normal <5.7%, DM >6.5%\nβ€’ Hb: Male 13–17 g/dL, Female 12–15\nβ€’ Creatinine: 0.6–1.2 mg/dL\nβ€’ Total Cholesterol: <200 mg/dL\nβ€’ BP: 120/80 mmHg (normal)",
     "Key Pathways:\nβ€’ Glycolysis: Glucose β†’ 2 Pyruvate (2 ATP)\nβ€’ TCA Cycle: 38 ATP total\nβ€’ Urea cycle: NH3 β†’ Urea (liver)\nβ€’ Liver enzymes: ALT (SGPT), AST (SGOT)\nβ€’ INR: Coagulation test\nβ€’ GFR: Kidney function (normal >90 mL/min)",
     "Harper's Biochemistry\nGanong's Review of Medical Physiology"),
]

for i, (subj, color, topics, facts, books) in enumerate(qr):
    r = row + 1 + i
    ws4.row_dimensions[r].height = 105
    set_cell(ws4, r, 1, str(i+1), fg_color=C_GREY_LIGHT, bold=True, font_color=C_GREY_DARK)
    set_cell(ws4, r, 2, subj, bold=True, fg_color=color, font_color=C_WHITE, v_align="top", h_align="left")
    set_cell(ws4, r, 3, topics, fg_color=C_MINT if i%2==0 else C_WHITE,
             h_align="left", v_align="top", wrap=True, font_size=9)
    set_cell(ws4, r, 4, facts, fg_color=C_LIGHT_BLUE if i%2==0 else C_WHITE,
             h_align="left", v_align="top", wrap=True, font_size=9)
    set_cell(ws4, r, 5, books, fg_color=C_YELLOW_BG, h_align="left", v_align="top",
             wrap=True, font_size=9, italic=True, font_color=C_GREY)

# Footer
r_f = row + 1 + len(qr) + 1
ws4.merge_cells(f"A{r_f}:E{r_f}")
ws4.row_dimensions[r_f].height = 30
c = ws4[f"A{r_f}"]
c.value = "πŸ’Š  Roz 9 AM se 5 PM tak padho, MCQs solve karo, aur revision mat chhodo β€” Rajasthan Pharmacist exam zaroor clear hoga! 🎯"
c.font = Font(name="Arial", bold=True, size=12, color=C_WHITE)
c.fill = fill(C_DARK_GREEN)
c.alignment = align("center", "center")


# ── Save ──
path = "/tmp/workspace/raj-pharmacist/Rajasthan_Pharmacist_9AM_5PM_Template.xlsx"
wb.save(path)
print(f"Saved: {path}")
Running Command

cd /tmp/workspace/raj-pharmacist && python create_template_v2.py

Taiyaar! Tumhari timing ke hisaab se bilkul naya template:
πŸ‘‡ Download karo:

Rajasthan Pharmacist 9AM 5PM Template

Spreadsheet Β· XLSX


⏰ Tumhara 9 AM – 5 PM Daily Schedule (8 ghante)

TimeSubjectDuration
9:00 – 10:00 AMPharmacology (Drug classification)1 hr
10:00 – 11:00 AMPharmacology (CVS / Autonomic)1 hr
11:00 – 11:15 AMβ˜• Short break15 min
11:15 AM – 12:15 PMPharmaceutical Jurisprudence1 hr
12:15 – 1:00 PMPharmaceutics45 min
1:00 – 1:45 PM🍽 Lunch break45 min
1:45 – 2:45 PMPharmacognosy1 hr
2:45 – 3:45 PMBiochemistry / Physiology1 hr
3:45 – 4:00 PMβ˜• Short break15 min
4:00 – 4:30 PMGeneral Knowledge (Rajasthan)30 min
4:30 – 5:00 PMπŸ“ MCQ Revision (Aaj ke topics)30 min
Total study time = 6 hrs 15 min + 30 min MCQ = 6 hrs 45 min βœ…

πŸ“„ File mein 4 Sheets:

  1. Daily Checklist - Har slot ka checklist, subject tracker, MCQ tracker, self-assessment
  2. 3-Month Planner - 350 classes ka week-by-week breakdown
  3. Weekly Progress - 12 weeks ka progress record
  4. Quick Reference - Har subject ke important drugs, lab values, acts, books
Roz 5 PM pe Daily Checklist fill karo - progress khud dikhega! πŸ’ͺ
This is a shared conversation. Sign in to Orris to start your own chat.