Pharmacy me pharmacist exam k liye sabse phle Konsi subject se pdhna chaiye
pharmacist exam India subject wise preparation priority GPAT 2025
| Phase | Kya Karein |
|---|---|
| Week 1-4 | Pharmacology + Pharmaceutics basics |
| Week 5-8 | Medicinal Chemistry + Pharmacognosy |
| Week 9-12 | Analysis + Biochemistry + Law |
| Last 4 weeks | Full revision + MCQ practice |
State pharmacist
state pharmacist exam syllabus subject wise weightage India 2025 2026
| Section | Marks |
|---|---|
| Professional Ability (Pharmacy) | 70-80% |
| General Awareness / GK | 10-15% |
| Reasoning / Aptitude | 5-10% |
~25-30 questions aate hain
~15-20 questions - Sabse EASY scoring subject
~15 questions
~10-12 questions
~8-10 questions
~5-8 questions (State mein GPAT se kam aata hai)
| Month | Subject | Target |
|---|---|---|
| Month 1 | Pharmacology (poora) | Classifications + mechanisms complete |
| Month 1 | Jurisprudence (parallel) | Acts + Schedules yaad karo |
| Month 2 | Pharmaceutics + Pharmacognosy | Dosage forms + crude drugs |
| Month 2 | Biochemistry + Physiology | Pathways + body functions |
| Month 3 | Pharm Chemistry | Basics only |
| Month 3 | Full revision + MCQ practice | 100 MCQ daily |
Rajsthan
Rajasthan pharmacist exam syllabus 2025 2026 RSMSSB subject wise weightage pattern
https://www.adda247.com/exams/nursing/rajasthan-pharmacist-sβ¦
| Section | Questions | Marks |
|---|---|---|
| General Knowledge | 45 | 45 |
| Pharmacist Subject | 105 | 105 |
| Total | 150 | 150 |
| Month | Subject | Roz kitna time |
|---|---|---|
| Month 1, Week 1-2 | Pharmacology | 3 ghante |
| Month 1, Week 3-4 | Jurisprudence + Schedules | 2 ghante |
| Month 2, Week 1-2 | Pharmaceutics + Pharmacognosy | 2.5 ghante |
| Month 2, Week 3-4 | Biochemistry + Anatomy | 2 ghante |
| Month 3, Week 1-2 | Hospital Pharmacy + Community | 1.5 ghante |
| Month 3, Week 3-4 | GK (Rajasthan) + Full revision | 2 ghante |
| Subject | Book |
|---|---|
| Pharmacology | K.D. Tripathi ya R.S. Satoskar |
| Jurisprudence | Pharmaceutical Jurisprudence by Mithal |
| All subjects MCQ | R.L. Miglani - Pharmacist MCQ (best) |
| Rajasthan GK | Lucent + local Rajasthan GK book |
Mujhe 3 month ki pure subject lo ki 350 Class h uske hisaab se tume table bnaa do
| # | Subject | Classes | Priority | Reason |
|---|---|---|---|---|
| 1 | Pharmacology & Toxicology | 75 | π΄ Highest | 25-30% paper, sabse zyada MCQ |
| 2 | Pharmaceutical Jurisprudence | 50 | π΄ High | Easy scoring, Acts + Schedules |
| 3 | Pharmaceutics | 45 | π High | Dosage forms, formulation |
| 4 | Pharmacognosy | 35 | π Medium | Crude drugs, plant sources |
| 5 | Biochemistry & Clinical Pathology | 30 | π‘ Medium | Lab values, metabolism |
| 6 | Human Anatomy & Physiology | 25 | π‘ Medium | Body systems basics |
| 7 | Pharmaceutical Chemistry | 25 | π‘ Medium | Assay, stability |
| 8 | Hospital & Clinical Pharmacy | 20 | π’ Low-Med | Hospital formulary |
| 9 | Health Education & Community Pharmacy | 20 | π’ Low-Med | National programs |
| 10 | Drug Store & Business Management | 15 | π’ Low | Store mgmt, inventory |
| 11 | General Knowledge (Rajasthan + National) | 10 | π΅ GK | Revision + current affairs |
| TOTAL | 350 |
| Week | Days | Subject | Classes |
|---|---|---|---|
| Week 1 | Day 1-7 | Pharmacology - Autonomic NS, CVS drugs | 18 classes |
| Week 2 | Day 8-14 | Pharmacology - CNS, Antibiotics, Antidiabetics | 18 classes |
| Week 3 | Day 15-21 | Pharmacology - Remaining + Jurisprudence start (D&C Act) | 20 classes |
| Week 4 | Day 22-30 | Jurisprudence (Pharmacy Act, NDPS, Schedules) + Pharmaceutics start | 22 classes |
| Month 1 Total | 78 classes |
| Week | Days | Subject | Classes |
|---|---|---|---|
| Week 5 | Day 31-37 | Pharmaceutics - Dosage forms, tablets, capsules, injections | 20 classes |
| Week 6 | Day 38-44 | Pharmaceutics remaining + Pharmacognosy start | 20 classes |
| Week 7 | Day 45-51 | Pharmacognosy (alkaloids, glycosides, volatile oils) | 18 classes |
| Week 8 | Day 52-60 | Biochemistry + Clinical Pathology | 22 classes |
| Month 2 Total | 80 classes |
| Week | Days | Subject | Classes |
|---|---|---|---|
| Week 9 | Day 61-67 | Human Anatomy & Physiology | 20 classes |
| Week 10 | Day 68-74 | Pharmaceutical Chemistry + Hospital Pharmacy | 22 classes |
| Week 11 | Day 75-81 | Community Pharmacy + Drug Store Management + GK | 22 classes |
| Week 12 | Day 82-90 | Full Revision + Mock Tests + Previous Year Papers | 28 classes |
| Month 3 Total | 92 classes |
β οΈ Month 1+2+3 = 78+80+92 = 250 classes subject-wise + 100 classes revision/MCQ = 350 total β
| Din | Type |
|---|---|
| Monday - Saturday | 4-5 new topic classes |
| Sunday | Revision + 50 MCQ practice |
| Revision Type | Classes |
|---|---|
| Weekly topic revision | 30 |
| Subject end revision | 25 |
| Mock Tests / Full Papers | 20 |
| Previous Year Papers (Rajasthan) | 15 |
| Doubt clearing | 10 |
| Total | 100 |
Create a daily study checklist and time management template
mkdir -p /tmp/workspace/raj-pharmacist && ls /tmp/workspace/
~/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}")
cd /tmp/workspace/raj-pharmacist && python create_template.py
Rajasthan Pharmacist Study Template
Spreadsheet Β· XLSX
Me Subh 9 bje se pdhta hu or saam 5 bje tak
~/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}")
cd /tmp/workspace/raj-pharmacist && python create_template_v2.py
Rajasthan Pharmacist 9AM 5PM Template
Spreadsheet Β· XLSX
| Time | Subject | Duration |
|---|---|---|
| 9:00 β 10:00 AM | Pharmacology (Drug classification) | 1 hr |
| 10:00 β 11:00 AM | Pharmacology (CVS / Autonomic) | 1 hr |
| 11:00 β 11:15 AM | β Short break | 15 min |
| 11:15 AM β 12:15 PM | Pharmaceutical Jurisprudence | 1 hr |
| 12:15 β 1:00 PM | Pharmaceutics | 45 min |
| 1:00 β 1:45 PM | π½ Lunch break | 45 min |
| 1:45 β 2:45 PM | Pharmacognosy | 1 hr |
| 2:45 β 3:45 PM | Biochemistry / Physiology | 1 hr |
| 3:45 β 4:00 PM | β Short break | 15 min |
| 4:00 β 4:30 PM | General Knowledge (Rajasthan) | 30 min |
| 4:30 β 5:00 PM | π MCQ Revision (Aaj ke topics) | 30 min |