Totally I have 5 subjects: Anatomy, physiology, materia medica, organon of medicine and psychology, homoeopathic pharmacy. coming 27th july to 31th july i have periodic assessment.

Asking for Preferences
Asking for Preferences
Here's your personalized study timetable from today (July 15) through the assessment period (July 27-31).

๐Ÿ“… Periodic Assessment Study Timetable

Assessment: July 27 (Sun) - July 31 (Thu) Subjects: Anatomy | Physiology | Materia Medica | Organon of Medicine & Psychology | Homoeopathic Pharmacy

Phase 1 - Foundation & First Pass (July 15-20)

Goal: Cover all subjects at least once. Focus on concepts, not memorization yet.
DateDaySuggested HoursMorning (2-3 hrs)Afternoon (2-3 hrs)Evening (1-2 hrs)
Jul 15Wed5-6 hrsAnatomy - Musculoskeletal / Gross Anatomy topicsPhysiology - Cell physiology & BloodQuick notes review
Jul 16Thu5-6 hrsAnatomy - Neuroanatomy & Head-NeckPhysiology - Cardiovascular & RespiratoryShort self-test
Jul 17Fri5-6 hrsMateria Medica - Polychrest remedies (Sulphur, Calc Carb, Lycopodium)Materia Medica - Pulsatilla, Sepia, Natrum MurWrite keynotes of 5 remedies
Jul 18Sat7-8 hrsMateria Medica - Arsenicum, Nux Vomica, Phosphorus, BelladonnaOrganon of Medicine - Aphorisms 1-50 (Philosophy & Health/Disease)Organon - write key aphorisms
Jul 19Sun7-8 hrsOrganon - Aphorisms 51-130 (Medicines, Proving, Potency)Psychology - Miasms, mental generals, case-takingQuick recap notes
Jul 20Mon5-6 hrsHomoeopathic Pharmacy - Drug sources, preparation, potentizationHomoeopathic Pharmacy - Scales of potency, storage, pharmacopoeiaSelf-quiz on pharmacy

Phase 2 - Deep Revision (July 21-24)

Goal: Go deeper on weak areas, practice writing answers.
DateDaySuggested HoursMorning (2-3 hrs)Afternoon (2-3 hrs)Evening (1-2 hrs)
Jul 21Tue6-7 hrsAnatomy - Revision of diagrams & labelingPhysiology - Nervous system & EndocrineWrite 5 short answers
Jul 22Wed6-7 hrsMateria Medica - Comparative Materia Medica (remedy differentiation)Organon - Chronic diseases, Miasms (Aph. 131-209)Remedy keynotes revision
Jul 23Thu6-7 hrsOrganon - Second prescription, Obstacles to cure, Aph. 210-285Psychology - Psychological models, role of mind in diseaseShort note writing practice
Jul 24Fri6-7 hrsHomoeopathic Pharmacy - Full revision + Tinctures, Triturations, SuccussionAll subjects - Flip through notes, flag weak pointsPrepare question list

Phase 3 - Final Intensive Revision (July 25-26)

Goal: Memory reinforcement, practice, and confidence building.
DateDaySuggested HoursFocus
Jul 25Sat7-8 hrsMorning: Anatomy + Physiology rapid revision from notes. Afternoon: Materia Medica - 20 remedy keynote recall. Evening: Organon important aphorisms re-read
Jul 26Sun6-7 hrsMorning: Homoeopathic Pharmacy full mock self-test. Afternoon: Psychology + Organon revision. Evening: Light read of all subjects - NO heavy studying, sleep well!

Assessment Week (July 27-31)

Study only the subject you have the next day. Avoid cramming all subjects.
DateDayAssessmentMorning Prep (2 hrs max)
Jul 27SunAnatomyQuick diagram review, mnemonics for structures
Jul 28MonPhysiologyKey values (normal ranges), flowcharts
Jul 29TueMateria MedicaKeynotes & characteristic symptoms of top remedies
Jul 30WedOrganon & PsychologyKey aphorisms, definitions, psychological concepts
Jul 31ThuHomoeopathic PharmacyPotency scales, preparation methods, important terms

General Study Tips

  1. Materia Medica - Use the "PQRS" method: Peculiar, Queer, Rare, Strange symptoms for each remedy. Write keynotes by hand.
  2. Organon - Don't just read aphorisms; understand the logic behind each one. Group them by theme.
  3. Anatomy - Draw diagrams yourself. Visual recall is stronger than text recall.
  4. Physiology - Use flowcharts for processes (cardiac cycle, nerve impulse, hormone feedback loops).
  5. Pharmacy - Make a table comparing different scales of potency (decimal, centesimal, LM/Q potency).
  6. Daily routine: Study your hardest subject in the morning when your mind is fresh. Keep afternoons for medium-difficulty topics and evenings for light revision only.
  7. Every evening (10 min): Write 3 things you learned that day - reinforces memory strongly.
  8. Sleep 7-8 hours - Memory consolidation happens during sleep. Don't sacrifice it for extra study time.

You have 12 days before the first assessment day - that's enough time for a solid two-pass revision of all five subjects if you follow this plan consistently. Would you like me to create practice questions for any specific subject?

1.30 hrs and evening 2 hrs only how to handle

So you have 1.5 hours in the afternoon + 2 hours in the evening = 3.5 hours/day total. That's manageable with a tight, focused plan. Here's the revised timetable:

๐Ÿ“… Revised Timetable (3.5 hrs/day)

Afternoon slot: 1.5 hrs | Evening slot: 2 hrs

Phase 1 - First Pass (July 15-20)

One subject per day - cover basics only, no deep diving yet.
DateDayAfternoon (1.5 hrs)Evening (2 hrs)
Jul 15WedAnatomy - Gross anatomy key topics, important bones & musclesPhysiology - Blood, CVS basics - read + short notes
Jul 16ThuAnatomy - Neuroanatomy basics + Head & Neck overviewPhysiology - Respiratory + Nervous system basics
Jul 17FriMateria Medica - Sulphur, Calc Carb, Lycopodium keynotesMateria Medica - Pulsatilla, Natrum Mur, Sepia keynotes
Jul 18SatMateria Medica - Arsenicum, Nux Vomica, Phosphorus keynotesOrganon - Aphorisms 1-70 (health, disease, vital force)
Jul 19SunOrganon - Aphorisms 71-150 (medicines, proving, similimum)Psychology - Miasms, mental generals, case-taking basics
Jul 20MonHomoeopathic Pharmacy - Drug sources, preparation, potentizationHomoeopathic Pharmacy - Potency scales, dispensing, storage

Phase 2 - Revision Pass (July 21-24)

Revisit each subject with focus on weak points + writing practice.
DateDayAfternoon (1.5 hrs)Evening (2 hrs)
Jul 21TueAnatomy - Revise notes, draw 2-3 key diagramsPhysiology - Endocrine + Digestion - flowcharts
Jul 22WedMateria Medica - Remedy comparison (differentiation between similar remedies)Organon - Aphorisms 151-210 (chronic diseases, miasms)
Jul 23ThuOrganon - Aph 211-285 + Obstacles to curePsychology - Mind-body connection, psychological symptoms in remedies
Jul 24FriHomoeopathic Pharmacy - Full revision in notes formAll subjects - Go through written notes, mark weak spots

Phase 3 - Quick Recall (July 25-26)

