Visit Report on Emergency Department

Asking for Preferences
Reading File
Running Command

mkdir -p /tmp/workspace/ed-visit-report && ls /tmp/workspace/

Writing File

~/ed-visit-report/generate_report.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

OUTPUT_PATH = "/tmp/workspace/ed-visit-report/ED_Visit_Report.docx"

# โ”€โ”€โ”€ Helper: add horizontal rule โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def add_hr(doc):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after = Pt(2)
    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"), "4472C4")
    pBdr.append(bottom)
    pPr.append(pBdr)

# โ”€โ”€โ”€ Helper: styled cell โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def set_cell_bg(cell, hex_color):
    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"), hex_color)
    tcPr.append(shd)

def bold_cell(cell, text, font_size=10, color=None):
    cell.text = ""
    p = cell.paragraphs[0]
    run = p.add_run(text)
    run.bold = True
    run.font.size = Pt(font_size)
    if color:
        run.font.color.rgb = RGBColor(*bytes.fromhex(color))

def normal_cell(cell, text, font_size=10):
    cell.text = ""
    p = cell.paragraphs[0]
    run = p.add_run(text)
    run.font.size = Pt(font_size)

# โ”€โ”€โ”€ Document setup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc = Document()

# Page margins
section = doc.sections[0]
section.top_margin    = Inches(0.9)
section.bottom_margin = Inches(0.9)
section.left_margin   = Inches(1.0)
section.right_margin  = Inches(1.0)

# Default Normal style
normal_style = doc.styles["Normal"]
normal_style.font.name = "Calibri"
normal_style.font.size = Pt(11)

# โ”€โ”€โ”€ Header banner โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
banner = doc.add_paragraph()
banner.alignment = WD_ALIGN_PARAGRAPH.CENTER
banner.paragraph_format.space_before = Pt(0)
banner.paragraph_format.space_after  = Pt(0)
r = banner.add_run("GENERAL CITY HOSPITAL")
r.bold = True
r.font.size = Pt(16)
r.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

sub = doc.add_paragraph()
sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub.paragraph_format.space_before = Pt(0)
sub.paragraph_format.space_after  = Pt(4)
r2 = sub.add_run("Department of Emergency Medicine  |  Quality & Safety Division")
r2.font.size = Pt(10)
r2.font.color.rgb = RGBColor(0x59, 0x59, 0x59)

add_hr(doc)

# โ”€โ”€โ”€ Title โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
title = doc.add_heading("", level=0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
title.paragraph_format.space_before = Pt(10)
title.paragraph_format.space_after  = Pt(4)
tr = title.add_run("EMERGENCY DEPARTMENT โ€“ VISIT REPORT")
tr.font.name = "Calibri"
tr.font.size = Pt(17)
tr.font.bold = True
tr.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

sub2 = doc.add_paragraph()
sub2.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub2.paragraph_format.space_after = Pt(6)
r3 = sub2.add_run("Routine Departmental Visit & Quality Inspection")
r3.italic = True
r3.font.size = Pt(11)
r3.font.color.rgb = RGBColor(0x40, 0x40, 0x40)

add_hr(doc)

# โ”€โ”€โ”€ Visit Details table โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.add_paragraph()
p_title = doc.add_paragraph()
p_title.paragraph_format.space_after = Pt(3)
rt = p_title.add_run("1.  VISIT DETAILS")
rt.bold = True
rt.font.size = Pt(12)
rt.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

visit_data = [
    ("Date of Visit",          "25 July 2026"),
    ("Time of Visit",          "09:00 AM โ€“ 12:00 PM"),
    ("Hospital / Facility",    "General City Hospital, Sector 12, New Delhi"),
    ("Department Visited",     "Emergency Department (ED)"),
    ("Purpose of Visit",       "Routine Quality & Safety Inspection"),
    ("Visiting Officer(s)",    "Dr. Anjali Mehta (CMO) | Mr. Rajan Verma (Quality Manager)"),
    ("Department In-charge",   "Dr. Priya Sharma, Head of Emergency Medicine"),
    ("Total Patients (at visit time)", "34 registered | 12 under active care"),
]

tbl = doc.add_table(rows=len(visit_data), cols=2)
tbl.style = "Table Grid"
tbl.autofit = False
tbl.columns[0].width = Inches(2.4)
tbl.columns[1].width = Inches(4.4)

for i, (label, value) in enumerate(visit_data):
    fill = "DCE6F1" if i % 2 == 0 else "FFFFFF"
    set_cell_bg(tbl.rows[i].cells[0], fill)
    set_cell_bg(tbl.rows[i].cells[1], fill)
    bold_cell(tbl.rows[i].cells[0], label, font_size=10)
    normal_cell(tbl.rows[i].cells[1], value, font_size=10)

doc.add_paragraph()

# โ”€โ”€โ”€ Helper: Section heading + body โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def section_heading(doc, num, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(10)
    p.paragraph_format.space_after  = Pt(3)
    r = p.add_run(f"{num}.  {text}")
    r.bold = True
    r.font.size = Pt(12)
    r.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

def sub_heading(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(5)
    p.paragraph_format.space_after  = Pt(2)
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(11)
    r.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)

def body_para(doc, text):
    p = doc.add_paragraph(text)
    p.paragraph_format.left_indent  = Inches(0.2)
    p.paragraph_format.space_after  = Pt(4)
    p.style.font.size = Pt(11)
    for run in p.runs:
        run.font.size = Pt(11)
    return p

def bullet_item(doc, text):
    p = doc.add_paragraph(style="List Bullet")
    p.paragraph_format.left_indent  = Inches(0.3)
    p.paragraph_format.space_after  = Pt(2)
    run = p.add_run(text)
    run.font.size = Pt(11)

# โ”€โ”€โ”€ Section 2: Executive Summary โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 2, "EXECUTIVE SUMMARY")
body_para(doc,
    "The visiting team conducted a comprehensive inspection of the Emergency Department (ED) "
    "at General City Hospital on 25 July 2026. The visit aimed to assess patient flow, triage "
    "efficiency, infection control compliance, staff performance, documentation practices, and "
    "equipment readiness. Overall, the department demonstrated satisfactory performance with "
    "specific areas identified for immediate improvement. The team commends the ED staff for "
    "their dedication and responsiveness during peak morning hours.")

# โ”€โ”€โ”€ Section 3: Scope & Objectives โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 3, "SCOPE & OBJECTIVES OF VISIT")
objectives = [
    "Evaluate patient triage process and waiting time adherence.",
    "Inspect cleanliness, infection prevention and control (IPC) measures.",
    "Assess availability and functionality of emergency equipment and medications.",
    "Review patient documentation, consent forms, and record-keeping practices.",
    "Observe staff deployment, attitude, and adherence to protocols.",
    "Identify gaps and provide actionable recommendations.",
]
for obj in objectives:
    bullet_item(doc, obj)

# โ”€โ”€โ”€ Section 4: Observations โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 4, "KEY OBSERVATIONS")

sub_heading(doc, "4.1  Patient Flow & Triage")
obs_triage = [
    ("Triage System",       "Manchester Triage System (MTS) in use; categories clearly color-coded."),
    ("Triage Time",         "Average triage completion time: 8 minutes. Target: <10 min. COMPLIANT."),
    ("Waiting Area",        "Seating adequate; wheelchair access satisfactory."),
    ("Registration Desk",   "Minor delay observed during 09:30โ€“10:00 AM surge; 1 clerk on duty."),
]
tbl2 = doc.add_table(rows=len(obs_triage), cols=2)
tbl2.style = "Table Grid"
tbl2.autofit = False
tbl2.columns[0].width = Inches(2.0)
tbl2.columns[1].width = Inches(4.8)
for i, (k, v) in enumerate(obs_triage):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    set_cell_bg(tbl2.rows[i].cells[0], fill)
    set_cell_bg(tbl2.rows[i].cells[1], fill)
    bold_cell(tbl2.rows[i].cells[0], k, font_size=10)
    normal_cell(tbl2.rows[i].cells[1], v, font_size=10)
doc.add_paragraph()

sub_heading(doc, "4.2  Infection Prevention & Control (IPC)")
ipc_items = [
    "Hand hygiene stations present at all entry points and bedsides. Alcohol-based hand rub available.",
    "PPE compliance observed in 90% of nursing staff; 2 staff members not wearing gloves during patient interaction โ€” counselled on the spot.",
    "Isolation bay for suspected communicable disease cases is functional and labelled.",
    "Biomedical waste (BMW) segregation adhered to; colour-coded bins in place.",
    "Floor and trolley surfaces visually clean; no malodour detected.",
]
for item in ipc_items:
    bullet_item(doc, item)

sub_heading(doc, "4.3  Equipment & Crash Cart Readiness")
equip_data = [
    ("Defibrillator (AED)",       "Present, charged, last checked 20 Jul 2026", "Satisfactory"),
    ("Crash Cart",                "All trays stocked; checklist signed daily", "Satisfactory"),
    ("Portable Oxygen",           "3 cylinders; 2 full, 1 at 50% โ€” refill due", "Action Required"),
    ("Suction Machine",           "Functional; tubing replaced as per schedule", "Satisfactory"),
    ("Pulse Oximeters (bedside)", "4 of 5 functional; 1 unit requires calibration", "Action Required"),
    ("ECG Machine",               "Functional; last calibrated 10 Jul 2026", "Satisfactory"),
    ("IV Infusion Pumps",         "6 pumps available; all functional", "Satisfactory"),
]
tbl3 = doc.add_table(rows=1 + len(equip_data), cols=3)
tbl3.style = "Table Grid"
tbl3.autofit = False
tbl3.columns[0].width = Inches(2.2)
tbl3.columns[1].width = Inches(3.4)
tbl3.columns[2].width = Inches(1.2)
headers = ["Equipment", "Status / Remarks", "Compliance"]
for j, h in enumerate(headers):
    set_cell_bg(tbl3.rows[0].cells[j], "1F497D")
    bold_cell(tbl3.rows[0].cells[j], h, font_size=10, color="FFFFFF")
for i, (eq, status, comp) in enumerate(equip_data):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(3):
        set_cell_bg(tbl3.rows[i+1].cells[j], fill)
    normal_cell(tbl3.rows[i+1].cells[0], eq, font_size=10)
    normal_cell(tbl3.rows[i+1].cells[1], status, font_size=10)
    comp_cell = tbl3.rows[i+1].cells[2]
    comp_cell.text = ""
    cp = comp_cell.paragraphs[0]
    cr = cp.add_run(comp)
    cr.bold = True
    cr.font.size = Pt(10)
    cr.font.color.rgb = RGBColor(0x00, 0x70, 0x20) if comp == "Satisfactory" else RGBColor(0xC0, 0x39, 0x00)
doc.add_paragraph()

sub_heading(doc, "4.4  Documentation & Record-Keeping")
doc_items = [
    "Patient case sheets: 28/30 files reviewed were complete. 2 files had missing allergy documentation.",
    "Medication administration records (MAR): Properly signed in 93% of reviewed cases.",
    "Consent forms: Signed for all procedural interventions reviewed.",
    "Triage stamps and time-stamping: Consistent and accurate.",
    "Incident reporting register: Up to date; 3 incidents logged in July, all with follow-up notes.",
]
for item in doc_items:
    bullet_item(doc, item)

sub_heading(doc, "4.5  Staffing & Staff Performance")
staffing_data = [
    ("Doctors on Duty",       "3 (1 Senior Resident + 2 Junior Residents)"),
    ("Nursing Staff",         "6 nurses; 1 charge nurse"),
    ("Support Staff (Ward Boys)", "4 present, all in uniform"),
    ("Duty Roster Displayed", "Yes, visible at nurses' station"),
    ("Attitude to Patients",  "Courteous and professional in all observed interactions"),
]
tbl4 = doc.add_table(rows=len(staffing_data), cols=2)
tbl4.style = "Table Grid"
tbl4.autofit = False
tbl4.columns[0].width = Inches(2.4)
tbl4.columns[1].width = Inches(4.4)
for i, (k, v) in enumerate(staffing_data):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    set_cell_bg(tbl4.rows[i].cells[0], fill)
    set_cell_bg(tbl4.rows[i].cells[1], fill)
    bold_cell(tbl4.rows[i].cells[0], k, font_size=10)
    normal_cell(tbl4.rows[i].cells[1], v, font_size=10)
doc.add_paragraph()

# โ”€โ”€โ”€ Section 5: Commendations โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 5, "COMMENDATIONS")
commendations = [
    "Excellent MTS triage compliance and timely patient categorisation.",
    "Crash cart maintained to a high standard with daily checklists rigorously followed.",
    "BMW segregation fully compliant; zero violations noted.",
    "Patient-centred communication observed across all clinical interactions.",
    "Accurate and timely incident reporting culture demonstrated.",
]
for c in commendations:
    bullet_item(doc, c)

# โ”€โ”€โ”€ Section 6: Areas for Improvement & Action Plan โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 6, "AREAS FOR IMPROVEMENT & ACTION PLAN")
action_data = [
    ("Pulse Oximeter Calibration",
     "1 unit out of calibration",
     "Biomedical Engineering",
     "28 Jul 2026",
     "High"),
    ("Oxygen Cylinder Refill",
     "1 cylinder at 50% โ€” requires refill",
     "Store / Nursing In-charge",
     "26 Jul 2026",
     "High"),
    ("PPE Compliance",
     "2 staff observed without gloves",
     "Nursing Supervisor",
     "Immediate",
     "High"),
    ("Registration Staffing",
     "Surge at 09:30โ€“10:00 AM with only 1 clerk",
     "Admin / HR",
     "01 Aug 2026",
     "Medium"),
    ("Allergy Documentation",
     "2 case files had missing allergy details",
     "Medical Records / RMO",
     "Ongoing",
     "Medium"),
    ("Staff PPE Refresher Training",
     "Brief re-training on PPE donning/doffing",
     "Infection Control Nurse",
     "05 Aug 2026",
     "Medium"),
]
tbl5 = doc.add_table(rows=1 + len(action_data), cols=5)
tbl5.style = "Table Grid"
tbl5.autofit = False
widths = [Inches(1.7), Inches(2.0), Inches(1.4), Inches(1.0), Inches(0.7)]
for j, w in enumerate(widths):
    tbl5.columns[j].width = w
hdrs = ["Issue", "Finding", "Responsible", "Deadline", "Priority"]
for j, h in enumerate(hdrs):
    set_cell_bg(tbl5.rows[0].cells[j], "1F497D")
    bold_cell(tbl5.rows[0].cells[j], h, font_size=9, color="FFFFFF")
priority_colors = {"High": "C03900", "Medium": "7F5200", "Low": "007020"}
for i, row in enumerate(action_data):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(5):
        set_cell_bg(tbl5.rows[i+1].cells[j], fill)
        if j < 4:
            normal_cell(tbl5.rows[i+1].cells[j], row[j], font_size=9)
        else:
            pc = tbl5.rows[i+1].cells[j]
            pc.text = ""
            pp = pc.paragraphs[0]
            pr = pp.add_run(row[j])
            pr.bold = True
            pr.font.size = Pt(9)
            pr.font.color.rgb = RGBColor(*bytes.fromhex(priority_colors.get(row[j], "000000")))
doc.add_paragraph()

# โ”€โ”€โ”€ Section 7: Overall Rating โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 7, "OVERALL DEPARTMENTAL RATING")
rating_data = [
    ("Patient Flow & Triage",       "4 / 5"),
    ("IPC Compliance",              "3.5 / 5"),
    ("Equipment Readiness",         "3.5 / 5"),
    ("Documentation",               "4 / 5"),
    ("Staff Performance",           "4 / 5"),
    ("Overall Score",               "3.8 / 5  (Good)"),
]
tbl6 = doc.add_table(rows=len(rating_data), cols=2)
tbl6.style = "Table Grid"
tbl6.autofit = False
tbl6.columns[0].width = Inches(3.0)
tbl6.columns[1].width = Inches(1.5)
for i, (param, score) in enumerate(rating_data):
    fill = "1F497D" if i == len(rating_data) - 1 else ("EBF3FB" if i % 2 == 0 else "FFFFFF")
    txt_color = "FFFFFF" if i == len(rating_data) - 1 else None
    set_cell_bg(tbl6.rows[i].cells[0], fill)
    set_cell_bg(tbl6.rows[i].cells[1], fill)
    bold_cell(tbl6.rows[i].cells[0], param, font_size=10, color=txt_color)
    bold_cell(tbl6.rows[i].cells[1], score, font_size=10, color=txt_color)
doc.add_paragraph()

# โ”€โ”€โ”€ Section 8: Recommendations โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 8, "RECOMMENDATIONS")
recs = [
    "Establish a dedicated biomedical engineering schedule for monthly equipment calibration checks.",
    "Increase registration desk staffing during peak morning hours (09:00โ€“11:00 AM) on weekdays.",
    "Implement a bi-monthly PPE compliance audit by the Infection Control team.",
    "Introduce a real-time electronic health record (EHR) alert for missing allergy fields at the point of registration.",
    "Schedule a formal IPC refresher for all ED staff within 2 weeks.",
    "Consider installing an automated oxygen cylinder level monitoring system.",
]
for rec in recs:
    bullet_item(doc, rec)

# โ”€โ”€โ”€ Section 9: Conclusion โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section_heading(doc, 9, "CONCLUSION")
body_para(doc,
    "The Emergency Department at General City Hospital is functioning at a satisfactory level "
    "with clear commitment from clinical and nursing leadership. The key areas of concern โ€“ "
    "oxygen supply, pulse oximeter calibration, and PPE adherence โ€“ are of an operational "
    "nature and are correctable in the short term. The visiting team will conduct a follow-up "
    "review in 30 days to verify closure of the identified action items. The department is "
    "encouraged to maintain its strong triage and documentation standards and to address the "
    "listed items promptly.")

add_hr(doc)

# โ”€โ”€โ”€ Signature block โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.add_paragraph()
sig_tbl = doc.add_table(rows=3, cols=2)
sig_tbl.style = "Table Grid"
sig_tbl.autofit = False
sig_tbl.columns[0].width = Inches(3.3)
sig_tbl.columns[1].width = Inches(3.3)
sig_data = [
    ("Prepared by", "Dr. Anjali Mehta\nChief Medical Officer\nGeneral City Hospital"),
    ("Co-Signed by", "Mr. Rajan Verma\nQuality & Safety Manager\nGeneral City Hospital"),
]
for i, (label, name) in enumerate(sig_data):
    bold_cell(sig_tbl.rows[0].cells[i], label, font_size=10)
    normal_cell(sig_tbl.rows[1].cells[i], name, font_size=10)
    normal_cell(sig_tbl.rows[2].cells[i], "Date: 25 July 2026", font_size=10)
    for r in range(3):
        set_cell_bg(sig_tbl.rows[r].cells[i], "F2F9FF")

doc.add_paragraph()
note = doc.add_paragraph()
note.alignment = WD_ALIGN_PARAGRAPH.CENTER
nr = note.add_run(
    "This report is confidential and intended for internal hospital use only. "
    "Unauthorised distribution is prohibited."
)
nr.italic = True
nr.font.size = Pt(9)
nr.font.color.rgb = RGBColor(0x60, 0x60, 0x60)

# โ”€โ”€โ”€ Footer โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
section2 = doc.sections[0]
footer = section2.footer
fp = footer.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = fp.add_run("General City Hospital  |  Emergency Department Visit Report  |  25 July 2026  |  CONFIDENTIAL")
fr.font.size = Pt(8)
fr.font.color.rgb = RGBColor(0x80, 0x80, 0x80)

# โ”€โ”€โ”€ Save โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.save(OUTPUT_PATH)
print(f"Saved: {OUTPUT_PATH}")
Running Command

python3 /tmp/workspace/ed-visit-report/generate_report.py

Running Command

ls -lh /tmp/workspace/ed-visit-report/ED_Visit_Report.docx

Your Emergency Department Visit Report is ready. Download it here:

ED Visit Report

Word Document ยท DOCX


Here is a summary of everything included in the report (41 KB, fully formatted Word document):
Document Structure
SectionContent
HeaderHospital name, department, Quality & Safety Division banner
1. Visit DetailsDate, time, facility, visiting officers, department in-charge, patient count
2. Executive SummaryNarrative overview of the visit
3. Scope & ObjectivesBullet list of 6 inspection objectives
4.1 Patient Flow & TriageColour-coded table - MTS triage, waiting times, registration
4.2 IPCPPE compliance, hand hygiene, BMW segregation findings
4.3 Equipment Readiness7-row table with compliance status (green = satisfactory, red = action required)
4.4 DocumentationCase file review, MAR, consent, incident register
4.5 StaffingDoctors, nurses, support staff, duty roster, attitude
5. Commendations5 positive findings highlighted
6. Action PlanPriority table with 6 issues, responsible parties, and deadlines
7. Overall Rating5-parameter scorecard - Overall 3.8/5 (Good)
8. Recommendations6 strategic recommendations
9. ConclusionSummary and 30-day follow-up plan
Signature BlockPrepared by + Co-signed fields with date
FooterConfidential watermark
Key findings used are placeholders based on a standard hospital ED inspection. If you want to customise any section - hospital name, staff names, specific dates, scores, or findings - just let me know and I will update the document.

Customise this report with your actual hospital name and specific findings

Asking for Preferences

Make a visit Report on emergency department for 10 pages for b.sc.nursing students

Writing File

~/ed-visit-report/generate_nursing_report.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

OUTPUT_PATH = "/tmp/workspace/ed-visit-report/ED_Visit_Report_BSc_Nursing.docx"

# โ”€โ”€ Helpers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def add_hr(doc, color="2E74B5"):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after  = Pt(2)
    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 set_cell_bg(cell, hex_color):
    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"), hex_color)
    tcPr.append(shd)

def hdr_cell(cell, text, size=10):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(size)
    r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)

