Gnm k bad best option kya h

Searching the Web

GNM ke baad best career options courses India 2025

GNM ke baad aapke paas yeh best options hain:

๐ŸŽ“ GNM ke Baad Best Options

1. B.Sc Nursing (Post Basic)

  • Sabse popular aur recommended option
  • 2 saal ka degree course
  • GNM ke baad directly eligible hain
  • Salary aur promotion ke liye bahut helpful
  • Government aur private dono mein better posts milti hain

2. Sarkari Naukri (Government Jobs)

  • Staff Nurse - AIIMS, ESIC, Railway, Army, State Health Dept
  • ANM/Staff Nurse - PHC, CHC, District Hospitals
  • UPSC, SSC, State PSC ke through nursing posts
  • Salary: โ‚น25,000 - โ‚น60,000+/month

3. Abroad Nursing (Videsh Mein Naukri)

  • UK, Canada, Australia, Gulf countries mein demand bahut zyada
  • IELTS/OET exam dena hoga
  • Salary: โ‚น2-6 lakh/month tak
  • UK ke liye CBT (Computer Based Test) + OSCE exam

4. M.Sc Nursing (B.Sc ke baad)

  • Pehle B.Sc Post Basic karein, phir M.Sc
  • Specialization milti hai - ICU, Pediatrics, Oncology etc.
  • Teaching aur Senior positions ke liye

5. Specialization Courses (Short Term)

  • Critical Care Nursing (ICU/CCU)
  • Operation Theatre (OT) Technician
  • Dialysis Technician
  • Emergency & Trauma Nursing
  • Neonatal Nursing
  • Duration: 6 months - 1 year

6. Private Hospital / Clinic Jobs

  • Corporate hospitals jaise Apollo, Fortis, Max
  • Better salary + experience
  • Career growth fast hota hai

7. Community Health Officer (CHO)

  • NHM (National Health Mission) ke through
  • Rural areas mein posting
  • Good salary + job security

๐Ÿ“Š Kya Choose Karein?

GoalBest Option
Higher degree + growthB.Sc Post Basic Nursing
Sarkari naukri jaldiStaff Nurse exam prep
Zyada salaryAbroad Nursing (Gulf/UK)
SpecializationICU/OT short courses
Teaching/ResearchM.Sc Nursing

Recommendation: GNM ke baad B.Sc Post Basic Nursing karna sabse smart move hai - isse aapki qualification upgrade hogi, salary badhhegi, aur abroad opportunities bhi khulenge. Sath mein Staff Nurse government exam ki taiyari bhi karte rahein.
Koi specific option ke baare mein aur detail chahiye? ๐Ÿ˜Š

Gnm k bad doctor bn skte h ??

GNM ke baad direct MBBS nahi hota, lekin kuch raaste hain. Let me explain properly.

โŒ Direct Doctor (MBBS) Nahi Ban Sakte

  • MBBS ke liye NEET exam + 12th PCB required hai
  • GNM ek diploma hai, isse MBBS mein direct admission nahi milta
  • Medical Council of India ka yeh rule hai

โœ… Lekin Yeh Raaste Hain:

1. NEET de sakte ho (Agar eligible ho)

  • Agar aapki 12th Physics, Chemistry, Biology se hai
  • Toh aap NEET deke MBBS mein admission le sakte ho
  • GNM ke saath saath ya baad mein bhi NEET ki taiyari ho sakti hai
  • Age limit: 25 saal (General), 30 saal (Reserved)

2. BHMS / BAMS (Ayurveda/Homeopathy Doctor)

  • Yeh bhi NEET se hota hai
  • MBBS se thoda easy competition
  • 5.5 saal ka course
  • Aap registered doctor ban jaate ho
  • "Dr." title legally use kar sakte ho

3. B.Sc Nursing โ†’ NP (Nurse Practitioner)

  • Kuch countries mein (USA, UK, Canada) Nurse Practitioners doctor jaisi practice kar sakte hain
  • India mein abhi yeh scope limited hai

4. Medical Officer (Alternative)

  • AYUSH Medical Officer banne ke liye BAMS/BHMS karo
  • Government jobs mein "Doctor" post milti hai

๐Ÿ“‹ Simple Summary

Kya Chahte HoKya Karna Hoga
MBBS Doctor12th PCB + NEET clear karo
Ayurvedic DoctorNEET + BAMS (5.5 yr)
Homeopathy DoctorNEET + BHMS (5.5 yr)
Abroad mein Doctor jaisi practiceB.Sc Nursing + NP course

๐Ÿ’ก Honest Advice

GNM ke baad agar sach mein doctor banana hai toh:
  1. Pehle B.Sc Post Basic Nursing karo (2 saal)
  2. Sath mein NEET ki taiyari shuru karo (agar age allow kare)
  3. Ya BAMS/BHMS ka option explore karo - yeh bhi respected medical degree hai
Aapki age aur 12th stream kya hai? Uske hisaab se best path bataya ja sakta hai! ๐Ÿ˜Š

Npcc kya hota h

Asking for Preferences

Nurse practitioner in critical care

Searching the Web

NPCC Nurse Practitioner Critical Care course India eligibility 2025

Theek hai, aapne khud bataya - NPCC = Nurse Practitioner in Critical Care. Yeh India mein ek relatively naya concept hai. Meri knowledge se puri detail de raha hoon:

๐Ÿฅ NPCC - Nurse Practitioner in Critical Care

Kya Hota Hai?

NPCC ek advanced level nursing role hai jisme ek experienced nurse - doctor ki supervision mein ya independently - ICU/critical care patients ko manage kar sakti/sakta hai. Yeh nurse aur doctor ke beech ka advanced role hota hai.

๐Ÿ“š Course Details (India)

DetailInfo
Full FormNurse Practitioner in Critical Care
Duration2 saal (typically)
LevelPost Graduate / Advanced Diploma
Main InstituteAIIMS New Delhi (pioneer in India)
Kab Shuru Hua~2014-15 se India mein

โœ… Eligibility (Kaun Apply Kar Sakta Hai?)

  • B.Sc Nursing degree hona zaroori hai
  • 2-3 saal ka ICU/Critical Care experience required
  • Valid Nursing Council Registration
  • GNM ke baad direct NPCC nahi - pehle B.Sc Nursing karni hogi

๐Ÿ’ผ NPCC ke Baad Kya Kar Sakte Ho?

  • ICU mein independent practice (limited prescribing rights)
  • Ventilator management, line insertions, drug orders
  • Senior positions in corporate hospitals - Apollo, Fortis, Max
  • Higher salary - โ‚น50,000 - โ‚น1.5 lakh/month
  • Abroad mein Nurse Practitioner roles (especially USA, UK, Australia)

๐Ÿ”„ GNM โ†’ NPCC ka Path

GNM (3 yr)
   โ†“
B.Sc Post Basic Nursing (2 yr)  โ† Pehle yeh karo
   โ†“
ICU mein 2-3 saal kaam karo  โ† Experience lo
   โ†“
NPCC Course (2 yr) at AIIMS/other institutes
   โ†“
Nurse Practitioner in Critical Care โœ…

โญ Kyon Karna Chahiye?

  • India mein ICU nurses ki bahut demand hai
  • Doctor-level skills milti hain
  • Salary bahut zyada hoti hai
  • Abroad mein NP (Nurse Practitioner) ke naam se bahut scope hai
  • Professional respect aur career growth

๐Ÿ’ก Summary

GNM ke baad direct NPCC nahi hota. Pehle B.Sc Post Basic Nursing karein, phir ICU mein experience gain karein, tab NPCC ke liye apply kar sakte hain. Yeh ek excellent career path hai agar aapka interest critical care mein hai!
Koi aur sawaal ho toh poochein! ๐Ÿ˜Š

Npcc or bams m kya different h

Bahut achha sawaal! Dono bilkul alag fields hain. Yahan clear comparison hai:

โš–๏ธ NPCC vs BAMS - Pura Comparison

๐Ÿ”ต NPCC (Nurse Practitioner in Critical Care)

PointDetail
FieldNursing (Advanced)
Degree TypePost Graduate Diploma / Certificate
Duration2 saal
Base RequiredB.Sc Nursing + ICU Experience
Title"Nurse Practitioner" - "Dr." nahi
KaamICU mein advanced nursing care, ventilator, critical patients
PrescribingLimited / Supervised
RecognitionIndia mein abhi bhi developing
Salaryโ‚น50k - โ‚น1.5 lakh/month

๐ŸŸข BAMS (Bachelor of Ayurvedic Medicine & Surgery)

PointDetail
FieldAyurvedic Medicine (Doctor)
Degree TypeUndergraduate Degree (MBBS jaisi)
Duration5.5 saal (incl. 1 yr internship)
Base Required12th PCB + NEET
Title"Dr." laga sakte ho legally โœ…
KaamPatient diagnose karna, medicine likhna, surgery (basic)
PrescribingFull prescribing rights
RecognitionNationally & Internationally recognized
Salaryโ‚น30k - โ‚น1 lakh+ (Govt), private practice mein unlimited

๐Ÿ”‘ Sabse Bada Difference

NPCCBAMS
"Doctor" ban sakte ho?โŒ Nahiโœ… Haan
"Dr." titleโŒ Nahiโœ… Haan
NEET chahiye?โŒ Nahiโœ… Haan
Independent practiceโŒ Limitedโœ… Full
Own clinic khol sakte ho?โŒ Nahiโœ… Haan
GNM ke baad direct?โŒ NahiโŒ Nahi (NEET chahiye)

๐Ÿ’ก Kaunsa Better Hai - Aapke Goal Ke Hisaab Se

Aapka GoalBest Option
"Dr." title + own clinicBAMS
ICU/hospital mein high salary jobNPCC
Jaldi career start karnaNPCC (BAMS 5.5 saal leta hai)
Ayurvedic treatment mein interestBAMS
Abroad nursing careerNPCC
Government doctor bannaBAMS

๐ŸŽฏ Simple Bhasha Mein

  • BAMS = Aap Doctor ban jaate ho - apni clinic, full rights, "Dr." title
  • NPCC = Aap Advanced Nurse ban jaate ho - hospital job, ICU specialist, lekin "Doctor" nahi
Agar aapka sapna "Doctor" banana hai - BAMS ya MBBS hi sahi raasta hai. Agar hospital mein top nursing career chahiye - NPCC better hai.
Aapka main goal kya hai? Uske hisaab se best advice de sakta hoon! ๐Ÿ˜Š

BAMS vs BHMS mein kya difference hai?

Dono respected medical degrees hain, lekin system alag hai. Yahan full comparison:

โš–๏ธ BAMS vs BHMS - Complete Comparison

๐ŸŒฟ BAMS - Bachelor of Ayurvedic Medicine & Surgery

PointDetail
Full FormBachelor of Ayurvedic Medicine & Surgery
SystemAyurveda (Indian ancient system)
Duration5.5 saal (4.5 + 1 yr internship)
Governing BodyCCIM (Central Council of Indian Medicine)
Main FocusHerbs, Panchakarma, Ayurvedic surgery, Rasayana
Surgery Rightsโœ… Limited surgery allowed
Seats in India~25,000+ seats
Top CollegesBHU, Gujarat Ayurved Uni, NIA Jaipur

๐Ÿ’Š BHMS - Bachelor of Homeopathic Medicine & Surgery

PointDetail
Full FormBachelor of Homeopathic Medicine & Surgery
SystemHomeopathy (German system)
Duration5.5 saal (4.5 + 1 yr internship)
Governing BodyCCH (Central Council of Homeopathy)
Main FocusHighly diluted medicines, constitutional treatment
Surgery RightsโŒ Surgery allowed nahi
Seats in India~13,000+ seats
Top CollegesNHMC Mumbai, Fr. Muller Mangalore, Govt colleges

๐Ÿ”‘ Key Differences

ComparisonBAMSBHMS
Medical SystemAyurveda (Indian)Homeopathy (German/European)
Surgeryโœ… Yes (limited)โŒ No
Medicine typeHerbal / NaturalUltra-diluted remedies
Scope in Govt jobsโญโญโญโญโญ Zyadaโญโญโญ Thoda kam
NEET cutoffThoda highThoda low (easy admission)
SeatsZyadaKam
Abroad scopeLimitedVery limited
Private practiceโœ… Goodโœ… Good
Patient trustโญโญโญโญโญ Highโญโญโญโญ Good

๐Ÿ’ผ Career & Salary

BAMSBHMS
Govt Doctor (AYUSH)โœ… Bahut postsโœ… Posts available
Private Practiceโœ… Excellentโœ… Good
Hospital Jobsโœ… Many optionsโš ๏ธ Limited
MD (PG)MD (Ayurveda)MD (Homeopathy)
Starting Salaryโ‚น30k-60k/monthโ‚น25k-50k/month
Own clinicโœ…โœ…

๐ŸŒ Popularity & Demand

BAMS:
  • India mein AYUSH Ministry bahut promote kar rahi hai
  • Government AYUSH centers, PHC, CHC mein posts
  • Yoga + Naturopathy combine kar sakte ho
  • COVID ke baad Ayurveda ki demand bahut badhi hai
BHMS:
  • Homeopathy ke dedicated patients hote hain
  • Chronic diseases (skin, allergy, thyroid) mein popular
  • Maharashtra, West Bengal mein zyada popular
  • Germany, UK mein thodi recognition

๐ŸŽฏ Kaun Chune Kya?

Aapka InterestBest Choice
Indian traditional medicine, surgery bhi chahiyeBAMS โœ…
Chronic disease, gentle treatment approachBHMS โœ…
Govt jobs zyada chahiyeBAMS โœ…
NEET rank thoda kam haiBHMS (easy admission)
Research + modern integrationBAMS โœ…
Dedicated homeopathy practiceBHMS โœ…

๐Ÿ’ก Final Verdict

BAMS > BHMS overall scope ke hisaab se - zyada government posts, surgery rights, aur India mein Ayurveda ka future bahut bright hai AYUSH mission ke wajah se.
BHMS tab chunein jab specifically homeopathy mein interest ho ya NEET rank se BAMS nahi mil raha.
Dono mein "Dr." title milta hai aur apni clinic khol sakte ho! ๐Ÿ˜Š
Koi aur doubt hai? Poochein!

Gnm k bad bams kase kre

Bilkul kar sakte ho! Lekin kuch important cheezein jaanna zaroori hai:

๐Ÿ“‹ GNM ke Baad BAMS Karne ka Pura Process

โš ๏ธ Sabse Pehle - 2 Important Conditions Check Karo


โœ… Condition 1 - 12th Board

BAMS ke liye 12th mein Physics, Chemistry, Biology (PCB) hona ZAROORI hai
Aapki 12th StreamBAMS possible?
12th PCB se ki haiโœ… Haan, bilkul
12th Arts/Commerce se ki haiโŒ Seedha nahi - pehle 12th PCB karni hogi
GNM ke time 12th PCB thiโœ… Direct apply kar sakte ho

โœ… Condition 2 - Age Limit

  • General category: Max 25 saal
  • OBC/SC/ST: Max 30 saal
  • Agar age limit ke andar ho toh bilkul apply kar sakte ho

๐Ÿ—บ๏ธ Step-by-Step Process

STEP 1๏ธโƒฃ
12th PCB check karo
(Agar nahi hai โ†’ Open School se 12th PCB karo - NIOS)
        โ†“
STEP 2๏ธโƒฃ
NEET UG ki taiyari karo
(Physics + Chemistry + Biology)
        โ†“
STEP 3๏ธโƒฃ
NEET exam do (har saal May mein)
        โ†“
STEP 4๏ธโƒฃ
NEET rank se BAMS college mein
counselling ke through admission lo
        โ†“
STEP 5๏ธโƒฃ
BAMS 5.5 saal karo
        โ†“
STEP 6๏ธโƒฃ
"Dr." ban jao โœ…

๐Ÿ“š NEET ke Baare Mein

DetailInfo
Exam nameNEET UG
Conduct karta haiNTA (National Testing Agency)
Kab hota haiHar saal May mein
SubjectsPhysics (50), Chemistry (50), Biology (100)
Total marks720
BAMS ke liye cutoff~400-500+ (General)
MBBS se comparisonBAMS mein kam rank chahiye

๐Ÿ’ก GNM Nurse Hone Ka Faida NEET Mein

GNM karne ke wajah se Biology aur medical knowledge already strong hai!
  • Anatomy โœ… already padha hai
  • Physiology โœ… already padha hai
  • Medical terms โœ… already pata hain
Sirf Physics aur Chemistry extra mehnat chahiye!

โฐ Timeline - Kitna Time Lagega?

StageTime
12th PCB (agar nahi hai - NIOS se)1 saal
NEET taiyari6 months - 1 saal
BAMS course5.5 saal
Total (without 12th PCB)~7-8 saal
Total (with 12th PCB already)~6-6.5 saal

๐Ÿซ NIOS se 12th PCB (Agar Zaroorat Ho)

  • NIOS = National Institute of Open Schooling
  • Working professionals bhi kar sakte hain
  • Ghar se padhai + exam dena hota hai
  • Fees: Bahut kam (โ‚น2000-5000)
  • Website: nios.ac.in

๐Ÿ’ฐ BAMS Fees

College TypeFees
Government collegeโ‚น10,000 - โ‚น50,000/year
Private collegeโ‚น1-3 lakh/year
Deemed universityโ‚น2-5 lakh/year

๐ŸŽฏ Meri Advice - Aapke Liye Best Plan

Agar 12th PCB hai aur age 25 se kam hai:
Abhi se NEET ki taiyari shuru karo - Physics aur Chemistry focus karo, Biology already strong hai GNM se!
Agar 12th PCB nahi hai:
Pehle NIOS se 12th PCB karo, phir NEET do
Agar age zyada ho gayi hai:
BAMS direct nahi ho sakta - tab NPCC ya B.Sc Nursing better option hai

Aapki age kya hai aur 12th kaunsi stream se ki thi? Batao, uske hisaab se exact plan banate hain! ๐Ÿ˜Š

Art site s gnm k liye best option kya h

Bahut important sawaal! Arts stream se GNM karne ke baad options thode alag hote hain. Seedha baat karta hoon:

โš ๏ธ Pehle Yeh Samjho - Arts + GNM ki Limitation

Arts stream se 12th ki hai matlab Physics, Chemistry, Biology nahi hai Isliye BAMS, BHMS, MBBS - directly possible nahi โŒ

โœ… Arts + GNM ke Baad BEST Options

๐Ÿฅ‡ Option 1 - B.Sc Post Basic Nursing (SABSE BEST)

DetailInfo
Duration2 saal
EligibilityGNM + Nursing Registration
PCB required?โŒ Nahi chahiye
Kahan seIGNOU, various nursing colleges
FaidaDegree upgrade, salary badhhegi, abroad scope
Yahi sabse pehle karo - Arts walo ke liye best first step!

๐Ÿฅˆ Option 2 - Sarkari Naukri (Staff Nurse)

  • GNM ke baad directly apply kar sakte ho
  • AIIMS, ESIC, Railway, Army, State Govt mein posts
  • PCB ki zaroorat nahi
  • Stable income + pension
  • Salary: โ‚น35,000 - โ‚น60,000/month

๐Ÿฅ‰ Option 3 - NPCC / Critical Care Specialization

  • B.Sc Nursing ke baad
  • ICU mein advanced career
  • High salary

๐Ÿ… Option 4 - Abroad Nursing (Gulf / UK / Canada)

  • Arts background se bhi ja sakte ho
  • IELTS exam dena hoga
  • GNM + B.Sc Nursing + experience = abroad ready
  • Salary: โ‚น2-5 lakh/month

๐Ÿ… Option 5 - NIOS se 12th PCB karo (Agar Doctor banana hai)

DetailInfo
Kya haiOpen school se Biology stream 12th
Duration1 saal
Feesโ‚น2,000 - โ‚น5,000 only
Fir kyaNEET deke BAMS/BHMS kar sakte ho
Age limit25 saal (General)
Agar age 25 se kam hai aur doctor banana hai - NIOS se PCB karo, phir NEET do!

๐Ÿ—บ๏ธ Arts + GNM ke Baad Complete Roadmap

Arts + GNM Complete โœ…
        โ†“
    2 Raaste:

๐Ÿ”ต RAASTA 1 - Nursing Career        ๐ŸŸข RAASTA 2 - Doctor Banana
(Age ki limit nahi)                  (Age 25 se kam ho)
        โ†“                                    โ†“
B.Sc Post Basic Nursing (2yr)       NIOS se 12th PCB (1yr)
        โ†“                                    โ†“
Staff Nurse Govt Job / Abroad        NEET taiyari (1yr)
        โ†“                                    โ†“
NPCC / M.Sc Nursing                  BAMS / BHMS (5.5yr)
        โ†“                                    โ†“
Senior Nurse / NP โœ…                 "Dr." Title โœ…

๐ŸŽฏ Summary Table