No new topics. Only revision of what you've written.
DateDayAfternoon (1.5 hrs)Evening (2 hrs)
Jul 25SatAnatomy + Physiology - rapid note recallMateria Medica - recall 15 remedy keynotes from memory
Jul 26SunOrganon key aphorisms + Pharmacy revisionLight revision of Psychology - sleep by 10 PM

Assessment Week (July 27-31)

Only study for next day's exam. Keep it light.
DateExamAfternoon (1.5 hrs)Evening (1 hr only - then rest)
Jul 27AnatomyDiagrams + key structuresRead short notes once
Jul 28PhysiologyNormal values + flowchartsRead short notes once
Jul 29Materia MedicaTop 10 remedy keynotesCharacteristic symptoms recall
Jul 30Organon & PsychologyKey aphorisms + definitionsPsych concepts once
Jul 31PharmacyPotency scales + preparation tableKey terms once

How to Make 3.5 hrs Work Effectively

RuleWhat to do
No warm-up timeKeep your notes/book ready before you sit down - start studying within 2 minutes
First 10 minRecall what you studied yesterday (mental recap, no book)
Use short notes onlyNever read full textbook chapters - read your own short notes or make them as you go
1 topic = 1 pageSummarize every topic in 1 page max. This becomes your revision material
Evening ends with writingLast 15 min of every evening - write 5 points you remember from today without looking
No phone during study slots3.5 hrs is short - even 15 min of distraction wastes nearly half an afternoon slot

The key with limited time is smart coverage over full coverage - focus on high-yield topics (keynotes, important aphorisms, key diagrams) rather than trying to finish full chapters. You have enough time if you stay consistent. Want me to list the high-yield topics for each subject?

Generate a printable 1-page study sheet per subject 5.30am

Reading File
Running Command

mkdir -p /tmp/workspace/study-sheets && ls /tmp/workspace/study-sheets

| Time | Activity | | --------------------- | ----------------------------------------------- | | **5:00 AM** | Wake up ๐ŸŒ… | | **5:00โ€“5:30 AM** | Freshen up, brush, get ready | | **5:30โ€“6:30 AM** | Morning study ๐Ÿ“š | | **6:30 AM** | Prayer | | **6:45โ€“7:15 AM** | Breakfast ๐Ÿ› | | **7:15โ€“8:15 AM** | Revise or prepare for college | | **8:15 AM** | Leave for college ๐ŸšŒ | | **9:00 AM โ€“ 4:00 PM** | College classes, practicals, seminars | | **4:00โ€“5:00 PM** | Remedial classes (when scheduled) / Return home | | **5:30โ€“6:00 PM** | Tea and short rest | | **6:00โ€“7:00 PM** | Self-study / Assignments | | **7:00 PM** | Dinner ๐Ÿฝ๏ธ | | **7:30โ€“10:00 PM** | Study (Anatomy, Physiology, BHMS subjects) | | **10:00โ€“10:30 PM** | Wind down and sleep ๐Ÿ˜ด | this is my daily route

Running Command