def bold_cell(cell, text, size=10, color=None):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(size)
    if color:
        r.font.color.rgb = RGBColor(*bytes.fromhex(color))

def normal_cell(cell, text, size=10):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.font.size = Pt(size)

def section_heading(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(12)
    p.paragraph_format.space_after  = Pt(4)
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(13)
    r.font.name = "Calibri"
    r.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)
    add_hr(doc, "2E74B5")

def sub_heading(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(7)
    p.paragraph_format.space_after  = Pt(3)
    r = p.add_run(text)
    r.bold = True
    r.font.size = Pt(11)
    r.font.name = "Calibri"
    r.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)

def body(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_after  = Pt(5)
    p.paragraph_format.left_indent  = Inches(0.15)
    r = p.add_run(text)
    r.font.size = Pt(11)
    r.font.name = "Calibri"
    return p

def bullet(doc, text, indent=0.35):
    p = doc.add_paragraph(style="List Bullet")
    p.paragraph_format.left_indent  = Inches(indent)
    p.paragraph_format.space_after  = Pt(3)
    r = p.add_run(text)
    r.font.size = Pt(11)
    r.font.name = "Calibri"

def numbered(doc, text, indent=0.35):
    p = doc.add_paragraph(style="List Number")
    p.paragraph_format.left_indent  = Inches(indent)
    p.paragraph_format.space_after  = Pt(3)
    r = p.add_run(text)
    r.font.size = Pt(11)
    r.font.name = "Calibri"

def two_col_table(doc, rows_data, col_widths=(2.4, 4.3)):
    tbl = doc.add_table(rows=len(rows_data), cols=2)
    tbl.style = "Table Grid"
    tbl.autofit = False
    tbl.columns[0].width = Inches(col_widths[0])
    tbl.columns[1].width = Inches(col_widths[1])
    for i, (k, v) in enumerate(rows_data):
        fill = "DCE6F1" if i % 2 == 0 else "FFFFFF"
        set_cell_bg(tbl.rows[i].cells[0], fill)
        set_cell_bg(tbl.rows[i].cells[1], fill)
        bold_cell(tbl.rows[i].cells[0], k, size=10)
        normal_cell(tbl.rows[i].cells[1], v, size=10)
    doc.add_paragraph()

# โ”€โ”€ Document โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc = Document()
sec = doc.sections[0]
sec.top_margin    = Inches(1.0)
sec.bottom_margin = Inches(1.0)
sec.left_margin   = Inches(1.1)
sec.right_margin  = Inches(1.0)

ns = doc.styles["Normal"]
ns.font.name = "Calibri"
ns.font.size = Pt(11)

# โ”€โ”€ Add page numbers to footer โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
footer = sec.footer
fp = footer.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp.add_run("Rajiv Gandhi College of Nursing  |  B.Sc. Nursing Clinical Visit Report  |  Emergency Department  |  Page ").font.size = Pt(8)
# page number field
fldChar1 = OxmlElement("w:fldChar"); fldChar1.set(qn("w:fldCharType"), "begin")
instrText = OxmlElement("w:instrText"); instrText.text = "PAGE"; instrText.set(qn("xml:space"), "preserve")
fldChar2 = OxmlElement("w:fldChar"); fldChar2.set(qn("w:fldCharType"), "separate")
fldChar3 = OxmlElement("w:fldChar"); fldChar3.set(qn("w:fldCharType"), "end")
pn_run = fp.add_run()
pn_run._r.append(fldChar1); pn_run._r.append(instrText); pn_run._r.append(fldChar2); pn_run._r.append(fldChar3)
pn_run.font.size = Pt(8)

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 1 โ€“ COVER PAGE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
cp = doc.add_paragraph()
cp.alignment = WD_ALIGN_PARAGRAPH.CENTER
cp.paragraph_format.space_before = Pt(30)
cr = cp.add_run("RAJIV GANDHI COLLEGE OF NURSING")
cr.bold = True; cr.font.size = Pt(18); cr.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

doc.add_paragraph()
cp2 = doc.add_paragraph()
cp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
cr2 = cp2.add_run("Affiliated to Rajiv Gandhi University of Health Sciences, Bangalore")
cr2.italic = True; cr2.font.size = Pt(11); cr2.font.color.rgb = RGBColor(0x50, 0x50, 0x50)

doc.add_paragraph()
add_hr(doc, "1F497D")
doc.add_paragraph()

title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
tr = title_p.add_run("CLINICAL VISIT REPORT")
tr.bold = True; tr.font.size = Pt(20); tr.font.color.rgb = RGBColor(0x1F, 0x49, 0x7D)

sub_title = doc.add_paragraph()
sub_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
st = sub_title.add_run("Emergency Department (ED)")
st.bold = True; st.font.size = Pt(15); st.font.color.rgb = RGBColor(0x2E, 0x74, 0xB5)

doc.add_paragraph()
add_hr(doc, "1F497D")

doc.add_paragraph()
cover_info = [
    ("Hospital Visited",     "City Care General Hospital, Bangalore"),
    ("Date of Visit",        "25 July 2026 (Saturday)"),
    ("Time",                 "09:00 AM โ€“ 12:30 PM"),
    ("Class",                "B.Sc. Nursing โ€“ III Year"),
    ("Subject",              "Medical-Surgical Nursing"),
    ("Faculty In-charge",    "Mrs. Sudha Rani, M.Sc. Nursing (Clinical Speciality)"),
    ("Clinical Coordinator", "Mr. Arun Kumar, M.Sc. Nursing"),
    ("No. of Students",      "15 students"),
    ("Academic Year",        "2025โ€“2026"),
]
two_col_table(doc, cover_info)

doc.add_paragraph()
note_p = doc.add_paragraph()
note_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
nr = note_p.add_run("Submitted in partial fulfilment of the requirements for B.Sc. Nursing Programme")
nr.italic = True; nr.font.size = Pt(10); nr.font.color.rgb = RGBColor(0x50, 0x50, 0x50)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 2 โ€“ CERTIFICATE & ACKNOWLEDGEMENT
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "CERTIFICATE")
body(doc,
    "This is to certify that this Clinical Visit Report on the Emergency Department of "
    "City Care General Hospital, Bangalore has been prepared by the B.Sc. Nursing III Year "
    "students of Rajiv Gandhi College of Nursing under the supervision of Mrs. Sudha Rani, "
    "M.Sc. Nursing, as part of the Medical-Surgical Nursing curriculum for the academic year "
    "2025โ€“2026. The report is a true and faithful account of the clinical visit conducted on "
    "25 July 2026.")

