attachment
attachment

Make a power point presentation on this topic

Reading File
Reading File
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/nicu-pptx && ls /tmp/workspace/nicu-pptx/

Writing File

~/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}")
Running Command

cd /tmp/workspace/nicu-pptx && python build_pptx.py 2>&1

Editing File

~/nicu-pptx/build_pptx.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/nicu-pptx/build_pptx.py'
Running Command

cd /tmp/workspace/nicu-pptx && python build_pptx.py 2>&1

Running Command

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)\"}') "

Your presentation is ready! Here's the download link:

NICU Central Lines Week3

Presentation · PPTX


What's inside - 11 slides with a professional navy/teal/gold color scheme:
SlideContent
1Title slide - Week 3, Topics 5 & 6
2Session Overview - Topics 5 & 6 side-by-side
3Types of Vascular Access (CVC, PICC, UAC, UVC) - 4-column card layout
4Nursing Care: Insertion Phase (pre/during/post + PICC-specific)
5Ongoing Nursing Assessment & Maintenance (daily assessment, line care, umbilical catheter care)
6Recognizing & Managing Complications - table format (CLABSI, thrombosis, pneumothorax, malposition, extravasation, hemorrhage)
7CLABSI Prevention Bundle (8 evidence-based components)
8Other Device-Associated Infections: VAP & CAUTI prevention
9Surveillance, Reporting & Quality Improvement (NHSN, RCA, QI strategies, family engagement)
10Key Nursing Roles (Educator, Advocate, Assessor, Collaborator)
11Key Takeaways (dark navy closing slide with 6 summary points)

Approach to thrombocytopenia in adults

Reading File
Finding Sources
Finding Sources
Searching Images

thrombocytopenia approach algorithm differential diagnosis

Reading File
Reading File
Finding Sources
Reading File
Reading File
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Loading Image
Reading File
Finding Sources
Reading File
Reading File
Excellent - I now have comprehensive material. Let me compile the full answer.

Approach to Thrombocytopenia in Adults

Thrombocytopenia is defined as a platelet count below 150,000/µL (some sources use <140,000/µL). Clinically significant bleeding risk rises progressively:
  • <150,000 - technically thrombocytopenic but minimal risk
  • 20,000-50,000 - increased risk of post-traumatic bleeding
  • <20,000 - significant spontaneous mucocutaneous bleeding possible
  • <5,000 - severe spontaneous bleeding, including CNS hemorrhage
The primary diagnostic framework is mechanistic: narrowing the vast differential to decreased production, increased destruction (immune or non-immune), or sequestration/dilution.

Step 1 - Always Exclude Pseudothrombocytopenia First

Before any workup, examine the peripheral blood smear. EDTA-dependent platelet clumping is an in vitro artefact caused by EDTA-dependent antibodies. It accounts for a large proportion of "incidentally low" platelet counts. Recheck the CBC in a citrate or heparin tube - platelet clumping on smear with a normal redraw confirms the artefact. No treatment is needed.
The diagnostic algorithm from Goldman-Cecil Medicine is shown below:
Systematic approach to evaluation of chronic thrombocytopenia - flowchart showing smear findings guiding differential diagnosis

Step 2 - Mechanistic Classification

1. Decreased Production (Hypoproliferative)

The bone marrow fails to produce adequate megakaryocytes or platelets. Key features: pancytopenia or bicytopenia is common; bone marrow examination shows reduced/absent megakaryocytes.
CategoryExamples
Generalized marrow failureAplastic anemia, infiltration (leukemia, lymphoma, metastatic cancer, myelofibrosis)
Selective megakaryocyte suppressionAlcohol, thiazide diuretics, cytotoxic chemotherapy
Viral infectionHIV, EBV, CMV, varicella
Ineffective megakaryopoiesisMegaloblastic anemia (B12/folate), myelodysplastic syndrome (MDS)
Radiation-inducedMyelosuppression
  • Robbins & Kumar Basic Pathology, Table 10.11; Goldman-Cecil Medicine, p. 1807

2. Increased Destruction

The marrow responds with compensatory megakaryocyte hyperplasia - normal or increased megakaryocytes on bone marrow biopsy. Platelets are being consumed peripherally.

A. Immune-Mediated Destruction

ConditionMechanism
Primary ITPIgG autoantibodies (anti-GPIIb/IIIa, anti-GPIb-IX-V) → phagocytosis by splenic macrophages + impaired thrombopoiesis
Secondary ITPSLE, 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)
AlloimmunePost-transfusion purpura, passive alloimmune thrombocytopenia