cat << 'PYEOF' > /tmp/workspace/study-sheets/generate_sheets.py from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.platypus import KeepTogether from pypdf import PdfWriter, PdfReader import os OUTPUT_DIR = "/tmp/workspace/study-sheets" # โ”€โ”€ colour palette per subject โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PALETTES = { "anatomy": {"header": colors.HexColor("#1A3C5E"), "sub": colors.HexColor("#2E6DA4"), "light": colors.HexColor("#D6E8F7"), "accent": colors.HexColor("#F0F7FF")}, "physiology": {"header": colors.HexColor("#145A32"), "sub": colors.HexColor("#1E8449"), "light": colors.HexColor("#D5F5E3"), "accent": colors.HexColor("#EAFAF1")}, "materia": {"header": colors.HexColor("#6E2C00"), "sub": colors.HexColor("#BA4A00"), "light": colors.HexColor("#FDEBD0"), "accent": colors.HexColor("#FEF9E7")}, "organon": {"header": colors.HexColor("#4A235A"), "sub": colors.HexColor("#7D3C98"), "light": colors.HexColor("#E8DAEF"), "accent": colors.HexColor("#F9F0FF")}, "pharmacy": {"header": colors.HexColor("#154360"), "sub": colors.HexColor("#1A5276"), "light": colors.HexColor("#D6EAF8"), "accent": colors.HexColor("#EBF5FB")}, } def build_styles(pal): base = getSampleStyleSheet() styles = {} styles["title"] = ParagraphStyle("title", fontSize=18, fontName="Helvetica-Bold", textColor=colors.white, alignment=TA_CENTER, spaceAfter=2, leading=22) styles["subtitle"] = ParagraphStyle("subtitle", fontSize=9, fontName="Helvetica", textColor=colors.HexColor("#CCDDEE"), alignment=TA_CENTER, spaceAfter=4) styles["section"] = ParagraphStyle("section", fontSize=10, fontName="Helvetica-Bold", textColor=colors.white, spaceAfter=2, spaceBefore=4) styles["body"] = ParagraphStyle("body", fontSize=8, fontName="Helvetica", textColor=colors.HexColor("#1A1A1A"), spaceAfter=1, leading=11) styles["bold"] = ParagraphStyle("bold", fontSize=8, fontName="Helvetica-Bold", textColor=colors.HexColor("#1A1A1A"), spaceAfter=1, leading=11) styles["tip"] = ParagraphStyle("tip", fontSize=7.5, fontName="Helvetica-Oblique", textColor=colors.HexColor("#555555"), spaceAfter=1, leading=10) return styles def header_table(title, subtitle, pal): data = [[Paragraph(title, build_styles(pal)["title"])], [Paragraph(subtitle, build_styles(pal)["subtitle"])]] t = Table(data, colWidths=[19*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), pal["header"]), ("TOPPADDING", (0,0),(-1,-1), 10), ("BOTTOMPADDING", (0,0),(-1,-1), 6), ("LEFTPADDING", (0,0),(-1,-1), 12), ("RIGHTPADDING", (0,0),(-1,-1), 12), ("ROUNDEDCORNERS", [6]), ])) return t def section_box(heading, rows, pal, col_widths=None): """heading row + data rows in a styled table.""" s = build_styles(pal) head_row = [Paragraph(f"โ–ธ {heading}", s["section"])] if col_widths is None: col_widths = [19*cm] # heading spans all cols n_cols = len(col_widths) table_data = [[Paragraph(f"โ–ธ {heading}", s["section"])] + [""]*(n_cols-1)] for r in rows: if isinstance(r, str): table_data.append([Paragraph(r, s["body"])] + [""]*(n_cols-1)) else: table_data.append([Paragraph(str(c), s["body"]) for c in r]) ts = TableStyle([ ("BACKGROUND", (0,0), (-1,0), pal["sub"]), ("BACKGROUND", (0,1), (-1,-1), pal["accent"]), ("SPAN", (0,0), (-1,0)), ("TOPPADDING", (0,0),(-1,-1), 4), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ("LEFTPADDING", (0,0),(-1,-1), 7), ("RIGHTPADDING", (0,0),(-1,-1), 7), ("ROWBACKGROUNDS",(0,1),(-1,-1), [pal["accent"], pal["light"]]), ("GRID", (0,1),(-1,-1), 0.3, colors.HexColor("#BBBBBB")), ("LINEBELOW", (0,0),(-1,0), 1, pal["header"]), ]) t = Table(table_data, colWidths=col_widths) t.setStyle(ts) return t def timetable_box(pal): s = build_styles(pal) rows = [ [Paragraph("<b>Time Slot</b>", s["bold"]), Paragraph("<b>Study Focus</b>", s["bold"]), Paragraph("<b>Duration</b>", s["bold"])], ["5:30โ€“6:30 AM", "Tough subject / New concepts", "1 hr"], ["7:15โ€“8:15 AM", "Revision of yesterday's notes", "1 hr"], ["6:00โ€“7:00 PM", "Assignments / Self-study", "1 hr"], ["7:30โ€“10:00 PM", "Main study (BHMS subjects)", "2.5 hrs"], ] table_data = [] for i, r in enumerate(rows): if i == 0: table_data.append(r) else: table_data.append([Paragraph(r[0], s["bold"]), Paragraph(r[1], s["body"]), Paragraph(r[2], s["body"])]) t = Table(table_data, colWidths=[5*cm, 10*cm, 4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,0), pal["sub"]), ("TEXTCOLOR", (0,0),(-1,0), colors.white), ("ROWBACKGROUNDS",(0,1),(-1,-1), [pal["accent"], pal["light"]]), ("GRID", (0,0),(-1,-1), 0.3, colors.HexColor("#BBBBBB")), ("TOPPADDING", (0,0),(-1,-1), 4), ("BOTTOMPADDING", (0,0),(-1,-1), 3), ("LEFTPADDING", (0,0),(-1,-1), 6), ])) return t # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SUBJECT DATA # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• SUBJECTS = {} # 1. ANATOMY SUBJECTS["anatomy"] = { "title": "ANATOMY", "subtitle": "BHMS Periodic Assessment โ€” High-Yield Quick Reference Sheet", "pal": PALETTES["anatomy"], "sections": [ ("KEY SYSTEMS TO REVISE", [ "Musculoskeletal System โ€” Bones, joints, muscles, nerve supply", "Neuroanatomy โ€” Brain lobes, spinal cord, cranial nerves (Iโ€“XII)", "Cardiovascular โ€” Heart chambers, valves, coronary arteries", "Respiratory โ€” Lungs, bronchial tree, diaphragm (C3,4,5)", "Abdomen & Pelvis โ€” GI tract layers, liver, kidney positions", "Head & Neck โ€” Triangles of neck, parotid, facial nerve branches", ], None), ("CRANIAL NERVES โ€” QUICK MEMORY", [ ["CN I", "Olfactory", "Smell"], ["CN II", "Optic", "Vision"], ["CN III","Oculomotor", "Eye movement (most)"], ["CN V", "Trigeminal", "Face sensation, mastication"], ["CN VII","Facial", "Facial expression, taste (ant 2/3)"], ["CN X", "Vagus", "Parasympathetic thorax/abdomen"], ["CN XII","Hypoglossal","Tongue movement"], ], [2.5*cm, 5*cm, 11.5*cm]), ("IMPORTANT LANDMARKS & LEVELS", [ ["Structure", "Vertebral Level"], ["Sternal angle", "T4/T5 โ€” carina, aortic arch"], ["Transpyloric plane", "L1 โ€” pylorus, hilum of kidney"], ["Umbilicus", "L3/L4"], ["Bifurcation of aorta","L4"], ], [7*cm, 12*cm]), ("EXAM TIPS", [ "โ˜… Draw diagrams โ€” brachial plexus, cardiac cycle, renal segment", "โ˜… Learn nerve injuries: Saturday night palsy (radial), Waiter's tip (upper brachial plexus)", "โ˜… Know muscle attachments for upper & lower limb (origin โ†’ insertion โ†’ action)", ], None), ] } # 2. PHYSIOLOGY SUBJECTS["physiology"] = { "title": "PHYSIOLOGY", "subtitle": "BHMS Periodic Assessment โ€” High-Yield Quick Reference Sheet", "pal": PALETTES["physiology"], "sections": [ ("BLOOD & HAEMATOLOGY", [ ["Parameter", "Normal Value"], ["RBC", "M: 4.5โ€“5.5 ร— 10โถ/ยตL | F: 4.0โ€“5.0 ร— 10โถ/ยตL"], ["Haemoglobin", "M: 13โ€“17 g/dL | F: 12โ€“15 g/dL"], ["WBC", "4,000โ€“11,000/ยตL"], ["Platelets", "1.5โ€“4.0 lakh/ยตL"], ["ESR (Westergren)","M: 0โ€“15 mm/hr | F: 0โ€“20 mm/hr"], ["Blood pH", "7.35โ€“7.45"], ], [5*cm, 14*cm]), ("CARDIOVASCULAR SYSTEM", [ "Cardiac output = HR ร— Stroke Volume (Normal: ~5 L/min)", "Normal HR: 60โ€“100 bpm | BP: 120/80 mmHg", "SA Node โ†’ AV Node โ†’ Bundle of His โ†’ Purkinje fibres", "Frank-Starling Law: โ†‘ preload โ†’ โ†‘ stroke volume", "ECG: P wave = atrial depolarisation | QRS = ventricular depolarisation | T = repolarisation", ], None), ("RESPIRATORY SYSTEM", [ ["Volume/Capacity", "Value", "Meaning"], ["Tidal Volume", "500 mL", "Normal breath"], ["IRV", "3000 mL", "Max extra inspiration"], ["ERV", "1100 mL", "Max extra expiration"], ["Residual Volume", "1200 mL", "Air remaining after max expiration"], ["Vital Capacity", "4600 mL", "TV + IRV + ERV"], ["Total Lung Cap", "5800 mL", "VC + RV"], ], [5*cm, 4*cm, 10*cm]), ("NERVOUS & ENDOCRINE HIGHLIGHTS", [ "Resting membrane potential: โ€“70 mV (neuron)", "Synapse neurotransmitters: ACh (NMJ), Dopamine (reward), Serotonin (mood)", "Insulin: ฮฒ-cells of islets of Langerhans โ€” lowers blood glucose", "Cortisol (glucocorticoid): stress response, anti-inflammatory", "ADH (vasopressin): water reabsorption in collecting duct", ], None), ("EXAM TIPS", [ "โ˜… Draw flowcharts: cardiac cycle, nerve impulse, hormonal feedback loops", "โ˜… Memorise all normal values โ€” frequently asked in MCQs", ], None), ] } # 3. MATERIA MEDICA SUBJECTS["materia"] = { "title": "MATERIA MEDICA", "subtitle": "BHMS Periodic Assessment โ€” High-Yield Remedy Keynotes Sheet", "pal": PALETTES["materia"], "sections": [ ("POLYCHREST REMEDY KEYNOTES", [ ["Remedy", "Miasm", "Key Characteristics"], ["Sulphur", "Psora", "Dirty, lazy, burning sensation, worse heat, aggr 11 AM hunger"], ["Calc Carb", "Psora", "Fat, fair, flabby, cold sweaty head, sour sweat, desire eggs"], ["Lycopodium", "Psora", "Cowardly, flatulence, right-sided, 4โ€“8 PM aggr, desire sweets"], ["Pulsatilla", "Psora", "Mild, weeping, changeable symptoms, thirstless, better open air"], ["Natrum Mur", "Psora", "Reserved grief, desire salt, headache like hammers, worse consolation"], ["Sepia", "Psora", "Indifferent to loved ones, bearing-down sensation, worse cold"], ["Arsenicum Alb", "Syphilis","Anxiety, restlessness, midnight aggr, burning relieved by heat"], ["Nux Vomica", "Sycosis","Irritable, sedentary, oversensitive, worse morning, craves stimulants"], ["Phosphorus", "Tubercular","Tall thin, haemorrhagic, fear of dark/alone, desire cold drinks"], ["Belladonna", "Syphilis","Sudden violent onset, red hot dry, throbbing, photophobia"], ], [3.5*cm, 3*cm, 12.5*cm]), ("COMPARISON: WEEPING REMEDIES", [ "Pulsatilla โ€” weeps easily, better consolation, changeable mood", "Ignatia โ€” hysterical weeping, grief, contradictory symptoms, sighing", "Natrum Mur โ€” weeps alone, worse consolation, suppressed grief", ], None), ("EXAM TIPS โ€” MATERIA MEDICA", [ "โ˜… Learn PQRS for each remedy: Peculiar, Queer, Rare, Strange symptoms", "โ˜… Know modalities: What makes it WORSE (aggravates) and BETTER (ameliorates)", "โ˜… Miasm classification: Psora, Sycosis, Syphilis, Tubercular (Pseudo-psora)", "โ˜… Compare similar remedies โ€” examiners love differentiation questions", ], None), ] } # 4. ORGANON + PSYCHOLOGY SUBJECTS["organon"] = { "title": "ORGANON OF MEDICINE & PSYCHOLOGY", "subtitle": "BHMS Periodic Assessment โ€” Key Aphorisms & Concepts Sheet", "pal": PALETTES["organon"], "sections": [ ("KEY APHORISMS โ€” ORGANON (6th Edition)", [ ["Aph.", "Topic", "Core Idea"], ["1", "Physician's Duty", "To restore sick to health โ€” rapidly, gently, permanently"], ["9", "Vital Force", "Governs body in health; when deranged โ†’ disease"], ["11", "Disease", "Dynamic derangement of vital force, expressed as symptoms"], ["22", "Law of Similars", "Similia similibus curentur โ€” like cures like"], ["27", "Curative Power", "Only law of similars can effect true cure"], ["63-65","Primary & Secondary Action", "Drug primary action โ†’ vital force reaction (secondary)"], ["96-99","Provings", "Symptoms produced on healthy provers = medicinal picture"], ["145", "Totality of Symptoms", "Sum of all symptoms = true picture of disease"], ["153", "Characteristic Symptoms","Peculiar, uncommon symptoms guide remedy selection"], ["246", "Repetition of Dose", "Repeat dose when improvement stops"], ["269", "Potentisation", "Mechanical process releases latent medicinal power"], ["285", "Posology", "Minimum dose โ€” smallest quantity to act curatively"], ], [1.5*cm, 5*cm, 12.5*cm]), ("HERING'S LAW OF CURE", [ "1. From above downwards", "2. From within outwards (centre to periphery)", "3. From more vital to less vital organ", "4. In reverse order of appearance of symptoms", ], None), ("PSYCHOLOGY โ€” KEY CONCEPTS", [ ["Concept", "Key Points"], ["Miasms & Mind", "Psora โ†’ anxiety/fear | Sycosis โ†’ fixed ideas | Syphilis โ†’ destructive"], ["Case Taking", "Mental generals > Physical generals > Particulars (Kent's hierarchy)"], ["Disposition", "Emotional state, will, intellect โ€” highest individualising symptoms"], ["Psychosomatic", "Mind influences body โ€” grief โ†’ physical illness (Hahnemann concept)"], ["Second Prescription","Based on Hering's law direction โ€” never change if improving"], ], [4.5*cm, 14.5*cm]), ("EXAM TIPS", [ "โ˜… Know the aphorism number + concept โ€” examiners often ask 'which aphorism states...'", "โ˜… Understand the logic: Vital Force โ†’ Derangement โ†’ Symptoms โ†’ Similimum โ†’ Cure", "โ˜… Hering's Law is frequently asked โ€” memorise all 4 directions", ], None), ] } # 5. HOMOEOPATHIC PHARMACY SUBJECTS["pharmacy"] = { "title": "HOMOEOPATHIC PHARMACY", "subtitle": "BHMS Periodic Assessment โ€” Preparation, Potency & Dispensing Sheet", "pal": PALETTES["pharmacy"], "sections": [ ("SOURCES OF HOMOEOPATHIC DRUGS", [ ["Source", "Examples"], ["Vegetable", "Aconite, Belladonna, Nux Vomica, Pulsatilla, Chamomilla"], ["Animal", "Apis Mel (honeybee), Lachesis (snake), Sepia (cuttlefish ink)"], ["Mineral", "Sulphur, Calc Carb, Arsenicum, Natrum Mur, Phosphorus"], ["Nosodes", "Psorinum (scabies), Medorrhinum (gonorrhoea), Tuberculinum"], ["Sarcodes", "Thyroidinum, Insulinum, Fel Tauri (ox bile)"], ], [3.5*cm, 15.5*cm]), ("SCALES OF POTENCY", [ ["Scale", "Dilution Ratio", "Notation", "Range"], ["Decimal (X/D)", "1:10", "6X, 30X", "Low potency"], ["Centesimal (C/CH)", "1:100", "6C, 30C, 200C, 1M", "Most common"], ["LM / Q Potency", "1:50,000", "LM1, LM2โ€ฆ", "Gentle, rapid cure"], ["Millesimal (M)", "1:1000", "1M, 10M, CM","High potency"], ], [4.5*cm, 4*cm, 4.5*cm, 6*cm]), ("PREPARATION METHODS", [ "Tincture (ร˜): Fresh plant + alcohol โ€” Mother Tincture (undiluted)", "Trituration: Insoluble substances ground with lactose (1:10 or 1:100) up to 3C, then dissolved", "Succussion: Vigorous shaking at each potency step โ€” releases medicinal energy", "Potentisation = Dilution + Succussion (or trituration for insoluble drugs)", "Korsakovian method: Single vial reused; Hahnemannian: Fresh vial at each step", ], None), ("DISPENSING & STORAGE", [ ["Form", "Vehicle", "Notes"], ["Pills/Globules","Lactose/Sucrose","Most common; size 10, 20, 40"], ["Liquid drops", "Alcohol", "Direct or diluted in water"], ["Trituration tabs","Lactose", "For 1Xโ€“3X potencies"], ["Stored in", "Amber bottles","Away from heat, light, strong smell, camphor"], ], [4*cm, 5*cm, 10*cm]), ("EXAM TIPS", [ "โ˜… Know dilution ratios for all 3 scales by heart โ€” MCQ favourite", "โ˜… Difference: Nosode (disease product) vs Sarcode (healthy tissue/secretion)", "โ˜… Antidotes: Camphor antidotes most remedies โ€” avoid during treatment", "โ˜… Drug sources: Be able to classify any remedy into its source category", ], None), ] } # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # BUILD EACH PDF # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• def build_subject_pdf(key, data): filepath = os.path.join(OUTPUT_DIR, f"{key}_study_sheet.pdf") pal = data["pal"] doc = SimpleDocTemplate( filepath, pagesize=A4, leftMargin=1*cm, rightMargin=1*cm, topMargin=1*cm, bottomMargin=1*cm ) s = build_styles(pal) story = [] # Header story.append(header_table(data["title"], data["subtitle"], pal)) story.append(Spacer(1, 0.25*cm)) # Daily study slots reminder (compact) tt = timetable_box(pal) story.append(tt) story.append(Spacer(1, 0.2*cm)) # Content sections for (heading, rows, col_widths) in data["sections"]: if col_widths: story.append(section_box(heading, rows, pal, col_widths)) else: story.append(section_box(heading, rows, pal, [19*cm])) story.append(Spacer(1, 0.2*cm)) # Footer footer_data = [[Paragraph( "๐Ÿ“… Assessment: Jul 27โ€“31, 2026 | Study Slots: 5:30 AM โ€ข 7:15 AM โ€ข 6:00 PM โ€ข 7:30 PM | Total: 5.5 hrs/day", ParagraphStyle("footer", fontSize=7, fontName="Helvetica", textColor=colors.HexColor("#666666"), alignment=TA_CENTER) )]] ft = Table(footer_data, colWidths=[19*cm]) ft.setStyle(TableStyle([ ("BACKGROUND", (0,0),(-1,-1), colors.HexColor("#F0F0F0")), ("TOPPADDING", (0,0),(-1,-1), 4), ("BOTTOMPADDING",(0,0),(-1,-1), 4), ("LINEABOVE", (0,0),(-1,0), 0.5, colors.HexColor("#AAAAAA")), ])) story.append(ft) doc.build(story) return filepath files = [] for key, data in SUBJECTS.items(): fp = build_subject_pdf(key, data) files.append(fp) print(f"Generated: {fp}") # โ”€โ”€ Merge all into one combined PDF โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ writer = PdfWriter() for fp in files: reader = PdfReader(fp) for page in reader.pages: writer.add_page(page) combined_path = os.path.join(OUTPUT_DIR, "BHMS_All_Study_Sheets.pdf") with open(combined_path, "wb") as f: writer.write(f) print(f"\nCombined PDF: {combined_path}") PYEOF python /tmp/workspace/study-sheets/generate_sheets.py