doc.add_paragraph()
cert_tbl = doc.add_table(rows=4, cols=2)
cert_tbl.style = "Table Grid"
cert_tbl.autofit = False
cert_tbl.columns[0].width = Inches(3.3)
cert_tbl.columns[1].width = Inches(3.3)
for i in range(4): 
    for j in range(2):
        set_cell_bg(cert_tbl.rows[i].cells[j], "F2F9FF")
bold_cell(cert_tbl.rows[0].cells[0], "Faculty In-charge", size=10)
bold_cell(cert_tbl.rows[0].cells[1], "Principal / HOD", size=10)
normal_cell(cert_tbl.rows[1].cells[0], "Mrs. Sudha Rani\nM.Sc. Nursing", size=10)
normal_cell(cert_tbl.rows[1].cells[1], "Dr. Meena Pillai\nPrincipal, RGCN", size=10)
normal_cell(cert_tbl.rows[2].cells[0], "Signature: ________________", size=10)
normal_cell(cert_tbl.rows[2].cells[1], "Signature: ________________", size=10)
normal_cell(cert_tbl.rows[3].cells[0], "Date: 25 July 2026", size=10)
normal_cell(cert_tbl.rows[3].cells[1], "Date: 25 July 2026", size=10)

doc.add_paragraph()
section_heading(doc, "ACKNOWLEDGEMENT")
body(doc,
    "We, the B.Sc. Nursing III Year students of Rajiv Gandhi College of Nursing, are "
    "deeply grateful to the management and staff of City Care General Hospital, Bangalore, "
    "for providing us the opportunity to visit their Emergency Department and gain hands-on "
    "clinical exposure.")
body(doc,
    "We extend our sincere thanks to Dr. Vikram Nair, Head of Emergency Medicine, and the "
    "entire ED nursing team for their warm welcome, time, and willingness to guide us through "
    "the department. Their practical demonstrations and explanations enriched our understanding "
    "beyond textbook learning.")
body(doc,
    "We are grateful to our faculty in-charge, Mrs. Sudha Rani, for arranging this visit and "
    "mentoring us throughout. We also thank the Principal, Dr. Meena Pillai, for her "
    "encouragement and support.")

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 3 โ€“ INTRODUCTION & OBJECTIVES
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "1.  INTRODUCTION")
body(doc,
    "The Emergency Department (ED) is the frontline of any hospital. It is a specialised unit "
    "that provides immediate assessment, resuscitation, and treatment to patients with acute, "
    "life-threatening, or potentially disabling conditions. For nursing students, a clinical "
    "visit to the ED offers unparalleled learning โ€“ from triage protocols and resuscitation "
    "techniques to team communication and rapid decision-making.")
body(doc,
    "City Care General Hospital (CCGH), Bangalore, is a 450-bedded multi-speciality hospital "
    "that handles approximately 150โ€“200 emergency cases daily. The ED is equipped with a "
    "24-hour resuscitation bay, a 12-bed acute care unit, an observation ward, and a separate "
    "paediatric emergency bay. The department is staffed by trained emergency physicians, "
    "nurses with ACLS/BLS certification, and a dedicated paramedic team.")
body(doc,
    "This clinical visit was conducted on 25 July 2026 as part of the Medical-Surgical Nursing "
    "curriculum. Students had the opportunity to observe and participate in guided activities "
    "within the ED under strict supervision, gaining exposure to emergency nursing practice, "
    "equipment usage, and patient care protocols.")

section_heading(doc, "2.  OBJECTIVES OF THE VISIT")
sub_heading(doc, "2.1  General Objectives")
for obj in [
    "To familiarise B.Sc. Nursing III Year students with the structure, functioning, and organisation of an Emergency Department.",
    "To observe emergency nursing roles, responsibilities, and competencies in a real clinical environment.",
    "To correlate theoretical knowledge of emergency care with actual clinical practice.",
]:
    bullet(doc, obj)

sub_heading(doc, "2.2  Specific Objectives")
for obj in [
    "To observe and understand the triage process and the Manchester Triage System (MTS).",
    "To identify the layout and zones of the Emergency Department (Red, Yellow, Green zones).",
    "To observe the preparation and use of a crash cart / resuscitation trolley.",
    "To understand the nurse's role in emergency procedures (CPR, defibrillation, IV access).",
    "To observe infection prevention and control (IPC) practices in the ED.",
    "To understand documentation โ€“ case sheets, medication administration records, and incident reporting.",
    "To observe inter-professional communication and team dynamics in emergency care.",
    "To understand the principles of biomedical waste (BMW) management in the ED.",
]:
    bullet(doc, obj)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 4 โ€“ DEPARTMENT PROFILE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "3.  PROFILE OF THE EMERGENCY DEPARTMENT")

sub_heading(doc, "3.1  Hospital Overview")
two_col_table(doc, [
    ("Hospital Name",         "City Care General Hospital (CCGH), Bangalore"),
    ("Bed Strength",          "450 beds (50 beds reserved for Emergency & Critical Care)"),
    ("Daily ED Footfall",     "150โ€“200 patients/day"),
    ("NABH Accreditation",    "Yes โ€“ accredited since 2019, renewed 2023"),
    ("Emergency Services",    "24 ร— 7, including trauma, cardiac, paediatric, and psychiatric emergencies"),
    ("Head of Department",    "Dr. Vikram Nair, MBBS, MD (Emergency Medicine)"),
    ("Nursing In-charge",     "Sister Lakshmi Devi, B.Sc. Nursing, CCRN"),
], col_widths=(2.4, 4.3))

sub_heading(doc, "3.2  Physical Layout & Zones")
body(doc,
    "The ED at CCGH is organised into colour-coded zones based on patient acuity, following "
    "internationally recommended standards:")
zone_data = [
    ("Red Zone (Resuscitation)",  "4 bays",  "Critically ill / life-threatening cases; full monitoring, ventilator, crash cart"),
    ("Yellow Zone (Acute Care)",  "12 beds", "Urgent but stable patients; cardiac monitors, IV access, bedside investigations"),
    ("Green Zone (Minor Injuries)","8 cubicles","Walk-in patients with minor ailments, wounds, fractures"),
    ("Paediatric Bay",            "4 beds",  "Children below 12 years; separate from adult area"),
    ("Observation Ward",          "10 beds", "Patients under 12โ€“24 hour monitoring before admission/discharge"),
    ("Triage Counter",            "1 desk",  "Entry point; all patients assessed before entering any zone"),
    ("Nurses' Station",           "Central", "Command centre; all vitals, monitors, and communication managed here"),
    ("Trauma Bay",                "2 bays",  "Dedicated for RTA (road traffic accident) and polytrauma patients"),
]
tbl_z = doc.add_table(rows=1 + len(zone_data), cols=3)
tbl_z.style = "Table Grid"
tbl_z.autofit = False
tbl_z.columns[0].width = Inches(1.8)
tbl_z.columns[1].width = Inches(0.7)
tbl_z.columns[2].width = Inches(4.2)
for j, h in enumerate(["Zone / Area", "Capacity", "Purpose"]):
    set_cell_bg(tbl_z.rows[0].cells[j], "1F497D")
    hdr_cell(tbl_z.rows[0].cells[j], h)
for i, (zone, cap, purpose) in enumerate(zone_data):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(3): set_cell_bg(tbl_z.rows[i+1].cells[j], fill)
    normal_cell(tbl_z.rows[i+1].cells[0], zone, 10)
    normal_cell(tbl_z.rows[i+1].cells[1], cap, 10)
    normal_cell(tbl_z.rows[i+1].cells[2], purpose, 10)
doc.add_paragraph()

sub_heading(doc, "3.3  Staffing Pattern (Observed During Visit)")
two_col_table(doc, [
    ("Emergency Physicians",    "3 (1 Consultant + 2 Senior Residents on duty)"),
    ("Registered Nurses (RN)",  "8 nurses per shift (2 in Red, 3 in Yellow, 2 in Green, 1 at Triage)"),
    ("Nursing Auxiliaries",     "4 ward boys / patient care assistants"),
    ("Pharmacist",              "1 (dedicated ED pharmacy counter)"),
    ("Radiographer",            "1 (portable X-ray available in the ED)"),
    ("Lab Technician",          "1 (STAT laboratory inside ED)"),
    ("Security",                "2 personnel at main entrance"),
], col_widths=(2.4, 4.3))

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 5 โ€“ TRIAGE & PATIENT FLOW
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "4.  TRIAGE SYSTEM & PATIENT FLOW")

sub_heading(doc, "4.1  Triage Protocol")
body(doc,
    "The ED uses the Manchester Triage System (MTS), a 5-level colour-coded triage framework "
    "that prioritises patients based on clinical urgency. Every patient is assessed at the "
    "triage counter within 5 minutes of arrival. Vital signs, chief complaint, and a brief "
    "history are recorded by a designated triage nurse before the patient is directed to the "
    "appropriate zone.")

triage_data = [
    ("1 โ€“ Red",    "Immediate",   "0 min",    "Cardiac arrest, respiratory failure, major haemorrhage"),
    ("2 โ€“ Orange", "Very Urgent", "10 min",   "Chest pain, altered consciousness, severe breathlessness"),
    ("3 โ€“ Yellow", "Urgent",      "60 min",   "Moderate pain, fever >39ยฐC, moderate trauma"),
    ("4 โ€“ Green",  "Standard",    "120 min",  "Minor lacerations, mild fever, sprains"),
    ("5 โ€“ Blue",   "Non-Urgent",  "240 min",  "Chronic complaints, dressing changes, minor ailments"),
]
tbl_t = doc.add_table(rows=1 + len(triage_data), cols=4)
tbl_t.style = "Table Grid"
tbl_t.autofit = False
tbl_t.columns[0].width = Inches(1.3)
tbl_t.columns[1].width = Inches(1.2)
tbl_t.columns[2].width = Inches(0.9)
tbl_t.columns[3].width = Inches(3.3)
for j, h in enumerate(["Category", "Priority", "Target Time", "Examples"]):
    set_cell_bg(tbl_t.rows[0].cells[j], "1F497D")
    hdr_cell(tbl_t.rows[0].cells[j], h)
zone_colors = ["FFD7D7","FFE0B2","FFFDE7","E8F5E9","E3F2FD"]
for i, (cat, pri, time, ex) in enumerate(triage_data):
    for j in range(4): set_cell_bg(tbl_t.rows[i+1].cells[j], zone_colors[i])
    for j, val in enumerate([cat, pri, time, ex]):
        normal_cell(tbl_t.rows[i+1].cells[j], val, 10)
doc.add_paragraph()

sub_heading(doc, "4.2  Patient Flow Process")
for step in [
    "Patient arrives at ED entrance (ambulance / walk-in / referral).",
    "Security registers arrival time and directs patient to triage counter.",
    "Triage nurse assesses patient: vitals, chief complaint, MTS category assigned.",
    "Patient directed to appropriate zone (Red / Yellow / Green / Paediatric Bay).",
    "Registration clerk creates case file; insurance/identification verified.",
    "Physician assessment; investigations ordered (blood, X-ray, ECG, STAT labs).",
    "Treatment initiated; patient monitored continuously.",
    "Disposition decision: Admission to ICU/ward OR Discharge with prescription OR Transfer.",
]:
    numbered(doc, step)

sub_heading(doc, "4.3  Observed Patient Statistics (During Visit)")
two_col_table(doc, [
    ("Total patients registered (09:00โ€“12:30)", "47 patients"),
    ("Red Zone (Critical)",                     "5 patients"),
    ("Yellow Zone (Acute)",                     "18 patients"),
    ("Green Zone (Minor)",                      "20 patients"),
    ("Paediatric Bay",                          "4 patients"),
    ("Average triage time",                     "6 minutes (Target: <10 min) โœ“"),
    ("Average doctor-to-patient time",          "12 minutes (Target: <15 min) โœ“"),
    ("Ambulance cases",                         "8 during observation period"),
], col_widths=(3.0, 3.7))

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 6 โ€“ EQUIPMENT & PROCEDURES
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "5.  EMERGENCY EQUIPMENT & KEY PROCEDURES")

sub_heading(doc, "5.1  Crash Cart (Resuscitation Trolley)")
body(doc,
    "The crash cart is a wheeled trolley stocked with life-saving medications, equipment, "
    "and supplies required during cardiopulmonary resuscitation (CPR) and other emergencies. "
    "The CCGH ED maintains 3 crash carts โ€“ 1 per Red Zone bay and 1 in the Trauma Bay. "
    "Students observed the crash cart checklist verification performed by the charge nurse.")

crash_data = [
    ("Tray 1 โ€“ Airway",       "ET tubes (sizes 6, 7, 8), LMA, oropharyngeal airways, Ambu bag, McGill forceps, laryngoscope"),
    ("Tray 2 โ€“ Circulation",  "IV cannulas, syringes, IV fluids (NS, RL, D5W), BP cuff, tourniquets"),
    ("Tray 3 โ€“ Medications",  "Adrenaline 1:1000, Atropine, Amiodarone, Sodium Bicarbonate, Dopamine, Midazolam"),
    ("Tray 4 โ€“ Monitoring",   "ECG leads, SpO2 probe, BP cuffs (adult/paediatric), thermometer probes"),
    ("Defibrillator (AED)",   "Charged; last checked 23 Jul 2026; biphasic, 360J max; pads available"),
    ("Suction Machine",       "Functional; yankauer suction catheter attached; tubing changed daily"),
]
tbl_c = doc.add_table(rows=1 + len(crash_data), cols=2)
tbl_c.style = "Table Grid"
tbl_c.autofit = False
tbl_c.columns[0].width = Inches(2.0)
tbl_c.columns[1].width = Inches(4.7)
for j, h in enumerate(["Component", "Contents / Status"]):
    set_cell_bg(tbl_c.rows[0].cells[j], "1F497D")
    hdr_cell(tbl_c.rows[0].cells[j], h)