OptionPCB chahiye?TimeBest For
B.Sc Post Basic NursingโŒ Nahi2 saalSabke liye best
Govt Staff Nurse jobโŒ NahiDirectJaldi job chahiye
Abroad NursingโŒ Nahi1-2 saal prepHigh salary
NIOS PCB โ†’ NEET โ†’ BAMSโœ… Haan (leni padegi)7-8 saalDoctor banana hai

๐Ÿ’ก Meri Personal Recommendation

Agar age 25 se kam hai aur doctor banana hai:
NIOS se PCB lo โ†’ NEET do โ†’ BAMS karo
Agar nursing mein hi grow karna hai:
B.Sc Post Basic Nursing karo โ†’ Govt job ya Abroad jao

Aapki age kya hai? Usi ke hisaab se exact best option confirm kar sakta hoon! ๐Ÿ˜Š

Npcc k bad kya krna chahiye

NPCC ke baad aapke paas kaafi strong options hain! Yeh ek advanced qualification hai, isliye options bhi advanced hain:

๐Ÿš€ NPCC ke Baad Best Options

๐Ÿฅ‡ Option 1 - Senior/Lead Critical Care Nurse (Turant Karo)

  • NPCC complete hote hi Senior Nurse / ICU In-charge position lo
  • Apollo, Fortis, Max, Medanta jaise hospitals mein apply karo
  • Salary: โ‚น60,000 - โ‚น1.5 lakh/month
  • Experience build karo - yeh aage sabke liye zaroori hai

๐Ÿฅˆ Option 2 - M.Sc Nursing (Critical Care Specialization)

DetailInfo
Duration2 saal
EligibilityB.Sc Nursing + Experience
SpecializationMedical-Surgical, Critical Care
FaidaTeaching + Senior clinical roles
Salary afterโ‚น80k - โ‚น2 lakh/month
NPCC + M.Sc = Double powerful combination โญ

๐Ÿฅ‰ Option 3 - Abroad Nursing (SABSE HIGH SALARY)

CountryExam RequiredSalary
USANCLEX-RNโ‚น3-6 lakh/month
UKCBT + OSCEโ‚น2-4 lakh/month
CanadaNCLEX-RNโ‚น3-5 lakh/month
AustraliaAHPRA registrationโ‚น2-4 lakh/month
Gulf (UAE/Saudi)Dataflow + examโ‚น1.5-3 lakh/month
NPCC qualification abroad mein ICU Nurse ke liye bahut valuable hai!

๐Ÿ… Option 4 - Nurse Educator / Faculty

  • Nursing colleges mein Lecturer/Assistant Professor ban sakte ho
  • M.Sc Nursing ke baad aur bhi better
  • Govt nursing college mein permanent faculty position
  • Salary: โ‚น50k-1 lakh + job security

๐Ÿ… Option 5 - PhD Nursing (Research)

DetailInfo
AfterM.Sc Nursing
Duration3-5 saal
CareerProfessor, Research officer, WHO/ICMR jobs
Salaryโ‚น1-2 lakh/month+

๐Ÿ… Option 6 - Hospital Administration (MHA)

  • Master of Hospital Administration karo
  • ICU experience + administration = Hospital Manager/Director
  • Corporate hospitals mein top management roles
  • Salary: โ‚น1-3 lakh/month

๐Ÿ—บ๏ธ NPCC ke Baad Complete Career Path

NPCC Complete โœ…
        โ†“
Senior ICU Nurse (1-2 saal experience)
        โ†“
        โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ†“                             โ†“
   ๐ŸŒ ABROAD                    ๐Ÿ‡ฎ๐Ÿ‡ณ INDIA
   NCLEX/CBT exam              M.Sc Nursing (2yr)
   USA/UK/Canada                     โ†“
   โ‚น3-6 lakh/month         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                            โ†“                โ†“
                      Nurse Educator    PhD / Research
                      /Faculty          /WHO/ICMR
                      โ‚น80k-1.5L        โ‚น1-2L+/month

๐Ÿ’ผ Salary Growth Chart

StageSalary/Month
GNM Staff Nurseโ‚น20-35k
B.Sc Nursingโ‚น30-50k
NPCC doneโ‚น60k-1.5L
NPCC + M.Scโ‚น80k-2L
NPCC + Abroadโ‚น2-6L ๐Ÿ”ฅ
NPCC + PhD/Facultyโ‚น1-2L+

๐ŸŽฏ Meri Recommendation

Short term (abhi):
Senior ICU Nurse ka position lo, experience gain karo
Medium term (2-3 saal):
M.Sc Nursing karo ya Abroad (NCLEX) ki taiyari karo
Long term:
PhD / Hospital Administration / Abroad settle

๐Ÿ’ก Sabse Smart Combination

NPCC + M.Sc Nursing + NCLEX = 
Maximum salary + Maximum career growth ๐Ÿ†

Aapka interest kya hai - India mein grow karna chahte ho ya Abroad jaana chahte ho? Uske hisaab se exact plan bana sakte hain! ๐Ÿ˜Š

I have completely blanked in my mind about theory mughe theory kase revision krni chahiye

Bilkul normal hai yeh feeling! GNM mein bahut kuch padhna hota hai. Yeh raha complete revision plan:

๐Ÿง  Theory Revision Kaise Karein - Complete Guide

๐Ÿ˜ฐ Pehle Yeh Samjho - "Mind Blank" Kyun Hota Hai?

  • Ek saath bahut zyada topics sochne se
  • Kahan se shuru karein yeh pata nahi hota
  • Pressure + anxiety se concentration nahi hoti
  • Solution: Ek ek step, ek ek topic โœ…

๐Ÿ“… Step 1 - Pehle Plan Banao (1 din)

Apne saare subjects list karo:
GNM SubjectsPriority
Anatomy & Physiology๐Ÿ”ด High
Medical-Surgical Nursing๐Ÿ”ด High
Pharmacology๐Ÿ”ด High
Community Health Nursing๐ŸŸก Medium
Pediatric Nursing๐ŸŸก Medium
OBG Nursing๐ŸŸก Medium
Mental Health Nursing๐ŸŸข Normal
Nutrition๐ŸŸข Normal

โฐ Step 2 - Daily Time Table Banao

MORNING  6:00 - 8:00 AM  โ†’ New topic padho (fresh mind)
          โ†“
AFTERNOON 2:00 - 4:00 PM  โ†’ Revision karo (jo subah padha)
          โ†“
EVENING  7:00 - 9:00 PM  โ†’ Notes likhเฅ‹ / Questions solve karo
          โ†“
NIGHT    Sone se pehle  โ†’ Sirf 10 min - points repeat karo

๐Ÿ“ Step 3 - Smart Revision Techniques

๐Ÿ”ต Technique 1 - "3R Method"

READ    โ†’ Ek baar pura topic padho
RECALL  โ†’ Book band karo, jo yaad hai likho
REVIEW  โ†’ Compare karo book se, gap fill karo

๐ŸŸข Technique 2 - Flowcharts & Diagrams

  • Theory ko diagram mein convert karo
  • Example: Heart ka diagram โ†’ chambers, valves, blood flow
  • Visual memory zyada time tak rehti hai
  • 1 page ki theory = 1 small diagram/flowchart

๐ŸŸก Technique 3 - Mnemonics Banao

  • Example: Cranial nerves = "On Old Olympus..."
  • Nursing ke liye apne khud ke shortcuts banao
  • Hindi mein bhi mnemonic ban sakti hai

๐Ÿ”ด Technique 4 - Teach Back Method

  • Jo padha usse khud ko ya dost ko samjhao
  • Agar samjha nahi paye = aur revision chahiye
  • Sabse powerful technique hai yeh โญ

๐ŸŸฃ Technique 5 - Previous Year Questions (PYQ)

  • GNM exam ke purane questions solve karo
  • Pattern samjh aata hai
  • Important topics automatically pata chalte hain

๐Ÿ“– Step 4 - Subject-Wise Quick Revision Tips

Anatomy & Physiology

  • Body systems ek ek karo (CVS, Respiratory, Renal...)
  • Diagrams ZAROOR banao
  • Functions yaad karne ka shortcut = "kya hoga agar yeh nahi hota?"

Medical-Surgical Nursing

  • Disease format follow karo:
Definition โ†’ Causes โ†’ Signs/Symptoms โ†’ 
Diagnosis โ†’ Treatment โ†’ Nursing Care
  • Har disease isi format mein padho - consistent rahega

Pharmacology

  • Drug groups yaad karo pehle (antibiotics, analgesics...)
  • ABCDE of each drug:
A - Action
B - Brand name
C - Contraindications
D - Dose
E - Effects (side effects)

Community Health Nursing

  • Government programs list banao (NHM, RMNCH, etc.)
  • Vaccines schedule ek chart mein likhะพ
  • Numbers/statistics flashcards banao

๐Ÿƒ Step 5 - Flashcard Method (Bahut Effective!)

Kaise banao:
  • Ek card = Ek concept
  • Front: Question / Topic name
  • Back: Answer / Key points
  • Roz 20-30 flashcards revise karo
Apps use kar sakte ho:
  • ๐Ÿ“ฑ Anki (free, best flashcard app)
  • ๐Ÿ“ฑ Quizlet (nursing sets already available)

๐Ÿ—“๏ธ Step 6 - Weekly Revision Plan

DinKaam
MondayNaya topic padho
TuesdayUska revision + notes
WednesdayNaya topic
ThursdayMon + Wed revision
FridayNaya topic
SaturdayPoore hafte ka revision
SundayRest + Light review only ๐Ÿ˜ด

๐Ÿ†˜ Jab Bilkul Blank Feel Ho Tab Kya Karein?

  1. Ruko mat - bas ek page padho, sirf ek
  2. Sabse easy topic se shuru karo
  3. 5 minute rule - sirf 5 min padhunga, phir dekhte hain (aksar zyada ho jata hai)
  4. Phone band karo - distraction zero karo
  5. Pani piyo, thoda walk karo - brain reset hota hai

๐Ÿ’ก Golden Rules

๐Ÿ“Œ Ek din mein sab mat padho - roz thoda thoda ๐Ÿ“Œ Samajh ke padho - ratt mat maro ๐Ÿ“Œ Notes zaroor likhะพ - likhne se yaad rehta hai ๐Ÿ“Œ Sleep mat chodo - neend mein memory consolidate hoti hai ๐Ÿ“Œ Consistency > Intensity - roz 2 ghante > ek din 10 ghante

๐ŸŽฏ Aaj Se Shuru Karo - First Step

Abhi yeh karo:
  1. โœ… Ek notebook lo
  2. โœ… Saare subjects likho
  3. โœ… Sabse weak subject choose karo
  4. โœ… Usi ka ek chapter aaj padho
  5. โœ… 5 points likho jo yaad rahe
Bas itna - aaj ke liye kaafi hai! ๐Ÿ™Œ

Kaunsa subject sabse zyada difficult lagta hai? Uske liye specifically help kar sakta hoon! ๐Ÿ˜Š

Make a GNM revision study guide PDF

Reading File
Running Command

mkdir -p /tmp/workspace/gnm-study-guide && ls /tmp/workspace/

Writing File

~/gnm-study-guide/create_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch, cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.pdfgen import canvas as pdfcanvas

OUTPUT = "/tmp/workspace/gnm-study-guide/GNM_Revision_Study_Guide.pdf"

# โ”€โ”€ Color Palette โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E86AB")
LIGHT_BLUE  = colors.HexColor("#D6EAF8")
TEAL        = colors.HexColor("#17A589")
LIGHT_TEAL  = colors.HexColor("#D1F2EB")
ORANGE      = colors.HexColor("#E67E22")
LIGHT_ORANGE= colors.HexColor("#FDEBD0")
RED         = colors.HexColor("#C0392B")
LIGHT_RED   = colors.HexColor("#FADBD8")
PURPLE      = colors.HexColor("#7D3C98")
LIGHT_PURPLE= colors.HexColor("#E8DAEF")
YELLOW      = colors.HexColor("#F1C40F")
LIGHT_YELLOW= colors.HexColor("#FEF9E7")
WHITE       = colors.white
LIGHT_GRAY  = colors.HexColor("#F2F3F4")
MID_GRAY    = colors.HexColor("#BDC3C7")
DARK_GRAY   = colors.HexColor("#2C3E50")

# โ”€โ”€ Styles โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

cover_title = S("CoverTitle", fontSize=32, textColor=WHITE,
                alignment=TA_CENTER, fontName="Helvetica-Bold", leading=40)
cover_sub   = S("CoverSub",   fontSize=16, textColor=colors.HexColor("#AED6F1"),
                alignment=TA_CENTER, fontName="Helvetica", leading=24)
cover_note  = S("CoverNote",  fontSize=11, textColor=colors.HexColor("#D5D8DC"),
                alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=16)

ch_title    = S("ChTitle",    fontSize=20, textColor=WHITE,
                alignment=TA_LEFT, fontName="Helvetica-Bold", leading=26,
                spaceAfter=4)
section_hd  = S("SecHd",      fontSize=14, textColor=DARK_BLUE,
                fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=4)
sub_hd      = S("SubHd",      fontSize=12, textColor=TEAL,
                fontName="Helvetica-Bold", spaceBefore=6, spaceAfter=3)
body        = S("Body",       fontSize=10, textColor=DARK_GRAY,
                fontName="Helvetica", leading=15, spaceAfter=3)
body_bold   = S("BodyBold",   fontSize=10, textColor=DARK_GRAY,
                fontName="Helvetica-Bold", leading=15, spaceAfter=3)
bullet_s    = S("Bullet",     fontSize=10, textColor=DARK_GRAY,
                fontName="Helvetica", leading=15, leftIndent=14,
                bulletIndent=0, spaceAfter=2,
                bulletText="\u2022")
tip_s       = S("Tip",        fontSize=10, textColor=colors.HexColor("#1A5276"),
                fontName="Helvetica-Oblique", leading=14,
                leftIndent=8, spaceAfter=2)
small_bold  = S("SmallBold",  fontSize=9,  textColor=DARK_GRAY,
                fontName="Helvetica-Bold", leading=12)
table_hd    = S("TblHd",      fontSize=9,  textColor=WHITE,
                fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12)
table_cell  = S("TblCell",    fontSize=9,  textColor=DARK_GRAY,
                fontName="Helvetica", alignment=TA_LEFT, leading=12)
footer_s    = S("Footer",     fontSize=8,  textColor=MID_GRAY,
                alignment=TA_CENTER, fontName="Helvetica-Oblique")

# โ”€โ”€ Page callbacks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def cover_bg(canv, doc):
    w, h = A4
    # gradient-like background: two rects
    canv.setFillColor(DARK_BLUE)
    canv.rect(0, 0, w, h, fill=1, stroke=0)
    canv.setFillColor(MED_BLUE)
    canv.rect(0, h*0.55, w, h*0.45, fill=1, stroke=0)
    # decorative bar
    canv.setFillColor(TEAL)
    canv.rect(0, h*0.54, w, 6, fill=1, stroke=0)
    canv.setFillColor(ORANGE)
    canv.rect(0, h*0.54-8, w, 4, fill=1, stroke=0)

def normal_page(canv, doc):
    w, h = A4
    # top bar
    canv.setFillColor(DARK_BLUE)
    canv.rect(0, h-36, w, 36, fill=1, stroke=0)
    canv.setFont("Helvetica-Bold", 9)
    canv.setFillColor(WHITE)
    canv.drawString(1.5*cm, h-24, "GNM Revision Study Guide")
    canv.drawRightString(w-1.5*cm, h-24, "Nursing Excellence Series")
    # bottom bar
    canv.setFillColor(DARK_BLUE)
    canv.rect(0, 0, w, 28, fill=1, stroke=0)
    canv.setFont("Helvetica", 8)
    canv.setFillColor(MID_GRAY)
    canv.drawCentredString(w/2, 9, f"Page {doc.page}")
    # side accent
    canv.setFillColor(TEAL)
    canv.rect(0, 28, 4, h-64, fill=1, stroke=0)

def chapter_page(canv, doc):
    normal_page(canv, doc)

# โ”€โ”€ Helper builders โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def chapter_header(title, subtitle="", color=MED_BLUE):
    w, _ = A4
    inner_w = w - 3.5*cm   # account for left accent bar + margins
    tbl = Table([[Paragraph(title, ch_title)],
                 [Paragraph(subtitle, S("ChSub", fontSize=11, textColor=colors.HexColor("#AED6F1"),
                                        fontName="Helvetica-Oblique", leading=16))]],
                colWidths=[inner_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 14),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("ROUNDEDCORNERS", [6]),
    ]))
    return tbl

def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE):
    w, _ = A4
    inner_w = w - 3.5*cm
    tbl = Table([[Paragraph(text, tip_s)]], colWidths=[inner_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("LINERIGHT",     (0,0), (-1,-1), 4, border),
        ("TOPPADDING",    (0,0), (-1,-1), 8),
        ("BOTTOMPADDING", (0,0), (-1,-1), 8),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ]))
    return tbl

def two_col_table(headers, rows, col_widths=None, hdr_color=MED_BLUE):
    w, _ = A4
    inner_w = w - 3.5*cm
    if col_widths is None:
        col_widths = [inner_w * 0.38, inner_w * 0.62]
    data = [[Paragraph(h, table_hd) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), table_cell) for c in row])
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    style = [
        ("BACKGROUND",    (0,0), (-1,0),  hdr_color),
        ("BACKGROUND",    (0,1), (-1,-1), LIGHT_GRAY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GRAY]),
        ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    tbl.setStyle(TableStyle(style))
    return tbl

def three_col_table(headers, rows, col_widths=None, hdr_color=TEAL):
    w, _ = A4
    inner_w = w - 3.5*cm
    if col_widths is None:
        col_widths = [inner_w*0.28, inner_w*0.38, inner_w*0.34]
    data = [[Paragraph(h, table_hd) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), table_cell) for c in row])
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    style = [
        ("BACKGROUND",    (0,0), (-1,0),  hdr_color),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_TEAL]),
        ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]
    tbl.setStyle(TableStyle(style))
    return tbl

def B(text):
    return Paragraph(f"\u2022  {text}", bullet_s)

def sp(n=6):
    return Spacer(1, n)

def HR():
    return HRFlowable(width="100%", thickness=1, color=MID_GRAY, spaceAfter=4, spaceBefore=4)

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# BUILD DOCUMENT
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
doc = BaseDocTemplate(
    OUTPUT, pagesize=A4,
    leftMargin=1.8*cm, rightMargin=1.2*cm,
    topMargin=1.5*cm,  bottomMargin=1.2*cm,
    title="GNM Revision Study Guide",
    author="Orris Nursing Series"
)

cover_frame  = Frame(0, 0, A4[0], A4[1], leftPadding=1.8*cm, rightPadding=1.2*cm,
                     topPadding=1.5*cm, bottomPadding=1.2*cm, id="cover")
normal_frame = Frame(0.5*cm, 1.0*cm, A4[0]-1.7*cm, A4[1]-2.8*cm,
                     leftPadding=1.0*cm, rightPadding=0.5*cm,
                     topPadding=0.3*cm, bottomPadding=0.3*cm, id="normal")

doc.addPageTemplates([
    PageTemplate(id="Cover",  frames=[cover_frame],  onPage=cover_bg),
    PageTemplate(id="Normal", frames=[normal_frame], onPage=normal_page),
])

story = []

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ COVER PAGE โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(Spacer(1, 3.2*cm))
story.append(Paragraph("๐Ÿ“˜ GNM", cover_title))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Revision Study Guide", cover_title))
story.append(Spacer(1, 0.6*cm))
story.append(Paragraph("General Nursing and Midwifery", cover_sub))
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Complete Theory + Quick Revision + Career Roadmap", cover_sub))
story.append(Spacer(1, 1.2*cm))
story.append(Paragraph("โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€", cover_note))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Anatomy & Physiology  โ€ข  Medical-Surgical Nursing", cover_note))
story.append(Paragraph("Pharmacology  โ€ข  Community Health  โ€ข  OBG  โ€ข  Pediatrics", cover_note))
story.append(Paragraph("Mental Health  โ€ข  Career Options  โ€ข  Revision Techniques", cover_note))
story.append(Spacer(1, 1.0*cm))
story.append(Paragraph("Orris Nursing Excellence Series  |  2026", cover_note))

from reportlab.platypus import NextPageTemplate
story.append(NextPageTemplate("Normal"))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PAGE 2: HOW TO USE โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("๐Ÿ“– How to Use This Guide", "Smart revision strategies for GNM students", DARK_BLUE))
story.append(sp(10))

story.append(Paragraph("Revision Techniques", section_hd))
story.append(HR())

