Make a power point presentation on this topic
mkdir -p /tmp/workspace/nicu-pptx && ls /tmp/workspace/nicu-pptx/
~/nicu-pptx/build_pptx.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.oxml.ns import qn
from lxml import etree
from io import BytesIO
# ── Color palette ──────────────────────────────────────────────────────────
NAVY = RGBColor(0x0A, 0x2E, 0x5A) # deep navy
TEAL = RGBColor(0x00, 0x7E, 0x8A) # accent teal
LIGHTBLUE = RGBColor(0xD6, 0xEE, 0xF8) # slide bg light
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TXT = RGBColor(0x1A, 0x1A, 0x2E)
GOLD = RGBColor(0xF0, 0xA5, 0x00)
SOFT_GRAY = RGBColor(0xF0, 0xF4, 0xF8)
MED_GRAY = RGBColor(0x4A, 0x4A, 0x6A)
def new_prs():
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
return prs
def blank_slide(prs):
return prs.slides.add_slide(prs.slide_layouts[6])
def fill_solid(shape, color):
sp = shape.shape_element
spPr = sp.find(qn("p:spPr"))
if spPr is None:
spPr = etree.SubElement(sp, qn("p:spPr"))
for child in list(spPr):
if child.tag in (qn("a:solidFill"), qn("a:gradFill"), qn("a:noFill")):
spPr.remove(child)
solidFill = etree.SubElement(spPr, qn("a:solidFill"))
srgbClr = etree.SubElement(solidFill, qn("a:srgbClr"))
srgbClr.set("val", f"{color[0]:02X}{color[1]:02X}{color[2]:02X}")
def add_rect(slide, x, y, w, h, color):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.line.fill.background()
fill_solid(shape, color)
return shape
def add_text(slide, text, x, y, w, h, font_size=18, bold=False,
color=DARK_TXT, align=PP_ALIGN.LEFT, italic=False, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.name = "Calibri"
run.font.color.rgb = color
return tb
def add_multiline_box(slide, lines, x, y, w, h,
font_size=15, color=DARK_TXT, bullet=True, bg=None, heading=None):
"""lines = list of strings; bullet prepends •"""
if bg:
add_rect(slide, x, y, w, h, bg)
tb = slide.shapes.add_textbox(Inches(x+0.15), Inches(y+0.1),
Inches(w-0.3), Inches(h-0.2))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0
if heading:
p0 = tf.paragraphs[0]
p0.alignment = PP_ALIGN.LEFT
r0 = p0.add_run()
r0.text = heading
r0.font.size = Pt(font_size + 1)
r0.font.bold = True
r0.font.name = "Calibri"
r0.font.color.rgb = NAVY
first = False
else:
first = True
for i, line in enumerate(lines):
if first and i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.alignment = PP_ALIGN.LEFT
r = p.add_run()
r.text = ("• " + line) if bullet else line
r.font.size = Pt(font_size)
r.font.name = "Calibri"
r.font.color.rgb = color
# ═══════════════════════════════════════════════════════════════════════════
prs = new_prs()
# ── SLIDE 1 Title ─────────────────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, NAVY) # full bg
# decorative teal stripe
add_rect(s, 0, 5.6, 13.333, 0.22, TEAL)
add_rect(s, 0, 5.82, 13.333, 0.12, GOLD)
# week tag
add_rect(s, 0.5, 0.4, 2.8, 0.55, TEAL)
add_text(s, "WEEK 3 | NICU NURSING", 0.5, 0.4, 2.8, 0.55,
font_size=11, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# main title
add_text(s,
"Central Lines, PICC Lines\n& Umbilical Catheters",
0.7, 1.2, 11.9, 2.3,
font_size=46, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
# subtitle line 1
add_text(s,
"Nursing Care | Prevention of Device-Associated Infections in NICU",
0.7, 3.5, 11.9, 0.8,
font_size=21, bold=False, color=GOLD, align=PP_ALIGN.LEFT)
# bottom note
add_text(s, "Week 3 • Topics 5 & 6", 0.7, 6.7, 12, 0.55,
font_size=13, color=RGBColor(0xAA, 0xCC, 0xEE), align=PP_ALIGN.LEFT)
# ── SLIDE 2 Overview ──────────────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Session Overview", 0.5, 0.18, 12, 0.85,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
topics = [
("Topic 5", "Central Lines, PICC Lines & Umbilical Catheters: Nursing Care",
[
"Types: Central lines, PICC lines, Umbilical arterial/venous catheters",
"Indications and insertion sites in neonates",
"Nursing assessment and ongoing care",
"Dressing changes and line management",
"Monitoring for complications",
]),
("Topic 6", "Prevention of Device-Associated Infections in NICU",
[
"CLABSI: definition, burden, and risk factors",
"Evidence-based prevention bundles",
"Hand hygiene and aseptic technique",
"VAP & CAUTI prevention in NICU",
"Surveillance and quality improvement",
]),
]
for i, (tag, title, pts) in enumerate(topics):
x = 0.45 + i * 6.45
add_rect(s, x, 1.45, 6.1, 5.6, WHITE)
add_rect(s, x, 1.45, 6.1, 0.5, TEAL if i==0 else NAVY)
add_text(s, tag, x+0.15, 1.45, 1.2, 0.5,
font_size=14, bold=True, color=WHITE)
add_text(s, title, x+0.15, 2.05, 5.8, 0.75,
font_size=14, bold=True, color=NAVY)
add_multiline_box(s, pts, x+0.05, 2.85, 5.9, 4.0,
font_size=13, color=MED_GRAY)
# ── SLIDE 3 Types of Lines ────────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Types of Vascular Access in NICU", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
cards = [
("Central Venous\nCatheter (CVC)", NAVY,
["Placed in large central veins (SVC, IVC)",
"Sites: subclavian, internal jugular, femoral",
"Multi-lumen available",
"Used for TPN, vasoactives, CVP monitoring"]),
("PICC Line", TEAL,
["Peripherally inserted central catheter",
"Inserted via arm/leg peripheral vein → advanced centrally",
"Axillary vein preferred in neonates",
"Lower complication rate vs CVC",
"Confirmed by CXR before use"]),
("Umbilical Arterial\nCatheter (UAC)", RGBColor(0x8B,0x00,0x35),
["Inserted via umbilical artery",
"Used for arterial BP monitoring & blood sampling",
"Tip: T6-T9 (high) or L3-L4 (low)",
"Risk: thromboembolism, infection"]),
("Umbilical Venous\nCatheter (UVC)", RGBColor(0x00,0x5F,0x4B),
["Inserted via umbilical vein",
"Preferred immediate vascular access in resuscitation",
"Tip: above diaphragm at IVC/RA junction",
"Used for TPN, medications, exchange transfusion"]),
]
for i, (title, col, pts) in enumerate(cards):
col_x = 0.35 + i * 3.22
add_rect(s, col_x, 1.4, 3.0, 5.75, WHITE)
add_rect(s, col_x, 1.4, 3.0, 0.65, col)
add_text(s, title, col_x+0.1, 1.4, 2.8, 0.65,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_multiline_box(s, pts, col_x+0.05, 2.1, 2.9, 4.8,
font_size=12, color=MED_GRAY)
# ── SLIDE 4 Nursing Care – Insertion ─────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Nursing Care: Insertion Phase", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
left_items = [
("Pre-Insertion Checklist", TEAL,
["Verify order and consent documentation",
"Confirm indication and appropriateness",
"Gather sterile equipment: drapes, gloves, antiseptic",
"Position neonate optimally; maintain thermoregulation",
"Set up monitoring: SpO2, HR, BP",
"Prepare flush solution (heparinized saline per policy)"]),
("During Insertion", NAVY,
["Maintain strict sterile field",
"Assist with patient positioning and stabilization",
"Monitor vital signs continuously",
"Document time, site, catheter size, tip position",
"Confirm placement by X-ray before use"]),
]
right_items = [
("Post-Insertion Care", RGBColor(0x00,0x5F,0x4B),
["Apply sterile, transparent, occlusive dressing",
"Label dressing with date and time",
"Secure catheter to prevent dislodgement",
"Document in nursing notes and MAR",
"Assess distal perfusion (color, cap refill, pulses)"]),
("PICC-Specific", RGBColor(0x8B,0x00,0x35),
["Measure arm circumference pre/post insertion",
"Upper extremity: immobilize without restricting circulation",
"Axillary approach preferred (lower complication rate)",
"Review CXR: tip at SVC-RA junction"]),
]
for i, (title, col, pts) in enumerate(left_items):
y = 1.4 + i * 2.85
add_rect(s, 0.35, y, 6.0, 2.6, WHITE)
add_rect(s, 0.35, y, 6.0, 0.5, col)
add_text(s, title, 0.5, y, 5.8, 0.5,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_multiline_box(s, pts, 0.35, y+0.55, 5.9, 1.95,
font_size=12, color=MED_GRAY)
for i, (title, col, pts) in enumerate(right_items):
y = 1.4 + i * 2.85
add_rect(s, 6.8, y, 6.15, 2.6, WHITE)
add_rect(s, 6.8, y, 6.15, 0.5, col)
add_text(s, title, 6.95, y, 5.9, 0.5,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_multiline_box(s, pts, 6.8, y+0.55, 6.05, 1.95,
font_size=12, color=MED_GRAY)
# ── SLIDE 5 Ongoing Nursing Care ─────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Ongoing Nursing Assessment & Maintenance", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
ongoing = [
("Daily Assessment", TEAL,
["Assess insertion site: redness, swelling, discharge",
"Check dressing integrity; change per protocol (q7 days for transparent)",
"Inspect catheter length externally – document if migrated",
"Assess extremity distal to line for perfusion signs",
"Review necessity of line daily – remove if no longer needed"]),
("Line Care", NAVY,
["Use aseptic non-touch technique (ANTT) for all access",
"Scrub the hub ≥15 sec with 70% alcohol before each use",
"Flush catheter per protocol (frequency, solution, volume)",
"Change IV tubing q72-96 h; lipid tubing q24 h",
"Use closed needleless connectors and change per policy"]),
("Umbilical Catheter Care", RGBColor(0x8B,0x00,0x35),
["Check for blanching/discoloration of lower extremities (UAC)",
"Do NOT cover umbilical stump with diaper",
"Monitor for oozing or bleeding at umbilical stump",
"Remove UAC by Day 5-7, UVC by Day 10-14 per guideline",
"Assess liver edge (hepatomegaly from UVC malposition)"]),
]
for i, (title, col, pts) in enumerate(ongoing):
x = 0.35 + i * 4.35
add_rect(s, x, 1.4, 4.1, 5.75, WHITE)
add_rect(s, x, 1.4, 4.1, 0.5, col)
add_text(s, title, x+0.12, 1.4, 3.9, 0.5,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_multiline_box(s, pts, x+0.05, 1.95, 4.0, 5.1,
font_size=12.5, color=MED_GRAY)
# ── SLIDE 6 Complications ─────────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Recognizing & Managing Complications", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
comp_data = [
("Infection / CLABSI", "Fever, leukocytosis, glucose instability, lethargy; increased C-reactive protein", "Blood cultures × 2, antibiotics per protocol, consider line removal"),
("Thrombosis / Embolism", "Limb pallor, decreased pulses, mottling; hepatomegaly if UVC", "Doppler U/S, anticoagulation per protocol, remove catheter"),
("Pneumothorax (CVC/PICC)", "Sudden desaturation, decreased breath sounds, hypotension, difficulty ventilating", "Emergent needle decompression, chest X-ray, chest tube if needed"),
("Catheter Malposition", "Arrhythmias, pleural/pericardial effusion, failure to infuse", "CXR to confirm; reposition or remove catheter"),
("Extravasation", "Swelling, blanching, skin necrosis at infusion site", "Stop infusion immediately; aspirate if possible; hyaluronidase per protocol"),
("Hemorrhage", "Blood in dressing, dropping Hct/BP, hemothorax", "Apply pressure, volume replacement, surgical consult as needed"),
]
headers = ["Complication", "Signs & Symptoms", "Nursing Action"]
col_widths = [2.6, 4.8, 5.4]
col_x_starts = [0.25, 2.9, 7.75]
row_h = 0.82
for ci, (hdr, w) in enumerate(zip(headers, col_widths)):
add_rect(s, col_x_starts[ci], 1.35, w, 0.52, NAVY)
add_text(s, hdr, col_x_starts[ci]+0.07, 1.35, w, 0.52,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
for ri, (c1, c2, c3) in enumerate(comp_data):
y = 1.9 + ri * row_h
bg = WHITE if ri % 2 == 0 else LIGHTBLUE
for ci, (txt, w) in enumerate(zip([c1, c2, c3], col_widths)):
add_rect(s, col_x_starts[ci], y, w, row_h-0.04, bg)
add_text(s, txt, col_x_starts[ci]+0.08, y+0.04, w-0.15, row_h-0.1,
font_size=11.5, color=DARK_TXT if ci>0 else NAVY,
bold=(ci==0), wrap=True)
# ── SLIDE 7 CLABSI Prevention Bundle ─────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, GOLD)
add_text(s, "CLABSI Prevention in NICU", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(s,
"Central Line-Associated Bloodstream Infection (CLABSI) is among the most serious preventable HAIs in the NICU.",
0.4, 1.35, 12.5, 0.5, font_size=13.5, italic=True, color=MED_GRAY)
bundle_items = [
("1. Hand Hygiene",
"Perform WHO 5 moments; use alcohol-based handrub; gloves do NOT replace hand hygiene"),
("2. Maximal Sterile Barrier",
"Sterile gown, gloves, mask, cap, and large sterile drape during insertion"),
("3. Chlorhexidine Skin Prep",
"Use CHG (≥0.5% in 70% alcohol); avoid in preterm <2 kg (risk of skin injury) – use povidone-iodine instead"),
("4. Optimal Site Selection",
"Avoid femoral in adults; in neonates subclavian/IJ preferred; PICC over CVC when feasible"),
("5. Daily Necessity Review",
"Remove catheter as soon as no longer clinically indicated – the #1 most effective prevention measure"),
("6. Hub Decontamination",
"'Scrub the hub' ≥15 sec before every access; discard needleless connectors per protocol"),
("7. Dressing & Tubing Changes",
"Transparent dressing q7 days or when soiled; IV tubing q72-96 h; lipid tubing q24 h"),
("8. Standardized Insertion Checklist",
"Nurse has authority to STOP procedure if sterile technique is broken during insertion"),
]
for i, (title, desc) in enumerate(bundle_items):
col = i % 2
row = i // 2
x = 0.35 + col * 6.5
y = 1.95 + row * 1.33
add_rect(s, x, y, 6.2, 1.22, WHITE)
add_rect(s, x, y, 0.45, 1.22, TEAL if col==0 else NAVY)
add_text(s, str(i+1), x+0.06, y+0.35, 0.35, 0.55,
font_size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(s, title, x+0.55, y+0.05, 5.5, 0.4,
font_size=13, bold=True, color=NAVY)
add_text(s, desc, x+0.55, y+0.48, 5.5, 0.65,
font_size=11.5, color=MED_GRAY, wrap=True)
# ── SLIDE 8 Other Device-Associated Infections ────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Other Device-Associated Infections: VAP & CAUTI", 0.5, 0.18, 12, 0.85,
font_size=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
sections = [
("Ventilator-Associated\nPneumonia (VAP)", TEAL,
["Bundle: elevate HOB 30-45° (when feasible in NICU)",
"Oral decontamination with sterile water/CHG per protocol",
"Daily sedation vacations and readiness-to-extubate assessment",
"Inline closed suctioning systems",
"Change ventilator circuits only when visibly soiled",
"Maintain appropriate ETT cuff pressure",
"Hand hygiene before and after any respiratory intervention"]),
("Catheter-Associated UTI\n(CAUTI)", NAVY,
["Insert urinary catheters only when strictly indicated",
"Use smallest appropriate catheter size",
"Aseptic insertion technique",
"Maintain closed drainage system",
"Keep drainage bag below bladder level at all times",
"Reassess need daily; remove at earliest opportunity",
"Perineal hygiene with catheter in place"]),
("Environmental &\nContact Precautions", RGBColor(0x00,0x5F,0x4B),
["Cohort infants with confirmed HAI",
"Dedicated equipment per patient (stethoscope, BP cuff)",
"Regular environmental disinfection with approved agents",
"Contact precautions for MRSA, ESBL, VRE carriers",
"Limit traffic in NICU; enforce visitor hand hygiene",
"Surveillance cultures per unit protocol"]),
]
for i, (title, col, pts) in enumerate(sections):
x = 0.35 + i * 4.35
add_rect(s, x, 1.4, 4.1, 5.75, WHITE)
add_rect(s, x, 1.4, 4.1, 0.62, col)
add_text(s, title, x+0.1, 1.4, 3.9, 0.62,
font_size=13.5, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_multiline_box(s, pts, x+0.05, 2.08, 4.0, 5.0,
font_size=12, color=MED_GRAY)
# ── SLIDE 9 Surveillance & QI ─────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, TEAL)
add_text(s, "Surveillance, Reporting & Quality Improvement", 0.5, 0.18, 12, 0.85,
font_size=28, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
left = [
("NHSN Surveillance (CDC)",
["Report CLABSI, VAP, CAUTI per NHSN definitions",
"Calculate CLABSI rate: events per 1,000 line-days",
"Benchmark against national NICU rates",
"Review denominator data: total central line-days"]),
("Root Cause Analysis",
["Conduct RCA for every CLABSI event",
"Identify break in bundle: insertion vs maintenance",
"Track process compliance (bundle adherence audits)",
"Report findings to unit and hospital leadership"]),
]
right = [
("QI Strategies",
["Real-time audit and feedback to bedside nurses",
"Simulation training for insertion bundles",
"Visual reminders at bedside (bundle checklist laminated)",
"Celebrate zero-CLABSI milestones with team"]),
("Family Engagement",
["Educate parents on CLABSI signs and importance of hand hygiene",
"Encourage parents to alert staff if dressing appears loose",
"Include family in daily rounds discussions about line necessity",
"Provide written materials on device care"]),
]
for i, (title, pts) in enumerate(left):
y = 1.45 + i * 2.9
add_rect(s, 0.35, y, 6.05, 2.65, WHITE)
add_rect(s, 0.35, y, 6.05, 0.5, NAVY)
add_text(s, title, 0.5, y, 5.85, 0.5,
font_size=14, bold=True, color=WHITE)
add_multiline_box(s, pts, 0.35, y+0.55, 5.95, 2.0,
font_size=12.5, color=MED_GRAY)
for i, (title, pts) in enumerate(right):
y = 1.45 + i * 2.9
add_rect(s, 6.85, y, 6.1, 2.65, WHITE)
add_rect(s, 6.85, y, 6.1, 0.5, TEAL)
add_text(s, title, 7.0, y, 5.9, 0.5,
font_size=14, bold=True, color=WHITE)
add_multiline_box(s, pts, 6.85, y+0.55, 6.0, 2.0,
font_size=12.5, color=MED_GRAY)
# ── SLIDE 10 Key Nursing Roles ─────────────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, SOFT_GRAY)
add_rect(s, 0, 0, 13.333, 1.15, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, GOLD)
add_text(s, "Key Nursing Roles & Responsibilities", 0.5, 0.18, 12, 0.85,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
roles = [
("Educator", TEAL,
["Teach family about line safety",
"Orient new nurses to bundle compliance",
"In-service on latest evidence-based practices"]),
("Advocate", NAVY,
["Stop procedure if sterile field breached",
"Question necessity of line daily",
"Speak up for the neonate"]),
("Assessor", RGBColor(0x00,0x5F,0x4B),
["Frequent site assessment",
"Identify early signs of infection/complication",
"Document findings accurately"]),
("Collaborator", RGBColor(0x8B,0x00,0x35),
["Participate in multi-disciplinary rounds",
"Liaise with IV therapy and pharmacy",
"Contribute to unit QI initiatives"]),
]
for i, (role, col, pts) in enumerate(roles):
x = 0.35 + i * 3.22
add_rect(s, x, 1.4, 3.0, 5.6, WHITE)
# circle / icon strip at top
add_rect(s, x, 1.4, 3.0, 1.0, col)
add_text(s, role, x+0.1, 1.55, 2.8, 0.75,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_multiline_box(s, pts, x+0.1, 2.55, 2.8, 4.3,
font_size=13, color=MED_GRAY)
# ── SLIDE 11 Summary / Key Takeaways ─────────────────────────────────────
s = blank_slide(prs)
add_rect(s, 0, 0, 13.333, 7.5, NAVY)
add_rect(s, 0, 1.15, 13.333, 0.09, GOLD)
add_text(s, "Key Takeaways", 0.5, 0.18, 12, 0.85,
font_size=33, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
takeaways = [
"Know your lines: CVC, PICC, UAC, and UVC each have specific care requirements and complication profiles.",
"Sterile technique and hand hygiene are the cornerstones of every line insertion and access.",
"The CLABSI bundle (hand hygiene, maximal sterile barrier, CHG skin prep, optimal site, daily necessity review) prevents the majority of line infections.",
"Remove the line as soon as it is no longer needed - the single most effective prevention measure.",
"Surveillance, bundle audits, and rapid feedback loops are essential for sustaining zero-CLABSI performance.",
"Nurses are the primary defense: assess daily, document carefully, and advocate for the neonate.",
]
for i, text in enumerate(takeaways):
y = 1.45 + i * 0.95
add_rect(s, 0.4, y, 0.55, 0.72, TEAL)
add_text(s, str(i+1), 0.4, y+0.08, 0.55, 0.55,
font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(s, text, 1.1, y+0.04, 11.8, 0.72,
font_size=14, color=WHITE, wrap=True)
# bottom bar
add_rect(s, 0, 7.1, 13.333, 0.4, TEAL)
add_text(s, "Week 3 • NICU Nursing • Topics 5 & 6", 0.4, 7.1, 12.5, 0.4,
font_size=12, color=WHITE, align=PP_ALIGN.CENTER)
# ── Save ────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/nicu-pptx/NICU_Central_Lines_Week3.pptx"
buf = BytesIO()
prs.save(buf)
with open(out, "wb") as f:
f.write(buf.getvalue())
print(f"Saved: {out}")
cd /tmp/workspace/nicu-pptx && python build_pptx.py 2>&1
~/nicu-pptx/build_pptx.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/nicu-pptx/build_pptx.py'
cd /tmp/workspace/nicu-pptx && python build_pptx.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/nicu-pptx/NICU_Central_Lines_Week3.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [sh.text_frame.text.strip()[:60] for sh in slide.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(f'Slide {i}: {texts[0] if texts else \"(no text)\"}') "
NICU Central Lines Week3
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 | Title slide - Week 3, Topics 5 & 6 |
| 2 | Session Overview - Topics 5 & 6 side-by-side |
| 3 | Types of Vascular Access (CVC, PICC, UAC, UVC) - 4-column card layout |
| 4 | Nursing Care: Insertion Phase (pre/during/post + PICC-specific) |
| 5 | Ongoing Nursing Assessment & Maintenance (daily assessment, line care, umbilical catheter care) |
| 6 | Recognizing & Managing Complications - table format (CLABSI, thrombosis, pneumothorax, malposition, extravasation, hemorrhage) |
| 7 | CLABSI Prevention Bundle (8 evidence-based components) |
| 8 | Other Device-Associated Infections: VAP & CAUTI prevention |
| 9 | Surveillance, Reporting & Quality Improvement (NHSN, RCA, QI strategies, family engagement) |
| 10 | Key Nursing Roles (Educator, Advocate, Assessor, Collaborator) |
| 11 | Key Takeaways (dark navy closing slide with 6 summary points) |
Approach to thrombocytopenia in adults
thrombocytopenia approach algorithm differential diagnosis
peripheral blood smear thrombocytopenia platelets

| Category | Examples |
|---|---|
| Generalized marrow failure | Aplastic anemia, infiltration (leukemia, lymphoma, metastatic cancer, myelofibrosis) |
| Selective megakaryocyte suppression | Alcohol, thiazide diuretics, cytotoxic chemotherapy |
| Viral infection | HIV, EBV, CMV, varicella |
| Ineffective megakaryopoiesis | Megaloblastic anemia (B12/folate), myelodysplastic syndrome (MDS) |
| Radiation-induced | Myelosuppression |
| Condition | Mechanism |
|---|---|
| Primary ITP | IgG autoantibodies (anti-GPIIb/IIIa, anti-GPIb-IX-V) → phagocytosis by splenic macrophages + impaired thrombopoiesis |
| Secondary ITP | SLE, CLL, HIV, hepatitis C, H. pylori |
| Drug-induced (immune) | Quinine, quinidine, sulfonamides, β-lactams, vancomycin, procainamide, gold salts - antibody binds drug-platelet complex |
| Heparin-induced (HIT) | Anti-PF4/heparin IgG antibodies (see below) |
| Alloimmune | Post-transfusion purpura, passive alloimmune thrombocytopenia |
| Condition | Key Distinguishing Features |
|---|---|
| TTP | Pentad: microangiopathic haemolytic anaemia (MAHA), thrombocytopenia, neurological symptoms, renal impairment, fever. ADAMTS13 activity <10% (absent/inhibited). |
| HUS | MAHA + thrombocytopenia + acute kidney injury predominates. Shiga-toxin (typical) or complement dysregulation (atypical/aHUS). |
| DIC | Consumptive coagulopathy: ↑PT/aPTT, ↓fibrinogen, ↑D-dimer. Underlying trigger (sepsis, malignancy, obstetric emergency). |
| Preeclampsia / HELLP | Hypertension, ↑LFTs, haemolysis; obstetric emergency. |
| Sepsis | Platelet activation by thrombin and proinflammatory cytokines. |
| Cardiopulmonary bypass | Platelet losses on artificial surfaces. |
| Test | What it tells you |
|---|---|
| CBC + differential | Isolated vs pancytopenia; MCV (megaloblastic) |
| Peripheral blood smear | Schistocytes (MAHA/TTP/HUS/DIC), hypersegmented neutrophils (B12/folate), blast cells (leukaemia), clumping (pseudothrombocytopenia), platelet size (large = destruction; small = Wiskott-Aldrich) |
| PT/aPTT/fibrinogen/D-dimer | Coagulopathy (DIC) |
| LDH, indirect bilirubin, haptoglobin, reticulocyte count | Haemolysis (TTP/HUS/DIC) |
| Peripheral smear for schistocytes | If MAHA suspected |
| LFTs, albumin | Liver disease / hypersplenism |
| HIV, hepatitis B/C serology | Viral causes |
| ANA, anti-dsDNA | SLE-associated ITP |
| Blood cultures | Sepsis-driven thrombocytopenia |
| Vitamin B12, folate | Megaloblastic thrombocytopenia |
| Bone marrow biopsy | Hypoproliferative thrombocytopenia, suspected haematological malignancy, MDS |
| Agent | Dose | Notes |
|---|---|---|
| Corticosteroids (prednisone) | 1 mg/kg/day; ~80% response | Relapse common on taper |
| High-dose dexamethasone | 40 mg/day × 4 days | Higher initial response rate; may be better tolerated |
| IVIG | 1 g/kg/day × 2 days or 0.4 g/kg/day × 5 days | Faster platelet rise (~80% response, lasts 2-4 weeks); used when rapid increase needed |
| Anti-D immunoglobulin | 50-75 µg/kg IV | Only for Rh+ non-splenectomised patients; causes mild haemolysis |
| Category | 0 pts | 1 pt | 2 pts |
|---|---|---|---|
| Thrombocytopenia severity | <30% fall or nadir <10×10⁹/L | 30-50% fall or nadir 10-19×10⁹/L | >50% fall and nadir ≥20×10⁹/L |
| Timing of fall | ≤4 days (no prior heparin) | 5-10 days unclear; or >10 days; or ≤1 day (exposure 31-100 days ago) | 5-10 days; or ≤1 day (exposure last 30 days) |
| Thrombosis | None | Recurrence/progression or skin lesion | Confirmed new thrombosis; skin necrosis; acute UFH reaction |
| Other causes | Definite | Possible | None apparent |
| Clinical Situation | Platelet Threshold |
|---|---|
| Hypoproliferative (e.g. chemotherapy) - no bleeding | Transfuse at <10,000/µL |
| Elective central venous catheter placement | <20,000/µL |
| Elective diagnostic lumbar puncture | <50,000/µL |
| Major elective non-neuraxial surgery | <50,000/µL |
| Neurological/ocular surgery | 50,000-100,000/µL; maintain ×7-10 days post-op |
| TTP or HIT | Avoid platelet transfusion unless life-threatening haemorrhage |
Low platelet count on CBC
↓
Peripheral blood smear
↓
Platelet clumping? → Pseudothrombocytopenia (artefact) - recheck in citrate
↓ (true thrombocytopenia)
Schistocytes?
YES → MAHA → TTP / HUS / DIC / HELLP
→ ADAMTS13, PT/aPTT, fibrinogen, renal function
NO ↓
Abnormal WBC/RBC or smear?
YES → Bone marrow disorder → Marrow biopsy
NO ↓
Splenomegaly + platelets >40,000?
YES → Hypersplenism
NO ↓
Recent heparin?
YES → Score 4Ts → HIT work-up
NO ↓
Isolated thrombocytopenia, otherwise normal smear
→ ITP (primary or secondary)
→ Check HIV, hepatitis C, ANA, anti-dsDNA, H. pylori
→ Drug history (quinine, sulfonamides, β-lactams)
Sources: Goldman-Cecil Medicine International Edition, 2-Volume Set (Abrams CS, Chapter 158); Robbins & Kumar Basic Pathology (Table 10.11); Henry's Clinical Diagnosis and Management by Laboratory Methods (Table 41.2); Washington Manual of Medical Therapeutics (Chapter 20, HIT 4T scoring).