Writing File

~/study-sheets/generate_sheets.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from pypdf import PdfWriter, PdfReader
import os

OUTPUT_DIR = "/tmp/workspace/study-sheets"

PALETTES = {
    "anatomy":    {"header": colors.HexColor("#1A3C5E"), "sub": colors.HexColor("#2E6DA4"), "light": colors.HexColor("#D6E8F7"), "accent": colors.HexColor("#F0F7FF")},
    "physiology": {"header": colors.HexColor("#145A32"), "sub": colors.HexColor("#1E8449"), "light": colors.HexColor("#D5F5E3"), "accent": colors.HexColor("#EAFAF1")},
    "materia":    {"header": colors.HexColor("#6E2C00"), "sub": colors.HexColor("#BA4A00"), "light": colors.HexColor("#FDEBD0"), "accent": colors.HexColor("#FEF9E7")},
    "organon":    {"header": colors.HexColor("#4A235A"), "sub": colors.HexColor("#7D3C98"), "light": colors.HexColor("#E8DAEF"), "accent": colors.HexColor("#F9F0FF")},
    "pharmacy":   {"header": colors.HexColor("#154360"), "sub": colors.HexColor("#1A5276"), "light": colors.HexColor("#D6EAF8"), "accent": colors.HexColor("#EBF5FB")},
}