techniques = [
    ["Technique", "Description", "Best For"],
    ["3R Method", "Read โ†’ Recall โ†’ Review\nClose book, write what you remember, then compare", "All subjects"],
    ["Flowcharts", "Convert theory into visual diagrams\n1 page theory = 1 diagram", "Anatomy, Physiology"],
    ["Mnemonics", "Create Hindi/English shortcuts\nfor long lists", "Pharmacology, Cranial nerves"],
    ["Teach-Back", "Explain topic to yourself/friend\nIf can't explain = not learned yet", "Any difficult topic"],
    ["PYQ Practice", "Solve previous year exam questions\nIdentifies important topics", "Exam preparation"],
    ["Flashcards", "Front: Question | Back: Answer\nRevise 20-30 cards daily (use Anki app)", "Definitions, Drug names"],
]
w, _ = A4
inner_w = w - 3.5*cm
tdata = [[Paragraph(techniques[0][i], table_hd) for i in range(3)]]
for row in techniques[1:]:
    tdata.append([Paragraph(c, table_cell) for c in row])
t = Table(tdata, colWidths=[inner_w*0.22, inner_w*0.48, inner_w*0.30], repeatRows=1)
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  PURPLE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_PURPLE]),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(sp(10))

story.append(Paragraph("Daily Study Timetable", section_hd))
story.append(HR())
timetable = [
    ["Time", "Activity"],
    ["6:00 - 8:00 AM",  "New topic study (fresh mind - best retention)"],
    ["2:00 - 4:00 PM",  "Revision of morning topic + make notes"],
    ["7:00 - 9:00 PM",  "Previous year questions / Flashcards"],
    ["Before sleep",    "10 min - repeat key points mentally"],
    ["Sunday",          "Full week revision only - NO new topics"],
]
story.append(two_col_table(["Time", "Activity"], timetable[1:], [inner_w*0.3, inner_w*0.7], hdr_color=ORANGE))
story.append(sp(10))

story.append(info_box("๐Ÿ’ก Golden Rule: Consistency > Intensity. 2 hours daily beats 10 hours once a week. Sleep is when memory consolidates - never sacrifice sleep!", LIGHT_YELLOW, ORANGE))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 1: ANATOMY โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 1: Anatomy & Physiology", "Body systems, structures and functions", MED_BLUE))
story.append(sp(10))

story.append(Paragraph("Key Body Systems Overview", section_hd))
story.append(HR())
systems = [
    ["Body System", "Key Organs", "Main Function"],
    ["Cardiovascular", "Heart, Blood vessels, Blood", "Pump blood, transport O2/nutrients"],
    ["Respiratory",    "Lungs, Trachea, Bronchi", "Gas exchange (O2 in, CO2 out)"],
    ["Renal/Urinary",  "Kidneys, Ureters, Bladder", "Filter blood, remove waste, regulate fluid"],
    ["Nervous",        "Brain, Spinal cord, Nerves", "Control all body functions"],
    ["Endocrine",      "Pituitary, Thyroid, Pancreas", "Hormone secretion, metabolism"],
    ["Digestive",      "Stomach, Intestines, Liver", "Digestion and absorption of nutrients"],
    ["Musculoskeletal","Bones, Muscles, Joints", "Support, movement, protection"],
    ["Reproductive",   "Ovaries/Testes, Uterus", "Reproduction"],
    ["Immune/Lymphatic","Lymph nodes, Spleen, WBC", "Defense against infection"],
]
story.append(three_col_table(["Body System", "Key Organs", "Main Function"], systems[1:]))
story.append(sp(10))

story.append(Paragraph("Heart - Quick Revision", section_hd))
story.append(HR())
story.append(B("4 chambers: Right Atrium, Right Ventricle, Left Atrium, Left Ventricle"))
story.append(B("4 valves: Tricuspid, Pulmonary, Mitral (Bicuspid), Aortic"))
story.append(B("Normal heart rate: 60-100 bpm | Normal BP: 120/80 mmHg"))
story.append(B("Cardiac output = Heart rate ร— Stroke volume (Normal: ~5 L/min)"))
story.append(B("SA node = natural pacemaker of heart (60-100 bpm)"))
story.append(B("AV node delays impulse by 0.1 sec to allow ventricular filling"))
story.append(sp(8))

story.append(Paragraph("Respiratory System - Key Values", section_hd))
story.append(HR())
resp_vals = [
    ["Parameter", "Normal Value"],
    ["Tidal Volume (TV)", "500 mL"],
    ["Respiratory Rate", "12-20 breaths/min"],
    ["Vital Capacity (VC)", "~4800 mL (male)"],
    ["Residual Volume (RV)", "~1200 mL"],
    ["O2 Saturation (SpO2)", "95-100%"],
    ["PaO2", "80-100 mmHg"],
    ["PaCO2", "35-45 mmHg"],
    ["pH (arterial blood)", "7.35-7.45"],
]
story.append(two_col_table(["Parameter", "Normal Value"], resp_vals[1:], [inner_w*0.5, inner_w*0.5], hdr_color=TEAL))
story.append(sp(8))

story.append(info_box("๐Ÿ“ Exam Tip: Learn normal values by heart - questions on ABG (Arterial Blood Gas) values are very common in GNM exams!", LIGHT_TEAL, TEAL))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 2: MED-SURG โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 2: Medical-Surgical Nursing", "Disease management and nursing care", TEAL))
story.append(sp(10))

story.append(Paragraph("Disease Revision Format (Use for EVERY disease)", section_hd))
story.append(HR())
story.append(info_box("Always study each disease in this format:\nDefinition โ†’ Causes (Etiology) โ†’ Signs & Symptoms โ†’ Diagnosis โ†’ Treatment โ†’ Nursing Care โ†’ Complications", LIGHT_BLUE, MED_BLUE))
story.append(sp(8))

story.append(Paragraph("Common Diseases - Quick Reference", section_hd))
story.append(HR())
diseases = [
    ["Disease", "Key Signs/Symptoms", "Key Nursing Care"],
    ["Myocardial Infarction (MI)", "Crushing chest pain, radiation to left arm/jaw, diaphoresis, nausea", "Bed rest, O2, ECG monitoring, IV access, pain relief (morphine)"],
    ["Diabetes Mellitus", "Polyuria, polydipsia, polyphagia, weight loss, fatigue", "Blood sugar monitoring, insulin admin, foot care, diet education"],
    ["Hypertension", "Headache, dizziness, BP >140/90, blurred vision", "Antihypertensives, low-sodium diet, stress reduction, BP monitoring"],
    ["Pneumonia", "Fever, cough with sputum, chest pain, dyspnea, crackles", "Antibiotics, O2, deep breathing exercises, hydration, positioning"],
    ["Urinary Tract Infection", "Dysuria, frequency, urgency, fever, cloudy urine", "Antibiotics, increased fluid intake, perineal hygiene, urine culture"],
    ["Appendicitis", "RLQ pain, Rebound tenderness, Nausea, Fever, Rovsing sign +", "Pre-op prep, NPO, IV fluids, surgery (appendicectomy)"],
    ["Asthma", "Wheezing, dyspnea, cough (night/early morning), chest tightness", "Bronchodilators (salbutamol), corticosteroids, avoid triggers, peak flow"],
    ["Stroke (CVA)", "Sudden weakness one side, slurred speech, facial droop, vision loss", "ABC assessment, positioning (HOB 30ยฐ), neuro checks, rehabilitation"],
]
w2 = [inner_w*0.20, inner_w*0.38, inner_w*0.42]
story.append(three_col_table(["Disease", "Key Signs/Symptoms", "Key Nursing Care"], diseases[1:], col_widths=w2))
story.append(sp(8))

story.append(Paragraph("Vital Signs - Normal Ranges", section_hd))
story.append(HR())
vitals = [
    ["Vital Sign", "Normal Adult Range", "Action if Abnormal"],
    ["Temperature", "36.5ยฐC - 37.5ยฐC (97.7-99.5ยฐF)", "Antipyretics, tepid sponging, report >38.5ยฐC"],
    ["Pulse Rate", "60 - 100 bpm", "Report <60 (bradycardia) or >100 (tachycardia)"],
    ["Respiration", "12 - 20 breaths/min", "Report <10 or >24, check O2 saturation"],
    ["Blood Pressure", "90/60 - 120/80 mmHg", "Report <90/60 (hypotension) or >140/90 (HTN)"],
    ["SpO2", "95 - 100%", "Give O2 if <95%, urgent action if <90%"],
    ["Blood Sugar (fasting)", "70 - 100 mg/dL", "Check insulin, treat hypo/hyperglycemia"],
]
story.append(three_col_table(["Vital Sign", "Normal Adult Range", "Action if Abnormal"], vitals[1:], col_widths=[inner_w*0.22, inner_w*0.35, inner_w*0.43], hdr_color=RED))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 3: PHARMACOLOGY โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 3: Pharmacology", "Drug classifications, actions and nursing considerations", ORANGE))
story.append(sp(10))

story.append(Paragraph("ABCDE Drug Study Method", section_hd))
story.append(HR())
abcde = [
    ["Letter", "Stands For", "What to Study"],
    ["A", "Action",           "How does the drug work? (mechanism)"],
    ["B", "Brand Name",       "Common brand names used in hospitals"],
    ["C", "Contraindications","When NOT to give this drug"],
    ["D", "Dose",             "Adult dose, pediatric dose, frequency"],
    ["E", "Effects",          "Side effects and adverse reactions to monitor"],
]
story.append(three_col_table(["Letter", "Stands For", "What to Study"], abcde[1:],
    col_widths=[inner_w*0.12, inner_w*0.28, inner_w*0.60], hdr_color=ORANGE))
story.append(sp(10))

story.append(Paragraph("Common Drug Groups - Quick Reference", section_hd))
story.append(HR())
drugs = [
    ["Drug Class", "Examples", "Key Use & Nursing Points"],
    ["Antibiotics (Penicillin)", "Amoxicillin, Ampicillin", "Bacterial infections. Check allergy before giving. Complete full course."],
    ["Antibiotics (Cephalosporin)", "Ceftriaxone, Cefixime", "Broad spectrum. Cross-allergy with penicillin possible."],
    ["Analgesics (Opioid)", "Morphine, Tramadol", "Severe pain. Monitor resp. rate - can cause respiratory depression."],
    ["Analgesics (Non-opioid)", "Paracetamol, Ibuprofen", "Mild-moderate pain. Paracetamol safe in pregnancy."],
    ["Antihypertensives (ACE-I)", "Enalapril, Lisinopril", "HTN, heart failure. Monitor BP, check for dry cough (common SE)."],
    ["Antidiabetics (Insulin)", "Regular, NPH, Glargine", "DM management. Check blood sugar before giving. Rotate injection sites."],
    ["Antidiabetics (Oral)", "Metformin, Glipizide", "Type 2 DM. Metformin: give with food, check kidney function."],
    ["Bronchodilators", "Salbutamol, Ipratropium", "Asthma, COPD. Teach inhaler technique. Monitor heart rate."],
    ["Diuretics", "Furosemide, Spironolactone", "Edema, HTN, heart failure. Monitor K+ levels (Furosemide causes loss)."],
    ["Anticoagulants", "Heparin, Warfarin", "Prevent clots. Monitor aPTT (heparin) / INR (warfarin). Bleeding risk!"],
    ["Antacids / PPIs", "Omeprazole, Ranitidine", "GERD, peptic ulcer. Give before meals. Monitor Mg+ long-term."],
    ["Corticosteroids", "Prednisolone, Dexamethasone", "Inflammation, asthma, allergy. Taper slowly - do not stop abruptly."],
]
story.append(three_col_table(["Drug Class", "Examples", "Key Use & Nursing Points"], drugs[1:],
    col_widths=[inner_w*0.25, inner_w*0.22, inner_w*0.53], hdr_color=ORANGE))
story.append(sp(8))
story.append(info_box("โš ๏ธ Safety Rule: ALWAYS check the 5 Rights before giving any drug:\nRight Patient โ€ข Right Drug โ€ข Right Dose โ€ข Right Route โ€ข Right Time", LIGHT_RED, RED))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 4: COMMUNITY HEALTH โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 4: Community Health Nursing", "National programs, immunization and public health", colors.HexColor("#1F618D")))
story.append(sp(10))

story.append(Paragraph("Important National Health Programs", section_hd))
story.append(HR())
programs = [
    ["Program", "Full Form", "Focus Area"],
    ["NHM",     "National Health Mission", "Overall healthcare strengthening"],
    ["RMNCH+A", "Reproductive, Maternal, Newborn, Child, Adolescent Health", "Mother & child health"],
    ["JSSK",    "Janani Shishu Suraksha Karyakram", "Free delivery services"],
    ["JSY",     "Janani Suraksha Yojana", "Institutional delivery incentive"],
    ["PMMVY",   "Pradhan Mantri Matru Vandana Yojana", "Cash benefit for pregnant women"],
    ["NPCDCS",  "National Programme for Non-Communicable Diseases", "Cancer, diabetes, CVD"],
    ["NTEP",    "National Tuberculosis Elimination Programme", "TB elimination by 2025"],
    ["NVBDCP",  "National Vector Borne Disease Control Programme", "Malaria, Dengue, Filaria"],
    ["NPCB",    "National Programme for Control of Blindness", "Eye care, cataract surgery"],
    ["RKSK",    "Rashtriya Kishor Swasthya Karyakram", "Adolescent health"],
]
story.append(three_col_table(["Program", "Full Form", "Focus Area"], programs[1:],
    col_widths=[inner_w*0.14, inner_w*0.52, inner_w*0.34], hdr_color=colors.HexColor("#1F618D")))
story.append(sp(10))

story.append(Paragraph("Immunization Schedule (Universal Immunization Programme)", section_hd))
story.append(HR())
vaccines = [
    ["Age", "Vaccine", "Disease Protected Against"],
    ["Birth",       "BCG, OPV-0, Hep-B-0",          "TB, Polio, Hepatitis B"],
    ["6 weeks",     "OPV-1, Penta-1, IPV-1, RVV-1",  "Polio, DPT+HepB+Hib, Rotavirus"],
    ["10 weeks",    "OPV-2, Penta-2, RVV-2",          "Polio, DPT+HepB+Hib, Rotavirus"],
    ["14 weeks",    "OPV-3, Penta-3, IPV-2, RVV-3",   "Polio, DPT+HepB+Hib, Rotavirus"],
    ["9-12 months", "MR-1, JE-1, Vitamin A (1st)",    "Measles-Rubella, Japanese Encephalitis"],
    ["16-24 months","MR-2, DPT Booster-1, OPV Boost", "Measles-Rubella, DPT, Polio"],
    ["5-6 years",   "DPT Booster-2",                  "Diphtheria, Pertussis, Tetanus"],
    ["10 years",    "Td",                              "Tetanus, Diphtheria"],
    ["16 years",    "Td",                              "Tetanus, Diphtheria"],
]
story.append(three_col_table(["Age", "Vaccine", "Disease Protected Against"], vaccines[1:],
    col_widths=[inner_w*0.20, inner_w*0.42, inner_w*0.38], hdr_color=TEAL))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 5: OBG โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 5: OBG Nursing", "Obstetrics, Gynaecology and Midwifery", colors.HexColor("#884EA0")))
story.append(sp(10))

story.append(Paragraph("Stages of Labour", section_hd))
story.append(HR())
labour = [
    ["Stage", "Description", "Duration"],
    ["1st Stage - Latent Phase", "Cervix dilates 0-3 cm, mild contractions", "~8 hours (primi), ~5 hrs (multi)"],
    ["1st Stage - Active Phase", "Cervix dilates 4-10 cm, strong contractions", "~6 hours (primi), ~4 hrs (multi)"],
    ["2nd Stage",                "Full dilation to delivery of baby", "30 min-2 hrs (primi), 15-30 min (multi)"],
    ["3rd Stage",                "Delivery of placenta", "5-30 minutes"],
    ["4th Stage",                "1-4 hours after delivery, monitoring", "~4 hours"],
]
story.append(three_col_table(["Stage", "Description", "Duration"], labour[1:],
    col_widths=[inner_w*0.28, inner_w*0.45, inner_w*0.27], hdr_color=colors.HexColor("#884EA0")))
story.append(sp(8))

story.append(Paragraph("Antenatal Care (ANC) Schedule", section_hd))
story.append(HR())
anc = [
    ["Visit", "When", "Key Activities"],
    ["1st ANC Visit", "Within 12 weeks (1st trimester)", "Registration, blood tests, urine test, weight, BP, iron + folic acid"],
    ["2nd ANC Visit", "14-26 weeks (2nd trimester)",     "BP, weight, Hb, anomaly scan (18-20 wks), TT injection"],
    ["3rd ANC Visit", "28-34 weeks",                     "Lie and presentation of fetus, BP, urine protein, GDM screening"],
    ["4th ANC Visit", "36 weeks onwards",                "Birth plan, danger signs, breastfeeding counseling, hospital bag"],
]
story.append(three_col_table(["Visit", "When", "Key Activities"], anc[1:],
    col_widths=[inner_w*0.20, inner_w*0.30, inner_w*0.50], hdr_color=colors.HexColor("#884EA0")))
story.append(sp(8))

story.append(Paragraph("Danger Signs in Pregnancy (MUST KNOW)", section_hd))
story.append(HR())
story.append(info_box("๐Ÿšจ Refer immediately if patient has:\nโ€ข Severe headache or blurred vision (Pre-eclampsia)\nโ€ข Excessive swelling of face, hands, feet\nโ€ข Heavy vaginal bleeding (Antepartum Haemorrhage)\nโ€ข Reduced fetal movements\nโ€ข High fever with rigors\nโ€ข Convulsions (Eclampsia)\nโ€ข Premature rupture of membranes (PROM)", LIGHT_RED, RED))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 6: PEDIATRIC โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 6: Pediatric Nursing", "Child health, growth and development", TEAL))
story.append(sp(10))

story.append(Paragraph("Growth and Development Milestones", section_hd))
story.append(HR())
milestones = [
    ["Age",        "Motor Skills",           "Language/Social"],
    ["1 month",    "Lifts chin when prone",  "Responds to sound, cries"],
    ["3 months",   "Holds head up, follows objects", "Cooing, social smile"],
    ["6 months",   "Sits with support, rolls over", "Babbles, laughs"],
    ["9 months",   "Sits without support, crawls", "Mama/Dada (non-specific)"],
    ["12 months",  "Stands, cruises, first steps", "1-3 words with meaning"],
    ["18 months",  "Walks alone, climbs stairs", "10-20 words, points"],
    ["2 years",    "Runs, kicks ball",        "2-word sentences, 50+ words"],
    ["3 years",    "Rides tricycle, draws circle", "Tells name/age, 3-word sentences"],
    ["5 years",    "Skips, ties shoes",       "Full sentences, reads simple words"],
]
story.append(three_col_table(["Age", "Motor Skills", "Language/Social"], milestones[1:],
    col_widths=[inner_w*0.18, inner_w*0.42, inner_w*0.40], hdr_color=TEAL))
story.append(sp(8))

story.append(Paragraph("Pediatric Normal Values", section_hd))
story.append(HR())
ped_vals = [
    ["Parameter", "Newborn", "1 Year", "5 Years"],
    ["Heart Rate (bpm)",   "120-160", "80-130", "70-110"],
    ["RR (breaths/min)",   "30-60",   "20-40",  "20-30"],
    ["BP (mmHg)",          "60-90/30-60", "80-100/50-70", "90-110/55-75"],
    ["Temperature (ยฐC)",   "36.5-37.5", "36.5-37.5", "36.5-37.5"],
    ["Weight (approx kg)", "2.5-4.0", "~10", "~18-20"],
]
ww = [inner_w*0.30, inner_w*0.18, inner_w*0.18, inner_w*0.18]
# use manual table
pdata = [[Paragraph(h, table_hd) for h in ["Parameter","Newborn","1 Year","5 Years"]]]
for row in ped_vals[1:]:
    pdata.append([Paragraph(c, table_cell) for c in row])
pt = Table(pdata, colWidths=ww, repeatRows=1)
pt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  TEAL),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_TEAL]),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(pt)
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 7: MENTAL HEALTH โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 7: Mental Health Nursing", "Psychiatric disorders and therapeutic communication", PURPLE))
story.append(sp(10))

story.append(Paragraph("Common Psychiatric Disorders - Quick Reference", section_hd))
story.append(HR())
mental = [
    ["Disorder", "Key Features", "Nursing Intervention"],
    ["Schizophrenia",        "Hallucinations, delusions, flat affect, disorganized thinking", "Antipsychotics (Haloperidol), safe environment, reality orientation"],
    ["Depression (MDD)",     "Persistent sadness, anhedonia, sleep changes, suicidal ideation", "Antidepressants (SSRIs), therapeutic relationship, suicide precautions"],
    ["Bipolar Disorder",     "Manic episodes (grandiosity, decreased sleep) + depression", "Mood stabilizers (Lithium), monitor lithium levels, safety"],
    ["Anxiety Disorder",     "Excessive worry, palpitations, sweating, restlessness", "Anxiolytics (short-term), relaxation techniques, CBT support"],
    ["OCD",                  "Obsessions + compulsions, significant distress", "SSRIs, response prevention, non-judgmental approach"],
    ["PTSD",                 "Flashbacks, nightmares, hypervigilance after trauma", "Safe environment, trauma-informed care, counseling"],
    ["Dementia (Alzheimer)", "Memory loss, confusion, disorientation, personality change", "Reality orientation, safe environment, caregiver education"],
]
story.append(three_col_table(["Disorder", "Key Features", "Nursing Intervention"], mental[1:],
    col_widths=[inner_w*0.22, inner_w*0.40, inner_w*0.38], hdr_color=PURPLE))
