I want study exam guide for Nursing Management and leadership with Answers for Bsc nursing 6th sem
BSc Nursing 6th semester Nursing Management Leadership exam questions answers
https://nurseslabs.com/leadership-management-nursing-test-ba…
| Function | Description |
|---|---|
| Planning | Setting goals and determining how to achieve them |
| Organizing | Arranging resources and tasks |
| Staffing | Recruiting, selecting, training personnel |
| Directing | Leading, guiding, supervising |
| COordinating | Harmonizing all activities |
| Reporting | Keeping records, maintaining communication |
| Budgeting | Financial planning and control |
| Leadership | Management |
|---|---|
| Involves influencing people | Involves managing resources |
| Based on personal qualities | Based on formal authority |
| Focuses on vision/change | Focuses on stability/control |
| Not necessarily a formal role | Always a formal role |
| Concerned with "doing the right things" | Concerned with "doing things right" |
| People-oriented | Task-oriented |
No. of nurses = (Total nursing care hours needed per day) / (Hours per nurse per shift)
| Topic | Key Points |
|---|---|
| Chain of Command | Line of authority from top to bottom in an organization |
| Span of Control | Number of subordinates a manager effectively supervises (ideal: 5-7) |
| Job Description | Written description of duties, responsibilities, reporting relationships |
| Gantt Chart | Bar chart that shows project schedule; used in planning |
| Critical Path Method (CPM) | Planning tool to identify longest sequence of tasks |
| PERT | Program Evaluation and Review Technique; for time estimation |
| Grievance | Formal complaint by an employee about work conditions |
| Conflict Resolution | Negotiation, mediation, arbitration, collaboration |
| Continuing Education | Lifelong learning for professional development |
| Stress Management | Time management, relaxation, exercise, counseling |
| Tele-nursing | Providing nursing services via telecommunication |
| Florence Nightingale's Management | Pioneer of nursing management; environmental theory; statistics-based management |
Generate a comprehensive Word document with this study guide for offline access
mkdir -p /tmp/workspace/nursing-management && ls /tmp/workspace/
~/nursing-management/generate_guide.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy
doc = Document()
# ── Page margins ──────────────────────────────────────────────────────────────
from docx.shared import Inches
section = doc.sections[0]
section.top_margin = Inches(1)
section.bottom_margin = Inches(1)
section.left_margin = Inches(1.2)
section.right_margin = Inches(1.2)
# ── Default Normal style ──────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Arial"
normal.font.size = Pt(11)
# ── Heading styles ─────────────────────────────────────────────────────────────
def set_heading_style(doc, level, size, color_hex, bold=True):
style = doc.styles[f"Heading {level}"]
style.font.name = "Arial"
style.font.size = Pt(size)
style.font.bold = bold
style.font.color.rgb = RGBColor.from_string(color_hex)
set_heading_style(doc, 1, 18, "1B4F72") # dark blue
set_heading_style(doc, 2, 14, "1A5276") # medium blue
set_heading_style(doc, 3, 12, "1F618D") # lighter blue
set_heading_style(doc, 4, 11, "2874A6") # accent
# ── Helpers ────────────────────────────────────────────────────────────────────
def add_heading(text, level=1):
doc.add_heading(text, level=level)
def add_para(text, bold=False, italic=False, size=11, color_hex=None, align=None):
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
if color_hex:
run.font.color.rgb = RGBColor.from_string(color_hex)
if align:
p.alignment = align
return p
def add_bullet(text, level=0, bold_prefix=None):
"""Add a bullet point; optionally bold a prefix before ': '"""
p = doc.add_paragraph(style="List Bullet")
p.paragraph_format.left_indent = Inches(0.3 * (level + 1))
if bold_prefix and ': ' in text:
prefix, rest = text.split(': ', 1)
r1 = p.add_run(prefix + ': ')
r1.font.bold = True
r1.font.name = "Arial"
r1.font.size = Pt(11)
r2 = p.add_run(rest)
r2.font.name = "Arial"
r2.font.size = Pt(11)
else:
run = p.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(11)
return p
def add_numbered(text, bold_prefix=None):
p = doc.add_paragraph(style="List Number")
if bold_prefix and ': ' in text:
prefix, rest = text.split(': ', 1)
r1 = p.add_run(prefix + ': ')
r1.font.bold = True
r1.font.name = "Arial"
r1.font.size = Pt(11)
r2 = p.add_run(rest)
r2.font.name = "Arial"
r2.font.size = Pt(11)
else:
run = p.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(11)
return p
def add_table(headers, rows, col_widths=None):
table = doc.add_table(rows=1 + len(rows), cols=len(headers))
table.style = "Table Grid"
# Header row
hdr = table.rows[0]
for i, h in enumerate(headers):
cell = hdr.cells[i]
cell.text = ""
run = cell.paragraphs[0].add_run(h)
run.bold = True
run.font.name = "Arial"
run.font.size = Pt(10.5)
# Header background colour
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), "1B4F72")
tcPr.append(shd)
run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
# Data rows
for ri, row_data in enumerate(rows):
row = table.rows[ri + 1]
fill = "EBF5FB" if ri % 2 == 0 else "FFFFFF"
for ci, val in enumerate(row_data):
cell = row.cells[ci]
cell.text = ""
run = cell.paragraphs[0].add_run(val)
run.font.name = "Arial"
run.font.size = Pt(10)
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), fill)
tcPr.append(shd)
# Column widths
if col_widths:
for i, w in enumerate(col_widths):
for row in table.rows:
row.cells[i].width = Inches(w)
doc.add_paragraph() # spacing after table
return table
def add_spacer():
doc.add_paragraph()
def add_horizontal_rule():
p = doc.add_paragraph()
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
bottom = OxmlElement("w:bottom")
bottom.set(qn("w:val"), "single")
bottom.set(qn("w:sz"), "6")
bottom.set(qn("w:space"), "1")
bottom.set(qn("w:color"), "1B4F72")
pBdr.append(bottom)
pPr.append(pBdr)
def add_note_box(text):
"""Shaded paragraph acting as a tip/note box."""
p = doc.add_paragraph()
run = p.add_run(" NOTE: " + text + " ")
run.font.name = "Arial"
run.font.size = Pt(10.5)
run.font.italic = True
run.font.color.rgb = RGBColor(0x1A, 0x52, 0x76)
pPr = p._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), "D6EAF8")
pPr.append(shd)
p.paragraph_format.left_indent = Inches(0.2)
p.paragraph_format.right_indent = Inches(0.2)
p.paragraph_format.space_before = Pt(4)
p.paragraph_format.space_after = Pt(4)
# ══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════════════════
doc.add_paragraph()
doc.add_paragraph()
title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = title_p.add_run("NURSING MANAGEMENT AND LEADERSHIP")
r.font.name = "Arial"
r.font.size = Pt(24)
r.font.bold = True
r.font.color.rgb = RGBColor(0x1B, 0x4F, 0x72)
sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = sub_p.add_run("Comprehensive Exam Study Guide")
r2.font.name = "Arial"
r2.font.size = Pt(16)
r2.font.bold = False
r2.font.color.rgb = RGBColor(0x21, 0x8B, 0xC0)
doc.add_paragraph()
sem_p = doc.add_paragraph()
sem_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = sem_p.add_run("B.Sc Nursing | 6th Semester")
r3.font.name = "Arial"
r3.font.size = Pt(13)
r3.font.bold = True
r3.font.color.rgb = RGBColor(0x17, 0x20, 0x2A)
doc.add_paragraph()
council_p = doc.add_paragraph()
council_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r4 = council_p.add_run("As per Indian Nursing Council (INC) Syllabus")
r4.font.name = "Arial"
r4.font.size = Pt(11)
r4.font.italic = True
r4.font.color.rgb = RGBColor(0x5D, 0x6D, 0x7E)
doc.add_paragraph()
doc.add_paragraph()
doc.add_paragraph()
note_p = doc.add_paragraph()
note_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r5 = note_p.add_run("Includes: Definitions | Theories | Q&A | Tables | Exam Tips | Important Short Notes")
r5.font.name = "Arial"
r5.font.size = Pt(10)
r5.font.italic = True
r5.font.color.rgb = RGBColor(0x5D, 0x6D, 0x7E)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# TABLE OF CONTENTS (manual)
# ══════════════════════════════════════════════════════════════════════════════
add_heading("TABLE OF CONTENTS", level=1)
toc_items = [
("Unit 1", "Introduction to Management", "3"),
("Unit 2", "Leadership in Nursing", "5"),
("Unit 3", "Planning and Organizing", "7"),
("Unit 4", "Staffing and Scheduling", "9"),
("Unit 5", "Budgeting in Nursing", "11"),
("Unit 6", "Motivation and Communication", "13"),
("Unit 7", "Quality Management", "15"),
("Unit 8", "Legal and Ethical Aspects", "17"),
("Unit 9", "Performance Appraisal & Supervision", "19"),
("Unit 10", "Nursing Audit and Records", "21"),
("", "Important Short Notes", "23"),
("", "Most Frequently Asked Exam Questions", "24"),
("", "Exam Tips for High Scores", "25"),
]
toc_table = doc.add_table(rows=len(toc_items), cols=3)
toc_table.style = "Table Grid"
col_w = [0.9, 4.5, 0.6]
for i, (unit, topic, page) in enumerate(toc_items):
row = toc_table.rows[i]
for ci, val in enumerate([unit, topic, page]):
cell = row.cells[ci]
cell.text = val
cell.paragraphs[0].runs[0].font.name = "Arial"
cell.paragraphs[0].runs[0].font.size = Pt(10.5)
if ci == 0:
cell.paragraphs[0].runs[0].font.bold = True
cell.width = Inches(col_w[ci])
fill = "EBF5FB" if i % 2 == 0 else "FFFFFF"
for ci in range(3):
tc = row.cells[ci]._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), fill)
tcPr.append(shd)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 1: INTRODUCTION TO MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 1: INTRODUCTION TO MANAGEMENT", level=1)
add_horizontal_rule()
add_heading("Q1. Define Management. Explain its Principles.", level=2)
add_para("Definition:", bold=True)
add_para("Management is the process of planning, organizing, staffing, directing, and controlling available human, material, and financial resources to achieve organizational goals effectively and efficiently.")
add_bullet("Fayol's definition: \"To manage is to forecast and plan, to organize, to command, to coordinate and to control.\"", bold_prefix=None)
add_spacer()
add_para("14 Principles of Management (Henri Fayol):", bold=True)
fayol = [
"Division of Work: Specialization increases efficiency",
"Authority and Responsibility: Authority to give orders; responsibility to accept consequences",
"Discipline: Obedience and respect for rules",
"Unity of Command: Each employee receives orders from one superior only",
"Unity of Direction: One head, one plan for a group of activities",
"Subordination of Individual Interest: Organizational goal above personal interest",
"Remuneration: Fair payment to employees",
"Centralization: Degree to which decision-making is concentrated",
"Scalar Chain: Line of authority from top to bottom",
"Order: Right person at the right place",
"Equity: Combination of kindness and justice",
"Stability of Tenure: Minimizing employee turnover",
"Initiative: Encouraging employees to take initiative",
"Esprit de Corps: Team spirit and unity",
]
for item in fayol:
add_numbered(item, bold_prefix=True)
add_spacer()
add_heading("Q2. What are the Functions of Management? (POSDCORB)", level=2)
add_para("POSDCORB (Luther Gulick) - Functions of Management:", bold=True)
add_table(
["Function", "Full Form", "Description"],
[
["P", "Planning", "Setting goals and determining how to achieve them"],
["O", "Organizing", "Arranging resources and tasks to achieve goals"],
["S", "Staffing", "Recruiting, selecting, training personnel"],
["D", "Directing", "Leading, guiding, supervising staff"],
["CO","Coordinating","Harmonizing all activities for common purpose"],
["R", "Reporting", "Keeping records, maintaining communication"],
["B", "Budgeting", "Financial planning and control of resources"],
],
col_widths=[0.4, 1.3, 4.3]
)
add_heading("Q3. Explain the Levels of Management.", level=2)
add_para("Three Levels of Management:", bold=True)
add_bullet("Top-Level (Strategic Management): Director of Nursing, Chief Nursing Officer. Policy making, long-term planning. Responsible for the whole organization.", bold_prefix=None)
add_bullet("Middle-Level (Tactical Management): Nursing Supervisor, Ward Sister. Implementing policies, coordinating departments. Bridge between top and lower management.", bold_prefix=None)
add_bullet("Lower/First-Level (Operational Management): Staff Nurse, Charge Nurse. Day-to-day patient care supervision. Directly supervises non-managerial employees.", bold_prefix=None)
add_table(
["Level", "Designation Examples", "Primary Role"],
[
["Top Level", "Director of Nursing, CNO", "Policy making, strategic planning"],
["Middle Level", "Nursing Supervisor, Ward Sister","Coordination, policy implementation"],
["Lower Level", "Staff Nurse, Charge Nurse", "Direct patient care, supervision"],
],
col_widths=[1.5, 2.5, 3.0]
)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 2: LEADERSHIP IN NURSING
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 2: LEADERSHIP IN NURSING", level=1)
add_horizontal_rule()
add_heading("Q4. Define Leadership. Differentiate between Leadership and Management.", level=2)
add_para("Definition of Leadership:", bold=True)
add_para("Leadership is the ability to guide, influence, and motivate others toward achieving a common goal.")
add_spacer()
add_table(
["Leadership", "Management"],
[
["Involves influencing people", "Involves managing resources"],
["Based on personal qualities", "Based on formal authority"],
["Focuses on vision and change", "Focuses on stability and control"],
["Not necessarily a formal role", "Always a formal role"],
["Concerned with 'doing the right things'","Concerned with 'doing things right'"],
["People-oriented", "Task-oriented"],
],
col_widths=[3.0, 3.0]
)
add_heading("Q5. Explain Theories and Styles of Leadership.", level=2)
add_para("A. Trait Theory:", bold=True)
add_para("Leaders are born, not made. Leaders possess certain innate traits such as intelligence, confidence, integrity, and decisiveness.")
add_para("B. Behavioral Theories (Leadership Styles):", bold=True)
styles = [
("Autocratic (Authoritarian)", "Leader makes all decisions alone; no staff input. Best in crisis/emergencies."),
("Democratic (Participative)", "Decisions made with group input; high morale. Best for most nursing situations."),
("Laissez-Faire (Free-Rein)", "Full freedom to staff; leader provides minimal guidance. Good for highly skilled teams."),
("Paternalistic", "Leader acts as a father figure; makes decisions but considers staff welfare."),
]
for name, desc in styles:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": ")
r1.bold = True; r1.font.name = "Arial"; r1.font.size = Pt(11)
r2 = p.add_run(desc)
r2.font.name = "Arial"; r2.font.size = Pt(11)
add_para("C. Situational/Contingency Theories:", bold=True)
add_bullet("Hersey & Blanchard's Situational Leadership: Style depends on follower readiness (Telling, Selling, Participating, Delegating)", bold_prefix=None)
add_bullet("Fiedler's Contingency Model: Effectiveness depends on match between leadership style and situation", bold_prefix=None)
add_para("D. Transformational vs. Transactional:", bold=True)
add_bullet("Transformational: Inspires and motivates; focuses on change and vision", bold_prefix=None)
add_bullet("Transactional: Based on reward and punishment; focuses on routine tasks", bold_prefix=None)
add_para("E. Servant Leadership:", bold=True)
add_para("Leader serves the needs of staff first; promotes growth and well-being of team members.")
add_heading("Q6. Qualities of an Effective Nurse Leader.", level=2)
qualities = [
"Clinical competence and knowledge",
"Good communication skills",
"Decision-making ability",
"Empathy and emotional intelligence",
"Integrity and honesty",
"Problem-solving skills",
"Delegation ability",
"Ability to motivate others",
"Accountability",
"Team-building skills",
"Visionary thinking",
"Flexibility and adaptability",
]
for q in qualities:
add_bullet(q)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 3: PLANNING AND ORGANIZING
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 3: PLANNING AND ORGANIZING", level=1)
add_horizontal_rule()
add_heading("Q7. Define Planning. Explain its Types and Steps.", level=2)
add_para("Definition:", bold=True)
add_para("Planning is the process of determining in advance what is to be done, how it is to be done, when it is to be done, and by whom.")
add_spacer()
add_para("Types of Planning:", bold=True)
plan_types = [
("Strategic Planning", "Long-term (5-10 years); overall organizational direction"),
("Tactical Planning", "Medium-term (1-5 years); departmental level"),
("Operational Planning","Short-term (daily/weekly); routine activities"),
("Contingency Planning","For unexpected events and emergencies"),
]
for name, desc in plan_types:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": "); r1.bold = True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Steps in Planning:", bold=True)
steps = [
"Establish objectives/goals",
"Assess the current situation",
"Identify alternatives",
"Evaluate alternatives",
"Select the best alternative",
"Implement the plan",
"Evaluate and monitor outcomes",
]
for s in steps:
add_numbered(s)
add_heading("Q8. Define Organizing. Explain Organizational Charts.", level=2)
add_para("Definition:", bold=True)
add_para("Organizing is the process of establishing relationships between people, work, and resources to achieve organizational objectives.")
add_spacer()
add_para("Types of Organizational Structures:", bold=True)
org_types = [
("Line Organization", "Simplest; authority flows directly top to bottom; clear chain of command"),
("Line and Staff Organization","Line authority + advisory staff; most common in hospitals"),
("Functional Organization", "Based on function/specialization; multiple bosses possible"),
("Matrix Organization", "Combination of functional and project structures"),
]
for name, desc in org_types:
p = doc.add_paragraph(style="List Number")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_note_box("Span of Control: Number of subordinates a manager can effectively supervise. Ideal span = 5 to 7 persons.")
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 4: STAFFING AND SCHEDULING
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 4: STAFFING AND SCHEDULING", level=1)
add_horizontal_rule()
add_heading("Q9. Define Staffing. Explain the Steps in Staffing.", level=2)
add_para("Definition:", bold=True)
add_para("Staffing is the process of acquiring, deploying, and retaining a sufficient quantity and quality of staff to produce positive impacts on the organization's effectiveness.")
add_spacer()
add_para("Steps in Staffing:", bold=True)
staffing_steps = [
"Manpower planning",
"Job analysis (Job description + Job specification)",
"Recruitment (Internal/External)",
"Selection",
"Orientation/Induction",
"Training and development",
"Performance appraisal",
"Promotion, transfer, and retention",
]
for s in staffing_steps:
add_numbered(s)
add_spacer()
add_para("Nurse-to-Patient Ratio (as per Indian Nursing Council):", bold=True)
add_table(
["Ward/Unit", "Day Shift", "Night Shift"],
[
["Medical/Surgical Ward", "1:6", "1:10"],
["ICU", "1:1 or 1:2", "1:1 or 1:2"],
["OPD", "1:100","1:100"],
["Labour Room", "1:1", "1:1"],
["Nursery", "1:6", "1:6"],
],
col_widths=[2.5, 2.0, 2.0]
)
add_heading("Q10. Explain Patient Classification Systems.", level=2)
add_table(
["Category", "Level of Care", "Nursing Hours/Day"],
[
["Category I", "Minimal Care - Self-care patients", "1.5 - 2 hours"],
["Category II", "Moderate Care - Some assistance needed", "3 - 4 hours"],
["Category III", "Intensive Care - Frequent nursing intervention", "5 - 6 hours"],
["Category IV", "Critical Care - Constant attendance required", "7+ hours"],
],
col_widths=[1.5, 3.0, 2.0]
)
add_note_box("Formula: No. of nurses = Total nursing care hours needed per day / Hours per nurse per shift")
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 5: BUDGETING
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 5: BUDGETING IN NURSING", level=1)
add_horizontal_rule()
add_heading("Q11. Define Budget. Explain Types of Budgets in Nursing.", level=2)
add_para("Definition:", bold=True)
add_para("A budget is a financial plan that estimates income and expenditure over a specific period to achieve organizational objectives.")
add_spacer()
add_para("Types of Budgets by Purpose:", bold=True)
budget_types = [
("Personnel/Labour Budget", "Salaries, wages, overtime pay; largest portion of nursing budget"),
("Operating Budget", "Day-to-day expenses (supplies, drugs, linen)"),
("Capital Budget", "Major equipment, building, renovation (expenditure > Rs. 5,000, lasting >1 year)"),
("Cash Budget", "Cash inflow and outflow projection"),
]
for name, desc in budget_types:
p = doc.add_paragraph(style="List Number")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Types of Budgets by Approach:", bold=True)
add_table(
["Type", "Description"],
[
["Incremental Budget", "Based on previous year + increment; simplest approach"],
["Zero-Based Budget (ZBB)", "Every expense justified from zero; no previous assumptions"],
["Fixed Budget", "Based on one fixed level of activity"],
["Flexible Budget", "Adjusts according to volume of activity"],
["Performance Budget", "Focuses on outcomes and results achieved"],
],
col_widths=[2.5, 4.0]
)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 6: MOTIVATION AND COMMUNICATION
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 6: MOTIVATION AND COMMUNICATION", level=1)
add_horizontal_rule()
add_heading("Q12. Explain Theories of Motivation.", level=2)
add_para("A. Maslow's Hierarchy of Needs (1943):", bold=True)
maslow = [
"Physiological needs - Food, water, shelter, clothing (basic survival)",
"Safety needs - Security, stability, freedom from fear",
"Social/Love needs - Belonging, friendship, affection",
"Esteem needs - Recognition, respect, self-esteem",
"Self-actualization - Reaching full potential, peak experiences",
]
for i, m in enumerate(maslow, 1):
add_numbered(m)
add_spacer()
add_para("B. Herzberg's Two-Factor Theory:", bold=True)
add_table(
["Motivators (Satisfiers)", "Hygiene Factors (Dissatisfiers)"],
[
["Achievement", "Salary and pay"],
["Recognition", "Working conditions"],
["Responsibility", "Company policy and administration"],
["Growth", "Supervision quality"],
["Advancement", "Interpersonal relationships"],
],
col_widths=[3.0, 3.0]
)
add_para("C. McGregor's Theory X and Theory Y:", bold=True)
add_table(
["Theory X", "Theory Y"],
[
["Workers are lazy and dislike work", "Workers are self-motivated and responsible"],
["Need close supervision", "Need minimal supervision"],
["Must be coerced or threatened", "Workers seek responsibility"],
["Autocratic management style needed", "Democratic management style preferred"],
],
col_widths=[3.0, 3.0]
)
add_para("D. McClelland's Theory:", bold=True)
add_bullet("Need for Achievement (nAch): Desire to excel and succeed")
add_bullet("Need for Affiliation (nAff): Desire for interpersonal relationships")
add_bullet("Need for Power (nPow): Desire to influence and control others")
add_para("E. Vroom's Expectancy Theory:", bold=True)
add_note_box("Motivation = Expectancy x Instrumentality x Valence (MIV Formula)")
add_heading("Q13. Explain the Communication Process in Nursing.", level=2)
add_para("Definition:", bold=True)
add_para("Communication is the exchange of information, ideas, and feelings between individuals to achieve understanding.")
add_spacer()
add_para("Elements of the Communication Process:", bold=True)
comm_steps = [
("Sender", "Encodes the message"),
("Message", "Verbal, written, or non-verbal content"),
("Channel", "Medium of communication (spoken, written, electronic)"),
("Receiver", "Decodes the message"),
("Feedback", "Response from the receiver"),
("Noise", "Anything that distorts the message (barrier)"),
]
for name, desc in comm_steps:
p = doc.add_paragraph(style="List Number")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Barriers to Communication:", bold=True)
barriers = ["Physical barriers (noise, distance)", "Language barriers", "Psychological barriers (stress, emotions)", "Cultural barriers", "Semantic barriers (different meanings of words)"]
for b in barriers:
add_bullet(b)
add_spacer()
add_para("Types of Communication in Hospital:", bold=True)
add_table(
["Type", "Description"],
[
["Formal", "Through official channels (letters, reports, memos)"],
["Informal", "Grapevine, word of mouth"],
["Vertical", "Top-down (downward) or bottom-up (upward)"],
["Horizontal","Between peers at the same level"],
],
col_widths=[2.0, 4.5]
)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 7: QUALITY MANAGEMENT
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 7: QUALITY MANAGEMENT IN NURSING", level=1)
add_horizontal_rule()
add_heading("Q14. Explain Total Quality Management (TQM).", level=2)
add_para("Definition:", bold=True)
add_para("TQM is a management approach focused on continuous quality improvement involving all members of an organization, with the ultimate goal of customer/patient satisfaction.")
add_spacer()
add_para("IOM's 6 Aims for Quality Care:", bold=True)
aims = ["Safe", "Effective", "Patient-centered", "Timely", "Efficient", "Equitable"]
for a in aims:
add_bullet(a)
add_spacer()
add_para("Principles of TQM:", bold=True)
tqm_principles = ["Customer focus", "Total employee involvement", "Process-centered approach", "Integrated system", "Strategic approach", "Continual improvement", "Fact-based decision making", "Communication"]
for i, t in enumerate(tqm_principles, 1):
add_numbered(t)
add_spacer()
add_para("Quality Improvement Tools:", bold=True)
add_table(
["Tool", "Purpose"],
[
["PDCA Cycle (Plan-Do-Check-Act)", "Deming's cycle for continuous improvement"],
["Fishbone/Ishikawa Diagram", "Cause and effect analysis"],
["Pareto Chart", "80/20 rule - identifies major causes"],
["Flow Chart", "Mapping and analyzing processes"],
["Control Chart", "Statistical process control over time"],
["Histogram", "Distribution of data/frequency"],
],
col_widths=[2.8, 3.8]
)
add_heading("Q15. What is Accreditation? Explain NABH.", level=2)
add_para("Definition:", bold=True)
add_para("Accreditation is a formal process by which a recognized body evaluates and recognizes that an organization meets certain pre-determined standards of quality and safety.")
add_spacer()
add_para("NABH (National Accreditation Board for Hospitals and Healthcare Providers):", bold=True)
nabh_points = [
"Established in 2005 under Quality Council of India",
"Sets standards for healthcare organizations in India",
"Objective: Continual improvement in quality of healthcare",
]
for n in nabh_points:
add_bullet(n)
add_spacer()
add_para("NABH Standards Cover:", bold=True)
nabh_standards = [
"Access, assessment, and continuity of care",
"Patient and family rights",
"Care of patients",
"Management of medication",
"Hospital infection control",
"Continuous quality improvement",
"Responsibilities of management",
"Facility management and safety",
"Human resource management",
"Information management",
]
for s in nabh_standards:
add_bullet(s)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 8: LEGAL AND ETHICAL ASPECTS
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 8: LEGAL AND ETHICAL ASPECTS OF NURSING", level=1)
add_horizontal_rule()
add_heading("Q16. Explain Legal Responsibilities of a Nurse.", level=2)
add_para("Key Legal Concepts:", bold=True)
legal = [
("Negligence", "Failure to provide standard of care expected of a reasonable nurse, resulting in patient harm"),
("Malpractice", "Professional negligence by a nurse/healthcare provider"),
("Assault and Battery", "Threat of harm (assault) or actual unlawful touch without consent (battery)"),
("Slander and Libel", "Verbal (slander) and written (libel) defamation"),
("False Imprisonment", "Unlawful restriction of a patient's freedom to move"),
("Informed Consent", "Patient's right to know about treatment and agree before it proceeds"),
]
for name, desc in legal:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Code of Ethics for Nurses (ICN/INC):", bold=True)
ethics = [
("Autonomy", "Respect for patient's right to make decisions"),
("Beneficence", "Do good - act in the patient's best interest"),
("Non-maleficence", "Do no harm"),
("Justice", "Fairness and equal treatment"),
("Fidelity", "Keep promises and maintain trust"),
("Veracity", "Truth-telling and honesty with patients"),
]
add_table(
["Ethical Principle", "Meaning"],
[[name, desc] for name, desc in ethics],
col_widths=[2.5, 4.0]
)
add_heading("Q17. Define Delegation. Explain its Principles.", level=2)
add_para("Definition:", bold=True)
add_para("Delegation is the process of assigning work, authority, and responsibility to another person to accomplish specific tasks while retaining overall accountability.")
add_spacer()
add_para("The 5 Rights of Delegation:", bold=True)
rights = [
("Right Task", "Appropriate task that can be safely delegated"),
("Right Circumstances", "Suitable setting and condition for the delegation"),
("Right Person", "Qualified and competent person to receive the task"),
("Right Direction/Communication","Clear instructions given on what is expected"),
("Right Supervision/Evaluation", "Monitor and evaluate outcomes after delegation"),
]
for i, (name, desc) in enumerate(rights, 1):
p = doc.add_paragraph(style="List Number")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Barriers to Delegation:", bold=True)
barriers_del = ["Fear of loss of control", "Lack of trust in subordinates", "Perfectionism", "Lack of time to train delegates", "Insecurity about own position"]
for b in barriers_del:
add_bullet(b)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 9: PERFORMANCE APPRAISAL
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 9: PERFORMANCE APPRAISAL AND SUPERVISION", level=1)
add_horizontal_rule()
add_heading("Q18. Define Performance Appraisal. Explain its Methods.", level=2)
add_para("Definition:", bold=True)
add_para("Performance appraisal is a systematic evaluation of an employee's performance on the job and their potential for future development.")
add_spacer()
add_para("Traditional Methods:", bold=True)
trad = [
("Rating Scale Method", "Traits rated on a numerical scale (1-5); simple and most commonly used"),
("Checklist Method", "Yes/No checklist of expected behaviors"),
("Essay Method", "Narrative description of employee performance"),
("Critical Incident Method","Records of specific notable good or poor behaviors"),
("Ranking Method", "Employees ranked from best to worst performer"),
("360-Degree Feedback", "Feedback from superiors, peers, subordinates, and self-assessment"),
]
for name, desc in trad:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Modern Methods:", bold=True)
modern = [
("MBO (Management by Objectives)", "Goals set jointly by manager and employee; measured at end of period"),
("BARS (Behaviorally Anchored Rating Scale)", "Combines rating scale with specific behavioral examples"),
("Assessment Center", "Multiple evaluation techniques used together for comprehensive assessment"),
]
for name, desc in modern:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# UNIT 10: NURSING AUDIT AND RECORDS
# ══════════════════════════════════════════════════════════════════════════════
add_heading("UNIT 10: NURSING AUDIT AND RECORDS", level=1)
add_horizontal_rule()
add_heading("Q19. What is Nursing Audit? Explain its Types.", level=2)
add_para("Definition:", bold=True)
add_para("Nursing audit is a thorough investigation of the quality of nursing care given to a patient by examining the nursing records and charts against established standards.")
add_spacer()
add_para("Types of Nursing Audit:", bold=True)
audit_types = [
("Retrospective Audit", "Review of closed/completed patient records after discharge"),
("Concurrent Audit", "Review of open records while patient is still in the hospital"),
("Prospective Audit", "Planning and setting standards before care is given"),
]
for name, desc in audit_types:
p = doc.add_paragraph(style="List Number")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Steps in Nursing Audit:", bold=True)
audit_steps = ["Establish criteria/standards", "Collect data (review records)", "Compare performance with standards", "Identify gaps/deficiencies", "Take corrective actions", "Follow-up and re-evaluate"]
for s in audit_steps:
add_numbered(s)
add_heading("Q20. Explain Types of Records and Reports in Nursing.", level=2)
add_para("Common Nursing Records:", bold=True)
records = ["Admission records", "Nursing care plan", "Medication administration record (MAR)", "Vital signs chart", "Intake-output chart", "Discharge summary"]
for r_item in records:
add_bullet(r_item)
add_spacer()
add_para("Common Nursing Reports:", bold=True)
reports = [
("Change of Shift Report (Handover)", "Oral or written; outgoing nurse gives information to incoming nurse"),
("Incident Report", "Documentation of unusual events such as falls or medication errors"),
("Kardex", "Quick-reference summary of patient care information"),
("SOAP Notes", "Subjective, Objective, Assessment, Plan - structured note format"),
]
for name, desc in reports:
p = doc.add_paragraph(style="List Bullet")
r1 = p.add_run(name + ": "); r1.bold=True; r1.font.name="Arial"; r1.font.size=Pt(11)
r2 = p.add_run(desc); r2.font.name="Arial"; r2.font.size=Pt(11)
add_spacer()
add_para("Principles of Good Documentation:", bold=True)
principles = ["Accurate, complete, and timely", "Legible, clear, and objective", "Confidential and secure", "Factual (not opinions or assumptions)", "Signed with full name, date, and time"]
for p_item in principles:
add_bullet(p_item)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# IMPORTANT SHORT NOTES
# ══════════════════════════════════════════════════════════════════════════════
add_heading("IMPORTANT SHORT NOTES (5-Mark Questions)", level=1)
add_horizontal_rule()
add_table(
["Topic", "Key Points for 5-Mark Answer"],
[
["Chain of Command", "Line of authority from top to bottom in an organization; every person accountable to one superior"],
["Span of Control", "Number of subordinates a manager can effectively supervise; ideal = 5-7 persons"],
["Job Description", "Written document listing duties, responsibilities, qualifications, reporting relationships for a post"],
["Gantt Chart", "Horizontal bar chart showing project schedule; used in planning activities and timelines"],
["CPM (Critical Path Method)","Planning tool that identifies the longest sequence of tasks; determines minimum project duration"],
["PERT", "Program Evaluation and Review Technique; used for time estimation in complex projects"],
["Grievance", "Formal complaint by an employee about working conditions, policies, or treatment"],
["Conflict Resolution", "Approaches: Negotiation, Mediation, Arbitration, Collaboration, Compromise"],
["Continuing Education", "Lifelong learning for nurses to update knowledge, skills, and professional development"],
["Stress Management", "Techniques: Time management, relaxation exercises, physical activity, counseling, social support"],
["Tele-nursing", "Providing nursing assessment, advice, and education to patients via telecommunication technology"],
["Florence Nightingale", "Pioneer of nursing management; used statistics; improved hospital environment; reduced mortality in Crimea"],
["INC", "Indian Nursing Council; established 1947; regulates nursing education and practice; maintains uniform standards"],
["Induction/Orientation", "Formal introduction of new employee to the organization, policies, environment, and colleagues"],
["MIS", "Management Information System; collects, processes, stores data to support managerial decision-making"],
],
col_widths=[2.2, 4.5]
)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# MOST FREQUENTLY ASKED EXAM QUESTIONS
# ══════════════════════════════════════════════════════════════════════════════
add_heading("MOST FREQUENTLY ASKED EXAM QUESTIONS", level=1)
add_horizontal_rule()
freq_qs = [
("10 marks", "Define management and explain its 14 principles (Fayol)"),
("10 marks", "Describe leadership styles with nursing-specific examples"),
("10 marks", "Explain budgeting in nursing with types and steps"),
("10 marks", "Explain staffing - steps and nurse-patient ratio"),
("10 marks", "Write about Total Quality Management (TQM) and quality tools"),
("10 marks", "Describe performance appraisal and its methods"),
("10 marks", "Explain communication process, types, and barriers in nursing"),
("5 marks", "Explain Maslow's hierarchy of needs in relation to nursing management"),
("5 marks", "Write about NABH and its importance in healthcare"),
("5 marks", "Define delegation and explain the 5 rights of delegation"),
("5 marks", "Write a note on nursing audit - types and steps"),
("5 marks", "Explain legal responsibilities of a nurse"),
("5 marks", "Write about conflict resolution in nursing"),
("5 marks", "Explain Herzberg's two-factor theory of motivation"),
("5 marks", "Describe PDCA cycle with example"),
]
add_table(
["Marks", "Question"],
freq_qs,
col_widths=[1.2, 5.5]
)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# EXAM TIPS
# ══════════════════════════════════════════════════════════════════════════════
add_heading("EXAM TIPS FOR HIGH SCORES", level=1)
add_horizontal_rule()
add_heading("Answer Format (Follow Every Time):", level=2)
format_steps = [
"Introduction (2-3 lines defining the topic)",
"Definition (with author/theorist name if applicable)",
"Types / Principles / Theories (as asked in the question)",
"Advantages / Benefits",
"Disadvantages / Limitations / Barriers",
"Nursing implications or role of the nurse",
"Conclusion (2-3 lines summarizing key points)",
]
for i, s in enumerate(format_steps, 1):
add_numbered(s)
add_spacer()
add_heading("Writing Tips:", level=2)
tips = [
"Include relevant diagrams: Maslow's triangle, organizational charts, PDCA cycle",
"Always name the theorist alongside each theory (e.g., Maslow, 1943)",
"Give nursing-specific examples (e.g., ICU staffing, hospital budgeting scenarios)",
"Spell out all abbreviations at first use (TQM, NABH, INC, MBO, BARS)",
"Mention Indian context: INC, NABH, NPC, Indian Nursing Acts where applicable",
"Use subheadings, numbered lists, and tables to organize your answer clearly",
"Write at least 8-9 points when answering about objectives or principles",
"For 10-mark answers: aim for 3-4 pages; for 5-mark answers: aim for 1.5-2 pages",
"Underline definitions and key terms to help the examiner identify them quickly",
"Always write a brief conclusion to complete your answer properly",
]
for t in tips:
add_bullet(t)
add_spacer()
add_heading("Topic Priority (High-Yield for Exams):", level=2)
priority = [
("MUST KNOW (appear every year)", ["Management definitions & Fayol's principles", "Leadership styles & theories", "Maslow's & Herzberg's motivation theories", "NABH & TQM", "Staffing & nurse-patient ratio", "Nursing audit types & steps"]),
("IMPORTANT (frequently tested)", ["Budgeting types", "Delegation & 5 rights", "Performance appraisal methods", "Communication process & barriers", "Legal aspects & Code of Ethics"]),
("GOOD TO KNOW (short notes)", ["Gantt chart, CPM, PERT", "Organizational structures", "Conflict resolution", "Patient classification", "MBO and BARS"]),
]
for category, topics in priority:
add_para(category + ":", bold=True)
for t in topics:
add_bullet(t)
add_spacer()
# ── Footer note ────────────────────────────────────────────────────────────────
add_horizontal_rule()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("BSc Nursing 6th Semester | Nursing Management & Leadership | Study Guide | Indian Nursing Council Syllabus")
r.font.name = "Arial"
r.font.size = Pt(9)
r.font.italic = True
r.font.color.rgb = RGBColor(0x7F, 0x8C, 0x8D)
# ══════════════════════════════════════════════════════════════════════════════
# SAVE
# ══════════════════════════════════════════════════════════════════════════════
output_path = "/tmp/workspace/nursing-management/Nursing_Management_Leadership_Study_Guide_BSc6thSem.docx"
doc.save(output_path)
print(f"Saved: {output_path}")
cd /tmp/workspace/nursing-management && python3 generate_guide.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/nursing-management/Nursing_Management_Leadership_Study_Guide_BSc6thSem.docx') headings = [p.text for p in doc.paragraphs if p.style.name.startswith('Heading')] print(f'Total paragraphs: {len(doc.paragraphs)}') print(f'Total tables: {len(doc.tables)}') print('Headings found:') for h in headings: print(' -', h) "
Nursing Management Leadership Study Guide BSc6thSem
Word Document · DOCX
| Feature | Details |
|---|---|
| Pages | ~25 professionally formatted pages |
| Headings | 34 headings across 10 units |
| Tables | 14 color-coded tables (blue headers, alternating rows) |
| Questions | 20 full Q&A (10-mark and 5-mark format) |
| Cover page | Title, semester, INC syllabus label |
| Table of Contents | Manual TOC listing all 10 units |
| Note boxes | Highlighted tip/formula boxes (e.g., nurse-patient ratio formula) |
| Short notes table | 15 topics ready for 5-mark answers |
| Exam tips section | Answer format template, writing tips, topic priority list |
| Frequently asked Qs | 15 high-yield questions with mark weightage |
Generate a practice test with 20 MCQs on Management & Leadership
~/nursing-management/generate_mcq.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
# ── Margins ───────────────────────────────────────────────────────────────────
section = doc.sections[0]
section.top_margin = Inches(1)
section.bottom_margin = Inches(1)
section.left_margin = Inches(1.2)
section.right_margin = Inches(1.2)
# ── Default style ─────────────────────────────────────────────────────────────
normal = doc.styles["Normal"]
normal.font.name = "Arial"
normal.font.size = Pt(11)
def set_heading_style(doc, level, size, color_hex, bold=True):
style = doc.styles[f"Heading {level}"]
style.font.name = "Arial"
style.font.size = Pt(size)
style.font.bold = bold
style.font.color.rgb = RGBColor.from_string(color_hex)
set_heading_style(doc, 1, 18, "1B4F72")
set_heading_style(doc, 2, 13, "1A5276")
set_heading_style(doc, 3, 11, "1F618D")
# ── Helpers ────────────────────────────────────────────────────────────────────
def add_shaded_para(text, fill="D6EAF8", font_color="1A5276", size=10.5, bold=False, italic=False, center=False):
p = doc.add_paragraph()
if center:
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = RGBColor.from_string(font_color)
pPr = p._p.get_or_add_pPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), fill)
pPr.append(shd)
p.paragraph_format.left_indent = Inches(0.15)
p.paragraph_format.right_indent = Inches(0.15)
p.paragraph_format.space_before = Pt(3)
p.paragraph_format.space_after = Pt(3)
return p
def add_para(text, bold=False, italic=False, size=11, color_hex=None, indent=0):
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
if color_hex:
run.font.color.rgb = RGBColor.from_string(color_hex)
if indent:
p.paragraph_format.left_indent = Inches(indent)
return p
def add_hr(color="1B4F72"):
p = doc.add_paragraph()
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
bottom = OxmlElement("w:bottom")
bottom.set(qn("w:val"), "single")
bottom.set(qn("w:sz"), "6")
bottom.set(qn("w:space"), "1")
bottom.set(qn("w:color"), color)
pBdr.append(bottom)
pPr.append(pBdr)
def add_answer_table(answers):
"""Single-row table with answer key."""
table = doc.add_table(rows=2, cols=len(answers))
table.style = "Table Grid"
fills = ["1B4F72", "1A5276", "1F618D", "2874A6", "21618C",
"1B4F72", "1A5276", "1F618D", "2874A6", "21618C",
"1B4F72", "1A5276", "1F618D", "2874A6", "21618C",
"1B4F72", "1A5276", "1F618D", "2874A6", "21618C"]
for i, (qnum, ans) in enumerate(answers):
# Question number cell
c0 = table.rows[0].cells[i]
c0.text = ""
r = c0.paragraphs[0].add_run(str(qnum))
r.font.bold = True; r.font.name = "Arial"; r.font.size = Pt(9)
r.font.color.rgb = RGBColor(0xFF,0xFF,0xFF)
c0.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
tc = c0._tc; tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"),"clear"); shd.set(qn("w:color"),"auto")
shd.set(qn("w:fill"), fills[i]); tcPr.append(shd)
# Answer cell
c1 = table.rows[1].cells[i]
c1.text = ""
r2 = c1.paragraphs[0].add_run(ans)
r2.font.bold = True; r2.font.name = "Arial"; r2.font.size = Pt(10)
r2.font.color.rgb = RGBColor(0x1B,0x4F,0x72)
c1.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
tc2 = c1._tc; tcPr2 = tc2.get_or_add_tcPr()
shd2 = OxmlElement("w:shd")
shd2.set(qn("w:val"),"clear"); shd2.set(qn("w:color"),"auto")
fill2 = "EBF5FB" if i % 2 == 0 else "D6EAF8"
shd2.set(qn("w:fill"), fill2); tcPr2.append(shd2)
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# COVER
# ══════════════════════════════════════════════════════════════════════════════
doc.add_paragraph()
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = p.add_run("NURSING MANAGEMENT & LEADERSHIP")
r.font.name="Arial"; r.font.size=Pt(22); r.font.bold=True
r.font.color.rgb = RGBColor(0x1B,0x4F,0x72)
p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = p2.add_run("Practice Test | 20 Multiple Choice Questions")
r2.font.name="Arial"; r2.font.size=Pt(14)
r2.font.color.rgb = RGBColor(0x21,0x8B,0xC0)
doc.add_paragraph()
p3 = doc.add_paragraph()
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = p3.add_run("B.Sc Nursing | 6th Semester | Indian Nursing Council Syllabus")
r3.font.name="Arial"; r3.font.size=Pt(11); r3.font.bold=True
r3.font.color.rgb = RGBColor(0x17,0x20,0x2A)
doc.add_paragraph()
add_shaded_para(
" Instructions: Each question carries 1 mark. Choose the single best answer. "
"Time allowed: 25 minutes. Answer key is provided at the end of this document. ",
fill="1B4F72", font_color="FFFFFF", size=10.5, bold=False, center=True
)
doc.add_paragraph()
add_hr()
doc.add_paragraph()
# ══════════════════════════════════════════════════════════════════════════════
# MCQ DATA
# Each entry: (number, topic_tag, question, [A,B,C,D], correct_letter, explanation)
# ══════════════════════════════════════════════════════════════════════════════
mcqs = [
(
1, "Management Principles",
"According to Henri Fayol, how many principles of management are there?",
["A. 10", "B. 12", "C. 14", "D. 16"],
"C",
"Henri Fayol identified 14 principles of management in his work 'General and Industrial Management' (1916). These include Division of Work, Authority, Discipline, Unity of Command, and others."
),
(
2, "Management Functions",
"The acronym POSDCORB was given by:",
["A. Henri Fayol", "B. Luther Gulick", "C. Frederick Taylor", "D. Elton Mayo"],
"B",
"POSDCORB (Planning, Organizing, Staffing, Directing, Coordinating, Reporting, Budgeting) was coined by Luther Gulick and Lyndall Urwick in 1937 to describe the functions of management."
),
(
3, "Management Levels",
"A Ward Sister/Nursing Supervisor belongs to which level of management?",
["A. Top-level management", "B. Middle-level management", "C. Lower-level management", "D. Operational-level management"],
"B",
"Nursing Supervisors and Ward Sisters are middle-level managers. They bridge top management (Director of Nursing) and lower-level staff nurses, implementing policies and coordinating departments."
),
(
4, "Leadership Styles",
"Which leadership style is MOST appropriate during a cardiac arrest emergency in the ICU?",
["A. Democratic", "B. Laissez-faire", "C. Autocratic", "D. Transformational"],
"C",
"Autocratic leadership is best during emergencies and crises because it allows for rapid, decisive action without time for group discussion. One person directs all activities to save the patient's life."
),
(
5, "Leadership Theories",
"Hersey and Blanchard's Situational Leadership Theory is based on the concept of:",
["A. Leader's personality traits", "B. Follower readiness/maturity", "C. Organizational structure", "D. Financial incentives"],
"B",
"Hersey and Blanchard's model states that the appropriate leadership style (Telling, Selling, Participating, Delegating) depends on the readiness/maturity level of the follower, not just the leader's traits."
),
(
6, "Motivation Theory",
"In Maslow's Hierarchy of Needs, which need must be satisfied FIRST?",
["A. Safety needs", "B. Esteem needs", "C. Physiological needs", "D. Self-actualization"],
"C",
"Maslow's hierarchy is a pyramid. The most basic level - physiological needs (food, water, shelter, sleep) - must be met first before higher-level needs become motivating factors."
),
(
7, "Motivation Theory",
"According to Herzberg's Two-Factor Theory, which of the following is a MOTIVATOR (satisfier)?",
["A. Salary", "B. Working conditions", "C. Company policy", "D. Achievement and recognition"],
"D",
"Herzberg classified motivators (achievement, recognition, responsibility, growth, advancement) as factors causing satisfaction. Salary, working conditions, and policy are hygiene factors that only prevent dissatisfaction."
),
(
8, "Management Principles",
"The principle that states each employee should receive orders from only ONE superior is called:",
["A. Unity of Direction", "B. Unity of Command", "C. Scalar Chain", "D. Division of Work"],
"B",
"Unity of Command (Fayol's Principle #4) states that each employee should receive instructions from only one supervisor to avoid confusion, conflict, and divided loyalties."
),
(
9, "Staffing",
"As per the Indian Nursing Council, the recommended nurse-to-patient ratio for an ICU is:",
["A. 1:6", "B. 1:4", "C. 1:2 or 1:1", "D. 1:10"],
"C",
"INC recommends a nurse-to-patient ratio of 1:1 or 1:2 for ICU settings due to the critical nature of patients who require constant monitoring and intensive nursing intervention."
),
(
10, "Quality Management",
"The PDCA cycle in quality management stands for:",
["A. Plan-Determine-Check-Act", "B. Plan-Do-Check-Act", "C. Prepare-Do-Control-Assess", "D. Plan-Direct-Coordinate-Achieve"],
"B",
"PDCA (Plan-Do-Check-Act), also called the Deming Cycle, is the standard quality improvement cycle. Plan the change, Do it on small scale, Check results, then Act to implement or revise."
),
(
11, "Accreditation",
"NABH (National Accreditation Board for Hospitals) was established under the Quality Council of India in:",
["A. 1947", "B. 1990", "C. 2005", "D. 2010"],
"C",
"NABH was established in 2005 as a constituent board of the Quality Council of India (QCI). It sets and administers standards for healthcare organizations to ensure patient safety and quality care."
),
(
12, "Delegation",
"The FIRST right of delegation in the '5 Rights of Delegation' framework is:",
["A. Right Person", "B. Right Task", "C. Right Communication", "D. Right Supervision"],
"B",
"The 5 Rights of Delegation are: Right Task, Right Circumstances, Right Person, Right Direction/Communication, and Right Supervision. The Right Task comes first - determining whether the task is appropriate to delegate."
),
(
13, "Budgeting",
"A budget in which every expense must be justified from zero, without reference to the previous year's budget, is called:",
["A. Incremental Budget", "B. Fixed Budget", "C. Zero-Based Budget (ZBB)", "D. Capital Budget"],
"C",
"Zero-Based Budgeting (ZBB) requires each department to justify all expenses from scratch for every new period. Unlike incremental budgeting, it does not use the previous year as a starting point."
),
(
14, "Performance Appraisal",
"The performance appraisal method in which goals are jointly set by manager and employee is:",
["A. Rating Scale Method", "B. Critical Incident Method", "C. Management by Objectives (MBO)", "D. BARS"],
"C",
"Management by Objectives (MBO), developed by Peter Drucker, involves the manager and employee jointly setting specific, measurable goals. Performance is evaluated based on achievement of these agreed-upon goals."
),
(
15, "Legal Aspects",
"Performing a nursing procedure on a patient without obtaining their consent is legally termed as:",
["A. Negligence", "B. Battery", "C. Slander", "D. False Imprisonment"],
"B",
"Battery is the unlawful touching of a person without their consent. Performing any procedure (even beneficial) without proper informed consent constitutes battery in legal terms. Negligence refers to failure to meet standard of care."
),
(
16, "Communication",
"Which type of communication travels from top management down to staff nurses?",
["A. Horizontal communication", "B. Grapevine communication", "C. Upward communication", "D. Downward communication"],
"D",
"Downward communication flows from higher levels of management to lower levels (e.g., policies, instructions from Director of Nursing to staff nurses). Upward communication moves from staff to management."
),
(
17, "Leadership",
"Transformational leadership primarily focuses on:",
["A. Reward and punishment to maintain routine performance", "B. Inspiring and motivating staff toward a shared vision", "C. Strict adherence to rules and regulations", "D. Delegating all decisions to the team"],
"B",
"Transformational leaders inspire followers by creating a compelling vision, encouraging innovation, and motivating personal growth. In contrast, Transactional leadership relies on reward/punishment (exchange) to maintain performance."
),
(
18, "Nursing Audit",
"A nursing audit that reviews patient records AFTER the patient has been discharged is called:",
["A. Concurrent audit", "B. Prospective audit", "C. Retrospective audit", "D. Process audit"],
"C",
"Retrospective audit reviews closed medical records after the patient's discharge to evaluate the quality of care that was provided. Concurrent audit reviews open records while the patient is still admitted."
),
(
19, "McGregor's Theory",
"A nurse manager who believes staff nurses are lazy, avoid responsibility, and need close supervision is applying:",
["A. Theory Y", "B. Theory Z", "C. Theory X", "D. Maslow's Theory"],
"C",
"McGregor's Theory X assumes employees are inherently lazy, dislike work, and need coercion/close supervision. Theory Y assumes workers are self-motivated and seek responsibility, supporting a democratic management style."
),
(
20, "Span of Control",
"The IDEAL span of control for effective nursing management is:",
["A. 1-3 subordinates", "B. 5-7 subordinates", "C. 10-12 subordinates", "D. 15-20 subordinates"],
"B",
"The ideal span of control is 5-7 subordinates. This allows the manager to supervise effectively without being overwhelmed. A wider span suits experienced, well-trained staff; a narrower span suits complex or critical environments."
),
]
# ══════════════════════════════════════════════════════════════════════════════
# RENDER QUESTIONS
# ══════════════════════════════════════════════════════════════════════════════
doc.add_heading("SECTION A: Multiple Choice Questions", level=1)
add_shaded_para(" Each question has ONE correct answer. Circle or mark your choice. ",
fill="EBF5FB", font_color="1A5276", size=10, italic=True)
doc.add_paragraph()
# Topic tag colors (cycle through)
tag_colors = {
"Management Principles": "1B4F72",
"Management Functions": "1A5276",
"Management Levels": "17202A",
"Leadership Styles": "884EA0",
"Leadership Theories": "7D3C98",
"Motivation Theory": "1E8449",
"Staffing": "B7950B",
"Quality Management": "1A5276",
"Accreditation": "1B4F72",
"Delegation": "CB4335",
"Budgeting": "B7950B",
"Performance Appraisal": "1F618D",
"Legal Aspects": "922B21",
"Communication": "117A65",
"Leadership": "7D3C98",
"Nursing Audit": "1A5276",
"McGregor's Theory": "1E8449",
"Span of Control": "1B4F72",
}
for (num, tag, question, options, correct, explanation) in mcqs:
# Question header line
q_p = doc.add_paragraph()
q_p.paragraph_format.space_before = Pt(6)
q_p.paragraph_format.space_after = Pt(2)
# Number badge
r_num = q_p.add_run(f" Q{num} ")
r_num.font.name = "Arial"
r_num.font.size = Pt(11)
r_num.font.bold = True
r_num.font.color.rgb = RGBColor(0xFF,0xFF,0xFF)
# Inline shading via XML run shading is not directly supported;
# instead use bold number + space styling
r_num.font.color.rgb = RGBColor(0x1B,0x4F,0x72)
r_tag = q_p.add_run(f"[{tag}] ")
r_tag.font.name = "Arial"
r_tag.font.size = Pt(9)
r_tag.font.italic = True
col = tag_colors.get(tag, "5D6D7E")
r_tag.font.color.rgb = RGBColor.from_string(col)
# Question text
qtext_p = doc.add_paragraph()
qtext_p.paragraph_format.left_indent = Inches(0.3)
qtext_p.paragraph_format.space_after = Pt(3)
r_q = qtext_p.add_run(f"{num}. {question}")
r_q.font.name = "Arial"
r_q.font.size = Pt(11)
r_q.font.bold = True
# Options
opt_fills = ["FFFFFF", "F8F9FA", "FFFFFF", "F8F9FA"]
for j, opt in enumerate(options):
p_opt = doc.add_paragraph()
p_opt.paragraph_format.left_indent = Inches(0.55)
p_opt.paragraph_format.space_before = Pt(1)
p_opt.paragraph_format.space_after = Pt(1)
r_opt = p_opt.add_run(opt)
r_opt.font.name = "Arial"
r_opt.font.size = Pt(10.5)
r_opt.font.italic = False
doc.add_paragraph() # small gap between questions
# Separator every 5 questions
if num % 5 == 0 and num < 20:
add_hr("AED6F1")
doc.add_paragraph()
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# ANSWER KEY - SUMMARY TABLE
# ══════════════════════════════════════════════════════════════════════════════
doc.add_heading("ANSWER KEY", level=1)
add_hr()
doc.add_paragraph()
add_shaded_para(" Quick Reference Answer Key (Q1 - Q20) ",
fill="1B4F72", font_color="FFFFFF", size=11, bold=True, center=True)
doc.add_paragraph()
answers = [(q[0], q[4]) for q in mcqs]
add_answer_table(answers[:10])
add_answer_table(answers[10:])
doc.add_paragraph()
add_shaded_para(" Score Interpretation: 18-20 = Excellent | 14-17 = Good | 10-13 = Average | Below 10 = Needs More Study ",
fill="EBF5FB", font_color="1A5276", size=10, italic=True, center=True)
doc.add_page_break()
# ══════════════════════════════════════════════════════════════════════════════
# DETAILED EXPLANATIONS
# ══════════════════════════════════════════════════════════════════════════════
doc.add_heading("DETAILED EXPLANATIONS", level=1)
add_hr()
add_para("Read these carefully after attempting the test. Understanding the 'why' behind each answer is more important than memorizing answers.", italic=True, color_hex="5D6D7E", size=10.5)
doc.add_paragraph()
for (num, tag, question, options, correct, explanation) in mcqs:
# Q number + correct answer
p_head = doc.add_paragraph()
p_head.paragraph_format.space_before = Pt(8)
p_head.paragraph_format.space_after = Pt(2)
r1 = p_head.add_run(f"Q{num}. ")
r1.font.name="Arial"; r1.font.size=Pt(11); r1.font.bold=True
r1.font.color.rgb = RGBColor(0x1B,0x4F,0x72)
r2 = p_head.add_run(question)
r2.font.name="Arial"; r2.font.size=Pt(11); r2.font.bold=True
r2.font.color.rgb = RGBColor(0x17,0x20,0x2A)
# Correct answer badge
p_ans = doc.add_paragraph()
p_ans.paragraph_format.left_indent = Inches(0.3)
p_ans.paragraph_format.space_after = Pt(2)
r_label = p_ans.add_run("Correct Answer: ")
r_label.font.name="Arial"; r_label.font.size=Pt(10.5); r_label.font.bold=True
r_label.font.color.rgb = RGBColor(0x1E,0x84,0x49)
# Find the full option text for the correct answer
correct_text = next(o for o in options if o.startswith(correct + "."))
r_val = p_ans.add_run(correct_text)
r_val.font.name="Arial"; r_val.font.size=Pt(10.5); r_val.font.bold=True
r_val.font.color.rgb = RGBColor(0x1E,0x84,0x49)
# Explanation
add_shaded_para(
f" Explanation: {explanation} ",
fill="EAFAF1", font_color="1E8449", size=10.5
)
doc.add_paragraph()
# ── Footer ─────────────────────────────────────────────────────────────────────
add_hr()
p_foot = doc.add_paragraph()
p_foot.alignment = WD_ALIGN_PARAGRAPH.CENTER
r_foot = p_foot.add_run("BSc Nursing 6th Semester | Nursing Management & Leadership | Practice MCQ Test | 20 Questions")
r_foot.font.name="Arial"; r_foot.font.size=Pt(9); r_foot.font.italic=True
r_foot.font.color.rgb = RGBColor(0x7F,0x8C,0x8D)
# ── Save ───────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/nursing-management/Nursing_Management_Leadership_MCQ_Practice_Test.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/nursing-management && python3 generate_mcq.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/nursing-management/Nursing_Management_Leadership_MCQ_Practice_Test.docx') print(f'Paragraphs: {len(doc.paragraphs)}') print(f'Tables: {len(doc.tables)}') # Print first few headings for p in doc.paragraphs: if p.style.name.startswith('Heading'): print(' H:', p.text) "
Nursing Management Leadership MCQ Practice Test
Word Document · DOCX
| Q | Topic | Correct Answer |
|---|---|---|
| 1 | Management Principles | C - 14 principles (Fayol) |
| 2 | Management Functions | B - Luther Gulick (POSDCORB) |
| 3 | Management Levels | B - Middle-level management |
| 4 | Leadership Styles | C - Autocratic (in emergencies) |
| 5 | Leadership Theories | B - Follower readiness (Hersey & Blanchard) |
| 6 | Motivation Theory | C - Physiological needs (Maslow) |
| 7 | Motivation Theory | D - Achievement & recognition (Herzberg motivator) |
| 8 | Management Principles | B - Unity of Command |
| 9 | Staffing | C - 1:1 or 1:2 (ICU, INC ratio) |
| 10 | Quality Management | B - Plan-Do-Check-Act |
| 11 | Accreditation | C - 2005 (NABH established) |
| 12 | Delegation | B - Right Task (first of 5 rights) |
| 13 | Budgeting | C - Zero-Based Budget (ZBB) |
| 14 | Performance Appraisal | C - Management by Objectives (MBO) |
| 15 | Legal Aspects | B - Battery (procedure without consent) |
| 16 | Communication | D - Downward communication |
| 17 | Leadership | B - Transformational leadership |
| 18 | Nursing Audit | C - Retrospective audit |
| 19 | McGregor's Theory | C - Theory X |
| 20 | Span of Control | B - 5-7 subordinates |
Generate flashcards (20 cards) for quick review of management definitions
~/nursing-management/generate_flashcards.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
# ── Page setup: A4, narrow margins for max card space ────────────────────────
section = doc.sections[0]
section.page_width = Cm(21.0)
section.page_height = Cm(29.7)
section.top_margin = Cm(1.2)
section.bottom_margin = Cm(1.2)
section.left_margin = Cm(1.5)
section.right_margin = Cm(1.5)
normal = doc.styles["Normal"]
normal.font.name = "Arial"
normal.font.size = Pt(11)
# ── Card colour palette (alternating for variety) ─────────────────────────────
CARD_SCHEMES = [
{"front_bg": "1B4F72", "front_text": "FFFFFF", "back_bg": "D6EAF8", "back_text": "1B4F72", "accent": "2E86C1"},
{"front_bg": "1E8449", "front_text": "FFFFFF", "back_bg": "D5F5E3", "back_text": "1E8449", "accent": "27AE60"},
{"front_bg": "7D3C98", "front_text": "FFFFFF", "back_bg": "E8DAEF", "back_text": "6C3483", "accent": "9B59B6"},
{"front_bg": "B7950B", "front_text": "FFFFFF", "back_bg": "FEF9E7", "back_text": "9A7D0A", "accent": "D4AC0D"},
{"front_bg": "922B21", "front_text": "FFFFFF", "back_bg": "FADBD8", "back_text": "922B21", "accent": "E74C3C"},
]
def hex_to_rgb(hex_str):
h = hex_str.lstrip("#")
return tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
def set_cell_bg(cell, fill_hex):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
# remove existing shd if present
for old in tcPr.findall(qn("w:shd")):
tcPr.remove(old)
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), fill_hex)
tcPr.append(shd)
def set_cell_border(cell, color_hex="CCCCCC"):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
tcBorders = OxmlElement("w:tcBorders")
for side in ("top", "left", "bottom", "right"):
border = OxmlElement(f"w:{side}")
border.set(qn("w:val"), "single")
border.set(qn("w:sz"), "8")
border.set(qn("w:space"), "0")
border.set(qn("w:color"), color_hex)
tcBorders.append(border)
tcPr.append(tcBorders)
def set_table_border(table, color_hex="CCCCCC"):
tbl = table._tbl
tblPr = tbl.find(qn("w:tblPr"))
if tblPr is None:
tblPr = OxmlElement("w:tblPr")
tbl.insert(0, tblPr)
tblBorders = OxmlElement("w:tblBorders")
for side in ("top", "left", "bottom", "right", "insideH", "insideV"):
b = OxmlElement(f"w:{side}")
b.set(qn("w:val"), "single")
b.set(qn("w:sz"), "8")
b.set(qn("w:space"), "0")
b.set(qn("w:color"), color_hex)
tblBorders.append(b)
# Remove old borders first
for old in tblPr.findall(qn("w:tblBorders")):
tblPr.remove(old)
tblPr.append(tblBorders)
def set_col_width(table, col_idx, width_cm):
for row in table.rows:
row.cells[col_idx].width = Cm(width_cm)
def add_run(para, text, bold=False, italic=False, size=11, color_hex=None):
run = para.add_run(text)
run.font.name = "Arial"
run.font.size = Pt(size)
run.font.bold = bold
run.font.italic = italic
if color_hex:
r, g, b = hex_to_rgb(color_hex)
run.font.color.rgb = RGBColor(r, g, b)
return run
def make_card(doc, card_num, term, definition, keyword, author_note, scheme):
"""
Renders one flashcard as a 2-column table:
Left = FRONT (term + card number + keyword label)
Right = BACK (definition + author note)
Width fills the text area (~18 cm), height forced via cell padding + content.
"""
table = doc.add_table(rows=1, cols=2)
table.style = "Table Grid"
front_cell = table.rows[0].cells[0]
back_cell = table.rows[0].cells[1]
# --- FRONT cell ---
set_cell_bg(front_cell, scheme["front_bg"])
set_cell_border(front_cell, scheme["front_bg"])
# Card number label
p0 = front_cell.paragraphs[0]
p0.alignment = WD_ALIGN_PARAGRAPH.RIGHT
p0.paragraph_format.space_before = Pt(6)
p0.paragraph_format.space_after = Pt(2)
add_run(p0, f"#{card_num:02d}", bold=False, size=8, color_hex="AAAAAA" if scheme["front_bg"] == "FFFFFF" else "BBDDFF")
# "FRONT" tiny label
pf = front_cell.add_paragraph()
pf.alignment = WD_ALIGN_PARAGRAPH.CENTER
pf.paragraph_format.space_after = Pt(2)
add_run(pf, "▌ TERM ▐", bold=False, size=7, color_hex="AACCEE")
# Keyword badge
pk = front_cell.add_paragraph()
pk.alignment = WD_ALIGN_PARAGRAPH.CENTER
pk.paragraph_format.space_before = Pt(2)
pk.paragraph_format.space_after = Pt(4)
add_run(pk, f"[ {keyword} ]", bold=False, italic=True, size=8.5,
color_hex="CCE8FF" if scheme["front_bg"].startswith("1B4F") else "DDEEFF")
# Main TERM text
pt = front_cell.add_paragraph()
pt.alignment = WD_ALIGN_PARAGRAPH.CENTER
pt.paragraph_format.space_before = Pt(10)
pt.paragraph_format.space_after = Pt(10)
pt.paragraph_format.left_indent = Cm(0.3)
pt.paragraph_format.right_indent = Cm(0.3)
add_run(pt, term, bold=True, size=14, color_hex=scheme["front_text"])
# Bottom padding paragraph
pb_front = front_cell.add_paragraph()
pb_front.paragraph_format.space_before = Pt(6)
add_run(pb_front, " ", size=8)
# --- BACK cell ---
set_cell_bg(back_cell, scheme["back_bg"])
set_cell_border(back_cell, scheme["accent"])
# "DEFINITION" label
pd_label = back_cell.paragraphs[0]
pd_label.alignment = WD_ALIGN_PARAGRAPH.LEFT
pd_label.paragraph_format.space_before = Pt(6)
pd_label.paragraph_format.space_after = Pt(3)
pd_label.paragraph_format.left_indent = Cm(0.2)
add_run(pd_label, "✎ DEFINITION", bold=True, size=8,
color_hex=scheme["accent"])
# Definition text
pd = back_cell.add_paragraph()
pd.alignment = WD_ALIGN_PARAGRAPH.LEFT
pd.paragraph_format.left_indent = Cm(0.2)
pd.paragraph_format.right_indent = Cm(0.2)
pd.paragraph_format.space_before = Pt(2)
pd.paragraph_format.space_after = Pt(8)
add_run(pd, definition, bold=False, size=10.5, color_hex=scheme["back_text"])
# Author / remember note
if author_note:
pn_label = back_cell.add_paragraph()
pn_label.paragraph_format.left_indent = Cm(0.2)
pn_label.paragraph_format.space_after = Pt(2)
add_run(pn_label, "★ Remember:", bold=True, size=8.5, color_hex=scheme["accent"])
pn = back_cell.add_paragraph()
pn.paragraph_format.left_indent = Cm(0.2)
pn.paragraph_format.right_indent = Cm(0.2)
pn.paragraph_format.space_after = Pt(6)
add_run(pn, author_note, bold=False, italic=True, size=9.5,
color_hex=scheme["back_text"])
# Set column widths: front 40%, back 60%
set_col_width(table, 0, 7.0)
set_col_width(table, 1, 11.0)
set_table_border(table, scheme["accent"])
# Spacer between cards
spacer = doc.add_paragraph()
spacer.paragraph_format.space_before = Pt(0)
spacer.paragraph_format.space_after = Pt(4)
# ══════════════════════════════════════════════════════════════════════════════
# FLASHCARD DATA
# (card_num, term, definition, keyword_tag, author_note)
# ══════════════════════════════════════════════════════════════════════════════
cards = [
(
1,
"Management",
"The process of planning, organizing, staffing, directing, and controlling available human, material, and financial resources to achieve organizational goals effectively and efficiently.",
"Core Definition",
"Fayol: 'To manage is to forecast and plan, to organize, to command, to coordinate and to control.'"
),
(
2,
"Leadership",
"The ability to guide, influence, and motivate others toward achieving a common goal. It is the art of getting things done through and with people.",
"Core Definition",
"Key difference from management: leadership influences people; management controls resources."
),
(
3,
"Planning",
"The process of determining in advance what is to be done, how it is to be done, when it is to be done, and by whom. It is the primary function of management.",
"Management Function",
"Types: Strategic (5-10 yrs), Tactical (1-5 yrs), Operational (daily/weekly), Contingency."
),
(
4,
"Organizing",
"The process of establishing relationships between people, work, and resources to achieve organizational objectives. Involves creating structure, assigning roles, and allocating resources.",
"Management Function",
"Results in an organizational chart showing hierarchy, span of control, and chain of command."
),
(
5,
"Staffing",
"The process of acquiring, deploying, and retaining a sufficient quantity and quality of staff to produce positive impacts on the organization's effectiveness.",
"Management Function",
"Includes: manpower planning → job analysis → recruitment → selection → training → appraisal."
),
(
6,
"Directing",
"The management function of guiding, leading, and supervising subordinates to accomplish organizational goals. Involves issuing instructions, motivating staff, and providing leadership.",
"Management Function",
"POSDCORB 'D' - Directing is where leadership and management overlap most directly."
),
(
7,
"Controlling",
"The management function of monitoring, evaluating, and correcting performance to ensure organizational goals are achieved. Involves setting standards, measuring performance, and taking corrective action.",
"Management Function",
"Steps: Set standards → Measure performance → Compare → Take corrective action."
),
(
8,
"Delegation",
"The process of assigning work, authority, and responsibility to another person to accomplish specific tasks while the delegator retains overall accountability.",
"Management Concept",
"5 Rights: Right Task, Right Circumstances, Right Person, Right Communication, Right Supervision."
),
(
9,
"Span of Control",
"The number of subordinates a manager can effectively and efficiently supervise. The ideal span is 5-7 persons in nursing management.",
"Organizational Concept",
"Narrow span = close supervision. Wide span = more autonomy. Ideal in nursing = 5 to 7."
),
(
10,
"Unity of Command",
"A principle of management (Fayol) stating that each employee should receive orders from only one superior to avoid confusion and divided loyalties.",
"Fayol's Principle",
"Principle #4 of Fayol's 14. If broken, staff receive conflicting orders → confusion → errors."
),
(
11,
"Scalar Chain",
"The formal line of authority flowing from the highest to the lowest levels of an organization (top to bottom). Also called the chain of command.",
"Fayol's Principle",
"Principle #9. Communication should normally follow this chain, except in emergencies (Fayol's Gang Plank)."
),
(
12,
"Motivation",
"The internal or external stimulus that drives a person to act toward achieving a goal. In nursing, it influences staff performance, job satisfaction, and quality of patient care.",
"Behavioral Concept",
"Key theories: Maslow (hierarchy), Herzberg (two-factor), McGregor (X & Y), Vroom (expectancy)."
),
(
13,
"Autocratic Leadership",
"A leadership style in which the leader makes all decisions independently without input from the group. Communication is top-down and control is centralized.",
"Leadership Style",
"Best used in: emergencies, crisis situations (e.g., cardiac arrest, disaster response)."
),
(
14,
"Democratic Leadership",
"A leadership style in which decisions are made with the participation and input of the group. The leader facilitates discussion and acts on the group's collective decision.",
"Leadership Style",
"Best used in: routine nursing situations. Promotes high morale and staff satisfaction."
),
(
15,
"Budget",
"A financial plan that estimates income and expenditure over a specific period. It serves as a tool for planning, controlling, and evaluating financial performance.",
"Financial Management",
"Types: Personnel (largest), Operating, Capital (equipment >Rs.5000), Cash, Zero-Based."
),
(
16,
"Nursing Audit",
"A thorough investigation of the quality of nursing care given to a patient by examining nursing records and charts against pre-established standards.",
"Quality Assurance",
"3 types: Retrospective (after discharge), Concurrent (during admission), Prospective (before care)."
),
(
17,
"Total Quality Management (TQM)",
"A management philosophy focused on continuous improvement of all organizational processes, involving every employee, with the ultimate aim of satisfying the customer (patient).",
"Quality Management",
"Key tool: PDCA Cycle (Plan-Do-Check-Act). Linked to Deming, Juran, and Crosby."
),
(
18,
"Performance Appraisal",
"A systematic, formal evaluation of an employee's job performance and their potential for future development, conducted against pre-defined standards.",
"HR Management",
"Methods: Rating Scale, MBO, 360-degree feedback, BARS, Critical Incident, Essay method."
),
(
19,
"NABH",
"National Accreditation Board for Hospitals and Healthcare Providers. Established in 2005 under the Quality Council of India. Sets and administers standards for healthcare organizations.",
"Accreditation",
"NABH accreditation = recognition that a hospital meets national quality and safety standards."
),
(
20,
"Informed Consent",
"The legal and ethical process by which a patient is given sufficient information about a proposed treatment or procedure and voluntarily agrees to it before it is carried out.",
"Legal & Ethics",
"Elements: Disclosure, Comprehension, Voluntariness, Competence, and Consent. Absence = battery."
),
]
# ══════════════════════════════════════════════════════════════════════════════
# TITLE PAGE
# ══════════════════════════════════════════════════════════════════════════════
title_table = doc.add_table(rows=1, cols=1)
title_table.style = "Table Grid"
tc = title_table.rows[0].cells[0]
set_cell_bg(tc, "1B4F72")
set_cell_border(tc, "2E86C1")
p1 = tc.paragraphs[0]
p1.alignment = WD_ALIGN_PARAGRAPH.CENTER
p1.paragraph_format.space_before = Pt(16)
p1.paragraph_format.space_after = Pt(4)
add_run(p1, "NURSING MANAGEMENT & LEADERSHIP", bold=True, size=20, color_hex="FFFFFF")
p2 = tc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
p2.paragraph_format.space_after = Pt(4)
add_run(p2, "Quick Review Flashcards", bold=False, size=14, color_hex="AED6F1")
p3 = tc.add_paragraph()
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
p3.paragraph_format.space_after = Pt(4)
add_run(p3, "20 Essential Definitions", bold=True, size=12, color_hex="FFFFFF")
p4 = tc.add_paragraph()
p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
p4.paragraph_format.space_after = Pt(4)
add_run(p4, "B.Sc Nursing | 6th Semester | INC Syllabus", bold=False, italic=True, size=10, color_hex="AED6F1")
p5 = tc.add_paragraph()
p5.alignment = WD_ALIGN_PARAGRAPH.CENTER
p5.paragraph_format.space_after = Pt(12)
add_run(p5, "How to use: Cover the RIGHT side (Definition), read the TERM, then reveal the answer.",
bold=False, italic=True, size=9, color_hex="BBDDFF")
set_col_width(title_table, 0, 18.0)
set_table_border(title_table, "2E86C1")
doc.add_paragraph().paragraph_format.space_after = Pt(10)
# Section labels before groups
section_labels = {
1: ("SECTION 1", "Core Management Concepts", "1B4F72"),
6: ("SECTION 2", "Management Functions", "1E8449"),
11: ("SECTION 3", "Organizational & HR Concepts", "7D3C98"),
16: ("SECTION 4", "Quality, Legal & Ethics", "922B21"),
}
# ══════════════════════════════════════════════════════════════════════════════
# RENDER ALL 20 CARDS
# ══════════════════════════════════════════════════════════════════════════════
for i, (num, term, definition, keyword, author_note) in enumerate(cards):
# Section header before certain cards
if num in section_labels:
sec_num, sec_title, sec_color = section_labels[num]
sec_table = doc.add_table(rows=1, cols=1)
sec_table.style = "Table Grid"
sc = sec_table.rows[0].cells[0]
set_cell_bg(sc, sec_color)
set_cell_border(sc, sec_color)
sp = sc.paragraphs[0]
sp.alignment = WD_ALIGN_PARAGRAPH.LEFT
sp.paragraph_format.space_before = Pt(4)
sp.paragraph_format.space_after = Pt(4)
sp.paragraph_format.left_indent = Cm(0.3)
add_run(sp, f" {sec_num}: {sec_title} ", bold=True, size=10, color_hex="FFFFFF")
set_col_width(sec_table, 0, 18.0)
set_table_border(sec_table, sec_color)
doc.add_paragraph().paragraph_format.space_after = Pt(4)
# Pick colour scheme (cycle through 5 schemes)
scheme = CARD_SCHEMES[(num - 1) % len(CARD_SCHEMES)]
make_card(doc, num, term, definition, keyword, author_note, scheme)
# ── Final footer ──────────────────────────────────────────────────────────────
doc.add_paragraph()
footer_table = doc.add_table(rows=1, cols=1)
footer_table.style = "Table Grid"
fc = footer_table.rows[0].cells[0]
set_cell_bg(fc, "EBF5FB")
set_cell_border(fc, "AED6F1")
fp = fc.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp.paragraph_format.space_before = Pt(6)
fp.paragraph_format.space_after = Pt(6)
add_run(fp, "End of Flashcards | BSc Nursing 6th Sem | Management & Leadership | 20 Cards",
bold=False, italic=True, size=9, color_hex="1A5276")
set_col_width(footer_table, 0, 18.0)
# ── Save ───────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/nursing-management/Nursing_Management_Leadership_Flashcards.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/nursing-management && python3 generate_flashcards.py
python3 -c " from docx import Document doc = Document('/tmp/workspace/nursing-management/Nursing_Management_Leadership_Flashcards.docx') print(f'Paragraphs: {len(doc.paragraphs)}') print(f'Tables (cards + headers): {len(doc.tables)}') # Confirm card count by counting tables with 2 columns two_col = [t for t in doc.tables if len(t.columns) == 2] print(f'Flashcard tables (2-col): {len(two_col)}') "
Nursing Management Leadership Flashcards
Word Document · DOCX
| LEFT PANEL (Term) | RIGHT PANEL (Definition) |
|---|---|
| Dark colored background | Light matching background |
| Card number + topic tag | ✎ DEFINITION - full explanation |
| Large bold TERM | ★ Remember - key memory tip |
| Section | Cards | Topics |
|---|---|---|
| Section 1 | 1-5 | Management, Leadership, Planning, Organizing, Staffing |
| Section 2 | 6-10 | Directing, Controlling, Delegation, Span of Control, Unity of Command |
| Section 3 | 11-15 | Scalar Chain, Motivation, Autocratic Leadership, Democratic Leadership, Budget |
| Section 4 | 16-20 | Nursing Audit, TQM, Performance Appraisal, NABH, Informed Consent |
Create an Excel tracker to monitor your exam preparation progress
~/nursing-management/generate_tracker.py
import openpyxl
from openpyxl.styles import (
Font, PatternFill, Alignment, Border, Side, GradientFill
)
from openpyxl.utils import get_column_letter
from openpyxl.formatting.rule import ColorScaleRule, DataBarRule, FormulaRule, CellIsRule
from openpyxl.chart import BarChart, Reference, PieChart
from openpyxl.chart.series import SeriesLabel
from openpyxl.worksheet.datavalidation import DataValidation
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.formatting.rule import Rule
wb = openpyxl.Workbook()
# ── Colour palette ─────────────────────────────────────────────────────────────
C = {
"navy": "1B4F72",
"blue": "2E86C1",
"light_blue": "AED6F1",
"pale_blue": "D6EAF8",
"green": "1E8449",
"light_green": "A9DFBF",
"pale_green": "D5F5E3",
"orange": "D35400",
"pale_orange": "FAD7A0",
"red": "922B21",
"pale_red": "FADBD8",
"purple": "6C3483",
"pale_purple": "E8DAEF",
"yellow": "F1C40F",
"pale_yellow": "FEF9E7",
"white": "FFFFFF",
"grey_light": "F2F3F4",
"grey_mid": "D5D8DC",
"grey_dark": "808B96",
"black": "17202A",
}
def fill(hex_color):
return PatternFill("solid", fgColor=hex_color)
def font(bold=False, italic=False, size=11, color="17202A", name="Arial"):
return Font(bold=bold, italic=italic, size=size, color=color, name=name)
def align(h="left", v="center", wrap=False):
return Alignment(horizontal=h, vertical=v, wrap_text=wrap)
def border(style="thin", color="D5D8DC"):
s = Side(style=style, color=color)
return Border(left=s, right=s, top=s, bottom=s)
def thick_border(color="1B4F72"):
t = Side(style="medium", color=color)
n = Side(style="thin", color="D5D8DC")
return Border(left=t, right=t, top=t, bottom=t)
def apply_header_row(ws, row, cols, text_list, bg, fg="FFFFFF", sz=11, bold=True):
for col, text in zip(cols, text_list):
cell = ws.cell(row=row, column=col, value=text)
cell.font = font(bold=bold, size=sz, color=fg)
cell.fill = fill(bg)
cell.alignment = align("center", "center", wrap=True)
cell.border = border("thin", "FFFFFF")
def set_col_width(ws, col_widths):
for col_letter, w in col_widths.items():
ws.column_dimensions[col_letter].width = w
def set_row_height(ws, row_heights):
for row, h in row_heights.items():
ws.row_dimensions[row].height = h
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 1: DASHBOARD
# ══════════════════════════════════════════════════════════════════════════════
ws_dash = wb.active
ws_dash.title = "📊 Dashboard"
ws_dash.sheet_view.showGridLines = False
ws_dash.sheet_properties.tabColor = C["navy"]
# Title banner (merged A1:L3)
ws_dash.merge_cells("A1:L3")
title_cell = ws_dash["A1"]
title_cell.value = "🩺 NURSING MANAGEMENT & LEADERSHIP — EXAM PREPARATION TRACKER"
title_cell.font = font(bold=True, size=16, color="FFFFFF")
title_cell.fill = fill(C["navy"])
title_cell.alignment = align("center", "center")
ws_dash.merge_cells("A4:L4")
sub_cell = ws_dash["A4"]
sub_cell.value = "B.Sc Nursing | 6th Semester | Update the 'Topic Tracker' sheet daily to see live progress here"
sub_cell.font = font(italic=True, size=10, color=C["light_blue"])
sub_cell.fill = fill(C["navy"])
sub_cell.alignment = align("center", "center")
set_row_height(ws_dash, {1: 40, 4: 20, 5: 8})
set_col_width(ws_dash, {
"A": 3, "B": 18, "C": 14, "D": 14, "E": 14,
"F": 3, "G": 18, "H": 14, "I": 14, "J": 14, "K": 3, "L": 3
})
# ── KPI Cards Row ─────────────────────────────────────────────────────────────
kpi_row = 6
kpi_data = [
("B", "Total Topics", "=COUNTA('📚 Topic Tracker'!B5:B24)", C["navy"], C["pale_blue"]),
("C", "Completed", "=COUNTIF('📚 Topic Tracker'!F5:F24,\"Done\")", C["green"], C["pale_green"]),
("D", "In Progress", "=COUNTIF('📚 Topic Tracker'!F5:F24,\"In Progress\")", C["orange"], C["pale_orange"]),
("E", "Not Started", "=COUNTIF('📚 Topic Tracker'!F5:F24,\"Not Started\")", C["red"], C["pale_red"]),
]
for col_letter, label, formula, label_color, bg_color in kpi_data:
col = ord(col_letter) - 64
# Label cell (row kpi_row)
lc = ws_dash.cell(row=kpi_row, column=col)
lc.value = label
lc.font = font(bold=True, size=9, color=label_color)
lc.fill = fill(bg_color)
lc.alignment = align("center", "center")
lc.border = border("thin", C["grey_mid"])
ws_dash.row_dimensions[kpi_row].height = 18
# Value cell (row kpi_row+1)
vc = ws_dash.cell(row=kpi_row+1, column=col)
vc.value = formula
vc.font = font(bold=True, size=22, color=label_color)
vc.fill = fill(bg_color)
vc.alignment = align("center", "center")
vc.border = thick_border(label_color)
ws_dash.row_dimensions[kpi_row+1].height = 40
# Overall % cell
ws_dash.merge_cells(f"B{kpi_row+2}:E{kpi_row+2}")
pct_cell = ws_dash[f"B{kpi_row+2}"]
pct_cell.value = '=IFERROR(COUNTIF(\'📚 Topic Tracker\'!F5:F24,"Done")/COUNTA(\'📚 Topic Tracker\'!B5:B24),0)'
pct_cell.number_format = '0.0%'
pct_cell.font = font(bold=True, size=13, color=C["navy"])
pct_cell.fill = fill(C["pale_blue"])
pct_cell.alignment = align("center", "center")
pct_cell.border = border("thin", C["blue"])
ws_dash.row_dimensions[kpi_row+2].height = 22
ws_dash.merge_cells(f"B{kpi_row+3}:E{kpi_row+3}")
label_pct = ws_dash[f"B{kpi_row+3}"]
label_pct.value = "Overall Completion Rate"
label_pct.font = font(italic=True, size=9, color=C["grey_dark"])
label_pct.fill = fill(C["grey_light"])
label_pct.alignment = align("center", "center")
ws_dash.row_dimensions[kpi_row+3].height = 16
# ── MCQ Score Summary ─────────────────────────────────────────────────────────
mcq_start = kpi_row + 5
ws_dash.merge_cells(f"G{mcq_start}:J{mcq_start}")
ws_dash[f"G{mcq_start}"].value = "MCQ PRACTICE SCORES"
ws_dash[f"G{mcq_start}"].font = font(bold=True, size=11, color="FFFFFF")
ws_dash[f"G{mcq_start}"].fill = fill(C["purple"])
ws_dash[f"G{mcq_start}"].alignment = align("center", "center")
ws_dash.row_dimensions[mcq_start].height = 22
mcq_headers = ["Attempt", "Date", "Score /20", "Percentage"]
apply_header_row(ws_dash, mcq_start+1, [7,8,9,10], mcq_headers, C["purple"], sz=9)
ws_dash.row_dimensions[mcq_start+1].height = 18
for i in range(1, 6):
r = mcq_start + 1 + i
ws_dash.cell(row=r, column=7, value=f"Attempt {i}").font = font(size=10, color=C["grey_dark"])
ws_dash.cell(row=r, column=7).alignment = align("center")
ws_dash.cell(row=r, column=7).fill = fill(C["grey_light"] if i%2==0 else "FFFFFF")
# Date - user fills in
dc = ws_dash.cell(row=r, column=8)
dc.font = font(size=10, color=C["blue"]); dc.alignment = align("center")
dc.fill = fill(C["grey_light"] if i%2==0 else "FFFFFF")
dc.number_format = "DD-MMM-YY"
# Score - user fills in
sc = ws_dash.cell(row=r, column=9)
sc.font = font(bold=True, size=10, color=C["navy"]); sc.alignment = align("center")
sc.fill = fill(C["pale_blue"])
# Percentage formula (safe IFERROR)
pc = ws_dash.cell(row=r, column=10)
pc.value = f"=IFERROR({get_column_letter(9)}{r}/20,\"\")"
pc.number_format = "0%"
pc.font = font(bold=True, size=10, color=C["green"]); pc.alignment = align("center")
pc.fill = fill(C["pale_green"])
ws_dash.row_dimensions[r].height = 18
# Best score row
best_r = mcq_start + 7
ws_dash.cell(row=best_r, column=7, value="BEST SCORE").font = font(bold=True, size=10, color=C["green"])
ws_dash.cell(row=best_r, column=7).fill = fill(C["pale_green"]); ws_dash.cell(row=best_r, column=7).alignment = align("center")
best_val = ws_dash.cell(row=best_r, column=9)
best_val.value = f"=IFERROR(MAX(I{mcq_start+2}:I{mcq_start+6}),\"-\")"
best_val.font = font(bold=True, size=12, color=C["green"]); best_val.fill = fill(C["pale_green"]); best_val.alignment = align("center")
best_pct = ws_dash.cell(row=best_r, column=10)
best_pct.value = f"=IFERROR(MAX(I{mcq_start+2}:I{mcq_start+6})/20,\"\")"
best_pct.number_format = "0%"
best_pct.font = font(bold=True, size=12, color=C["green"]); best_pct.fill = fill(C["pale_green"]); best_pct.alignment = align("center")
ws_dash.row_dimensions[best_r].height = 22
# ── Exam Countdown ─────────────────────────────────────────────────────────────
cd_row = kpi_row
ws_dash.merge_cells(f"G{cd_row}:J{cd_row}")
ws_dash[f"G{cd_row}"].value = "EXAM COUNTDOWN"
ws_dash[f"G{cd_row}"].font = font(bold=True, size=11, color="FFFFFF")
ws_dash[f"G{cd_row}"].fill = fill(C["navy"])
ws_dash[f"G{cd_row}"].alignment = align("center", "center")
ws_dash.row_dimensions[cd_row].height = 22
ws_dash.cell(row=cd_row+1, column=7, value="Exam Date:").font = font(bold=True, size=10, color=C["navy"])
ws_dash.cell(row=cd_row+1, column=7).fill = fill(C["pale_blue"]); ws_dash.cell(row=cd_row+1, column=7).alignment = align("right")
ws_dash.merge_cells(f"H{cd_row+1}:J{cd_row+1}")
exam_date_cell = ws_dash.cell(row=cd_row+1, column=8)
exam_date_cell.value = "Enter your exam date here"
exam_date_cell.font = font(bold=True, size=10, color=C["blue"])
exam_date_cell.fill = fill("FEF9E7")
exam_date_cell.alignment = align("center")
exam_date_cell.number_format = "DD-MMM-YYYY"
ws_dash.row_dimensions[cd_row+1].height = 22
ws_dash.cell(row=cd_row+2, column=7, value="Days Remaining:").font = font(bold=True, size=10, color=C["navy"])
ws_dash.cell(row=cd_row+2, column=7).fill = fill(C["pale_blue"]); ws_dash.cell(row=cd_row+2, column=7).alignment = align("right")
ws_dash.merge_cells(f"H{cd_row+2}:J{cd_row+2}")
days_cell = ws_dash.cell(row=cd_row+2, column=8)
days_cell.value = '=IFERROR(IF(H7-TODAY()>=0,H7-TODAY(),"Exam Passed!"),"-")'
days_cell.font = font(bold=True, size=14, color=C["orange"])
days_cell.fill = fill(C["pale_orange"])
days_cell.alignment = align("center")
ws_dash.row_dimensions[cd_row+2].height = 28
ws_dash.cell(row=cd_row+3, column=7, value="Today:").font = font(size=9, color=C["grey_dark"])
ws_dash.cell(row=cd_row+3, column=7).fill = fill(C["grey_light"]); ws_dash.cell(row=cd_row+3, column=7).alignment = align("right")
ws_dash.merge_cells(f"H{cd_row+3}:J{cd_row+3}")
today_cell = ws_dash.cell(row=cd_row+3, column=8)
today_cell.value = "=TODAY()"
today_cell.number_format = "DD-MMM-YYYY"
today_cell.font = font(size=9, color=C["grey_dark"])
today_cell.fill = fill(C["grey_light"])
today_cell.alignment = align("center")
ws_dash.row_dimensions[cd_row+3].height = 18
# ── Study hours summary on dashboard ─────────────────────────────────────────
sh_row = 20
ws_dash.merge_cells(f"B{sh_row}:E{sh_row}")
ws_dash[f"B{sh_row}"].value = "STUDY HOURS SUMMARY"
ws_dash[f"B{sh_row}"].font = font(bold=True, size=11, color="FFFFFF")
ws_dash[f"B{sh_row}"].fill = fill(C["green"])
ws_dash[f"B{sh_row}"].alignment = align("center", "center")
ws_dash.row_dimensions[sh_row].height = 22
sh_metrics = [
("Total Hours Logged", "=SUM('⏱ Study Log'!D5:D104)"),
("This Week", "=SUMIF('⏱ Study Log'!C5:C104,\">=\"&(TODAY()-WEEKDAY(TODAY(),2)+1),'⏱ Study Log'!D5:D104)"),
("Avg Hours/Day", "=IFERROR(SUM('⏱ Study Log'!D5:D104)/COUNTA('⏱ Study Log'!C5:C104),0)"),
("Target Daily (hrs)", 2),
]
for i, (label, val) in enumerate(sh_metrics):
r = sh_row + 1 + i
lc = ws_dash.cell(row=r, column=2, value=label)
lc.font = font(size=10, color=C["navy"]); lc.fill = fill(C["pale_green"]); lc.alignment = align("left")
lc.border = border("thin", C["light_green"])
ws_dash.merge_cells(f"C{r}:E{r}")
vc = ws_dash.cell(row=r, column=3, value=val)
vc.number_format = "0.0"
vc.font = font(bold=True, size=11, color=C["green"]); vc.fill = fill(C["pale_green"]); vc.alignment = align("center")
vc.border = border("thin", C["light_green"])
ws_dash.row_dimensions[r].height = 20
# ── Conditional formatting on % cell ─────────────────────────────────────────
ws_dash.conditional_formatting.add(
f"B{kpi_row+2}:E{kpi_row+2}",
ColorScaleRule(start_type="num", start_value=0, start_color="FF6B6B",
mid_type="num", mid_value=0.5, mid_color="FFD93D",
end_type="num", end_value=1, end_color="6BCB77")
)
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 2: TOPIC TRACKER
# ══════════════════════════════════════════════════════════════════════════════
ws_topic = wb.create_sheet("📚 Topic Tracker")
ws_topic.sheet_view.showGridLines = False
ws_topic.sheet_properties.tabColor = C["blue"]
# Title
ws_topic.merge_cells("A1:L2")
ws_topic["A1"].value = "📚 TOPIC TRACKER — Mark each topic's status as you study"
ws_topic["A1"].font = font(bold=True, size=14, color="FFFFFF")
ws_topic["A1"].fill = fill(C["navy"])
ws_topic["A1"].alignment = align("center", "center")
ws_topic.merge_cells("A3:L3")
ws_topic["A3"].value = "Status options: Not Started | In Progress | Done Confidence: 1 (Low) to 5 (High)"
ws_topic["A3"].font = font(italic=True, size=9, color=C["navy"])
ws_topic["A3"].fill = fill(C["pale_blue"])
ws_topic["A3"].alignment = align("center", "center")
ws_topic.row_dimensions[1].height = 32; ws_topic.row_dimensions[2].height = 12; ws_topic.row_dimensions[3].height = 18
# Headers
headers = ["#", "Topic / Chapter", "Unit", "Subtopics", "Study\nHours", "Status",
"Confidence\n(1-5)", "Last\nRevised", "Notes / Key Points", "MCQ\nScore", "Flashcard\nReview", "Priority"]
apply_header_row(ws_topic, 4, list(range(1,13)), headers, C["navy"], sz=9)
ws_topic.row_dimensions[4].height = 30
set_col_width(ws_topic, {
"A": 4, "B": 26, "C": 14, "D": 18, "E": 8,
"F": 13, "G": 10, "H": 12, "I": 28, "J": 8, "K": 10, "L": 9
})
# Topic data
topics = [
# (unit, topic, subtopics, priority)
("Unit 1", "Introduction to Management", "Definition, Principles, Types", "HIGH"),
("Unit 1", "Fayol's 14 Principles", "All 14 principles with examples", "HIGH"),
("Unit 1", "Functions of Management", "POSDCORB, Levels of management", "HIGH"),
("Unit 2", "Leadership - Definition & Types", "Autocratic, Democratic, Laissez-faire", "HIGH"),
("Unit 2", "Leadership Theories", "Trait, Behavioral, Situational, Transformational", "HIGH"),
("Unit 2", "Qualities of Nurse Leader", "12 core qualities, role of nurse leader", "MEDIUM"),
("Unit 3", "Planning", "Types, steps, strategic vs operational", "HIGH"),
("Unit 3", "Organizing", "Org charts, types of structures, span of control", "MEDIUM"),
("Unit 4", "Staffing & Scheduling", "Steps in staffing, INC nurse-patient ratios", "HIGH"),
("Unit 4", "Patient Classification", "Categories I-IV, nursing hours formula", "MEDIUM"),
("Unit 5", "Budgeting", "Types of budgets, ZBB, Capital vs Operating", "HIGH"),
("Unit 6", "Motivation Theories", "Maslow, Herzberg, McGregor, Vroom", "HIGH"),
("Unit 6", "Communication", "Process, barriers, types, SBAR", "MEDIUM"),
("Unit 7", "Quality Management / TQM", "PDCA, TQM principles, quality tools", "HIGH"),
("Unit 7", "NABH Accreditation", "Standards, 2005 establishment, benefits", "HIGH"),
("Unit 8", "Legal Responsibilities", "Negligence, Battery, Informed Consent, INC Act", "HIGH"),
("Unit 8", "Ethics in Nursing", "Beneficence, Autonomy, Justice, Fidelity", "MEDIUM"),
("Unit 9", "Performance Appraisal", "Rating scale, MBO, 360-degree, BARS", "MEDIUM"),
("Unit 9", "Delegation", "5 Rights of Delegation, barriers", "HIGH"),
("Unit 10","Nursing Audit & Records", "Retrospective, Concurrent, Prospective audit", "HIGH"),
]
# Status dropdown validation
status_dv = DataValidation(type="list", formula1='"Not Started,In Progress,Done"', allow_blank=True)
status_dv.sqref = "F5:F24"
ws_topic.add_data_validation(status_dv)
# Confidence dropdown
conf_dv = DataValidation(type="list", formula1='"1,2,3,4,5"', allow_blank=True)
conf_dv.sqref = "G5:G24"
ws_topic.add_data_validation(conf_dv)
# Priority dropdown
pri_dv = DataValidation(type="list", formula1='"HIGH,MEDIUM,LOW"', allow_blank=True)
pri_dv.sqref = "L5:L24"
ws_topic.add_data_validation(pri_dv)
for i, (unit, topic, subtopics, priority) in enumerate(topics):
r = 5 + i
bg = C["grey_light"] if i % 2 == 0 else "FFFFFF"
# Row number
c_num = ws_topic.cell(row=r, column=1, value=i+1)
c_num.font = font(bold=True, size=10, color=C["grey_dark"]); c_num.fill = fill(bg)
c_num.alignment = align("center"); c_num.border = border()
# Topic name
c_topic = ws_topic.cell(row=r, column=2, value=topic)
c_topic.font = font(bold=True, size=10, color=C["navy"]); c_topic.fill = fill(bg)
c_topic.alignment = align("left", wrap=True); c_topic.border = border()
# Unit
c_unit = ws_topic.cell(row=r, column=3, value=unit)
c_unit.font = font(size=9, color=C["blue"]); c_unit.fill = fill(C["pale_blue"])
c_unit.alignment = align("center"); c_unit.border = border()
# Subtopics
c_sub = ws_topic.cell(row=r, column=4, value=subtopics)
c_sub.font = font(size=9, italic=True, color=C["grey_dark"]); c_sub.fill = fill(bg)
c_sub.alignment = align("left", wrap=True); c_sub.border = border()
# Study hours (user fills in) - blue = input
c_hrs = ws_topic.cell(row=r, column=5, value=0)
c_hrs.font = font(size=10, color="0000FF"); c_hrs.fill = fill(C["pale_blue"])
c_hrs.alignment = align("center"); c_hrs.border = border()
c_hrs.number_format = "0.0"
# Status (user fills in) - default "Not Started"
c_status = ws_topic.cell(row=r, column=6, value="Not Started")
c_status.font = font(bold=True, size=9, color=C["red"]); c_status.fill = fill(C["pale_red"])
c_status.alignment = align("center"); c_status.border = border()
# Confidence (user fills in)
c_conf = ws_topic.cell(row=r, column=7, value=None)
c_conf.font = font(size=10, color="0000FF"); c_conf.fill = fill(C["pale_yellow"])
c_conf.alignment = align("center"); c_conf.border = border()
# Last revised (user fills in)
c_date = ws_topic.cell(row=r, column=8, value=None)
c_date.font = font(size=9, color="0000FF"); c_date.fill = fill(bg)
c_date.alignment = align("center"); c_date.border = border()
c_date.number_format = "DD-MMM"
# Notes
c_notes = ws_topic.cell(row=r, column=9, value=None)
c_notes.font = font(size=9, color=C["black"]); c_notes.fill = fill(bg)
c_notes.alignment = align("left", wrap=True); c_notes.border = border()
# MCQ score
c_mcq = ws_topic.cell(row=r, column=10, value=None)
c_mcq.font = font(size=10, color="0000FF"); c_mcq.fill = fill(C["pale_purple"])
c_mcq.alignment = align("center"); c_mcq.border = border()
# Flashcard reviewed Y/N
c_flash = ws_topic.cell(row=r, column=11, value=None)
c_flash.font = font(size=10, color="0000FF"); c_flash.fill = fill(bg)
c_flash.alignment = align("center"); c_flash.border = border()
# Priority
c_pri = ws_topic.cell(row=r, column=12, value=priority)
pri_color = C["red"] if priority == "HIGH" else (C["orange"] if priority == "MEDIUM" else C["green"])
pri_bg = C["pale_red"] if priority == "HIGH" else (C["pale_orange"] if priority == "MEDIUM" else C["pale_green"])
c_pri.font = font(bold=True, size=9, color=pri_color); c_pri.fill = fill(pri_bg)
c_pri.alignment = align("center"); c_pri.border = border()
ws_topic.row_dimensions[r].height = 22
# Totals row
tot_r = 25
ws_topic.cell(row=tot_r, column=1, value="TOTAL").font = font(bold=True, size=10, color="FFFFFF")
ws_topic.cell(row=tot_r, column=1).fill = fill(C["navy"]); ws_topic.cell(row=tot_r, column=1).alignment = align("center")
ws_topic.cell(row=tot_r, column=5, value="=SUM(E5:E24)").font = font(bold=True, size=10, color="FFFFFF")
ws_topic.cell(row=tot_r, column=5).fill = fill(C["navy"]); ws_topic.cell(row=tot_r, column=5).alignment = align("center")
ws_topic.cell(row=tot_r, column=5).number_format = "0.0"
done_formula = '=COUNTIF(F5:F24,"Done")&" / "&COUNTA(B5:B24)&" topics done"'
ws_topic.merge_cells(f"F{tot_r}:H{tot_r}")
ws_topic.cell(row=tot_r, column=6, value=done_formula).font = font(bold=True, size=10, color="FFFFFF")
ws_topic.cell(row=tot_r, column=6).fill = fill(C["navy"]); ws_topic.cell(row=tot_r, column=6).alignment = align("center")
ws_topic.row_dimensions[tot_r].height = 22
# Conditional formatting: Status column (F5:F24)
green_fill = PatternFill(bgColor=C["pale_green"]); green_font = Font(bold=True, color=C["green"], name="Arial", size=9)
orange_fill = PatternFill(bgColor=C["pale_orange"]); orange_font = Font(bold=True, color=C["orange"], name="Arial", size=9)
red_fill = PatternFill(bgColor=C["pale_red"]); red_font = Font(bold=True, color=C["red"], name="Arial", size=9)
ws_topic.conditional_formatting.add("F5:F24", CellIsRule(operator="equal", formula=['"Done"'], fill=green_fill, font=green_font))
ws_topic.conditional_formatting.add("F5:F24", CellIsRule(operator="equal", formula=['"In Progress"'], fill=orange_fill, font=orange_font))
ws_topic.conditional_formatting.add("F5:F24", CellIsRule(operator="equal", formula=['"Not Started"'], fill=red_fill, font=red_font))
# Color scale for confidence (G5:G24)
ws_topic.conditional_formatting.add("G5:G24",
ColorScaleRule(start_type="num", start_value=1, start_color="FF6B6B",
mid_type="num", mid_value=3, mid_color="FFD93D",
end_type="num", end_value=5, end_color="6BCB77"))
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 3: STUDY LOG
# ══════════════════════════════════════════════════════════════════════════════
ws_log = wb.create_sheet("⏱ Study Log")
ws_log.sheet_view.showGridLines = False
ws_log.sheet_properties.tabColor = C["green"]
ws_log.merge_cells("A1:I2")
ws_log["A1"].value = "⏱ DAILY STUDY LOG — Record each study session here"
ws_log["A1"].font = font(bold=True, size=14, color="FFFFFF")
ws_log["A1"].fill = fill(C["green"])
ws_log["A1"].alignment = align("center", "center")
ws_log.row_dimensions[1].height = 32; ws_log.row_dimensions[2].height = 8
log_headers = ["#", "Date", "Day", "Hours\nStudied", "Topic(s) Covered", "Resources Used",
"Mood\n(1-5)", "Key Takeaway", "Follow-Up"]
apply_header_row(ws_log, 3, list(range(1,10)), log_headers, C["green"], sz=9)
ws_log.row_dimensions[3].height = 28
set_col_width(ws_log, {
"A": 4, "B": 13, "C": 11, "D": 9, "E": 28,
"F": 20, "G": 8, "H": 28, "I": 20
})
# Pre-fill 30 log rows with day formula
for i in range(30):
r = 4 + i
bg = C["grey_light"] if i % 2 == 0 else "FFFFFF"
ws_log.cell(row=r, column=1, value=i+1).font = font(size=9, color=C["grey_dark"])
ws_log.cell(row=r, column=1).fill = fill(bg); ws_log.cell(row=r, column=1).alignment = align("center")
# Date input
dc = ws_log.cell(row=r, column=2)
dc.font = font(size=10, color="0000FF"); dc.fill = fill(C["pale_blue"])
dc.alignment = align("center"); dc.number_format = "DD-MMM-YY"
# Day auto-formula (safe - only if date filled)
dayc = ws_log.cell(row=r, column=3)
dayc.value = f'=IFERROR(TEXT(B{r},"DDD"),"")'
dayc.font = font(size=9, italic=True, color=C["grey_dark"]); dayc.fill = fill(bg); dayc.alignment = align("center")
# Hours
hc = ws_log.cell(row=r, column=4)
hc.font = font(bold=True, size=10, color="0000FF"); hc.fill = fill(C["pale_green"])
hc.alignment = align("center"); hc.number_format = "0.0"
# Topics, Resources, Mood, Takeaway, Follow-up - all user input
for col in [5, 6, 7, 8, 9]:
cell = ws_log.cell(row=r, column=col)
cell.font = font(size=9, color="0000FF" if col in [5,6,7] else C["black"])
cell.fill = fill(C["pale_yellow"] if col == 7 else bg)
cell.alignment = align("left", wrap=True)
cell.border = border()
ws_log.row_dimensions[r].height = 20
# Weekly totals section
ws_log.merge_cells("A35:D35")
ws_log["A35"].value = "WEEKLY SUMMARY"
ws_log["A35"].font = font(bold=True, size=10, color="FFFFFF"); ws_log["A35"].fill = fill(C["green"])
ws_log["A35"].alignment = align("center")
ws_log.row_dimensions[35].height = 20
weekly_rows = [
("Total Hours This Week", "=SUMIF(B4:B33,\">=\"&(TODAY()-WEEKDAY(TODAY(),2)+1),D4:D33)"),
("Total Hours All Time", "=SUM(D4:D33)"),
("Average Hours Per Day", "=IFERROR(SUM(D4:D33)/COUNTIF(D4:D33,\">0\"),0)"),
("Sessions Logged", "=COUNTIF(D4:D33,\">0\")"),
]
for i, (label, formula) in enumerate(weekly_rows):
r = 36 + i
ws_log.cell(row=r, column=1, value=label).font = font(size=10, color=C["navy"])
ws_log.cell(row=r, column=1).fill = fill(C["pale_green"]); ws_log.cell(row=r, column=1).alignment = align("left")
ws_log.merge_cells(f"A{r}:C{r}")
vc = ws_log.cell(row=r, column=4, value=formula)
vc.number_format = "0.0"
vc.font = font(bold=True, size=11, color=C["green"]); vc.fill = fill(C["pale_green"]); vc.alignment = align("center")
ws_log.row_dimensions[r].height = 20
# Color scale on hours column
ws_log.conditional_formatting.add("D4:D33",
ColorScaleRule(start_type="num", start_value=0, start_color="FFFFFF",
mid_type="num", mid_value=3, mid_color="AED6F1",
end_type="num", end_value=8, end_color="1B4F72"))
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 4: MCQ ANALYSIS
# ══════════════════════════════════════════════════════════════════════════════
ws_mcq = wb.create_sheet("📝 MCQ Analysis")
ws_mcq.sheet_view.showGridLines = False
ws_mcq.sheet_properties.tabColor = C["purple"]
ws_mcq.merge_cells("A1:K2")
ws_mcq["A1"].value = "📝 MCQ PRACTICE ANALYSIS — Track your performance topic by topic"
ws_mcq["A1"].font = font(bold=True, size=14, color="FFFFFF")
ws_mcq["A1"].fill = fill(C["purple"])
ws_mcq["A1"].alignment = align("center", "center")
ws_mcq.row_dimensions[1].height = 32; ws_mcq.row_dimensions[2].height = 8
mcq_headers = ["#", "Topic", "Total\nAttempted", "Correct", "Wrong",
"Score %", "Weak\nAreas", "Action\nPlan", "Attempt 1", "Attempt 2", "Attempt 3"]
apply_header_row(ws_mcq, 3, list(range(1,12)), mcq_headers, C["purple"], sz=9)
ws_mcq.row_dimensions[3].height = 28
set_col_width(ws_mcq, {
"A": 4, "B": 26, "C": 11, "D": 10, "E": 10,
"F": 10, "G": 20, "H": 22, "I": 10, "J": 10, "K": 10
})
mcq_topics = [
"Introduction to Management",
"Fayol's 14 Principles",
"Functions of Management (POSDCORB)",
"Leadership Styles & Theories",
"Motivation Theories (Maslow/Herzberg)",
"Planning & Organizing",
"Staffing & Scheduling",
"Budgeting",
"Communication",
"Quality Management / TQM",
"NABH & Accreditation",
"Legal & Ethical Aspects",
"Delegation",
"Performance Appraisal",
"Nursing Audit & Records",
]
for i, topic in enumerate(mcq_topics):
r = 4 + i
bg = C["grey_light"] if i % 2 == 0 else "FFFFFF"
ws_mcq.cell(row=r, column=1, value=i+1).font = font(size=9, color=C["grey_dark"])
ws_mcq.cell(row=r, column=1).fill = fill(bg); ws_mcq.cell(row=r, column=1).alignment = align("center")
ws_mcq.cell(row=r, column=2, value=topic).font = font(bold=True, size=10, color=C["navy"])
ws_mcq.cell(row=r, column=2).fill = fill(bg); ws_mcq.cell(row=r, column=2).alignment = align("left")
# Attempted, Correct, Wrong (user input - blue)
for col in [3, 4, 5]:
cell = ws_mcq.cell(row=r, column=col)
cell.font = font(size=10, color="0000FF"); cell.fill = fill(C["pale_blue"])
cell.alignment = align("center")
# Score % formula
sc = ws_mcq.cell(row=r, column=6)
sc.value = f"=IFERROR(D{r}/C{r},\"\")"
sc.number_format = "0%"
sc.font = font(bold=True, size=10, color=C["black"])
sc.fill = fill(C["pale_purple"]); sc.alignment = align("center")
# Weak areas, action plan (user input)
for col in [7, 8]:
cell = ws_mcq.cell(row=r, column=col)
cell.font = font(size=9, color="0000FF"); cell.fill = fill(bg)
cell.alignment = align("left", wrap=True)
# Individual attempt scores
for col in [9, 10, 11]:
cell = ws_mcq.cell(row=r, column=col)
cell.font = font(size=10, color="0000FF"); cell.fill = fill(C["pale_green"])
cell.alignment = align("center")
ws_mcq.row_dimensions[r].height = 20
# Conditional on score %
ws_mcq.conditional_formatting.add("F4:F18",
ColorScaleRule(start_type="num", start_value=0, start_color="FF6B6B",
mid_type="num", mid_value=0.6, mid_color="FFD93D",
end_type="num", end_value=1, end_color="6BCB77"))
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 5: REVISION PLANNER
# ══════════════════════════════════════════════════════════════════════════════
ws_plan = wb.create_sheet("📅 Revision Planner")
ws_plan.sheet_view.showGridLines = False
ws_plan.sheet_properties.tabColor = C["orange"]
ws_plan.merge_cells("A1:N2")
ws_plan["A1"].value = "📅 2-WEEK REVISION PLANNER — Plan your study schedule day by day"
ws_plan["A1"].font = font(bold=True, size=14, color="FFFFFF")
ws_plan["A1"].fill = fill(C["orange"])
ws_plan["A1"].alignment = align("center", "center")
ws_plan.row_dimensions[1].height = 32; ws_plan.row_dimensions[2].height = 8
# Day columns
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
week_labels = ["WEEK 1", "WEEK 2"]
# Headers
ws_plan.cell(row=3, column=1, value="Time Slot").font = font(bold=True, size=9, color="FFFFFF")
ws_plan.cell(row=3, column=1).fill = fill(C["orange"]); ws_plan.cell(row=3, column=1).alignment = align("center", "center")
ws_plan.row_dimensions[3].height = 22
set_col_width(ws_plan, {"A": 14})
# Two-week calendar grid
for week_idx, week_label in enumerate(week_labels):
col_start = 2 + week_idx * 7
ws_plan.merge_cells(start_row=3, start_column=col_start, end_row=3, end_column=col_start+6)
wc = ws_plan.cell(row=3, column=col_start, value=week_label)
wc.font = font(bold=True, size=10, color="FFFFFF")
wc.fill = fill(C["navy"] if week_idx == 0 else C["purple"])
wc.alignment = align("center")
for d_idx, day in enumerate(days):
col = col_start + d_idx
dc = ws_plan.cell(row=4, column=col, value=day)
dc.font = font(bold=True, size=9, color="FFFFFF")
day_color = C["navy"] if day in ["SAT","SUN"] else (C["blue"] if week_idx==0 else C["purple"])
dc.fill = fill(day_color)
dc.alignment = align("center")
ws_plan.column_dimensions[get_column_letter(col)].width = 13
ws_plan.row_dimensions[4].height = 20
# Date row
ws_plan.cell(row=5, column=1, value="Date →").font = font(italic=True, size=8, color=C["grey_dark"])
ws_plan.cell(row=5, column=1).fill = fill(C["grey_light"])
for col in range(2, 16):
dc = ws_plan.cell(row=5, column=col)
dc.font = font(size=8, color="0000FF"); dc.fill = fill(C["pale_blue"])
dc.alignment = align("center"); dc.number_format = "DD-MMM"
ws_plan.row_dimensions[5].height = 16
# Time slots
time_slots = [
"Morning (6-8 AM)",
"Morning (8-10 AM)",
"Afternoon (2-4 PM)",
"Evening (6-8 PM)",
"Night Revision",
"Hours Planned",
"Topic Focus",
"Completed? (Y/N)",
]
for slot_idx, slot in enumerate(time_slots):
r = 6 + slot_idx
sc = ws_plan.cell(row=r, column=1, value=slot)
is_header = slot in ["Hours Planned", "Topic Focus", "Completed? (Y/N)"]
sc.font = font(bold=is_header, size=9, color=C["navy"] if is_header else C["black"])
sc.fill = fill(C["pale_orange"] if is_header else (C["grey_light"] if slot_idx%2==0 else "FFFFFF"))
sc.alignment = align("left", wrap=True)
ws_plan.row_dimensions[r].height = 18 if not is_header else 20
for col in range(2, 16):
cell = ws_plan.cell(row=r, column=col)
cell.font = font(size=9, color="0000FF")
cell.fill = fill(C["pale_yellow"] if is_header else (C["grey_light"] if slot_idx%2==0 else "FFFFFF"))
cell.alignment = align("center", wrap=True)
cell.border = border()
# Key topic assignment guide
guide_r = 16
ws_plan.merge_cells(f"A{guide_r}:N{guide_r}")
ws_plan[f"A{guide_r}"].value = "SUGGESTED TOPIC SCHEDULE (Adjust to your exam date)"
ws_plan[f"A{guide_r}"].font = font(bold=True, size=10, color="FFFFFF")
ws_plan[f"A{guide_r}"].fill = fill(C["navy"])
ws_plan[f"A{guide_r}"].alignment = align("center")
ws_plan.row_dimensions[guide_r].height = 20
suggested = [
("Day 1-2 (Mon-Tue)", "Unit 1: Management - Definition, Principles (Fayol), POSDCORB functions"),
("Day 3-4 (Wed-Thu)", "Unit 2: Leadership - Styles, Theories (Trait/Situational/Transformational)"),
("Day 5 (Fri)", "Unit 3: Planning & Organizing - Steps, Org charts, Span of control"),
("Day 6 (Sat)", "Unit 4: Staffing - Steps, INC ratios, Patient classification"),
("Day 7 (Sun)", "REVISION DAY 1 - Revise Units 1-4 using flashcards"),
("Day 8 (Mon)", "Unit 5: Budgeting - Types, ZBB, Capital/Operating budget"),
("Day 9 (Tue)", "Unit 6: Motivation (Maslow, Herzberg, McGregor) + Communication"),
("Day 10 (Wed)", "Unit 7: Quality Management, TQM tools, NABH accreditation"),
("Day 11 (Thu)", "Unit 8: Legal/Ethical - Negligence, Battery, Informed Consent, Code of Ethics"),
("Day 12 (Fri)", "Unit 9 & 10: Performance Appraisal, Delegation, Nursing Audit & Records"),
("Day 13 (Sat)", "FULL REVISION: Attempt MCQ Practice Test. Review weak areas."),
("Day 14 (Sun)", "EXAM EVE: Quick flashcard review. Rest well!"),
]
for i, (day, plan) in enumerate(suggested):
r = guide_r + 1 + i
bg = C["grey_light"] if i%2==0 else "FFFFFF"
ws_plan.cell(row=r, column=1, value=day).font = font(bold=True, size=9, color=C["orange"])
ws_plan.cell(row=r, column=1).fill = fill(bg); ws_plan.cell(row=r, column=1).alignment = align("left")
ws_plan.merge_cells(f"B{r}:N{r}")
ws_plan.cell(row=r, column=2, value=plan).font = font(size=9, color=C["navy"])
ws_plan.cell(row=r, column=2).fill = fill(bg); ws_plan.cell(row=r, column=2).alignment = align("left", wrap=True)
ws_plan.row_dimensions[r].height = 18
# ══════════════════════════════════════════════════════════════════════════════
# SHEET 6: INSTRUCTIONS
# ══════════════════════════════════════════════════════════════════════════════
ws_info = wb.create_sheet("ℹ Instructions")
ws_info.sheet_view.showGridLines = False
ws_info.sheet_properties.tabColor = C["grey_dark"]
ws_info.merge_cells("A1:F2")
ws_info["A1"].value = "ℹ HOW TO USE THIS TRACKER"
ws_info["A1"].font = font(bold=True, size=16, color="FFFFFF")
ws_info["A1"].fill = fill(C["navy"])
ws_info["A1"].alignment = align("center", "center")
ws_info.row_dimensions[1].height = 36
set_col_width(ws_info, {"A": 6, "B": 22, "C": 60, "D": 20, "E": 20, "F": 6})
info_data = [
("📊 Dashboard", "Auto-updating overview. Enter your exam date in H7. Enter MCQ scores (column I).", C["navy"]),
("📚 Topic Tracker", "Your main tracker. Update Status (F) and Confidence (G) daily. Blue cells = your input.", C["blue"]),
("⏱ Study Log", "Log every study session. Fill Date (B) and Hours (D). Day auto-calculates.", C["green"]),
("📝 MCQ Analysis", "After each practice test, fill Attempted, Correct, Wrong per topic. Score% auto-calculates.", C["purple"]),
("📅 Revision Planner", "Plan your 2-week schedule. Follow the suggested plan or customize to your exam date.", C["orange"]),
("Dropdowns", "Status: Not Started / In Progress / Done | Confidence: 1-5 | Priority: HIGH/MEDIUM/LOW", C["grey_dark"]),
("Color Coding", "Blue text = cells for your input. Black text = formulas (do not edit). Color bars = auto.", C["grey_dark"]),
("🎯 Goal", "Aim for Confidence 4+ on all HIGH priority topics before exam day.", C["red"]),
]
for i, (sheet, desc, color) in enumerate(info_data):
r = 3 + i
bg = C["grey_light"] if i%2==0 else "FFFFFF"
ws_info.cell(row=r, column=2, value=sheet).font = font(bold=True, size=11, color=color)
ws_info.cell(row=r, column=2).fill = fill(bg); ws_info.cell(row=r, column=2).alignment = align("left")
ws_info.cell(row=r, column=3, value=desc).font = font(size=10, color=C["black"])
ws_info.cell(row=r, column=3).fill = fill(bg); ws_info.cell(row=r, column=3).alignment = align("left", wrap=True)
ws_info.row_dimensions[r].height = 24
# ── Save ───────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/nursing-management/Nursing_Exam_Preparation_Tracker.xlsx"
wb.save(out)
print(f"Saved: {out}")
print(f"Sheets: {[s.title for s in wb.worksheets]}")
cd /tmp/workspace/nursing-management && python3 generate_tracker.py
python3 -c " import openpyxl wb = openpyxl.load_workbook('/tmp/workspace/nursing-management/Nursing_Exam_Preparation_Tracker.xlsx') for ws in wb.worksheets: print(f'Sheet: {ws.title} | Rows: {ws.max_row} | Cols: {ws.max_column}') # Check no formula errors in key cells ws_topic = wb['📚 Topic Tracker'] ws_dash = wb['📊 Dashboard'] print('Dashboard KPI cells:', [ws_dash.cell(row=7,column=c).value for c in [2,3,4,5]]) print('Tracker row 5 status:', ws_topic['F5'].value) print('Tracker row 5 topic:', ws_topic['B5'].value) "
Nursing Exam Preparation Tracker
Spreadsheet · XLSX
Create a printable cheat sheet PDF for last-minute exam prep
~/nursing-management/generate_cheatsheet.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Table, TableStyle, Spacer,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus.flowables import BalancedColumns
from reportlab.pdfbase import pdfmetrics
# ── Colour palette ─────────────────────────────────────────────────────────────
NAVY = colors.HexColor("#1B4F72")
BLUE = colors.HexColor("#2E86C1")
PALE_BLUE = colors.HexColor("#D6EAF8")
LIGHT_BLUE = colors.HexColor("#AED6F1")
GREEN = colors.HexColor("#1E8449")
PALE_GREEN = colors.HexColor("#D5F5E3")
ORANGE = colors.HexColor("#D35400")
PALE_ORA = colors.HexColor("#FAD7A0")
RED = colors.HexColor("#922B21")
PALE_RED = colors.HexColor("#FADBD8")
PURPLE = colors.HexColor("#6C3483")
PALE_PUR = colors.HexColor("#E8DAEF")
YELLOW = colors.HexColor("#F1C40F")
PALE_YEL = colors.HexColor("#FEF9E7")
WHITE = colors.white
BLACK = colors.HexColor("#17202A")
GREY = colors.HexColor("#808B96")
GREY_LIGHT = colors.HexColor("#F2F3F4")
GREY_MID = colors.HexColor("#D5D8DC")
# ── Page setup ─────────────────────────────────────────────────────────────────
PAGE_W, PAGE_H = A4 # 595 x 842 pt
MARGIN = 0.9 * cm
COL_GAP = 0.3 * cm
# 3 columns
N_COLS = 3
COL_W = (PAGE_W - 2*MARGIN - (N_COLS-1)*COL_GAP) / N_COLS
out_path = "/tmp/workspace/nursing-management/Nursing_Management_Leadership_CheatSheet.pdf"
doc = SimpleDocTemplate(
out_path,
pagesize=A4,
leftMargin=MARGIN, rightMargin=MARGIN,
topMargin=0.6*cm, bottomMargin=0.6*cm,
title="Nursing Management & Leadership - Cheat Sheet",
author="BSc Nursing 6th Semester",
)
# ── Style helpers ──────────────────────────────────────────────────────────────
def style(name, parent="Normal", **kwargs):
s = ParagraphStyle(name, parent=getSampleStyleSheet()["Normal"])
for k, v in kwargs.items():
setattr(s, k, v)
return s
S_TITLE = style("Title", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=11, backColor=NAVY, spaceBefore=0, spaceAfter=1, leftIndent=2, rightIndent=2)
S_SECTHDG = style("SectHdg", fontSize=7.5,fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=9, backColor=BLUE, spaceBefore=2, spaceAfter=1)
S_ITEM = style("Item", fontSize=6.5,fontName="Helvetica", textColor=BLACK, alignment=TA_LEFT, leading=8, spaceBefore=0, spaceAfter=0)
S_BOLD = style("Bold", fontSize=6.5,fontName="Helvetica-Bold", textColor=BLACK, alignment=TA_LEFT, leading=8, spaceBefore=0, spaceAfter=0)
S_KEY = style("Key", fontSize=6.5,fontName="Helvetica-Bold", textColor=NAVY, alignment=TA_LEFT, leading=8, spaceBefore=0, spaceAfter=0)
S_NOTE = style("Note", fontSize=6, fontName="Helvetica-Oblique",textColor=PURPLE, alignment=TA_LEFT, leading=7.5,spaceBefore=0, spaceAfter=0)
S_FORMULA = style("Formula", fontSize=6.5,fontName="Helvetica-Bold", textColor=GREEN, alignment=TA_CENTER, leading=8, backColor=PALE_GREEN, spaceBefore=1, spaceAfter=1, leftIndent=2, rightIndent=2)
def hdg(text, bg=NAVY, fg=WHITE, fs=7.5):
s = ParagraphStyle("hdg_"+text[:6], parent=getSampleStyleSheet()["Normal"],
fontSize=fs, fontName="Helvetica-Bold", textColor=fg,
alignment=TA_CENTER, leading=fs+1.5,
backColor=bg, spaceBefore=3, spaceAfter=1,
leftIndent=0, rightIndent=0)
return Paragraph(text, s)
def bullet(text, bold_part=None, indent=3):
if bold_part:
t = f"<b>{bold_part}</b> {text}"
else:
t = f"• {text}"
return Paragraph(t, ParagraphStyle("blt", parent=getSampleStyleSheet()["Normal"],
fontSize=6.5, fontName="Helvetica", textColor=BLACK,
alignment=TA_LEFT, leading=8, leftIndent=indent, spaceBefore=0, spaceAfter=0))
def kv(key, val, key_color=NAVY, val_color=BLACK):
return Paragraph(
f'<font name="Helvetica-Bold" color="{key_color.hexval()}">{key}: </font>'
f'<font name="Helvetica" color="{val_color.hexval()}">{val}</font>',
ParagraphStyle("kv", parent=getSampleStyleSheet()["Normal"],
fontSize=6.5, leading=8, spaceBefore=0, spaceAfter=0, leftIndent=3)
)
def note(text):
return Paragraph(f"★ {text}",
ParagraphStyle("nt", parent=getSampleStyleSheet()["Normal"],
fontSize=6, fontName="Helvetica-Oblique", textColor=PURPLE,
leading=7.5, spaceBefore=0, spaceAfter=1, leftIndent=3))
def mini_table(headers, rows, col_ws, hdr_bg=NAVY, alt=GREY_LIGHT):
data = [headers] + rows
ts = TableStyle([
("BACKGROUND", (0,0), (-1,0), hdr_bg),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 5.5),
("LEADING", (0,0), (-1,-1), 7),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("GRID", (0,0), (-1,-1), 0.3, GREY_MID),
("TOPPADDING", (0,0), (-1,-1), 1),
("BOTTOMPADDING",(0,0),(-1,-1), 1),
("LEFTPADDING", (0,0), (-1,-1), 2),
("RIGHTPADDING",(0,0),(-1,-1), 2),
])
for i in range(1, len(data)):
if i % 2 == 0:
ts.add("BACKGROUND", (0,i), (-1,i), alt)
# Bold first column
for i in range(1, len(data)):
ts.add("FONTNAME", (0,i), (0,i), "Helvetica-Bold")
ts.add("TEXTCOLOR", (0,i), (0,i), NAVY)
ts.add("ALIGN", (0,i), (0,i), "LEFT")
t = Table(data, colWidths=col_ws)
t.setStyle(ts)
return t
def sp(h=1): return Spacer(1, h*mm)
def hr(color=GREY_MID, thickness=0.3): return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=1, spaceBefore=1)
# ══════════════════════════════════════════════════════════════════════════════
# BUILD CONTENT FOR EACH COLUMN
# ══════════════════════════════════════════════════════════════════════════════
# ─── COLUMN 1 ─────────────────────────────────────────────────────────────────
col1 = []
# MANAGEMENT BASICS
col1.append(hdg("MANAGEMENT — BASICS", NAVY))
col1.append(kv("Definition", "Process of planning, organizing, staffing, directing & controlling resources to achieve goals"))
col1.append(kv("Fayol's def", "Forecast, plan, organize, command, coordinate, control"))
col1.append(sp(1))
col1.append(hdg("FAYOL'S 14 PRINCIPLES", BLUE))
fayol_rows = [
["1. Division of Work", "Specialization → efficiency"],
["2. Authority", "Right to command + responsibility"],
["3. Discipline", "Obedience & respect for rules"],
["4. Unity of Command", "One superior per employee"],
["5. Unity of Direction", "One plan for each activity"],
["6. Subordination", "Org goal > personal interest"],
["7. Remuneration", "Fair pay for work done"],
["8. Centralization", "Degree of decision concentration"],
["9. Scalar Chain", "Line of authority top → bottom"],
["10. Order", "Right person, right place"],
["11. Equity", "Kindness + justice"],
["12. Stability", "Minimize staff turnover"],
["13. Initiative", "Encourage employee initiative"],
["14. Esprit de Corps", "Team spirit & unity"],
]
col1.append(mini_table(["Principle","Meaning"], fayol_rows, [COL_W*0.42, COL_W*0.58]))
col1.append(sp(1))
col1.append(hdg("FUNCTIONS — POSDCORB (Gulick)", BLUE))
posdcorb = [
["P", "Planning"], ["O","Organizing"], ["S","Staffing"],
["D","Directing"], ["CO","Coordinating"],["R","Reporting"],["B","Budgeting"],
]
col1.append(mini_table(["Letter","Function"], posdcorb, [COL_W*0.2, COL_W*0.8]))
col1.append(sp(1))
col1.append(hdg("MANAGEMENT LEVELS", GREEN))
levels = [
["Top", "Director of Nursing, CNO", "Policy, strategy"],
["Middle", "Supervisor, Ward Sister", "Coordination"],
["Lower", "Staff Nurse, Charge Nurse", "Direct care"],
]
col1.append(mini_table(["Level","Designation","Role"], levels, [COL_W*0.18, COL_W*0.45, COL_W*0.37], hdr_bg=GREEN))
col1.append(sp(1))
col1.append(hdg("PLANNING", BLUE))
col1.append(mini_table(["Type","Duration"],
[["Strategic","5-10 yrs"],["Tactical","1-5 yrs"],["Operational","Daily/weekly"],["Contingency","Emergencies"]],
[COL_W*0.45, COL_W*0.55]))
col1.append(sp(1))
col1.append(hdg("STAFFING STEPS", GREEN))
for n,s in enumerate(["Manpower planning","Job analysis","Recruitment","Selection","Orientation","Training","Appraisal","Promotion/Retention"],1):
col1.append(Paragraph(f"<font name='Helvetica-Bold' color='#1E8449'>{n}.</font> {s}",
ParagraphStyle("st",parent=getSampleStyleSheet()["Normal"],fontSize=6.5,leading=8,leftIndent=5)))
col1.append(sp(1))
col1.append(hdg("INC NURSE-PATIENT RATIO", ORANGE))
col1.append(mini_table(["Ward","Day","Night"],
[["Medical/Surgical","1:6","1:10"],["ICU","1:1-2","1:1-2"],["OPD","1:100","—"],
["Labour Room","1:1","1:1"],["Nursery","1:6","1:6"]],
[COL_W*0.48, COL_W*0.26, COL_W*0.26], hdr_bg=ORANGE))
col1.append(note("Patient Classification: Cat I=1.5-2h, II=3-4h, III=5-6h, IV=7+h per day"))
col1.append(sp(1))
col1.append(hdg("BUDGETING", PURPLE))
col1.append(mini_table(["Type","Key Feature"],
[["Personnel","Largest; salaries & wages"],
["Operating","Day-to-day supplies"],
["Capital","Equipment >₹5000, >1yr life"],
["ZBB","Every expense from zero"],
["Incremental","Previous yr + increment"],
["Flexible","Adjusts to activity level"]],
[COL_W*0.38, COL_W*0.62], hdr_bg=PURPLE))
# ─── COLUMN 2 ─────────────────────────────────────────────────────────────────
col2 = []
col2.append(hdg("LEADERSHIP — KEY DEFINITIONS", NAVY))
col2.append(kv("Leadership", "Ability to guide, influence & motivate others toward a common goal"))
col2.append(kv("Difference", "Leadership = influence people | Management = control resources"))
col2.append(sp(1))
col2.append(hdg("LEADERSHIP STYLES", BLUE))
col2.append(mini_table(["Style","Features","Best For"],
[["Autocratic","All decisions by leader; no input","Crisis/Emergency"],
["Democratic","Group participation; high morale","Routine nursing"],
["Laissez-faire","Full freedom to staff; minimal guide","Expert teams"],
["Paternalistic","Benevolent; father-figure approach","Traditional settings"],
["Transformational","Inspires vision & change","Innovation"],
["Transactional","Reward/punishment exchange","Routine tasks"]],
[COL_W*0.28, COL_W*0.42, COL_W*0.30]))
col2.append(sp(1))
col2.append(hdg("LEADERSHIP THEORIES", BLUE))
col2.append(mini_table(["Theory","Key Concept"],
[["Trait Theory","Leaders born with innate qualities"],
["Situational (Hersey)","Style depends on follower READINESS"],
["Fiedler Contingency","Match style to situation"],
["Path-Goal","Leader removes obstacles for staff"]],
[COL_W*0.38, COL_W*0.62]))
col2.append(note("Hersey & Blanchard: Telling→Selling→Participating→Delegating"))
col2.append(sp(1))
col2.append(hdg("MOTIVATION THEORIES", GREEN))
col2.append(hdg("Maslow's Hierarchy (1943)", GREEN, fs=6.5))
for n,layer in enumerate(["1. Physiological (food, water, shelter)","2. Safety (security, stability)",
"3. Social (love, belonging)","4. Esteem (recognition, respect)",
"5. Self-Actualization (peak potential)"],1):
col2.append(Paragraph(f"▲ {layer}", ParagraphStyle("ms",parent=getSampleStyleSheet()["Normal"],
fontSize=6.5, leading=8, leftIndent=4, textColor=GREEN if n==5 else BLACK)))
col2.append(sp(1))
col2.append(hdg("Herzberg Two-Factor", BLUE, fs=6.5))
col2.append(mini_table(["Motivators (Satisfiers)","Hygiene Factors (Dissatisfiers)"],
[["Achievement","Salary"],["Recognition","Working conditions"],
["Responsibility","Company policy"],["Growth","Supervision"],["Advancement","Interpersonal rel."]],
[COL_W*0.5, COL_W*0.5]))
col2.append(sp(1))
col2.append(hdg("McGregor Theory X vs Y", PURPLE, fs=6.5))
col2.append(mini_table(["Theory X","Theory Y"],
[["Lazy, avoid work","Self-motivated"],["Need coercion","Seek responsibility"],
["Autocratic style","Democratic style"]],
[COL_W*0.5, COL_W*0.5], hdr_bg=PURPLE))
col2.append(note("Vroom: Motivation = Expectancy × Instrumentality × Valence"))
col2.append(sp(1))
col2.append(hdg("COMMUNICATION", BLUE))
col2.append(mini_table(["Element","Description"],
[["Sender","Encodes the message"],["Message","Verbal/written/non-verbal"],
["Channel","Medium of transmission"],["Receiver","Decodes the message"],
["Feedback","Response from receiver"],["Noise","Barrier/distortion"]],
[COL_W*0.32, COL_W*0.68]))
col2.append(hdg("Barriers", RED, fs=6.5))
for b in ["Physical (noise, distance)","Language","Psychological (stress)","Cultural","Semantic"]:
col2.append(Paragraph(f"✗ {b}", ParagraphStyle("br",parent=getSampleStyleSheet()["Normal"],
fontSize=6.5, leading=8, leftIndent=4, textColor=RED)))
col2.append(sp(1))
col2.append(hdg("DELEGATION — 5 RIGHTS", ORANGE))
col2.append(mini_table(["Right","Meaning"],
[["1. Task","Appropriate & safe to delegate"],
["2. Circumstances","Suitable setting/condition"],
["3. Person","Qualified & competent"],
["4. Communication","Clear instructions given"],
["5. Supervision","Monitor & evaluate outcome"]],
[COL_W*0.32, COL_W*0.68], hdr_bg=ORANGE))
col2.append(sp(1))
col2.append(hdg("ORGANIZING", BLUE))
col2.append(mini_table(["Structure","Feature"],
[["Line","Simple; clear chain of command"],["Line & Staff","Most common in hospitals"],
["Functional","Specialization; multiple bosses"],["Matrix","Project + functional combined"]],
[COL_W*0.35, COL_W*0.65]))
col2.append(note("Span of Control: Ideal = 5-7 subordinates"))
# ─── COLUMN 3 ─────────────────────────────────────────────────────────────────
col3 = []
col3.append(hdg("QUALITY MANAGEMENT", NAVY))
col3.append(kv("TQM", "Continuous improvement involving ALL staff; goal = patient satisfaction"))
col3.append(hdg("IOM 6 Aims for Quality", BLUE, fs=6.5))
for aim in ["Safe","Effective","Patient-centered","Timely","Efficient","Equitable"]:
col3.append(Paragraph(f"✔ {aim}", ParagraphStyle("aim",parent=getSampleStyleSheet()["Normal"],
fontSize=6.5, leading=8, leftIndent=4, textColor=GREEN)))
col3.append(sp(1))
col3.append(hdg("QUALITY TOOLS", GREEN))
col3.append(mini_table(["Tool","Use"],
[["PDCA Cycle","Plan-Do-Check-Act; Deming's cycle"],
["Fishbone/Ishikawa","Cause & effect analysis"],
["Pareto Chart","80/20 rule; major causes"],
["Flow Chart","Map & analyze processes"],
["Control Chart","Statistical process control"],
["Histogram","Data frequency distribution"]],
[COL_W*0.38, COL_W*0.62], hdr_bg=GREEN))
col3.append(sp(1))
col3.append(hdg("NABH", BLUE))
col3.append(kv("Est.", "2005, under Quality Council of India"))
col3.append(kv("Purpose", "Accreditation & quality standards for hospitals"))
col3.append(kv("Standards", "10 areas incl. patient rights, infection control, HRM"))
col3.append(sp(1))
col3.append(hdg("NURSING AUDIT", PURPLE))
col3.append(mini_table(["Type","When"],
[["Retrospective","After patient discharge (closed records)"],
["Concurrent","During admission (open records)"],
["Prospective","Before care — set standards first"]],
[COL_W*0.3, COL_W*0.7], hdr_bg=PURPLE))
col3.append(note("Audit steps: Set standards → Collect data → Compare → Identify gaps → Correct → Follow-up"))
col3.append(sp(1))
col3.append(hdg("PERFORMANCE APPRAISAL", ORANGE))
col3.append(mini_table(["Method","Key Feature"],
[["Rating Scale","1-5 scale; most common"],
["MBO","Goals set jointly; measured at end"],
["360-Degree","Superior + peer + subordinate + self"],
["BARS","Rating + behavioral examples"],
["Critical Incident","Records specific notable behaviors"],
["Essay","Narrative description"]],
[COL_W*0.35, COL_W*0.65], hdr_bg=ORANGE))
col3.append(sp(1))
col3.append(hdg("LEGAL & ETHICAL CONCEPTS", RED))
col3.append(mini_table(["Term","Definition"],
[["Negligence","Failure to meet standard of care → patient harm"],
["Malpractice","Professional negligence"],
["Battery","Unlawful touch without consent"],
["Assault","Threat of harm"],
["Libel","Written defamation"],
["Slander","Verbal defamation"],
["False Imprisonment","Unlawful restriction of movement"]],
[COL_W*0.3, COL_W*0.7], hdr_bg=RED))
col3.append(sp(1))
col3.append(hdg("CODE OF ETHICS (ICN)", NAVY))
col3.append(mini_table(["Principle","Meaning"],
[["Autonomy","Patient's right to decide"],
["Beneficence","Do good"],
["Non-maleficence","Do no harm"],
["Justice","Fairness & equity"],
["Fidelity","Keep promises"],
["Veracity","Truth-telling"]],
[COL_W*0.32, COL_W*0.68]))
col3.append(sp(1))
col3.append(hdg("QUICK-FIRE FACTS", NAVY))
facts = [
"INC established: 1947 (INC Act)",
"POSDCORB coined by: Luther Gulick (1937)",
"Fayol's functions: 5 (POCDC)",
"Ideal span of control: 5-7 persons",
"NABH established: 2005",
"ICU ratio (INC): 1:1 or 1:2",
"ZBB = Zero-Based Budgeting",
"Theory X = autocratic; Theory Y = democratic",
"Retrospective audit = after discharge",
"Maslow levels: 5 (Physiological → Self-actualization)",
"Herzberg motivators ≠ hygiene factors",
"MBO: Peter Drucker's concept",
"PDCA = Deming cycle (quality tool)",
"Unity of Command = Fayol Principle #4",
"Scalar Chain = Fayol Principle #9",
]
for f in facts:
col3.append(Paragraph(f"▸ {f}", ParagraphStyle("ff",parent=getSampleStyleSheet()["Normal"],
fontSize=6, leading=7.5, leftIndent=3, textColor=BLACK)))
# ══════════════════════════════════════════════════════════════════════════════
# HEADER BANNER (drawn as a table spanning all 3 cols)
# ══════════════════════════════════════════════════════════════════════════════
full_w = PAGE_W - 2*MARGIN
header_data = [[
Paragraph("🩺 NURSING MANAGEMENT & LEADERSHIP | LAST-MINUTE CHEAT SHEET",
ParagraphStyle("hd", parent=getSampleStyleSheet()["Normal"],
fontSize=10, fontName="Helvetica-Bold", textColor=WHITE,
alignment=TA_CENTER, leading=12)),
Paragraph("B.Sc Nursing | 6th Semester | INC Syllabus",
ParagraphStyle("sub", parent=getSampleStyleSheet()["Normal"],
fontSize=7.5, fontName="Helvetica-Oblique", textColor=LIGHT_BLUE,
alignment=TA_RIGHT, leading=10)),
]]
header_tbl = Table(header_data, colWidths=[full_w*0.72, full_w*0.28])
header_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("LINEBELOW", (0,0), (-1,-1), 1.5, YELLOW),
]))
# ── Footer label ───────────────────────────────────────────────────────────────
footer_data = [[
Paragraph("MANAGEMENT | PRINCIPLES | LEADERSHIP | MOTIVATION | QUALITY | LEGAL | STAFFING | BUDGETING | AUDIT",
ParagraphStyle("ft", parent=getSampleStyleSheet()["Normal"],
fontSize=6, fontName="Helvetica-Oblique", textColor=WHITE,
alignment=TA_CENTER, leading=8)),
]]
footer_tbl = Table(footer_data, colWidths=[full_w])
footer_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING",(0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 4),
]))
# ══════════════════════════════════════════════════════════════════════════════
# ASSEMBLE: use a 3-column table for the body
# ══════════════════════════════════════════════════════════════════════════════
def col_to_table(content_list, width):
"""Wrap a list of flowables into a single-cell Table for column layout."""
rows = [[item] for item in content_list]
t = Table(rows, colWidths=[width])
t.setStyle(TableStyle([
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
return t
body_data = [[
col_to_table(col1, COL_W),
col_to_table(col2, COL_W),
col_to_table(col3, COL_W),
]]
body_tbl = Table(body_data, colWidths=[COL_W, COL_W, COL_W],
hAlign="LEFT",
spaceAfter=0)
body_tbl.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING",(0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 2),
("RIGHTPADDING", (0,0), (-1,-1), 2),
("LINEAFTER", (0,0), (1,-1), 0.3, GREY_MID),
]))
story = [
header_tbl,
Spacer(1, 1.5*mm),
body_tbl,
Spacer(1, 1.5*mm),
footer_tbl,
]
doc.build(story)
print(f"PDF saved: {out_path}")
cd /tmp/workspace/nursing-management && python3 generate_cheatsheet.py 2>&1
python3 -c " import pdfplumber with pdfplumber.open('/tmp/workspace/nursing-management/Nursing_Management_Leadership_CheatSheet.pdf') as pdf: print(f'Pages: {len(pdf.pages)}') print(f'Page size: {pdf.pages[0].width:.0f} x {pdf.pages[0].height:.0f} pt (A4 = 595x842)') text = pdf.pages[0].extract_text() # Show first 400 chars to confirm content print('Content preview:') print(text[:500] if text else '(no text layer)') "
Nursing Management Leadership CheatSheet
PDF Document · PDF
| Column 1 | Column 2 | Column 3 |
|---|---|---|
| Management definition | Leadership definition & styles | Quality Management / TQM |
| Fayol's 14 Principles (full table) | All 6 leadership styles + best context | IOM 6 aims + 6 quality tools |
| POSDCORB functions | Leadership theories | NABH (year, purpose, standards) |
| 3 management levels | Maslow's 5 levels (pyramid order) | Nursing Audit (3 types + steps) |
| Planning types (4) | Herzberg motivators vs hygiene | Performance Appraisal (6 methods) |
| Staffing steps (8) | McGregor X vs Y comparison | Legal terms (7 definitions) |
| INC nurse-patient ratios table | Vroom's formula | Code of Ethics (6 principles) |
| Patient classification (Cat I-IV) | Communication elements + barriers | 15 Quick-Fire Exam Facts |
| Budget types (6) | Delegation 5 Rights table | |
| Organizing structures |