def build_styles(pal):
    styles = {}
    styles["title"] = ParagraphStyle("title", fontSize=18, fontName="Helvetica-Bold",
        textColor=colors.white, alignment=TA_CENTER, spaceAfter=2, leading=22)
    styles["subtitle"] = ParagraphStyle("subtitle", fontSize=8.5, fontName="Helvetica",
        textColor=colors.HexColor("#CCDDEE"), alignment=TA_CENTER, spaceAfter=4)
    styles["section"] = ParagraphStyle("section", fontSize=9.5, fontName="Helvetica-Bold",
        textColor=colors.white, spaceAfter=2, spaceBefore=2)
    styles["body"] = ParagraphStyle("body", fontSize=7.8, fontName="Helvetica",
        textColor=colors.HexColor("#1A1A1A"), spaceAfter=1, leading=10.5)
    styles["bold"] = ParagraphStyle("bold", fontSize=7.8, fontName="Helvetica-Bold",
        textColor=colors.HexColor("#1A1A1A"), spaceAfter=1, leading=10.5)
    styles["tip"] = ParagraphStyle("tip", fontSize=7.5, fontName="Helvetica-Oblique",
        textColor=colors.HexColor("#444444"), spaceAfter=1, leading=10)
    styles["footer"] = ParagraphStyle("footer", fontSize=7, fontName="Helvetica",
        textColor=colors.HexColor("#666666"), alignment=TA_CENTER)
    return styles

def header_table(title, subtitle, pal):
    s = build_styles(pal)
    data = [[Paragraph(title, s["title"])], [Paragraph(subtitle, s["subtitle"])]]
    t = Table(data, colWidths=[19*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), pal["header"]),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 12),
        ("RIGHTPADDING",  (0,0), (-1,-1), 12),
    ]))
    return t

def section_box(heading, rows, pal, col_widths=None):
    s = build_styles(pal)
    if col_widths is None:
        col_widths = [19*cm]
    n_cols = len(col_widths)

    table_data = [[Paragraph(f"\u25b8  {heading}", s["section"])] + [""] * (n_cols - 1)]
    for r in rows:
        if isinstance(r, str):
            table_data.append([Paragraph(r, s["body"])] + [""] * (n_cols - 1))
        else:
            cells = []
            for c in r:
                cells.append(Paragraph(str(c), s["body"]))
            while len(cells) < n_cols:
                cells.append(Paragraph("", s["body"]))
            table_data.append(cells)

    ts = TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), pal["sub"]),
        ("SPAN",          (0,0), (-1,0)),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [pal["accent"], pal["light"]]),
        ("GRID",          (0,1), (-1,-1), 0.3, colors.HexColor("#BBBBBB")),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("LINEBELOW",     (0,0), (-1,0), 1, pal["header"]),
    ])
    t = Table(table_data, colWidths=col_widths)
    t.setStyle(ts)
    return t

def timetable_box(pal):
    s = build_styles(pal)
    rows = [
        [Paragraph("<b>Time Slot</b>", s["bold"]), Paragraph("<b>Study Focus</b>", s["bold"]), Paragraph("<b>Duration</b>", s["bold"])],
        [Paragraph("5:30-6:30 AM",  s["bold"]), Paragraph("Tough subject / New concepts", s["body"]),  Paragraph("1 hr", s["body"])],
        [Paragraph("7:15-8:15 AM",  s["bold"]), Paragraph("Revision of yesterday's notes", s["body"]), Paragraph("1 hr", s["body"])],
        [Paragraph("6:00-7:00 PM",  s["bold"]), Paragraph("Self-study / Assignments", s["body"]),       Paragraph("1 hr", s["body"])],
        [Paragraph("7:30-10:00 PM", s["bold"]), Paragraph("Main study (BHMS subjects)", s["body"]),     Paragraph("2.5 hrs", s["body"])],
    ]
    t = Table(rows, colWidths=[4.5*cm, 11*cm, 3.5*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), pal["sub"]),
        ("TEXTCOLOR",     (0,0), (-1,0), colors.white),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [pal["accent"], pal["light"]]),
        ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#BBBBBB")),
        ("TOPPADDING",    (0,0), (-1,-1), 3),
        ("BOTTOMPADDING", (0,0), (-1,-1), 3),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ]))
    return t

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# SUBJECT DATA
# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