story.append(sp(8))

story.append(Paragraph("Therapeutic Communication Techniques", section_hd))
story.append(HR())
comm = [
    ["Technique", "Example"],
    ["Active Listening",      "Maintain eye contact, nod, don't interrupt"],
    ["Open-ended Questions",  "'Tell me how you're feeling today?'"],
    ["Reflection",            "'You seem sad when you talk about your family.'"],
    ["Clarification",         "'Can you tell me more about what you mean?'"],
    ["Silence",               "Allow patient time to think and express"],
    ["Empathy",               "'I understand that must be very difficult for you.'"],
    ["Avoid giving advice",   "Don't say 'You should...' - let patient decide"],
    ["Avoid false reassurance","Don't say 'Everything will be fine' - be honest"],
]
story.append(two_col_table(["Technique", "Example"], comm[1:],
    col_widths=[inner_w*0.35, inner_w*0.65], hdr_color=PURPLE))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 8: CAREER ROADMAP โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 8: Career Roadmap After GNM", "Your complete guide to career growth and further education", DARK_BLUE))
story.append(sp(10))

story.append(Paragraph("Career Options After GNM", section_hd))
story.append(HR())
career = [
    ["Option", "Duration", "Eligibility", "Outcome"],
    ["B.Sc Post Basic Nursing", "2 years", "GNM + Registration", "Degree upgrade, better salary, abroad scope"],
    ["Govt Staff Nurse Job",    "Direct",  "GNM + Registration", "AIIMS/ESIC/Railway/Army - โ‚น35-60k/month"],
    ["Abroad Nursing",          "1-2 yr prep", "GNM + B.Sc + IELTS", "UK/Canada/Gulf - โ‚น1.5-6L/month"],
    ["NPCC",                    "2 years", "B.Sc + 2yr ICU exp", "ICU specialist - โ‚น60k-1.5L/month"],
    ["M.Sc Nursing",            "2 years", "B.Sc Nursing",       "Teaching + senior clinical roles"],
    ["BAMS (via NEET)",         "5.5 years","12th PCB + NEET",   "'Dr.' title, own clinic possible"],
    ["BHMS (via NEET)",         "5.5 years","12th PCB + NEET",   "'Dr.' title, Homeopathy practice"],
    ["NIOS 12th PCB โ†’ NEET",    "1+yr",    "Age <25 (General)",  "Gateway to BAMS/BHMS/MBBS"],
]
wc = [inner_w*0.26, inner_w*0.14, inner_w*0.24, inner_w*0.36]
cdata = [[Paragraph(h, table_hd) for h in ["Option","Duration","Eligibility","Outcome"]]]
for row in career[1:]:
    cdata.append([Paragraph(c, table_cell) for c in row])
ct = Table(cdata, colWidths=wc, repeatRows=1)
ct.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  DARK_BLUE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(ct)
story.append(sp(10))

story.append(Paragraph("Salary Growth Chart", section_hd))
story.append(HR())
salary = [
    ["Stage / Qualification",         "Monthly Salary (Approx)"],
    ["GNM - Fresh Graduate",          "โ‚น18,000 - โ‚น25,000"],
    ["GNM - Staff Nurse (Govt)",      "โ‚น35,000 - โ‚น60,000"],
    ["B.Sc Post Basic Nursing",       "โ‚น35,000 - โ‚น70,000"],
    ["NPCC (ICU Specialist)",         "โ‚น60,000 - โ‚น1,50,000"],
    ["M.Sc Nursing",                  "โ‚น80,000 - โ‚น2,00,000"],
    ["Abroad Nursing (Gulf)",         "โ‚น1,50,000 - โ‚น3,00,000"],
    ["Abroad Nursing (USA/UK/Canada)","โ‚น3,00,000 - โ‚น6,00,000+"],
    ["BAMS/BHMS Doctor - Own Clinic", "โ‚น50,000 - Unlimited"],
]
story.append(two_col_table(["Stage / Qualification", "Monthly Salary (Approx)"], salary[1:],
    col_widths=[inner_w*0.55, inner_w*0.45], hdr_color=ORANGE))
story.append(sp(10))

story.append(info_box("๐ŸŽฏ Best Path (Arts Stream GNM): GNM โ†’ B.Sc Post Basic Nursing (2yr) โ†’ Govt Job / Abroad Nursing. If age <25 and want 'Doctor' title: NIOS 12th PCB โ†’ NEET โ†’ BAMS (5.5yr)", LIGHT_YELLOW, ORANGE))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ CHAPTER 9: QUICK REVISION โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("Chapter 9: Quick Revision - Must-Know Lists", "Key facts, normal values and mnemonics", RED))
story.append(sp(10))

story.append(Paragraph("Important Normal Values - Master Reference", section_hd))
story.append(HR())
norm_vals = [
    ["Parameter",                "Normal Value",         "Notes"],
    ["Blood Pressure",           "120/80 mmHg",          "HTN: >140/90"],
    ["Heart Rate",               "60-100 bpm",           "Brady <60, Tachy >100"],
    ["Respiratory Rate",         "12-20/min",            "Tachypnea >24/min"],
    ["Temperature",              "36.5-37.5ยฐC",          "Fever >38ยฐC"],
    ["SpO2",                     "95-100%",              "Give O2 if <95%"],
    ["Fasting Blood Sugar",      "70-100 mg/dL",         "DM if >126 mg/dL"],
    ["Hb (Male)",                "13.5-17.5 g/dL",       "Anemia if <13.5"],
    ["Hb (Female)",              "12.0-15.5 g/dL",       "Anemia if <12.0"],
    ["WBC Count",                "4,000-11,000/ยตL",      "Infection >11,000"],
    ["Platelet Count",           "1.5-4.5 lakh/ยตL",      "Thrombocytopenia <1.5L"],
    ["Serum Sodium (Na+)",       "135-145 mEq/L",        "Hyponatremia <135"],
    ["Serum Potassium (K+)",     "3.5-5.0 mEq/L",        "Hypokalemia <3.5, Hyperkalemia >5.0"],
    ["Serum Creatinine",         "0.6-1.2 mg/dL",        "Raised in kidney disease"],
    ["Urine Output",             ">0.5 mL/kg/hr",        "Oliguria <400mL/day"],
    ["INR (Warfarin patients)",  "2.0-3.0 (therapeutic)","Bleeding risk if >3.0"],
    ["pH (Arterial blood)",      "7.35-7.45",            "Acidosis <7.35, Alkalosis >7.45"],
]
story.append(three_col_table(["Parameter", "Normal Value", "Notes"], norm_vals[1:],
    col_widths=[inner_w*0.35, inner_w*0.28, inner_w*0.37], hdr_color=RED))
story.append(sp(8))

story.append(Paragraph("Key Mnemonics", section_hd))
story.append(HR())
mnemonics = [
    ["Mnemonic", "Full Form", "Topic"],
    ["SAMPLE",     "Symptoms, Allergies, Medications, Past history, Last meal, Events", "History taking"],
    ["ABCDE",      "Airway, Breathing, Circulation, Disability, Exposure", "Emergency assessment"],
    ["5 Rights",   "Right Patient, Drug, Dose, Route, Time", "Drug administration"],
    ["APGAR",      "Appearance, Pulse, Grimace, Activity, Respiration", "Newborn assessment (0-10 score)"],
    ["RICE",       "Rest, Ice, Compression, Elevation", "Musculoskeletal injury"],
    ["SOCRATES",   "Site, Onset, Character, Radiation, Alleviating, Timing, Exacerbating, Severity", "Pain assessment"],
    ["SMART Goals","Specific, Measurable, Achievable, Realistic, Time-bound", "Nursing care plan"],
    ["OLDCARTS",   "Onset, Location, Duration, Character, Aggravating, Relieving, Timing, Severity", "Symptom assessment"],
]
story.append(three_col_table(["Mnemonic", "Full Form / Meaning", "Used In"], mnemonics[1:],
    col_widths=[inner_w*0.14, inner_w*0.57, inner_w*0.29], hdr_color=RED))
story.append(PageBreak())

# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ FINAL PAGE: MOTIVATIONAL โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(chapter_header("You've Got This! ๐Ÿ’ช", "Final words before your exam", TEAL))
story.append(sp(20))

motivation = [
    "โœ… Study 2 hours daily - consistency is key",
    "โœ… Use the ABCDE format for every drug",
    "โœ… Learn normal values by heart",
    "โœ… Practice previous year questions daily",
    "โœ… Make short notes and flashcards",
    "โœ… Sleep 7-8 hours - memory consolidates during sleep",
    "โœ… Take 10 min breaks every hour",
    "โœ… Believe in yourself - you have already completed GNM clinical practice!",
]
for m in motivation:
    story.append(B(m))
    story.append(sp(4))

story.append(sp(20))
story.append(info_box(
    "\"The secret of getting ahead is getting started.\"\n\n"
    "Aap GNM complete kar chuke ho - sabse mushkil kaam ho gaya. "
    "Ab sirf revision aur focus chahiye. Aap kar sakte ho! ๐ŸŒŸ",
    LIGHT_TEAL, TEAL))
story.append(sp(20))
story.append(Paragraph("All the best for your exams and career! ๐ŸŽ“", section_hd))
story.append(sp(6))
story.append(Paragraph("Orris Nursing Excellence Series | GNM Revision Study Guide | 2026",
                        S("Footer2", fontSize=9, textColor=MID_GRAY, alignment=TA_CENTER,
                          fontName="Helvetica-Oblique")))

# โ”€โ”€ Build โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/gnm-study-guide && python create_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/gnm-study-guide/GNM_Revision_Study_Guide.pdf

Aapka GNM Revision Study Guide PDF ready hai! ๐ŸŽ‰

GNM Revision Study Guide

PDF Document ยท PDF


๐Ÿ“˜ PDF Mein Kya Kya Hai:

ChapterContent
How to Use3R Method, Daily timetable, Smart techniques
Ch 1 - Anatomy & PhysiologyBody systems table, Heart facts, Respiratory values
Ch 2 - Medical-Surgical8 common diseases, Vital signs reference
Ch 3 - PharmacologyABCDE drug method, 12 drug groups with nursing points
Ch 4 - Community Health10 national programs, Full immunization schedule
Ch 5 - OBG NursingStages of labour, ANC schedule, Danger signs
Ch 6 - Pediatric NursingGrowth milestones, Normal values by age
Ch 7 - Mental Health7 disorders, Therapeutic communication
Ch 8 - Career RoadmapAll options after GNM + Salary chart
Ch 9 - Quick Revision17 normal values, 8 key mnemonics

Download karein aur apni revision shuru karein! All the best! ๐Ÿ’ช๐ŸŽ“

Start with one chapter today and follow the daily timetable

Bahut achha decision! Aaj se shuru karte hain. Aaj Tuesday hai - perfect time to start!

๐Ÿ“… AAJ KA PLAN - Tuesday, July 21


๐ŸŒ… MORNING SESSION โ€” 6:00 - 8:00 AM

Chapter 1: Anatomy & Physiology
Aaj sirf Cardiovascular System padho:
โœ… Heart ki structure (4 chambers, 4 valves)
โœ… Blood flow: Right side โ†’ Lungs โ†’ Left side โ†’ Body
โœ… Normal values: BP, HR, Cardiac Output
โœ… SA Node, AV Node, Bundle of His
โœ… ECG waves: P, QRS, T - kya represent karte hain
๐Ÿ“– PDF ka Chapter 1 kholo - Heart section padho. Book band karo, 5 points likhะพ.

โ˜€๏ธ AFTERNOON SESSION โ€” 2:00 - 4:00 PM

Revision + Notes
โœ… Subah jo padha usse bina dekhe likhะพ
โœ… Ek simple heart diagram banao (copy mat karo - khud banao)
โœ… Compare karo PDF se - gap fill karo
โœ… 5 flashcard banao:
   - Q: Normal HR kya hai? โ†’ A: 60-100 bpm
   - Q: Heart ke kitne chambers? โ†’ A: 4
   - Q: SA Node kya hai? โ†’ A: Natural pacemaker
   - Q: Normal BP? โ†’ A: 120/80 mmHg
   - Q: Cardiac Output? โ†’ A: ~5 L/min

๐ŸŒ™ EVENING SESSION โ€” 7:00 - 9:00 PM

Questions Practice
Try to answer these without looking:
  1. Heart mein blood flow ka order kya hai?
  2. Normal Cardiac Output kitna hota hai?
  3. Systole aur Diastole mein kya difference hai?
  4. Tricuspid valve kahan hota hai?
  5. SA node ki normal rate kya hai?

๐ŸŒ› SONE SE PEHLE โ€” 5 min

Aankhein band karo aur mentally repeat karo:
"4 chambers... 4 valves... SA node... 60-100 bpm... 120/80..."

๐Ÿ“† POORE HAFTE KA PLAN

DinMorning TopicRevision
Aaj - TueCh 1 - CVS (Heart)Afternoon
WedCh 1 - Respiratory SystemCVS + Respiratory
ThuCh 2 - Med-Surg (MI, DM)All previous
FriCh 3 - Pharmacology basicsThu revision
SatCh 4 - Community HealthPoore hafte ka
SunโŒ No new topicPoora hafte revision only

โฐ ABHI KA TIME - 9:21 AM

Morning session time nikal gaya - koi baat nahi! Abhi aap afternoon session ke liye taiyar ho.
Aaj ke liye adjusted plan:
Abhi (9:30 AM - 11:30 AM)  โ†’ Heart chapter padho (PDF Chapter 1)
2:00 - 3:00 PM              โ†’ Notes + Diagram banao
7:00 - 9:00 PM              โ†’ 5 questions practice karo
Sone se pehle               โ†’ 5 min mental recap

๐Ÿ’ก Ek kaam abhi karo: PDF kholo, Chapter 1 ka Heart section padho - sirf 30 min. Bas itna kaafi hai aaj ke liye shuru karne ke liye! ๐Ÿš€
Kal subah fresh mind se full timetable follow karna shuru kar sakte ho. All the best! ๐Ÿ’ช

Anatomy chapter 1 pdf

Writing File

~/gnm-study-guide/create_anatomy_ch1.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch, cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.pdfgen import canvas as pdfcanvas

OUTPUT = "/tmp/workspace/gnm-study-guide/GNM_Anatomy_Chapter1_CVS.pdf"

# โ”€โ”€ Colors โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
DARK_RED    = colors.HexColor("#922B21")
MED_RED     = colors.HexColor("#E74C3C")
LIGHT_RED   = colors.HexColor("#FADBD8")
DARK_BLUE   = colors.HexColor("#1A3A5C")
MED_BLUE    = colors.HexColor("#2E86AB")
LIGHT_BLUE  = colors.HexColor("#D6EAF8")
TEAL        = colors.HexColor("#17A589")
LIGHT_TEAL  = colors.HexColor("#D1F2EB")
ORANGE      = colors.HexColor("#E67E22")
LIGHT_ORANGE= colors.HexColor("#FDEBD0")
PURPLE      = colors.HexColor("#7D3C98")
LIGHT_PURPLE= colors.HexColor("#E8DAEF")
GOLD        = colors.HexColor("#D4AC0D")
LIGHT_GOLD  = colors.HexColor("#FEF9E7")
WHITE       = colors.white
LIGHT_GRAY  = colors.HexColor("#F2F3F4")
MID_GRAY    = colors.HexColor("#BDC3C7")
DARK_GRAY   = colors.HexColor("#2C3E50")

# โ”€โ”€ Styles โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def S(name, **kw):
    return ParagraphStyle(name, **kw)

cover_title = S("CT", fontSize=36, textColor=WHITE, alignment=TA_CENTER,
                fontName="Helvetica-Bold", leading=44)
cover_sub   = S("CS", fontSize=15, textColor=colors.HexColor("#AED6F1"),
                alignment=TA_CENTER, fontName="Helvetica", leading=22)
cover_note  = S("CN", fontSize=11, textColor=colors.HexColor("#D5D8DC"),
                alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=16)
ch_title    = S("ChT", fontSize=18, textColor=WHITE, fontName="Helvetica-Bold", leading=24)
sec_hd      = S("SH",  fontSize=13, textColor=DARK_RED, fontName="Helvetica-Bold",
                spaceBefore=10, spaceAfter=4)
sub_hd      = S("SSH", fontSize=11, textColor=DARK_BLUE, fontName="Helvetica-Bold",
                spaceBefore=6, spaceAfter=3)
body        = S("B",   fontSize=10, textColor=DARK_GRAY, fontName="Helvetica",
                leading=15, spaceAfter=3)
bullet_s    = S("BL",  fontSize=10, textColor=DARK_GRAY, fontName="Helvetica",
                leading=15, leftIndent=14, spaceAfter=2)
tip_s       = S("TIP", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica",
                leading=14, leftIndent=8, spaceAfter=2)
table_hd    = S("TH",  fontSize=9,  textColor=WHITE, fontName="Helvetica-Bold",
                alignment=TA_CENTER, leading=12)
table_cell  = S("TC",  fontSize=9,  textColor=DARK_GRAY, fontName="Helvetica",
                alignment=TA_LEFT, leading=12)
table_cell_c= S("TCC", fontSize=9,  textColor=DARK_GRAY, fontName="Helvetica",
                alignment=TA_CENTER, leading=12)
bold_body   = S("BB",  fontSize=10, textColor=DARK_GRAY, fontName="Helvetica-Bold",
                leading=15, spaceAfter=3)
red_bold    = S("RB",  fontSize=10, textColor=DARK_RED, fontName="Helvetica-Bold",
                leading=15, spaceAfter=3)
small_s     = S("SM",  fontSize=8,  textColor=MID_GRAY, fontName="Helvetica",
                alignment=TA_CENTER, leading=11)
q_style     = S("QS",  fontSize=10, textColor=DARK_BLUE, fontName="Helvetica-Bold",
                leading=15, leftIndent=6, spaceAfter=2)
a_style     = S("AS",  fontSize=10, textColor=colors.HexColor("#1A5276"),
                fontName="Helvetica", leading=14, leftIndent=20, spaceAfter=4)

# โ”€โ”€ Page callbacks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def cover_bg(canv, doc):
    w, h = A4
    canv.setFillColor(DARK_RED)
    canv.rect(0, 0, w, h, fill=1, stroke=0)
    canv.setFillColor(MED_RED)
    canv.rect(0, h*0.56, w, h*0.44, fill=1, stroke=0)
    canv.setFillColor(GOLD)
    canv.rect(0, h*0.555, w, 6, fill=1, stroke=0)
    canv.setFillColor(WHITE)
    canv.rect(0, h*0.555-9, w, 3, fill=1, stroke=0)
    # decorative heart symbol area
    canv.setFillColor(colors.HexColor("#922B21"))
    canv.rect(0, 0, w, h*0.15, fill=1, stroke=0)

def normal_page(canv, doc):
    w, h = A4
    canv.setFillColor(DARK_RED)
    canv.rect(0, h-36, w, 36, fill=1, stroke=0)
    canv.setFont("Helvetica-Bold", 9)
    canv.setFillColor(WHITE)
    canv.drawString(1.5*cm, h-24, "GNM Anatomy | Chapter 1: Cardiovascular System")
    canv.drawRightString(w-1.5*cm, h-24, "Nursing Excellence Series")
    # bottom
    canv.setFillColor(DARK_RED)
    canv.rect(0, 0, w, 28, fill=1, stroke=0)
    canv.setFont("Helvetica", 8)
    canv.setFillColor(colors.HexColor("#AED6F1"))
    canv.drawCentredString(w/2, 9, f"Page {doc.page}")
    # left accent
    canv.setFillColor(GOLD)
    canv.rect(0, 28, 4, h-64, fill=1, stroke=0)

# โ”€โ”€ Helpers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
w_page, _ = A4
inner_w = w_page - 3.5*cm

def ch_header(title, subtitle="", color=MED_RED):
    tbl = Table([[Paragraph(title, ch_title)],
                 [Paragraph(subtitle, S("CSub", fontSize=10, textColor=colors.HexColor("#FDEBD0"),
                                        fontName="Helvetica-Oblique", leading=14))]],
                colWidths=[inner_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), color),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 14),
    ]))
    return tbl

