Hii
Can you make pdf on pre op intra op and post op care nclex
mkdir -p /home/daytona/workspace/nclex-perioperative && cat > /home/daytona/workspace/nclex-perioperative/generate_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak, KeepTogether ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import Frame, PageTemplate from reportlab.lib.colors import HexColor # ─── Color Palette ─────────────────────────────────────────────────────────── NAVY = HexColor("#1a3a5c") TEAL = HexColor("#0d7377") ORANGE = HexColor("#e07b39") LIGHT_BLUE = HexColor("#d6eaf8") LIGHT_TEAL = HexColor("#d0f0f0") LIGHT_ORG = HexColor("#fde8d8") WHITE = colors.white DARK_GRAY = HexColor("#2c2c2c") MID_GRAY = HexColor("#555555") LIGHT_GRAY = HexColor("#f5f5f5") GREEN_BG = HexColor("#d5f5e3") GREEN_DK = HexColor("#1a7a3a") RED_BG = HexColor("#fde8e8") RED_DK = HexColor("#c0392b") # ─── Doc setup ──────────────────────────────────────────────────────────────── PDF_PATH = "/home/daytona/workspace/nclex-perioperative/Perioperative_Nursing_Care_NCLEX.pdf" doc = SimpleDocTemplate( PDF_PATH, pagesize=A4, rightMargin=1.8*cm, leftMargin=1.8*cm, topMargin=2*cm, bottomMargin=2*cm, title="Perioperative Nursing Care – NCLEX Review", author="Orris Medical" ) # ─── Styles ─────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() def style(name, **kwargs): s = ParagraphStyle(name=name, **kwargs) return s title_style = style("Title", fontSize=24, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, spaceAfter=4, leading=30) subtitle_style = style("Subtitle", fontSize=13, fontName="Helvetica", textColor=HexColor("#cce8f4"), alignment=TA_CENTER, spaceAfter=4) h1_style = style("H1", fontSize=16, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_LEFT, spaceBefore=10, spaceAfter=4, leading=20, leftIndent=4) h2_style = style("H2", fontSize=12, fontName="Helvetica-Bold", textColor=NAVY, alignment=TA_LEFT, spaceBefore=8, spaceAfter=3, leading=16) h3_style = style("H3", fontSize=10.5, fontName="Helvetica-Bold", textColor=TEAL, alignment=TA_LEFT, spaceBefore=5, spaceAfter=2, leading=14) body_style = style("Body", fontSize=9.5, fontName="Helvetica", textColor=DARK_GRAY, alignment=TA_JUSTIFY, spaceBefore=2, spaceAfter=2, leading=14) bullet_style = style("Bullet", fontSize=9.5, fontName="Helvetica", textColor=DARK_GRAY, alignment=TA_LEFT, spaceBefore=1, spaceAfter=1, leading=13, leftIndent=14, firstLineIndent=-10) bold_bullet = style("BoldBullet", fontSize=9.5, fontName="Helvetica-Bold", textColor=DARK_GRAY, alignment=TA_LEFT, spaceBefore=2, spaceAfter=1, leading=13, leftIndent=14, firstLineIndent=-10) nclex_tip_style = style("NCLEXTip", fontSize=9.5, fontName="Helvetica-Bold", textColor=RED_DK, alignment=TA_LEFT, spaceBefore=2, spaceAfter=2, leading=13, leftIndent=10, firstLineIndent=-10) key_point_style = style("KeyPoint", fontSize=9.5, fontName="Helvetica", textColor=GREEN_DK, alignment=TA_LEFT, spaceBefore=1, spaceAfter=1, leading=13, leftIndent=14, firstLineIndent=-10) table_header = style("TableHeader", fontSize=9.5, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=12) table_cell = style("TableCell", fontSize=9, fontName="Helvetica", textColor=DARK_GRAY, alignment=TA_LEFT, leading=12) table_cell_c = style("TableCellC", fontSize=9, fontName="Helvetica", textColor=DARK_GRAY, alignment=TA_CENTER, leading=12) # ─── Helpers ────────────────────────────────────────────────────────────────── def section_header(text, color=NAVY): data = [[Paragraph(text, h1_style)]] t = Table(data, colWidths=[17.4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), color), ("ROUNDEDCORNERS", [6,6,6,6]), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 12), ])) return t def info_box(title, items, bg=LIGHT_BLUE, title_color=NAVY): content = [Paragraph(f"<b>{title}</b>", style("BoxTitle", fontSize=10, fontName="Helvetica-Bold", textColor=title_color, leading=14))] for item in items: content.append(Paragraph(f"• {item}", bullet_style)) data = [[content]] t = Table(data, colWidths=[17.4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ("BOX", (0,0), (-1,-1), 1.5, title_color), ("ROUNDEDCORNERS",[4,4,4,4]), ])) return t def two_col_box(left_title, left_items, right_title, right_items, left_bg=LIGHT_BLUE, right_bg=LIGHT_TEAL): def make_cell(title, items, bg, tc): c = [Paragraph(f"<b>{title}</b>", style("BoxT", fontSize=10, fontName="Helvetica-Bold", textColor=tc, leading=14))] for it in items: c.append(Paragraph(f"• {it}", bullet_style)) return c data = [[make_cell(left_title, left_items, left_bg, NAVY), make_cell(right_title, right_items, right_bg, TEAL)]] t = Table(data, colWidths=[8.5*cm, 8.5*cm], hAlign="CENTER") t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,-1), left_bg), ("BACKGROUND", (1,0), (1,-1), right_bg), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ("BOX", (0,0), (0,-1), 1, NAVY), ("BOX", (1,0), (1,-1), 1, TEAL), ("INNERGRID", (0,0), (-1,-1), 0.5, colors.white), ])) return t def nclex_alert(text): data = [[Paragraph(f"🩺 NCLEX ALERT: {text}", nclex_tip_style)]] t = Table(data, colWidths=[17.4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), RED_BG), ("TOPPADDING", (0,0), (-1,-1), 7), ("BOTTOMPADDING", (0,0), (-1,-1), 7), ("LEFTPADDING", (0,0), (-1,-1), 10), ("BOX", (0,0), (-1,-1), 2, RED_DK), ])) return t def key_point_box(items): content = [Paragraph("<b>✓ Key Points</b>", style("KPT", fontSize=10, fontName="Helvetica-Bold", textColor=GREEN_DK, leading=14))] for it in items: content.append(Paragraph(f"✓ {it}", key_point_style)) data = [[content]] t = Table(data, colWidths=[17.4*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), GREEN_BG), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 10), ("BOX", (0,0), (-1,-1), 1.5, GREEN_DK), ])) return t def make_table(headers, rows, col_widths=None): if col_widths is None: col_widths = [17.4*cm / len(headers)] * len(headers) header_row = [Paragraph(h, table_header) for h in headers] data = [header_row] for row in rows: data.append([Paragraph(str(cell), table_cell) for cell in row]) t = Table(data, colWidths=col_widths, repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GRAY]), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ("BOX", (0,0), (-1,-1), 1, NAVY), ("INNERGRID", (0,0), (-1,-1), 0.5, HexColor("#cccccc")), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) return t sp = lambda n=6: Spacer(1, n) hr = lambda: HRFlowable(width="100%", thickness=0.5, color=HexColor("#cccccc"), spaceAfter=4, spaceBefore=4) # ═══════════════════════════════════════════════════════════════════════════════ # CONTENT # ═══════════════════════════════════════════════════════════════════════════════ story = [] # ─── COVER ──────────────────────────────────────────────────────────────────── cover_data = [[ Paragraph("PERIOPERATIVE NURSING CARE", title_style), Paragraph("Pre-op • Intra-op • Post-op", subtitle_style), Spacer(1, 6), Paragraph("NCLEX-RN Review Guide", style("Sub2", fontSize=11, fontName="Helvetica", textColor=HexColor("#cce8f4"), alignment=TA_CENTER)), Spacer(1, 4), Paragraph("Comprehensive Study Notes | July 2026", style("Sub3", fontSize=9, fontName="Helvetica", textColor=HexColor("#aad4e8"), alignment=TA_CENTER)), ]] cover_t = Table(cover_data, colWidths=[17.4*cm]) cover_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (-1,-1), 28), ("BOTTOMPADDING", (0,0), (-1,-1), 28), ("LEFTPADDING", (0,0), (-1,-1), 20), ("RIGHTPADDING", (0,0), (-1,-1), 20), ("BOX", (0,0), (-1,-1), 3, TEAL), ])) story.append(cover_t) story.append(sp(10)) # Quick reference bar qr_data = [[ Paragraph("Pre-Operative\n(Before Surgery)", style("QR", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13)), Paragraph("Intra-Operative\n(During Surgery)", style("QR2", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13)), Paragraph("Post-Operative\n(After Surgery)", style("QR3", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, leading=13)), ]] qr_t = Table(qr_data, colWidths=[5.8*cm, 5.8*cm, 5.8*cm]) qr_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,-1), TEAL), ("BACKGROUND", (1,0), (1,-1), ORANGE), ("BACKGROUND", (2,0), (2,-1), NAVY), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 10), ("INNERGRID", (0,0), (-1,-1), 1, WHITE), ("BOX", (0,0), (-1,-1), 1, WHITE), ])) story.append(qr_t) story.append(sp(8)) story.append(Paragraph( "This guide covers the three phases of surgical care tested on the NCLEX-RN. " "Topics include nursing assessment, patient teaching, safety protocols, " "medication management, and complication monitoring.", body_style)) story.append(sp(4)) story.append(hr()) # ───────────────────────────────────────────────────────────────────────────── # SECTION 1 — PRE-OPERATIVE CARE # ───────────────────────────────────────────────────────────────────────────── story.append(sp(8)) story.append(section_header("SECTION 1 — PRE-OPERATIVE CARE", TEAL)) story.append(sp(6)) story.append(Paragraph( "The preoperative phase begins when the decision for surgery is made and ends when " "the patient is transferred to the operating room (OR). The nurse's primary roles " "are assessment, patient education, psychological support, and preparation for safe surgery.", body_style)) story.append(sp(6)) story.append(Paragraph("1.1 Preoperative Assessment", h2_style)) story.append(info_box("Health History & Physical Examination", [ "Medical history: diabetes, hypertension, cardiac/pulmonary disease, renal/hepatic disorders", "Surgical/anesthesia history: previous reactions, malignant hyperthermia (MH) risk", "Medication review: anticoagulants, NSAIDs, herbal supplements, corticosteroids", "Allergies: latex, iodine, tape, anesthetic agents — document clearly", "Family history: bleeding disorders, MH, pseudocholinesterase deficiency", "Social history: smoking, alcohol, illicit drug use, living situation for discharge planning", "Baseline vital signs, height, weight (for medication dosing)", "Functional status: ability to perform ADLs, exercise tolerance", ], bg=LIGHT_BLUE, title_color=TEAL)) story.append(sp(6)) story.append(Paragraph("1.2 Preoperative Diagnostic Tests", h2_style)) story.append(make_table( ["Test", "Normal Range", "Significance / NCLEX Focus"], [ ["CBC (Hgb/Hct)", "Hgb: 12–17 g/dL\nHct: 36–51%", "Anemia → risk of hypoxia intraop; surgery may be postponed"], ["WBC", "4,500–11,000/µL", "Leukocytosis = active infection → delay elective surgery"], ["Platelets", "150,000–400,000/µL", "<100,000 = bleeding risk; must be reported"], ["PT/INR", "11–12.5 sec / INR 1.0", "Prolonged = bleeding risk; warfarin effect"], ["aPTT", "25–35 sec", "Prolonged = heparin effect or clotting disorder"], ["BMP (Na, K, Cr)", "Na 136–145; K 3.5–5; Cr 0.6–1.2", "Electrolyte imbalance → cardiac dysrhythmias; renal function for contrast/drugs"], ["Blood glucose", "70–99 mg/dL fasting", "Diabetics: tight glucose control perioperatively"], ["BUN", "10–20 mg/dL", "Elevated → renal impairment, fluid/electrolyte management"], ["Urinalysis", "Clear, yellow, no bacteria", "UTI → postpone elective surgery"], ["Chest X-Ray", "Clear lung fields", "Baseline; identify pulmonary disease, cardiomegaly"], ["ECG / EKG", "Normal sinus rhythm", "Patients >40 or cardiac history; detect dysrhythmias"], ["Type & Crossmatch", "ABO/Rh compatibility", "Done before major surgery with expected blood loss"], ["Pregnancy test (hCG)", "Negative", "Required for all reproductive-age females before surgery"], ], col_widths=[4.5*cm, 4.5*cm, 8.4*cm] )) story.append(sp(6)) story.append(nclex_alert("Always verify pregnancy test results before surgery in women of childbearing age. " "Anesthetic agents are teratogenic.")) story.append(sp(6)) story.append(Paragraph("1.3 NPO (Nothing by Mouth) Guidelines — ASA 2023", h2_style)) story.append(make_table( ["Substance", "Minimum Fasting Time"], [ ["Clear liquids (water, apple juice, sports drinks, black coffee/tea)", "2 hours"], ["Breast milk", "4 hours"], ["Infant formula", "6 hours"], ["Non-human milk / light meal (toast + clear liquids)", "6 hours"], ["Full meal (fried/fatty foods, meat)", "8 hours or more"], ], col_widths=[11*cm, 6.4*cm] )) story.append(sp(4)) story.append(nclex_alert("NPO status reduces aspiration risk. If a patient ate before surgery, notify the surgeon " "and anesthesiologist IMMEDIATELY — surgery may be cancelled.")) story.append(sp(6)) story.append(Paragraph("1.4 Informed Consent", h2_style)) story.append(two_col_box( "Nurse's Role in Consent", [ "Witness that the patient signed voluntarily", "Confirm patient was not coerced", "Verify patient is mentally competent", "Ensure the surgeon has obtained consent (not the nurse's job to explain the procedure)", "Patient must be sober — not medicated with sedatives before signing", "If patient has questions, notify surgeon before proceeding", ], "Who CAN Consent?", [ "Competent adult ≥18 years", "Emancipated minor (married, military, independent)", "Parent or legal guardian for a minor", "Durable Power of Attorney / Healthcare proxy", "Emergency surgery: implied consent if patient unable", "In life-threatening emergency, 2-physician order may override", ], LIGHT_BLUE, LIGHT_TEAL )) story.append(sp(4)) story.append(nclex_alert("The NURSE does NOT explain surgical risks — that is the surgeon's responsibility. " "The nurse's role is to WITNESS the signature and verify understanding.")) story.append(sp(6)) story.append(Paragraph("1.5 Pre-Op Medications", h2_style)) story.append(make_table( ["Drug Class", "Examples", "Purpose", "Nursing Considerations"], [ ["Benzodiazepine\n(pre-med)", "Midazolam\n(Versed)", "Anxiolysis, amnesia, sedation", "Have resuscitation equipment ready; monitor respirations; can cause respiratory depression"], ["Anticholinergic", "Atropine,\nGlycopyrrolate", "Reduce oral secretions, prevent bradycardia", "Monitor HR; can cause dry mouth, urinary retention, tachycardia"], ["Opioid analgesic", "Morphine,\nFentanyl", "Preoperative analgesia", "Monitor respirations, level of sedation; raise side rails"], ["H2 blocker /\nAntacid", "Ranitidine,\nNa Citrate", "Reduce gastric pH → lower aspiration risk", "Give 1–2 hrs before surgery; assess for allergies"], ["Antiemetic", "Ondansetron\n(Zofran)", "Prevent PONV (postoperative nausea/vomiting)", "Common prophylaxis; monitor for QT prolongation"], ["Antibiotic\nprophylaxis", "Cefazolin\n(Ancef)", "Prevent surgical site infection (SSI)", "Give within 60 min before incision (within 120 min for vancomycin); document time"], ["Insulin", "Regular insulin", "Blood glucose control", "Hold oral hypoglycemics; check glucose q4h perioperatively"], ["Anticoagulants", "Heparin,\nEnoxaparin", "DVT prophylaxis", "Hold warfarin days before; check INR; have protamine sulfate available for heparin reversal"], ], col_widths=[3.5*cm, 3*cm, 4.5*cm, 6.4*cm] )) story.append(sp(6)) story.append(Paragraph("1.6 Immediate Pre-Op Preparation (Day of Surgery)", h2_style)) story.append(two_col_box( "Physical Preparation", [ "Verify signed, witnessed informed consent in chart", "Confirm correct patient — 2 identifiers (name + DOB/MRN)", "Verify surgical site marking by surgeon", "Remove jewelry, nail polish, dentures, prosthetics, hearing aids", "Remove contact lenses (corneal injury risk under GA)", "Apply antiembolic stockings (TEDs) / SCDs per order", "Insert IV access — large-bore (18 G minimum)", "Insert urinary catheter if ordered (sterile technique)", "Administer pre-op medications as ordered", "Perform surgical skin prep / clipping (not shaving) per protocol", "Confirm allergy band and ID band in place", "Baseline vital signs — report abnormalities to surgeon", ], "Documentation & Safety", [ "Complete pre-op checklist thoroughly", "Confirm NPO status and time of last intake", "Confirm type & screen / crossmatch drawn", "Confirm lab results reviewed and in chart", "Document baseline neuro, circulatory, respiratory status", "Note patient's understanding of procedure", "Ensure advance directives / DNR orders are in chart", "Confirm operative site matches consent form", "Send chart, imaging, blood with patient to OR", "Give pre-op teaching: deep breathing, splinting, leg exercises", "Address patient anxiety — therapeutic communication", "Confirm surgical safety checklist (WHO checklist) started", ], LIGHT_BLUE, LIGHT_ORG )) story.append(sp(6)) story.append(Paragraph("1.7 Preoperative Patient Education", h2_style)) story.append(info_box("What to Teach Before Surgery", [ "Deep breathing exercises and incentive spirometry (IS) — 10 breaths per hour postoperatively", "Splinting technique: hug pillow firmly over incision when coughing or moving", "Leg exercises: ankle pumps, knee flexion, quad sets — promote venous return, prevent DVT", "Turn, cough, and deep breathe (TCDB) every 2 hours postoperatively", "Pain management: patient can request analgesia; do not wait until pain is severe", "Postoperative equipment: IV lines, foley catheter, drains, monitors — not unexpected", "Expected sequence: OR → PACU → surgical unit or ICU", "Activity restrictions and wound care at home", "Signs and symptoms to report: fever, increased pain, redness/drainage at wound site", "NPO instructions and medication adjustments before surgery", ], bg=LIGHT_TEAL, title_color=TEAL)) story.append(sp(4)) story.append(key_point_box([ "The PATIENT is the priority — always confirm allergies and identity before any action.", "Signed consent must be in the chart BEFORE administering pre-op sedation.", "Antibiotic prophylaxis timing (within 60 minutes of incision) is a Joint Commission NPSG.", "Herbal supplements (garlic, ginkgo, ginseng, St. John's Wort) can increase bleeding risk — must be stopped 2 weeks pre-op.", "If a patient withdraws consent at any time, surgery MUST be stopped — respect autonomy.", ])) story.append(PageBreak()) # ───────────────────────────────────────────────────────────────────────────── # SECTION 2 — INTRA-OPERATIVE CARE # ───────────────────────────────────────────────────────────────────────────── story.append(section_header("SECTION 2 — INTRA-OPERATIVE CARE", ORANGE)) story.append(sp(6)) story.append(Paragraph( "The intraoperative phase begins when the patient enters the OR and ends when " "they are transferred to the PACU. The OR nurse functions in a highly specialized " "environment focused on patient safety, sterile technique, and physiologic monitoring.", body_style)) story.append(sp(6)) story.append(Paragraph("2.1 The OR Team", h2_style)) story.append(make_table( ["Role", "Description", "Sterile?"], [ ["Surgeon", "Performs the procedure; responsible for pre-op and post-op management", "Yes"], ["Surgical First Assistant", "Assists surgeon: tissue retraction, suturing, hemostasis", "Yes"], ["Scrub Nurse / Scrub Tech", "Handles sterile instruments; maintains sterile field; counts instruments/sponges/sharps", "Yes"], ["Circulating Nurse (RN)", "Coordinates the OR; non-sterile; documents, positions patient, monitors, communicates", "No"], ["Anesthesiologist / CRNA", "Administers anesthesia; manages airway and hemodynamics", "No"], ["Anesthesia Tech", "Prepares anesthesia equipment, medications", "No"], ], col_widths=[4.5*cm, 9*cm, 3.9*cm] )) story.append(sp(4)) story.append(nclex_alert("The CIRCULATING NURSE is the patient's ADVOCATE in the OR. " "They can identify and stop any safety breach — including timeout violations.")) story.append(sp(6)) story.append(Paragraph("2.2 Surgical Safety Checklist — WHO / Joint Commission", h2_style)) story.append(make_table( ["Phase", "Checklist Items"], [ ["Sign-In\n(Before anesthesia)", "Patient identity confirmed (2 identifiers)\nSurgical site marked and confirmed\nAnesthesia safety check complete\nPulse oximeter functional\nKnown allergy reviewed\nAirway difficulty risk assessed"], ["Time-Out\n(Before incision)", "MANDATORY PAUSE — entire team stops\nConfirm: patient name, procedure, site/side\nReview: antibiotic prophylaxis given within 60 min\nAnticipated critical events discussed\nImaging displayed if required\nTeam introductions (if new team members)"], ["Sign-Out\n(Before leaving OR)", "Procedure performed confirmed\nInstrument, sponge, needle count correct (×2)\nSpecimen labeling confirmed\nEquipment problems to report\nKey concerns for recovery reviewed"], ], col_widths=[4.5*cm, 12.9*cm] )) story.append(sp(4)) story.append(nclex_alert("If sponge/instrument count is INCORRECT at Sign-Out, the surgeon must be notified " "IMMEDIATELY and the wound must NOT be closed until count is reconciled.")) story.append(sp(6)) story.append(Paragraph("2.3 Anesthesia Types", h2_style)) story.append(make_table( ["Type", "Description", "Examples / Agent", "Key Nursing Points"], [ ["General\nAnesthesia (GA)", "Total unconsciousness; protects airway via intubation or LMA", "Propofol, Fentanyl,\nSevoflurane, Nitrous oxide", "Monitor for MH, laryngospasm, anaphylaxis; have emergency drugs ready"], ["Regional\nAnesthesia", "Loss of sensation to a region; patient awake or sedated", "Spinal, epidural, nerve block", "Monitor for hypotension (spinal); check dermatome level; keep patient warm"], ["Spinal (SAB)", "Intrathecal injection below L2; rapid onset", "Bupivacaine, Lidocaine", "Headache risk (post-dural puncture); position flat post-procedure; hydrate"], ["Epidural", "Epidural space injection; controllable via catheter", "Bupivacaine, Fentanyl", "Can cause hypotension; monitor sensation and motor function; check catheter site"], ["Monitored Anesthesia\nCare (MAC)", "Sedation + local anesthesia; patient conscious/sleepy", "Midazolam, Fentanyl,\nPropofol", "Monitor airway, SpO2, responsiveness; have reversal agents ready"], ["Local\nAnesthesia", "Topical or injected at surgical site", "Lidocaine, Bupivacaine", "Monitor for toxicity: tinnitus, metallic taste, seizures, cardiac arrest"], ], col_widths=[3.2*cm, 4*cm, 3.7*cm, 6.5*cm] )) story.append(sp(6)) story.append(Paragraph("2.4 Malignant Hyperthermia (MH) — PRIORITY EMERGENCY", h2_style)) story.append(info_box("Malignant Hyperthermia — Know This for NCLEX!", [ "Trigger agents: succinylcholine (depolarizing NMB), volatile anesthetic gases (halothane, sevoflurane, desflurane)", "Pathophysiology: uncontrolled release of Ca²⁺ from skeletal muscle → hypermetabolic crisis", "Signs: rising ETCO2 (earliest sign), muscle rigidity (masseter spasm), tachycardia, hyperthermia (temp rises 1-2°C every 5 min), dark urine (myoglobinuria), metabolic acidosis", "Treatment: STOP triggering agent IMMEDIATELY; call for help; give Dantrolene sodium 2.5 mg/kg IV (specific antidote) — repeat every 5 min as needed", "Supportive: 100% O2 hyperventilation; cooling blankets, cold IV saline; bicarbonate for acidosis; monitor urine output (risk of renal failure from myoglobinuria)", "Genetic: autosomal dominant trait — document and notify family; MH hotline: 1-800-MH-HYPER", "MHAUS protocol available in every OR — nurse must know location", ], bg=RED_BG, title_color=RED_DK)) story.append(sp(6)) story.append(Paragraph("2.5 Patient Positioning in the OR", h2_style)) story.append(make_table( ["Position", "Used For", "Nursing Considerations / Complications"], [ ["Supine (dorsal recumbent)", "Abdominal, cardiac, vascular surgeries", "Pressure on occiput, heels, sacrum; pad bony prominences"], ["Prone", "Spinal/posterior surgeries", "Eye pressure → blindness; airway management critical; pad all pressure points"], ["Lithotomy", "Gynecologic, urologic, rectal procedures", "Compartment syndrome in legs; nerve injury (common peroneal); do NOT keep >2 hrs without repositioning; drop both legs simultaneously"], ["Lateral (Sims)", "Kidney/thoracic surgeries", "Neurovascular compromise to dependent arm; axillary roll required; eye protection"], ["Trendelenburg", "Lower abdominal/pelvic surgeries", "Risk of respiratory compromise; increased ICP — avoid in head trauma"], ["Reverse Trendelenburg", "Head/neck, bariatric surgeries", "Risk of hypotension; secure patient to prevent sliding"], ["Sitting / Beach Chair", "Shoulder, neurosurgical", "Venous air embolism (VAE) risk; monitor ETCO2, TEE for VAE"], ], col_widths=[4*cm, 4.5*cm, 8.9*cm] )) story.append(sp(6)) story.append(Paragraph("2.6 Sterile Technique & Surgical Asepsis Principles", h2_style)) story.append(two_col_box( "Sterile Field Rules", [ "Only sterile items on the sterile field", "Sterile persons touch only sterile items", "Non-sterile persons do not cross sterile field", "Sterile field must be continuously monitored", "Sterile gown: front chest to waist = sterile; below waist, back, underarms = non-sterile", "Sterile drapes define sterile field; do not move once placed", "If sterility is in doubt → treat as contaminated", "Open sterile packages away-from-body; check indicators", ], "Instrument / Sponge Counts", [ "Count performed by scrub nurse and circulator TOGETHER", "Count at: beginning of surgery, before closing body cavity, before final skin closure, when relief staff arrives", "Count: instruments, sponges, needles, sharps — document every count", "Incorrect count: notify surgeon immediately; X-ray may be ordered", "NEVER cut sponge in half — creates incomplete count", "Tag each sponge separately; use radiopaque sponges", "Document counts on OR record; both nurses sign", ], LIGHT_BLUE, LIGHT_TEAL )) story.append(sp(6)) story.append(Paragraph("2.7 Intraoperative Monitoring", h2_style)) story.append(info_box("Standard Intraoperative Monitoring (ASA Standards)", [ "Pulse oximetry (SpO2): continuous; target ≥95% (≥90% acceptable intraop with GA)", "ECG: continuous cardiac monitoring; detect dysrhythmias", "ETCO2 (End-tidal CO2): capnography; confirms ETT placement; earliest sign of MH", "Blood pressure: non-invasive q5 min minimum; arterial line for high-risk cases", "Temperature: prevent hypothermia (<36°C causes coagulopathy, dysrhythmias, infection)", "Neuromuscular blockade monitoring (train-of-four): confirms adequate reversal before extubation", "Urine output: Foley catheter; minimum 0.5 mL/kg/hr indicates adequate renal perfusion", "Blood loss: weigh sponges; measure suction canister; 1 mL blood ≈ 1 g weight", "Fluid balance: input/output documentation throughout surgery", ], bg=LIGHT_ORG, title_color=ORANGE)) story.append(sp(4)) story.append(key_point_box([ "ETCO2 rising + muscle rigidity = MALIGNANT HYPERTHERMIA — act immediately.", "Dantrolene is the ONLY treatment for MH — must be stocked in every OR.", "The nurse is responsible for ensuring the surgical count is correct before wound closure.", "Hypothermia prevention (warm blankets, warm IV fluids, warm OR) is a nursing priority intraop.", "Any break in sterile technique must be reported and corrected immediately.", ])) story.append(PageBreak()) # ───────────────────────────────────────────────────────────────────────────── # SECTION 3 — POST-OPERATIVE CARE # ───────────────────────────────────────────────────────────────────────────── story.append(section_header("SECTION 3 — POST-OPERATIVE CARE", NAVY)) story.append(sp(6)) story.append(Paragraph( "The postoperative phase begins when the patient arrives in the PACU and continues " "through discharge and home recovery. Priority nursing assessment focuses on airway, " "breathing, circulation, and early identification of life-threatening complications.", body_style)) story.append(sp(6)) story.append(Paragraph("3.1 Post-Anesthesia Care Unit (PACU) — Phase I", h2_style)) story.append(Paragraph("Initial Assessment — First 5 Minutes (ABC Priority)", h3_style)) story.append(two_col_box( "Airway & Breathing", [ "Patent airway — position HOB 30–45° or lateral if vomiting risk", "Respiratory rate, depth, symmetry of chest expansion", "SpO2: maintain ≥95%; administer O2 per protocol", "Auscultate breath sounds bilaterally", "Watch for laryngospasm: high-pitched crowing → call anesthesia STAT", "Watch for bronchospasm: wheezing → albuterol nebulizer", "Assess for adequate reversal of NMB: strong hand grip, head lift >5 sec", ], "Circulation & Hemodynamics", [ "BP, HR, cardiac rhythm — compare to pre-op baseline", "Assess skin color, temperature, capillary refill", "IV site: patency, infiltration, rate", "Surgical site: inspect dressing — mark and time any drainage", "Drains: character, amount, color of output", "Urine output: minimum 30 mL/hr (0.5 mL/kg/hr)", "Pain: numeric scale 0–10; administer analgesics as ordered", ], LIGHT_BLUE, LIGHT_TEAL )) story.append(sp(4)) story.append(info_box("PACU Handoff Report — SBAR from OR Nurse", [ "Situation: Patient name, surgeon, procedure performed, anesthesia type used", "Background: Relevant medical/surgical history, allergies, baseline vitals", "Assessment: Intraoperative events, blood loss, fluid administered, medications given, specimen sent", "Recommendation: Pain management orders, expected drain output, activity restrictions, IV fluids ordered", ], bg=LIGHT_GRAY, title_color=MID_GRAY)) story.append(sp(6)) story.append(Paragraph("3.2 Aldrete Score — PACU Discharge Criteria", h2_style)) story.append(make_table( ["Category", "Score 2", "Score 1", "Score 0"], [ ["Activity", "Moves all 4 extremities voluntarily or on command", "Moves 2 extremities voluntarily", "Unable to move extremities"], ["Respiration", "Breathes deeply, coughs freely", "Dyspnea, limited breathing", "Apneic"], ["Circulation", "BP ±20 mmHg of pre-op level", "BP ±20–50 mmHg of pre-op level", "BP ±50+ mmHg of pre-op level"], ["Consciousness", "Fully awake", "Arousable on calling", "Not responding"], ["SpO2", "≥92% on room air", "≥90% requires O2", "<90% with O2"], ], col_widths=[4*cm, 4.5*cm, 4.5*cm, 4.4*cm] )) story.append(sp(4)) story.append(nclex_alert("Score of 9–10 out of 10 required before transfer from PACU to surgical floor. " "Score <7 requires continued PACU monitoring.")) story.append(sp(6)) story.append(Paragraph("3.3 Post-Op Complications — Early Recognition & Action", h2_style)) story.append(make_table( ["Complication", "Signs & Symptoms", "Nursing Interventions"], [ ["Airway Obstruction /\nLaryngospasm", "Crowing noise, stridor, retractions, desaturation, cyanosis", "Jaw thrust, oral airway, 100% O2, call anesthesia; succinylcholine may be needed"], ["Respiratory Depression", "RR <10, shallow, SpO2 <90%, hard to arouse", "Stimulate patient; O2; Narcan (naloxone) for opioid reversal; bag-mask if needed"], ["Aspiration", "Tachycardia, fever, crackles, SpO2 drop, cough with food/fluid", "Suction, turn lateral, oxygen, notify MD; NPO until airway assessed"], ["Hypotension", "BP drop >20% from baseline, tachycardia, pallor, decreased urine output", "Assess bleeding, IV fluid bolus per order, Trendelenburg (if not contraindicated), notify surgeon"], ["Hypertension", "BP >20% above baseline, headache, restlessness", "Pain assessment (pain is #1 cause), antihypertensives per order, calm environment"], ["Hemorrhage /\nShock", "Tachycardia, hypotension, pallor, cool clammy skin, declining Hgb, increasing drain output, restlessness", "Apply direct pressure; O2; elevate legs; rapid IV fluids; type & crossmatch; call surgeon STAT; prepare for return to OR"], ["Atelectasis", "Diminished breath sounds, low-grade fever (first 24–48 hr), decreased SpO2", "IS q1h while awake; TCDB q2h; early ambulation; adequate pain control"], ["Pneumonia (Post-op)", "Fever (days 3–5), productive cough, crackles, consolidation on X-ray", "Respiratory care, antibiotics, IS, ambulation, oral hygiene, HOB elevation"], ["Deep Vein\nThrombosis (DVT)", "Calf pain, redness, warmth, swelling (Homans sign unreliable)", "SCDs / TEDs; anticoagulants; early ambulation; avoid trauma to affected limb; assess with Doppler"], ["Pulmonary Embolism (PE)", "Sudden dyspnea, pleuritic chest pain, tachycardia, hemoptysis, anxiety, SpO2 drop", "HIGH PRIORITY: O2, elevate HOB, call MD STAT, prepare for anticoagulation, possible thrombolytics or embolectomy"], ["Urinary Retention", "No void >6–8 hrs post-op, bladder distension, suprapubic pain, restlessness", "Assess bladder volume (bladder scan); encourage voiding; warm water; catheterize if >400 mL or per order"], ["Urinary Tract\nInfection (UTI)", "Burning, frequency, cloudy urine, low-grade fever", "Remove Foley ASAP; urinalysis/culture; antibiotics; encourage fluids"], ["Wound Infection\n(SSI)", "Redness, warmth, swelling, purulent drainage, fever (days 3–5), WBC↑", "Wound culture; antibiotics; wound care; monitor temp; follow standard/contact precautions"], ["Wound Dehiscence", "Wound edges separating, drainage, patient reports 'pop', bowel feels 'different'", "Cover with sterile saline-soaked gauze; position supine with knees flexed; notify surgeon STAT; NPO"], ["Evisceration", "Bowel or organ protruding through incision", "EMERGENCY: Cover with sterile saline-soaked gauze; do NOT push back; call surgeon; prepare for OR; supine/knees flexed"], ["Ileus (Post-op)", "No bowel sounds, no flatus/stool, abdominal distension, nausea/vomiting", "NPO; NGT decompression; IV fluids; early ambulation; chewing gum (evidence-based); avoid excess opioids"], ["Nausea & Vomiting\n(PONV)", "Nausea, vomiting within 24 hr of surgery", "Antiemetics (ondansetron, promethazine); position lateral; clear liquids first; small frequent meals"], ["Hypothermia\n(<36°C)", "Shivering, cold skin, confusion, bradycardia, coagulopathy", "Warm blankets, forced air warming blanket (Bair Hugger), warm IV fluids; monitor temp q30–60 min"], ["Malignant\nHyperthermia (Post-op)", "Muscle rigidity, rising temp, tachycardia, dark urine", "Dantrolene, cooling measures, O2, notify anesthesia STAT (can occur up to 24 hrs post-op)"], ], col_widths=[4.5*cm, 5.5*cm, 7.4*cm] )) story.append(sp(6)) story.append(Paragraph("3.4 Pain Management — Post-Operative", h2_style)) story.append(info_box("Multimodal Pain Management (WHO Stepladder Approach)", [ "Non-opioid analgesics (first line): acetaminophen (Tylenol), NSAIDs (ketorolac/Toradol), gabapentin", "Opioids (moderate–severe): morphine, oxycodone, hydromorphone, fentanyl; least effective dose", "Regional techniques: epidural analgesia, nerve blocks, wound infiltration — reduce opioid need", "PCA (Patient-Controlled Analgesia): IV bolus on demand; nurse sets basal rate and lockout interval; continuous monitoring of respirations required", "Ketorolac (Toradol): IV/IM NSAID; max 5 days; monitor renal function and GI bleeding", "Assess pain q2–4h: use numeric rating, FACES, FLACC (children/nonverbal), CPOT (ICU)", "Document pain: location, quality, intensity, onset, radiation, aggravating/relieving factors", "Reassess 30 min after IV and 60 min after PO/IM medication", ], bg=LIGHT_ORG, title_color=ORANGE)) story.append(sp(4)) story.append(nclex_alert("PCA — nurse should NEVER push the PCA button for a patient. Only the patient presses it. " "Family/caregivers pressing PCA is a safety error known as 'PCA by proxy'.")) story.append(sp(6)) story.append(Paragraph("3.5 Fluid & Electrolyte Management Post-Op", h2_style)) story.append(make_table( ["Condition", "Signs", "Nursing Action"], [ ["Hypovolemia / Dehydration", "Tachycardia, hypotension, dry mucous membranes, decreased urine output, skin turgor poor", "IV fluid bolus per order; monitor I&O; daily weights; report urine <30 mL/hr"], ["Hypervolemia / Fluid Overload", "Crackles, dyspnea, JVD, edema, S3 gallop, weight gain", "HOB up; diuretics per order; restrict fluids; O2; monitor daily weights"], ["Hyponatremia (Na <135)", "Headache, confusion, muscle cramps, seizures, nausea", "Restrict free water; hypertonic saline if severe; monitor neuro status; correct slowly to prevent osmotic demyelination"], ["Hypernatremia (Na >145)", "Restlessness, dry mucous membranes, thirst, confusion, seizures if severe", "Free water replacement (oral or D5W); monitor neuro; correct slowly"], ["Hypokalemia (K <3.5)", "Muscle weakness, leg cramps, dysrhythmias, hypoactive bowel sounds", "PO/IV KCl replacement; never push IV K directly; dilute and infuse slowly; cardiac monitoring"], ["Hyperkalemia (K >5.0)", "Muscle weakness, peaked T waves, wide QRS, cardiac arrest risk", "Calcium gluconate (cardiac protection), insulin + dextrose, kayexalate, dialysis if severe; restrict K"], ], col_widths=[4.5*cm, 5.5*cm, 7.4*cm] )) story.append(sp(6)) story.append(Paragraph("3.6 Wound Care & Drainage", h2_style)) story.append(two_col_box( "Wound Assessment", [ "Inspect dressing q4h and PRN; initial dressing change done by surgeon", "Assess: redness (rubor), warmth (calor), swelling (tumor), pain (dolor), loss of function", "Normal wound drainage: serosanguineous (pink/pale) → serous (clear) progression", "Purulent (green/yellow) or foul-smelling = infection — culture wound", "Dehiscence: wound edges separate; cover with sterile gauze; notify surgeon", "Evisceration: organs outside body — sterile saline gauze, STAT surgeon", "Document wound appearance daily with precise measurements", ], "Surgical Drains", [ "Jackson-Pratt (JP): bulb drain, compressed to create suction; empty when half-full; record output", "Hemovac: flat reservoir; empty when half-full; record output", "Penrose: passive drainage, no suction; open drainage system", "Chest tube: drains pleural space; monitor water-seal; no dependent loops; do not clamp unless ordered", "Nasogastric tube (NGT): decompress stomach; verify placement (X-ray gold standard); check residuals", "T-tube (bile duct): bile drainage post-cholecystectomy; drain should not exceed 500 mL/day", "Wound drains: record color, consistency, amount, odor each shift", ], LIGHT_BLUE, LIGHT_TEAL )) story.append(sp(6)) story.append(Paragraph("3.7 Discharge Planning & Patient Teaching", h2_style)) story.append(info_box("Discharge Teaching — Use Teach-Back Method", [ "Activity restrictions: no driving until off narcotics; specific lifting restrictions per surgery", "Wound care: how to change dressings, signs of infection to watch for", "Diet: advance diet as tolerated; specific restrictions per type of surgery", "Medications: name, dose, frequency, side effects — especially pain medications and antibiotics (complete full course)", "Follow-up appointment: date, time, location — who to call if missed", "When to call MD or go to ER: fever >38.5°C (101.3°F), increased pain uncontrolled by medication, wound bleeding that won't stop with pressure, shortness of breath, calf pain or swelling (DVT)", "DVT prevention: ambulate regularly, calf exercises, stay hydrated, compression stockings", "Incentive spirometry: continue at home until full mobility restored", "Psychological support: mood changes and fatigue are normal — provide resources", "Teach-back: 'Can you tell me in your own words what you will do if your wound opens up?'", ], bg=LIGHT_TEAL, title_color=TEAL)) story.append(sp(6)) story.append(key_point_box([ "Airway, breathing, circulation are ALWAYS the first priority in PACU.", "Aldrete score of 9–10 needed before PACU discharge to floor.", "First 24–48 hours: low-grade fever = atelectasis (not infection) — treat with IS and TCDB.", "Fever on days 3–5 = wound infection most likely; days 7–10 = wound dehiscence risk.", "Evisceration = cover with saline gauze + call surgeon STAT — never push organs back.", "Minimum urine output = 30 mL/hr = 0.5 mL/kg/hr — report less to physician.", "PCA button = patient ONLY; verify respirations q2h on PCA (respiratory depression risk).", "DVT prophylaxis: SCDs + early ambulation + anticoagulation = standard of care.", ])) story.append(PageBreak()) # ───────────────────────────────────────────────────────────────────────────── # SECTION 4 — QUICK REFERENCE COMPARISON # ───────────────────────────────────────────────────────────────────────────── story.append(section_header("SECTION 4 — QUICK REFERENCE & NCLEX TIPS", HexColor("#6a1b9a"))) story.append(sp(6)) story.append(Paragraph("4.1 Complications Timeline", h2_style)) story.append(make_table( ["Time Post-Op", "Most Likely Complication", "Priority Action"], [ ["Immediate\n(in OR / PACU)", "Malignant hyperthermia, laryngospasm, aspiration, hypotension, hemorrhagic shock", "ABC; dantrolene for MH; suction; fluids; call surgeon"], ["First 24 hours", "Hemorrhage, shock, respiratory depression, laryngospasm, hypothermia, PONV, urinary retention", "Airway management; hemorrhage control; Narcan for opioid depression; Foley if retention"], ["24–48 hours", "Atelectasis, low-grade fever (wind), fluid imbalance", "IS, TCDB q2h, ambulation, fever = atelectasis NOT infection"], ["3–5 days", "Wound infection (SSI), pneumonia, ileus resolution expected", "Culture wound; antibiotics; auscultate bowel sounds; ambulate"], ["5–7 days", "DVT, wound dehiscence, UTI from Foley", "Anticoagulation; wound assessment; remove Foley ASAP"], ["7–10 days", "PE (emboli from DVT), wound dehiscence/evisceration", "SpO2, respiratory assessment; wound integrity check"], ], col_widths=[3.5*cm, 7*cm, 6.9*cm] )) story.append(sp(6)) story.append(Paragraph("4.2 '5 W's' of Post-Op Fever — NCLEX Classic", h2_style)) story.append(make_table( ["Day", "W", "Cause", "Management"], [ ["Days 1–2", "Wind", "Atelectasis (respiratory)", "IS, TCDB, ambulate, O2"], ["Days 3–5", "Water", "Urinary tract infection", "UA, culture, antibiotics, remove Foley"], ["Days 3–5", "Wound", "Surgical site infection", "Culture wound, antibiotics, wound care"], ["Days 5–7", "Walking", "DVT (venous)", "Doppler ultrasound, anticoagulation, ambulation"], ["Days 7+", "Wonder drugs", "Drug fever or IV line infection", "Review medications, change IV sites q72–96h"], ], col_widths=[2.5*cm, 2.5*cm, 5.5*cm, 6.9*cm] )) story.append(sp(6)) story.append(Paragraph("4.3 Must-Know Drugs — Perioperative NCLEX", h2_style)) story.append(make_table( ["Drug", "Action", "NCLEX Pearl"], [ ["Naloxone (Narcan)", "Opioid antagonist — reverses respiratory depression", "Give if RR <10; have resuscitation ready; short-acting — may need repeat doses; monitor for re-sedation"], ["Flumazenil (Romazicon)", "Benzodiazepine antagonist", "Reverses midazolam sedation; shorter acting than BZD — re-sedation possible; have O2 ready"], ["Dantrolene (Dantrium)", "Inhibits Ca²⁺ release → treats MH", "ONLY treatment for MH; 2.5 mg/kg IV, repeat q5 min; mix with sterile water; stock 36 vials minimum"], ["Atropine", "Anticholinergic — increases HR", "Give for bradycardia; monitor for urinary retention, dry mouth, tachycardia, constipation"], ["Neostigmine", "Acetylcholinesterase inhibitor — reverses NMB", "Given with glycopyrrolate to prevent bradycardia; confirm TOF ratio before extubation"], ["Ketorolac (Toradol)", "NSAID analgesic — reduces opioid need", "Max 5 days; monitor renal function; avoid in bleeding risk or peptic ulcer history"], ["Cefazolin (Ancef)", "Prophylactic antibiotic (pre-op)", "Give within 60 min of incision; redose every 4 hrs if surgery >3 hrs; reduces SSI risk"], ["Ondansetron (Zofran)", "5-HT3 antagonist antiemetic", "Prevents PONV; monitor QT interval; first-line for post-op nausea"], ["Heparin / Enoxaparin", "Anticoagulant — DVT prophylaxis", "Monitor aPTT (heparin) or anti-Xa (enoxaparin); antidote: protamine sulfate (heparin)"], ["Protamine Sulfate", "Heparin antidote", "Risk of hypotension and anaphylaxis; have epinephrine ready; given slowly IV"], ], col_widths=[4*cm, 4.5*cm, 8.9*cm] )) story.append(sp(6)) story.append(Paragraph("4.4 High-Priority NCLEX Perioperative Questions", h2_style)) story.append(make_table( ["Scenario", "Priority Action"], [ ["Patient ate 4 hours ago; was scheduled for surgery in 1 hour", "Notify surgeon and anesthesiologist immediately; surgery will likely be postponed"], ["Patient asks nurse to explain risks of surgery", "Tell patient the surgeon will answer — it is NOT the nurse's role to explain surgical risks"], ["Patient changes mind about surgery after pre-op sedation given", "Surgeon must be notified; if sedation was given before consent, consent may be invalid"], ["PACU patient: SpO2 drop to 88%, crowing sound on inspiration", "Airway obstruction — jaw thrust, oral airway, 100% O2, call anesthesia stat"], ["Post-op day 1 patient has temperature of 38.1°C (100.6°F)", "Expect atelectasis — encourage IS and TCDB; this is NOT infection yet"], ["Sponge count incorrect at wound closure time", "Stop closure; notify surgeon; may require X-ray; document incident"], ["Patient reports intense calf pain and swelling on day 5", "Suspect DVT — do not massage; apply compression stockings only if ordered; notify MD; prepare for Doppler"], ["Patient suddenly has bowel protruding from abdominal wound", "Evisceration: cover with sterile saline-soaked gauze, call surgeon STAT, keep patient supine with knees flexed, NPO"], ["Family member wants to push PCA button for patient asleep", "Educate: PCA is for PATIENT USE ONLY — safety risk if family pushes button (over-sedation, respiratory depression)"], ["Patient in OR has rising ETCO2 and muscle rigidity", "Malignant hyperthermia — stop trigger agents, dantrolene 2.5 mg/kg IV, cooling, 100% O2"], ["Post-op patient has urine output 20 mL for last hour", "Report to physician immediately — minimum is 30 mL/hr; assess for fluid status, foley patency, hemorrhage"], ["Wound edges separating on day 6, no organ protruding", "Dehiscence: cover with sterile gauze (not saline unless instructed), notify surgeon, keep patient at rest"], ], col_widths=[8*cm, 9.4*cm] )) story.append(sp(8)) # ─── Footer box ──────────────────────────────────────────────────────────────── footer_data = [[ Paragraph( "Prepared by Orris Medical AI · July 2026 · For NCLEX-RN Study Use · " "Based on clinical standards and Pye's Surgical Handicraft, Cummings Otolaryngology, " "Miller's Anesthesia, and Schwartz's Principles of Surgery", style("Footer", fontSize=8, fontName="Helvetica", textColor=HexColor("#cccccc"), alignment=TA_CENTER, leading=11)) ]] footer_t = Table(footer_data, colWidths=[17.4*cm]) footer_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 10), ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 12), ])) story.append(footer_t) # ─── Build ──────────────────────────────────────────────────────────────────── doc.build(story) print(f"PDF saved to: {PDF_PATH}") PYEOF echo "Script written successfully"
Failed to create session: unauthorized: authentication failed: Bearer token is invalid
We encountered an error while processing your request. Please try again or reach out to us for help.