SUBJECTS = {}

SUBJECTS["anatomy"] = {
    "title": "ANATOMY",
    "subtitle": "BHMS Periodic Assessment  |  High-Yield Quick Reference Sheet  |  Jul 27-31, 2026",
    "pal": PALETTES["anatomy"],
    "sections": [
        ("KEY SYSTEMS TO REVISE", [
            "Musculoskeletal: Bones, joints, muscles, nerve & blood supply of limbs",
            "Neuroanatomy: Brain lobes, spinal cord tracts, cranial nerves I-XII",
            "Cardiovascular: Heart chambers, valves, coronary arteries, conducting system",
            "Respiratory: Lungs, bronchial tree, pleura, diaphragm (nerve supply C3,4,5 - phrenic)",
            "Abdomen: Layers of GI wall, liver segments, kidney position (T12-L3), ureter course",
            "Head & Neck: Triangles of neck, parotid gland, facial nerve branches (TEFMC mnemonic)",
        ], None),
        ("CRANIAL NERVES - QUICK REFERENCE", [
            ["CN", "Name", "Type", "Function"],
            ["I",   "Olfactory",   "Sensory",   "Smell"],
            ["II",  "Optic",       "Sensory",   "Vision"],
            ["III", "Oculomotor",  "Motor",     "Eye movement (SR, IR, MR, IO), pupil constriction"],
            ["V",   "Trigeminal",  "Both",      "Facial sensation (V1/V2/V3), mastication (V3)"],
            ["VII", "Facial",      "Both",      "Facial expression, taste anterior 2/3 tongue"],
            ["VIII","Vestibulocochlear","Sensory","Hearing & balance"],
            ["X",   "Vagus",       "Both",      "Parasympathetic thorax & abdomen, phonation"],
            ["XII", "Hypoglossal", "Motor",     "Tongue movement (deviation to side of lesion)"],
        ], [1.2*cm, 4*cm, 2.8*cm, 11*cm]),
        ("VERTEBRAL LEVELS - HIGH YIELD", [
            ["Structure",              "Level",    "Clinical note"],
            ["Sternal angle (Louis)",  "T4/T5",    "Carina, aortic arch, SVC/IVC junction"],
            ["Transpyloric plane",     "L1",       "Pylorus, hilum of kidneys, fundus of GB"],
            ["Umbilicus",              "L3/L4",    "Bifurcation of abdominal aorta ~ L4"],
            ["Iliac crest",            "L4",       "Surface landmark for lumbar puncture (L3-L4)"],
        ], [5.5*cm, 3*cm, 10.5*cm]),
        ("IMPORTANT NERVE INJURIES", [
            "Radial nerve (Saturday night palsy): Wrist drop - cannot extend wrist",
            "Ulnar nerve (medial epicondyle): Claw hand, loss of little & ring finger sensation",
            "Median nerve (carpal tunnel): Ape hand, loss of thumb opposition, LOAF muscles",
            "Upper brachial plexus (C5-C6): Waiter's tip / Erb's palsy - arm hangs internally rotated",
            "Lower brachial plexus (C8-T1): Klumpke's palsy - claw hand + Horner syndrome",
        ], None),
        ("EXAM TIPS", [
            "* Draw diagrams: brachial plexus, heart valves, renal segments - examiners love visuals",
            "* Know muscle: Origin > Insertion > Action > Nerve supply (format for every answer)",
            "* Vertebral levels are MCQ gold - memorise the table above perfectly",
        ], None),
    ]
}

SUBJECTS["physiology"] = {
    "title": "PHYSIOLOGY",
    "subtitle": "BHMS Periodic Assessment  |  High-Yield Quick Reference Sheet  |  Jul 27-31, 2026",
    "pal": PALETTES["physiology"],
    "sections": [
        ("HAEMATOLOGY - NORMAL VALUES", [
            ["Parameter",          "Male",              "Female"],
            ["RBC count",          "4.5-5.5 x10^6/uL",  "4.0-5.0 x10^6/uL"],
            ["Haemoglobin",        "13-17 g/dL",         "12-15 g/dL"],
            ["Haematocrit (PCV)",  "40-54%",             "36-47%"],
            ["WBC (Leucocytes)",   "4000-11000/uL",      "Same"],
            ["Platelets",          "1.5-4.0 lakh/uL",   "Same"],
            ["ESR (Westergren)",   "0-15 mm/hr",         "0-20 mm/hr"],
            ["Blood pH",           "7.35-7.45",          "Same"],
        ], [5.5*cm, 6.75*cm, 6.75*cm]),
        ("CARDIOVASCULAR SYSTEM", [
            "Cardiac Output = HR x Stroke Volume  (Normal: ~5 L/min at rest)",
            "Normal HR: 60-100 bpm  |  Normal BP: 120/80 mmHg  |  PR interval: 0.12-0.20 sec",
            "Conducting system: SA Node (pacemaker 70/min) -> AV Node -> Bundle of His -> Purkinje",
            "Frank-Starling Law: Increased preload -> increased stretch -> increased stroke volume",
            "ECG: P wave = atrial depolarisation | QRS = ventricular depolarisation | T = repolarisation",
            "Korotkoff sounds: Phase I = systolic BP | Phase V (disappearance) = diastolic BP",
        ], None),
        ("RESPIRATORY VOLUMES & CAPACITIES", [
            ["Volume / Capacity",  "Value",    "What it means"],
            ["Tidal Volume (TV)",  "500 mL",   "Air in normal quiet breath"],
            ["IRV",                "3000 mL",  "Max extra air inspired after normal inspiration"],
            ["ERV",                "1100 mL",  "Max extra air expired after normal expiration"],
            ["Residual Volume",    "1200 mL",  "Air remaining after maximum expiration"],
            ["Vital Capacity",     "4600 mL",  "TV + IRV + ERV (max breath in + out)"],
            ["Total Lung Cap",     "5800 mL",  "Vital Capacity + Residual Volume"],
            ["FRC",                "2300 mL",  "ERV + RV (air at end of normal expiration)"],
        ], [5*cm, 3.5*cm, 10.5*cm]),
        ("NERVOUS SYSTEM HIGHLIGHTS", [
            "Resting Membrane Potential: -70 mV (neuron) | Action potential threshold: -55 mV",
            "Key neurotransmitters: ACh (NMJ, parasympathetic) | Dopamine (reward, movement)",
            "Noradrenaline (sympathetic) | Serotonin (mood, sleep) | GABA (inhibitory)",
            "Sympathetic (fight/flight): T1-L2 | Parasympathetic (rest/digest): Craniosacral",
        ], None),
        ("ENDOCRINE - HIGH YIELD HORMONES", [
            ["Hormone",   "Gland",         "Main Action"],
            ["Insulin",   "Pancreas beta", "Lowers blood glucose; promotes glycogen storage"],
            ["Glucagon",  "Pancreas alpha","Raises blood glucose; promotes glycogenolysis"],
            ["Cortisol",  "Adrenal cortex","Stress response, anti-inflammatory, raises glucose"],
            ["ADH",       "Post. pituitary","Water reabsorption in collecting duct"],
            ["Aldosterone","Adrenal cortex","Na+ retention, K+ excretion in renal tubule"],
            ["T3/T4",     "Thyroid",       "Increase BMR, growth, heat production"],
        ], [3*cm, 4.5*cm, 11.5*cm]),
        ("EXAM TIPS", [
            "* Draw flowcharts for: cardiac cycle, nerve impulse, hormonal feedback loops",
            "* Normal lab values are MCQ favourites - memorise all values in the tables above",
            "* Know differences: Sympathetic vs Parasympathetic effects on heart/lung/GI",
        ], None),
    ]
}