def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE, fs=10):
    tbl = Table([[Paragraph(text, S("IB", fontSize=fs, textColor=DARK_GRAY,
                                     fontName="Helvetica", leading=15,
                                     leftIndent=6))]], colWidths=[inner_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",  (0,0), (-1,-1), bg),
        ("LINERIGHT",   (0,0), (-1,-1), 5, border),
        ("TOPPADDING",  (0,0), (-1,-1), 8),
        ("BOTTOMPADDING",(0,0),(-1,-1), 8),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
    ]))
    return tbl

def warn_box(text):
    return info_box(text, bg=LIGHT_RED, border=MED_RED)

def tip_box(text):
    return info_box(text, bg=LIGHT_GOLD, border=GOLD)

def mk_table(headers, rows, col_widths, hdr_color=MED_RED, alt=LIGHT_RED):
    data = [[Paragraph(h, table_hd) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), table_cell) for c in row])
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  hdr_color),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt]),
        ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    return tbl

def mk_table_c(headers, rows, col_widths, hdr_color=MED_RED, alt=LIGHT_RED):
    data = [[Paragraph(h, table_hd) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c), table_cell_c) for c in row])
    tbl = Table(data, colWidths=col_widths, repeatRows=1)
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0),  hdr_color),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt]),
        ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    return tbl

def B(text, color=DARK_GRAY):
    return Paragraph(f"<font color='#{MED_RED.hexval()[2:]}'>&#9829;</font>  {text}",
                     S(f"BL{id(text)}", fontSize=10, textColor=color,
                       fontName="Helvetica", leading=15, leftIndent=16, spaceAfter=3))

def Bblue(text):
    return Paragraph(f"\u2022  {text}", S(f"BLB{id(text)}", fontSize=10, textColor=DARK_GRAY,
                       fontName="Helvetica", leading=15, leftIndent=16, spaceAfter=3))

def sp(n=6): return Spacer(1, n)
def HR(): return HRFlowable(width="100%", thickness=1, color=colors.HexColor("#E8DAEF"),
                             spaceAfter=4, spaceBefore=4)

def box_diagram(lines, title="", bg=LIGHT_BLUE, border=MED_BLUE):
    """Render a text diagram in a monospace-style box."""
    content = []
    if title:
        content.append(Paragraph(f"<b>{title}</b>", S("DT", fontSize=10, textColor=border,
                                                        fontName="Helvetica-Bold", leading=14,
                                                        spaceAfter=4)))
    for line in lines:
        content.append(Paragraph(line, S("DL", fontSize=9, textColor=DARK_GRAY,
                                          fontName="Courier", leading=13)))
    tbl = Table([[content]], colWidths=[inner_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), bg),
        ("LINEBEFORE",    (0,0), (-1,-1), 4, border),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 12),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ]))
    return tbl

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# BUILD
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
doc = BaseDocTemplate(
    OUTPUT, pagesize=A4,
    leftMargin=1.8*cm, rightMargin=1.2*cm,
    topMargin=1.5*cm,  bottomMargin=1.2*cm,
    title="GNM Anatomy Chapter 1 - Cardiovascular System",
    author="Orris Nursing Series"
)
cover_frame  = Frame(0, 0, A4[0], A4[1], leftPadding=2*cm, rightPadding=1.5*cm,
                     topPadding=2*cm, bottomPadding=1.5*cm, id="cover")
normal_frame = Frame(0.5*cm, 1.0*cm, A4[0]-1.7*cm, A4[1]-2.8*cm,
                     leftPadding=1.0*cm, rightPadding=0.5*cm,
                     topPadding=0.3*cm, bottomPadding=0.3*cm, id="normal")
doc.addPageTemplates([
    PageTemplate(id="Cover",  frames=[cover_frame],  onPage=cover_bg),
    PageTemplate(id="Normal", frames=[normal_frame], onPage=normal_page),
])

story = []

# โ”€โ”€ COVER โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
story.append(Spacer(1, 2.5*cm))
story.append(Paragraph("โ™ฅ GNM Anatomy", cover_title))
story.append(sp(6))
story.append(Paragraph("Chapter 1", cover_title))
story.append(sp(10))
story.append(Paragraph("Cardiovascular System", cover_sub))
story.append(sp(6))
story.append(Paragraph("Heart โ€ข Blood Vessels โ€ข Circulation โ€ข ECG โ€ข Nursing Values", cover_sub))
story.append(sp(1.2*cm))
story.append(Paragraph("โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€", cover_note))
story.append(sp(6))
story.append(Paragraph("Complete theory with diagrams, tables, mnemonics", cover_note))
story.append(Paragraph("and self-test questions for GNM exam preparation", cover_note))
story.append(sp(1.5*cm))
story.append(Paragraph("Orris Nursing Excellence Series  |  2026", cover_note))

from reportlab.platypus import NextPageTemplate
story.append(NextPageTemplate("Normal"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 1: INTRODUCTION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.1  Introduction to Cardiovascular System",
                        "Overview, components and functions"))
story.append(sp(10))
story.append(Paragraph("What is the Cardiovascular System?", sec_hd))
story.append(HR())
story.append(Paragraph(
    "The Cardiovascular System (CVS) is the transport system of the body. "
    "It consists of the <b>heart</b>, <b>blood vessels</b>, and <b>blood</b>. "
    "Its main job is to deliver oxygen and nutrients to every cell and remove "
    "carbon dioxide and waste products.", body))
story.append(sp(6))

story.append(Paragraph("Three Main Components", sec_hd))
story.append(HR())
comps = [
    ["Component", "Parts", "Function"],
    ["โค๏ธ  Heart",          "4 chambers, 4 valves, wall layers",
     "Pump that pushes blood through the body (like an engine)"],
    ["๐Ÿฉธ  Blood Vessels",  "Arteries, Veins, Capillaries",
     "Pipes that carry blood to and from all organs"],
    ["๐Ÿ’‰  Blood",          "RBC, WBC, Platelets, Plasma",
     "Fluid that carries O2, nutrients, hormones, waste"],
]
story.append(mk_table(["Component", "Parts", "Function"], comps[1:],
    [inner_w*0.20, inner_w*0.32, inner_w*0.48], hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(sp(8))

story.append(info_box(
    "๐Ÿ’ก Easy Yaad Karne Ka Trick:\n"
    "CVS = C (circulation) + V (vessels) + S (supply)\n"
    "Heart = Body ka PUMP | Arteries = Body se Door jaana | Veins = Heart ki taraf Aana",
    LIGHT_GOLD, GOLD))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 2: HEART ANATOMY
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.2  Heart - Detailed Anatomy",
                        "Structure, chambers, valves and layers"))
story.append(sp(10))

story.append(Paragraph("Location and Size", sec_hd))
story.append(HR())
story.append(B("Location: Mediastinum (middle of chest), slightly LEFT of midline"))
story.append(B("Size: Approximately your own closed FIST"))
story.append(B("Weight: ~250-350 grams (adult)"))
story.append(B("Apex (tip): Points downward and to the LEFT (5th intercostal space, midclavicular line)"))
story.append(B("Base: Upper part, connected to great vessels"))
story.append(sp(8))

story.append(Paragraph("Layers of Heart Wall (3 Layers - BAD to EPI)", sec_hd))
story.append(HR())
layers = [
    ["Layer", "Location", "Description", "Mnemonic"],
    ["Epicardium",  "Outermost", "Thin outer covering, also called visceral pericardium", "EPI = Outside (Epidermis jaisi)"],
    ["Myocardium",  "Middle",    "Thick muscular layer - does the actual pumping (cardiac muscle)", "MYO = Muscle (Myalgia = muscle pain)"],
    ["Endocardium", "Innermost", "Smooth inner lining of heart chambers and valves", "ENDO = Inside (Endoscopy = inside)"],
]
story.append(mk_table(["Layer", "Location", "Description", "Mnemonic"], layers[1:],
    [inner_w*0.18, inner_w*0.14, inner_w*0.40, inner_w*0.28], hdr_color=DARK_RED))
story.append(sp(6))
story.append(info_box("๐Ÿ“ Pericardium = Protective sac surrounding the heart (2 layers: fibrous outer + serous inner). "
                       "Pericardial fluid between layers prevents friction during heartbeat.", LIGHT_BLUE, MED_BLUE))
story.append(sp(10))

story.append(Paragraph("Four Chambers of the Heart", sec_hd))
story.append(HR())
chambers = [
    ["Chamber", "Side", "Receives Blood From", "Sends Blood To", "Wall Thickness"],
    ["Right Atrium (RA)",    "Right", "Superior & Inferior Vena Cava (whole body)", "Right Ventricle via Tricuspid valve", "Thin"],
    ["Right Ventricle (RV)", "Right", "Right Atrium", "Lungs via Pulmonary artery", "Moderate"],
    ["Left Atrium (LA)",     "Left",  "Pulmonary veins (4 veins from lungs)", "Left Ventricle via Mitral valve", "Thin"],
    ["Left Ventricle (LV)",  "Left",  "Left Atrium", "Whole body via Aorta", "THICKEST (most work)"],
]
story.append(mk_table(
    ["Chamber", "Side", "Receives From", "Sends To", "Wall"],
    [[r[0],r[1],r[2],r[3],r[4]] for r in chambers[1:]],
    [inner_w*0.20, inner_w*0.10, inner_w*0.27, inner_w*0.27, inner_w*0.16],
    hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(sp(6))
story.append(tip_box("๐Ÿ”‘ Key: Left Ventricle has the THICKEST wall because it pumps blood to the ENTIRE body (highest pressure needed)."))
story.append(sp(10))

story.append(Paragraph("Four Valves of the Heart", sec_hd))
story.append(HR())
story.append(Paragraph("Valves prevent backflow of blood - they act like one-way doors.", body))
story.append(sp(4))
valves = [
    ["Valve Name",    "Location",              "Type",          "Opens When"],
    ["Tricuspid",     "Between RA and RV",      "AV valve (3 cusps)", "RA contracts โ†’ blood enters RV"],
    ["Pulmonary",     "RV to Pulmonary artery", "Semilunar valve",    "RV contracts โ†’ blood goes to lungs"],
    ["Mitral (Bicuspid)", "Between LA and LV",  "AV valve (2 cusps)", "LA contracts โ†’ blood enters LV"],
    ["Aortic",        "LV to Aorta",            "Semilunar valve",    "LV contracts โ†’ blood goes to body"],
]
story.append(mk_table(["Valve", "Location", "Type", "Opens When"], valves[1:],
    [inner_w*0.18, inner_w*0.27, inner_w*0.20, inner_w*0.35], hdr_color=PURPLE, alt=LIGHT_PURPLE))
story.append(sp(6))
story.append(info_box(
    "๐Ÿ”ค MNEMONIC for valves (Right to Left, top to bottom):\n"
    "\"Tri  Pul  Mi  Ao\" โ†’ \"Tigers Prefer Milk Always\"\n"
    "T = Tricuspid  |  P = Pulmonary  |  M = Mitral  |  A = Aortic",
    LIGHT_PURPLE, PURPLE))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 3: BLOOD FLOW
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.3  Blood Circulation",
                        "Pulmonary and systemic circuits"))
story.append(sp(10))

story.append(Paragraph("Two Circuits of Circulation", sec_hd))
story.append(HR())
circuits = [
    ["Circuit",          "Path",                                         "Purpose"],
    ["Pulmonary\n(Small circulation)", "Right heart โ†’ Lungs โ†’ Left heart",
     "Oxygenate blood (CO2 out, O2 in) at the lungs"],
    ["Systemic\n(Large circulation)",  "Left heart โ†’ Whole body โ†’ Right heart",
     "Deliver O2 + nutrients to all body tissues"],
]
story.append(mk_table(["Circuit", "Path", "Purpose"], circuits[1:],
    [inner_w*0.20, inner_w*0.38, inner_w*0.42], hdr_color=TEAL, alt=LIGHT_TEAL))
story.append(sp(10))

story.append(Paragraph("Complete Blood Flow - Step by Step", sec_hd))
story.append(HR())
story.append(box_diagram([
    "BODY TISSUES (deoxygenated blood)",
    "        |",
    "        v",
    "Superior Vena Cava + Inferior Vena Cava",
    "        |",
    "        v",
    "RIGHT ATRIUM  -->  Tricuspid Valve  -->  RIGHT VENTRICLE",
    "        |",
    "        v  (Pulmonary Valve)",
    "PULMONARY ARTERY  -->  LUNGS  (CO2 out, O2 in)",
    "        |",
    "        v",
    "PULMONARY VEINS (4 veins)",
    "        |",
    "        v",
    "LEFT ATRIUM  -->  Mitral Valve  -->  LEFT VENTRICLE",
    "        |",
    "        v  (Aortic Valve)",
    "AORTA  -->  BODY TISSUES  (O2 delivered)",
], title="Complete Blood Flow Diagram", bg=LIGHT_BLUE, border=MED_BLUE))
story.append(sp(8))

story.append(tip_box(
    "โš ๏ธ Important: Pulmonary ARTERY carries DE-oxygenated blood (Right heart to lungs)\n"
    "Pulmonary VEIN carries OXYGENATED blood (Lungs to Left heart)\n"
    "This is the ONLY exception to the rule: Arteries = oxygenated, Veins = deoxygenated"))
story.append(sp(10))

story.append(Paragraph("Types of Blood Vessels", sec_hd))
story.append(HR())
vessels = [
    ["Vessel", "Direction", "Wall", "Examples", "Key Feature"],
    ["Arteries",    "Away from heart", "Thick, muscular, elastic",  "Aorta, Coronary, Pulmonary artery", "High pressure, pulse felt"],
    ["Arterioles",  "Away from heart", "Thin muscular",             "Smaller branches of arteries",       "Controls blood pressure"],
    ["Capillaries", "Both directions", "Single cell layer (thinnest)", "Tissue capillaries",              "Gas/nutrient exchange occurs here"],
    ["Venules",     "Toward heart",    "Thin",                      "Collecting small veins",             "Low pressure"],
    ["Veins",       "Toward heart",    "Thin, valves present",      "Vena cava, Jugular, Portal",         "Valves prevent backflow"],
]
story.append(mk_table(["Vessel","Direction","Wall","Examples","Key Feature"], vessels[1:],
    [inner_w*0.14, inner_w*0.18, inner_w*0.20, inner_w*0.24, inner_w*0.24],
    hdr_color=MED_BLUE, alt=LIGHT_BLUE))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 4: CARDIAC CYCLE & CONDUCTION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.4  Cardiac Cycle & Conduction System",
                        "How the heart beats - electrical system"))
story.append(sp(10))

story.append(Paragraph("Cardiac Cycle - Systole and Diastole", sec_hd))
story.append(HR())
cycle = [
    ["Phase",    "What Happens",                         "Duration"],
    ["Systole",  "Ventricles CONTRACT - blood pumped out",  "~0.3 seconds"],
    ["Diastole", "Ventricles RELAX - heart fills with blood","~0.5 seconds"],
    ["Full Cycle","One complete heartbeat",               "~0.8 seconds (75 bpm)"],
]
story.append(mk_table(["Phase","What Happens","Duration"], cycle[1:],
    [inner_w*0.18, inner_w*0.58, inner_w*0.24], hdr_color=DARK_RED))
story.append(sp(6))
story.append(info_box(
    "๐Ÿฉบ Korotkoff sounds heard with stethoscope during BP measurement:\n"
    "โ€ข First sound (systolic BP) = ventricle contracting\n"
    "โ€ข Last sound (diastolic BP) = ventricle relaxing\n"
    "Lub-Dub = S1 (Mitral + Tricuspid closing) and S2 (Aortic + Pulmonary closing)",
    LIGHT_RED, MED_RED))
story.append(sp(10))

story.append(Paragraph("Cardiac Conduction System - The Heart's Electrical Circuit", sec_hd))
story.append(HR())
story.append(box_diagram([
    "SA NODE (Sinoatrial Node)",
    "  - Located: Right Atrium wall",
    "  - Called: Natural Pacemaker",
    "  - Rate: 60-100 impulses/min",
    "  - Initiates EVERY heartbeat",
    "        |",
    "        v  (impulse spreads through atria -> atrial contraction)",
    "AV NODE (Atrioventricular Node)",
    "  - Located: Between RA and RV (AV junction)",
    "  - Delays impulse by 0.1 second",
    "  - Reason: Allows ventricles to fill before contracting",
    "        |",
    "        v",
    "BUNDLE OF HIS (AV Bundle)",
    "  - Located: Interventricular septum",
    "  - Divides into Right and Left Bundle Branches",
    "        |",
    "        v",
    "PURKINJE FIBERS",
    "  - Located: Ventricular walls",
    "  - Rapidly spreads impulse -> ventricular contraction",
], title="Conduction Pathway", bg=LIGHT_TEAL, border=TEAL))
story.append(sp(8))

story.append(Paragraph("Key Normal Values - Conduction", sec_hd))
story.append(HR())
cond_vals = [
    ["Node / Parameter",      "Normal Rate",  "Clinical Note"],
    ["SA Node (Pacemaker)",    "60-100 /min",  "If SA node fails, AV node takes over"],
    ["AV Node (backup)",       "40-60 /min",   "Slower backup - AV block if damaged"],
    ["Ventricular (backup)",   "20-40 /min",   "Last resort pacemaker - very slow"],
    ["PR Interval (ECG)",      "0.12-0.20 sec","Prolonged = AV block"],
    ["QRS Duration (ECG)",     "0.06-0.10 sec","Widened = bundle branch block"],
    ["QT Interval (ECG)",      "0.36-0.44 sec","Prolonged = dangerous arrhythmia risk"],
]
story.append(mk_table(["Node / Parameter","Normal Rate","Clinical Note"], cond_vals[1:],
    [inner_w*0.35, inner_w*0.22, inner_w*0.43], hdr_color=TEAL, alt=LIGHT_TEAL))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 5: ECG
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.5  ECG - Electrocardiogram",
                        "Reading and understanding ECG waves"))
story.append(sp(10))

story.append(Paragraph("ECG Waves - What Each Means", sec_hd))
story.append(HR())
ecg_waves = [
    ["Wave / Segment", "Represents",                             "Normal Duration"],
    ["P Wave",         "Atrial depolarization (atria contracting)", "< 0.12 sec"],
    ["PR Interval",    "Time from atrial to ventricular activation", "0.12-0.20 sec"],
    ["QRS Complex",    "Ventricular depolarization (ventricles contracting)", "0.06-0.10 sec"],
    ["ST Segment",     "Ventricular plateau (between contraction and recovery)", "Isoelectric (flat)"],
    ["T Wave",         "Ventricular repolarization (ventricles recovering)", "0.16 sec"],
    ["QT Interval",    "Total ventricular electrical activity",   "0.36-0.44 sec"],
    ["U Wave",         "Purkinje fiber repolarization (not always seen)", "Small, after T wave"],
]
story.append(mk_table(["Wave/Segment","Represents","Normal Duration"], ecg_waves[1:],
    [inner_w*0.20, inner_w*0.52, inner_w*0.28], hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(sp(8))

story.append(box_diagram([
    "                  R",
    "                  |",
    "                  |",
    "         P        |          T",
    "        /  \\     |         / \\",
    "-------/    \\    |        /   \\----  U",
    "             \\   |       /",
    "              Q--+--S---/",
    "              |     |",
    "    P-R interval   S-T segment",
    "",
    "  P = Atrial contraction",
    "  QRS = Ventricular contraction (largest wave)",
    "  T = Ventricular recovery",
], title="ECG Wave Pattern", bg=LIGHT_BLUE, border=MED_BLUE))
story.append(sp(8))

story.append(warn_box(
    "๐Ÿšจ Critical ECG Changes - Report IMMEDIATELY:\n"
    "โ€ข ST elevation โ†’ Myocardial Infarction (Heart Attack!)\n"
    "โ€ข No P waves + irregular rhythm โ†’ Atrial Fibrillation\n"
    "โ€ข Wide bizarre QRS โ†’ Ventricular Tachycardia (VT)\n"
    "โ€ข No recognizable waves โ†’ Ventricular Fibrillation (VF) = EMERGENCY"))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 6: CARDIAC OUTPUT & BLOOD PRESSURE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.6  Cardiac Output & Blood Pressure",
                        "Important formulas and normal values"))
story.append(sp(10))

story.append(Paragraph("Cardiac Output (CO)", sec_hd))
story.append(HR())
story.append(box_diagram([
    "CARDIAC OUTPUT (CO) = Heart Rate (HR)  x  Stroke Volume (SV)",
    "",
    "  CO   = ~5 Litres/min  (at rest, adult)",
    "  HR   = 70-75 bpm  (resting average)",
    "  SV   = ~70 mL per beat",
    "",
    "  EXAMPLE:  CO = 70 bpm x 70 mL = 4,900 mL โ‰ˆ 5 L/min",
    "",
    "  During exercise: CO can increase to 20-25 L/min!",
], title="Cardiac Output Formula", bg=LIGHT_GOLD, border=GOLD))
story.append(sp(8))