for i, (comp, detail) in enumerate(crash_data):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(2): set_cell_bg(tbl_c.rows[i+1].cells[j], fill)
    bold_cell(tbl_c.rows[i+1].cells[0], comp, 10)
    normal_cell(tbl_c.rows[i+1].cells[1], detail, 10)
doc.add_paragraph()

sub_heading(doc, "5.2  Other Major Equipment Observed")
equip = [
    ("Multi-para Monitor",    "Monitors ECG, SpO2, NIBP, ETCO2, RR, Temperature simultaneously; bedside in all Red/Yellow beds"),
    ("Portable Ventilator",   "2 units (Red Zone); used for patients requiring mechanical ventilation"),
    ("Infusion Pump",         "8 units across the ED; ensures accurate drug delivery"),
    ("Pulse Oximeter",        "Standalone units in Green Zone; integrated monitors in Red/Yellow"),
    ("ECG Machine (12-lead)", "2 units; results transmitted to cardiologist via tele-ECG system"),
    ("Glucometer",            "Bedside; STAT glucose checked for every unconscious/diabetic patient"),
    ("Portable X-ray",        "Available in ED; avoids transporting critical patients to radiology"),
    ("FAST Machine (USG)",    "Focused Assessment with Sonography for Trauma; used in trauma bay"),
    ("Nebuliser",             "4 units; used for bronchospasm, asthma attacks"),
    ("Hypothermia Blanket",   "1 unit; used for targeted temperature management post-cardiac arrest"),
]
tbl_e = doc.add_table(rows=1 + len(equip), cols=2)
tbl_e.style = "Table Grid"
tbl_e.autofit = False
tbl_e.columns[0].width = Inches(1.9)
tbl_e.columns[1].width = Inches(4.8)
for j, h in enumerate(["Equipment", "Purpose / Notes"]):
    set_cell_bg(tbl_e.rows[0].cells[j], "1F497D")
    hdr_cell(tbl_e.rows[0].cells[j], h)
for i, (eq, desc) in enumerate(equip):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(2): set_cell_bg(tbl_e.rows[i+1].cells[j], fill)
    bold_cell(tbl_e.rows[i+1].cells[0], eq, 10)
    normal_cell(tbl_e.rows[i+1].cells[1], desc, 10)
doc.add_paragraph()

sub_heading(doc, "5.3  Procedures Observed")
for proc in [
    "Basic Life Support (BLS) / Cardiopulmonary Resuscitation (CPR) โ€“ demonstration by charge nurse.",
    "Endotracheal intubation preparation โ€“ assembling laryngoscope, checking ET tube cuff.",
    "12-lead ECG recording and labelling.",
    "IV cannulation and fluid administration.",
    "Nebulisation therapy for acute bronchospasm.",
    "Wound irrigation and sterile dressing of a road traffic accident (RTA) patient.",
    "Urinary catheterisation (male patient, with consent) โ€“ observed in Yellow Zone.",
    "Nasogastric tube insertion in a patient with suspected drug overdose.",
]:
    bullet(doc, proc)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 7 โ€“ NURSING ROLES & IPC
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "6.  NURSING ROLES & RESPONSIBILITIES IN THE ED")
body(doc,
    "Emergency nursing is a specialised field requiring quick clinical judgment, strong "
    "technical skills, and empathetic communication. Students observed the following nursing "
    "roles in action during the visit:")

sub_heading(doc, "6.1  Triage Nurse")
for r in [
    "Stationed at the entry point; first clinical contact for every patient.",
    "Assigned MTS category based on presenting complaint and vital signs.",
    "Activated rapid response (Code Blue) for 2 critical patients during the observation period.",
    "Maintained triage register with time, category, and name.",
]:
    bullet(doc, r)

sub_heading(doc, "6.2  Bedside Nurse (Red & Yellow Zone)")
for r in [
    "Monitored vitals every 15 minutes for Red Zone patients, every 30 minutes for Yellow Zone.",
    "Administered IV medications, prepared infusions, and maintained IV lines.",
    "Communicated with physicians, relayed patient status changes immediately.",
    "Performed continuous cardiac monitoring and documented rhythm strips.",
    "Assisted in procedure setups (intubation, central line, chest tube).",
]:
    bullet(doc, r)

sub_heading(doc, "6.3  Charge Nurse (In-charge Sister)")
for r in [
    "Coordinated overall functioning of the ED โ€“ bed allocation, staff deployment.",
    "Conducted crash cart checklist verification at the start of shift.",
    "Handled patient relatives โ€“ communicated clinical updates, managed anxiety.",
    "Ensured proper documentation and timely medication reconciliation.",
    "Supervised junior nursing staff and nursing students during procedures.",
]:
    bullet(doc, r)

sub_heading(doc, "6.4  Discharge Nurse (Green Zone)")
for r in [
    "Explained discharge instructions, medications, and follow-up plan to patients/caregivers.",
    "Ensured signed discharge summary, consent, and pharmacy prescription provided.",
    "Collected patient satisfaction feedback forms.",
]:
    bullet(doc, r)

section_heading(doc, "7.  INFECTION PREVENTION & CONTROL (IPC)")
body(doc,
    "IPC practices in the ED are of paramount importance given the high patient turnover, "
    "exposure to body fluids, and risk of healthcare-associated infections (HAIs). The "
    "following IPC standards were observed at CCGH ED:")

sub_heading(doc, "7.1  Hand Hygiene")
for item in [
    "WHO 5 Moments of Hand Hygiene displayed at every bedside and nursing station.",
    "Alcohol-based hand rub (ABHR) dispensers present at all entry points, bedside tables, and procedure trolleys.",
    "Compliance observed: approximately 88% of nursing staff performed hand hygiene before and after patient contact.",
    "Hand hygiene audit register available and updated weekly.",
]:
    bullet(doc, item)

sub_heading(doc, "7.2  Personal Protective Equipment (PPE)")
for item in [
    "Gloves worn by all nurses during invasive procedures and body fluid contact.",
    "N95 masks in use for suspected respiratory infections (isolation bay).",
    "Goggles and aprons available at procedure trolleys in Red Zone.",
    "PPE donning/doffing station labelled with step-by-step visual instructions.",
]:
    bullet(doc, item)

sub_heading(doc, "7.3  Biomedical Waste (BMW) Management")
two_col_table(doc, [
    ("Yellow Bag",  "Infectious / anatomical waste, soiled dressings"),
    ("Red Bag",     "Recyclable contaminated waste (IV bottles, syringes without needle)"),
    ("Blue Box",    "Glassware, ampoules"),
    ("White Sharps Container", "Needles, blades, lancets; puncture-proof; ยพ full = replaced"),
    ("Black Bag",   "General domestic waste"),
], col_widths=(2.3, 4.4))
body(doc, "Students noted that BMW segregation was fully compliant with CPCB (Central Pollution Control Board) guidelines. No violations were observed.")

sub_heading(doc, "7.4  Isolation & Environmental Hygiene")
for item in [
    "A dedicated isolation bay for suspected communicable disease patients (negative pressure capable).",
    "Trolley surfaces wiped with 1% sodium hypochlorite solution after each patient.",
    "Terminal cleaning of vacated beds within 20 minutes, as observed twice during the visit.",
    "Clean and soiled utility areas clearly demarcated and labelled.",
]:
    bullet(doc, item)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 8 โ€“ DOCUMENTATION & LEARNING
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "8.  DOCUMENTATION & RECORD-KEEPING")
body(doc,
    "Accurate and timely documentation is a legal and professional responsibility of nurses. "
    "Students were shown the various documents maintained in the ED:")

sub_heading(doc, "8.1  Documents Reviewed")
for doc_item in [
    "Emergency Case Sheet: Contains patient demographics, chief complaint, triage category, vitals, medical history, allergies, investigations ordered, and physician orders. All entries time-stamped.",
    "Medication Administration Record (MAR): Drug name, dose, route, time, and nurse's signature for every drug given. Checked against physician orders.",
    "Nursing Care Notes: Subjective and objective observations recorded per nursing process (ADPIE โ€“ Assessment, Diagnosis, Planning, Implementation, Evaluation).",
    "Consent Forms: Informed consent signed for all invasive procedures (intubation, catheterisation, etc.).",
    "Triage Register: Manual register at triage counter โ€“ patient name, time, triage category, and disposition.",
    "Incident Reporting Register: Near-misses and adverse events documented. 3 incidents logged in July 2026 โ€“ all with root cause and corrective action noted.",
    "Referral and Transfer Forms: Completed for patients transferred to ICU, ward, or another hospital.",
    "Discharge Summary: Diagnosis, treatment given, discharge instructions, follow-up date, and prescriptions.",
]:
    bullet(doc, doc_item)

sub_heading(doc, "8.2  Electronic Health Records (EHR)")
body(doc,
    "CCGH uses a Hospital Information System (HIS) for electronic documentation. Nurses enter "
    "vitals, drug administration, and care notes in real time on bedside terminals. The system "
    "generates automatic alerts for allergy cross-checks, drug interactions, and delayed "
    "documentation. Students observed the triage nurse entering patient data and generating "
    "a barcode wristband for patient identification.")

section_heading(doc, "9.  LEARNING EXPERIENCES & STUDENT REFLECTIONS")

sub_heading(doc, "9.1  Key Learning Points")
for lp in [
    "Triage is the cornerstone of ED nursing โ€“ a systematic, swift, and accurate triage saves lives. The MTS framework is simple yet highly effective.",
    "Team Communication: The SBAR (Situation, Background, Assessment, Recommendation) communication tool was in active use during handovers. This reinforced classroom learning.",
    "CPR Competency: A BLS demonstration by the charge nurse clarified the correct compression-to-ventilation ratio (30:2), compression depth (5โ€“6 cm), and rate (100โ€“120/min) per 2020 AHA guidelines.",
    "Crash Cart Organisation: Every item has a designated place. Consistent layout prevents delays during resuscitation. The importance of daily checking was strongly emphasised.",
    "IV Line Management: The process of labelling IV lines with drug name, dose, date, and time was observed โ€“ a critical safety practice to prevent medication errors.",
    "Patient and Family Communication: Nursing staff demonstrated compassionate, clear communication with distressed patients and relatives โ€“ reinforcing that nursing is both a science and an art.",
    "Ethical Issues: Students observed how patient privacy and dignity were maintained even in a busy, open ED environment โ€“ curtains, respectful communication, and consent seeking.",
    "Interprofessional Collaboration: Nurses worked seamlessly with physicians, pharmacists, radiographers, and lab technicians โ€“ demonstrating effective team-based care.",
]:
    bullet(doc, lp)

sub_heading(doc, "9.2  Student Reflections (Selected)")
reflections = [
    ("Ms. Kavya R.",      "Seeing CPR performed in real life was both thrilling and humbling. I now understand why BLS practice in college is so important."),
    ("Mr. Suresh M.",     "I was amazed at how calmly the nurses handled the critical patient. Their systematic approach and zero panic attitude was inspiring."),
    ("Ms. Preethi N.",    "The crash cart organisation was perfect. I could now identify every drug and its emergency indication. Theory came alive today."),
    ("Ms. Divya K.",      "The triage nurse managed 5 patients in 30 minutes without any confusion. It showed me what real-world time management looks like."),
]
tbl_r = doc.add_table(rows=1 + len(reflections), cols=2)
tbl_r.style = "Table Grid"
tbl_r.autofit = False
tbl_r.columns[0].width = Inches(1.5)
tbl_r.columns[1].width = Inches(5.2)
for j, h in enumerate(["Student", "Reflection"]):
    set_cell_bg(tbl_r.rows[0].cells[j], "2E74B5")
    hdr_cell(tbl_r.rows[0].cells[j], h)
for i, (name, ref) in enumerate(reflections):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(2): set_cell_bg(tbl_r.rows[i+1].cells[j], fill)
    bold_cell(tbl_r.rows[i+1].cells[0], name, 10)
    normal_cell(tbl_r.rows[i+1].cells[1], ref, 10)
doc.add_paragraph()

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 9 โ€“ CHALLENGES, RECOMMENDATIONS & CONCLUSION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "10.  CHALLENGES OBSERVED")
body(doc,
    "While the ED at CCGH functions at a commendable level, the following challenges were "
    "noted during the visit. These are discussed to provide a realistic understanding of "
    "ED nursing practice:")

challenges = [
    ("Overcrowding",
     "Peak hour surge (10:00โ€“11:30 AM) led to temporary overflow in the Yellow Zone with "
     "patients on trolleys in the corridor. This is a systemic issue common to busy EDs."),
    ("Understaffing at Triage",
     "Only 1 triage nurse on duty during the surge. Briefly caused a backlog of 4โ€“5 patients "
     "waiting for triage assessment. An additional nurse was reassigned within 10 minutes."),
    ("Relatives in Clinical Area",
     "Multiple relatives were found inside the clinical area beyond the permitted one-attendant "
     "policy. Security managed the situation but it briefly disrupted care flow."),
    ("Documentation Gaps",
     "2 of 15 case sheets reviewed had incomplete allergy history fields. This is a patient "
     "safety risk that requires a systemic fix (EHR alert or triage checklist enforcement)."),
    ("Noise Levels",
     "High ambient noise (alarms, conversations, equipment) noted in the Yellow Zone. "
     "Literature suggests ED noise adversely affects staff communication and patient wellbeing."),
]
tbl_ch = doc.add_table(rows=1 + len(challenges), cols=2)
tbl_ch.style = "Table Grid"
tbl_ch.autofit = False
tbl_ch.columns[0].width = Inches(1.8)
tbl_ch.columns[1].width = Inches(4.9)
for j, h in enumerate(["Challenge", "Observation"]):
    set_cell_bg(tbl_ch.rows[0].cells[j], "C03900")
    hdr_cell(tbl_ch.rows[0].cells[j], h)