SUBJECTS["materia"] = {
    "title": "MATERIA MEDICA",
    "subtitle": "BHMS Periodic Assessment  |  High-Yield Remedy Keynotes  |  Jul 27-31, 2026",
    "pal": PALETTES["materia"],
    "sections": [
        ("POLYCHREST REMEDIES - KEYNOTES", [
            ["Remedy",         "Constitution / Type",           "Key Symptoms & Modalities"],
            ["Sulphur",        "Dirty, lean/fat, lazy",          "Burning everywhere; worse heat, 11 AM hunger, bathing; better cold"],
            ["Calc Carb",      "Fat, fair, flabby child/adult",  "Cold sweaty head; sour sweat/stool; desire eggs; fear of disease"],
            ["Lycopodium",     "Intellectual coward",            "Right-sided; 4-8 PM aggravation; flatulence; desire sweets/hot drinks"],
            ["Pulsatilla",     "Mild, yielding, weeping",        "Thirstless; changeable symptoms; better open air, worse heat & rich food"],
            ["Natrum Mur",     "Reserved, suppressed grief",     "Desire salt; worse at sea, worse consolation; headache like hammers"],
            ["Sepia",          "Indifferent, worn out mother",   "Bearing-down sensation; worse cold, standing; better vigorous exercise"],
            ["Arsenicum Alb",  "Anxious, restless, fastidious",  "Burning relieved by heat; midnight (12-2 AM) aggravation; fear of death"],
            ["Nux Vomica",     "Irritable, sedentary, type-A",   "Oversensitive to everything; worse morning, cold, stimulants; craves spicy"],
            ["Phosphorus",     "Tall, thin, open, artistic",     "Haemorrhagic tendency; fear of dark/alone; desire cold drinks (vomited warm)"],
            ["Belladonna",     "Plethoric, red, hot",            "Sudden violent onset; red-hot-dry-throbbing; photophobia; high fever"],
            ["Ignatia",        "Sensitive, idealistic",          "Grief & disappointed love; contradictory symptoms; sighing; hysteria"],
        ], [3*cm, 4.5*cm, 11.5*cm]),
        ("REMEDY COMPARISONS (Differentiation)", [
            ["Theme",          "Remedy 1",        "Remedy 2",       "Key Difference"],
            ["Weeping",        "Pulsatilla",       "Natrum Mur",    "Puls: better consolation | Nat-m: WORSE consolation"],
            ["Grief",          "Ignatia",          "Natrum Mur",    "Ign: acute/hysterical | Nat-m: chronic/suppressed"],
            ["Burning",        "Arsenicum",        "Sulphur",       "Ars: burning RELIEVED by heat | Sul: burning WORSE heat"],
            ["Right-sided",    "Lycopodium",       "Belladonna",    "Lyc: chronic/slow | Bell: acute/sudden/violent"],
        ], [3*cm, 3.5*cm, 3.5*cm, 9*cm]),
        ("MIASM CLASSIFICATION", [
            ["Miasm",     "Founder remedy",  "Character",         "Key remedies"],
            ["Psora",     "Psorinum",        "Functional, deficiency, itch", "Sulphur, Calc Carb, Lycopodium, Pulsatilla"],
            ["Sycosis",   "Medorrhinum",     "Excess, overgrowth, secretion", "Nux Vomica, Thuja, Natrum Sulph"],
            ["Syphilis",  "Syphilinum",      "Destructive, ulceration",       "Arsenicum, Mercurius, Nitric Acid"],
            ["Tubercular","Tuberculinum",    "Wandering, changing, weakly",   "Phosphorus, Calc Phos, Natrum Mur"],
        ], [2.5*cm, 3.5*cm, 5*cm, 8*cm]),
        ("EXAM TIPS - MATERIA MEDICA", [
            "* PQRS symptoms: Peculiar, Queer, Rare, Strange - these individualise and guide prescription",
            "* Know MODALITIES for each remedy: Aggravations (< worse) and Ameliorations (> better)",
            "* Remedy relationships: Complementary, Antidotes, Follows well - frequently asked",
            "* Miasm of each remedy is a common short-answer / MCQ question",
        ], None),
    ]
}

SUBJECTS["organon"] = {
    "title": "ORGANON OF MEDICINE & PSYCHOLOGY",
    "subtitle": "BHMS Periodic Assessment  |  Key Aphorisms & Concepts  |  Jul 27-31, 2026",
    "pal": PALETTES["organon"],
    "sections": [
        ("KEY APHORISMS - ORGANON 6th EDITION (Hahnemann)", [
            ["Aph", "Topic",                   "Core Statement"],
            ["1",   "Physician's Duty",         "Restore the sick to health - rapidly, gently, permanently"],
            ["2",   "Highest Ideal",            "Rapid, gentle, permanent restoration; removal of whole disease"],
            ["9",   "Vital Force",              "Spirit-like vital force governs body; when deranged = disease"],
            ["11",  "Nature of Disease",        "Disease = dynamic derangement of vital force expressed as symptoms"],
            ["22",  "Law of Cure",              "Medicines cure only by their power to produce similar symptoms"],
            ["26",  "Law of Similars",          "Similia similibus curentur - a stronger similar disease extinguishes weaker"],
            ["27",  "Curative Power",           "Only the law of similars can effect a true and lasting cure"],
            ["63-65","Primary & Secondary",     "Drug produces primary action; vital force responds with secondary (opposite)"],
            ["96-99","Drug Provings",           "Symptoms on healthy provers = true medicinal picture"],
            ["145", "Totality of Symptoms",     "Sum total of all symptoms = true picture of the disease"],
            ["153", "Characteristic Symptoms",  "Peculiar, uncommon, singular symptoms most important for remedy selection"],
            ["246", "Repetition of Dose",       "Repeat dose when improvement stops; do not repeat while improving"],
            ["269", "Potentisation",            "Mechanical process (trituration/succussion) releases latent medicinal power"],
            ["285", "Minimum Dose",             "Smallest quantity capable of producing gentle cure - avoid unnecessary aggravation"],
        ], [1.5*cm, 4.5*cm, 13*cm]),
        ("HERING'S LAW OF CURE (Direction of Cure)", [
            "1. From ABOVE downwards (head to foot)",
            "2. From WITHIN outwards (vital organs to skin/extremities)",
            "3. From MORE vital to LESS vital organ",
            "4. In REVERSE ORDER of appearance (last symptom to disappear first)",
        ], None),
        ("KENT'S HIERARCHY OF SYMPTOMS", [
            ["Rank", "Category",          "Examples"],
            ["1st",  "Mental Generals",   "Will, intellect, emotional state - MOST important"],
            ["2nd",  "Physical Generals", "Thermal reaction, sleep, appetite, thirst, perspiration"],
            ["3rd",  "Particulars",       "Symptoms of individual organs - LEAST weight"],
        ], [2*cm, 5*cm, 12*cm]),
        ("PSYCHOLOGY - KEY CONCEPTS", [
            ["Concept",             "Key Points"],
            ["Miasms & Mind",       "Psora: anxiety/fear  |  Sycosis: fixed ideas, suspicion  |  Syphilis: destructive impulses"],
            ["Will & Understanding","Hahnemann: disease first affects the Will, then Understanding"],
            ["Case Taking",         "Mental symptoms > Physical generals > Particulars  (Kent's hierarchy)"],
            ["Psychosomatic link",  "Mind affects body: grief, fear, anger can suppress physical symptoms"],
            ["Obstacles to Cure",   "Bad diet, grief, sedentary lifestyle, unhealthy environment (Aph 252-256)"],
        ], [4*cm, 15*cm]),
        ("EXAM TIPS - ORGANON", [
            "* Know aphorism NUMBER + concept - examiners ask 'Which aphorism states...'",
            "* Understand logical flow: Vital Force -> Derangement -> Symptoms -> Similimum -> Cure",
            "* Hering's Law - all 4 directions must be memorised, frequently asked in short answers",
            "* Second prescription: Never change remedy if patient is improving per Hering's directions",
        ], None),
    ]
}