story.append(Paragraph("Factors Affecting Cardiac Output", sec_hd))
story.append(HR())
co_factors = [
    ["Factor",       "Increases CO",                    "Decreases CO"],
    ["Heart Rate",   "Exercise, fever, anxiety, drugs",  "Beta-blockers, sleep, athletes"],
    ["Stroke Volume","Increased venous return, exercise", "Heart failure, hypovolemia"],
    ["Preload",      "More blood returning to heart",    "Dehydration, blood loss"],
    ["Afterload",    "(Decreased afterload = more CO)",  "Hypertension, aortic stenosis"],
    ["Contractility","Catecholamines, digoxin",          "Acidosis, heart failure, beta-blockers"],
]
story.append(mk_table(["Factor","Increases CO","Decreases CO"], co_factors[1:],
    [inner_w*0.20, inner_w*0.40, inner_w*0.40], hdr_color=ORANGE, alt=LIGHT_ORANGE))
story.append(sp(10))

story.append(Paragraph("Blood Pressure (BP)", sec_hd))
story.append(HR())
story.append(box_diagram([
    "BLOOD PRESSURE = Cardiac Output  x  Peripheral Vascular Resistance",
    "",
    "  BP is recorded as:  Systolic / Diastolic",
    "  e.g. 120 / 80 mmHg",
    "",
    "  Systolic  = pressure when ventricle CONTRACTS (top number)",
    "  Diastolic = pressure when ventricle RELAXES  (bottom number)",
    "  Pulse Pressure = Systolic - Diastolic = 120 - 80 = 40 mmHg",
    "  Mean Arterial Pressure (MAP) = Diastolic + 1/3 Pulse Pressure",
    "  Normal MAP = 80 + 1/3(40) = ~93 mmHg",
], title="Blood Pressure Formula", bg=LIGHT_TEAL, border=TEAL))
story.append(sp(8))

story.append(Paragraph("BP Classification (JNC / WHO)", sec_hd))
story.append(HR())
bp_class = [
    ["Category",          "Systolic (mmHg)",  "Diastolic (mmHg)", "Action"],
    ["Normal",            "< 120",            "< 80",             "No action needed"],
    ["Elevated",          "120-129",          "< 80",             "Lifestyle changes"],
    ["HTN Stage 1",       "130-139",          "80-89",            "Lifestyle + consider drug"],
    ["HTN Stage 2",       "โ‰ฅ 140",            "โ‰ฅ 90",             "Drug therapy required"],
    ["Hypertensive Crisis","โ‰ฅ 180",           "โ‰ฅ 120",            "EMERGENCY - immediate Rx"],
    ["Hypotension",       "< 90",             "< 60",             "Monitor, IV fluids, find cause"],
]
story.append(mk_table(["Category","Systolic","Diastolic","Action"], bp_class[1:],
    [inner_w*0.28, inner_w*0.17, inner_w*0.17, inner_w*0.38],
    hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 7: BLOOD
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.7  Blood - Composition and Functions",
                        "Components of blood and normal values"))
story.append(sp(10))

story.append(Paragraph("Blood Composition", sec_hd))
story.append(HR())
blood = [
    ["Component", "% of Blood", "Types / Details",              "Main Function"],
    ["Plasma",    "55%",        "Water (90%), proteins, hormones, nutrients", "Transport medium, clotting factors"],
    ["Red Blood Cells (RBC/Erythrocytes)", "~44%", "No nucleus, contain Haemoglobin (Hb)", "Carry O2 (via Hb) and CO2"],
    ["White Blood Cells (WBC/Leukocytes)", "< 1%", "Neutrophils, Lymphocytes, Monocytes, etc.", "Immunity and defense"],
    ["Platelets (Thrombocytes)",           "< 1%", "Tiny cell fragments, no nucleus", "Blood clotting (haemostasis)"],
]
story.append(mk_table(["Component","% of Blood","Types / Details","Main Function"], blood[1:],
    [inner_w*0.28, inner_w*0.10, inner_w*0.35, inner_w*0.27],
    hdr_color=MED_RED, alt=LIGHT_RED))
story.append(sp(8))

story.append(Paragraph("Normal Blood Values - Master Table", sec_hd))
story.append(HR())
blood_vals = [
    ["Parameter",               "Male",          "Female",        "Clinical Note"],
    ["Haemoglobin (Hb)",        "13.5-17.5 g/dL","12.0-15.5 g/dL","Anemia if below normal"],
    ["RBC Count",               "4.5-5.5 million/ยตL","3.8-4.8 million/ยตL","Polycythemia if high"],
    ["WBC Count",               "4,000-11,000/ยตL","4,000-11,000/ยตL","Leukocytosis if >11,000"],
    ["Platelet Count",          "1.5-4.5 lakh/ยตL","1.5-4.5 lakh/ยตL","Thrombocytopenia if <1 lakh"],
    ["Haematocrit (PCV)",       "40-54%",         "36-48%",         "% of blood that is RBCs"],
    ["MCV (mean cell volume)",  "80-100 fL",      "80-100 fL",      "Low = iron deficiency; High = B12/folate"],
    ["Bleeding Time",           "1-3 minutes",    "1-3 minutes",    "Platelet function test"],
    ["Clotting Time",           "3-8 minutes",    "3-8 minutes",    "Coagulation test"],
    ["ESR",                     "0-15 mm/hr",     "0-20 mm/hr",     "Raised in infection/inflammation"],
    ["Serum Iron",              "60-160 ยตg/dL",   "50-150 ยตg/dL",   "Low in iron deficiency anemia"],
]
story.append(mk_table(["Parameter","Male","Female","Clinical Note"], blood_vals[1:],
    [inner_w*0.32, inner_w*0.17, inner_w*0.17, inner_w*0.34],
    hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(sp(8))

story.append(Paragraph("Blood Groups", sec_hd))
story.append(HR())
bg = [
    ["Blood Group","Antigen on RBC","Antibody in Plasma","Can Donate To","Can Receive From"],
    ["A",   "A antigen",     "Anti-B",         "A, AB",        "A, O"],
    ["B",   "B antigen",     "Anti-A",         "B, AB",        "B, O"],
    ["AB",  "A and B",       "None",           "AB only",      "ALL (Universal Recipient)"],
    ["O",   "None",          "Anti-A and Anti-B","ALL (Universal Donor)", "O only"],
]
story.append(mk_table(["Group","Antigen","Antibody","Donate To","Receive From"], bg[1:],
    [inner_w*0.12, inner_w*0.17, inner_w*0.23, inner_w*0.20, inner_w*0.28],
    hdr_color=PURPLE, alt=LIGHT_PURPLE))
story.append(sp(6))
story.append(info_box("๐Ÿ”‘ Universal Donor = O negative (O-) | Universal Recipient = AB positive (AB+)\n"
                       "Rh factor: Rh+ (has D antigen) more common. Rh- mother + Rh+ baby = Rh incompatibility risk.", LIGHT_BLUE, MED_BLUE))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 8: NURSING CARE & CVS CONDITIONS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.8  Common CVS Conditions & Nursing Care",
                        "Exam-focused nursing management"))
story.append(sp(10))

story.append(Paragraph("Myocardial Infarction (Heart Attack)", sec_hd))
story.append(HR())
story.append(Paragraph("<b>Definition:</b> Death of cardiac muscle due to prolonged ischemia (blocked coronary artery)", body))
story.append(sp(4))
mi = [
    ["Aspect",          "Details"],
    ["Causes",          "Coronary artery blockage (atherosclerosis, thrombus, spasm)"],
    ["Signs & Symptoms","Crushing/squeezing chest pain, radiates to left arm/jaw/shoulder\nDiaphoresis (sweating), nausea, vomiting, dyspnea, anxiety\nPain NOT relieved by rest or nitrates"],
    ["Diagnosis",       "ECG (ST elevation in STEMI), Cardiac enzymes (Troponin, CK-MB, LDH)\nEcho, Coronary Angiography"],
    ["Treatment",       "MONA: Morphine, O2, Nitrates, Aspirin\nThrombolytics (streptokinase), PCI (angioplasty), CABG"],
    ["Nursing Care",    "Bed rest (position: semi-Fowler's)\nContinuous ECG monitoring\nIV access, O2 at 2-4 L/min\nPain assessment (PQRST scale)\n12-lead ECG immediately\nNPO until stable, emotional support"],
    ["Complications",   "Arrhythmia, Heart failure, Cardiogenic shock, Pericarditis, Death"],
]
story.append(mk_table(["Aspect","Details"], mi[1:],
    [inner_w*0.20, inner_w*0.80], hdr_color=DARK_RED))
story.append(sp(8))

story.append(Paragraph("Heart Failure", sec_hd))
story.append(HR())
hf = [
    ["Aspect",          "Left Heart Failure",              "Right Heart Failure"],
    ["Main Problem",    "LV cannot pump โ†’ backs up to lungs","RV cannot pump โ†’ backs up to body"],
    ["Key Symptoms",    "Dyspnea, orthopnea, PND\nPink frothy sputum, crackles","Peripheral oedema (ankle, legs)\nJugular vein distension (JVD)\nHepatomegaly, ascites"],
    ["Nursing Care",    "Fowler's position (upright)\nO2 therapy, diuretics\nFluid restriction, daily weights",
     "Legs elevated, diuretics\nFluid/sodium restriction\nMonitor intake/output"],
]
data = [[Paragraph(h, table_hd) for h in ["Aspect","Left Heart Failure","Right Heart Failure"]]]
for row in hf[1:]:
    data.append([Paragraph(c, table_cell) for c in row])
t = Table(data, colWidths=[inner_w*0.18, inner_w*0.41, inner_w*0.41], repeatRows=1)
t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0),  DARK_RED),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_RED]),
    ("GRID",          (0,0), (-1,-1), 0.5, MID_GRAY),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(t)
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 9: SELF-TEST
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("1.9  Self-Test Questions",
                        "Test yourself before moving on!"))
story.append(sp(10))

story.append(info_box("๐Ÿ“‹ Instructions: Answer all questions WITHOUT looking at notes first. "
                       "Then check your answers below. Score yourself out of 20.", LIGHT_BLUE, MED_BLUE))
story.append(sp(10))

story.append(Paragraph("Section A - Fill in the Blanks", sec_hd))
story.append(HR())
fill = [
    "1. The natural pacemaker of the heart is the ____________.",
    "2. Normal adult heart rate is _______ to _______ bpm.",
    "3. Normal blood pressure is _______ / _______ mmHg.",
    "4. The thickest chamber of the heart is the ____________.",
    "5. The valve between Left Atrium and Left Ventricle is ____________.",
    "6. Blood group known as Universal Donor is ____________.",
    "7. Cardiac Output = Heart Rate ร— ____________.",
    "8. ST elevation on ECG indicates ____________.",
    "9. Normal Haemoglobin in adult female is _______ to _______ g/dL.",
    "10. The layer of heart that does the pumping is called ____________.",
]
for q in fill:
    story.append(Paragraph(q, body))
    story.append(sp(4))

story.append(sp(8))
story.append(Paragraph("Section B - Short Answer Questions", sec_hd))
story.append(HR())
short = [
    "11. Name the 4 chambers of the heart.",
    "12. What is the difference between Systole and Diastole?",
    "13. Describe the blood flow from body to lungs and back.",
    "14. What are the 5 Rights of drug administration?",
    "15. List 4 signs and symptoms of Myocardial Infarction.",
    "16. What is the function of the AV node?",
    "17. Differentiate between Left and Right Heart Failure.",
    "18. What are the components of blood?",
    "19. What nursing actions do you take for a patient with chest pain?",
    "20. What does the MONA protocol stand for in MI treatment?",
]
for q in short:
    story.append(Paragraph(q, body))
    story.append(sp(14))  # space for writing answer

story.append(PageBreak())

# ANSWER KEY
story.append(ch_header("Answer Key", "Check your answers here", TEAL))
story.append(sp(10))

story.append(Paragraph("Section A - Answers", sec_hd))
story.append(HR())
answers_a = [
    ("1", "SA Node (Sinoatrial Node)"),
    ("2", "60 to 100 bpm"),
    ("3", "120/80 mmHg"),
    ("4", "Left Ventricle"),
    ("5", "Mitral valve (Bicuspid valve)"),
    ("6", "Blood group O (O negative = universal donor)"),
    ("7", "Stroke Volume (CO = HR ร— SV)"),
    ("8", "Myocardial Infarction (Heart Attack - STEMI)"),
    ("9", "12.0 to 15.5 g/dL"),
    ("10", "Myocardium"),
]
for num, ans in answers_a:
    story.append(Paragraph(f"<b>{num}.</b>  {ans}", body))
    story.append(sp(3))

story.append(sp(8))
story.append(Paragraph("Section B - Key Points", sec_hd))
story.append(HR())
answers_b = [
    ("11", "Right Atrium, Right Ventricle, Left Atrium, Left Ventricle"),
    ("12", "Systole = ventricles contracting (pumping blood out). Diastole = ventricles relaxing (filling with blood)"),
    ("13", "Body โ†’ Vena Cava โ†’ Right Atrium โ†’ Tricuspid โ†’ Right Ventricle โ†’ Pulmonary Valve โ†’ Pulmonary Artery โ†’ Lungs โ†’ Pulmonary Veins โ†’ Left Atrium โ†’ Mitral Valve โ†’ Left Ventricle โ†’ Aortic Valve โ†’ Aorta โ†’ Body"),
    ("14", "Right Patient, Right Drug, Right Dose, Right Route, Right Time"),
    ("15", "Crushing chest pain, radiation to left arm/jaw, diaphoresis (sweating), nausea/vomiting, dyspnea, anxiety, pallor"),
    ("16", "AV node delays electrical impulse by 0.1 second to allow ventricles to fill completely before contracting"),
    ("17", "Left HF: backs up into lungs โ†’ dyspnea, crackles, pink frothy sputum. Right HF: backs up into body โ†’ pedal edema, JVD, hepatomegaly"),
    ("18", "Plasma (55%) + Red Blood Cells + White Blood Cells + Platelets"),
    ("19", "Sit patient up (semi-Fowler's), give O2, 12-lead ECG, IV access, pain assessment, call doctor immediately, prepare for MONA"),
    ("20", "M = Morphine (pain relief), O = Oxygen, N = Nitrates (vasodilator), A = Aspirin (antiplatelet)"),
]
for num, ans in answers_b:
    story.append(Paragraph(f"<b>{num}.</b>  {ans}", body))
    story.append(sp(5))

story.append(sp(10))
story.append(info_box(
    "๐Ÿ“Š Score Yourself:\n"
    "18-20 = Excellent! Move to Chapter 2 โœ…\n"
    "14-17 = Good! Review weak areas, then proceed\n"
    "10-13 = Fair - Re-read sections you got wrong\n"
    "Below 10 = Revise the full chapter once more\n\n"
    "Remember: Understanding > Memorising. If you understand the concepts, "
    "exam answers will come naturally!", LIGHT_TEAL, TEAL))
story.append(PageBreak())

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# SECTION 10: QUICK REFERENCE CARD
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
story.append(ch_header("Quick Reference Card", "All key values at a glance - cut and keep!", DARK_RED))
story.append(sp(10))

story.append(Paragraph("CVS Normal Values - Master Summary", sec_hd))
story.append(HR())
ref_vals = [
    ["Parameter",                   "Normal Value",       "Abnormal = Action"],
    ["Heart Rate",                  "60-100 bpm",         "<60 = Bradycardia | >100 = Tachycardia"],
    ["Blood Pressure",              "120/80 mmHg",        "<90/60 = Hypotension | >140/90 = HTN"],
    ["Cardiac Output",              "~5 L/min",           "<4 = Concern | Increases in exercise"],
    ["Stroke Volume",               "~70 mL/beat",        "Reduced in heart failure"],
    ["PR Interval (ECG)",           "0.12-0.20 sec",      ">0.20 = AV block"],
    ["QRS Duration (ECG)",          "0.06-0.10 sec",      ">0.12 = Bundle branch block"],
    ["Haemoglobin (Male)",          "13.5-17.5 g/dL",     "<13.5 = Anaemia"],
    ["Haemoglobin (Female)",        "12.0-15.5 g/dL",     "<12.0 = Anaemia"],
    ["WBC Count",                   "4,000-11,000 /ยตL",   ">11,000 = Leukocytosis (infection)"],
    ["Platelet Count",              "1.5-4.5 lakh/ยตL",    "<1 lakh = Thrombocytopenia"],
    ["Bleeding Time",               "1-3 minutes",        "Prolonged = platelet problem"],
    ["MAP (Mean Arterial Pressure)","70-100 mmHg",        "<60 = Inadequate organ perfusion"],
]
story.append(mk_table(["Parameter","Normal Value","Abnormal = Action"], ref_vals[1:],
    [inner_w*0.35, inner_w*0.22, inner_w*0.43], hdr_color=DARK_RED, alt=LIGHT_RED))
story.append(sp(10))

story.append(Paragraph("Key Mnemonics Summary", sec_hd))
story.append(HR())
mnemonics = [
    ["Mnemonic",       "Meaning",                                            "Remembers"],
    ["Tigers Prefer Milk Always", "Tricuspid, Pulmonary, Mitral, Aortic",   "4 heart valves in order"],
    ["MONA",          "Morphine, Oxygen, Nitrates, Aspirin",                "MI emergency treatment"],
    ["PQRST",         "Provocation, Quality, Radiation, Severity, Timing",  "Pain assessment"],
    ["Lub-Dub",       "S1 = AV valves close | S2 = Semilunar valves close", "Heart sounds"],
    ["5 Rights",      "Patient, Drug, Dose, Route, Time",                   "Safe drug giving"],
    ["EPI-MYO-ENDO",  "Outer, Middle, Inner layers of heart",               "Heart wall layers"],
    ["SA โ†’ AV โ†’ Bundle โ†’ Purkinje", "Electrical pathway",                  "Conduction system"],
]
story.append(mk_table(["Mnemonic","Meaning","Remembers"], mnemonics[1:],
    [inner_w*0.28, inner_w*0.42, inner_w*0.30], hdr_color=PURPLE, alt=LIGHT_PURPLE))
story.append(sp(10))

story.append(tip_box(
    "๐ŸŒŸ Chapter 1 Complete! What to do next:\n"
    "1. Afternoon: Make your own heart diagram from memory\n"
    "2. Evening: Do the self-test questions (Page 8-9)\n"
    "3. Before sleep: Repeat key values in your head\n"
    "4. Tomorrow: Start Respiratory System (Chapter 1 Part 2)\n\n"
    "All the best! You are doing great! ๐Ÿ’ช"))

# โ”€โ”€ Build โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/gnm-study-guide && python create_anatomy_ch1.py 2>&1

Running Command

ls -lh /tmp/workspace/gnm-study-guide/GNM_Anatomy_Chapter1_CVS.pdf

Aapka Anatomy Chapter 1 PDF ready hai! ๐ŸŽ‰

GNM Anatomy Chapter1 CVS

PDF Document ยท PDF


๐Ÿ“˜ PDF Mein Kya Kya Hai (10 Sections):

SectionTopic
1.1CVS Introduction - 3 components, overview
1.2Heart Anatomy - 3 layers, 4 chambers, 4 valves + mnemonics
1.3Blood Circulation - Pulmonary & Systemic circuits + step-by-step flow diagram
1.4Cardiac Cycle & Conduction - SA Node, AV Node, Purkinje fibers
1.5ECG Waves - P, QRS, T with diagram + critical changes
1.6Cardiac Output & BP - Formulas, BP classification table
1.7Blood - Composition, normal values, blood groups
1.8CVS Conditions - MI, Heart Failure nursing care
1.9Self-Test - 20 questions + Answer Key
1.10Quick Reference Card - All values + mnemonics

๐Ÿ“… Aaj Ka Plan (Daily Timetable Follow Karo):

TimeKaam
Abhi - 11:30 AMPDF Section 1.1 to 1.4 padho
2:00 - 4:00 PMSection 1.5 to 1.7 + notes banao
7:00 - 9:00 PMSelf-test ke 20 questions solve karo
Sone se pehleQuick Reference Card ek baar dekho
Kal Respiratory System ka chapter mangna! ๐Ÿ’ช

Find research articles on cardiovascular nursing

Searching PubMed

cardiovascular nursing care outcomes

Searching PubMed

cardiac nursing intervention heart failure

Yahan recent cardiovascular nursing research articles hain - sabhi high-quality peer-reviewed journals se:

๐Ÿ“š Cardiovascular Nursing - Recent Research Articles (2023-2025)

๐Ÿฅ‡ Tier 1 - Systematic Reviews & Meta-Analyses (Highest Evidence)


1. Nurse-Led Self-Care Interventions in Heart Failure

"Effects of nurse-led self-care interventions on health outcomes among people with heart failure: A systematic review and meta-analysis"
  • Journal: Journal of Clinical Nursing | Year: 2024
  • Authors: Huang Z, Liu T, Gao R
  • PMID: 38041606
  • Key Finding: Nurse-led self-care programs significantly improve quality of life, reduce hospitalizations and improve medication adherence in heart failure patients
  • GNM Relevance: โญโญโญโญโญ Direct nursing practice