for i, (ch, obs) in enumerate(challenges):
    fill = "FFF3F0" if i % 2 == 0 else "FFFFFF"
    for j in range(2): set_cell_bg(tbl_ch.rows[i+1].cells[j], fill)
    bold_cell(tbl_ch.rows[i+1].cells[0], ch, 10, color="C03900")
    normal_cell(tbl_ch.rows[i+1].cells[1], obs, 10)
doc.add_paragraph()

section_heading(doc, "11.  RECOMMENDATIONS")
body(doc, "Based on observations, the following suggestions are offered from a student nursing perspective:")
for rec in [
    "Deploy a second triage nurse during peak hours (10:00 AM โ€“ 12:00 PM) to prevent delays.",
    "Implement a strict visitor policy with wristband identification for permitted attendants.",
    "Introduce an EHR mandatory field for allergy history โ€“ cannot be bypassed during registration.",
    "Develop a structured noise-reduction protocol for the Yellow Zone (alarm fatigue management).",
    "Increase BMW bin capacity in the Red Zone given higher patient acuity and procedural load.",
    "Introduce regular BLS/ACLS simulation drills for nursing staff โ€“ at least once per quarter.",
    "Establish a dedicated clinical teaching corner in the ED for student nurse orientation before each visit.",
]:
    bullet(doc, rec)

section_heading(doc, "12.  CONCLUSION")
body(doc,
    "The clinical visit to the Emergency Department of City Care General Hospital, Bangalore, "
    "was an enriching and transformative learning experience for the B.Sc. Nursing III Year "
    "students of Rajiv Gandhi College of Nursing. The visit bridged the gap between classroom "
    "theory and real-world clinical practice in a meaningful way.")
body(doc,
    "Students gained direct exposure to the triage system, emergency equipment, crash cart "
    "management, emergency nursing roles, IPC practices, patient documentation, and "
    "inter-professional teamwork. Observing clinical situations โ€“ a cardiac arrest in the "
    "Red Zone, a paediatric asthma attack, and multiple RTA casualties โ€“ made the learning "
    "deeply contextual and impactful.")
body(doc,
    "Emergency nursing demands composure, competency, compassion, and communication. This "
    "visit reinforced that these four pillars are not aspirational ideals but daily realities "
    "for ED nurses. Students returned with renewed motivation to strengthen their clinical "
    "skills, practice BLS regularly, and approach patient care with a systematic and "
    "evidence-based mindset.")
body(doc,
    "We look forward to future clinical visits to the ED and other specialised departments "
    "to continue building our competence as future nursing professionals.")

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 10 โ€“ REFERENCES & APPENDIX
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "REFERENCES")
refs = [
    "American Heart Association (AHA). (2020). Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care. Circulation, 142(16_suppl_2).",
    "Brunner, L. S., & Suddarth, D. S. (2022). Brunner & Suddarth's Textbook of Medical-Surgical Nursing (15th ed.). Wolters Kluwer.",
    "Emergency Nurses Association (ENA). (2020). Emergency Nursing Core Curriculum (7th ed.). Saunders Elsevier.",
    "Government of India โ€“ CPCB. (2016). Biomedical Waste Management Rules. Central Pollution Control Board, Ministry of Environment, Forest and Climate Change.",
    "Grossman, S., & Porth, C. M. (2014). Porth's Pathophysiology: Concepts of Altered Health States (9th ed.). Wolters Kluwer.",
    "Manchester Triage Group. (2014). Emergency Triage (3rd ed.). Wiley-Blackwell.",
    "National Accreditation Board for Hospitals & Healthcare Providers (NABH). (2020). Standards for Hospitals (5th ed.). Quality Council of India.",
    "Potter, P. A., Perry, A. G., Stockert, P. A., & Hall, A. (2021). Fundamentals of Nursing (10th ed.). Mosby Elsevier.",
    "World Health Organization (WHO). (2009). WHO Guidelines on Hand Hygiene in Health Care. WHO Press, Geneva.",
    "Tintinalli, J. E., Ma, J., Yealy, D. M. et al. (2020). Tintinalli's Emergency Medicine: A Comprehensive Study Guide (9th ed.). McGraw-Hill.",
]
for i, ref in enumerate(refs, 1):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent  = Inches(0.4)
    p.paragraph_format.first_line_indent = Inches(-0.25)
    p.paragraph_format.space_after  = Pt(4)
    r1 = p.add_run(f"{i}.  ")
    r1.bold = True; r1.font.size = Pt(10)
    r2 = p.add_run(ref)
    r2.font.size = Pt(10)

section_heading(doc, "APPENDIX")

sub_heading(doc, "Appendix A โ€“ List of Participating Students")
students = [
    ("1", "Ms. Kavya R.",      "RGCN-2024-301"),
    ("2", "Mr. Suresh M.",     "RGCN-2024-302"),
    ("3", "Ms. Preethi N.",    "RGCN-2024-303"),
    ("4", "Ms. Divya K.",      "RGCN-2024-304"),
    ("5", "Mr. Arjun P.",      "RGCN-2024-305"),
    ("6", "Ms. Nithya S.",     "RGCN-2024-306"),
    ("7", "Ms. Rekha V.",      "RGCN-2024-307"),
    ("8", "Mr. Manoj T.",      "RGCN-2024-308"),
    ("9", "Ms. Sindhu L.",     "RGCN-2024-309"),
    ("10","Ms. Anitha B.",     "RGCN-2024-310"),
    ("11","Mr. Karthik R.",    "RGCN-2024-311"),
    ("12","Ms. Pooja M.",      "RGCN-2024-312"),
    ("13","Ms. Gayatri N.",    "RGCN-2024-313"),
    ("14","Mr. Rahul S.",      "RGCN-2024-314"),
    ("15","Ms. Swathi D.",     "RGCN-2024-315"),
]
tbl_s = doc.add_table(rows=1 + len(students), cols=3)
tbl_s.style = "Table Grid"
tbl_s.autofit = False
tbl_s.columns[0].width = Inches(0.5)
tbl_s.columns[1].width = Inches(2.5)
tbl_s.columns[2].width = Inches(1.8)
for j, h in enumerate(["S.No.", "Student Name", "Roll Number"]):
    set_cell_bg(tbl_s.rows[0].cells[j], "1F497D")
    hdr_cell(tbl_s.rows[0].cells[j], h)
for i, (sno, name, roll) in enumerate(students):
    fill = "EBF3FB" if i % 2 == 0 else "FFFFFF"
    for j in range(3): set_cell_bg(tbl_s.rows[i+1].cells[j], fill)
    for j, val in enumerate([sno, name, roll]):
        normal_cell(tbl_s.rows[i+1].cells[j], val, 10)
doc.add_paragraph()

sub_heading(doc, "Appendix B โ€“ Visit Schedule")
two_col_table(doc, [
    ("09:00 โ€“ 09:15 AM", "Arrival, welcome address by ED Nursing In-charge"),
    ("09:15 โ€“ 09:45 AM", "Orientation to ED layout โ€“ guided tour of all zones"),
    ("09:45 โ€“ 10:15 AM", "Triage process demonstration and observation"),
    ("10:15 โ€“ 10:45 AM", "Crash cart and resuscitation equipment orientation"),
    ("10:45 โ€“ 11:15 AM", "BLS/CPR demonstration by charge nurse"),
    ("11:15 โ€“ 12:00 PM", "Active observation in Yellow and Green Zones"),
    ("12:00 โ€“ 12:20 PM", "Documentation review and Q&A session"),
    ("12:20 โ€“ 12:30 PM", "Group debrief, vote of thanks, and departure"),
], col_widths=(2.2, 4.5))

# โ”€โ”€ Final note โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
add_hr(doc, "1F497D")
final = doc.add_paragraph()
final.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = final.add_run(
    "This report was prepared by B.Sc. Nursing III Year students, Rajiv Gandhi College of Nursing.  "
    "For academic use only. Not for distribution.")
fr.italic = True; fr.font.size = Pt(9)
fr.font.color.rgb = RGBColor(0x60, 0x60, 0x60)

# โ”€โ”€ Save โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc.save(OUTPUT_PATH)
print(f"Saved: {OUTPUT_PATH}")
Running Command

python3 /tmp/workspace/ed-visit-report/generate_nursing_report.py

Running Command

ls -lh /tmp/workspace/ed-visit-report/ED_Visit_Report_BSc_Nursing.docx

Your 10-page B.Sc. Nursing Emergency Department Visit Report is ready. Download it here:

ED Visit Report BSc Nursing

Word Document ยท DOCX


Here is the complete page-by-page breakdown:
PageSectionContent
1Cover PageCollege name (Rajiv Gandhi College of Nursing), hospital (City Care General Hospital, Bangalore), visit details, faculty in-charge, academic year
2Certificate & AcknowledgementSigned certificate for submission + thank-you to hospital staff and faculty
3Introduction & ObjectivesBackground on EDs, hospital profile, general & specific learning objectives (8 specific objectives)
4Department ProfileHospital overview, ED zone layout table (Red/Yellow/Green/Paediatric/Observation/Trauma), staffing pattern
5Triage & Patient FlowMTS 5-level colour-coded triage table, step-by-step patient flow, observed patient statistics (47 patients during visit)
6Equipment & ProceduresCrash cart tray-by-tray breakdown, 10 major equipment items, 8 procedures observed
7Nursing Roles & IPCTriage nurse, bedside nurse, charge nurse, discharge nurse roles + hand hygiene, PPE, BMW segregation (colour-coded table), isolation practices
8Documentation & Learning8 document types reviewed, EHR system, 8 key learning points, student reflection quotes (4 students)
9Challenges, Recommendations & Conclusion5 challenges with observations, 7 recommendations, full reflective conclusion
10References & Appendix10 standard references (AHA, Brunner & Suddarth, ENA, WHO, etc.), list of 15 students with roll numbers, visit timetable
To personalise it with your actual college name, hospital, student names, or faculty - just share the details and I'll update it instantly.

Thank you

You're welcome! Best of luck with your B.Sc. Nursing studies. ๐Ÿ˜Š
If you ever need help with more clinical visit reports, nursing assignments, case studies, or any other academic work, feel free to ask. Happy to help anytime!

Visit Report on Cardiac Care Unit

Writing File

~/ed-visit-report/generate_ccu_report.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

OUTPUT_PATH = "/tmp/workspace/ed-visit-report/CCU_Visit_Report_BSc_Nursing.docx"

# โ”€โ”€ Helpers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
def add_hr(doc, color="C0392B"):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after  = Pt(2)
    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 set_cell_bg(cell, hex_color):
    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"), hex_color)
    tcPr.append(shd)

def hdr_cell(cell, text, size=10):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.bold = True; r.font.size = Pt(size)
    r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)

def bold_cell(cell, text, size=10, color=None):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.bold = True; r.font.size = Pt(size)
    if color:
        r.font.color.rgb = RGBColor(*bytes.fromhex(color))

def normal_cell(cell, text, size=10):
    cell.text = ""
    p = cell.paragraphs[0]
    r = p.add_run(text)
    r.font.size = Pt(size)

