~/nursing-viva/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import KeepTogether
OUTPUT = "/home/daytona/workspace/nursing-viva/Nursing_Foundation_Viva_Guide.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm,
leftMargin=1.8*cm,
topMargin=2*cm,
bottomMargin=2*cm,
title="Nursing Foundation Viva Guide - BSc Nursing 1st Year",
author="Orris AI"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'MainTitle', parent=styles['Title'],
fontSize=22, textColor=colors.HexColor('#1a3a6b'),
spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold'
)
subtitle_style = ParagraphStyle(
'Subtitle', parent=styles['Normal'],
fontSize=12, textColor=colors.HexColor('#2c5f8a'),
spaceAfter=4, alignment=TA_CENTER, fontName='Helvetica'
)
h1_style = ParagraphStyle(
'H1', parent=styles['Heading1'],
fontSize=16, textColor=colors.white,
spaceBefore=14, spaceAfter=6,
fontName='Helvetica-Bold',
backColor=colors.HexColor('#1a3a6b'),
borderPad=6, leftIndent=-4, rightIndent=-4
)
h2_style = ParagraphStyle(
'H2', parent=styles['Heading2'],
fontSize=13, textColor=colors.white,
spaceBefore=10, spaceAfter=4,
fontName='Helvetica-Bold',
backColor=colors.HexColor('#2c7bb6'),
borderPad=4, leftIndent=0
)
h3_style = ParagraphStyle(
'H3', parent=styles['Heading3'],
fontSize=11, textColor=colors.HexColor('#1a3a6b'),
spaceBefore=8, spaceAfter=3,
fontName='Helvetica-Bold',
borderPad=2
)
body_style = ParagraphStyle(
'Body', parent=styles['Normal'],
fontSize=9.5, textColor=colors.HexColor('#222222'),
spaceAfter=3, leading=14, fontName='Helvetica'
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=9.5, textColor=colors.HexColor('#222222'),
spaceAfter=2, leading=13, leftIndent=14,
bulletIndent=4, fontName='Helvetica'
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=9, textColor=colors.HexColor('#7b3f00'),
spaceAfter=3, leading=13, leftIndent=8,
fontName='Helvetica-Oblique',
backColor=colors.HexColor('#fff8e7'),
borderPad=4
)
important_style = ParagraphStyle(
'Important', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#b30000'),
spaceAfter=3, leading=13,
fontName='Helvetica-Bold'
)
def table_style_default():
return TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a6b')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,0), 9),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
('FONTSIZE', (0,1), (-1,-1), 8.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf3fb'), colors.white]),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aacce4')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf3fb'), colors.white]),
])
def make_table(headers, rows, col_widths=None):
data = [headers] + rows
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(table_style_default())
return t
def bp(text):
return Paragraph(text, body_style)
def bul(text):
return Paragraph(f"โข {text}", bullet_style)
def h1(text):
return Paragraph(text, h1_style)
def h2(text):
return Paragraph(text, h2_style)
def h3(text):
return Paragraph(text, h3_style)
def note(text):
return Paragraph(text, note_style)
def imp(text):
return Paragraph(text, important_style)
def sp(n=1):
return Spacer(1, n*0.25*cm)
def hr():
return HRFlowable(width="100%", thickness=1, color=colors.HexColor('#2c7bb6'), spaceAfter=4)
story = []
# โโโ COVER PAGE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(Spacer(1, 3*cm))
story.append(Paragraph("๐ฅ NURSING FOUNDATION", title_style))
story.append(Paragraph("VIVA EXAMINATION GUIDE", title_style))
story.append(sp(2))
story.append(Paragraph("BSc Nursing 1st Year | ABVMU / INC Syllabus", subtitle_style))
story.append(sp(1))
story.append(hr())
story.append(sp(1))
story.append(Paragraph("Complete Answers for Practical Viva", subtitle_style))
story.append(sp(4))
story.append(Paragraph("Prepared: July 12, 2026", subtitle_style))
story.append(PageBreak())
# โโโ SECTION 1: POLYURIA โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("1. WHAT IS POLYURIA"))
story.append(sp())
story.append(h2("Definition"))
story.append(bp("<b>Polyuria is defined as urine volume in excess of 2.5 litres (2500 mL) per day.</b>"))
story.append(bul("Normal urine output = 1000โ1500 mL/day (30 mL/hour minimum)"))
story.append(bul("Polyuria = more than 2500 mL/day"))
story.append(sp())
story.append(h2("Types of Polyuria"))
story.append(h3("1. Osmotic Diuresis"))
story.append(bp("Caused by excessive solute excretion (>60 mOsm/hour). Urine osmolality is usually greater than plasma."))
story.append(bp("<b>Common solutes responsible:</b> Glucose (Diabetes Mellitus), Urea, Mannitol, NaCl, Radiopaque dye, Diuretics (furosemide)"))
story.append(sp())
story.append(h3("2. Water Diuresis"))
story.append(bp("Excretion of large volume of dilute urine due to reduced water reabsorption in the collecting duct."))
story.append(bp("<b>Reasons:</b> Lack of ADH (Anti-Diuretic Hormone) OR Kidney unresponsive to ADH (Nephrogenic Diabetes Insipidus)"))
story.append(sp())
story.append(h2("Causes of Polyuria"))
t = make_table(
["Cause", "Mechanism", "Type"],
[
["Diabetes Mellitus", "Glucosuria โ osmotic diuresis", "Osmotic"],
["Diabetes Insipidus (Central)", "No ADH produced (pituitary/hypothalamus)", "Water"],
["Diabetes Insipidus (Nephrogenic)", "Kidney doesn't respond to ADH", "Water"],
["Primary Polydipsia", "Excessive drinking โ suppresses ADH", "Water"],
["Hypercalcemia", "Impairs ADH action on kidney", "Water"],
["Hypokalemia", "Impairs concentrating ability", "Water"],
["Lithium toxicity", "Nephrogenic DI", "Water"],
["Pregnancy", "Vasopressinase breaks down ADH", "Water"],
["Chronic Renal Failure", "Loss of concentrating ability", "Water"],
["Diuretics (furosemide)", "NaCl excretion", "Osmotic"],
],
col_widths=[6*cm, 7*cm, 4*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Key Terms"))
t2 = make_table(
["Term", "Meaning"],
[
["ADH / Vasopressin", "Hormone from posterior pituitary โ causes water retention"],
["Polydipsia", "Excessive thirst (accompanies polyuria)"],
["Central DI", "ADH not produced โ lesion in hypothalamus/pituitary"],
["Nephrogenic DI", "Kidney doesn't respond to ADH"],
["Nocturia", "Urinating 2+ times at night"],
["Oliguria", "Urine output <400 mL/day"],
["Anuria", "Urine output <100 mL/day"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t2)
story.append(sp())
story.append(h2("Nursing Assessment of Polyuria"))
story.append(bul("Measure and record Intake & Output (I&O) strictly"))
story.append(bul("Check urine colour, specific gravity"))
story.append(bul("Monitor for dehydration (dry mucous membranes, poor skin turgor, sunken eyes)"))
story.append(bul("Blood sugar monitoring"))
story.append(bul("Report if output >2500 mL/day or <400 mL/day"))
story.append(PageBreak())
# โโโ SECTION 2: HEALTH โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("2. HEALTH โ DEFINITION & CONCEPTS"))
story.append(sp())
story.append(h2("WHO Definition of Health"))
story.append(note('"Health is a state of complete physical, mental and social well-being and not merely the absence of disease or infirmity." โ World Health Organization, 1948'))
story.append(sp())
story.append(h2("Dimensions of Health"))
t = make_table(
["Dimension", "Meaning"],
[
["Physical", "Functioning of the body โ organs, systems"],
["Mental", "Emotional stability, clear thinking"],
["Social", "Ability to interact with society"],
["Spiritual", "Sense of purpose, values, beliefs"],
["Emotional", "Ability to express feelings appropriately"],
["Vocational", "Ability to work productively"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Other Definitions"))
story.append(bul('<b>Illness:</b> "A condition characterized by a deviation from normal health state manifested by physical and psychological symptoms." โ Kozier'))
story.append(bul("<b>Disease:</b> A specific pathological process with a defined cause and set of signs/symptoms"))
story.append(bul("<b>Wellness:</b> A dynamic process of becoming aware of and making choices toward a healthy and fulfilling life"))
story.append(sp())
story.append(h2("Levels of Prevention"))
t = make_table(
["Level", "Type", "Example"],
[
["Primary", "Before disease occurs", "Vaccination, health education"],
["Secondary", "Early detection", "Screening, early treatment"],
["Tertiary", "Prevent complications", "Rehabilitation, disability limitation"],
],
col_widths=[4*cm, 5*cm, 8*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Maslow's Hierarchy of Needs"))
story.append(bp("(Bottom to Top โ most basic to highest)"))
story.append(bul("Physiological Needs โ Air, Water, Food, Sleep (MOST BASIC โ prioritized first in nursing)"))
story.append(bul("Safety & Security"))
story.append(bul("Love & Belonging"))
story.append(bul("Esteem Needs"))
story.append(bul("Self-Actualization (highest)"))
story.append(PageBreak())
# โโโ SECTION 3: NURSING (DEFINITION) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("3. NURSING โ DEFINITION & CONCEPTS"))
story.append(sp())
story.append(h2("Definition of Nursing"))
story.append(note('"Nursing encompasses autonomous and collaborative care of individuals of all ages, families, groups and communities, sick or well and in all settings. It includes the promotion of health, prevention of illness, and care of ill, disabled and dying people." โ ICN (International Council of Nurses)'))
story.append(sp())
story.append(note('"The unique function of the nurse is to assist the individual, sick or well, in the performance of those activities contributing to health or its recovery that he would perform unaided if he had the necessary strength, will or knowledge." โ Virginia Henderson'))
story.append(sp())
story.append(h2("Nursing Process โ ADPIE"))
t = make_table(
["Step", "Full Name", "What it involves"],
[
["A", "Assessment", "Data collection โ subjective & objective"],
["D", "Diagnosis", "Identify nursing problems (NANDA)"],
["P", "Planning", "Set goals, prioritize (Maslow's)"],
["I", "Implementation", "Carry out nursing orders"],
["E", "Evaluation", "Assess if goals met"],
],
col_widths=[2*cm, 5*cm, 10*cm]
)
story.append(t)
story.append(sp())
story.append(note("Medical diagnosis: identifies disease (made by doctor). Nursing diagnosis: identifies patient's response to health problem (made by nurse)."))
story.append(PageBreak())
# โโโ SECTION 4: HAND WASHING โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("4. STEPS OF HAND WASHING"))
story.append(sp())
story.append(h2("Purpose"))
story.append(bul("Remove transient microorganisms from hands"))
story.append(bul("Prevent cross-infection between patients"))
story.append(bul("Break the chain of infection"))
story.append(sp())
story.append(h2("Types of Hand Washing"))
t = make_table(
["Type", "Also Called", "When Used"],
[
["Social/Routine", "Medical asepsis", "Before/after routine patient contact"],
["Antiseptic", "Clinical hand wash", "Before invasive procedures"],
["Surgical", "Surgical scrub", "Before surgery (3โ5 min, up to elbow)"],
],
col_widths=[4*cm, 5*cm, 8*cm]
)
story.append(t)
story.append(sp())
story.append(h2("WHO 5 Moments for Hand Hygiene"))
story.append(bul("1. BEFORE touching a patient"))
story.append(bul("2. BEFORE a clean/aseptic procedure"))
story.append(bul("3. AFTER body fluid exposure risk"))
story.append(bul("4. AFTER touching a patient"))
story.append(bul("5. AFTER touching patient surroundings"))
story.append(sp())
story.append(h2("WHO 7-Step Hand Washing Technique"))
story.append(imp("Duration: 40โ60 seconds with soap and water"))
story.append(sp())
steps = [
("Step 1", "Wet hands with running water. Apply enough soap to cover all surfaces."),
("Step 2", "Rub hands PALM TO PALM vigorously."),
("Step 3", "Rub BACK OF EACH HAND with palm of the other hand, fingers interlocked."),
("Step 4", "Rub PALM TO PALM with fingers interlocked (between fingers)."),
("Step 5", "Rub BACK OF FINGERS to opposing palms with fingers interlocked (knuckles)."),
("Step 6", "Rub EACH THUMB clasped in opposite hand using a rotational movement."),
("Step 7", "Rub TIPS OF FINGERS in opposite palm in circular motion. Then rub each WRIST with opposite hand."),
("Final", "RINSE hands with running water. DRY thoroughly with single-use towel. Use ELBOW to turn off tap."),
]
t = make_table(
["Step", "Action"],
steps,
col_widths=[3*cm, 14*cm]
)
story.append(t)
story.append(sp())
story.append(note("Alcohol-based hand rub (ABHR): 20โ30 seconds. Use soap & water when hands are visibly soiled, after toilet, suspected C.diff/norovirus."))
story.append(sp())
story.append(h2("Surgical vs Medical Hand Washing"))
t = make_table(
["Feature", "Medical Hand Wash", "Surgical Scrub"],
[
["Also called", "Routine/Social hand wash", "Surgical scrub, Sterile hand wash"],
["Purpose", "Remove transient organisms", "Remove ALL organisms (transient + resident)"],
["Duration", "40โ60 seconds", "3โ5 minutes"],
["Area washed", "Hands and wrists", "Hands up to 2 inches above elbow"],
["Solution used", "Soap & water / ABHR", "Antiseptic (Chlorhexidine, Povidone-iodine)"],
["Nail brush", "Not used", "Used โ clean under nails"],
["When used", "Routine patient care", "Before surgery, sterile procedures"],
["Drying", "Disposable towel", "Sterile towel (elbow to fingertips)"],
["After drying", "Done", "Don sterile gown and gloves"],
],
col_widths=[4*cm, 6*cm, 7*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 5: GLOVES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("5. DONNING (ADDING) AND DOFFING (REMOVING) GLOVES"))
story.append(sp())
story.append(h2("Purpose of Gloves"))
story.append(bul("Protect patients from nurse's microorganisms"))
story.append(bul("Protect nurse from patient's blood/body fluids"))
story.append(bul("Reduce cross-contamination"))
story.append(sp())
story.append(h2("Types of Gloves"))
t = make_table(
["Type", "Use"],
[
["Clean/Non-sterile gloves", "General patient care, body fluid contact"],
["Sterile gloves", "Wound dressing, catheterization, surgery"],
["Examination gloves", "Assessment, routine care"],
],
col_widths=[6*cm, 11*cm]
)
story.append(t)
story.append(sp())
story.append(h2("DONNING โ Putting On Non-Sterile Gloves"))
story.append(bul("1. Perform HAND HYGIENE first"))
story.append(bul("2. Select correct glove SIZE"))
story.append(bul("3. Inspect gloves for tears or holes"))
story.append(bul("4. Pick up first glove by the cuff (outside)"))
story.append(bul("5. Slide hand in, then repeat for second glove"))
story.append(bul("6. Adjust fit, ensure no gaps at wrists"))
story.append(sp())
story.append(h2("DONNING โ Putting On Sterile Gloves"))
story.append(bul("1. Perform surgical hand wash"))
story.append(bul("2. Open sterile glove package on clean surface"))
story.append(bul("3. Pick up FIRST glove by the folded cuff (inside surface only โ do NOT touch outside)"))
story.append(bul("4. Slide dominant hand in โ do not touch outside of glove"))
story.append(bul("5. With gloved dominant hand, pick up SECOND glove by sliding fingers under the cuff (outside)"))
story.append(bul("6. Slide non-dominant hand in"))
story.append(bul("7. Adjust both gloves โ touching only outside (sterile) surfaces"))
story.append(note("KEY RULE for Sterile Gloves: Sterile touches sterile. Unsterile touches unsterile."))
story.append(sp())
story.append(h2("DOFFING โ Removing Gloves"))
story.append(imp("GOLDEN RULE: Dirty touches dirty. Clean touches clean."))
story.append(sp())
story.append(bul("Step 1: Pinch the OUTSIDE of one glove near the wrist with the OTHER GLOVED HAND. Pull it off, turning it INSIDE OUT. Hold it in the still-gloved hand."))
story.append(bul("Step 2: Slide 2 BARE FINGERS under the cuff of the remaining glove (touching only the INSIDE)."))
story.append(bul("Step 3: Peel it off, turning it INSIDE OUT over the first glove."))
story.append(bul("Step 4: Both gloves end up inside out, one inside the other โ dispose in CLINICAL WASTE BIN (yellow)."))
story.append(bul("Step 5: Perform HAND HYGIENE immediately after removing gloves."))
story.append(sp())
story.append(h2("For Full PPE โ Doffing Order"))
story.append(bul("1. Remove OUTER GLOVES first (most contaminated)"))
story.append(bul("2. Remove GOWN (roll inside out away from body)"))
story.append(bul("3. Disinfect INNER GLOVES"))
story.append(bul("4. Remove FACE MASK (hold by straps, do NOT touch front)"))
story.append(bul("5. Remove INNER GLOVES"))
story.append(bul("6. Perform HAND HYGIENE โ"))
story.append(note("Memory tip for Doffing: G-G-G-M-H = Gloves โ Goggles โ Gown โ Mask โ Hand hygiene"))
story.append(PageBreak())
# โโโ SECTION 6: VITAL SIGNS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("6. VITAL SIGNS โ ALL NORMAL VALUES"))
story.append(sp())
t = make_table(
["Vital Sign", "Normal Value", "Abnormal Terms"],
[
["Pulse Rate", "60โ100 beats/min (adult)", "Tachycardia >100, Bradycardia <60"],
["Blood Pressure", "120/80 mmHg", "Hypertension >140/90, Hypotension <90/60"],
["Oxygen Level (SpO2)", "95โ100%", "Hypoxia <90%"],
["Breathing Rate", "12โ20 breaths/min", "Tachypnoea >20, Bradypnoea <12"],
["Temperature (oral)", "98.6ยฐF / 37ยฐC", "Fever >37.2ยฐC, Hypothermia <35ยฐC"],
],
col_widths=[4.5*cm, 5*cm, 7.5*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Pulse Rate by Age"))
t = make_table(
["Age Group", "Normal Pulse (bpm)"],
[
["Newborn", "120โ160"],
["Infant (1 year)", "80โ140"],
["Child (2โ10 years)", "70โ120"],
["Adult", "60โ100"],
],
col_widths=[8*cm, 9*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Blood Pressure Classification"))
t = make_table(
["Category", "Systolic (mmHg)", "Diastolic (mmHg)"],
[
["Normal", "<120", "<80"],
["Elevated", "120โ129", "<80"],
["Hypertension Stage 1", "130โ139", "80โ89"],
["Hypertension Stage 2", "โฅ140", "โฅ90"],
["Hypertensive Crisis", ">180", ">120"],
],
col_widths=[6*cm, 5*cm, 6*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Temperature Routes"))
t = make_table(
["Route", "Normal Range", "Duration"],
[
["Oral", "97.6โ99.6ยฐF (36.4โ37.6ยฐC)", "3โ5 min"],
["Axillary", "96.6โ98.6ยฐF (36โ37ยฐC)", "10 min"],
["Rectal", "98.6โ100.6ยฐF (37โ38ยฐC)", "3 min"],
["Tympanic", "Same as rectal (37ยฐC)", "Seconds"],
],
col_widths=[4*cm, 7*cm, 6*cm]
)
story.append(t)
story.append(note("5 Vital Signs: Temperature, Pulse, Respiration, Blood Pressure + Pain (5th vital sign)"))
story.append(PageBreak())
# โโโ SECTION 7: PULSE SITES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("7. PULSE SITES โ 9 SITES"))
story.append(sp())
t = make_table(
["#", "Site", "Location", "Used When"],
[
["1", "Radial", "Wrist (thumb side)", "Routine check โ MOST COMMON"],
["2", "Carotid", "Neck (beside larynx)", "Emergency / cardiac arrest"],
["3", "Brachial", "Inner elbow (antecubital)", "BP measurement, infants"],
["4", "Femoral", "Groin", "Cardiac arrest, leg circulation"],
["5", "Popliteal", "Behind knee", "Leg circulation check"],
["6", "Dorsalis Pedis", "Top of foot", "Foot/peripheral circulation"],
["7", "Posterior Tibial", "Behind inner ankle", "Peripheral vascular disease"],
["8", "Temporal", "Temple (side of head)", "Children"],
["9", "Apical", "Left 5th intercostal space, MCL", "Heart rate directly"],
],
col_widths=[1.2*cm, 3.5*cm, 5.5*cm, 6.8*cm]
)
story.append(t)
story.append(note("Most common site = Radial. Emergency site = Carotid. Infants = Brachial or Apical."))
story.append(PageBreak())
# โโโ SECTION 8: TYPES OF FLUIDS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("8. TYPES OF IV FLUIDS"))
story.append(sp())
story.append(h2("A. Crystalloids"))
t = make_table(
["Type", "Tonicity", "Examples", "Use"],
[
["Isotonic", "Same as blood (280โ310 mOsm/L)", "Normal Saline 0.9%, Ringer's Lactate, 5% Dextrose", "Volume replacement, dehydration"],
["Hypotonic", "Less than blood", "0.45% NaCl (Half Normal Saline)", "Cellular dehydration, hypernatremia"],
["Hypertonic", "More than blood", "3% NaCl, 10% Dextrose, 50% Dextrose", "Hyponatremia, cerebral edema"],
],
col_widths=[3*cm, 4.5*cm, 5.5*cm, 4*cm]
)
story.append(t)
story.append(sp())
story.append(h2("B. Colloids"))
t = make_table(
["Solution", "Example", "Use"],
[
["Blood products", "Whole blood, Packed RBCs, FFP, Platelets", "Blood loss, clotting disorders"],
["Albumin", "5%, 25% Albumin", "Burns, hypoalbuminemia"],
["Synthetic", "Dextran, Gelatin", "Volume expansion"],
],
col_widths=[4*cm, 7*cm, 6*cm]
)
story.append(t)
story.append(sp())
story.append(note("DNS = 5% Dextrose + 0.9% NaCl | Ringer's Lactate = most physiological | Normal Saline = most common"))
story.append(PageBreak())
# โโโ SECTION 9: TYPES OF ADMISSION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("9. TYPES OF HOSPITAL ADMISSION"))
story.append(sp())
t = make_table(
["Type", "Description", "Example"],
[
["Elective/Planned", "Scheduled in advance", "Surgery planned weeks ahead"],
["Emergency", "Immediate life-threatening", "Road accident, heart attack"],
["Urgent", "Needs care within hours", "Severe infection"],
["Direct Admission", "Doctor refers directly to ward", "From OPD"],
["Transfer", "From another hospital/ward", "ICU to general ward"],
["Voluntary", "Patient decides to come", "Psychiatry"],
["Involuntary", "Against patient's will (legal)", "Mental health law"],
],
col_widths=[4*cm, 6*cm, 7*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Admission Process Steps"))
for i,s in enumerate(["Receive patient warmly","Check admission order/form","Allot bed","Introduce patient to ward","Take nursing history","Physical assessment","Orientation to hospital environment","Document all findings","Inform doctor"],1):
story.append(bul(f"{i}. {s}"))
story.append(PageBreak())
# โโโ SECTION 10: FLUID & ELECTROLYTE BALANCE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("10. FACTORS AFFECTING FLUID & ELECTROLYTE BALANCE"))
story.append(sp())
story.append(h2("Body Fluid Basics"))
story.append(bul("Total body water = 60% of body weight in adults"))
story.append(bul("Intracellular fluid (ICF) = 40% of body weight"))
story.append(bul("Extracellular fluid (ECF) = 20% of body weight (Intravascular 5% + Interstitial 15%)"))
story.append(sp())
story.append(h2("Factors Affecting Fluid & Electrolyte Balance"))
t = make_table(
["Factor", "Effect"],
[
["Age", "Infants have higher water % (70โ80%); elderly have less"],
["Gender", "Males have more body water than females"],
["Body fat", "Fat cells have less water; obese people have less % water"],
["Diet", "Poor diet causes electrolyte imbalance"],
["Illness", "Fever, vomiting, diarrhea, burns cause fluid loss"],
["Surgery", "Blood/fluid loss, NPO (nil by mouth)"],
["Medications", "Diuretics increase fluid loss; steroids cause retention"],
["Climate/Temperature", "Hot climate โ excessive sweating โ fluid loss"],
["Stress", "Hormonal changes affect fluid balance"],
["Kidney function", "Controls excretion of water and electrolytes"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Key Electrolytes"))
t = make_table(
["Electrolyte", "Normal Range", "Main Function"],
[
["Sodium (Na+)", "135โ145 mEq/L", "Controls ECF volume"],
["Potassium (K+)", "3.5โ5.0 mEq/L", "Controls ICF, heart rhythm"],
["Calcium (Ca++)", "8.5โ10.5 mg/dL", "Bones, muscle contraction"],
["Chloride (Cl-)", "96โ106 mEq/L", "Acid-base balance"],
],
col_widths=[5*cm, 5*cm, 7*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 11: TYPES OF POSITIONS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("11. TYPES OF PATIENT POSITIONS"))
story.append(sp())
t = make_table(
["Position", "Description", "Used For"],
[
["Supine (Dorsal recumbent)", "Lying flat on back", "General examination, post-op"],
["Prone", "Lying face down", "Back surgery, unconscious airway management"],
["Lateral (Side-lying / Sims')", "On side", "Enema, rectal exam, unconscious patients"],
["Fowler's", "Head raised 45โ60ยฐ", "Breathing difficulty, feeding, NG tube"],
["Semi-Fowler's", "Head raised 30โ45ยฐ", "Post-op, cardiac patients"],
["High Fowler's", "Head raised 90ยฐ", "Severe dyspnoea"],
["Trendelenburg", "Head down, feet up", "Shock, hypotension"],
["Reverse Trendelenburg", "Head up, feet down", "Head injury, GERD"],
["Lithotomy", "On back, legs in stirrups", "Gynaecological/urological procedures"],
["Knee-chest (Genupectoral)", "On knees and chest", "Rectal, vaginal examination"],
["Orthopnoeic (Tripod)", "Leaning forward on arms", "Severe COPD, breathing difficulty"],
],
col_widths=[5*cm, 5*cm, 7*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 12: ANEMIA โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("12. ANEMIA"))
story.append(sp())
story.append(h2("Definition"))
story.append(bp("<b>Anemia is a condition in which the number of RBCs or the hemoglobin concentration is lower than normal, resulting in reduced oxygen-carrying capacity of the blood.</b>"))
story.append(sp())
story.append(h2("Normal Hemoglobin Values"))
t = make_table(
["Group", "Normal Hb"],
[
["Adult Male", "13.5โ17.5 g/dL"],
["Adult Female", "12.0โ15.5 g/dL"],
["Pregnant woman", ">11 g/dL"],
["Child", "11โ16 g/dL"],
],
col_widths=[8*cm, 9*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Types of Anemia โ By Cause"))
t = make_table(
["Type", "Cause", "Example"],
[
["Deficiency", "Nutritional lack", "Iron deficiency, B12 deficiency, Folic acid deficiency"],
["Hemolytic", "RBC destruction", "Sickle cell, Thalassemia, G6PD"],
["Aplastic", "Bone marrow failure", "Radiation, drugs, autoimmune"],
["Blood loss", "Acute or chronic bleeding", "Surgery, GI bleeding"],
],
col_widths=[4*cm, 5*cm, 8*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Types by RBC Size (Morphology)"))
t = make_table(
["Type", "MCV", "Cause"],
[
["Microcytic (small RBC)", "<80 fL", "Iron deficiency, Thalassemia"],
["Normocytic (normal RBC)", "80โ100 fL", "Aplastic anemia, acute blood loss"],
["Macrocytic (large RBC)", ">100 fL", "B12/Folate deficiency"],
],
col_widths=[6*cm, 4*cm, 7*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Signs & Symptoms"))
for s in ["Pallor (pale skin, conjunctiva, nail beds)","Fatigue, weakness","Dyspnoea (shortness of breath)","Tachycardia (fast heart rate)","Headache, dizziness","Koilonychia (spoon-shaped nails) โ iron deficiency","Jaundice โ in hemolytic anemia"]:
story.append(bul(s))
story.append(PageBreak())
# โโโ SECTION 13: CARDIAC MONITOR โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("13. CARDIAC MONITOR โ USES"))
story.append(sp())
story.append(bp("A cardiac monitor continuously displays the electrical activity of the heart. Used in ICU, CCU, OT, Emergency, post-operative wards."))
story.append(sp())
story.append(h2("Uses"))
for s in ["Continuous ECG monitoring โ detects arrhythmias","Monitor heart rate continuously","Blood pressure monitoring (NIBP cuff)","SpO2 (oxygen saturation) monitoring","Respiratory rate monitoring","Temperature monitoring","Detection of critical events โ alarm system"]:
story.append(bul(s))
story.append(sp())
story.append(h2("ECG Waves to Know"))
t = make_table(
["Wave", "Meaning"],
[
["P wave", "Atrial depolarization"],
["QRS complex", "Ventricular depolarization"],
["T wave", "Ventrogluteal repolarization"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 14: THERMOMETER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("14. THERMOMETER โ TYPES & USES"))
story.append(sp())
t = make_table(
["Type", "How it works", "Used For"],
[
["Mercury (Clinical)", "Mercury expands with heat", "Oral, rectal, axillary"],
["Digital", "Electronic sensor", "All routes โ accurate, fast"],
["Infrared Tympanic", "Detects ear canal heat", "Quick reading, children (1 second)"],
["Temporal Artery", "Scans forehead", "Screening, non-contact"],
["Disposable", "Chemical dots change color", "Single-use, infection control"],
],
col_widths=[4.5*cm, 5*cm, 7.5*cm]
)
story.append(t)
story.append(sp())
story.append(note("Mercury thermometers are now banned in many hospitals (environmental hazard). Digital/infrared preferred."))
story.append(note("Axillary temperature = 0.5ยฐF LOWER than oral. Rectal = 0.5ยฐF HIGHER than oral."))
story.append(PageBreak())
# โโโ SECTION 15: GENERAL MACHINES โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("15. GENERAL MACHINES & THEIR USES"))
story.append(sp())
t = make_table(
["Machine", "Use"],
[
["BP Apparatus (Sphygmomanometer)", "Measures blood pressure"],
["Stethoscope", "Listens to heart, lung, bowel sounds"],
["Pulse Oximeter", "Measures SpO2 and pulse rate"],
["ECG Machine", "Records heart's electrical activity"],
["Cardiac Monitor", "Continuous ECG, BP, SpO2 monitoring"],
["Glucometer", "Measures blood glucose (sugar) level"],
["Thermometer", "Measures body temperature"],
["Weighing Scale", "Measures body weight"],
["Nebulizer", "Delivers medicine as mist to lungs"],
["Suction Machine", "Removes secretions from airway"],
["Infusion Pump", "Controls IV fluid/drug delivery rate"],
["Oxygen Cylinder + Flowmeter", "Delivers supplemental oxygen"],
["Ventilator", "Mechanical breathing support"],
["Defibrillator", "Restores normal heart rhythm (cardiac arrest)"],
["Urometer", "Measures urine output accurately"],
["Ambu Bag (BVM)", "Manual ventilation in emergencies"],
],
col_widths=[7*cm, 10*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 16: JAUNDICE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("16. JAUNDICE"))
story.append(sp())
story.append(h2("Definition"))
story.append(bp("<b>Jaundice is a yellowish discoloration of the skin, sclera (whites of eyes), and mucous membranes caused by increased bilirubin levels in the blood (hyperbilirubinemia).</b>"))
story.append(bul("Normal bilirubin: 0.3โ1.0 mg/dL"))
story.append(bul("Jaundice visible when bilirubin: >2โ3 mg/dL"))
story.append(sp())
story.append(h2("3 Types of Jaundice"))
t = make_table(
["Type", "Also Called", "Cause", "Bilirubin"],
[
["Pre-hepatic", "Hemolytic jaundice", "RBC destruction โ too much bilirubin produced", "Unconjugated โ"],
["Hepatic", "Hepatocellular jaundice", "Liver cell damage (hepatitis, cirrhosis)", "Both โ"],
["Post-hepatic", "Obstructive/Cholestatic", "Bile duct blocked (gallstone, tumor)", "Conjugated โ"],
],
col_widths=[3.5*cm, 4*cm, 6*cm, 3.5*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Clinical Features"))
for s in ["Yellow skin and eyes (icterus)","Dark urine (tea-colored)","Pale/clay-colored stools (obstructive jaundice)","Itching (pruritus) โ in obstructive","Fatigue, nausea","In newborns โ physiological jaundice (normal in first week)"]:
story.append(bul(s))
story.append(sp())
story.append(h2("Nursing Care"))
for s in ["Monitor skin color, urine and stool color","Check bilirubin levels โ Liver Function Tests (LFT)","Low fat diet, adequate hydration","Newborn jaundice: Phototherapy (blue light)","Educate about avoiding alcohol"]:
story.append(bul(s))
story.append(PageBreak())
# โโโ SECTION 17: FEVER FIRST TREATMENT โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("17. FIRST TREATMENT OF FEVER"))
story.append(sp())
story.append(h2("Definition & Grades"))
t = make_table(
["Grade", "Temperature"],
[
["Low grade", "37.2โ38ยฐC"],
["Moderate", "38โ39ยฐC"],
["High grade", "39โ40ยฐC"],
["Hyperpyrexia", ">40ยฐC"],
["Hypothermia", "<35ยฐC"],
],
col_widths=[7*cm, 10*cm]
)
story.append(t)
story.append(sp())
story.append(h2("First Nursing Treatment (Priority Order)"))
story.append(bul("1. ASSESS โ Take temperature, check vital signs, note onset and pattern"))
story.append(bul("2. Remove EXCESS CLOTHING and blankets"))
story.append(bul("3. TEPID SPONGING (lukewarm water โ NOT cold, causes shivering) โ sponge forehead, axilla, groin"))
story.append(bul("4. Apply cool/ice compress to forehead"))
story.append(bul("5. Increase AIR CIRCULATION (fan)"))
story.append(bul("6. Encourage FLUIDS (prevents dehydration โ at least 2โ3 litres/day)"))
story.append(bul("7. ANTIPYRETICS as ordered: Paracetamol (first choice). Aspirin โ NOT in children (Reye's syndrome risk)"))
story.append(bul("8. MONITOR vital signs every 1โ4 hours, Intake & Output"))
story.append(bul("9. Watch for FEBRILE CONVULSIONS (especially in children)"))
story.append(bul("10. TREAT THE CAUSE โ blood cultures, urine culture, antibiotics if bacterial"))
story.append(note("Report immediately if temperature >40ยฐC or persisting despite treatment."))
story.append(PageBreak())
# โโโ SECTION 18: PPE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("18. PERSONAL PROTECTIVE EQUIPMENT (PPE)"))
story.append(sp())
story.append(bp("<b>Definition:</b> PPE is specialized clothing or equipment worn by healthcare workers for protection against infectious material, chemical, or physical hazards."))
story.append(sp())
t = make_table(
["PPE Item", "Protects Against", "Used When"],
[
["Gloves", "Blood, body fluids on hands", "Any patient contact"],
["Surgical Mask", "Droplets, splashes", "Droplet precautions"],
["N95 Respirator", "Airborne particles", "TB, COVID, measles"],
["Face Shield / Goggles", "Splashes to eyes", "Procedures with splash risk"],
["Gown / Apron", "Contamination of clothes", "Contact precautions"],
["Hair Cover (Cap)", "Contamination of hair", "Surgery, sterile procedures"],
["Shoe Cover (Boot cover)", "Contamination of shoes", "OT, ICU, isolation rooms"],
["Full Body Suit (Coverall)", "Total body protection", "Ebola, hazmat situations"],
],
col_widths=[4.5*cm, 5.5*cm, 7*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Donning Order (PUT ON) โ Clean to Less Clean"))
story.append(bul("1. Hand hygiene 2. Gown 3. Mask/Respirator 4. Goggles/Face shield 5. Gloves (LAST)"))
story.append(sp())
story.append(h2("Doffing Order (REMOVE) โ Most Contaminated First"))
story.append(bul("1. Gloves 2. Goggles/Face shield 3. Gown 4. Mask 5. Hand hygiene (ALWAYS LAST)"))
story.append(note("Memory: G-G-G-M-H = Gloves โ Goggles โ Gown โ Mask โ Hand hygiene"))
story.append(PageBreak())
# โโโ SECTION 19: DAILY WATER INTAKE + POST-SURGERY PATIENT โโโโโโโโโโโโโโโโโโโ
story.append(h1("19. DAILY WATER INTAKE"))
story.append(sp())
t = make_table(
["Person", "Daily Water Need"],
[
["Normal adult", "2000โ2500 mL/day (2โ2.5 litres)"],
["Active adult / hot climate", "Up to 3000 mL/day"],
["Child", "1000โ1500 mL/day"],
],
col_widths=[7*cm, 10*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Daily Fluid Balance"))
story.append(bp("<b>Input (~2500 mL):</b> Oral fluids ~1500 mL + Water in food ~700 mL + Metabolic water ~300 mL"))
story.append(bp("<b>Output (~2500 mL):</b> Urine ~1500 mL + Stool ~200 mL + Perspiration ~500 mL + Breathing ~300 mL"))
story.append(note("Normal urine output = 1โ1.5 L/day = minimum 30 mL/hour"))
story.append(sp())
story.append(h1("20. PATIENT AFTER SURGERY 10 YEARS โ WHAT WILL YOU ASK?"))
story.append(sp())
story.append(bp("This is a nursing history/assessment scenario. Use SAMPLE history:"))
story.append(note("S โ Signs & Symptoms | A โ Allergies | M โ Medications | P โ Past history | L โ Last meal | E โ Events leading to current visit"))
story.append(sp())
story.append(h2("Questions to Ask"))
story.append(bul("What surgery was done? When and where?"))
story.append(bul("Why was surgery done? (original diagnosis)"))
story.append(bul("Any complications after surgery? Any hospital readmissions?"))
story.append(bul("Current complaint โ what is the problem now?"))
story.append(bul("When did it start? Pain โ location, type, severity (1โ10 scale)?"))
story.append(bul("Any swelling or discharge from surgical site?"))
story.append(bul("Other diseases: Diabetes, Hypertension, Heart disease?"))
story.append(bul("Medications currently taking? Any allergies?"))
story.append(bul("Functional assessment: daily activities, diet, sleep, elimination"))
story.append(bul("Emotional status โ anxiety, depression? Family support?"))
story.append(bul("Vital signs: Temperature, Pulse, BP, Respiration, SpO2"))
story.append(PageBreak())
# โโโ SECTION 20: NEEDLE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("21. NEEDLE (HYPODERMIC NEEDLE)"))
story.append(sp())
story.append(h2("Parts of a Needle"))
t = make_table(
["Part", "Description"],
[
["Bevel", "Slanted sharp tip โ cuts into tissue"],
["Shaft", "Long hollow body"],
["Hub", "Connects to syringe (usually colored)"],
["Lumen", "Hollow inside channel"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Needle Gauge & Size Chart"))
t = make_table(
["Gauge", "Color", "Use"],
[
["18G", "Pink", "Blood transfusion, thick fluids"],
["20G", "Yellow", "IV fluids, blood collection"],
["21G", "Green", "General IV, blood collection"],
["22G", "Blue/Black", "Adults โ IM injection"],
["23G", "Blue", "Children โ IM injection"],
["24G", "Yellow", "Infants, fragile veins"],
["25G", "Orange", "Intradermal, subcutaneous"],
["26G", "Brown", "Insulin injection"],
],
col_widths=[3*cm, 4*cm, 10*cm]
)
story.append(t)
story.append(note("Higher gauge number = THINNER needle. Lower gauge = THICKER needle."))
story.append(sp())
story.append(h2("Injection Routes & Angles"))
t = make_table(
["Route", "Angle", "Needle Length", "Volume"],
[
["Intradermal (ID)", "5โ15ยฐ", "Short (3/8\")", "0.1โ0.5 mL"],
["Subcutaneous (SC)", "45ยฐ", "5/8\"", "0.5โ1 mL"],
["Intramuscular (IM)", "90ยฐ", "1โ1.5\"", "Up to 5 mL"],
["Intravenous (IV)", "15โ25ยฐ", "Variable", "As ordered"],
],
col_widths=[5*cm, 3*cm, 4*cm, 5*cm]
)
story.append(t)
story.append(note("NEVER recap needle with two hands. Dispose in YELLOW sharps container. Never bend or break by hand."))
story.append(PageBreak())
# โโโ SECTION 21: STETHOSCOPE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("22. STETHOSCOPE"))
story.append(sp())
story.append(h2("Parts & Functions"))
t = make_table(
["Part", "Function"],
[
["Earpieces (Ear tips)", "Fit into ears โ angled forward"],
["Ear tubes (Binaurals)", "Metal tubes connecting to chest piece"],
["Tubing", "Flexible rubber tube transmitting sound"],
["Diaphragm (flat side)", "Listens to HIGH-pitched sounds (breath, normal heart sounds, bowel sounds)"],
["Bell (cup side)", "Listens to LOW-pitched sounds (murmurs, S3, S4 heart sounds)"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Uses"))
for s in ["Heart sounds โ S1 (lub), S2 (dub)","Lung/breath sounds โ normal, wheezing, crackles, rhonchi","Blood pressure measurement โ listen for Korotkoff sounds","Bowel sounds โ intestinal activity","Carotid/femoral bruits"]:
story.append(bul(s))
story.append(sp())
story.append(h2("Korotkoff Sounds (for BP)"))
t = make_table(
["Phase", "Sound", "Reading"],
[
["Phase 1", "First tapping sound", "= SYSTOLIC BP"],
["Phase 2โ4", "Muffled sounds", "โ"],
["Phase 5", "Sound disappears", "= DIASTOLIC BP"],
],
col_widths=[4*cm, 6*cm, 7*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ SECTION 22: SPHYGMOMANOMETER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("23. SPHYGMOMANOMETER (BP APPARATUS)"))
story.append(sp())
story.append(h2("Types"))
t = make_table(
["Type", "Description", "Accuracy"],
[
["Mercury", "Uses mercury column", "Most accurate (gold standard) โ now banned in many places"],
["Aneroid", "Dial gauge with needle", "Portable, common in wards"],
["Digital (Electronic)", "Automatic, digital display", "Easy to use, for home/screening"],
],
col_widths=[4*cm, 5*cm, 8*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Parts"))
t = make_table(
["Part", "Function"],
[
["Manometer", "Measures pressure (mmHg)"],
["Cuff (Bladder)", "Inflatable bag that compresses artery"],
["Velcro/clips", "Holds cuff in place"],
["Bulb (Pump)", "Inflates the cuff"],
["Control valve/Screw", "Controls air release speed"],
["Tubing", "Connects cuff to manometer"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(note("Too small cuff = falsely HIGH reading. Too large cuff = falsely LOW reading."))
story.append(sp())
story.append(h2("Steps to Measure BP"))
for i,s in enumerate(["Patient seated/supine, rest 5 min","Bare arm at heart level","Wrap cuff 2โ3 cm above antecubital fossa","Palpate radial pulse, inflate to 30 mmHg above where pulse disappears","Place stethoscope on BRACHIAL ARTERY","Deflate slowly (2โ3 mmHg/sec)","FIRST SOUND = Systolic BP; SOUND DISAPPEARS = Diastolic BP","Record: e.g., 120/80 mmHg, which arm, position"],1):
story.append(bul(f"{i}. {s}"))
story.append(PageBreak())
# โโโ SECTION 23: ORS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("24. ORS (ORAL REHYDRATION SOLUTION)"))
story.append(sp())
story.append(h2("WHO ORS Composition (per litre)"))
t = make_table(
["Component", "Amount"],
[
["Sodium chloride (NaCl)", "2.6 g"],
["Glucose (Dextrose)", "13.5 g"],
["Potassium chloride (KCl)", "1.5 g"],
["Trisodium citrate", "2.9 g"],
["Water", "1 litre"],
["Osmolarity", "245 mOsm/L (low osmolarity ORS)"],
],
col_widths=[8*cm, 9*cm]
)
story.append(t)
story.append(sp())
story.append(note("Homemade ORS: 1 litre clean water + 6 teaspoons sugar + ยฝ teaspoon salt"))
story.append(sp())
story.append(h2("Uses"))
for s in ["Dehydration from diarrhea and vomiting","Cholera management","Heat exhaustion","Post-exercise rehydration","Children with acute gastroenteritis"]:
story.append(bul(s))
story.append(sp())
story.append(h2("Administration"))
story.append(bul("Small, frequent sips โ not large amounts at once"))
story.append(bul("Adults: 200โ400 mL after each loose stool"))
story.append(bul("Children: 50โ100 mL after each loose stool"))
story.append(bul("Continue until diarrhea stops"))
story.append(PageBreak())
# โโโ SECTION 24: AMBU BAG โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("25. AMBU BAG (BVM โ BAG VALVE MASK)"))
story.append(sp())
story.append(bp("<b>BVM = Bag-Valve-Mask.</b> A self-inflating resuscitation device used for MANUAL ARTIFICIAL VENTILATION in emergencies."))
story.append(sp())
story.append(h2("Parts"))
t = make_table(
["Part", "Function"],
[
["Face Mask", "Seals over patient's mouth and nose"],
["Self-inflating Bag", "Squeezed to deliver breath"],
["One-way Valve", "Prevents exhaled air re-entering bag"],
["Oxygen inlet", "Connects to oxygen supply"],
["Reservoir bag", "Stores oxygen for 100% O2 delivery"],
["Pressure relief valve", "Prevents over-inflation of lungs"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Uses"))
for s in ["Cardiac/respiratory arrest โ before intubation","Apnoea (stopped breathing)","Conscious sedation procedures","Transport of ventilated patients","Pre-oxygenation before intubation"]:
story.append(bul(s))
story.append(sp())
story.append(h2("EC Clamp Technique"))
story.append(bul("E fingers = 3 fingers hold jaw upward (open airway)"))
story.append(bul("C fingers = thumb and index finger hold mask to face"))
story.append(bul("Squeeze bag with other hand โ one breath every 5โ6 seconds"))
story.append(bul("Adult tidal volume: 500โ600 mL (squeeze bag one-third to one-half)"))
story.append(note("Without O2 supply = delivers 21% O2. With oxygen reservoir = delivers 90โ100% O2."))
story.append(PageBreak())
# โโโ SECTION 25: UROBAG โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("26. UROBAG (URINARY DRAINAGE BAG)"))
story.append(sp())
story.append(h2("Parts"))
t = make_table(
["Part", "Function"],
[
["Collection bag", "Stores urine"],
["Drainage tube", "Connects catheter to bag"],
["Anti-reflux valve", "Prevents urine flowing back (prevents UTI)"],
["Drainage port (tap)", "Empties the bag"],
["Hanger hook", "Hangs bag on bed frame"],
["Measurement scale", "Measures urine output in mL"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Types"))
t = make_table(
["Type", "Capacity", "Used For"],
[
["Leg bag", "500 mL", "Ambulant patients (attach to leg)"],
["Bedside/Night bag", "2000 mL", "Bed-ridden patients"],
["Urometer", "500 mL with hourly measurement", "ICU/critical care accurate monitoring"],
],
col_widths=[4*cm, 4*cm, 9*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Nursing Care โ CAUTI Prevention"))
for s in ["Always keep bag BELOW bladder level (prevents backflow)","Never let bag touch floor","Empty when 2/3 full or every 8 hours","Maintain CLOSED drainage system","Secure catheter to inner thigh to prevent pulling","Daily perineal care","Document urine color, amount, odor"]:
story.append(bul(s))
story.append(PageBreak())
# โโโ SECTION 26: IV SET โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("27. IV SET (INTRAVENOUS INFUSION SET)"))
story.append(sp())
story.append(h2("Types"))
t = make_table(
["Type", "Drop Factor", "Use"],
[
["Macro drip set", "15 or 20 drops/mL", "Routine IV fluids"],
["Micro drip set (Burette)", "60 drops/mL", "Precise dosing, children, critical drugs"],
["Blood transfusion set", "15 drops/mL with filter", "Blood/blood products"],
],
col_widths=[5*cm, 4.5*cm, 7.5*cm]
)
story.append(t)
story.append(sp())
story.append(h2("Parts of IV Set"))
t = make_table(
["Part", "Function"],
[
["Spike/Piercing pin", "Inserted into IV bottle/bag"],
["Drip chamber", "Count drops to calculate flow rate"],
["Roller clamp", "Controls flow rate"],
["Tubing", "Carries fluid"],
["Injection port (Y-site)", "For adding drugs to line"],
["Needle adapter/Luer lock", "Connects to cannula"],
["Filter (in blood sets)", "Removes clots/debris"],
["Air vent (glass bottle sets)", "Allows air in"],
],
col_widths=[5.5*cm, 11.5*cm]
)
story.append(t)
story.append(sp())
story.append(imp("Flow Rate Formula: Drops per minute = (Volume in mL ร Drop factor) รท Time in minutes"))
story.append(note("Example: 500 mL over 4 hours, drop factor 20 = (500ร20)รท(4ร60) = 41โ42 drops/min"))
story.append(PageBreak())
# โโโ SECTION 27: CANNULA โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("28. CANNULA (IV CANNULA / PERIPHERAL IV CATHETER)"))
story.append(sp())
story.append(h2("Color Code & Gauge"))
t = make_table(
["Color", "Gauge", "Flow Rate", "Use"],
[
["Orange", "14G", "Fastest", "Major trauma, surgery"],
["Grey", "16G", "Very fast", "Blood transfusion, surgery"],
["Green", "18G", "Fast", "Blood transfusion, rapid fluids"],
["Pink", "20G", "Moderate", "Standard IV fluids"],
["Blue", "22G", "Slow", "Children, elderly, fragile veins"],
["Yellow", "24G", "Slowest", "Neonates, very fragile veins"],
],
col_widths=[3*cm, 3*cm, 3.5*cm, 7.5*cm]
)
story.append(t)
story.append(note("Wider pipe (lower gauge) = faster flow. Higher gauge = thinner needle."))
story.append(sp())
story.append(h2("Insertion Steps"))
for i,s in enumerate(["Explain procedure to patient","Hand hygiene, wear gloves","Select site, apply tourniquet 10โ15 cm above site","Clean skin with alcohol swab (70%) โ circular motion, dry 30 sec","Insert cannula at 15โ30ยฐ angle, bevel up","Watch for BLOOD FLASHBACK in chamber","Advance catheter, withdraw stylet","Release tourniquet","Secure with transparent dressing/tape","Flush with normal saline to confirm patency","Document โ site, gauge, date, time"],1):
story.append(bul(f"{i}. {s}"))
story.append(sp())
story.append(h2("Complications"))
story.append(bul("Infiltration โ fluid into tissues (swelling, pain)"))
story.append(bul("Phlebitis โ vein inflammation (redness, warmth along vein)"))
story.append(bul("Infection โ change site every 72โ96 hours"))
story.append(PageBreak())
# โโโ SECTION 28: BETADINE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("29. BETADINE (POVIDONE-IODINE)"))
story.append(sp())
story.append(bp("<b>Contains 10% Povidone-Iodine.</b> Dark brown/amber colored antiseptic solution. Releases free iodine which kills bacteria, fungi, viruses, spores, protozoa."))
story.append(sp())
story.append(h2("Uses in Nursing"))
t = make_table(
["Use", "Form", "How Used"],
[
["Wound cleaning", "10% solution", "Clean wounds, ulcers"],
["Pre-surgical skin prep", "Scrub + solution", "Applied before surgery"],
["Surgical hand scrub", "Scrub (7.5%)", "3โ5 minute scrub"],
["Catheter care", "Diluted solution", "Perineal cleaning"],
["Throat gargle", "Diluted (1%)", "Throat infections"],
["Wound dressing", "Ointment", "Minor wounds"],
],
col_widths=[5*cm, 4*cm, 8*cm]
)
story.append(t)
story.append(sp())
story.append(note("Do NOT use on thyroid patients โ iodine absorbed systemically. Check for iodine allergy before use. Mercury thermometers banned; similarly povidone is safer than Tincture of Iodine."))
story.append(PageBreak())
# โโโ SECTION 29: SURGICAL INSTRUMENTS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("30. GENERAL SURGICAL INSTRUMENTS โ IDENTIFICATION"))
story.append(sp())
t = make_table(
["Instrument", "Identification", "Use"],
[
["Scalpel (Surgical knife)", "Handle with detachable blade; blade has sharp edge", "Cutting tissue, making incisions"],
["Scissors (Metzenbaum)", "Long, fine, curved scissors", "Dissecting delicate tissue"],
["Scissors (Mayo)", "Heavier, curved or straight", "Cutting tough tissue, sutures"],
["Tissue Forceps", "Toothed or non-toothed, tweezer-like", "Holding tissue"],
["Artery Forceps (Hemostat/Spencer Wells)", "Locking clamp (ratchet), curved or straight", "Clamping blood vessels to stop bleeding"],
["Needle Holder (Driver)", "Looks like scissors but blunt ends with groove", "Holding suture needle during stitching"],
["Retractor (Langenbeck)", "L-shaped or hook-shaped flat blade", "Holding wound edges open"],
["Towel Clip", "Spring-loaded clip with sharp teeth", "Holding surgical drapes in position"],
["Sponge Holding Forceps", "Long, ring-handled, oval ring at end", "Holding swabs for cleaning surgical site"],
["Probe", "Long thin blunt-ended rod", "Exploring wound depth, sinus tracts"],
["Kocher's Forceps", "Tooth at tip, heavy", "Holding tough tissue"],
["Allis Forceps", "Multiple interlocking teeth", "Grasping tough tissue (fascia)"],
],
col_widths=[4.5*cm, 5.5*cm, 7*cm]
)
story.append(t)
story.append(sp())
story.append(note("Key identification tips: RATCHET (locking) = artery forceps, needle holder, towel clips | TEETH at tip = tissue forceps, Allis, Kocher | RING handles = scissors, needle holder, forceps"))
story.append(PageBreak())
# โโโ SECTION 30: CAPELINE BANDAGE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("31. CAPELINE BANDAGE โ PROCEDURE"))
story.append(sp())
story.append(h2("Definition"))
story.append(bp("<b>A capeline (cap) bandage is a figure-of-8 type bandage applied to cover the HEAD or STUMP completely, resembling a cap.</b>"))
story.append(bul("Also called: Recurrent bandage (stumps), Cap bandage / Calvaria bandage (head)"))
story.append(sp())
story.append(h2("Uses"))
story.append(bul("Head injuries โ to cover scalp wounds, post-neurosurgery"))
story.append(bul("Stump bandaging โ after amputation (finger, toe, limb)"))
story.append(bul("Securing dressings on round/bulgy surfaces"))
story.append(sp())
story.append(h2("Articles Required"))
story.append(bul("2 bandage rolls (8 cm width for head)"))
story.append(bul("Safety pins or clips"))
story.append(bul("Scissors"))
story.append(bul("Dressing tray (if wound underneath)"))
story.append(sp())
story.append(h2("PROCEDURE โ Capeline Bandage for HEAD"))
steps_cap = [
("Step 1 โ Preparation", "Explain procedure to patient. Position: sitting or supine. Perform hand hygiene, wear gloves if wound present."),
("Step 2 โ First Anchor Turn", "Start with a CIRCULAR ANCHOR TURN around the forehead and back of head (just above eyebrows and ears). Make 2 anchor turns to secure."),
("Step 3 โ First Longitudinal Strip", "From the front anchor turn, bring bandage OVER THE TOP OF THE HEAD (sagittal direction) to the back. Hold with one finger or assistant holds."),
("Step 4 โ Locking Turn", "Make a CIRCULAR LOCKING TURN at the back of the head. Come back over the top to the front โ slightly overlapping the first strip."),
("Step 5 โ Continue Alternating", "Alternate between LONGITUDINAL STRIPS over the crown and CIRCULAR LOCKING TURNS at the sides. Each longitudinal strip overlaps the previous by half its width. Cover progressively from center to sides."),
("Step 6 โ Covering the Sides", "Continue until entire scalp/top of head is covered. Each circular turn locks the longitudinal strips."),
("Step 7 โ Final Anchor", "End with 2โ3 CIRCULAR TURNS around the forehead/head. Secure with safety pin, clip, or tape (NEVER on wound)."),
]
t = make_table(
["Step", "Action"],
steps_cap,
col_widths=[4.5*cm, 12.5*cm]
)
story.append(t)
story.append(sp())
story.append(h2("PROCEDURE โ Capeline Bandage for FINGER/STUMP (Recurrent)"))
for s in [
"Anchor turn around wrist/proximal part of stump",
"Bring bandage forward over the TIP of the finger/stump โ this is the RECURRENT TURN",
"Bring back to anchor point",
"Repeat โ each recurrent turn overlaps the previous by half width",
"Once tip is covered with recurrent turns, lock with SPIRAL TURNS from tip toward base",
"Secure with tape/pin"
]:
story.append(bul(s))
story.append(sp())
story.append(h2("Principles of Good Bandaging"))
t = make_table(
["Principle", "Detail"],
[
["Direction", "Work from DISTAL to PROXIMAL (tip to base)"],
["Overlap", "Each turn should overlap previous by 1/3 to 1/2"],
["Pressure", "Even, firm pressure โ not too tight (cuts circulation), not too loose (falls off)"],
["Exposed tips", "Leave fingertips/toes EXPOSED to check circulation"],
["Securing ends", "Pin, clip, or tape โ NEVER on wound or bony prominence"],
["5 P's check", "Pain, Pallor, Pulselessness, Paraesthesia, Paralysis โ signs of too-tight bandage"],
],
col_widths=[5*cm, 12*cm]
)
story.append(t)
story.append(PageBreak())
# โโโ FINAL QUICK REFERENCE TABLE โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(h1("MASTER QUICK REFERENCE โ ALL KEY VALUES"))
story.append(sp())
t = make_table(
["Topic", "Key Answer"],
[
["Polyuria definition", "Urine >2.5 L/day"],
["Most common cause of polyuria", "Diabetes Mellitus (glucosuria)"],
["WHO definition of health", "Complete physical, mental, social well-being"],
["Normal Pulse", "60โ100 bpm"],
["Normal BP", "120/80 mmHg"],
["Normal SpO2", "95โ100%"],
["Normal Breathing", "12โ20/min"],
["Normal Temp (oral)", "98.6ยฐF / 37ยฐC"],
["Daily water intake", "2000โ2500 mL"],
["Normal urine output", "1500 mL/day / 30 mL/hour minimum"],
["Anemia Hb in women", "<12 g/dL"],
["Anemia Hb in men", "<13.5 g/dL"],
["Jaundice visible at bilirubin", ">2โ3 mg/dL"],
["Fever definition", ">37.2ยฐC oral"],
["Hyperpyrexia", ">40ยฐC"],
["Medical hand wash time", "40โ60 seconds"],
["Surgical scrub time", "3โ5 minutes"],
["PPE doffing: first item", "Gloves (most contaminated)"],
["PPE doffing: last action", "Hand hygiene"],
["Pulse sites total", "9 sites โ Radial most common"],
["Isotonic IV fluid examples", "Normal Saline 0.9%, Ringer's Lactate, 5% Dextrose"],
["IV drip macro set drop factor", "20 drops/mL"],
["IV drip micro set drop factor", "60 drops/mL"],
["Cannula โ widest/fastest", "Orange 14G"],
["Cannula โ standard adult", "Pink 20G"],
["Betadine composition", "10% Povidone-Iodine"],
["Ambu bag tidal volume (adult)", "500โ600 mL"],
["Urobag โ when to empty", "When 2/3 full or every 8 hours"],
["5th Vital Sign", "Pain"],
["Nursing process acronym", "ADPIE โ Assess, Diagnose, Plan, Implement, Evaluate"],
],
col_widths=[8*cm, 9*cm]
)
story.append(t)
story.append(sp(2))
story.append(Paragraph("All the best for your Viva tomorrow! You are well prepared! ๐ช", subtitle_style))
# Build PDF
doc.build(story)
print(f"PDF created: {OUTPUT}")