B. Non-Immune (Microangiopathic / Consumptive) Destruction

These conditions show fragmented red cells (schistocytes) on the smear - a critical finding.
ConditionKey Distinguishing Features
TTPPentad: microangiopathic haemolytic anaemia (MAHA), thrombocytopenia, neurological symptoms, renal impairment, fever. ADAMTS13 activity <10% (absent/inhibited).
HUSMAHA + thrombocytopenia + acute kidney injury predominates. Shiga-toxin (typical) or complement dysregulation (atypical/aHUS).
DICConsumptive coagulopathy: ↑PT/aPTT, ↓fibrinogen, ↑D-dimer. Underlying trigger (sepsis, malignancy, obstetric emergency).
Preeclampsia / HELLPHypertension, ↑LFTs, haemolysis; obstetric emergency.
SepsisPlatelet activation by thrombin and proinflammatory cytokines.
Cardiopulmonary bypassPlatelet losses on artificial surfaces.
  • Goldman-Cecil Medicine, p. 1807; Henry's Clinical Diagnosis, p. 966

3. Sequestration (Hypersplenism)

An enlarged spleen shifts the normal splenic platelet pool (10% of platelets) to sequester up to 90% of circulating platelets. Platelet count typically stays above 40,000/µL. Causes include portal hypertension (cirrhosis), lymphoma, storage disorders, and myeloproliferative neoplasms. The bone marrow shows normal or increased megakaryocytes, and splenomegaly is the key physical finding.

4. Dilutional

Massive transfusion of packed red blood cells without platelet replacement dilutes the platelet pool. Observed after large-volume haemorrhage resuscitation.

Step 3 - Initial Workup

History (targeted)

  • Timing: acute (days) vs chronic (months/years)? New medications (especially heparin, antibiotics, quinine)?
  • Symptoms: petechiae, ecchymoses, mucosal bleeding vs thrombosis (points toward TTP/HIT)
  • Systemic features: fever, arthralgia, rash (SLE), jaundice, alcohol use, transfusion history
  • Family history (congenital thrombocytopenias - MYH9 disorders, Bernard-Soulier)

Examination

  • Petechiae - pinpoint non-blanching macules on dependent skin; pathognomonic of thrombocytopenia
  • Ecchymoses
  • Splenomegaly (hypersplenism)
  • Lymphadenopathy, hepatomegaly (haematological malignancy)
  • Signs of chronic liver disease

Core Investigations

TestWhat it tells you
CBC + differentialIsolated vs pancytopenia; MCV (megaloblastic)
Peripheral blood smearSchistocytes (MAHA/TTP/HUS/DIC), hypersegmented neutrophils (B12/folate), blast cells (leukaemia), clumping (pseudothrombocytopenia), platelet size (large = destruction; small = Wiskott-Aldrich)
PT/aPTT/fibrinogen/D-dimerCoagulopathy (DIC)
LDH, indirect bilirubin, haptoglobin, reticulocyte countHaemolysis (TTP/HUS/DIC)
Peripheral smear for schistocytesIf MAHA suspected
LFTs, albuminLiver disease / hypersplenism
HIV, hepatitis B/C serologyViral causes
ANA, anti-dsDNASLE-associated ITP
Blood culturesSepsis-driven thrombocytopenia
Vitamin B12, folateMegaloblastic thrombocytopenia
Bone marrow biopsyHypoproliferative thrombocytopenia, suspected haematological malignancy, MDS

Step 4 - Key Specific Entities & Their Management

Immune Thrombocytopenia (ITP)

ITP is a diagnosis of exclusion (no identifiable secondary cause). ITP threshold: platelet count <100,000/µL; ITP is confirmed by ruling out all other causes. Approximately 80% of newly diagnosed adults have chronic ITP.
When to treat: Guidelines recommend treatment when platelets are <30,000/µL, or at higher counts in the presence of significant bleeding, surgery, or high-risk activities - Goldman-Cecil Medicine, p. 1812.
First-line treatment:
AgentDoseNotes
Corticosteroids (prednisone)1 mg/kg/day; ~80% responseRelapse common on taper
High-dose dexamethasone40 mg/day × 4 daysHigher initial response rate; may be better tolerated
IVIG1 g/kg/day × 2 days or 0.4 g/kg/day × 5 daysFaster platelet rise (~80% response, lasts 2-4 weeks); used when rapid increase needed
Anti-D immunoglobulin50-75 µg/kg IVOnly for Rh+ non-splenectomised patients; causes mild haemolysis
Second-line treatment (relapse/refractory after corticosteroids):
  • Rituximab (anti-CD20): ~40% complete response; B-cell depletion reduces autoantibody production
  • TPO receptor agonists - romiplostim (weekly SC) or eltrombopag (daily oral): stimulate thrombopoiesis directly; highly effective in chronic refractory ITP
  • Splenectomy: considered after >12 months if ongoing treatment required; can produce lifelong remission; pre-operative vaccinations mandatory (pneumococcus, meningococcus, Haemophilus influenzae)
  • Goldman-Cecil Medicine, Table 158-5 and 158-6