def section_heading(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(12)
    p.paragraph_format.space_after  = Pt(4)
    r = p.add_run(text)
    r.bold = True; r.font.size = Pt(13); r.font.name = "Calibri"
    r.font.color.rgb = RGBColor(0x96, 0x16, 0x16)
    add_hr(doc, "C0392B")

def sub_heading(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(7)
    p.paragraph_format.space_after  = Pt(3)
    r = p.add_run(text)
    r.bold = True; r.font.size = Pt(11); r.font.name = "Calibri"
    r.font.color.rgb = RGBColor(0xC0, 0x39, 0x2B)

def body(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_after = Pt(5)
    p.paragraph_format.left_indent = Inches(0.15)
    r = p.add_run(text)
    r.font.size = Pt(11); r.font.name = "Calibri"
    return p

def bullet(doc, text):
    p = doc.add_paragraph(style="List Bullet")
    p.paragraph_format.left_indent = Inches(0.35)
    p.paragraph_format.space_after = Pt(3)
    r = p.add_run(text)
    r.font.size = Pt(11); r.font.name = "Calibri"

def numbered(doc, text):
    p = doc.add_paragraph(style="List Number")
    p.paragraph_format.left_indent = Inches(0.35)
    p.paragraph_format.space_after = Pt(3)
    r = p.add_run(text)
    r.font.size = Pt(11); r.font.name = "Calibri"

def two_col_table(doc, rows_data, col_widths=(2.4, 4.3), hdr_color="961616"):
    tbl = doc.add_table(rows=len(rows_data), cols=2)
    tbl.style = "Table Grid"
    tbl.autofit = False
    tbl.columns[0].width = Inches(col_widths[0])
    tbl.columns[1].width = Inches(col_widths[1])
    for i, (k, v) in enumerate(rows_data):
        fill = "FDECEA" if i % 2 == 0 else "FFFFFF"
        set_cell_bg(tbl.rows[i].cells[0], fill)
        set_cell_bg(tbl.rows[i].cells[1], fill)
        bold_cell(tbl.rows[i].cells[0], k, size=10)
        normal_cell(tbl.rows[i].cells[1], v, size=10)
    doc.add_paragraph()

def three_col_table(doc, headers, rows_data, col_widths, hdr_color="961616"):
    tbl = doc.add_table(rows=1 + len(rows_data), cols=len(headers))
    tbl.style = "Table Grid"
    tbl.autofit = False
    for j, w in enumerate(col_widths):
        tbl.columns[j].width = Inches(w)
    for j, h in enumerate(headers):
        set_cell_bg(tbl.rows[0].cells[j], hdr_color)
        hdr_cell(tbl.rows[0].cells[j], h)
    for i, row in enumerate(rows_data):
        fill = "FDECEA" if i % 2 == 0 else "FFFFFF"
        for j, val in enumerate(row):
            set_cell_bg(tbl.rows[i+1].cells[j], fill)
            normal_cell(tbl.rows[i+1].cells[j], val, 10)
    doc.add_paragraph()

# โ”€โ”€ Document Setup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
doc = Document()
sec = doc.sections[0]
sec.top_margin    = Inches(1.0)
sec.bottom_margin = Inches(1.0)
sec.left_margin   = Inches(1.1)
sec.right_margin  = Inches(1.0)
ns = doc.styles["Normal"]
ns.font.name = "Calibri"
ns.font.size = Pt(11)

# Footer with page number
footer = sec.footer
fp = footer.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp.add_run("Rajiv Gandhi College of Nursing  |  B.Sc. Nursing Clinical Visit Report  |  Cardiac Care Unit  |  Page ").font.size = Pt(8)
fldChar1 = OxmlElement("w:fldChar"); fldChar1.set(qn("w:fldCharType"), "begin")
instrText = OxmlElement("w:instrText"); instrText.text = "PAGE"; instrText.set(qn("xml:space"), "preserve")
fldChar2 = OxmlElement("w:fldChar"); fldChar2.set(qn("w:fldCharType"), "separate")
fldChar3 = OxmlElement("w:fldChar"); fldChar3.set(qn("w:fldCharType"), "end")
pn_run = fp.add_run()
pn_run._r.append(fldChar1); pn_run._r.append(instrText)
pn_run._r.append(fldChar2); pn_run._r.append(fldChar3)
pn_run.font.size = Pt(8)

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 1 โ€“ COVER PAGE
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
cp = doc.add_paragraph()
cp.alignment = WD_ALIGN_PARAGRAPH.CENTER
cp.paragraph_format.space_before = Pt(28)
cr = cp.add_run("RAJIV GANDHI COLLEGE OF NURSING")
cr.bold = True; cr.font.size = Pt(18)
cr.font.color.rgb = RGBColor(0x96, 0x16, 0x16)

doc.add_paragraph()
cp2 = doc.add_paragraph()
cp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
cr2 = cp2.add_run("Affiliated to Rajiv Gandhi University of Health Sciences, Bangalore")
cr2.italic = True; cr2.font.size = Pt(11)
cr2.font.color.rgb = RGBColor(0x50, 0x50, 0x50)

doc.add_paragraph()
add_hr(doc, "961616")
doc.add_paragraph()

title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
tr = title_p.add_run("CLINICAL VISIT REPORT")
tr.bold = True; tr.font.size = Pt(20)
tr.font.color.rgb = RGBColor(0x96, 0x16, 0x16)

sub_title = doc.add_paragraph()
sub_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
st = sub_title.add_run("Cardiac Care Unit (CCU)")
st.bold = True; st.font.size = Pt(15)
st.font.color.rgb = RGBColor(0xC0, 0x39, 0x2B)

doc.add_paragraph()
add_hr(doc, "961616")
doc.add_paragraph()

two_col_table(doc, [
    ("Hospital Visited",     "City Care General Hospital, Bangalore"),
    ("Date of Visit",        "25 July 2026 (Saturday)"),
    ("Time",                 "09:00 AM โ€“ 12:30 PM"),
    ("Class",                "B.Sc. Nursing โ€“ III Year"),
    ("Subject",              "Medical-Surgical Nursing / Cardiac Nursing"),
    ("Faculty In-charge",    "Mrs. Sudha Rani, M.Sc. Nursing (Medical-Surgical)"),
    ("Clinical Coordinator", "Mr. Arun Kumar, M.Sc. Nursing"),
    ("No. of Students",      "15 students"),
    ("Academic Year",        "2025โ€“2026"),
])

note_p = doc.add_paragraph()
note_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
nr = note_p.add_run("Submitted in partial fulfilment of the requirements for B.Sc. Nursing Programme")
nr.italic = True; nr.font.size = Pt(10)
nr.font.color.rgb = RGBColor(0x50, 0x50, 0x50)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 2 โ€“ CERTIFICATE & ACKNOWLEDGEMENT
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "CERTIFICATE")
body(doc,
    "This is to certify that this Clinical Visit Report on the Cardiac Care Unit (CCU) of "
    "City Care General Hospital, Bangalore has been prepared by the B.Sc. Nursing III Year "
    "students of Rajiv Gandhi College of Nursing under the supervision of Mrs. Sudha Rani, "
    "M.Sc. Nursing, as part of the Medical-Surgical Nursing / Cardiac Nursing curriculum for "
    "the academic year 2025โ€“2026. The report is a true and faithful account of the clinical "
    "visit conducted on 25 July 2026.")

doc.add_paragraph()
cert_tbl = doc.add_table(rows=4, cols=2)
cert_tbl.style = "Table Grid"
cert_tbl.autofit = False
cert_tbl.columns[0].width = Inches(3.3)
cert_tbl.columns[1].width = Inches(3.3)
for i in range(4):
    for j in range(2):
        set_cell_bg(cert_tbl.rows[i].cells[j], "FFF5F5")
bold_cell(cert_tbl.rows[0].cells[0], "Faculty In-charge", size=10)
bold_cell(cert_tbl.rows[0].cells[1], "Principal / HOD", size=10)
normal_cell(cert_tbl.rows[1].cells[0], "Mrs. Sudha Rani\nM.Sc. Nursing", size=10)
normal_cell(cert_tbl.rows[1].cells[1], "Dr. Meena Pillai\nPrincipal, RGCN", size=10)
normal_cell(cert_tbl.rows[2].cells[0], "Signature: ________________", size=10)
normal_cell(cert_tbl.rows[2].cells[1], "Signature: ________________", size=10)
normal_cell(cert_tbl.rows[3].cells[0], "Date: 25 July 2026", size=10)
normal_cell(cert_tbl.rows[3].cells[1], "Date: 25 July 2026", size=10)

doc.add_paragraph()
section_heading(doc, "ACKNOWLEDGEMENT")
body(doc,
    "We, the B.Sc. Nursing III Year students of Rajiv Gandhi College of Nursing, sincerely "
    "thank the management and staff of City Care General Hospital, Bangalore, for permitting "
    "us to visit the Cardiac Care Unit (CCU) and gain invaluable clinical exposure in one of "
    "the most specialised areas of nursing practice.")
body(doc,
    "We are deeply grateful to Dr. Suresh Nambiar, DM (Cardiology), Head of Cardiology, "
    "and Sister Kamala Devi, Charge Nurse of the CCU, for their warm reception, guided "
    "orientation, and willingness to answer our questions with patience and clarity. Their "
    "practical insights brought our cardiac nursing textbook knowledge to life.")
body(doc,
    "We express our heartfelt gratitude to our faculty in-charge, Mrs. Sudha Rani, for "
    "planning and accompanying us on this visit, and to the Principal, Dr. Meena Pillai, "
    "for her continued encouragement of clinical learning beyond the classroom.")

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 3 โ€“ INTRODUCTION & OBJECTIVES
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "1.  INTRODUCTION")
body(doc,
    "The Cardiac Care Unit (CCU) โ€“ also called the Coronary Care Unit โ€“ is a highly specialised "
    "intensive care unit dedicated to the monitoring and management of patients with serious "
    "cardiac conditions. These include acute myocardial infarction (AMI), unstable angina, "
    "life-threatening arrhythmias, acute heart failure, and post-operative cardiac surgery care.")
body(doc,
    "Cardiovascular diseases (CVDs) are the leading cause of mortality globally, accounting "
    "for approximately 17.9 million deaths per year (WHO, 2023). In India, CVDs contribute "
    "to nearly 28% of all deaths, with an increasing burden in younger populations. The CCU "
    "plays a pivotal role in reducing cardiac mortality through continuous monitoring, rapid "
    "intervention, and expert nursing care.")
body(doc,
    "City Care General Hospital (CCGH), Bangalore, operates a 20-bed CCU with state-of-the-art "
    "cardiac monitoring equipment, a dedicated cardiac catheterisation laboratory (Cath Lab), "
    "and a team of cardiologists, cardiac nurses, perfusionists, and physiotherapists. "
    "This clinical visit was conducted on 25 July 2026 as part of the Medical-Surgical / "
    "Cardiac Nursing curriculum to provide students with direct exposure to CCU care.")

section_heading(doc, "2.  OBJECTIVES OF THE VISIT")
sub_heading(doc, "2.1  General Objectives")
for obj in [
    "To familiarise B.Sc. Nursing III Year students with the structure, functioning, and organisation of a Cardiac Care Unit.",
    "To observe the nursing roles, responsibilities, and competencies specific to cardiac intensive care.",
    "To correlate theoretical knowledge of cardiac nursing with real clinical practice.",
]:
    bullet(doc, obj)

sub_heading(doc, "2.2  Specific Objectives")
for obj in [
    "To identify the physical layout, zones, and equipment of the CCU.",
    "To understand continuous cardiac monitoring โ€“ ECG interpretation and alarm management.",
    "To observe the nurse's role in management of acute myocardial infarction (AMI) and arrhythmias.",
    "To understand defibrillation, cardioversion, and temporary pacemaker management.",
    "To observe medication management โ€“ antiarrhythmics, anticoagulants, vasopressors, and thrombolytics.",
    "To understand haemodynamic monitoring โ€“ arterial line (A-line), central venous pressure (CVP), pulmonary artery catheter.",
    "To observe infection prevention and control (IPC) practices specific to the CCU.",
    "To understand the psychosocial care of cardiac patients and family support strategies.",
    "To observe documentation โ€“ nursing care notes, 12-lead ECG records, and fluid balance charts.",
]:
    bullet(doc, obj)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 4 โ€“ CCU PROFILE & LAYOUT
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "3.  PROFILE OF THE CARDIAC CARE UNIT")

sub_heading(doc, "3.1  Hospital & CCU Overview")
two_col_table(doc, [
    ("Hospital Name",         "City Care General Hospital (CCGH), Bangalore"),
    ("Total Hospital Beds",   "450 beds"),
    ("CCU Bed Strength",      "20 beds (all with individual cardiac monitors)"),
    ("Step-Down Cardiac Ward","12 beds (adjacent to CCU, for stabilised patients)"),
    ("Daily CCU Admissions",  "4โ€“6 new patients/day (average)"),
    ("NABH Accreditation",    "Yes โ€“ 5th edition standards"),
    ("Head of Cardiology",    "Dr. Suresh Nambiar, DM Cardiology, FACC"),
    ("CCU Nursing In-charge", "Sister Kamala Devi, M.Sc. Nursing (Cardiac), CCRN"),
    ("Cath Lab",              "Yes โ€“ 24-hour primary PCI capability"),
])

sub_heading(doc, "3.2  Physical Layout of the CCU")
body(doc,
    "The CCU at CCGH is a closed-unit ICU model with restricted visitor access. The layout "
    "is designed to allow the central nursing station to have direct visual access to all "
    "20 beds. Each bed space is separated by glass partitions and curtains for privacy while "
    "maintaining visibility.")
three_col_table(doc,
    ["Area", "Capacity / Details", "Purpose"],
    [
        ("Acute CCU (Main)",       "12 beds, glass-partitioned", "AMI, arrhythmias, post-thrombolysis, haemodynamically unstable"),
        ("Intermediate CCU",       "8 beds, open-bay",           "Stabilised cardiac patients; continuous monitoring, step-down from main CCU"),
        ("Central Monitoring Station", "1 nurse per 2 beds",    "All 20 monitor feeds visible; alarms centralised; nurse call system"),
        ("Procedure Room",         "1 room",                     "Cardioversion, temporary pacing, central line insertion"),
        ("Isolation Bay",          "2 beds",                     "Cardiac patients with concurrent infection risk"),
        ("Clean Utility Room",     "1 room",                     "Medication preparation, IV fluid storage"),
        ("Soiled Utility Room",    "1 room",                     "Biomedical waste, used equipment"),
        ("Relatives Waiting Area", "Outside CCU",                "One attendant per patient permitted during visiting hours only"),
        ("Nurses' Station",        "Central โ€“ staffed 24/7",     "Documentation, monitoring, communication hub"),
    ],
    col_widths=[1.8, 1.8, 3.1]
)

sub_heading(doc, "3.3  Staffing Pattern (Per Shift)")
two_col_table(doc, [
    ("Cardiologist (on call)",    "1 senior cardiologist + 1 cardiac registrar; 24/7 availability"),
    ("CCU Nurses (RN)",           "10 nurses per shift (1:2 nurse-patient ratio)"),
    ("Charge Nurse",              "1 per shift; coordinates all CCU activities"),
    ("Physiotherapist",           "1 (morning shift only); early cardiac rehabilitation"),
    ("Dietician",                 "1 daily round; cardiac diet planning"),
    ("Pharmacist",                "1 dedicated CCU pharmacy; medication reconciliation"),
    ("Biomedical Technician",     "1 on call; equipment maintenance and calibration"),
    ("House-keeping Staff",       "2 per shift; terminal cleaning, surface disinfection"),
])

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 5 โ€“ CARDIAC MONITORING & COMMON CONDITIONS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "4.  CARDIAC MONITORING IN THE CCU")

sub_heading(doc, "4.1  Continuous ECG Monitoring")
body(doc,
    "Every CCU patient is connected to a bedside multi-parameter monitor displaying ECG, "
    "SpO2, NIBP/IBP, respiratory rate, temperature, and ETCO2. All bedside monitors are "
    "networked to the central station, where the charge nurse monitors all 20 patients "
    "simultaneously. Alarm thresholds are individually set based on each patient's clinical "
    "status.")
three_col_table(doc,
    ["Parameter", "Normal Range", "CCU Alarm Threshold (Typical)"],
    [
        ("Heart Rate",         "60โ€“100 bpm",     "< 50 or > 130 bpm"),
        ("SpO2",               "95โ€“100%",         "< 92%"),
        ("Systolic BP",        "90โ€“140 mmHg",     "< 85 or > 180 mmHg"),
        ("Respiratory Rate",   "12โ€“20 breaths/min","< 8 or > 30 breaths/min"),
        ("Temperature",        "36.5โ€“37.5ยฐC",     "> 38.5ยฐC"),
        ("CVP",                "2โ€“8 mmHg",        "< 2 or > 12 mmHg"),
    ],
    col_widths=[1.7, 1.8, 3.2]
)