2. Teach-Back Method for Heart Failure Patients

"Effects of education based on teach-back methods on self-care and quality of life of patients with heart failure"
  • Journal: BMC Cardiovascular Disorders | Year: 2024
  • Authors: Zare-Kaseb A, Emami Zeydi A et al.
  • PMID: 39462344
  • Key Finding: Teach-back education method (jo aapne study guide mein padha!) significantly improves self-care and quality of life
  • GNM Relevance: โญโญโญโญโญ Validates revision technique you are using!

3. Digital/eHealth Nursing Interventions in Heart Failure

"Effectiveness of nurse-led electronic health interventions on illness management in chronic heart failure"
  • Journal: International Journal of Nursing Studies | Year: 2024
  • Authors: Zhang N, Li Q, Chen S
  • PMID: 38029453
  • Key Finding: Nurse-led digital health tools (apps, telehealth) significantly improve illness management in chronic heart failure
  • GNM Relevance: โญโญโญโญ Future of nursing practice

4. Psychological Interventions for Cardiac Patients

"Psychological interventions for depression and anxiety in patients with coronary heart disease, heart failure or atrial fibrillation"
  • Journal: Cochrane Database of Systematic Reviews | Year: 2024
  • Authors: Ski CF, Taylor RS, McGuigan K
  • PMID: 38577875
  • Key Finding: Psychological support interventions by nurses reduce depression and anxiety in cardiac patients - holistic care is essential
  • GNM Relevance: โญโญโญโญ Mental health + cardiac nursing combined

5. Modifiable Risk Factors in Cardiovascular Disease

"Global Effect of Modifiable Risk Factors on Cardiovascular Disease and Mortality"
  • Journal: New England Journal of Medicine (NEJM) | Year: 2023
  • Authors: Global CVR Consortium, Magnussen C et al.
  • PMID: 37632466
  • Key Finding: Smoking, hypertension, diabetes, obesity - controlling these reduces CVD mortality globally. Nurses play key role in patient education
  • GNM Relevance: โญโญโญโญ Community health nursing, patient education

6. Exercise Interventions & Cardiac Dysfunction (Cancer Patients)

"Effectiveness of exercise-based interventions in preventing cardiac dysfunction in breast cancer patients"
  • Journal: International Journal of Nursing Studies | Year: 2025
  • Authors: Zhang D, Xiong X, Ding H
  • PMID: 39961652
  • Key Finding: Exercise-based nursing interventions prevent chemotherapy-related heart damage
  • GNM Relevance: โญโญโญ Oncology + cardiac nursing

๐Ÿ“Š Summary Table

#ArticleJournalYearKey Topic
1Nurse-led Self-Care in HFJ Clin Nurs2024Self-care programs
2Teach-Back MethodBMC Cardiovasc2024Patient education
3eHealth Nursing HFInt J Nurs Stud2024Digital nursing
4Psych Interventions CardiacCochrane2024Mental health care
5Modifiable CVD Risk FactorsNEJM2023Prevention
6Exercise & Cardiac DysfunctionInt J Nurs Stud2025Exercise nursing

๐Ÿ’ก Key Takeaways for GNM Students

1. Nurse-led education (teach-back method) - jo aap padh rahe ho - evidence-based hai โœ… 2. Holistic care (physical + mental) - cardiac patients ke liye essential 3. Patient self-care education = hospitalizations kam hoti hain 4. Digital health tools - future of nursing practice 5. Lifestyle modification counseling = nurse ka important role

Kisi specific article ka full abstract ya details chahiye? PMID number bataiye! ๐Ÿ˜Š

I want to be with a picture

Generating Image

A professional medical research infographic titled "Cardiovascular Nursing - Recent Research Articles 2023-2025". Clean white background with red and blue medical theme. Show 6 research article cards arranged in a 2x3 grid layout. Each card has a colored header and bullet points with key findings: Card 1 (red header): "1. Nurse-Led Self-Care in Heart Failure" - Journal of Clinical Nursing, 2024 - "Nurse-led programs reduce hospitalizations and improve quality of life in HF patients" Card 2 (blue header): "2. Teach-Back Education Method" - BMC Cardiovascular Disorders, 2024 - "Teach-back method significantly improves self-care and quality of life" Card 3 (teal header): "3. Digital/eHealth Nursing" - Int. Journal of Nursing Studies, 2024 - "Nurse-led digital tools improve chronic heart failure management" Card 4 (purple header): "4. Psychological Interventions" - Cochrane Reviews, 2024 - "Psych support by nurses reduces depression & anxiety in cardiac patients" Card 5 (orange header): "5. Modifiable CVD Risk Factors" - New England Journal of Medicine, 2023 - "Controlling lifestyle risk factors reduces CVD mortality globally" Card 6 (green header): "6. Exercise & Cardiac Dysfunction" - Int. Journal of Nursing Studies, 2025 - "Exercise-based nursing prevents chemotherapy-related heart damage" At the top, a bold title with a small red heart icon. At the bottom, a key takeaway box: "Nurse-led education, holistic care and patient self-care = better cardiac outcomes". Include small medical icons like heart, stethoscope, clipboard next to each card. Modern, clean, professional design suitable for nursing students.

!

404 Not Found. {'message': '{\n "error": {\n "code": 404,\n "message": "Publisher model `projects/engaged-beaker-474810-u2/locations/global/publishers/google/models/gemini-3-pro-image-preview` was not found or your project does not have access to it. Ensure you are using a valid model name and that the model is available in the specified region. For more information, see: https://docs.cloud.google.com/gemini-enterprise-agent-platform/resources/locations.",\n "status": "NOT_FOUND"\n }\n}\n', 'status': 'Not Found'}

We encountered an error while processing your request. Please try again or reach out to us for help.

โœ‰๏ธhi@orris.care

Anatomy chapter 1 pdf with a picture

Searching the Web

heart anatomy diagram labeled free public domain wikimedia commons PNG

Running Command

cd /tmp/workspace/gnm-study-guide && curl -L -o heart_diagram.png "https://upload.wikimedia.org/wikipedia/commons/1/12/Anatomy_of_the_Heart.jpg" --max-time 30 && ls -lh heart_diagram.png

Running Command

