Kindly make for me a pDF for things I need to know about the NBU ,for assessment ,including common diseases in new born ,abnormal findings in a new born ,management of those diseases , medications in new born unit ,resuscitation of neonates ,common drugs and their classes, and any other things I need to know for assessment
mkdir -p /tmp/workspace/nbu-guide && python3 << '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.pdfgen import canvas output_path = "/tmp/workspace/nbu-guide/NBU_Assessment_Guide.pdf" # Color palette NAVY = colors.HexColor("#1A3C6E") TEAL = colors.HexColor("#0D7377") LIGHT_TEAL = colors.HexColor("#E8F7F7") AMBER = colors.HexColor("#D4860B") LIGHT_AMBER = colors.HexColor("#FFF8E7") RED = colors.HexColor("#C0392B") LIGHT_RED = colors.HexColor("#FDECEA") GREEN = colors.HexColor("#1E8449") LIGHT_GREEN = colors.HexColor("#E9F7EF") LIGHT_GREY = colors.HexColor("#F2F4F7") MID_GREY = colors.HexColor("#BDC3C7") WHITE = colors.white DARK = colors.HexColor("#2C3E50") styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle("Title", parent=styles["Normal"], fontSize=24, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER, spaceAfter=6, leading=30) subtitle_style = ParagraphStyle("Subtitle", parent=styles["Normal"], fontSize=13, fontName="Helvetica", textColor=colors.HexColor("#D6EAF8"), alignment=TA_CENTER, spaceAfter=4, leading=18) h1_style = ParagraphStyle("H1", parent=styles["Normal"], fontSize=15, fontName="Helvetica-Bold", textColor=WHITE, spaceAfter=4, spaceBefore=8, leading=20) h2_style = ParagraphStyle("H2", parent=styles["Normal"], fontSize=12, fontName="Helvetica-Bold", textColor=NAVY, spaceAfter=4, spaceBefore=6, leading=16) h3_style = ParagraphStyle("H3", parent=styles["Normal"], fontSize=10.5, fontName="Helvetica-Bold", textColor=TEAL, spaceAfter=3, spaceBefore=4, leading=14) body_style = ParagraphStyle("Body", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica", textColor=DARK, spaceAfter=3, leading=14, alignment=TA_JUSTIFY) bullet_style = ParagraphStyle("Bullet", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica", textColor=DARK, spaceAfter=2, leading=13, leftIndent=14, firstLineIndent=-10) bold_style = ParagraphStyle("Bold", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica-Bold", textColor=DARK, spaceAfter=2, leading=13) note_style = ParagraphStyle("Note", parent=styles["Normal"], fontSize=9, fontName="Helvetica-Oblique", textColor=colors.HexColor("#555555"), spaceAfter=3, leading=13, alignment=TA_JUSTIFY) warning_style = ParagraphStyle("Warning", parent=styles["Normal"], fontSize=9.5, fontName="Helvetica-Bold", textColor=RED, spaceAfter=3, leading=13, alignment=TA_LEFT) def section_header(title, bg_color=NAVY): data = [[Paragraph(title, h1_style)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), bg_color), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 12), ("ROUNDEDCORNERS", [5,5,5,5]), ])) return t def subsection_box(title, color=LIGHT_TEAL, border_color=TEAL): data = [[Paragraph(title, h2_style)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), color), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ("LINEBELOW", (0,0), (-1,-1), 1.5, border_color), ])) return t def info_box(text, bg=LIGHT_GREEN, border=GREEN): data = [[Paragraph(text, body_style)]] t = Table(data, colWidths=[17*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), ("LINEALL", (0,0), (-1,-1), 1, border), ])) return t def b(text): return f"<b>{text}</b>" def bullet(text): return Paragraph(f"• {text}", bullet_style) story = [] # ============================================================ # COVER PAGE # ============================================================ cover_data = [[Paragraph("NEWBORN UNIT (NBU)", title_style)], [Paragraph("Comprehensive Assessment Study Guide", subtitle_style)], [Paragraph("Neonatal Nursing & Clinical Care", subtitle_style)]] cover_table = Table(cover_data, colWidths=[17*cm]) cover_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), NAVY), ("TOPPADDING", (0,0), (0,0), 30), ("BOTTOMPADDING", (0,0), (0,0), 6), ("TOPPADDING", (0,1), (0,1), 6), ("BOTTOMPADDING", (0,1), (0,1), 6), ("TOPPADDING", (0,2), (0,2), 0), ("BOTTOMPADDING", (0,2), (0,2), 30), ("LEFTPADDING", (0,0), (-1,-1), 12), ("RIGHTPADDING", (0,0), (-1,-1), 12), ("ROUNDEDCORNERS", [10,10,10,10]), ])) story.append(Spacer(1, 2*cm)) story.append(cover_table) story.append(Spacer(1, 1*cm)) # Decorative info strip info_items = [["Date:", "August 2026"], ["Level:", "NBU / NICU Clinical Assessment"], ["Prepared by:", "Orris Medical AI"]] info_table_cover = Table(info_items, colWidths=[5*cm, 12*cm]) info_table_cover.setStyle(TableStyle([ ("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"), ("FONTNAME", (1,0), (1,-1), "Helvetica"), ("FONTSIZE", (0,0), (-1,-1), 10), ("TEXTCOLOR", (0,0), (-1,-1), DARK), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LINEABOVE", (0,0), (-1,0), 1, MID_GREY), ("LINEBELOW", (0,-1), (-1,-1), 1, MID_GREY), ])) story.append(info_table_cover) story.append(Spacer(1, 0.5*cm)) # Table of contents toc_data = [ [Paragraph("<b>CONTENTS</b>", h2_style)], [Paragraph("1. Normal Newborn Assessment & Vital Signs", body_style)], [Paragraph("2. Common Diseases in the Newborn Unit", body_style)], [Paragraph("3. Abnormal Findings in the Newborn", body_style)], [Paragraph("4. Management of Neonatal Conditions", body_style)], [Paragraph("5. Neonatal Resuscitation (NRP Algorithm)", body_style)], [Paragraph("6. Medications Used in the NBU", body_style)], [Paragraph("7. Common Drug Classes & Their Actions", body_style)], [Paragraph("8. Phototherapy & Jaundice Management", body_style)], [Paragraph("9. APGAR Score", body_style)], [Paragraph("10. Key Assessment Tips & Red Flags", body_style)], ] toc_table = Table(toc_data, colWidths=[17*cm]) toc_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), LIGHT_GREY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 12), ("LINEBELOW", (0,0), (-1,-1), 0.5, MID_GREY), ])) story.append(toc_table) story.append(PageBreak()) # ============================================================ # SECTION 1 - NORMAL NEWBORN ASSESSMENT # ============================================================ story.append(section_header("1. NORMAL NEWBORN ASSESSMENT & VITAL SIGNS")) story.append(Spacer(1, 6)) story.append(subsection_box("Normal Vital Signs at Birth (Term Infant)")) vitals_data = [ [b("Parameter"), b("Normal Range"), b("Notes")], ["Heart Rate", "120 – 160 bpm", "May drop briefly to 100 bpm during sleep"], ["Respiratory Rate", "40 – 60 breaths/min", "Periodic breathing is normal"], ["Temperature", "36.5 – 37.5°C axillary", "Use axillary; avoid rectal in premature"], ["Blood Pressure (systolic)", "60 – 90 mmHg", "≈ gestational age in weeks for MAP"], ["SpO2 (after 10 min of birth)", "≥ 95%", "May be 60–80% in first minute"], ["Weight (term)", "2.5 – 4.0 kg", "Expect ~10% weight loss in first week"], ["Blood Glucose", "> 40 mg/dL", "Screen if symptomatic or at-risk"], ] vt = Table(vitals_data, colWidths=[5*cm, 5.5*cm, 6.5*cm]) vt.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9.5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(vt) story.append(Spacer(1, 6)) story.append(subsection_box("Normal Physical Examination Findings")) exam_items = [ ("Head:", "Molding, caput succedaneum, cephalohematoma may be present after vaginal delivery. Fontanelles should be soft and flat."), ("Eyes:", "Subconjunctival hemorrhages are normal. Slate-grey irises are common in all newborns."), ("Skin:", "Vernix caseosa (waxy coating), milia (white dots on nose/cheeks), Mongolian spots (blue-grey patches – benign), erythema toxicum (red blotchy rash – benign), lanugo (fine hair)."), ("Chest:", "Breast engorgement in both sexes (maternal hormones). Respiratory rate 40–60/min."), ("Abdomen:", "Cord clamp present; should dry and fall off by day 5–15. Umbilicus should be clean with no redness."), ("Genitalia:", "Female: prominent labia due to maternal estrogen, vaginal discharge (normal). Male: testes should be descended; foreskin non-retractable."), ("Neurology:", "Primitive reflexes present – Moro, rooting, sucking, palmar/plantar grasp, Babinski, stepping."), ] for label, desc in exam_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 0.4*cm)) # ============================================================ # SECTION 2 - COMMON DISEASES # ============================================================ story.append(PageBreak()) story.append(section_header("2. COMMON DISEASES IN THE NEWBORN UNIT")) story.append(Spacer(1, 6)) diseases = [ { "name": "Neonatal Jaundice (Hyperbilirubinemia)", "color": LIGHT_AMBER, "border": AMBER, "content": [ ("Definition:", "Yellow discolouration of skin/sclera due to elevated bilirubin (>5 mg/dL visible; >12 mg/dL in term; >15 mg/dL requires treatment usually)."), ("Types:", "Physiological (appears day 2–3, peaks day 4–5, resolves by day 14) vs Pathological (appears <24h, persists >14 days, or rapid rise >0.5 mg/dL/hr)."), ("Causes:", "ABO/Rh incompatibility, G6PD deficiency, sepsis, breast milk jaundice, polycythemia, hypothyroidism, biliary atresia."), ("Risk of untreated:", "Kernicterus – bilirubin crosses BBB causing irreversible brain damage (hearing loss, cerebral palsy, death)."), ] }, { "name": "Neonatal Sepsis", "color": LIGHT_RED, "border": RED, "content": [ ("Definition:", "Systemic infection in the first 28 days of life. Most common cause of neonatal cardiorespiratory distress."), ("Early-onset (<7 days):", "Maternal risk factors – GBS colonisation, prolonged ROM, maternal fever, chorioamnionitis. Organisms: GBS, E. coli, Listeria."), ("Late-onset (>7 days):", "Hospital-acquired; organisms: Staph. aureus, coagulase-negative Staph, Klebsiella, Pseudomonas, Candida."), ("Signs (Table 116-3):", "Temperature instability, lethargy, poor feeding, apnea, tachypnea, grunting, jaundice, rashes, seizures."), ] }, { "name": "Respiratory Distress Syndrome (RDS) / Hyaline Membrane Disease", "color": LIGHT_TEAL, "border": TEAL, "content": [ ("Cause:", "Surfactant deficiency in premature infants (<35 weeks gestation). Surfactant reduces alveolar surface tension."), ("Signs:", "Tachypnea, grunting, nasal flaring, intercostal/subcostal retractions, cyanosis, within first 4 hours of birth."), ("CXR:", "Ground-glass appearance, air bronchograms, low lung volumes, reticulogranular pattern."), ("Treatment:", "Exogenous surfactant (beractant/poractant), CPAP, mechanical ventilation, oxygen therapy."), ] }, { "name": "Neonatal Hypoglycemia", "color": LIGHT_GREEN, "border": GREEN, "content": [ ("Definition:", "Blood glucose <40 mg/dL in term/late preterm infants."), ("Risk groups:", "IDM (infant of diabetic mother), IUGR, prematurity, asphyxia, hypothermia, polycythemia."), ("Signs:", "Jitteriness, tremors, hypotonia, poor feeding, apnea, cyanosis, seizures, lethargy."), ("Treatment:", "If symptomatic: IV dextrose 10% at 2 mL/kg (200 mg/kg). Then continuous dextrose infusion at 4–6 mg/kg/min."), ] }, { "name": "Birth Asphyxia / Hypoxic Ischaemic Encephalopathy (HIE)", "color": LIGHT_AMBER, "border": AMBER, "content": [ ("Definition:", "Failure of adequate oxygenation at birth resulting in multi-organ damage."), ("Signs:", "Low APGAR scores, absent or poor respiratory effort, poor tone, encephalopathy (seizures, altered consciousness)."), ("Grading (Sarnat):", "Mild (Grade I) – hyperalertness, exaggerated Moro; Moderate (II) – stupor, seizures; Severe (III) – coma, flaccidity."), ("Management:", "Therapeutic hypothermia (cooling to 33–34°C for 72 hrs) if >36 weeks and <6 hrs of age; supportive care."), ] }, { "name": "Neonatal Meningitis", "color": LIGHT_RED, "border": RED, "content": [ ("Organisms:", "GBS, E. coli, Listeria, Staph aureus (late-onset)."), ("Signs:", "Bulging fontanelle, seizures, high-pitched cry, hyperthermia or hypothermia, irritability – NB: neck stiffness is RARE in neonates."), ("Diagnosis:", "Lumbar puncture (CSF – elevated WBC, elevated protein, low glucose)."), ("Treatment:", "Ampicillin + cefotaxime (or aminoglycoside). Duration: 14–21 days for GBS, 21 days for Gram-negatives."), ] }, { "name": "Necrotising Enterocolitis (NEC)", "color": LIGHT_TEAL, "border": TEAL, "content": [ ("Definition:", "Intestinal inflammation and necrosis; predominantly in premature infants."), ("Signs:", "Abdominal distension, bloody stools, bilious vomiting, tenderness, temperature instability, apnea."), ("Bell Staging:", "I – Suspected (mild); II – Confirmed (pneumatosis on X-ray); III – Advanced (perforation, peritonitis)."), ("Treatment:", "Bowel rest, NG decompression, IV antibiotics (Ampicillin + Gentamicin + Metronidazole), surgery if perforation."), ] }, { "name": "Transient Tachypnoea of the Newborn (TTN)", "color": LIGHT_GREEN, "border": GREEN, "content": [ ("Cause:", "Delayed clearance of fetal lung fluid; common in Caesarean section births."), ("Signs:", "Tachypnea (>60/min), mild grunting, retractions – onset in first few hours, resolves in 24–72 hours."), ("CXR:", "Perihilar streaking, fluid in fissures, wet lungs."), ("Treatment:", "Supportive – supplemental oxygen, CPAP if needed. Generally resolves spontaneously."), ] }, { "name": "Meconium Aspiration Syndrome (MAS)", "color": LIGHT_AMBER, "border": AMBER, "content": [ ("Cause:", "Aspiration of meconium-stained amniotic fluid (MSAF) into the airways, causing obstruction & inflammation."), ("Signs:", "Yellow-green stained skin/nails/cord, respiratory distress from birth, barrel-chest, hyperinflation."), ("CXR:", "Hyperinflation, patchy infiltrates, pneumothorax possible."), ("Treatment:", "Supportive O2, CPAP/ventilation, surfactant therapy, antibiotics; NO routine endotracheal suctioning unless obstruction suspected."), ] }, { "name": "Neonatal Conjunctivitis (Ophthalmia Neonatorum)", "color": LIGHT_TEAL, "border": TEAL, "content": [ ("Chemical (day 1):", "From silver nitrate/eye prophylaxis – no treatment needed."), ("Gonococcal (day 3–5):", "Profuse purulent discharge; can cause corneal ulceration/blindness. Treat: Cefotaxime 50 mg/kg IV/IM (NOT ceftriaxone – displaces bilirubin)."), ("Chlamydial (day 5–14):", "Mucopurulent discharge, lid swelling. Treat: Oral erythromycin 50 mg/kg/day in 4 doses × 14 days."), ("Herpes (HSV):", "Vesicles + discharge. Treat: Aciclovir 20 mg/kg/dose TDS × 14–21 days."), ] }, { "name": "Patent Ductus Arteriosus (PDA)", "color": LIGHT_RED, "border": RED, "content": [ ("Definition:", "Failure of the ductus arteriosus to close after birth; common in preterm infants."), ("Signs:", "Continuous 'machinery' murmur, bounding pulses, wide pulse pressure, hyperactive precordium."), ("Effects:", "Left-to-right shunt causing pulmonary overcirculation, respiratory deterioration, heart failure."), ("Treatment:", "Indomethacin or ibuprofen (NSAIDs – inhibit prostaglandins); surgical ligation if medical treatment fails."), ] }, ] for d in diseases: story.append(KeepTogether([ subsection_box(d["name"], color=d["color"], border_color=d["border"]), *[bullet(f"{b(label)} {desc}") for label, desc in d["content"]], Spacer(1, 5), ])) # ============================================================ # SECTION 3 - ABNORMAL FINDINGS # ============================================================ story.append(PageBreak()) story.append(section_header("3. ABNORMAL FINDINGS IN THE NEWBORN")) story.append(Spacer(1, 6)) story.append(subsection_box("Head & Neurological Abnormalities")) head_items = [ ("Cephalohematoma:", "Subperiosteal haemorrhage – does NOT cross suture lines; resolves in weeks; may cause jaundice."), ("Caput Succedaneum:", "Oedema crossing suture lines; resolves in 24–48 hours. Normal after vaginal delivery."), ("Bulging Fontanelle:", "Suggests raised intracranial pressure – meningitis, hydrocephalus, encephalopathy."), ("Sunken Fontanelle:", "Dehydration."), ("Microcephaly:", "HC < 2 SD below mean; TORCH infections, genetic, teratogens."), ("Abnormal Tone:", "Hypotonia ('floppy baby') – HIE, sepsis, hypothyroidism, Trisomy 21, neuromuscular disease."), ("Neonatal Seizures:", "Subtle signs – eye deviation, lip smacking, cycling movements, apnea. Causes: HIE, hypoglycemia, hypocalcemia, meningitis, stroke."), ] for label, desc in head_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) story.append(subsection_box("Respiratory Abnormalities")) resp_items = [ ("Tachypnea:", "RR > 60/min – sepsis, RDS, TTN, MAS, congenital heart disease."), ("Grunting:", "Expiratory sound = attempt to maintain FRC; serious sign of respiratory distress."), ("Nasal Flaring:", "Increased respiratory effort."), ("Retractions:", "Sub/intercostal, subcostal – poor lung compliance (RDS, pneumonia)."), ("Cyanosis:", "Central cyanosis = serious – congenital heart disease, pneumonia, respiratory failure."), ("Apnea:", "Cessation of breathing > 20 sec or with bradycardia/desaturation – sepsis, prematurity, HIE."), ("Stridor:", "Inspiratory – laryngomalacia (most common), subglottic stenosis, tracheomalacia, vascular ring."), ] for label, desc in resp_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) story.append(subsection_box("Skin Abnormalities")) skin_items = [ ("Jaundice:", "Pathological if < 24 hrs or prolonged; check bilirubin levels."), ("Pallor:", "Anaemia, hypovolaemia, asphyxia."), ("Plethora (ruddy):", "Polycythemia – IDM, delayed cord clamping."), ("Petechiae/Purpura:", "Sepsis, TORCH infections, thrombocytopenia, DIC."), ("Vesicles:", "Herpes simplex – urgent aciclovir."), ("Port-wine stain:", "Capillary malformation – Sturge-Weber if facial, associated with neurological complications."), ("Umbilical redness:", "Omphalitis – spreading erythema + discharge = emergency; IV antibiotics required."), ] for label, desc in skin_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) story.append(subsection_box("GI / Abdominal Abnormalities")) gi_items = [ ("Bilious vomiting:", "ALWAYS pathological – intestinal obstruction (malrotation, volvulus, atresia) until proven otherwise."), ("Abdominal distension:", "NEC, Hirschsprung's disease, bowel obstruction, ascites."), ("Delayed meconium passage:", "No meconium in 24–48 hrs – Hirschsprung's disease, cystic fibrosis, anorectal malformation."), ("Omphalitis:", "Infection of umbilical stump; requires IV antibiotics."), ("Hernias:", "Umbilical hernia – usually resolves. Inguinal hernia – risk of incarceration; refer for repair."), ] for label, desc in gi_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) story.append(subsection_box("Cardiovascular Abnormalities")) cv_items = [ ("Murmurs:", "Systolic murmur at left sternal border – VSD, PDA, ASD. Evaluate with echo."), ("Central cyanosis:", "Cyanotic CHD – Tetralogy of Fallot, Transposition of Great Arteries (TGA), Tricuspid atresia."), ("Absent/weak femoral pulses:", "Coarctation of aorta."), ("Bounding pulses:", "PDA."), ("Hyperoxia test:", "Give 100% O2 for 10 min – no improvement in SpO2 = cardiac cause likely."), ] for label, desc in cv_items: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) # ============================================================ # SECTION 4 - MANAGEMENT # ============================================================ story.append(PageBreak()) story.append(section_header("4. MANAGEMENT OF NEONATAL CONDITIONS")) story.append(Spacer(1, 6)) mgmt_data = [ [b("Condition"), b("Key Management Steps")], ["Neonatal Sepsis", "• Blood/urine/CSF cultures before antibiotics\n• Ampicillin + Gentamicin (first-line empiric)\n• Cefotaxime if meningitis suspected\n• IV fluids, glucose support\n• Monitor temperature, HR, RR, BP"], ["Neonatal Jaundice", "• Monitor serum bilirubin levels\n• Phototherapy when level exceeds age-specific threshold\n• Exchange transfusion if bilirubin dangerously elevated or rising rapidly\n• IV fluids; treat underlying cause (ABO incompatibility → Rh immunoglobulin in next pregnancy)\n• Discontinue breastfeeding temporarily if breast milk jaundice suspected"], ["RDS / Prematurity", "• Exogenous surfactant (beractant/poractant alfa) via ETT ASAP\n• CPAP / mechanical ventilation\n• Oxygen therapy (titrate SpO2 91–95%)\n• Keep warm (radiant warmer / incubator)\n• Antenatal corticosteroids (betamethasone) if <34 weeks"], ["Hypoglycemia", "• Asymptomatic & glucose >25: frequent feeds (every 1–2 hrs)\n• Symptomatic or glucose <40: IV Dextrose 10% bolus 2 mL/kg\n• Maintenance GIR 4–8 mg/kg/min\n• Recheck glucose every 30–60 min until stable"], ["Birth Asphyxia / HIE", "• Immediate resuscitation at birth (NRP algorithm)\n• Therapeutic hypothermia 33–34°C for 72 hrs (if >36 weeks, <6 hrs, meets criteria)\n• Anticonvulsants for seizures (phenobarbital)\n• Correct electrolytes, glucose, calcium\n• Monitoring: EEG, cranial US, MRI after 72 hrs"], ["NEC", "• Nil by mouth; NG tube decompression\n• IV nutrition (TPN)\n• IV antibiotics: Ampicillin + Gentamicin + Metronidazole\n• Serial abdominal X-rays\n• Surgical consult if deterioration or perforation (Stage III)"], ["Meningitis", "• LP for CSF (do not delay antibiotics if infant unstable)\n• Ampicillin + Cefotaxime IV\n• Dexamethasone – not routinely used in neonates\n• Duration: 14–21 days GBS; 21 days Gram-negative\n• Monitor for hydrocephalus, hearing loss"], ["HIE Seizures", "• Phenobarbital 20 mg/kg IV loading dose (first-line)\n• If persisting: Phenytoin 20 mg/kg IV or levetiracetam\n• Treat underlying cause (glucose, calcium, pyridoxine)\n• EEG monitoring"], ["Hypothermia", "• Dry and wrap immediately at birth\n• Radiant warmer or skin-to-skin with mother\n• Warm IV fluids\n• Monitor temperature every 30 min until normothermic\n• Investigate for sepsis if spontaneous hypothermia"], ["Neonatal Conjunctivitis", "• Gonococcal: Cefotaxime 50 mg/kg IV/IM (not ceftriaxone) + saline irrigation\n• Chlamydial: Oral erythromycin 50 mg/kg/day × 14 days\n• HSV: Aciclovir 20 mg/kg/dose TDS × 14–21 days\n• Prophylaxis: Erythromycin ointment at birth"], ] mt = Table(mgmt_data, colWidths=[5*cm, 12*cm]) mt.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 6), ("RIGHTPADDING", (0,0), (-1,-1), 6), ])) story.append(mt) # ============================================================ # SECTION 5 - NEONATAL RESUSCITATION # ============================================================ story.append(PageBreak()) story.append(section_header("5. NEONATAL RESUSCITATION (NRP ALGORITHM)", bg_color=RED)) story.append(Spacer(1, 6)) story.append(info_box( "<b>Key Principle:</b> Neonatal resuscitation is almost entirely RESPIRATORY management. " "~10% of newborns need some assistance at birth; only 1% need extensive resuscitation. " "The most common cause of bradycardia is inadequate ventilation, not cardiac arrest.", bg=LIGHT_RED, border=RED )) story.append(Spacer(1, 6)) story.append(subsection_box("Initial Steps (First 60 Seconds = 'Golden Minute')")) steps = [ "Warm – radiant warmer, pre-warmed towels; prevent heat loss.", "Dry – rub vigorously to dry and stimulate. Remove wet towels.", "Position – neutral neck position; slight neck extension to open airway.", "Suction – only if secretions obstructing airway; mouth first, then nose.", "Stimulate – flick soles of feet, rub back. Do NOT use overly forceful stimulation.", "Assess: Tone, Breathing/Crying, Heart Rate.", "Apply pulse oximetry (right hand – preductal) and ECG leads for accurate HR.", ] for i, s in enumerate(steps, 1): story.append(bullet(f"{b(str(i)+'.') } {s}")) story.append(Spacer(1, 5)) story.append(subsection_box("Decision Tree", color=LIGHT_AMBER, border_color=AMBER)) decision_data = [ [b("Assessment"), b("Action")], ["Breathing, HR ≥ 100, Good Tone", "Routine care. Observe."], ["Not breathing, HR < 100, or Poor Tone", "Positive Pressure Ventilation (PPV) via face mask; start with air (21% O2 for term)"], ["HR < 60 after 30 sec of good PPV", "Intubate if not done; Start chest compressions (3:1 ratio)"], ["HR still < 60 after 60 sec of CPR", "Adrenaline (epinephrine) via UVC or ETT"], ["Persistent bradycardia despite epinephrine", "Volume expansion (Normal saline 10 mL/kg over 5–10 min) if blood loss suspected"], ] dt = Table(decision_data, colWidths=[7*cm, 10*cm]) dt.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), AMBER), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9.5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_AMBER]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(dt) story.append(Spacer(1, 6)) story.append(subsection_box("Positive Pressure Ventilation (PPV)")) ppv = [ ("Rate:", "40–60 breaths per minute."), ("Starting pressure:", "20–25 cmH2O for term; 20–30 cmH2O may be needed for premature."), ("FiO2:", "Start at 21% (room air) for term. Use blended O2 for premature; titrate to target SpO2."), ("Check effectiveness:", "Rising HR is best indicator; chest rise should be subtle, not excessive."), ("Target SpO2:", "1 min: 60–65%; 2 min: 65–70%; 3 min: 70–75%; 4 min: 75–80%; 5 min: 80–85%; 10 min: 85–95%."), ] for label, desc in ppv: story.append(bullet(f"{b(label)} {desc}")) story.append(Spacer(1, 5)) story.append(subsection_box("Chest Compressions")) cc = [ "Indication: HR < 60 bpm after 30 sec of adequate PPV.", "Technique: 2-thumb encircling hands method (preferred) OR 2-finger technique.", "Depth: One-third of anterior-posterior chest diameter.", "Rate: 3 compressions : 1 breath (90 compressions + 30 breaths = 120 events/min).", "Coordinate with ventilation – do not compress simultaneously with breaths.", "Intubate if not already done to ensure effective ventilation.", ] for c in cc: story.append(bullet(c)) story.append(Spacer(1, 5)) story.append(subsection_box("Drugs in Resuscitation")) resus_drug_data = [ [b("Drug"), b("Dose"), b("Route"), b("Indication")], ["Adrenaline (Epinephrine)", "0.1–0.3 mL/kg of 1:10,000 (0.01–0.03 mg/kg)", "IV (UVC preferred); ETT 0.5–1 mL/kg of 1:10,000", "HR < 60 despite CPR"], ["Normal Saline (0.9%)", "10 mL/kg over 5–10 min", "IV", "Hypovolaemia / shock"], ["Naloxone", "0.1 mg/kg", "IV/IM", "Respiratory depression from maternal opioids only (do NOT use routinely)"], ["Sodium Bicarbonate", "1–2 mEq/kg (diluted)", "IV slowly", "Documented metabolic acidosis (prolonged resuscitation only)"], ["Dextrose 10%", "2 mL/kg bolus", "IV", "Hypoglycaemia"], ] rdt = Table(resus_drug_data, colWidths=[4.5*cm, 4.5*cm, 3*cm, 5*cm]) rdt.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), RED), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 8.5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_RED]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 5), ])) story.append(rdt) # ============================================================ # SECTION 6 - MEDICATIONS IN NBU # ============================================================ story.append(PageBreak()) story.append(section_header("6. MEDICATIONS COMMONLY USED IN THE NBU")) story.append(Spacer(1, 6)) meds_data = [ [b("Drug"), b("Class"), b("Dose / Route"), b("Indication"), b("Notes")], ["Ampicillin", "Penicillin antibiotic", "50–100 mg/kg/dose q12h IV/IM", "Neonatal sepsis, meningitis, GBS", "First-line with gentamicin"], ["Gentamicin", "Aminoglycoside", "4–5 mg/kg q24–36h IV", "Gram-negative sepsis", "Monitor renal function & drug levels"], ["Cefotaxime", "3rd-gen cephalosporin", "50 mg/kg/dose q6–12h IV", "Meningitis, gonococcal conjunctivitis", "Preferred over ceftriaxone in neonates"], ["Metronidazole", "Nitroimidazole", "7.5–15 mg/kg q12h IV", "Anaerobic cover, NEC", "Give with ampicillin + gentamicin for NEC"], ["Phenobarbital", "Barbiturate anticonvulsant", "20 mg/kg IV loading; 3–5 mg/kg/day maint.", "Neonatal seizures (first-line)", "Monitor respiratory depression"], ["Phenytoin", "Hydantoin anticonvulsant", "15–20 mg/kg IV loading", "Seizures not responding to phenobarbital", "Risk of arrhythmia; slow IV infusion"], ["Caffeine citrate", "Methylxanthine", "Loading 20 mg/kg PO/IV; maint 5–10 mg/kg/day", "Apnoea of prematurity", "Stimulates respiratory drive"], ["Surfactant (beractant)", "Lung surfactant", "100 mg/kg via ETT", "RDS in premature infants", "Give as early as possible"], ["Vitamin K1", "Fat-soluble vitamin", "0.5–1 mg IM × 1 dose", "Haemorrhagic disease of newborn prophylaxis", "Give at birth to all neonates"], ["Indomethacin", "NSAID (COX inhibitor)", "0.1–0.25 mg/kg IV q12–24h × 3 doses", "PDA closure", "Contraindicated if renal/hepatic impairment"], ["Ibuprofen", "NSAID", "10 mg/kg IV then 5 mg/kg q24h × 2 doses", "PDA closure (alternative)", "Fewer renal side effects than indomethacin"], ["Erythromycin", "Macrolide antibiotic", "12.5 mg/kg/dose q6h PO × 14 days", "Chlamydial conjunctivitis/pneumonia", "May cause infantile hypertrophic pyloric stenosis in very young neonates – monitor"], ["Aciclovir", "Antiviral", "20 mg/kg/dose IV q8h × 14–21 days", "Neonatal herpes simplex", "Start empirically if HSV suspected"], ["Fluconazole", "Antifungal (azole)", "6 mg/kg q24–72h IV/PO", "Candida sepsis, prophylaxis in VLBW", "Prophylaxis in high-risk premature infants"], ["Dopamine", "Catecholamine (vasopressor)", "2–20 mcg/kg/min IV infusion", "Neonatal shock, hypotension", "Low dose → renal; high dose → cardiac"], ["Dobutamine", "Beta-1 agonist (inotrope)", "5–20 mcg/kg/min IV infusion", "Impaired cardiac output, cardiogenic shock", "Avoid in hypertrophic obstructive cardiomyopathy (IDM)"], ["Hydrocortisone", "Corticosteroid", "1–2 mg/kg/dose q12h IV", "Refractory hypotension, adrenal insufficiency", "Also used for BPD prevention in VLBW"], ["Prostaglandin E1 (Alprostadil)", "Prostaglandin", "0.05–0.1 mcg/kg/min IV infusion", "Keep ductus arteriosus open in duct-dependent CHD", "Apnea common side effect – have intubation ready"], ["Dextrose 10%", "Glucose solution", "2 mL/kg IV bolus; GIR 4–8 mg/kg/min", "Hypoglycaemia", "Do NOT use D50 in neonates (too hypertonic)"], ["Morphine / Fentanyl", "Opioid analgesic", "Morphine 0.05–0.1 mg/kg; Fentanyl 1–2 mcg/kg IV", "Pain, intubated/ventilated neonates", "Monitor respiratory depression; have naloxone ready"], ] med_table = Table(meds_data, colWidths=[3.2*cm, 3.2*cm, 3.5*cm, 3.5*cm, 3.6*cm]) med_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 8), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_TEAL]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 4), ("RIGHTPADDING", (0,0), (-1,-1), 4), ])) story.append(med_table) # ============================================================ # SECTION 7 - DRUG CLASSES # ============================================================ story.append(PageBreak()) story.append(section_header("7. COMMON DRUG CLASSES & MECHANISMS")) story.append(Spacer(1, 6)) drug_classes = [ ("Penicillins (e.g., Ampicillin)", LIGHT_TEAL, TEAL, [ "Mechanism: Inhibit bacterial cell wall synthesis (beta-lactam ring binds PBP).", "Spectrum: Gram-positive (GBS, Listeria), some Gram-negative.", "NBU use: First-line for sepsis (with gentamicin), group B strep, Listeria.", "Side effects: Allergic reactions, diarrhoea.", ]), ("Aminoglycosides (e.g., Gentamicin, Amikacin)", LIGHT_GREEN, GREEN, [ "Mechanism: Bind 30S ribosomal subunit → inhibit protein synthesis.", "Spectrum: Gram-negative bacilli (E. coli, Klebsiella, Pseudomonas).", "NBU use: Neonatal sepsis (paired with ampicillin), synergy with penicillins.", "Side effects: Nephrotoxicity, ototoxicity – monitor trough levels.", ]), ("Cephalosporins (e.g., Cefotaxime, Ceftazidime)", LIGHT_AMBER, AMBER, [ "Mechanism: Beta-lactam antibiotics – inhibit cell wall synthesis.", "3rd generation: Good CNS penetration – used for meningitis.", "Cefotaxime preferred over ceftriaxone in neonates (ceftriaxone displaces bilirubin → kernicterus risk).", "Side effects: Superinfection, allergy (cross-reactivity with penicillin rare).", ]), ("Macrolides (e.g., Erythromycin)", LIGHT_RED, RED, [ "Mechanism: Bind 50S ribosomal subunit → inhibit protein synthesis.", "NBU use: Chlamydial conjunctivitis/pneumonia, pertussis.", "Side effects: Hypertrophic pyloric stenosis risk in neonates < 6 weeks – monitor for projectile vomiting.", "Also: Prokinetic agent (motilin agonist) at low doses.", ]), ("Antivirals (e.g., Aciclovir)", LIGHT_TEAL, TEAL, [ "Mechanism: Nucleoside analogue – inhibits viral DNA polymerase of herpes viruses (HSV, VZV).", "NBU use: Neonatal HSV (skin, eye, CNS disease). Dose: 20 mg/kg/dose q8h IV.", "Side effects: Nephrotoxicity (ensure adequate hydration), bone marrow suppression.", ]), ("Antifungals (e.g., Fluconazole)", LIGHT_GREEN, GREEN, [ "Mechanism: Inhibit ergosterol synthesis → disrupt fungal cell membrane (azole class).", "NBU use: Candida sepsis, prophylaxis in VLBW infants.", "Side effects: Hepatotoxicity, drug interactions (inhibits CYP450).", ]), ("Barbiturates (e.g., Phenobarbital)", LIGHT_AMBER, AMBER, [ "Mechanism: Enhance GABA-A receptor activity → CNS depression, raises seizure threshold.", "NBU use: First-line anticonvulsant for neonatal seizures (loading dose 20 mg/kg IV).", "Side effects: Respiratory depression, sedation – monitor carefully after loading dose.", ]), ("Methylxanthines (e.g., Caffeine Citrate)", LIGHT_RED, RED, [ "Mechanism: Adenosine receptor antagonist → stimulates respiratory centre in brainstem.", "NBU use: Treatment and prevention of apnoea of prematurity.", "Side effects: Tachycardia, agitation, feeding intolerance.", "Monitor: Heart rate, signs of toxicity.", ]), ("NSAIDs (e.g., Indomethacin, Ibuprofen)", LIGHT_TEAL, TEAL, [ "Mechanism: Inhibit cyclo-oxygenase (COX) → reduce prostaglandin synthesis → promote ductal constriction.", "NBU use: Medical closure of patent ductus arteriosus (PDA).", "Contraindications: Thrombocytopenia, renal impairment, NEC, active bleeding.", "Indomethacin side effects: Reduced renal blood flow, oliguria, GI bleeding, IVH reduction (bonus effect).", ]), ("Vasopressors/Inotropes (Dopamine, Dobutamine)", LIGHT_GREEN, GREEN, [ "Dopamine: Low dose (2–5 mcg/kg/min) → D1 agonist → renal/mesenteric vasodilation; " "Medium (5–10) → beta-1 → increased CO; High (>10) → alpha → vasoconstriction.", "Dobutamine: Beta-1 agonist → positive inotropy and chronotropy → for low cardiac output.", "NBU use: Septic/cardiogenic shock, persistent pulmonary hypertension.", ]), ("Corticosteroids (e.g., Hydrocortisone, Dexamethasone)", LIGHT_AMBER, AMBER, [ "Mechanism: Glucocorticoid receptor agonist → anti-inflammatory, upregulates adrenergic receptors.", "NBU use: Refractory hypotension in septic shock, adrenal insufficiency, BPD prevention.", "Dexamethasone: Used in preventing/treating BPD in ventilated premature infants.", "Side effects: Hyperglycaemia, hypertension, immune suppression, impaired growth.", ]), ("Prostaglandins (e.g., Alprostadil/PGE1)", LIGHT_RED, RED, [ "Mechanism: Maintains patency of ductus arteriosus by smooth muscle relaxation.", "NBU use: Duct-dependent congenital heart disease (TGA, pulmonary atresia, severe coarctation).", "Critical side effect: APNOEA (10–12% of cases) – have intubation equipment ready.", "Other side effects: Fever, hypotension, cortical hyperostosis with prolonged use.", ]), ("Vitamin K (Phytomenadione)", LIGHT_TEAL, TEAL, [ "Mechanism: Fat-soluble vitamin essential for synthesis of clotting factors II, VII, IX, X (and proteins C, S).", "NBU use: Prophylaxis for haemorrhagic disease of the newborn (HDN) – given IM 0.5–1 mg at birth to ALL neonates.", "Breastfed infants are at higher risk (breast milk low in Vit K).", "Side effects: Minimal; IV route associated with rare anaphylaxis.", ]), ] for name, bg, border, items in drug_classes: row = KeepTogether([ subsection_box(name, color=bg, border_color=border), *[bullet(item) for item in items], Spacer(1, 5), ]) story.append(row) # ============================================================ # SECTION 8 - PHOTOTHERAPY # ============================================================ story.append(PageBreak()) story.append(section_header("8. PHOTOTHERAPY & JAUNDICE MANAGEMENT")) story.append(Spacer(1, 6)) story.append(body_style and Paragraph( "Phototherapy is the primary treatment for unconjugated (indirect) hyperbilirubinemia. " "Blue-spectrum light (wavelength 460–490 nm) converts bilirubin into water-soluble isomers " "(lumirubin and photo-bilirubin) that can be excreted without liver conjugation.", body_style )) story.append(Spacer(1, 5)) story.append(subsection_box("Indications for Phototherapy (by age/bilirubin level)")) photo_data = [ [b("Age (hours)"), b("Term (≥37 wks): Start phototherapy"), b("Term: Exchange transfusion")], ["<24", "Any jaundice (always pathological)", "Bilirubin >15 mg/dL"], ["24–48", ">12 mg/dL (>200 μmol/L)", ">20 mg/dL (>340 μmol/L)"], ["48–72", ">15 mg/dL (>260 μmol/L)", ">25 mg/dL (>425 μmol/L)"], [">72", ">17 mg/dL (>290 μmol/L)", ">25 mg/dL (>425 μmol/L)"], ] pt = Table(photo_data, colWidths=[4*cm, 7*cm, 6*cm]) pt.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), AMBER), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_AMBER]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(pt) story.append(Spacer(1, 6)) story.append(subsection_box("Phototherapy Nursing Care")) photo_nursing = [ "Expose maximum skin surface area – remove all clothing except nappy.", "Eye shields MUST be worn to protect from light exposure.", "Turn infant every 2 hours to expose all surfaces.", "Monitor temperature closely (risk of hyperthermia).", "Increase fluid intake by 10–20 mL/kg/day (insensible losses increase).", "Continue breastfeeding unless formula supplementation is required.", "Monitor bilirubin levels every 4–12 hours depending on severity.", "Discontinue when level falls 4–5 mg/dL below threshold; recheck in 24 hrs.", "Bronze baby syndrome – dark grey discolouration with direct (conjugated) hyperbilirubinaemia; phototherapy still safe but less effective.", ] for n in photo_nursing: story.append(bullet(n)) story.append(Spacer(1, 5)) story.append(subsection_box("Exchange Transfusion")) et = [ "Indication: Bilirubin reaching exchange level, or haemolytic disease not controlled by phototherapy.", "Volume: Double-volume exchange – 160 mL/kg of packed red blood cells + FFP (2:1 ratio).", "Route: Umbilical vein catheter (UVC).", "Purpose: Remove sensitised red cells, unbound bilirubin, and maternal antibodies.", "Complications: Electrolyte imbalance (hypocalcaemia, hyperkalaemia), hypothermia, thrombocytopenia, infection, NEC, death (1–5%).", ] for e in et: story.append(bullet(e)) # ============================================================ # SECTION 9 - APGAR SCORE # ============================================================ story.append(PageBreak()) story.append(section_header("9. APGAR SCORE")) story.append(Spacer(1, 6)) story.append(Paragraph( "The APGAR score is assessed at 1, 5, and 10 minutes of life. " "The 1-minute score guides immediate resuscitation needs. " "The 5-minute score reflects efficacy of resuscitation. " "<b>HR and respiratory effort</b> are the key indicators during active resuscitation.", body_style )) story.append(Spacer(1, 5)) apgar_data = [ [b("Sign"), b("0"), b("1"), b("2")], ["A – Appearance (Colour)", "Blue/Pale all over", "Blue extremities, pink body", "Pink all over"], ["P – Pulse (HR)", "Absent", "< 100 bpm", "≥ 100 bpm"], ["G – Grimace (Reflex irritability)", "No response", "Grimace", "Cry/cough/sneeze"], ["A – Activity (Muscle tone)", "Limp / Flaccid", "Some flexion", "Active movement"], ["R – Respiration", "Absent", "Weak, irregular", "Strong cry"], ] apgar_t = Table(apgar_data, colWidths=[5.5*cm, 3.5*cm, 3.5*cm, 4.5*cm]) apgar_t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9.5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(apgar_t) story.append(Spacer(1, 6)) apgar_interp = [ [b("Score"), b("Interpretation"), b("Action")], ["7–10", "Normal / Good condition", "Routine care; continue monitoring"], ["4–6", "Moderate depression", "Stimulate, O2, prepare for PPV"], ["0–3", "Severe depression / Asphyxia", "Immediate resuscitation (PPV, chest compressions, drugs)"], ] ai = Table(apgar_interp, colWidths=[3*cm, 6*cm, 8*cm]) ai.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9.5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [LIGHT_GREEN, LIGHT_AMBER, LIGHT_RED]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(ai) story.append(Spacer(1, 6)) story.append(info_box( "<b>Important:</b> APGAR score is NOT an indication for starting resuscitation. " "Resuscitation begins based on real-time assessment (tone, breathing, HR). " "APGAR score is documented retrospectively.", bg=LIGHT_AMBER, border=AMBER )) # ============================================================ # SECTION 10 - KEY ASSESSMENT TIPS & RED FLAGS # ============================================================ story.append(PageBreak()) story.append(section_header("10. KEY ASSESSMENT TIPS & RED FLAGS FOR NBU EXAM")) story.append(Spacer(1, 6)) story.append(subsection_box("Absolute RED FLAGS – Act Immediately")) red_flags = [ "Jaundice appearing in the FIRST 24 hours → always pathological (haemolytic disease, sepsis).", "Bilious (green) vomiting in a neonate → bowel obstruction/malrotation until proven otherwise – surgical emergency.", "Central cyanosis that does not improve with oxygen → suspect cyanotic CHD → do hyperoxia test.", "Bulging fontanelle + fever/irritability → meningitis → LP + immediate antibiotics.", "Apnoea in any neonate → NEVER normal in term infants; investigate and monitor.", "Spreading erythema around umbilicus (omphalitis) → IV antibiotics; risk of necrotising fasciitis.", "No meconium by 48 hours → Hirschsprung's disease, CF, or anorectal malformation.", "Seizing neonate → check glucose IMMEDIATELY; treat hypoglycaemia if present.", "Fever in first month of life (≥38°C rectally) → full septic workup; do NOT assume viral.", "Persistent pulmonary hypertension (PPHN) with cyanosis unresponsive to O2 → iNO (inhaled nitric oxide), ECMO in extreme cases.", ] for r in red_flags: story.append(Paragraph(f"🔴 {r}", ParagraphStyle("RF", parent=body_style, textColor=RED, fontName="Helvetica-Bold", leftIndent=14, firstLineIndent=-10))) story.append(Spacer(1, 2)) story.append(Spacer(1, 5)) story.append(subsection_box("Important Mnemonics")) mnemonics = [ ("APGAR:", "Appearance, Pulse, Grimace, Activity, Respiration"), ("DOPE (ETT problems):", "Displaced, Obstructed, Pneumothorax, Equipment failure"), ("TORCH infections:", "Toxoplasma, Others (syphilis/VZV), Rubella, CMV, Herpes – cause congenital infection, IUGR, thrombocytopenia"), ("Early-onset sepsis risk:", "PPROM, maternal fever, maternal GBS+, fetal distress, preterm delivery"), ("Signs of RDS (5Gs):", "Grunt, Groan, Gasp, Ground-glass on CXR, Gestational age < 35 weeks"), ("Causes of neonatal seizures:", "HHHHH – Hypoxia (HIE), Hypoglycaemia, Hypocalcaemia, Hyponatraemia, Haemorrhage (intracranial)"), ] for label, content in mnemonics: story.append(bullet(f"{b(label)} {content}")) story.append(Spacer(1, 5)) story.append(subsection_box("Must-Know Quick Facts for Exams")) facts = [ "Most common cause of neonatal cardiorespiratory distress = Neonatal Sepsis.", "Most common cause of jaundice < 24 hrs = Haemolytic disease (ABO/Rh incompatibility).", "Most common cause of persistent stridor in neonates = Laryngomalacia.", "First-line anticonvulsant in neonates = Phenobarbital.", "Drug to close PDA = Indomethacin or Ibuprofen (NSAIDs).", "Drug to keep PDA open = Prostaglandin E1 (Alprostadil).", "Surfactant deficiency causes = RDS/Hyaline Membrane Disease (HMD).", "Treatment for neonatal HIE (≥36 weeks) = Therapeutic hypothermia (cooling blanket).", "NEC classic X-ray finding = Pneumatosis intestinalis (gas in bowel wall).", "Vitamin K given at birth prevents = Haemorrhagic disease of the newborn (HDN).", "Caffeine is used for = Apnoea of prematurity.", "Exchange transfusion route = Umbilical vein catheter (UVC).", "Normal neonatal glucose = >40 mg/dL (term) / >25 mg/dL (preterm screen threshold).", "Eye prophylaxis at birth = Erythromycin ointment (prevents gonococcal ophthalmia).", "Ceftriaxone is AVOIDED in neonates because = It displaces bilirubin → kernicterus.", "Chest compression to ventilation ratio in neonates = 3:1 (not 15:2 or 30:2).", "Therapeutic hypothermia criteria = ≥36 weeks gestation, <6 hours of life, evidence of HIE.", "Beware of prostaglandin E1 side effect = Apnoea (in ~10% of cases).", ] for f in facts: story.append(bullet(f"✓ {f}")) story.append(Spacer(1, 5)) story.append(subsection_box("NBU Monitoring Checklist")) checklist_data = [ [b("Parameter"), b("Frequency"), b("Normal Range")], ["Heart rate", "Continuous (monitor)", "120–160 bpm"], ["Respiratory rate", "Continuous (monitor)", "40–60/min"], ["SpO2", "Continuous", ">95% (after 10 min of life)"], ["Temperature", "Every 3–4 hours", "36.5–37.5°C (axillary)"], ["Blood glucose", "Every 3–4 hours (at-risk) / per protocol", ">40 mg/dL"], ["Blood pressure", "Every 4–8 hours", "MAP ≈ gestational age in mmHg"], ["Weight", "Daily", "Track trend; expect ~10% loss first week"], ["Bilirubin (if jaundiced)", "Every 4–12 hours during phototherapy", "Age-specific threshold"], ["Urine output", "Every shift", ">1 mL/kg/hr after day 1"], ["Feed tolerance", "Every feed", "No vomiting, distension, blood in stool"], ] ct = Table(checklist_data, colWidths=[5*cm, 6*cm, 6*cm]) ct.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), NAVY), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("FONTSIZE", (0,0), (-1,-1), 9), ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]), ("GRID", (0,0), (-1,-1), 0.5, MID_GREY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(ct) story.append(Spacer(1, 5)) # Footer note story.append(HRFlowable(width="100%", thickness=1, color=MID_GREY)) story.append(Spacer(1, 4)) story.append(Paragraph( "This document is prepared as a study guide for NBU/NICU assessment purposes. " "Always refer to local hospital protocols and current clinical guidelines for patient care decisions. " "Sources: Rosen's Emergency Medicine, Tintinalli's EM, Harriet Lane Handbook, Miller's Anesthesia, Creasy & Resnik's MFM.", note_style )) # ============================================================ # BUILD PDF # ============================================================ def add_page_number(canvas, doc): canvas.saveState() canvas.setFont("Helvetica", 8) canvas.setFillColor(colors.HexColor("#888888")) canvas.drawString(2*cm, 1.2*cm, "NBU Assessment Guide | August 2026") canvas.drawRightString(A4[0] - 2*cm, 1.2*cm, f"Page {doc.page}") canvas.restoreState() doc = SimpleDocTemplate( output_path, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2.5*cm, title="NBU Assessment Guide", author="Orris Medical AI", ) doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number) print(f"PDF created: {output_path}") import os size = os.path.getsize(output_path) print(f"File size: {size/1024:.1f} KB") PYEOF
NBU Assessment Guide
PDF Document · PDF
Please do
1,2,3,4 please do all the four above