sub_heading(doc, "4.2  ECG Rhythms Demonstrated During Visit")
body(doc,
    "The charge nurse demonstrated the following cardiac rhythms on the monitor and explained "
    "the nursing action for each:")
three_col_table(doc,
    ["Rhythm", "Key Feature", "Nursing Action"],
    [
        ("Normal Sinus Rhythm",      "Rate 60โ€“100, regular P-QRS-T", "Routine monitoring"),
        ("Sinus Bradycardia",        "Rate < 60 bpm",                "Assess symptoms; atropine if haemodynamically unstable"),
        ("Sinus Tachycardia",        "Rate > 100 bpm",               "Identify cause (pain, fever, hypovolaemia); treat underlying cause"),
        ("Atrial Fibrillation (AF)", "Irregularly irregular, no P waves", "Rate control; anticoagulation; notify physician"),
        ("Ventricular Tachycardia (VT)", "Broad complex, rate 100โ€“250 bpm", "Pulseless VT: defibrillate; Pulse VT: amiodarone; call code"),
        ("Ventricular Fibrillation (VF)", "Chaotic waveform, no identifiable complexes", "Immediate defibrillation 200J; CPR; adrenaline"),
        ("Complete Heart Block (3rd deg)", "P and QRS dissociated", "Temporary pacing; call cardiology immediately"),
        ("ST Elevation (STEMI)",     "ST elevation โ‰ฅ 1mm in โ‰ฅ 2 contiguous leads", "Activate Cath Lab; aspirin + anticoagulation; primary PCI"),
    ],
    col_widths=[1.9, 2.2, 2.6]
)

sub_heading(doc, "4.3  Common Conditions Admitted to the CCU")
for cond in [
    "ST-Elevation Myocardial Infarction (STEMI) โ€“ most common; treated with primary PCI within 90 minutes of presentation (door-to-balloon time).",
    "Non-ST-Elevation Myocardial Infarction (NSTEMI) โ€“ managed with anticoagulation, antiplatelet therapy, and early invasive strategy.",
    "Unstable Angina โ€“ managed similarly to NSTEMI; continuous monitoring for ST changes.",
    "Acute Heart Failure / Pulmonary Oedema โ€“ IV diuretics, vasodilators, oxygen, BIPAP/CPAP.",
    "Life-threatening Arrhythmias โ€“ AF with rapid ventricular response, VT, VF, complete heart block.",
    "Hypertensive Emergency โ€“ BP > 180/120 with end-organ damage; IV labetalol / sodium nitroprusside.",
    "Post-Primary PCI Care โ€“ post-procedural monitoring, access site care, antiplatelet therapy.",
    "Cardiogenic Shock โ€“ vasopressors (noradrenaline, dobutamine), IABP, urgent Cath Lab activation.",
]:
    bullet(doc, cond)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 6 โ€“ EQUIPMENT
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "5.  CCU EQUIPMENT & TECHNOLOGY")

sub_heading(doc, "5.1  Bedside Equipment (Per Bed)")
three_col_table(doc,
    ["Equipment", "Function", "Status at Visit"],
    [
        ("Multi-para Monitor",         "Continuous ECG, SpO2, NIBP/IBP, ETCO2, Temp, RR",  "All 20 beds โ€“ functional"),
        ("Defibrillator / Cardioverter","Shock delivery for VF/VT; synchronised cardioversion for AF", "2 units in CCU; AED in corridor"),
        ("Syringe Infusion Pump",      "Precise delivery of vasopressors, antiarrhythmics",  "4 pumps per bed space"),
        ("Volumetric Infusion Pump",   "IV fluids, blood transfusion",                        "2 per bed"),
        ("Ventilator (ICU-grade)",     "Mechanical ventilation for respiratory failure",       "6 units in main CCU"),
        ("Temporary Pacemaker",        "External pacing for bradyarrhythmias, heart block",   "2 units โ€“ checked and functional"),
        ("Intra-Aortic Balloon Pump (IABP)", "Haemodynamic support in cardiogenic shock",   "1 unit available"),
        ("Arterial Line (A-line) set", "Continuous invasive BP monitoring",                   "Standard for all critical beds"),
        ("Central Venous Catheter (CVC)", "CVP monitoring, vasopressor infusion",             "Present in 8/12 main CCU patients"),
        ("Pulse Oximeter (standalone)", "SpO2 in step-down unit",                            "All 8 intermediate CCU beds"),
        ("Glucometer",                 "STAT blood glucose โ€“ esp. for diabetic cardiac patients", "Bedside โ€“ each bay"),
        ("Portable 12-lead ECG",       "On-demand ECG; transmitted to cardiologist",          "3 units โ€“ all calibrated"),
    ],
    col_widths=[2.0, 2.8, 1.9]
)

sub_heading(doc, "5.2  Medications Observed in the CCU")
body(doc, "The following drug classes were observed in the CCU medication trolley and infusion pumps:")
three_col_table(doc,
    ["Drug Class", "Examples", "Indication"],
    [
        ("Antiplatelet Agents",    "Aspirin, Clopidogrel, Ticagrelor",            "ACS โ€“ prevent further clot formation"),
        ("Anticoagulants",         "Heparin (IV/SC), Enoxaparin, Fondaparinux",  "ACS, AF, DVT prophylaxis"),
        ("Thrombolytics",          "Streptokinase, Tenecteplase",                 "STEMI when Cath Lab unavailable"),
        ("Beta Blockers",          "Metoprolol, Atenolol, Carvedilol",           "Rate control, post-MI cardioprotection"),
        ("Antiarrhythmics",        "Amiodarone (IV), Lignocaine, Adenosine",     "VT, SVT, AF rate/rhythm control"),
        ("Vasopressors / Inotropes","Noradrenaline, Dobutamine, Dopamine",       "Cardiogenic shock, hypotension"),
        ("ACE Inhibitors / ARBs",  "Ramipril, Losartan",                         "Post-MI heart failure, hypertension"),
        ("Diuretics",              "Furosemide IV, Torsemide",                   "Acute heart failure, pulmonary oedema"),
        ("Nitrates",               "IV Nitroglycerin (GTN), Isosorbide Dinitrate","Ischaemia, hypertensive emergency"),
        ("Statins",                "Atorvastatin 80 mg",                          "Plaque stabilisation in all ACS"),
        ("Proton Pump Inhibitors", "Pantoprazole IV",                             "GI protection with dual antiplatelet therapy"),
        ("Analgesics",             "Morphine IV (cautious use in ACS)",           "Pain relief, pulmonary oedema"),
    ],
    col_widths=[1.9, 2.2, 2.6]
)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 7 โ€“ NURSING ROLES & PROCEDURES
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "6.  NURSING ROLES & RESPONSIBILITIES IN THE CCU")

sub_heading(doc, "6.1  Admission Nurse")
for r in [
    "Receives patient from ED/Cath Lab; performs rapid head-to-toe assessment.",
    "Connects patient to monitor, sets personalised alarm limits.",
    "Establishes IV access; collects STAT blood samples (CBC, troponin, CK-MB, PT/INR, electrolytes, RFT).",
    "Records baseline vitals, weight, allergy history, and current medications.",
    "Explains CCU environment, visiting rules, and call-bell use to patient and family.",
]:
    bullet(doc, r)

sub_heading(doc, "6.2  Bedside Nurse (Primary Care Nurse)")
for r in [
    "Monitors vitals and cardiac rhythm continuously; acts on alarm promptly.",
    "Administers prescribed medications via infusion pumps; double-checks high-alert drugs with a second nurse.",
    "Maintains accurate fluid intake-output chart (hourly urine output for critical patients).",
    "Performs neurological checks, peripheral perfusion assessment every 4 hours.",
    "Assists in procedures: arterial line insertion, central venous catheterisation, cardioversion.",
    "Provides oral care, pressure area care, and passive limb exercises for immobile patients.",
    "Documents all assessments, interventions, and patient responses in the nursing care notes.",
]:
    bullet(doc, r)

sub_heading(doc, "6.3  Charge Nurse")
for r in [
    "Supervises overall CCU functioning; allocates patients to nurses based on acuity.",
    "Conducts morning rounds with the cardiologist; communicates nursing observations using SBAR.",
    "Ensures crash cart and defibrillator are checked at start of every shift.",
    "Manages family communication โ€“ provides updates, manages anxiety, explains procedures.",
    "Reviews all documentation for accuracy; authorises controlled drug administration.",
    "Coordinates inter-departmental communication (Cath Lab, Echo lab, pharmacy, blood bank).",
]:
    bullet(doc, r)

sub_heading(doc, "6.4  Procedures Observed During the Visit")
for proc in [
    "12-lead ECG recording and interpretation guidance by the charge nurse.",
    "Defibrillator readiness check โ€“ energy levels, pads, synchronise mode demonstration.",
    "IV medication preparation and labelling โ€“ vasopressor drip calculation demonstrated.",
    "Arterial line zeroing and calibration โ€“ continuous invasive BP waveform explained.",
    "CVP measurement using water manometer and electronic transducer โ€“ both methods shown.",
    "Nasogastric feeding initiation for a sedated ventilated patient.",
    "Temporary pacemaker threshold checking โ€“ sensing, pacing rate, output adjustment.",
    "Cardiac rehabilitation โ€“ supervised early mobilisation (dangling legs at bedside) by physiotherapist.",
]:
    bullet(doc, proc)

section_heading(doc, "7.  INFECTION PREVENTION & CONTROL IN THE CCU")

sub_heading(doc, "7.1  Hand Hygiene & Barrier Precautions")
for item in [
    "WHO 5 Moments of Hand Hygiene strictly enforced; ABHR at every bedside.",
    "Sterile gloves mandatory for all invasive procedures; non-sterile gloves for routine care.",
    "Bundle care protocols in place to prevent CLABSI (Central Line-Associated Bloodstream Infection): daily line necessity review, chlorhexidine dressing, sterile technique.",
    "CAUTI prevention bundle: urinary catheter necessity reviewed daily; pericare performed twice per shift.",
    "VAP (Ventilator-Associated Pneumonia) prevention bundle: HOB elevated 30โ€“45ยฐ, oral chlorhexidine 0.2% QID, subglottic suctioning.",
]:
    bullet(doc, item)

sub_heading(doc, "7.2  Environmental & Surface Disinfection")
for item in [
    "Monitor screens and bedrails wiped with 70% isopropyl alcohol wipes every 8 hours.",
    "IV trolleys cleaned with 1% sodium hypochlorite after each use.",
    "Terminal cleaning with 2% glutaraldehyde solution performed on bed vacating.",
    "Air conditioning filters cleaned fortnightly; HEPA filtration in isolation bays.",
]:
    bullet(doc, item)

sub_heading(doc, "7.3  BMW Management in the CCU")
two_col_table(doc, [
    ("Yellow Bag",              "Soiled dressings, blood-soaked material, disposable PPE"),
    ("Red Bag",                 "Recyclable contaminated waste โ€“ IV bags, tubing, catheter bags"),
    ("White Sharps Container",  "Needles, lancets, blades โ€“ puncture-proof; ยพ rule strictly followed"),
    ("Blue Glass Box",          "Broken glass, ampoules"),
    ("Black Bag",               "General non-hazardous domestic waste"),
], col_widths=(2.3, 4.4))

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 8 โ€“ DOCUMENTATION & PATIENT EDUCATION
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "8.  DOCUMENTATION & PATIENT / FAMILY EDUCATION")

sub_heading(doc, "8.1  Documents Maintained in the CCU")
for d in [
    "Nursing Assessment Sheet: Admission vitals, past history, allergies, risk assessments (Braden Scale for pressure injuries, Fall Risk โ€“ Morse Scale, DVT Risk โ€“ Caprini Score).",
    "Nursing Care Notes (ADPIE Format): Systematic entry every 4 hours; real-time update on deterioration.",
    "12-lead ECG Record: Time-stamped; interpreted by cardiologist; filed in patient record.",
    "Medication Administration Record (MAR): Drug, dose, route, time, infusion rate, and nurse signature.",
    "Fluid Balance Chart: Hourly intake-output record; cumulative 24-hour fluid balance calculated.",
    "Ventilator Chart: Mode, FiO2, tidal volume, PEEP, plateau pressure โ€“ recorded hourly.",
    "Haemodynamic Monitoring Sheet: Arterial line BP, CVP, PAP (if applicable) โ€“ every 1โ€“2 hours.",
    "Cardiac Rehabilitation Record: Daily ambulation progress, exercise tolerance, heart rate response.",
    "Consent Forms: For cardioversion, central line insertion, intubation, ICU admission.",
    "Discharge Summary / Transfer Notes: Diagnosis, treatment summary, current medications, follow-up plan.",
]:
    bullet(doc, d)

sub_heading(doc, "8.2  Electronic Health Records (EHR)")
body(doc,
    "CCGH's CCU uses a fully integrated HIS. Nurses document vitals, drug administration, "
    "and care notes in real time on bedside terminals. The system triggers mandatory alerts "
    "for: high-alert drug double-check prompts, drug-allergy cross-checks, delayed "
    "documentation warnings, and troponin result flags. Students observed the nurse "
    "entering STAT lab results and generating an automatic physician notification.")

sub_heading(doc, "8.3  Patient & Family Education")
body(doc,
    "Despite the critical nature of CCU patients, patient and family education is an "
    "integral nursing responsibility, particularly before step-down and discharge:")
three_col_table(doc,
    ["Topic", "Content", "Method Used"],
    [
        ("Cardiac Disease Education",   "Nature of ACS, risk factors, warning signs",      "Verbal + illustrated pamphlet"),
        ("Medication Adherence",        "Dual antiplatelet therapy importance; never stop without cardiology advice", "Bedside counselling"),
        ("Diet Modification",           "Low-salt, low-fat, low-cholesterol cardiac diet",  "Dietician + nursing reinforcement"),
        ("Physical Activity",           "Graded return to activity; avoid heavy lifting for 6 weeks post-MI", "Physiotherapist + nurse"),
        ("Smoking Cessation",           "Counselling; nicotine replacement therapy options","Verbal counselling"),
        ("BP & Blood Sugar Monitoring", "Home monitoring instructions, target values",       "Demonstration + written chart"),
        ("Follow-up Compliance",        "Cardiologist OPD in 1 week; repeat echo in 1 month","Discharge summary + verbal"),
        ("Emergency Signs",             "When to call ambulance: chest pain, breathlessness, palpitations, syncope", "Red-flag card given"),
    ],
    col_widths=[1.8, 2.8, 2.1]
)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 9 โ€“ LEARNING, CHALLENGES & RECOMMENDATIONS
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "9.  LEARNING EXPERIENCES & STUDENT REFLECTIONS")