Heparin-Induced Thrombocytopenia (HIT)

A prothrombotic emergency - patients develop arterial and venous thrombosis, NOT just bleeding. Incidence: 2-5% with UFH, 0.7% with LMWH, virtually zero with fondaparinux.
Mechanism: Anti-PF4/heparin IgG antibodies activate platelets → thrombocytopenia + paradoxical thrombosis.
Timing: Typical onset 5-14 days after heparin initiation (or within 24 hours if recent prior heparin exposure in the last 100 days).
4T Scoring System (pretest probability; NPV >95% for low score):
Category0 pts1 pt2 pts
Thrombocytopenia severity<30% fall or nadir <10×10⁹/L30-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)
ThrombosisNoneRecurrence/progression or skin lesionConfirmed new thrombosis; skin necrosis; acute UFH reaction
Other causesDefinitePossibleNone apparent
Score: 0-3 = low probability; 4-5 = intermediate; 6-8 = high.
Management:
  1. Stop all heparin immediately (including flushes and LMWH)
  2. Start a non-heparin anticoagulant - argatroban (hepatically cleared, preferred in renal failure) or fondaparinux
  3. Do NOT give platelet transfusions - worsens thrombosis
  4. Confirm with anti-PF4 ELISA (sensitive but not specific) and/or serotonin release assay (SRA - most specific)
  5. Bridge to warfarin only after platelets recover above 150,000/µL (premature warfarin causes venous limb gangrene)
  • Washington Manual of Medical Therapeutics, p. 761; Goldman-Cecil Medicine, p. 1808-1810

Thrombotic Thrombocytopenic Purpura (TTP)

A medical emergency. Caused by absent/inhibited ADAMTS13 (a metalloprotease) - ultra-large vWF multimers accumulate, causing platelet microthrombi throughout the microvasculature.
Classic pentad (not all always present):
  1. MAHA (schistocytes on smear, ↑LDH, ↑bilirubin, ↓haptoglobin)
  2. Thrombocytopenia
  3. Neurological symptoms (fluctuating, e.g. headache, confusion, stroke)
  4. Renal impairment
  5. Fever
Management:
  • Plasma exchange (plasmapheresis) - replaces deficient ADAMTS13 and removes inhibitory antibodies; must start urgently
  • Glucocorticoids (methylprednisolone)
  • Rituximab - increasingly used first-line with plasma exchange for immune-mediated TTP
  • Caplacizumab - anti-vWF nanobody; reduces time to platelet normalisation (approved for acquired TTP)
  • Do NOT transfuse platelets except for life-threatening haemorrhage - may "fuel the fire"

DIC

Treat the underlying trigger (sepsis, malignancy, obstetric emergency). Replace consumed factors:
  • Fresh frozen plasma (FFP) for ↑PT/aPTT
  • Cryoprecipitate for ↓fibrinogen (<1.5 g/L)
  • Platelets when <20,000/µL or bleeding
  • Heparin in chronic/thrombotic DIC (selected cases under expert guidance)

Platelet Transfusion Thresholds (Goldman-Cecil Medicine, Table 158-2)

Clinical SituationPlatelet Threshold
Hypoproliferative (e.g. chemotherapy) - no bleedingTransfuse 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 surgery50,000-100,000/µL; maintain ×7-10 days post-op
TTP or HITAvoid platelet transfusion unless life-threatening haemorrhage
  • Goldman-Cecil Medicine, p. 1811-1813

Summary Diagnostic Algorithm

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)

Key "not to miss" diagnoses:
  • TTP - do not delay plasmapheresis waiting for confirmation
  • HIT - stop heparin, anticoagulate (not platelets)
  • DIC - treat the trigger urgently
  • Acute leukaemia/aplastic anaemia - marrow failure needing emergency haematology referral
  • Pseudothrombocytopenia - avoid unnecessary investigation and treatment
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).
This is a shared conversation. Sign in to Orris to start your own chat.