SUBJECTS["pharmacy"] = {
    "title": "HOMOEOPATHIC PHARMACY",
    "subtitle": "BHMS Periodic Assessment  |  Preparation, Potency & Dispensing  |  Jul 27-31, 2026",
    "pal": PALETTES["pharmacy"],
    "sections": [
        ("SOURCES OF HOMOEOPATHIC DRUGS", [
            ["Source",      "Examples",                                              "Notes"],
            ["Vegetable",   "Aconite, Belladonna, Nux Vom, Pulsatilla, Chamomilla", "Largest source group"],
            ["Animal",      "Apis Mel (honeybee), Lachesis (snake venom), Sepia (cuttlefish)", "Potentised whole animal or secretion"],
            ["Mineral",     "Sulphur, Calc Carb, Arsenicum, Natrum Mur, Phosphorus","Elements & compounds"],
            ["Nosode",      "Psorinum (scabies), Medorrhinum (gonorrhoea), Tuberculinum","Made from disease products"],
            ["Sarcode",     "Thyroidinum, Insulinum, Fel Tauri (ox bile)",           "Made from healthy tissue/secretions"],
            ["Imponderabilia","X-ray, Sol (sunlight), Electricitas",                "Physical forces potentised"],
        ], [3*cm, 8.5*cm, 7.5*cm]),
        ("SCALES OF POTENCY", [
            ["Scale",                "Dilution Ratio", "Symbol",           "Common Potencies"],
            ["Decimal (X or D)",     "1:10",           "6X, 12X, 30X",     "Low potency, frequent dose"],
            ["Centesimal (C or CH)", "1:100",          "6C, 30C, 200C, 1M","Most widely used scale"],
            ["LM / Q Potency",       "1:50,000",       "LM1, LM2, LM3...", "Gentlest; daily repetition possible"],
            ["Millesimal (M/CM/MM)", "Higher",         "1M, 10M, 50M, CM", "High potency, rare repetition"],
        ], [4.5*cm, 3.5*cm, 4.5*cm, 6.5*cm]),
        ("PREPARATION METHODS", [
            "Mother Tincture (O): Fresh plant material + purified alcohol - base for all potencies",
            "Trituration: Insoluble substances (eg Calc Carb, Sulphur) ground with lactose up to 3C, then dissolve",
            "Potentisation = Dilution + Succussion (liquid) OR Dilution + Trituration (solid)",
            "Succussion: Vigorous shaking against a firm elastic surface - releases latent medicinal energy",
            "Hahnemannian method: New vial at each potency step (most accurate)",
            "Korsakovian method: Same vial emptied & refilled - rapid, used for high potencies",
        ], None),
        ("VEHICLES / DISPENSING FORMS", [
            ["Form",           "Vehicle",          "Use / Notes"],
            ["Globules/Pills", "Sucrose/Lactose",   "Sizes: 10, 20, 40 (smaller = more surface area for drug)"],
            ["Liquid drops",   "Alcohol + water",   "Dissolved potency; direct or diluted in distilled water"],
            ["Trituration tabs","Lactose",          "For low potencies (1X, 2X, 3X)"],
            ["Ointment",       "Vaseline/lanolin",  "External use only; Calendula, Hypericum ointments"],
        ], [3.5*cm, 4*cm, 11.5*cm]),
        ("STORAGE & ANTIDOTES", [
            "Store in: Amber/dark glass bottles | Away from heat, light, moisture, strong odours",
            "Camphor antidotes MOST homoeopathic remedies - patient must avoid camphor, menthol, eucalyptus",
            "Avoid: Coffee, tobacco, mint, strong perfumes during treatment (may antidote remedy)",
            "Shelf life: Potentised medicines have indefinite shelf life if stored correctly",
        ], None),
        ("EXAM TIPS - PHARMACY", [
            "* Dilution ratios MUST be memorised: X=1:10, C=1:100, LM=1:50000 - direct MCQ",
            "* Nosode vs Sarcode distinction - very commonly tested short question",
            "* Hahnemannian vs Korsakovian - know the difference clearly",
            "* Drug sources: Be able to classify ANY given remedy into its source category",
        ], None),
    ]
}

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# BUILD PDF PER SUBJECT
# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

def build_subject_pdf(key, data):
    filepath = os.path.join(OUTPUT_DIR, f"{key}_study_sheet.pdf")
    pal = data["pal"]
    s = build_styles(pal)

    doc = SimpleDocTemplate(
        filepath, pagesize=A4,
        leftMargin=1*cm, rightMargin=1*cm,
        topMargin=0.8*cm, bottomMargin=0.8*cm
    )
    story = []

    story.append(header_table(data["title"], data["subtitle"], pal))
    story.append(Spacer(1, 0.2*cm))
    story.append(timetable_box(pal))
    story.append(Spacer(1, 0.18*cm))

    for (heading, rows, col_widths) in data["sections"]:
        story.append(section_box(heading, rows, pal, col_widths))
        story.append(Spacer(1, 0.15*cm))

    footer_data = [[Paragraph(
        "Assessment: Jul 27-31, 2026  |  Study Slots: 5:30 AM | 7:15 AM | 6:00 PM | 7:30 PM  |  Total: 5.5 hrs/day  |  BHMS Year 1",
        s["footer"]
    )]]
    ft = Table(footer_data, colWidths=[19*cm])
    ft.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), colors.HexColor("#F0F0F0")),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LINEABOVE",     (0,0), (-1,0), 0.5, colors.HexColor("#AAAAAA")),
    ]))
    story.append(ft)

    doc.build(story)
    return filepath

files = []
order = ["anatomy", "physiology", "materia", "organon", "pharmacy"]
for key in order:
    fp = build_subject_pdf(key, SUBJECTS[key])
    files.append(fp)
    print(f"Generated: {fp}")

# Merge all into one PDF
writer = PdfWriter()
for fp in files:
    reader = PdfReader(fp)
    for page in reader.pages:
        writer.add_page(page)

combined = os.path.join(OUTPUT_DIR, "BHMS_All_5_Study_Sheets.pdf")
with open(combined, "wb") as f:
    writer.write(f)
print(f"\nCombined PDF ready: {combined}")
Running Command

python /tmp/workspace/study-sheets/generate_sheets.py

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.