sub_heading(doc, "9.1  Key Learning Points")
for lp in [
    "Cardiac Monitoring Mastery: Students now understand that a CCU nurse must interpret cardiac rhythms in real time and act within seconds for life-threatening arrhythmias. This reinforced the urgent need to master ECG interpretation.",
    "High-Alert Medications: Vasopressor and antiarrhythmic infusions require meticulous dose calculation and double-checking. The 'two-nurse check' system for high-alert drugs is a non-negotiable safety standard.",
    "Haemodynamic Monitoring: Seeing an arterial waveform and CVP in real time made abstract textbook concepts tangible. Students understood why these invasive parameters are superior to NIBP in critical care.",
    "Nurse-to-Patient Ratio: The 1:2 CCU nurse-to-patient ratio reflects the intense monitoring and intervention burden. Students appreciated why specialised cardiac nursing training is essential.",
    "Bundle Care for HAI Prevention: The CLABSI, CAUTI, and VAP prevention bundles are evidence-based protocols that dramatically reduce hospital-acquired infections. Students saw these in practice โ€“ not just in textbooks.",
    "SBAR Communication: The charge nurse used SBAR confidently during the cardiologist ward round. Students understood how this structured tool improves clinical communication and patient safety.",
    "Psychosocial Aspects: Patients in the CCU experience intense fear and anxiety. A nurse's calm demeanour, clear explanation, and compassionate presence significantly reduces psychological distress and aids recovery.",
    "Cardiac Rehabilitation: Early mobilisation even within 24โ€“48 hours of a cardiac event is now evidence-based practice. Students observed supervised dangling and arm exercises in step-down patients.",
]:
    bullet(doc, lp)

sub_heading(doc, "9.2  Student Reflections")
reflections = [
    ("Ms. Kavya R.",     "When I saw the defibrillator being checked, I realised this is not just a machine โ€“ it is someone's lifeline. I want to be the nurse who knows how to use it without hesitation."),
    ("Mr. Suresh M.",    "The 12-lead ECG interpretation session was an eye-opener. I could identify ST elevation on a real patient's ECG. The theory suddenly became very real and important."),
    ("Ms. Preethi N.",   "The calmness of the CCU nurses despite managing 2 critical patients simultaneously was inspiring. They were systematic, compassionate, and completely in control."),
    ("Ms. Divya K.",     "Watching the nurse calculate a vasopressor dose in real time โ€“ with the formula, pump settings, and double-check โ€“ showed me the depth of knowledge CCU nursing demands."),
    ("Mr. Arjun P.",     "I was moved by how the charge nurse spoke to the anxious wife of an AMI patient โ€“ clear, honest, and kind. That is the kind of nurse I want to become."),
]
tbl_r = doc.add_table(rows=1 + len(reflections), cols=2)
tbl_r.style = "Table Grid"
tbl_r.autofit = False
tbl_r.columns[0].width = Inches(1.5)
tbl_r.columns[1].width = Inches(5.2)
for j, h in enumerate(["Student", "Reflection"]):
    set_cell_bg(tbl_r.rows[0].cells[j], "961616")
    hdr_cell(tbl_r.rows[0].cells[j], h)
for i, (name, ref) in enumerate(reflections):
    fill = "FDECEA" if i % 2 == 0 else "FFFFFF"
    for j in range(2): set_cell_bg(tbl_r.rows[i+1].cells[j], fill)
    bold_cell(tbl_r.rows[i+1].cells[0], name, 10)
    normal_cell(tbl_r.rows[i+1].cells[1], ref, 10)
doc.add_paragraph()

section_heading(doc, "10.  CHALLENGES OBSERVED")
three_col_table(doc,
    ["Challenge", "Observation", "Suggested Improvement"],
    [
        ("Alarm Fatigue",
         "Frequent low-priority alarms (SpO2 probe displacement, patient movement) observed. Nurses noted desensitisation risk.",
         "Customise alarm thresholds per patient; regular alarm management training."),
        ("Visitor Policy Non-compliance",
         "3 instances of multiple relatives entering CCU outside visiting hours, causing disruption.",
         "Reinforce visitor policy via security; display rules clearly at CCU entrance."),
        ("Understaffing (Night Shift)",
         "Charge nurse mentioned night shifts often have 8 nurses for 20 patients (1:2.5 ratio) due to absenteeism.",
         "Maintain a pool of on-call CCU-trained nurses to prevent ratio breaches."),
        ("Documentation Backlog",
         "2 nurses were observed completing care notes 3โ€“4 hours after care delivery due to high patient acuity.",
         "Introduce voice-to-text documentation or bedside tablet entry for real-time documentation."),
        ("Patient Communication Barrier",
         "Several elderly patients found it difficult to understand medical instructions; language barriers noted.",
         "Use pictorial discharge cards and involve trained translators or family members."),
    ],
    col_widths=[1.5, 2.5, 2.7]
)

section_heading(doc, "11.  RECOMMENDATIONS")
for rec in [
    "Implement a structured alarm management protocol with customised patient-specific thresholds to reduce alarm fatigue.",
    "Strengthen visitor policy enforcement with identification wristbands for permitted attendants.",
    "Maintain a dedicated pool of CCRN-trained on-call nurses for night shift coverage.",
    "Introduce real-time bedside documentation using tablets or voice-assisted entry.",
    "Develop multilingual patient education materials (Kannada, Hindi, English) for cardiac discharge instructions.",
    "Conduct quarterly simulation-based ACLS and arrhythmia management drills for all CCU nurses.",
    "Establish a formal clinical teaching programme for nursing students with orientation checklists before CCU visits.",
    "Implement a structured early cardiac rehabilitation protocol with documented milestones for all CCU patients.",
]:
    bullet(doc, rec)

doc.add_page_break()

# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# PAGE 10 โ€“ CONCLUSION, REFERENCES & APPENDIX
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
section_heading(doc, "12.  CONCLUSION")
body(doc,
    "The clinical visit to the Cardiac Care Unit of City Care General Hospital, Bangalore, "
    "was a profoundly impactful learning experience for the B.Sc. Nursing III Year students "
    "of Rajiv Gandhi College of Nursing. The CCU represents the highest acuity of nursing "
    "care โ€“ where every minute counts, every alarm matters, and every intervention must be "
    "swift, precise, and evidence-based.")
body(doc,
    "Students gained direct exposure to continuous cardiac monitoring, ECG rhythm interpretation, "
    "emergency defibrillation readiness, haemodynamic monitoring, high-alert medication "
    "management, bundle care for HAI prevention, and the compassionate psychosocial care "
    "that defines excellent cardiac nursing. The visit bridged the critical gap between "
    "classroom theory and real-world clinical practice.")
body(doc,
    "The observations reinforced that CCU nursing demands not just technical competency but "
    "also exceptional critical thinking, calm decision-making under pressure, meticulous "
    "attention to detail, and deep empathy for patients and families facing life-threatening "
    "illness. These are the standards to which we, as future nursing professionals, must aspire.")
body(doc,
    "We are grateful for this opportunity and look forward to further clinical exposure in "
    "specialised units as we continue to develop our competence and confidence in nursing practice.")

section_heading(doc, "REFERENCES")
refs = [
    "American Heart Association (AHA). (2020). Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care. Circulation, 142(16_suppl_2).",
    "Brunner, L. S., & Suddarth, D. S. (2022). Brunner & Suddarth's Textbook of Medical-Surgical Nursing (15th ed.). Wolters Kluwer.",
    "Ibanez, B., et al. (2018). 2017 ESC Guidelines for the Management of Acute Myocardial Infarction in Patients Presenting with ST-Segment Elevation. European Heart Journal, 39(2), 119โ€“177.",
    "Morton, P. G., & Fontaine, D. K. (2018). Critical Care Nursing: A Holistic Approach (11th ed.). Wolters Kluwer.",
    "Urden, L. D., Stacy, K. M., & Lough, M. E. (2022). Critical Care Nursing: Diagnosis and Management (9th ed.). Elsevier.",
    "World Health Organization. (2023). Cardiovascular Diseases (CVDs) Fact Sheet. WHO Press, Geneva.",
    "National Accreditation Board for Hospitals (NABH). (2020). Standards for Hospitals (5th ed.). Quality Council of India.",
    "O'Gara, P. T., et al. (2013). 2013 ACCF/AHA Guideline for the Management of ST-Elevation Myocardial Infarction. JACC, 61(4), e78โ€“e140.",
    "Lewis, S. L., et al. (2023). Medical-Surgical Nursing (11th ed.). Elsevier.",
    "CPCB. (2016). Biomedical Waste Management Rules. Ministry of Environment, Forest and Climate Change, Government of India.",
]
for i, ref in enumerate(refs, 1):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent = Inches(0.4)
    p.paragraph_format.first_line_indent = Inches(-0.25)
    p.paragraph_format.space_after = Pt(4)
    r1 = p.add_run(f"{i}.  "); r1.bold = True; r1.font.size = Pt(10)
    r2 = p.add_run(ref); r2.font.size = Pt(10)

section_heading(doc, "APPENDIX โ€“ LIST OF PARTICIPATING STUDENTS")
students = [
    ("1","Ms. Kavya R.","RGCN-2024-301"),("2","Mr. Suresh M.","RGCN-2024-302"),
    ("3","Ms. Preethi N.","RGCN-2024-303"),("4","Ms. Divya K.","RGCN-2024-304"),
    ("5","Mr. Arjun P.","RGCN-2024-305"),("6","Ms. Nithya S.","RGCN-2024-306"),
    ("7","Ms. Rekha V.","RGCN-2024-307"),("8","Mr. Manoj T.","RGCN-2024-308"),
    ("9","Ms. Sindhu L.","RGCN-2024-309"),("10","Ms. Anitha B.","RGCN-2024-310"),
    ("11","Mr. Karthik R.","RGCN-2024-311"),("12","Ms. Pooja M.","RGCN-2024-312"),
    ("13","Ms. Gayatri N.","RGCN-2024-313"),("14","Mr. Rahul S.","RGCN-2024-314"),
    ("15","Ms. Swathi D.","RGCN-2024-315"),
]
tbl_s = doc.add_table(rows=1 + len(students), cols=3)
tbl_s.style = "Table Grid"
tbl_s.autofit = False
tbl_s.columns[0].width = Inches(0.5)
tbl_s.columns[1].width = Inches(2.5)
tbl_s.columns[2].width = Inches(1.8)
for j, h in enumerate(["S.No.", "Student Name", "Roll Number"]):
    set_cell_bg(tbl_s.rows[0].cells[j], "961616")
    hdr_cell(tbl_s.rows[0].cells[j], h)
for i, (sno, name, roll) in enumerate(students):
    fill = "FDECEA" if i % 2 == 0 else "FFFFFF"
    for j in range(3): set_cell_bg(tbl_s.rows[i+1].cells[j], fill)
    for j, val in enumerate([sno, name, roll]):
        normal_cell(tbl_s.rows[i+1].cells[j], val, 10)

doc.add_paragraph()
add_hr(doc, "961616")
final = doc.add_paragraph()
final.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = final.add_run(
    "This report was prepared by B.Sc. Nursing III Year students, Rajiv Gandhi College of Nursing. "
    "For academic use only. Not for distribution.")
fr.italic = True; fr.font.size = Pt(9)
fr.font.color.rgb = RGBColor(0x60, 0x60, 0x60)

doc.save(OUTPUT_PATH)
print(f"Saved: {OUTPUT_PATH}")
Running Command

python3 /tmp/workspace/ed-visit-report/generate_ccu_report.py && ls -lh /tmp/workspace/ed-visit-report/CCU_Visit_Report_BSc_Nursing.docx

Your 10-page B.Sc. Nursing CCU Visit Report is ready. Download it here:

CCU Visit Report BSc Nursing

Word Document ยท DOCX


Here is the full page-by-page breakdown:
PageSectionContent
1Cover PageCollege, hospital (City Care General Hospital, Bangalore), visit details, faculty, academic year
2Certificate & AcknowledgementSigned certificate + gratitude to cardiology team and faculty
3Introduction & ObjectivesCVD burden globally/India, CCU overview, 9 specific learning objectives
4CCU Profile & LayoutHospital overview, 9-zone layout table (Main CCU, Intermediate, Procedure Room, Isolation Bay, etc.), staffing per shift
5Cardiac Monitoring & ConditionsAlarm threshold table, 8 ECG rhythms with nursing actions, 8 common CCU diagnoses (STEMI, NSTEMI, AF, cardiogenic shock, etc.)
6Equipment & Medications12-item bedside equipment table, 12-drug class medication table with indications
7Nursing Roles & IPCAdmission nurse, bedside nurse, charge nurse roles; 8 procedures observed; CLABSI/CAUTI/VAP bundle care; BMW segregation
8Documentation & Patient Education10 CCU documents reviewed, EHR system, 8-topic patient/family education table with methods
9Learning, Challenges & Recommendations8 key learning points, 5 student reflections, 5-challenge table, 8 recommendations
10Conclusion, References & AppendixReflective conclusion, 10 standard references (AHA, ESC, Brunner & Suddarth, Urden, WHO, etc.), 15-student attendance list
Key clinical content covered specific to CCU: ECG arrhythmia interpretation, defibrillation, vasopressor calculations, haemodynamic monitoring (A-line, CVP), STEMI management, dual antiplatelet therapy, and early cardiac rehabilitation.
To customise with your actual college name, hospital, or student names - just share the details!
This is a shared conversation. Sign in to Orris to start your own chat.