cd /tmp/workspace/gnm-study-guide && python3 - << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import ParagraphStyle from reportlab.lib.units import cm from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak, Image, KeepTogether) from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate from reportlab.lib.utils import ImageReader import os OUTPUT = "/tmp/workspace/gnm-study-guide/GNM_Anatomy_Ch1_With_Picture.pdf" IMG = "/tmp/workspace/gnm-study-guide/heart_diagram.png" # โ”€โ”€ Colors โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ DARK_RED = colors.HexColor("#922B21") MED_RED = colors.HexColor("#E74C3C") LIGHT_RED = colors.HexColor("#FADBD8") DARK_BLUE = colors.HexColor("#1A3A5C") MED_BLUE = colors.HexColor("#2E86AB") LIGHT_BLUE = colors.HexColor("#D6EAF8") TEAL = colors.HexColor("#17A589") LIGHT_TEAL = colors.HexColor("#D1F2EB") ORANGE = colors.HexColor("#E67E22") LIGHT_ORANGE= colors.HexColor("#FDEBD0") PURPLE = colors.HexColor("#7D3C98") LIGHT_PURPLE= colors.HexColor("#E8DAEF") GOLD = colors.HexColor("#D4AC0D") LIGHT_GOLD = colors.HexColor("#FEF9E7") WHITE = colors.white LIGHT_GRAY = colors.HexColor("#F2F3F4") MID_GRAY = colors.HexColor("#BDC3C7") DARK_GRAY = colors.HexColor("#2C3E50") def S(name, **kw): return ParagraphStyle(name, **kw) cover_title = S("CT", fontSize=34, textColor=WHITE, alignment=TA_CENTER, fontName="Helvetica-Bold", leading=42) cover_sub = S("CS", fontSize=14, textColor=colors.HexColor("#AED6F1"), alignment=TA_CENTER, fontName="Helvetica", leading=20) cover_note = S("CN", fontSize=10, textColor=colors.HexColor("#D5D8DC"), alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=15) ch_title_s = S("ChT", fontSize=17, textColor=WHITE, fontName="Helvetica-Bold", leading=22) sec_hd = S("SH", fontSize=13, textColor=DARK_RED, fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=4) sub_hd = S("SSH", fontSize=11, textColor=DARK_BLUE, fontName="Helvetica-Bold", spaceBefore=6, spaceAfter=3) body = S("B", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica", leading=15, spaceAfter=3) bullet_s = S("BL", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica", leading=15, leftIndent=14, spaceAfter=2) tip_s = S("TIP", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica", leading=14, leftIndent=8, spaceAfter=2) table_hd = S("TH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12) table_cell = S("TC", fontSize=9, textColor=DARK_GRAY, fontName="Helvetica", alignment=TA_LEFT, leading=12) caption_s = S("CAP", fontSize=9, textColor=colors.HexColor("#717D7E"), fontName="Helvetica-Oblique", alignment=TA_CENTER, leading=12) img_title_s = S("IT", fontSize=12, textColor=DARK_RED, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceBefore=4, spaceAfter=4) w_page, _ = A4 inner_w = w_page - 3.5*cm # โ”€โ”€ Page callbacks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ def cover_bg(canv, doc): w, h = A4 canv.setFillColor(DARK_RED); canv.rect(0, 0, w, h, fill=1, stroke=0) canv.setFillColor(MED_RED); canv.rect(0, h*0.56, w, h*0.44, fill=1, stroke=0) canv.setFillColor(GOLD); canv.rect(0, h*0.555, w, 6, fill=1, stroke=0) canv.setFillColor(WHITE); canv.rect(0, h*0.555-9, w, 3, fill=1, stroke=0) def normal_page(canv, doc): w, h = A4 canv.setFillColor(DARK_RED); canv.rect(0, h-36, w, 36, fill=1, stroke=0) canv.setFont("Helvetica-Bold", 9); canv.setFillColor(WHITE) canv.drawString(1.5*cm, h-24, "GNM Anatomy | Chapter 1: Cardiovascular System") canv.drawRightString(w-1.5*cm, h-24, "Nursing Excellence Series") canv.setFillColor(DARK_RED); canv.rect(0, 0, w, 28, fill=1, stroke=0) canv.setFont("Helvetica", 8); canv.setFillColor(colors.HexColor("#AED6F1")) canv.drawCentredString(w/2, 9, f"Page {doc.page} | Image: Anatomy of the Heart (Wikimedia Commons, CC BY-SA)") canv.setFillColor(GOLD); canv.rect(0, 28, 4, h-64, fill=1, stroke=0) # โ”€โ”€ Helpers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ def ch_header(title, subtitle="", color=MED_RED): tbl = Table([[Paragraph(title, ch_title_s)], [Paragraph(subtitle, S("CSub2", fontSize=10, textColor=colors.HexColor("#FDEBD0"), fontName="Helvetica-Oblique", leading=14))]], colWidths=[inner_w]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), color), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 10), ("LEFTPADDING", (0,0), (-1,-1), 14), ])) return tbl def info_box(text, bg=LIGHT_BLUE, border=MED_BLUE): tbl = Table([[Paragraph(text, S("IB2", fontSize=10, textColor=DARK_GRAY, fontName="Helvetica", leading=15, leftIndent=6))]], colWidths=[inner_w]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("LINERIGHT", (0,0), (-1,-1), 5, border), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING",(0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) return tbl def tip_box(text): return info_box(text, bg=LIGHT_GOLD, border=GOLD) def warn_box(text): return info_box(text, bg=LIGHT_RED, border=MED_RED) def mk_table(headers, rows, col_widths, hdr_color=MED_RED, alt=LIGHT_RED): data = [[Paragraph(h, table_hd) for h in headers]] for row in rows: data.append([Paragraph(str(c), table_cell) for c in row]) tbl = Table(data, colWidths=col_widths, repeatRows=1) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), hdr_color), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, alt]), ("GRID", (0,0), (-1,-1), 0.5, MID_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return tbl def box_diagram(lines, title="", bg=LIGHT_BLUE, border=MED_BLUE): content = [] if title: content.append(Paragraph(f"<b>{title}</b>", S("DT2", fontSize=10, textColor=border, fontName="Helvetica-Bold", leading=14, spaceAfter=4))) for line in lines: content.append(Paragraph(line, S("DL2", fontSize=9, textColor=DARK_GRAY, fontName="Courier", leading=13))) tbl = Table([[content]], colWidths=[inner_w]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("LINEBEFORE", (0,0), (-1,-1), 4, border), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING",(0,0), (-1,-1), 10), ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 8), ])) return tbl def B(text): return Paragraph(f"<font color='#E74C3C'>&#9829;</font> {text}", bullet_s) def sp(n=6): return Spacer(1, n) def HR(): return HRFlowable(width="100%", thickness=1, color=MID_GRAY, spaceAfter=4, spaceBefore=4) def image_box(img_path, width_cm=13, caption=""): """Embed image centered in a styled box with caption.""" img_w = width_cm * cm img = Image(img_path, width=img_w, height=img_w * 0.75) # 4:3 ratio items = [img] if caption: items.append(Paragraph(caption, caption_s)) border_tbl = Table([items] if len(items)==1 else [[img],[Paragraph(caption, caption_s)]], colWidths=[inner_w]) border_tbl.setStyle(TableStyle([ ("ALIGN", (0,0), (-1,-1), "CENTER"), ("BACKGROUND", (0,0), (-1,-1), LIGHT_GRAY), ("BOX", (0,0), (-1,-1), 1.5, MED_RED), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING",(0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ])) return border_tbl # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # BUILD DOCUMENT # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• doc = BaseDocTemplate(OUTPUT, pagesize=A4, leftMargin=1.8*cm, rightMargin=1.2*cm, topMargin=1.5*cm, bottomMargin=1.2*cm, title="GNM Anatomy Chapter 1 - Cardiovascular System", author="Orris Nursing Series") cover_frame = Frame(0, 0, A4[0], A4[1], leftPadding=2*cm, rightPadding=1.5*cm, topPadding=2*cm, bottomPadding=1.5*cm, id="cover") normal_frame = Frame(0.5*cm, 1.0*cm, A4[0]-1.7*cm, A4[1]-2.8*cm, leftPadding=1.0*cm, rightPadding=0.5*cm, topPadding=0.3*cm, bottomPadding=0.3*cm, id="normal") doc.addPageTemplates([ PageTemplate(id="Cover", frames=[cover_frame], onPage=cover_bg), PageTemplate(id="Normal", frames=[normal_frame], onPage=normal_page), ]) story = [] # โ”€โ”€ COVER โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ story.append(Spacer(1, 2.2*cm)) story.append(Paragraph("โ™ฅ GNM Anatomy", cover_title)) story.append(sp(6)) story.append(Paragraph("Chapter 1", cover_title)) story.append(sp(10)) story.append(Paragraph("Cardiovascular System", cover_sub)) story.append(sp(4)) story.append(Paragraph("Heart โ€ข Blood Vessels โ€ข Circulation โ€ข ECG โ€ข Nursing Values", cover_sub)) story.append(sp(1.0*cm)) story.append(Paragraph("โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€", cover_note)) story.append(sp(5)) story.append(Paragraph("Complete theory with labeled heart diagram,", cover_note)) story.append(Paragraph("tables, mnemonics and 20 self-test questions", cover_note)) story.append(sp(1.2*cm)) story.append(Paragraph("Orris Nursing Excellence Series | 2026", cover_note)) from reportlab.platypus import NextPageTemplate story.append(NextPageTemplate("Normal")) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # PAGE 2-3: INTRODUCTION + HEART PICTURE # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.1 Introduction to Cardiovascular System", "Overview, components and functions")) story.append(sp(8)) story.append(Paragraph("What is the Cardiovascular System?", sec_hd)) story.append(HR()) story.append(Paragraph( "The Cardiovascular System (CVS) is the body's transport system. " "It consists of the <b>heart</b>, <b>blood vessels</b>, and <b>blood</b>. " "Its job is to deliver oxygen and nutrients to every cell and remove " "carbon dioxide and waste products.", body)) story.append(sp(6)) comps = [ ["Component", "Parts", "Function"], ["โค๏ธ Heart", "4 chambers, 4 valves, 3 wall layers", "Pump that pushes blood (like an engine)"], ["๐Ÿฉธ Blood Vessels", "Arteries, Veins, Capillaries", "Pipes carrying blood to/from organs"], ["๐Ÿ’‰ Blood", "RBC, WBC, Platelets, Plasma", "Carries O2, nutrients, hormones, waste"], ] story.append(mk_table(["Component","Parts","Function"], comps[1:], [inner_w*0.20, inner_w*0.32, inner_w*0.48], hdr_color=DARK_RED)) story.append(sp(10)) # โ”€โ”€ HEART DIAGRAM IMAGE โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ story.append(Paragraph("โ™ฅ Labeled Diagram of the Human Heart", img_title_s)) story.append(sp(4)) story.append(image_box( IMG, width_cm=13, caption="Figure 1.1: Anatomy of the Human Heart showing chambers, valves and major blood vessels.\n" "Source: Wikimedia Commons (CC BY-SA 3.0)")) story.append(sp(8)) story.append(info_box( "๐Ÿ“– Study this diagram carefully:\n" "โ€ข Identify the 4 chambers: Right Atrium (RA), Right Ventricle (RV), Left Atrium (LA), Left Ventricle (LV)\n" "โ€ข Locate the 4 valves: Tricuspid, Pulmonary, Mitral, Aortic\n" "โ€ข Find the major vessels: Aorta, Pulmonary Artery, Vena Cava, Pulmonary Veins\n" "โ€ข Note: Left Ventricle wall is THICKEST (pumps to whole body)", LIGHT_GOLD, GOLD)) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 2: HEART ANATOMY DETAIL # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.2 Heart - Detailed Anatomy", "Location, layers, chambers and valves")) story.append(sp(8)) story.append(Paragraph("Location and Size", sec_hd)) story.append(HR()) story.append(B("Location: Mediastinum - middle of chest, slightly LEFT of midline")) story.append(B("Size: Approximately your own closed FIST")) story.append(B("Weight: ~250-350 grams in adults")) story.append(B("Apex (tip): 5th intercostal space, midclavicular line (left side)")) story.append(sp(8)) story.append(Paragraph("3 Layers of Heart Wall", sec_hd)) story.append(HR()) layers = [ ["Layer", "Position", "Description", "Mnemonic"], ["Epicardium", "Outermost", "Thin outer covering = visceral pericardium", "EPI = Outside (like Epidermis)"], ["Myocardium", "Middle", "Thick muscular layer - does the actual pumping", "MYO = Muscle (Myalgia = muscle pain)"], ["Endocardium", "Innermost", "Smooth inner lining of chambers and valves", "ENDO = Inside (Endoscopy = looking inside)"], ] story.append(mk_table(["Layer","Position","Description","Mnemonic"], layers[1:], [inner_w*0.17, inner_w*0.14, inner_w*0.38, inner_w*0.31], hdr_color=DARK_RED)) story.append(sp(8)) story.append(Paragraph("4 Chambers of the Heart", sec_hd)) story.append(HR()) chambers = [ ["Chamber", "Side", "Receives Blood From", "Sends To", "Wall"], ["Right Atrium (RA)", "Right", "Superior & Inferior Vena Cava (whole body)", "RV via Tricuspid valve", "Thin"], ["Right Ventricle (RV)", "Right", "Right Atrium", "Lungs via Pulmonary artery", "Moderate"], ["Left Atrium (LA)", "Left", "Pulmonary veins (4 veins from lungs)", "LV via Mitral valve", "Thin"], ["Left Ventricle (LV)", "Left", "Left Atrium", "Whole body via Aorta", "THICKEST"], ] story.append(mk_table(["Chamber","Side","Receives From","Sends To","Wall"], [[r[0],r[1],r[2],r[3],r[4]] for r in chambers[1:]], [inner_w*0.22, inner_w*0.09, inner_w*0.27, inner_w*0.27, inner_w*0.15], hdr_color=DARK_RED)) story.append(sp(6)) story.append(tip_box("๐Ÿ”‘ Key: LV (Left Ventricle) has the THICKEST wall - it pumps blood to the ENTIRE body against highest pressure.")) story.append(sp(8)) story.append(Paragraph("4 Valves of the Heart", sec_hd)) story.append(HR()) valves = [ ["Valve", "Location", "Type", "Function"], ["Tricuspid", "Between RA and RV", "AV valve (3 cusps)", "Prevents backflow from RV to RA"], ["Pulmonary", "RV to Pulmonary artery", "Semilunar valve", "Prevents backflow from pulmonary artery to RV"], ["Mitral (Bicuspid)","Between LA and LV", "AV valve (2 cusps)", "Prevents backflow from LV to LA"], ["Aortic", "LV to Aorta", "Semilunar valve", "Prevents backflow from Aorta to LV"], ] story.append(mk_table(["Valve","Location","Type","Function"], valves[1:], [inner_w*0.18, inner_w*0.25, inner_w*0.20, inner_w*0.37], hdr_color=PURPLE, alt=LIGHT_PURPLE)) story.append(sp(6)) story.append(info_box( "๐Ÿ”ค MNEMONIC - 4 Valves Order (Right to Left):\n" "\"Tigers Prefer Milk Always\"\n" "T = Tricuspid | P = Pulmonary | M = Mitral | A = Aortic", LIGHT_PURPLE, PURPLE)) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 3: CIRCULATION # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.3 Blood Circulation", "Pulmonary and systemic circuits - step by step")) story.append(sp(8)) story.append(Paragraph("Two Circuits of Circulation", sec_hd)) story.append(HR()) circuits = [ ["Circuit", "Path", "Purpose"], ["Pulmonary (Small) Circulation","Right heart โ†’ Lungs โ†’ Left heart", "Blood picks up O2 and releases CO2 in lungs"], ["Systemic (Large) Circulation","Left heart โ†’ Whole body โ†’ Right heart","O2 and nutrients delivered to all body cells"], ] story.append(mk_table(["Circuit","Path","Purpose"], circuits[1:], [inner_w*0.24, inner_w*0.36, inner_w*0.40], hdr_color=TEAL, alt=LIGHT_TEAL)) story.append(sp(10)) story.append(Paragraph("Complete Blood Flow - Step by Step", sec_hd)) story.append(HR()) story.append(box_diagram([ " BODY TISSUES (deoxygenated blood - dark red)", " |", " v", " Superior Vena Cava + Inferior Vena Cava", " |", " v", " RIGHT ATRIUM --> [Tricuspid Valve] --> RIGHT VENTRICLE", " |", " v [Pulmonary Valve opens]", " PULMONARY ARTERY --> LUNGS (CO2 released, O2 absorbed)", " |", " v", " PULMONARY VEINS (4 veins carry oxygenated blood)", " |", " v", " LEFT ATRIUM --> [Mitral Valve] --> LEFT VENTRICLE", " |", " v [Aortic Valve opens]", " AORTA --> BODY TISSUES (O2 and nutrients delivered)", ], title="Complete Blood Flow Diagram", bg=LIGHT_BLUE, border=MED_BLUE)) story.append(sp(8)) story.append(warn_box( "โš ๏ธ EXCEPTION - Must Remember for Exam:\n" "โ€ข Pulmonary ARTERY carries DE-oxygenated blood (Right heart โ†’ Lungs)\n" "โ€ข Pulmonary VEIN carries OXYGENATED blood (Lungs โ†’ Left heart)\n" "This is opposite to ALL other arteries (oxygenated) and veins (deoxygenated)!")) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 4: CARDIAC CYCLE + CONDUCTION # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.4 Cardiac Cycle & Conduction System", "How each heartbeat is generated and controlled")) story.append(sp(8)) story.append(Paragraph("Cardiac Cycle", sec_hd)) story.append(HR()) cycle = [ ["Phase", "What Happens", "Duration"], ["Systole", "Ventricles CONTRACT - push blood out", "~0.3 sec"], ["Diastole", "Ventricles RELAX - fill with blood", "~0.5 sec"], ["Full Cycle","One complete heartbeat at 75 bpm", "~0.8 sec"], ] story.append(mk_table(["Phase","What Happens","Duration"], cycle[1:], [inner_w*0.18, inner_w*0.58, inner_w*0.24])) story.append(sp(6)) story.append(info_box("๐Ÿฉบ Heart Sounds: Lub (S1) = Mitral + Tricuspid valves CLOSING at start of systole. " "Dub (S2) = Aortic + Pulmonary valves CLOSING at end of systole.", LIGHT_RED, MED_RED)) story.append(sp(8)) story.append(Paragraph("Conduction System - The Heart's Electrical Circuit", sec_hd)) story.append(HR()) story.append(box_diagram([ " SA NODE (Sinoatrial Node) <-- Natural Pacemaker", " Location: Right Atrium wall", " Rate: 60-100 impulses/min", " Action: Starts EVERY heartbeat", " |", " v (atria contract - P wave on ECG)", " AV NODE (Atrioventricular Node)", " Location: Between RA and RV (AV junction)", " Action: DELAYS impulse 0.1 sec", " Purpose: Allows ventricles to fill before contracting", " |", " v", " BUNDLE OF HIS", " Location: Interventricular septum", " Divides into: Right Bundle Branch + Left Bundle Branch", " |", " v", " PURKINJE FIBERS", " Location: Ventricular walls", " Action: Rapid spread of impulse -> ventricular contraction (QRS on ECG)", ], title="Conduction Pathway", bg=LIGHT_TEAL, border=TEAL)) story.append(sp(8)) cond_vals = [ ["Node / Structure", "Intrinsic Rate", "Clinical Significance"], ["SA Node", "60-100/min", "Primary pacemaker. Failure = AV node takes over"], ["AV Node", "40-60/min", "Backup pacemaker. AV block = heart rate drops"], ["Bundle Branches", "20-40/min", "Last resort. Very slow - dangerous"], ["PR Interval (ECG)", "0.12-0.20 sec", "Prolonged = 1st degree AV block"], ["QRS Duration (ECG)", "0.06-0.10 sec", "Widened = bundle branch block"], ] story.append(mk_table(["Node / Structure","Intrinsic Rate","Clinical Significance"], cond_vals[1:], [inner_w*0.33, inner_w*0.20, inner_w*0.47], hdr_color=TEAL, alt=LIGHT_TEAL)) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 5: ECG # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.5 ECG - Electrocardiogram", "Reading ECG waves and critical changes")) story.append(sp(8)) story.append(Paragraph("ECG Waves - What Each Represents", sec_hd)) story.append(HR()) ecg = [ ["Wave/Segment", "Represents", "Normal Value"], ["P Wave", "Atrial depolarization (atria contracting)", "< 0.12 sec, smooth rounded"], ["PR Interval", "Atrial โ†’ ventricular conduction time", "0.12 - 0.20 sec"], ["QRS Complex", "Ventricular depolarization (ventricles contracting)","0.06 - 0.10 sec"], ["ST Segment", "Ventricular plateau (between contraction-recovery)","Isoelectric (flat, no elevation/depression)"], ["T Wave", "Ventricular repolarization (recovery)", "0.16 sec, upright in most leads"], ["QT Interval", "Total ventricular electrical activity", "0.36 - 0.44 sec"], ] story.append(mk_table(["Wave/Segment","Represents","Normal Value"], ecg[1:], [inner_w*0.20, inner_w*0.48, inner_w*0.32], hdr_color=DARK_RED)) story.append(sp(8)) story.append(box_diagram([ " R", " /|\\", " / | \\", " P / | \\ T", " / \\ / | \\ / \\", "------/ \\----/ | \\------/ \\------", " Q | S", " |_______|", " (QRS complex)", "", " P = Atrial contraction (small wave)", " QRS = Ventricular contraction (tallest wave)", " T = Ventricular recovery (dome-shaped)", ], title="Normal ECG Wave Pattern", bg=LIGHT_BLUE, border=MED_BLUE)) story.append(sp(8)) story.append(warn_box( "๐Ÿšจ Critical ECG Changes - REPORT IMMEDIATELY to doctor:\n" "โ€ข ST Elevation โ†’ STEMI (Heart Attack!) - Emergency!\n" "โ€ข No P waves + Irregular rhythm โ†’ Atrial Fibrillation (AF)\n" "โ€ข Wide bizarre QRS + fast rate โ†’ Ventricular Tachycardia (VT)\n" "โ€ข Chaotic wavy baseline, no recognizable waves โ†’ Ventricular Fibrillation (VF) = ARREST!\n" "โ€ข Prolonged PR interval โ†’ AV Block")) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 6: BLOOD VALUES # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.6 Cardiac Output, BP & Blood Values", "Formulas, classifications and normal ranges")) story.append(sp(8)) story.append(Paragraph("Cardiac Output Formula", sec_hd)) story.append(HR()) story.append(box_diagram([ " CARDIAC OUTPUT (CO) = Heart Rate (HR) ร— Stroke Volume (SV)", "", " Normal CO = ~5 L/min (at rest)", " Normal HR = 60-100 bpm", " Normal SV = ~70 mL/beat", "", " Example: CO = 70 bpm ร— 70 mL = 4,900 mL โ‰ˆ 5 L/min", " During exercise: CO can rise to 20-25 L/min!", ], title="Cardiac Output", bg=LIGHT_GOLD, border=GOLD)) story.append(sp(8)) story.append(Paragraph("Blood Pressure Classification", sec_hd)) story.append(HR()) bp_class = [ ["Category", "Systolic", "Diastolic", "Nursing Action"], ["Normal", "< 120", "< 80", "Reassure, healthy lifestyle"], ["Elevated", "120-129", "< 80", "Lifestyle modification counseling"], ["Hypertension Stage 1","130-139", "80-89", "Lifestyle + monitor closely"], ["Hypertension Stage 2","โ‰ฅ 140", "โ‰ฅ 90", "Antihypertensive medication"], ["Hypertensive Crisis", "โ‰ฅ 180", "โ‰ฅ 120", "EMERGENCY - call doctor immediately"], ["Hypotension", "< 90", "< 60", "Lay flat, IV fluids, find cause"], ] story.append(mk_table(["Category","Systolic (mmHg)","Diastolic (mmHg)","Nursing Action"], bp_class[1:], [inner_w*0.28, inner_w*0.15, inner_w*0.15, inner_w*0.42], hdr_color=DARK_RED)) story.append(sp(8)) story.append(Paragraph("Blood Normal Values", sec_hd)) story.append(HR()) blood_vals = [ ["Parameter", "Male", "Female", "Abnormal"], ["Haemoglobin", "13.5-17.5 g/dL", "12.0-15.5 g/dL", "Low = Anaemia"], ["WBC Count", "4,000-11,000/ยตL","4,000-11,000/ยตL", "High = Infection/Leukocytosis"], ["Platelet Count", "1.5-4.5 lakh/ยตL","1.5-4.5 lakh/ยตL","Low = Thrombocytopenia"], ["Serum Na+ (Sodium)", "135-145 mEq/L", "135-145 mEq/L", "Low = Hyponatremia"], ["Serum K+ (Potassium)","3.5-5.0 mEq/L", "3.5-5.0 mEq/L", "Low = Hypokalemia (arrhythmia risk)"], ["Blood Sugar (fasting)","70-100 mg/dL", "70-100 mg/dL", "High = Hyperglycemia/DM"], ["Serum Creatinine", "0.6-1.2 mg/dL", "0.5-1.1 mg/dL", "High = Kidney disease"], ["INR", "0.8-1.2 (normal)","Therapeutic: 2-3","High = Bleeding risk"], ] story.append(mk_table(["Parameter","Male","Female","Abnormal"], blood_vals[1:], [inner_w*0.30, inner_w*0.18, inner_w*0.18, inner_w*0.34], hdr_color=MED_BLUE, alt=LIGHT_BLUE)) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 7: NURSING CARE # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("1.7 CVS Conditions & Nursing Care", "MI and Heart Failure - exam-focused management")) story.append(sp(8)) story.append(Paragraph("Myocardial Infarction (MI) - Heart Attack", sec_hd)) story.append(HR()) mi_data = [ ["Aspect", "Details"], ["Definition", "Death of cardiac muscle due to blocked coronary artery (ischemia)"], ["Causes", "Atherosclerosis (plaque), thrombus (blood clot), coronary artery spasm"], ["Signs & Symptoms", "โ€ข Crushing chest pain - radiates to left arm, jaw, shoulder\n" "โ€ข Diaphoresis (profuse sweating)\n" "โ€ข Nausea, vomiting, dyspnea\n" "โ€ข Anxiety, pale/clammy skin\n" "โ€ข Pain NOT relieved by rest or position change"], ["Diagnosis", "12-lead ECG (ST elevation in STEMI), Troponin I & T (cardiac enzymes), CK-MB, Echo"], ["Treatment", "MONA: Morphine + Oxygen + Nitrates + Aspirin\n" "Thrombolytics (streptokinase), PCI (balloon angioplasty), CABG surgery"], ["Nursing Care", "1. Semi-Fowler's position (30-45ยฐ) for comfort\n" "2. O2 therapy at 2-4 L/min via nasal cannula\n" "3. 12-lead ECG immediately + continuous cardiac monitoring\n" "4. IV access - at least 2 large bore cannulas\n" "5. Administer MONA as prescribed\n" "6. NPO until stable, monitor vitals every 15 min\n" "7. Emotional support - reduce anxiety\n" "8. Document time of pain onset"], ["Complications", "Arrhythmia, Heart failure, Cardiogenic shock, Pericarditis, Sudden death"], ] story.append(mk_table(["Aspect","Details"], mi_data[1:], [inner_w*0.20, inner_w*0.80], hdr_color=DARK_RED)) story.append(sp(10)) story.append(Paragraph("Heart Failure - Left vs Right", sec_hd)) story.append(HR()) hf_data = [ ["", "Left Heart Failure", "Right Heart Failure"], ["Problem", "LV fails โ†’ backs up to lungs", "RV fails โ†’ backs up to body"], ["Key Symptoms", "Dyspnea, orthopnea, PND\n(paroxysmal nocturnal dyspnea)\nPink frothy sputum\nCrackles at lung bases", "Peripheral edema (ankle/legs)\nJugular Vein Distension (JVD)\nHepatomegaly, ascites\nWeight gain"], ["Nursing Position","Semi-Fowler's / Fowler's (upright)", "Legs elevated (unless also has LHF)"], ["Key Nursing Care","O2 therapy\nDiuretics (furosemide)\nFluid/sodium restriction\nDaily weight monitoring", "Diuretics\nMonitor intake & output\nSkin care (edematous limbs)\nDaily weight"], ] data = [[Paragraph(h, table_hd) for h in ["","Left Heart Failure","Right Heart Failure"]]] for row in hf_data[1:]: data.append([Paragraph(c, table_cell) for c in row]) t = Table(data, colWidths=[inner_w*0.18, inner_w*0.41, inner_w*0.41], repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), DARK_RED), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_RED]), ("GRID", (0,0), (-1,-1), 0.5, MID_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(t) story.append(PageBreak()) # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• # SECTION 8: SELF-TEST # โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• story.append(ch_header("Self-Test Questions (20 Marks)", "Answer without notes first - then check answers on next page!")) story.append(sp(8)) story.append(info_box("๐Ÿ“‹ Instructions: First close your notes and attempt all 20 questions. " "Then flip to the answer key. Score yourself honestly!", LIGHT_BLUE, MED_BLUE)) story.append(sp(8)) story.append(Paragraph("Section A - Fill in the Blanks (10 marks)", sec_hd)) story.append(HR()) fills = [ "1. The natural pacemaker of the heart is the ________________________.", "2. Normal adult heart rate = _______ to _______ bpm.", "3. Normal blood pressure = _______ / _______ mmHg.", "4. The thickest chamber of the heart is the ________________________.", "5. The valve between Left Atrium and Left Ventricle = ________________________.", "6. Normal Haemoglobin in adult female = _______ to _______ g/dL.", "7. Cardiac Output = Heart Rate ร— ________________________.", "8. ST elevation on ECG indicates ________________________.", "9. Pulmonary ARTERY carries ________________________ blood.", "10. The middle muscular layer of the heart is called ________________________.", ] for q in fills: story.append(Paragraph(q, body)) story.append(sp(6)) story.append(sp(6)) story.append(Paragraph("Section B - Short Answer (10 marks)", sec_hd)) story.append(HR()) shorts = [ "11. Name the 4 chambers of the heart.", "12. What is MONA protocol in MI treatment? Expand each letter.", "13. Describe complete blood flow from body โ†’ lungs โ†’ back to body.", "14. Difference between Systole and Diastole.", "15. What are the 5 Rights of drug administration?", "16. List 4 symptoms of Myocardial Infarction.", "17. What is the function of the AV node?", "18. Difference between Left and Right Heart Failure symptoms.", "19. What ECG change indicates a heart attack?", "20. What nursing position do you place a breathless cardiac patient in?", ] for q in shorts: story.append(Paragraph(q, body)) story.append(sp(16)) story.append(PageBreak()) # ANSWER KEY story.append(ch_header("Answer Key", "Check your score!", TEAL)) story.append(sp(8)) story.append(Paragraph("Section A Answers", sec_hd)) story.append(HR()) ans_a = [ ("1","SA Node (Sinoatrial Node)"), ("2","60 to 100 bpm"), ("3","120 / 80 mmHg"), ("4","Left Ventricle"), ("5","Mitral valve (Bicuspid valve)"), ("6","12.0 to 15.5 g/dL"), ("7","Stroke Volume (CO = HR ร— SV)"), ("8","Myocardial Infarction / STEMI (Heart Attack)"), ("9","De-oxygenated blood (dark red blood going to lungs)"), ("10","Myocardium"), ] for n, a in ans_a: story.append(Paragraph(f"<b>{n}.</b> {a}", body)) story.append(sp(3)) story.append(sp(8)) story.append(Paragraph("Section B Key Points", sec_hd)) story.append(HR()) ans_b = [ ("11","Right Atrium, Right Ventricle, Left Atrium, Left Ventricle"), ("12","M = Morphine (pain relief) | O = Oxygen | N = Nitrates (vasodilator) | A = Aspirin (antiplatelet)"), ("13","Body โ†’ Vena Cava โ†’ RA โ†’ Tricuspid โ†’ RV โ†’ Pulmonary valve โ†’ Pulmonary artery โ†’ Lungs โ†’ Pulmonary veins โ†’ LA โ†’ Mitral โ†’ LV โ†’ Aortic valve โ†’ Aorta โ†’ Body"), ("14","Systole = ventricles contracting, blood pumped out. Diastole = ventricles relaxing, heart fills with blood."), ("15","Right Patient, Right Drug, Right Dose, Right Route, Right Time"), ("16","Crushing chest pain, radiation to left arm/jaw, diaphoresis, nausea/vomiting, dyspnea, pallor, anxiety"), ("17","AV node delays electrical impulse by 0.1 second to allow ventricles to fill completely before contracting"), ("18","Left HF: Dyspnea, crackles, pink frothy sputum (lungs congested). Right HF: Pedal edema, JVD, hepatomegaly (body congested)"), ("19","ST segment elevation (STEMI = ST Elevation Myocardial Infarction)"), ("20","Semi-Fowler's position (30-45 degrees) or Fowler's (90 degrees) - upright to reduce dyspnea"), ] for n, a in ans_b: story.append(Paragraph(f"<b>{n}.</b> {a}", body)) story.append(sp(5)) story.append(sp(10)) story.append(info_box( "๐Ÿ“Š Your Score:\n" "18-20 = Excellent! Ready for Chapter 2 โœ…\n" "14-17 = Good! Review weak sections and retry\n" "10-13 = Fair - Re-read the full chapter\n" "Below 10 = Start from beginning - understanding before memorising!\n\n" "Next Step: Tomorrow - Chapter 1 Part 2: Respiratory System ๐Ÿซ", LIGHT_TEAL, TEAL)) # โ”€โ”€ Build โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ doc.build(story) print(f"PDF created: {OUTPUT}") EOF

Running Command

ls -lh /tmp/workspace/gnm-study-guide/GNM_Anatomy_Ch1_With_Picture.pdf

Taiyaar hai! Heart ki real labeled diagram ke saath PDF ready hai! ๐ŸŽ‰

GNM Anatomy Ch1 With Picture

PDF Document ยท PDF


๐Ÿ“˜ Is PDF Mein Kya Naya Hai (Picture Wali Version):

FeatureDetail
โค๏ธ Heart DiagramPage 2 pe real labeled anatomy image - chambers, valves, vessels sab dikhte hain
Image SourceWikimedia Commons - free public domain medical image
Study Tip BoxDiagram ke neeche - kya identify karna hai step by step
7 SectionsIntroduction โ†’ Anatomy โ†’ Circulation โ†’ ECG โ†’ BP/Blood Values โ†’ Nursing Care โ†’ Self-Test
20 Question TestFill-in-the-blanks + short answers with full answer key
File Size374 KB (image ke saath bhi fast open hogi)

๐Ÿ—“๏ธ Aaj Ka Plan (Abhi Se):

Abhi        โ†’ PDF kholo, Heart Diagram dekho (Page 2)
             Sab labels identify karo - chambers, valves
11 AM        โ†’ Section 1.1 to 1.3 padho
2:00 PM      โ†’ Apna khud ka heart diagram banao (memory se!)
7:00 PM      โ†’ 20 questions solve karo (Section 8)
Sone se pehle โ†’ Score check karo, weak areas note karo
Kal Respiratory System mangna - next chapter ready karunga! ๐Ÿ’ช
This is a shared conversation. Sign in to Orris to start your own chat.