Medical management of PIH or PET and intraoperative management for anaesthesia

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Searching Images

preeclampsia management antihypertensive treatment algorithm

Summary : This figure presents a flowchart outlining the treatment algorithm for the intensive systolic blood pressure (SBP) arm (target SBP <120 mm Hg) in the SPRINT trial protocol, including decision points, required actions, and follow-up procedures for antihypertensive therapy adjustment.

flowchart:
# Nodes :
  • Start here: At randomization visit, begin with 2- or 3-drug therapy* using a combination of a thiazide-type** diuretic, and/or an ACEI or ARB (but not both) and/or a CCB (rectangle, top).
  • Include β-blocker or other agents as appropriate for compelling indication (rectangle, side note).
  • Is SBP ≥120 mm Hg this visit? (diamond).
  • Is this a milepost visit? (diamond).
  • You must: (a) Add therapy not already in use† and (b) See participant monthly until SBP <120 mm Hg‡ (rectangle).
  • You must: (a) Titrate or add therapy not already in use† and (b) See participant monthly until SBP <120 mm Hg‡ (rectangle).
  • Is DBP ≥100 mm Hg at this visit or is DBP ≥90 mm Hg on last 2 visits? (diamond).
  • You must: Titrate or add therapy not already in use† (rectangle).
  • Continue therapy (rectangle).
  • Monitor as designated through follow-up (rectangle, right side).

# Connectors :
  • Downward arrow from Start to "Is SBP ≥120 mm Hg this visit?".
  • Yes branch from "Is SBP ≥120 mm Hg this visit?" to "Is this a milepost visit?".
  • Yes branch from "Is this a milepost visit?" to "You must: Add therapy not already in use and see participant monthly until SBP <120 mm Hg".
  • No branch from "Is this a milepost visit?" to "You must: Titrate or add therapy not already in use and see participant monthly until SBP <120 mm Hg".
  • No branch from "Is SBP ≥120 mm Hg this visit?" to "Is DBP ≥100 mm Hg at this visit or is DBP ≥90 mm Hg on last 2 visits?".
  • Yes branch from DBP decision to "You must: Titrate or add therapy not already in use".
  • No branch from DBP decision to "Continue therapy".
  • All therapy adjustment nodes connect to "Monitor as designated through follow-up".

# Layout :
  • Top-down flow, starting with initial therapy, then branching based on SBP and DBP readings.
  • Decision diamonds split the flow into therapy adjustment or continuation.
  • Side notes and monitoring steps are placed to the right.
  • Monthly follow-up is required after therapy changes until SBP <120 mm Hg.

# Analysis :
  • The algorithm prioritizes achieving SBP <120 mm Hg through stepwise therapy escalation and monthly monitoring.
  • Therapy is intensified at each visit if SBP or DBP thresholds are exceeded, with specific actions at "milepost" visits.
  • If BP is controlled, therapy is continued without adjustment.
  • The flowchart ensures systematic, protocol-driven management of hypertension in the intensive arm, with clear decision points and follow-up requirements.

Summary : This figure presents a flowchart outlining the treatment algorithm for the intensive systolic blood pressure (SBP) arm (target SBP <120 mm Hg) in the SPRINT trial protocol, including decision points, required actions, and follow-up procedures for antihypertensive therapy adjustment. flowchart: # Nodes : • Start here: At randomization visit, begin with 2- or 3-drug therapy* using a combination of a thiazide-type** diuretic, and/or an ACEI or ARB (but not both) and/or a CCB (rectangle, top). • Include β-blocker or other agents as appropriate for compelling indication (rectangle, side note). • Is SBP ≥120 mm Hg this visit? (diamond). • Is this a milepost visit? (diamond). • You must: (a) Add therapy not already in use† and (b) See participant monthly until SBP <120 mm Hg‡ (rectangle). • You must: (a) Titrate or add therapy not already in use† and (b) See participant monthly until SBP <120 mm Hg‡ (rectangle). • Is DBP ≥100 mm Hg at this visit or is DBP ≥90 mm Hg on last 2 visits? (diamond). • You must: Titrate or add therapy not already in use† (rectangle). • Continue therapy (rectangle). • Monitor as designated through follow-up (rectangle, right side). # Connectors : • Downward arrow from Start to "Is SBP ≥120 mm Hg this visit?". • Yes branch from "Is SBP ≥120 mm Hg this visit?" to "Is this a milepost visit?". • Yes branch from "Is this a milepost visit?" to "You must: Add therapy not already in use and see participant monthly until SBP <120 mm Hg". • No branch from "Is this a milepost visit?" to "You must: Titrate or add therapy not already in use and see participant monthly until SBP <120 mm Hg". • No branch from "Is SBP ≥120 mm Hg this visit?" to "Is DBP ≥100 mm Hg at this visit or is DBP ≥90 mm Hg on last 2 visits?". • Yes branch from DBP decision to "You must: Titrate or add therapy not already in use". • No branch from DBP decision to "Continue therapy". • All therapy adjustment nodes connect to "Monitor as designated through follow-up". # Layout : • Top-down flow, starting with initial therapy, then branching based on SBP and DBP readings. • Decision diamonds split the flow into therapy adjustment or continuation. • Side notes and monitoring steps are placed to the right. • Monthly follow-up is required after therapy changes until SBP <120 mm Hg. # Analysis : • The algorithm prioritizes achieving SBP <120 mm Hg through stepwise therapy escalation and monthly monitoring. • Therapy is intensified at each visit if SBP or DBP thresholds are exceeded, with specific actions at "milepost" visits. • If BP is controlled, therapy is continued without adjustment. • The flowchart ensures systematic, protocol-driven management of hypertension in the intensive arm, with clear decision points and follow-up requirements.

Summary : This flowchart presents the management algorithm for parathyroid carcinoma (PC), detailing treatment pathways based on resectability and presence of hypercalcaemia, with specific recommendations for surgery, radiotherapy, systemic and non-systemic therapies, and observation.

flowchart:
# Nodes :
  • Start (rectangle): "PC"
  • Decision (split into three branches): "Resectable", "Unresectable", "Hypercalcaemia"
  • Resectable branch:
    – "Diagnosis before surgery"
    – "En bloc resection of parathyroid lesion + homolateral thyroid lobo-isthmectomy + central node dissection [IV, A]" (orange rectangle)
    – "Adjuvant RT for R1-2 and/or N+ disease [V, C]" (dark green rectangle)
    – "Observation [V, C]" (white rectangle)
    – "Diagnosis after parathyroid resection"
    – "Ipsilateral thyroid lobo-isthmectomy + central node dissection [IV, A]" (orange rectangle)
    – "Adjuvant RT for R1-2 and/or N+ disease [V, C]" (dark green rectangle)
    – "Observation [V, C]" (white rectangle)
  • Unresectable branch:
    – "Debulking surgery and locoregional therapies [V, A]" (turquoise rectangle)
    – "Antiangiogenics [V, B]" (blue rectangle)
    – "Alkylating agent-based ChT* [V, C]" (blue rectangle)
    – "Clinical trial [V, A]" (blue rectangle)
  • Hypercalcaemia branch:
    – "Debulking surgery and locoregional therapies [V, A]" (turquoise rectangle)
    – "Cinacalcet [II, A] + bone antiresorptive drug [II, A] + hydration [IV, A]" (turquoise rectangle)

# Connectors :
  • Arrows indicate flow from "PC" to three main branches.
  • Within each branch, arrows indicate sequential steps or decision points.
  • Some nodes have parallel arrows leading to "Observation" as an alternative to adjuvant therapy.
  • No loops; all branches terminate in observation or further therapy options.

# Layout :
  • Top-level node ("PC") splits horizontally into three main branches: Resectable (left), Unresectable (center), Hypercalcaemia (right).
  • Each branch is vertically oriented, with sequential steps.
  • Colour coding: orange (surgery), dark green (systemic anticancer therapy), turquoise (non-systemic anticancer therapies), blue (systemic anticancer therapy or combination), white (other management/non-treatment).

# Analysis :
  • The flowchart provides a clear, stepwise approach to PC management, emphasizing surgery for resectable cases, systemic and locoregional therapies for unresectable cases, and specific interventions for hypercalcaemia.
  • Decision points are based on timing of diagnosis and disease status (resectable/unresectable/hypercalcaemia).
  • Observation is a common endpoint after definitive therapy or adjuvant treatment.
  • The chart visually distinguishes between types of interventions using colour coding and groups related therapies for clarity.

Summary : This flowchart presents the management algorithm for parathyroid carcinoma (PC), detailing treatment pathways based on resectability and presence of hypercalcaemia, with specific recommendations for surgery, radiotherapy, systemic and non-systemic therapies, and observation. flowchart: # Nodes : • Start (rectangle): "PC" • Decision (split into three branches): "Resectable", "Unresectable", "Hypercalcaemia" • Resectable branch: – "Diagnosis before surgery" – "En bloc resection of parathyroid lesion + homolateral thyroid lobo-isthmectomy + central node dissection [IV, A]" (orange rectangle) – "Adjuvant RT for R1-2 and/or N+ disease [V, C]" (dark green rectangle) – "Observation [V, C]" (white rectangle) – "Diagnosis after parathyroid resection" – "Ipsilateral thyroid lobo-isthmectomy + central node dissection [IV, A]" (orange rectangle) – "Adjuvant RT for R1-2 and/or N+ disease [V, C]" (dark green rectangle) – "Observation [V, C]" (white rectangle) • Unresectable branch: – "Debulking surgery and locoregional therapies [V, A]" (turquoise rectangle) – "Antiangiogenics [V, B]" (blue rectangle) – "Alkylating agent-based ChT* [V, C]" (blue rectangle) – "Clinical trial [V, A]" (blue rectangle) • Hypercalcaemia branch: – "Debulking surgery and locoregional therapies [V, A]" (turquoise rectangle) – "Cinacalcet [II, A] + bone antiresorptive drug [II, A] + hydration [IV, A]" (turquoise rectangle) # Connectors : • Arrows indicate flow from "PC" to three main branches. • Within each branch, arrows indicate sequential steps or decision points. • Some nodes have parallel arrows leading to "Observation" as an alternative to adjuvant therapy. • No loops; all branches terminate in observation or further therapy options. # Layout : • Top-level node ("PC") splits horizontally into three main branches: Resectable (left), Unresectable (center), Hypercalcaemia (right). • Each branch is vertically oriented, with sequential steps. • Colour coding: orange (surgery), dark green (systemic anticancer therapy), turquoise (non-systemic anticancer therapies), blue (systemic anticancer therapy or combination), white (other management/non-treatment). # Analysis : • The flowchart provides a clear, stepwise approach to PC management, emphasizing surgery for resectable cases, systemic and locoregional therapies for unresectable cases, and specific interventions for hypercalcaemia. • Decision points are based on timing of diagnosis and disease status (resectable/unresectable/hypercalcaemia). • Observation is a common endpoint after definitive therapy or adjuvant treatment. • The chart visually distinguishes between types of interventions using colour coding and groups related therapies for clarity.

Summary : This flowchart presents the management algorithm for nodal peripheral T-cell lymphoma (PTCL), including PTCL-NOS, TFHL, and ALCL subtypes, stratified by disease stage, ALK status, and risk features. It details systemic and non-systemic anticancer therapies, radiotherapy, and autologous stem-cell transplantation (ASCT) recommendations.

flowchart:
# Nodes :
  • Nodal PTCL (start, top-level box)
  • PTCL-NOS, TFHL (decision node)
  • Stage I-II (decision node)
  • 3-4 cycles CHO(E)P [IV, B] (treatment node)
  • Consolidative ISRT [IV, B] (treatment node)
  • CR (complete remission, outcome node)
  • No further treatment (end node)
  • Stage III-IV (decision node)
  • 6 cycles CHO(E)P [II, B] (treatment node)
  • CR (outcome node)
  • ASCT [III, C] (treatment node)
  • Stage I-II ALCL (decision node)
  • ALK positive, non-bulky, IPI 0-1 / ALK negative, non-bulky, IPI 0-1 (decision node)
  • 3-4 cycles BV-CHP [III, B] or CHOEP [III, B] (treatment node)
  • Consolidative ISRT [IV, B] (treatment node)
  • CR (outcome node)
  • No further treatment (end node)
  • ALK negative, bulky or IPI >1 / High-risk ALK positive (decision node)
  • 6 cycles BV-CHP [II, A] or CHO(E)P [III, B] (treatment node)
  • Consolidative ISRT [IV, B] (treatment node)
  • CR (outcome node)
  • ASCTa [II, B] (treatment node)
  • Stage III-IV ALCL (decision node)
  • ALK positive (decision node)
  • 6 cycles BV-CHP [I, A] or CHO(E)P [III, B] (treatment node)
  • CR (outcome node)
  • No further treatment (end node)
  • ALK negative / High-risk ALK positive (decision node)
  • 6 cycles BV-CHP [I, A] or CHO(E)P [III, B] (treatment node)
  • CR (outcome node)
  • ASCT [II, B] (treatment node)

# Connectors :
  • Top-down arrows connect each decision node to its respective treatment and outcome nodes.
  • Branching occurs at each disease stage and ALK status, splitting into different treatment pathways.
  • Some branches merge at common nodes (e.g., CR, ASCT, No further treatment).
  • Footnotes (a, b) clarify alternative or additional recommendations for specific high-risk groups.

# Layout :
  • The flowchart is organized horizontally by disease subtype and stage (PTCL-NOS/TFHL, Stage I-II ALCL, Stage III-IV ALCL).
  • Each subtype/stage column flows vertically from initial diagnosis through treatment, remission, and post-remission management.
  • Colour coding: purple for algorithm title, dark green for radiotherapy, blue for systemic therapy, white for non-treatment aspects.

# Analysis :
  • The flowchart provides a clear, stepwise approach to managing nodal PTCL, emphasizing risk-adapted therapy.
  • Early-stage disease often receives fewer cycles of chemotherapy and consolidative radiotherapy, with no further treatment if remission is achieved.
  • Advanced-stage or high-risk disease typically receives more intensive therapy, with ASCT considered for consolidation.
  • ALK status and IPI score are critical in determining the treatment pathway for ALCL.
  • The algorithm highlights the importance of individualized therapy based on disease characteristics and response.

Summary : This flowchart presents the management algorithm for nodal peripheral T-cell lymphoma (PTCL), including PTCL-NOS, TFHL, and ALCL subtypes, stratified by disease stage, ALK status, and risk features. It details systemic and non-systemic anticancer therapies, radiotherapy, and autologous stem-cell transplantation (ASCT) recommendations. flowchart: # Nodes : • Nodal PTCL (start, top-level box) • PTCL-NOS, TFHL (decision node) • Stage I-II (decision node) • 3-4 cycles CHO(E)P [IV, B] (treatment node) • Consolidative ISRT [IV, B] (treatment node) • CR (complete remission, outcome node) • No further treatment (end node) • Stage III-IV (decision node) • 6 cycles CHO(E)P [II, B] (treatment node) • CR (outcome node) • ASCT [III, C] (treatment node) • Stage I-II ALCL (decision node) • ALK positive, non-bulky, IPI 0-1 / ALK negative, non-bulky, IPI 0-1 (decision node) • 3-4 cycles BV-CHP [III, B] or CHOEP [III, B] (treatment node) • Consolidative ISRT [IV, B] (treatment node) • CR (outcome node) • No further treatment (end node) • ALK negative, bulky or IPI >1 / High-risk ALK positive (decision node) • 6 cycles BV-CHP [II, A] or CHO(E)P [III, B] (treatment node) • Consolidative ISRT [IV, B] (treatment node) • CR (outcome node) • ASCTa [II, B] (treatment node) • Stage III-IV ALCL (decision node) • ALK positive (decision node) • 6 cycles BV-CHP [I, A] or CHO(E)P [III, B] (treatment node) • CR (outcome node) • No further treatment (end node) • ALK negative / High-risk ALK positive (decision node) • 6 cycles BV-CHP [I, A] or CHO(E)P [III, B] (treatment node) • CR (outcome node) • ASCT [II, B] (treatment node) # Connectors : • Top-down arrows connect each decision node to its respective treatment and outcome nodes. • Branching occurs at each disease stage and ALK status, splitting into different treatment pathways. • Some branches merge at common nodes (e.g., CR, ASCT, No further treatment). • Footnotes (a, b) clarify alternative or additional recommendations for specific high-risk groups. # Layout : • The flowchart is organized horizontally by disease subtype and stage (PTCL-NOS/TFHL, Stage I-II ALCL, Stage III-IV ALCL). • Each subtype/stage column flows vertically from initial diagnosis through treatment, remission, and post-remission management. • Colour coding: purple for algorithm title, dark green for radiotherapy, blue for systemic therapy, white for non-treatment aspects. # Analysis : • The flowchart provides a clear, stepwise approach to managing nodal PTCL, emphasizing risk-adapted therapy. • Early-stage disease often receives fewer cycles of chemotherapy and consolidative radiotherapy, with no further treatment if remission is achieved. • Advanced-stage or high-risk disease typically receives more intensive therapy, with ASCT considered for consolidation. • ALK status and IPI score are critical in determining the treatment pathway for ALCL. • The algorithm highlights the importance of individualized therapy based on disease characteristics and response.

I now have comprehensive content from multiple authoritative anaesthesia and obstetric medicine textbooks. Let me compile the full, detailed answer.

Medical Management of PIH / Preeclampsia (PET) and Intraoperative Anaesthetic Management


1. DEFINITIONS AND CLASSIFICATION

Pregnancy-Induced Hypertension (PIH) encompasses a spectrum:
ConditionDefinition
Gestational hypertensionNew-onset SBP >140 or DBP >90 mmHg after 20 weeks, without proteinuria or end-organ damage
PreeclampsiaAs above + proteinuria (>300 mg/24h) OR end-organ dysfunction
Preeclampsia with severe featuresSBP ≥160 or DBP ≥110 mmHg (on 2 occasions ≥4 h apart); or any end-organ criterion below
HELLP syndromeHemolysis + Elevated Liver enzymes + Low Platelets - considered severe preeclampsia
EclampsiaPreeclampsia + seizures
Severe features (ACOG 2020, as cited in Miller's Anesthesia 10e):
  • SBP ≥160 or DBP ≥110 mmHg on two readings ≥4 h apart
  • Thrombocytopenia (platelets <100,000/mm³)
  • Liver enzymes >2x normal, or persistent RUQ/epigastric pain
  • Progressive renal insufficiency (creatinine >1.1 mg/dL or doubling)
  • Pulmonary edema
  • New-onset cerebral or visual disturbances
Note: The term "mild preeclampsia" is no longer used; it is now simply "preeclampsia" vs "preeclampsia with severe features."

2. MEDICAL MANAGEMENT

A. Antihypertensive Therapy

Thresholds for treatment:
  • Initiate drug therapy when SBP >160 mmHg or DBP >105-110 mmHg to prevent intracerebral hemorrhage, myocardial ischemia, renal injury, and heart failure.
Chronic/Outpatient (non-severe) antihypertensives:
DrugDoseNotes
Methyldopa (alpha-central agonist)250 mg twice dailyFormer FDA category B; drug of choice for non-acute use; rarely used in non-pregnant patients
Labetalol (alpha1 + non-selective beta blocker)100 mg twice dailyReasonable safety profile in pregnancy
Nifedipine (CCB)30 mg once daily (extended release)Reasonable evidence of safety
CONTRAINDICATED in pregnancy: ACE inhibitors and Angiotensin receptor blockers (ARBs) - unequivocal adverse fetal effects.
Acute/Inpatient Management of Severe Hypertension:
DrugDoseRouteNotes
Labetalol20 mg IV, escalate to 40 mg at 10 min if inadequateIVFirst-line; 5-10 mg increments also used; does not alter placental blood flow
Hydralazine5 or 10 mg IV or IM; repeat at 20-min intervalsIV/IMClassic first-line; short-term use
Nifedipine10-20 mg oralPOEffective for acute management
Nicardipine / ClevidipineIV infusionIVFor refractory intraoperative hypertension
(Sources: Goodman & Gilman's Pharmacological Basis of Therapeutics; Morgan & Mikhail's Clinical Anesthesiology 7e; Miller's Anesthesia 10e)

B. Seizure Prophylaxis and Eclampsia Prevention: Magnesium Sulfate

Indications: Preeclampsia with severe features, CNS symptoms (headache, visual disturbances, altered mental status), eclampsia. Also consider for postpartum women with CNS symptoms (~20% of eclampsia occurs >48 h after delivery).
Regimen:
  • Loading dose: 4-6 g IV over 20-30 minutes
  • Maintenance: 1-3 g/hour IV infusion
  • Therapeutic level: 4-6 mEq/L (some sources 4-8 mEq/L)
Monitoring for toxicity:
Magnesium LevelClinical Sign
4-6 mEq/LTherapeutic (seizure prevention)
7-10 mEq/LLoss of patellar reflexes
>10 mEq/LRespiratory paralysis
>15 mEq/LCardiac arrest
Signs of toxicity: Hyporeflexia, excessive sedation, blurred vision, respiratory compromise, cardiac depression.
Antidote: Calcium gluconate 1 g IV over 10 minutes.
Additional benefits: Magnesium has neuroprotective benefits for the fetus and reduces risk of cerebral palsy in premature infants.

C. General Medical Management Principles

  • Definitive treatment is delivery of the fetus and placenta
  • If severe preeclampsia with sufficient fetal maturity: proceed to delivery
  • If fetus very preterm: hospitalization + pharmacotherapy to allow fetal maturation
  • Corticosteroids (betamethasone 12 mg IM x2, 24 h apart) if viable fetus at ≤34 weeks
  • Fluid restriction: Limit total intake to 80-100 mL/hr (including MgSO4 and oxytocin infusions) to prevent pulmonary edema
  • Invasive monitoring: Arterial line + CVP in severe hypertension, pulmonary edema, refractory oliguria

D. Investigations

  • CBC with differential (hemoconcentration, thrombocytopenia)
  • Serum creatinine (renal function)
  • LFTs - ALT, AST (HELLP)
  • LDH (microangiopathic hemolysis)
  • Urine protein (24-hour or spot protein:creatinine ratio ≥0.3)
  • Coagulation profile (PT/aPTT/fibrinogen)
  • Uric acid

E. Eclampsia Management (Seizure)

  1. Secure airway, position left lateral, give oxygen
  2. MgSO4 4-6 g IV bolus for acute seizure control
  3. Control BP acutely (labetalol or hydralazine)
  4. Monitor fetus (FHR abnormalities are common during seizure, usually resolve)
  5. Consider CT/MRI if: seizures recurrent, focal, refractory to MgSO4, or decreasing consciousness
  6. Eclampsia = indication for delivery, but NOT necessarily cesarean section

3. ANAESTHETIC MANAGEMENT (Intraoperative)

A. Pre-anaesthetic Assessment

  • Platelet count is mandatory before initiating neuraxial anaesthesia
  • Check coagulation profile (INR, aPTT, fibrinogen)
  • Assess airway: anticipate difficult airway from edema of tongue, epiglottis, pharynx
  • Note current antihypertensive and magnesium therapy
  • Assess fluid balance and hydration status

B. Choice of Anaesthesia Technique

Regional anaesthesia is the PREFERRED technique for both labor/vaginal delivery and cesarean section in preeclampsia. (ACOG, Creasy & Resnik's Maternal-Fetal Medicine, Miller's Anesthesia 10e)
Advantages of neuraxial anaesthesia in preeclampsia:
  • Best quality pain relief
  • Attenuates hypertensive responses to pain and stress
  • Reduces circulating catecholamines
  • Improves uteroplacental perfusion by up to 75% (epidural bupivacaine)
  • Avoids risks of general anaesthesia (difficult intubation, airway edema, aspiration)
  • Does NOT require fluid preload when dilute local anaesthetic/opioid solutions used
Spinal vs Epidural:
  • Historically, spinal was avoided in severe preeclampsia due to fear of catastrophic hypotension
  • Current evidence: Women with severe preeclampsia actually show LOWER risk of hypotension than normotensive women during spinal anaesthesia
  • Both spinal and epidural are reasonable choices for cesarean section
  • Combined spinal-epidural (CSE) is also acceptable

C. Neuraxial Anaesthesia - Practical Points

Platelet threshold for neuraxial block:
  • Generally safe at platelets ≥70,000/mm³ (SOAP consensus)
  • Platelet count 50,000-69,000/mm³: upper bound of epidural hematoma risk ~3%
  • Platelet count 0-49,000/mm³: risk up to 11% - avoid or use extreme caution
  • If platelet count is stable and thromboelastography (TEG) is normal, a count as low as 50,000/μL may be acceptable in selected cases
Fluid management:
  • The preeclamptic vasculature is contracted from vasospasm and porous from endothelial damage, but NOT underfilled
  • Colloid osmotic pressure is already low in pregnancy and even lower with proteinuria
  • Crystalloids and colloids readily leak out → risk of pulmonary edema
  • Conservative fluid strategy: restrict preload; avoid aggressive hydration
  • Use conservative preload for surgical neuraxial anaesthesia; no preload for labor analgesia
Vasopressors:
  • These patients are very sensitive to vasopressors (catecholamines both endogenous and exogenous)
  • Use smaller than usual doses to treat hypotension
  • Ephedrine, phenylephrine, or norepinephrine can be used judiciously
Epinephrine test dose:
  • Controversial in preeclampsia due to risk of exacerbating hypertension
  • Can use cautiously if needed for verification

D. General Anaesthesia (when neuraxial is contraindicated or emergency)

Indications for GA: Coagulopathy (platelets <50,000), patient refusal, failed neuraxial, emergency
Key hazards and management:
HazardManagement
Difficult/failed intubationAnticipate from edema (tongue, epiglottis, pharynx) - have video laryngoscope, smaller ETT, surgical airway plan ready; use RSI
Hypertensive surge at intubation/extubationGive labetalol 5-10 mg IV increments; nicardipine or clevidipine IV infusion; avoid ketamine (increases BP) in uncontrolled hypertension
Pulmonary edemaRestrict fluids; optimize BP before induction
CoagulopathyLaryngoscopy may provoke profuse bleeding - minimize attempts
Aspiration riskRSI mandatory (sodium citrate 30 mL + metoclopramide 10 mg IV preoperatively; cricoid pressure)
Magnesium-NMB interactionMg potentiates ALL nondepolarizing muscle relaxants (NMBAs) by acting on the myoneural junction - reduce NMBA doses significantly and ALWAYS use peripheral nerve stimulator (train-of-four) monitoring
SuccinylcholineCan still be used for RSI; standard dose (1.5 mg/kg)
Emergence/extubationSignificant hypertension at extubation - treat proactively with antihypertensives
Drugs to AVOID in uncontrolled hypertension:
  • Ketamine (raises BP/HR)
  • Ergot alkaloids / Methergine (methylergonovine) - risk of hypertensive crisis; use oxytocin infusion instead for uterine atony

E. Intraoperative Monitoring

MonitorIndication
Invasive arterial lineSevere hypertension (mandatory in both GA and regional anaesthesia with severe features)
CVP / PA catheterPulmonary edema, refractory oliguria, cardiomyopathy
Urine outputCatheter; target >0.5 mL/kg/hr
Peripheral nerve stimulatorEssential if on MgSO4 and receiving NMBAs
Continuous BP monitoringBeat-to-beat in high-risk cases

F. Magnesium Interaction with Anaesthesia

This is a high-yield point:
  • MgSO4 potentiates both depolarizing and especially nondepolarizing NMBAs
  • Reduce doses of rocuronium, vecuronium, cisatracurium etc. by 25-50%
  • Monitor neuromuscular blockade with train-of-four (TOF) throughout
  • Signs of Mg toxicity intraoperatively: hyporeflexia, excessive sedation, respiratory depression, apnea, cardiac depression
  • Antidote: Calcium gluconate 1 g IV over 10 minutes

G. Postpartum Considerations

  • Continue MgSO4 for 24-48 hours postpartum
  • Maintain antihypertensive therapy (BP can remain elevated or worsen in 24-48 h after delivery)
  • ~20% of eclampsia occurs >48 h postpartum - maintain vigilance
  • Watch for pulmonary edema in the postpartum period (fluid mobilization)
  • Avoid Methergine/ergotamine for postoperative uterine atony - use oxytocin, carboprost (with caution), misoprostol

Summary Table: Key Drugs in PIH/PET Anaesthetic Management

DrugUseKey Point
LabetalolAcute hypertension controlIV 20 mg then 40 mg; does not alter placental flow
HydralazineAcute hypertensionIV/IM 5-10 mg; repeat q20 min
NifedipineOral acute/chronic10-20 mg oral
Nicardipine/ClevidipineIntraoperative hypertensionIV infusion
MgSO4Seizure prophylaxis/treatment4-6 g load + 1-3 g/hr; therapeutic level 4-8 mEq/L
Calcium gluconateMgSO4 antidote1 g IV over 10 min
Bupivacaine (epidural)Neuraxial labor/CSDilute (0.0625-0.125%) + opioid for labor
OxytocinUterotonicPreferred over ergot alkaloids
Phenylephrine/EphedrineHypotensionUse in small doses - hypersensitivity to catecholamines

Sources:
  • Goodman & Gilman's The Pharmacological Basis of Therapeutics (Pregnancy-Induced Hypertension/Preeclampsia)
  • Morgan & Mikhail's Clinical Anesthesiology, 7e (Anesthetic Management - Preeclampsia)
  • Miller's Anesthesia, 10e (Hypertensive Disorders in Obstetric Anaesthesia)
  • Creasy & Resnik's Maternal-Fetal Medicine: Principles and Practice (PREECLAMPSIA OR ECLAMPSIA chapter)
  • Barash, Cullen & Stoelting's Clinical Anesthesia, 9e (Anesthetic Management - Obstetric)
  • Tintinalli's Emergency Medicine (Preeclampsia - diagnostic criteria)

Create a quick reference PDF on PIH/PET anaesthetic management

Reading File
Running Command

mkdir -p /tmp/workspace/pih-pdf && ls /tmp/workspace/pih-pdf/

Writing File

~/pih-pdf/create_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT
from reportlab.platypus import PageBreak

OUTPUT = "/tmp/workspace/pih-pdf/PIH_PET_Anaesthetic_Management.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor("#1A3A5C")
MID_BLUE    = colors.HexColor("#2B6CB0")
LIGHT_BLUE  = colors.HexColor("#EBF4FF")
ACCENT_RED  = colors.HexColor("#C0392B")
ACCENT_AMBER= colors.HexColor("#E67E22")
ACCENT_GREEN= colors.HexColor("#1A7A4A")
GREY_BG     = colors.HexColor("#F4F6F8")
GREY_BORDER = colors.HexColor("#BDC3C7")
WHITE       = colors.white
TEXT_DARK   = colors.HexColor("#1C1C1C")

W, H = A4
MARGIN = 15*mm

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=MARGIN, leftMargin=MARGIN,
    topMargin=18*mm, bottomMargin=15*mm,
    title="PIH/PET Anaesthetic Management - Quick Reference",
    author="Orris Medical"
)

styles = getSampleStyleSheet()

# Custom styles
def S(name, **kwargs):
    base = kwargs.pop("base", "Normal")
    s = ParagraphStyle(name, parent=styles[base], **kwargs)
    return s

H1 = S("H1", fontSize=18, textColor=WHITE, fontName="Helvetica-Bold",
        spaceAfter=2, alignment=TA_CENTER, leading=22)
H2 = S("H2", fontSize=11, textColor=WHITE, fontName="Helvetica-Bold",
        spaceBefore=4, spaceAfter=2, leading=14)
H3 = S("H3", fontSize=9.5, textColor=DARK_BLUE, fontName="Helvetica-Bold",
        spaceBefore=4, spaceAfter=2, leading=12)
BODY = S("BODY", fontSize=8.2, textColor=TEXT_DARK, fontName="Helvetica",
         spaceAfter=2, leading=11)
BODY_B = S("BODY_B", fontSize=8.2, textColor=TEXT_DARK, fontName="Helvetica-Bold",
           spaceAfter=2, leading=11)
SMALL = S("SMALL", fontSize=7.2, textColor=colors.HexColor("#555555"),
          fontName="Helvetica", leading=10)
WARN = S("WARN", fontSize=8, textColor=ACCENT_RED, fontName="Helvetica-Bold",
         spaceAfter=2, leading=11)
NOTE = S("NOTE", fontSize=7.5, textColor=ACCENT_AMBER, fontName="Helvetica-BoldOblique",
         spaceAfter=1, leading=10)
TH = S("TH", fontSize=8, textColor=WHITE, fontName="Helvetica-Bold",
       alignment=TA_CENTER, leading=10)
TD = S("TD", fontSize=7.8, textColor=TEXT_DARK, fontName="Helvetica",
       alignment=TA_LEFT, leading=10)
TD_B = S("TD_B", fontSize=7.8, textColor=TEXT_DARK, fontName="Helvetica-Bold",
         alignment=TA_LEFT, leading=10)
TD_RED = S("TD_RED", fontSize=7.8, textColor=ACCENT_RED, fontName="Helvetica-Bold",
           alignment=TA_LEFT, leading=10)
TD_GRN = S("TD_GRN", fontSize=7.8, textColor=ACCENT_GREEN, fontName="Helvetica-Bold",
           alignment=TA_LEFT, leading=10)
FOOTER_S = S("FOOTER_S", fontSize=6.5, textColor=colors.grey,
             fontName="Helvetica", alignment=TA_CENTER)

def section_header(text, color=DARK_BLUE):
    tbl = Table([[Paragraph(text, H2)]], colWidths=[W - 2*MARGIN])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("ROUNDEDCORNERS", [4,4,4,4]),
    ]))
    return tbl

def warning_box(text):
    tbl = Table([[Paragraph("⚠  " + text, WARN)]], colWidths=[W - 2*MARGIN])
    tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), colors.HexColor("#FFF3CD")),
        ("BOX",           (0,0), (-1,-1), 0.8, ACCENT_AMBER),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ]))
    return tbl

def info_box(text, bg=LIGHT_BLUE, border=MID_BLUE):
    tbl = Table([[Paragraph(text, BODY)]], colWidths=[W - 2*MARGIN])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("BOX",        (0,0), (-1,-1), 0.8, border),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ]))
    return tbl

def make_table(headers, rows, col_widths, header_bg=DARK_BLUE):
    tdata = [[Paragraph(h, TH) for h in headers]]
    for row in rows:
        tdata.append([Paragraph(str(c[0]), c[1]) if isinstance(c, tuple)
                      else Paragraph(str(c), TD) for c in row])
    tbl = Table(tdata, colWidths=col_widths, repeatRows=1)
    nrows = len(tdata)
    style = [
        ("BACKGROUND", (0,0), (-1,0), header_bg),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, GREY_BG]),
        ("BOX",    (0,0), (-1,-1), 0.5, GREY_BORDER),
        ("GRID",   (0,0), (-1,-1), 0.3, GREY_BORDER),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ]
    tbl.setStyle(TableStyle(style))
    return tbl

# ── Page 1 header banner ─────────────────────────────────────────────────────
def header_banner():
    banner_data = [[
        Paragraph("PIH / PET", S("BT", fontSize=26, textColor=WHITE,
                  fontName="Helvetica-Bold", leading=28)),
        Paragraph("ANAESTHETIC MANAGEMENT<br/><font size=11>Quick Reference Card — Intraoperative &amp; Medical</font>",
                  S("BS", fontSize=14, textColor=WHITE, fontName="Helvetica-Bold",
                    leading=18, alignment=TA_LEFT)),
        Paragraph("Sources: Miller's, Morgan &amp; Mikhail,<br/>Barash, Creasy &amp; Resnik, Goodman &amp; Gilman",
                  S("BREF", fontSize=7, textColor=colors.HexColor("#B0C4DE"),
                    fontName="Helvetica", leading=10, alignment=TA_RIGHT))
    ]]
    banner = Table(banner_data, colWidths=[45*mm, 105*mm, 30*mm])
    banner.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ]))
    return banner

# ── Build story ──────────────────────────────────────────────────────────────
story = []
CW = W - 2*MARGIN  # usable content width

story.append(header_banner())
story.append(Spacer(1, 4*mm))

# ─── SECTION 1: Classification ───────────────────────────────────────────────
story.append(section_header("1.  CLASSIFICATION OF HYPERTENSIVE DISORDERS IN PREGNANCY"))
story.append(Spacer(1, 2*mm))

class_rows = [
    [("Gestational HTN", TD_B),       "SBP ≥140 or DBP ≥90 mmHg after 20 wks, normotensive before, NO proteinuria or end-organ damage"],
    [("Preeclampsia", TD_B),           "Gestational HTN + proteinuria (≥300 mg/24h) OR end-organ dysfunction"],
    [("Severe Features", TD_RED),      "SBP ≥160 or DBP ≥110 (×2, ≥4 h apart); platelets <100k; creatinine >1.1; LFTs ×2 normal; pulmonary oedema; cerebral/visual sx"],
    [("HELLP Syndrome", TD_RED),       "Haemolysis + Elevated Liver enzymes + Low Platelets — subtype of severe preeclampsia"],
    [("Eclampsia", TD_RED),            "Preeclampsia + tonic-clonic seizures. Indication for DELIVERY (not necessarily LSCS)"],
]
story.append(make_table(
    ["Condition", "Diagnostic Criteria"],
    class_rows,
    [45*mm, CW - 45*mm]
))
story.append(Spacer(1, 1*mm))
story.append(info_box(
    "⚑  Current ACOG guidance (2020): The term 'mild preeclampsia' is ABOLISHED — "
    "classify as preeclampsia vs preeclampsia with SEVERE FEATURES only."
))
story.append(Spacer(1, 3*mm))

# ─── SECTION 2: Medical Management ──────────────────────────────────────────
story.append(section_header("2.  MEDICAL MANAGEMENT"))
story.append(Spacer(1, 2*mm))

story.append(Paragraph("2a.  Antihypertensive Therapy", H3))

anti_rows = [
    # Chronic/outpatient
    [("Methyldopa", TD_B),     "250 mg BD oral",     ("Chronic / outpatient", TD), ("FIRST choice chronic; central α-agonist; former FDA cat B", TD)],
    [("Labetalol", TD_B),      "100 mg BD oral",     ("Chronic / outpatient", TD), ("α1 + non-selective β blocker; safe in pregnancy", TD)],
    [("Nifedipine SR", TD_B),  "30 mg OD oral",      ("Chronic / outpatient", TD), ("CCB; reasonable safety evidence", TD)],
    # Acute
    [("Labetalol", TD_B),      "20 mg IV → 40 mg q10 min (max 300 mg)",
                               ("ACUTE – 1st line", TD_B),
                               ("Does NOT alter placental blood flow; also used to blunt intubation response", TD)],
    [("Hydralazine", TD_B),    "5–10 mg IV/IM q20 min",
                               ("ACUTE – 1st line", TD_B),
                               ("Direct vasodilator; repeat dosing up to 20 mg", TD)],
    [("Nifedipine", TD_B),     "10–20 mg oral",
                               ("ACUTE oral", TD_B),
                               ("Effective for acute BP reduction", TD)],
    [("Nicardipine/Clevidipine", TD_B), "IV infusion titrated",
                               ("Intraoperative refractory", TD_B),
                               ("Short-acting CCBs; ideal for intraop use", TD)],
]
story.append(make_table(
    ["Drug", "Dose", "Setting", "Notes"],
    anti_rows,
    [32*mm, 42*mm, 32*mm, CW - 32*mm - 42*mm - 32*mm]
))
story.append(Spacer(1, 1*mm))
story.append(warning_box(
    "CONTRAINDICATED in pregnancy: ACE Inhibitors & ARBs — unequivocal teratogenicity / fetal renal failure"
))
story.append(Spacer(1, 3*mm))

story.append(Paragraph("2b.  Magnesium Sulphate — Seizure Prophylaxis & Treatment", H3))

mg_data = [
    [Paragraph("Loading Dose", TH), Paragraph("Maintenance", TH),
     Paragraph("Therapeutic Level", TH), Paragraph("Antidote", TH)],
    [Paragraph("4–6 g IV over 20–30 min", TD_B),
     Paragraph("1–3 g/hr IV infusion", TD_B),
     Paragraph("4–8 mEq/L", TD_B),
     Paragraph("Calcium Gluconate\n1 g IV over 10 min", TD_B)],
]
mg_tbl = Table(mg_data, colWidths=[CW/4]*4)
mg_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,0), ACCENT_GREEN),
    ("BACKGROUND", (0,1), (-1,-1), colors.HexColor("#E8F8F0")),
    ("BOX",  (0,0), (-1,-1), 0.5, ACCENT_GREEN),
    ("GRID", (0,0), (-1,-1), 0.3, GREY_BORDER),
    ("ALIGN",  (0,0), (-1,-1), "CENTER"),
    ("VALIGN", (0,0), (-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
]))
story.append(mg_tbl)
story.append(Spacer(1, 1*mm))

# Mg toxicity table
story.append(Paragraph("Magnesium Toxicity Monitoring:", BODY_B))
tox_rows = [
    ["4–6 mEq/L",    ("Therapeutic — seizure prevention", TD_GRN)],
    ["7–10 mEq/L",   ("Loss of patellar reflexes (early warning)", TD)],
    [">10 mEq/L",    ("Respiratory paralysis", TD_RED)],
    [">15 mEq/L",    ("Cardiac arrest", TD_RED)],
]
story.append(make_table(
    ["Mg Level", "Clinical Effect"],
    tox_rows,
    [35*mm, CW - 35*mm],
    header_bg=MID_BLUE
))
story.append(Spacer(1, 3*mm))

# Investigations
story.append(Paragraph("2c.  Investigations", H3))
inv_rows = [
    [("CBC + differential", TD_B),          "Thrombocytopenia (severe features), haemoconcentration, falling Hct"],
    [("Coagulation — PT/aPTT/fibrinogen", TD_B), "Coagulopathy screen before neuraxial; HELLP may cause DIC"],
    [("Serum creatinine", TD_B),             ">1.1 mg/dL = severe feature; baseline essential"],
    [("LFTs (ALT/AST/LDH)", TD_B),          "×2 normal = severe feature; LDH ↑ in haemolysis"],
    [("Urine protein", TD_B),               "Spot protein:creatinine ≥0.3 or 24h ≥300 mg; dipstick ≥1+ if others unavailable"],
    [("Uric acid", TD_B),                   "Elevated in preeclampsia; correlates with severity"],
    [("Urine output", TD_B),                "Target >0.5 mL/kg/hr; oliguria = severe feature risk"],
]
story.append(make_table(
    ["Investigation", "Significance"],
    inv_rows,
    [50*mm, CW - 50*mm]
))
story.append(Spacer(1, 2*mm))
story.append(info_box(
    "Definitive treatment = DELIVERY of fetus + placenta. "
    "If fetus very preterm: hospitalise + pharmacotherapy. "
    "Give betamethasone 12 mg IM ×2 (24 h apart) if viable fetus ≤34 weeks. "
    "Fluid restriction: 80–100 mL/hr total (including MgSO₄ + oxytocin infusions)."
))

story.append(PageBreak())

# ── PAGE 2 ────────────────────────────────────────────────────────────────────
story.append(header_banner())
story.append(Spacer(1, 4*mm))

# ─── SECTION 3: Anaesthetic Management ──────────────────────────────────────
story.append(section_header("3.  ANAESTHETIC MANAGEMENT", color=MID_BLUE))
story.append(Spacer(1, 2*mm))

story.append(Paragraph("3a.  Pre-anaesthetic Assessment", H3))
pre_items = [
    "Platelet count — MANDATORY before any neuraxial technique",
    "Coagulation profile (PT/aPTT/fibrinogen / TEG)",
    "Airway assessment — ANTICIPATE DIFFICULT airway (oedema of tongue, epiglottis, pharynx)",
    "Review current antihypertensives and MgSO₄ infusion rate",
    "Fluid balance — assess hydration and urine output",
    "Degree of end-organ involvement (renal, hepatic, pulmonary, CNS)",
]
for item in pre_items:
    story.append(Paragraph("  •  " + item, BODY))
story.append(Spacer(1, 2*mm))

# Platelet thresholds for neuraxial
story.append(Paragraph("Platelet Count Thresholds for Neuraxial Block (SOAP Consensus):", BODY_B))
plt_rows = [
    [("≥ 70,000/mm³", TD_GRN),    ("SAFE — proceed with neuraxial", TD_GRN),      "Very low risk of epidural haematoma"],
    [("50,000–69,000/mm³", TD_B), ("CAUTION — shared decision making", TD),       "Hematoma risk ~3%; consider TEG/ROTEM; stable count + normal TEG acceptable"],
    [("< 50,000/mm³", TD_RED),    ("HIGH RISK — generally avoid neuraxial", TD_RED), "Hematoma risk up to 11%; prefer GA unless compelling benefit"],
]
story.append(make_table(
    ["Platelet Count", "Decision", "Comments"],
    plt_rows,
    [38*mm, 50*mm, CW - 38*mm - 50*mm]
))
story.append(Spacer(1, 3*mm))

# Regional vs GA
story.append(Paragraph("3b.  Regional vs General Anaesthesia — Decision", H3))
rg_data = [
    [Paragraph("REGIONAL ANAESTHESIA\n(PREFERRED)", S("RH", fontSize=9,
      textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12)),
     Paragraph("GENERAL ANAESTHESIA\n(When neuraxial contraindicated / emergency)",
      S("GH", fontSize=9, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12))],
    [
        Paragraph(
            "✔  Best quality pain relief\n"
            "✔  Attenuates hypertensive response to pain\n"
            "✔  Reduces circulating catecholamines\n"
            "✔  Improves uteroplacental perfusion by up to 75%\n"
            "✔  Avoids difficult airway / aspiration risks\n"
            "✔  No fluid preload needed (dilute LA + opioid)\n"
            "✔  Spinal ≈ Epidural — similar hypotension incidence\n"
            "✔  Severe PET patients LESS hypotensive with spinal\n"
            "   than normotensive parturients",
            BODY
        ),
        Paragraph(
            "⚠  Indications: coagulopathy (plt <50k), refusal,\n"
            "   failed neuraxial, true emergency\n\n"
            "⚠  Key hazards:\n"
            "   • Difficult intubation (airway oedema)\n"
            "   • Hypertensive surge at laryngoscopy/extubation\n"
            "   • Aspiration risk — RSI MANDATORY\n"
            "   • Mg potentiates NMBAs — reduce dose, use TOF\n"
            "   • Profuse bleeding on laryngoscopy if coagulopathic\n"
            "   • Pulmonary oedema risk — restrict fluids",
            BODY
        )
    ]
]
rg_tbl = Table(rg_data, colWidths=[CW/2, CW/2])
rg_tbl.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (0,0), ACCENT_GREEN),
    ("BACKGROUND", (1,0), (1,0), ACCENT_RED),
    ("BACKGROUND", (0,1), (0,1), colors.HexColor("#E8F8F0")),
    ("BACKGROUND", (1,1), (1,1), colors.HexColor("#FFF0EE")),
    ("BOX",  (0,0), (-1,-1), 0.8, GREY_BORDER),
    ("INNERGRID", (0,0), (-1,-1), 0.4, GREY_BORDER),
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 7),
]))
story.append(rg_tbl)
story.append(Spacer(1, 3*mm))

# Intraoperative specifics
story.append(Paragraph("3c.  Intraoperative Management — Key Points", H3))

# Two-column layout: Regional tips | GA tips
col1 = [
    Paragraph("<b>Regional Anaesthesia Tips</b>", BODY_B),
    Spacer(1, 2),
    Paragraph("• Epidural: bupivacaine 0.0625–0.125% + fentanyl for labour; "
              "bupivacaine 0.5% for LSCS", BODY),
    Paragraph("• Spinal: hyperbaric bupivacaine 0.5% 10–12 mg ± opioid", BODY),
    Paragraph("• CSE: acceptable alternative", BODY),
    Paragraph("• Epinephrine test dose — AVOID or use cautiously (may exacerbate HTN)", BODY),
    Paragraph("• Vasopressors (phenylephrine / ephedrine): use in SMALLER-than-usual "
              "doses — patients are catecholamine-hypersensitive", BODY),
    Paragraph("• Fluid preload: CONSERVATIVE — crystalloids/colloids leak through "
              "damaged endothelium → pulmonary oedema", BODY),
    Paragraph("• Restrict total IV fluids to 80–100 mL/hr (incl. MgSO₄ + oxytocin)", BODY),
]

col2 = [
    Paragraph("<b>General Anaesthesia Protocol</b>", BODY_B),
    Spacer(1, 2),
    Paragraph("• Premed: Sodium citrate 30 mL + Metoclopramide 10 mg IV", BODY),
    Paragraph("• RSI: Propofol / Thiopentone + Succinylcholine 1.5 mg/kg", BODY),
    Paragraph("• Pre-intubation: Labetalol 5–10 mg IV to blunt pressor response", BODY),
    Paragraph("• Use video laryngoscope; smaller ETT (6.0–6.5); have surgical "
              "airway prepared", BODY),
    Paragraph("• Maintenance: volatile agent (isoflurane/sevoflurane) + opioid; "
              "AVOID ketamine in uncontrolled HTN", BODY),
    Paragraph("• NMBAs (rocuronium/vecuronium): REDUCE dose by 25–50% — "
              "Mg potentiates blockade", BODY),
    Paragraph("• ALWAYS use TOF (train-of-four) monitoring with NMBAs on MgSO₄", BODY),
    Paragraph("• Extubation: treat emergence HTN proactively with labetalol/nicardipine", BODY),
    Paragraph("• AVOID Methergine/ergotamine → hypertensive crisis; use OXYTOCIN", BODY),
]

two_col = Table([[col1, col2]], colWidths=[CW/2 - 2*mm, CW/2 - 2*mm])
two_col.setStyle(TableStyle([
    ("VALIGN", (0,0), (-1,-1), "TOP"),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("RIGHTPADDING", (0,0), (-1,-1), 5),
    ("BOX",  (0,0), (-1,-1), 0.5, GREY_BORDER),
    ("INNERGRID", (0,0), (-1,-1), 0.3, GREY_BORDER),
    ("BACKGROUND", (0,0), (0,0), colors.HexColor("#F0F7FF")),
    ("BACKGROUND", (1,0), (1,0), colors.HexColor("#FFF5F5")),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
]))
story.append(two_col)
story.append(Spacer(1, 3*mm))

# Monitoring table
story.append(Paragraph("3d.  Intraoperative Monitoring", H3))
mon_rows = [
    [("Invasive Arterial Line", TD_B),      ("MANDATORY in severe features — for both GA and neuraxial", TD_B),  "Beat-to-beat BP; facilitates ABG/labs"],
    [("CVP / Pulmonary Artery Catheter", TD_B), "Pulmonary oedema, refractory oliguria, cardiomyopathy", "Use judiciously; risk of over-resuscitation"],
    [("Foley Catheter — Urine Output", TD_B), "All cases",                                              "Target >0.5 mL/kg/hr; oliguria = severity marker"],
    [("Peripheral Nerve Stimulator (TOF)", TD_B), ("MANDATORY if on MgSO₄ + receiving NMBAs", TD_RED), "Prevents NMBA overdose from Mg potentiation"],
    [("CTG — Fetal Monitoring", TD_B),     "If fetus viable, pre-delivery",                             "FHR abnormalities common during eclampsia seizure — usually self-resolve"],
    [("SpO₂, EtCO₂, Temperature", TD_B),  "Standard",                                                  "Increased aspiration risk — monitor closely under GA"],
]
story.append(make_table(
    ["Monitor", "Indication", "Notes"],
    mon_rows,
    [45*mm, 55*mm, CW - 100*mm]
))
story.append(Spacer(1, 2*mm))

# Critical drug interactions
story.append(warning_box(
    "CRITICAL DRUG INTERACTIONS:  "
    "① MgSO₄ + ALL NMBAs → prolonged neuromuscular blockade (reduce NMBA dose 25–50%, use TOF)  "
    "② MgSO₄ + Nifedipine → potentiates hypotension (use cautiously)  "
    "③ Ergot alkaloids → hypertensive crisis in preeclampsia — USE OXYTOCIN instead  "
    "④ Ketamine → raises BP/ICP — AVOID in uncontrolled hypertension"
))
story.append(Spacer(1, 3*mm))

# ─── SECTION 4: Postpartum ───────────────────────────────────────────────────
story.append(section_header("4.  POSTPARTUM MANAGEMENT", color=colors.HexColor("#6B3A7D")))
story.append(Spacer(1, 2*mm))

pp_items = [
    ("Continue MgSO₄ for 24–48 h postpartum", BODY_B),
    ("Monitor BP closely — can worsen in first 48 h after delivery", BODY),
    ("~20% of eclampsia occurs >48 h postpartum — MAINTAIN vigilance", WARN),
    ("Beware postpartum pulmonary oedema — fluid mobilisation phase", BODY),
    ("Continue antihypertensives; wean slowly over days–weeks", BODY),
    ("Uterotonic of choice = OXYTOCIN (avoid Methergine)", BODY),
    ("Provide adequate analgesia — uncontrolled pain raises BP", BODY),
    ("Screen for postpartum depression and long-term CV risk (↑ HTN, IHD risk lifetime)", BODY),
]
for txt, style in pp_items:
    story.append(Paragraph("  •  " + txt, style))

story.append(Spacer(1, 3*mm))

# ─── SECTION 5: Quick Drug Reference ────────────────────────────────────────
story.append(section_header("5.  QUICK DRUG SUMMARY", color=colors.HexColor("#1A5276")))
story.append(Spacer(1, 2*mm))

qd_rows = [
    [("Methyldopa", TD_B),    "250 mg BD PO",                ("Chronic HTN", TD),         ("Safe; rarely used outside pregnancy", TD)],
    [("Labetalol", TD_B),     "20→40 mg IV; 100 mg BD PO",  ("Acute & chronic", TD_B),    ("Doesn't reduce placental flow", TD)],
    [("Hydralazine", TD_B),   "5–10 mg IV/IM q20 min",       ("Acute", TD_B),              ("Direct vasodilator", TD)],
    [("Nifedipine", TD_B),    "10–20 mg PO (acute); 30 mg SR (chronic)", ("Acute/chronic", TD), ("CCB; potentiates Mg", TD)],
    [("Nicardipine", TD_B),   "IV infusion titrated",         ("Intraoperative", TD),       ("Short-acting; excellent for intraop use", TD)],
    [("MgSO₄", TD_B),        "4–6 g IV load; 1–3 g/hr",     ("Seizure Rx/prophylaxis", TD_B), ("Therapeutic: 4–8 mEq/L", TD)],
    [("Calcium Gluconate", TD_B), "1 g IV over 10 min",      ("Antidote to Mg toxicity", TD_RED), ("Give immediately for respiratory/cardiac depression", TD)],
    [("Labetalol IV", TD_B),  "5–10 mg increments IV",       ("Intubation pressor response", TD_B), ("Blunts sympathetic surge at laryngoscopy", TD)],
    [("Oxytocin", TD_B),      "10–20 IU slow IV/IM",         ("Uterotonic", TD_GRN),       ("Preferred over ergot alkaloids in HTN", TD_GRN)],
    [("Phenylephrine/Ephedrine", TD_B), "Small doses titrated", ("Hypotension after neuraxial", TD), ("Catecholamine hypersensitivity — use min doses", TD)],
]
story.append(make_table(
    ["Drug", "Dose", "Indication", "Key Point"],
    qd_rows,
    [32*mm, 42*mm, 38*mm, CW - 32*mm - 42*mm - 38*mm]
))

story.append(Spacer(1, 3*mm))
story.append(HRFlowable(width=CW, thickness=0.5, color=GREY_BORDER))
story.append(Spacer(1, 2*mm))
story.append(Paragraph(
    "Sources: Miller's Anesthesia 10e | Morgan &amp; Mikhail's Clinical Anesthesiology 7e | "
    "Barash, Cullen &amp; Stoelting's Clinical Anesthesia 9e | "
    "Creasy &amp; Resnik's Maternal-Fetal Medicine | Goodman &amp; Gilman's Pharmacological Basis of Therapeutics | "
    "Tintinalli's Emergency Medicine | ACOG 2020 Hypertension in Pregnancy Guidelines",
    FOOTER_S
))
story.append(Paragraph(
    "Generated by Orris Medical AI · For educational use only · Verify all doses against current institutional protocols",
    S("FW", fontSize=6, textColor=colors.HexColor("#C0392B"),
      fontName="Helvetica-Oblique", alignment=TA_CENTER)
))

# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/pih-pdf && python create_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/pih-pdf/PIH_PET_Anaesthetic_Management.pdf

Your quick reference PDF is ready:

PIH PET Anaesthetic Management

PDF Document · PDF


What's inside (2-page A4 card):
Page 1 - Medical Management
  • Classification table: Gestational HTN → Preeclampsia → Severe Features → HELLP → Eclampsia (with ACOG 2020 note abolishing "mild preeclampsia")
  • Antihypertensive drug table: chronic (methyldopa, labetalol, nifedipine) and acute (labetalol IV, hydralazine, nicardipine) with doses
  • Contraindicated drugs callout (ACEi/ARBs)
  • MgSO4 protocol: loading dose, maintenance, therapeutic levels, toxicity ladder (4 levels), antidote
  • Investigations summary
  • Fluid restriction, corticosteroids, and delivery principles
Page 2 - Anaesthetic Management
  • Platelet count thresholds (SOAP consensus) for neuraxial block
  • Regional vs GA side-by-side comparison (green vs red boxes)
  • Regional tips + GA protocol in two columns
  • Monitoring table (arterial line, TOF, urine output etc.)
  • Critical drug interactions warning (MgSO4 + NMBAs, ergots, ketamine)
  • Postpartum management checklist
  • Quick drug summary table (10 drugs with doses, indications, key points)
Sources cited from Miller's Anesthesia 10e, Morgan & Mikhail 7e, Barash 9e, Creasy & Resnik, Goodman & Gilman, and ACOG 2020 guidelines.

Cleft palate /cleft lip surgery - anaesthetic relevance MD Anaesthesia pg exams

Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Writing File

~/pih-pdf/cleft_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT

OUTPUT = "/tmp/workspace/pih-pdf/Cleft_Lip_Palate_Anaesthesia.pdf"

# Palette
NAVY       = colors.HexColor("#1A2F5A")
TEAL       = colors.HexColor("#1A7A6E")
PURPLE     = colors.HexColor("#5B2C8D")
AMBER      = colors.HexColor("#D4820A")
RED        = colors.HexColor("#B03A2E")
GREEN      = colors.HexColor("#1A7A4A")
LT_BLUE    = colors.HexColor("#EBF4FF")
LT_GREEN   = colors.HexColor("#E8F8F0")
LT_AMBER   = colors.HexColor("#FFF8E8")
LT_RED     = colors.HexColor("#FFF0EE")
LT_PURPLE  = colors.HexColor("#F5EEF8")
GREY_BG    = colors.HexColor("#F4F6F8")
GREY_BD    = colors.HexColor("#BDC3C7")
WHITE      = colors.white
DARK       = colors.HexColor("#1C1C1C")

W, H = A4
MARGIN = 14*mm
CW = W - 2*MARGIN

doc = SimpleDocTemplate(OUTPUT, pagesize=A4,
    rightMargin=MARGIN, leftMargin=MARGIN,
    topMargin=16*mm, bottomMargin=14*mm,
    title="Cleft Lip/Palate Anaesthesia - MD Exam Reference")

styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, parent=styles["Normal"], **kw)

TH  = S("TH",  fontSize=8,   textColor=WHITE,  fontName="Helvetica-Bold", alignment=TA_CENTER, leading=10)
TD  = S("TD",  fontSize=7.8, textColor=DARK,   fontName="Helvetica",      alignment=TA_LEFT,   leading=10)
TDB = S("TDB", fontSize=7.8, textColor=DARK,   fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDR = S("TDR", fontSize=7.8, textColor=RED,    fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDG = S("TDG", fontSize=7.8, textColor=GREEN,  fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDP = S("TDP", fontSize=7.8, textColor=PURPLE, fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)

BODY  = S("BODY",  fontSize=8.2, textColor=DARK, fontName="Helvetica",      spaceAfter=2, leading=11)
BODYB = S("BODYB", fontSize=8.2, textColor=DARK, fontName="Helvetica-Bold", spaceAfter=2, leading=11)
H2    = S("H2",    fontSize=10,  textColor=WHITE, fontName="Helvetica-Bold", leading=13, spaceAfter=2)
H3    = S("H3",    fontSize=9,   textColor=NAVY,  fontName="Helvetica-Bold", leading=12, spaceBefore=4, spaceAfter=2)
WARN  = S("WARN",  fontSize=8,   textColor=RED,   fontName="Helvetica-Bold", leading=11, spaceAfter=2)
NOTE  = S("NOTE",  fontSize=7.8, textColor=AMBER, fontName="Helvetica-BoldOblique", leading=10, spaceAfter=1)
SMALL = S("SMALL", fontSize=6.8, textColor=colors.grey, fontName="Helvetica", alignment=TA_CENTER, leading=9)
EXAM  = S("EXAM",  fontSize=8,   textColor=PURPLE, fontName="Helvetica-Bold", leading=11, spaceAfter=2)

def sec_hdr(text, color=NAVY):
    t = Table([[Paragraph(text, H2)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0),(-1,-1), color),
        ("TOPPADDING", (0,0),(-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING",(0,0),(-1,-1), 8),
    ]))
    return t

def warn_box(txt):
    t = Table([[Paragraph("⚠  " + txt, WARN)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), colors.HexColor("#FFF3CD")),
        ("BOX",(0,0),(-1,-1), 0.8, AMBER),
        ("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def info_box(txt, bg=LT_BLUE, bd=colors.HexColor("#2B6CB0")):
    t = Table([[Paragraph(txt, BODY)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), bg),
        ("BOX",(0,0),(-1,-1), 0.7, bd),
        ("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def exam_box(txt):
    t = Table([[Paragraph("★ EXAM POINT:  " + txt, EXAM)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), LT_PURPLE),
        ("BOX",(0,0),(-1,-1), 0.8, PURPLE),
        ("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def mktable(headers, rows, cws, hbg=NAVY):
    data = [[Paragraph(h, TH) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c[0]),c[1]) if isinstance(c,tuple) else Paragraph(str(c),TD) for c in row])
    t = Table(data, colWidths=cws, repeatRows=1)
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,0), hbg),
        ("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, GREY_BG]),
        ("BOX",(0,0),(-1,-1),0.5,GREY_BD),
        ("GRID",(0,0),(-1,-1),0.3,GREY_BD),
        ("VALIGN",(0,0),(-1,-1),"MIDDLE"),
        ("TOPPADDING",(0,0),(-1,-1),4),
        ("BOTTOMPADDING",(0,0),(-1,-1),4),
        ("LEFTPADDING",(0,0),(-1,-1),5),
    ]))
    return t

def banner():
    d = [[
        Paragraph("CLEFT LIP &amp; PALATE", S("BT", fontSize=18, textColor=WHITE,
                  fontName="Helvetica-Bold", leading=22)),
        Paragraph("ANAESTHESIA — MD Exam Reference<br/>"
                  "<font size=9>Airway · Intraoperative · Postoperative · Associated Syndromes</font>",
                  S("BS", fontSize=12, textColor=WHITE, fontName="Helvetica-Bold",
                    alignment=TA_LEFT, leading=16)),
        Paragraph("Miller's · Morgan &amp; Mikhail<br/>Barash · Scott-Brown's",
                  S("BR", fontSize=7, textColor=colors.HexColor("#B0C4DE"),
                    fontName="Helvetica", alignment=TA_RIGHT, leading=10))
    ]]
    b = Table(d, colWidths=[55*mm, 100*mm, 25*mm])
    b.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),8),
        ("VALIGN",(0,0),(-1,-1),"MIDDLE"),
    ]))
    return b

story = []

# ── BANNER ─────────────────────────────────────────────────────────────────
story.append(banner())
story.append(Spacer(1, 4*mm))

# ── SECTION 1: OVERVIEW ─────────────────────────────────────────────────────
story.append(sec_hdr("1.  OVERVIEW & SURGICAL TIMING"))
story.append(Spacer(1,2*mm))

timing_rows = [
    [("Cleft Lip (Cheiloplasty)", TDB), "3–6 months of age",
     "Rule of 10s: Wt >10 lb (4.5 kg), Hb >10 g/dL, Age >10 wks"],
    [("Cleft Palate (Palatoplasty)", TDB), "9–12 months of age",
     "Before speech development; optimises speech outcome"],
    [("Alveolar Bone Graft", TDB), "8–11 years",  "Before canine eruption"],
    [("Secondary corrections", TDB), "Adolescence", "Rhinoplasty, pharyngoplasty, orthognathic surgery"],
]
story.append(mktable(
    ["Procedure", "Age", "Key Rationale"],
    timing_rows, [45*mm, 30*mm, CW-75*mm]
))
story.append(Spacer(1,1*mm))
story.append(exam_box(
    "RULE OF TENS (classic exam question): ≥10 weeks age, ≥10 lb (4.5 kg) weight, ≥10 g/dL haemoglobin — "
    "minimum criteria before cleft lip repair."
))
story.append(Spacer(1,2*mm))

story.append(Paragraph("Classification (Veau 1931):", H3))
veau_rows = [
    ["Group I (A)", "Soft palate only"],
    ["Group II (B)", "Hard + soft palate to incisive foramen"],
    ["Group III (C)", "Soft palate to alveolus ± lip (unilateral)"],
    ["Group IV (D)", "Complete bilateral cleft (lip + alveolus + palate)"],
]
story.append(mktable(["Group", "Description"], veau_rows, [28*mm, CW-28*mm], hbg=TEAL))
story.append(Spacer(1,3*mm))

# ── SECTION 2: PREOPERATIVE ASSESSMENT ─────────────────────────────────────
story.append(sec_hdr("2.  PREOPERATIVE ASSESSMENT", color=TEAL))
story.append(Spacer(1,2*mm))

story.append(Paragraph("2a.  Associated Syndromes (HIGH EXAM YIELD)", H3))
syn_rows = [
    [("Pierre Robin Sequence", TDR),
     "Micrognathia + cleft palate + glossoptosis",
     ("SEVERELY DIFFICULT AIRWAY — retrognathia causes obligate nasal breathing and can completely obstruct airway", TDR)],
    [("Treacher Collins (Mandibulofacial Dysostosis)", TDR),
     "Malar hypoplasia, micrognathia, ear anomalies, cleft palate",
     ("EXTREMELY DIFFICULT intubation; hypoplastic mandible", TDR)],
    [("Stickler Syndrome", TDB),
     "Micrognathia, cleft palate, myopia, joint laxity",
     "May have difficult airway"],
    [("Van der Woude Syndrome", TD),
     "Cleft lip/palate + lip pits; AD inheritance",
     "Usually no additional airway difficulty"],
    [("22q11.2 (DiGeorge/velocardiofacial)", TDB),
     "Palatal abnormalities, cardiac defects (TOF, VSD), immune deficiency",
     "Cardiac assessment mandatory; T-cell deficiency (avoid live vaccines, irradiate blood products)"],
    [("Down Syndrome (Trisomy 21)", TDB),
     "Cleft palate in ~1%; macroglossia, atlantoaxial instability",
     "Neck flexion precautions; cardiac defects in 40-50%"],
    [("Goldenhar Syndrome", TDB),
     "Hemifacial microsomia, cervical vertebral anomalies, ear anomalies",
     "Difficult airway + cervical spine instability"],
]
story.append(mktable(
    ["Syndrome", "Features", "Anaesthetic Significance"],
    syn_rows, [40*mm, 50*mm, CW-90*mm]
))
story.append(Spacer(1,1*mm))
story.append(warn_box(
    "ALWAYS screen for associated syndromes/cardiac defects preoperatively. "
    "~30% of cleft lip/palate cases are associated with other anomalies (Miller's Anesthesia 10e). "
    "Echocardiography if cardiac defect suspected."
))
story.append(Spacer(1,2*mm))

story.append(Paragraph("2b.  Preoperative Checklist", H3))
checks = [
    ("Airway Assessment", "Mouth opening, jaw size, tongue size, retrognathia, neck mobility — predict difficult intubation"),
    ("Rule of 10s", "Weight ≥4.5 kg, Hb ≥10 g/dL, Age ≥10 weeks (for lip repair)"),
    ("Cardiac status", "ECG/Echo if murmur or associated syndrome; SBE prophylaxis if required"),
    ("Haematology", "Hb, TWBC, platelets; type and crossmatch"),
    ("Upper respiratory infection", "Postpone if active URTI; increased laryngospasm risk with ETT"),
    ("Fasting", "Infants: breast milk 4h, formula 6h, solids 6–8h (modified per age)"),
    ("Parental consent & explanation", "Including difficult airway plan"),
]
for title, detail in checks:
    story.append(Paragraph(f"  • <b>{title}:</b>  {detail}", BODY))
story.append(Spacer(1,3*mm))

# ── SECTION 3: INTRAOPERATIVE MANAGEMENT ───────────────────────────────────
story.append(sec_hdr("3.  INTRAOPERATIVE ANAESTHETIC MANAGEMENT", color=colors.HexColor("#2E4057")))
story.append(Spacer(1,2*mm))

story.append(Paragraph("3a.  Airway — The CORE Challenge", H3))
story.append(info_box(
    "The central anaesthetic challenge in cleft lip/palate surgery is AIRWAY MANAGEMENT. "
    "The defect creates unique intubation difficulties, the surgeon requires unobstructed "
    "oral/nasal field, and the pharyngeal packing/surgical manipulation poses ongoing airway risks.",
    bg=LT_BLUE
))
story.append(Spacer(1,2*mm))

aw_rows = [
    [("Cleft lip (unilateral, incomplete)", TDG),
     "Usually straightforward; laryngoscope blade may slip into cleft",
     "Roll of gauze/finger in cleft to stabilise blade"],
    [("Bilateral cleft lip", TDB),
     "Premaxilla protrudes; difficult mask seal and laryngoscopy",
     "Careful mask fit; may need two-handed mask ventilation"],
    [("Large/bilateral cleft palate", TDR),
     ("Tongue prolapses through cleft → airway obstruction. Laryngoscope blade may lodge in cleft", TDR),
     ("Keep tongue anterior; use straight blade; have LMA + videolaryngoscope ready", TDR)],
    [("Retrognathia (Pierre Robin, Treacher Collins)", TDR),
     ("SEVERELY DIFFICULT — small jaw, large tongue relative to oral cavity", TDR),
     ("Awake fibreoptic intubation (>6 months) or gas induction with spontaneous ventilation + direct/video laryngoscopy", TDR)],
]
story.append(mktable(
    ["Cleft Type", "Airway Problem", "Management"],
    aw_rows, [35*mm, 60*mm, CW-95*mm]
))
story.append(Spacer(1,2*mm))

story.append(Paragraph("3b.  Induction", H3))
ind_items = [
    ("Preferred technique", "Inhalational induction (sevoflurane in O₂/N₂O) — smooth, avoids IV in uncooperative infant; maintain spontaneous ventilation until airway secured"),
    ("IV induction alternative", "If IV access established: propofol 2–3 mg/kg or thiopentone 4–5 mg/kg"),
    ("Atropine premedication", "0.02 mg/kg IV/IM — reduces secretions; prevents bradycardia (especially with sevoflurane/halothane); given prior to induction in infants"),
    ("Preoxygenation", "Mandatory — infants have low FRC, desaturate rapidly"),
    ("Positioning for intubation", "Supine, small shoulder roll (not neck roll); avoid neck hyperextension in Pierre Robin/Goldenhar"),
]
for title, detail in ind_items:
    story.append(Paragraph(f"  • <b>{title}:</b>  {detail}", BODY))
story.append(Spacer(1,2*mm))

story.append(Paragraph("3c.  Endotracheal Tube (ETT) — Selection & Positioning", H3))
ett_rows = [
    [("ETT type — Cleft Lip", TDB), "Preformed oral RAE tube (Ring-Adair-Elwyn)",
     "Contoured curve keeps tube and circuit away from surgical field; secured to CHIN/LOWER jaw"],
    [("ETT type — Cleft Palate", TDB), "South-facing preformed oral RAE tube",
     "Secured CENTRALLY to chin midline; allows Dingman gag/mouth gag insertion"],
    [("Nasal RAE tube", TD), "Occasionally for cleft palate",
     "Useful when oral field completely occupied; risk of nasal trauma"],
    [("ETT size (uncuffed)", TDB), "(Age/4) + 4 mm — confirm with leak at 20–25 cmH₂O",
     "Uncuffed preferred <8 yrs to reduce subglottic oedema risk"],
    [("Cuffed tubes", TD), "May use cuffed 0.5 mm smaller; inflate to minimal occlusive pressure",
     "Acceptable if tube change risk outweighs subglottic risk"],
    [("Fixation", TDR), ("CRITICAL — tube must be VERY SECURELY fixed", TDR),
     ("Surgeon works directly over airway; accidental extubation in this position is life-threatening", TDR)],
]
story.append(mktable(
    ["Item", "Choice", "Rationale"],
    ett_rows, [40*mm, 50*mm, CW-90*mm]
))
story.append(Spacer(1,1*mm))
story.append(exam_box(
    "Preformed oral RAE tube: the STANDARD airway device for cleft lip/palate surgery. "
    "RAE = Ring, Adair, Elwyn (named after inventors). "
    "For cleft lip → tube to CHIN. For cleft palate → tube MIDLINE to chin (through Dingman mouth gag)."
))
story.append(Spacer(1,2*mm))

story.append(Paragraph("3d.  Throat Pack", H3))
story.append(Paragraph(
    "  • A MOIST pharyngeal/throat pack is inserted by the surgeon after intubation "
    "to prevent blood/secretions from being swallowed or aspirated.", BODY))
story.append(Paragraph(
    "  • The pack MUST be documented in the anaesthetic chart and MUST be removed before extubation.", BODY))
story.append(Paragraph(
    "  • RETAINED THROAT PACK = serious sentinel event → complete airway obstruction post-extubation.", BODY))
story.append(warn_box("THROAT PACK: Record insertion AND removal. Check mouth before extubation. This is a common exam question and a critical patient safety point."))
story.append(Spacer(1,2*mm))

story.append(Paragraph("3e.  Maintenance", H3))
maint_items = [
    ("Agent", "Sevoflurane/isoflurane + O₂/air (or N₂O); or TIVA with propofol infusion"),
    ("Muscle relaxants", "Short/intermediate-acting (atracurium, mivacurium); allow reversal before extubation. Succinylcholine for RSI if needed"),
    ("Analgesia", "Multimodal: paracetamol IV/PR + infraorbital nerve block for lip repair + ketorolac/diclofenac + low-dose opioid (fentanyl 1–2 mcg/kg)"),
    ("Infraorbital nerve block", "Intraoral or extraoral approach; provides excellent analgesia for cleft lip repair; reduces opioid requirement"),
    ("Greater palatine nerve block", "Provides analgesia for palatal surgery"),
    ("Positioning", "Supine with head ring; surgeon at head end; table may be rotated 90° or 180° away from anaesthetist"),
    ("Dingman mouth gag", "Inserted by surgeon for palate surgery — can displace ETT; re-check tube position/ETCO₂/breath sounds after gag insertion"),
    ("Blood loss", "Usually modest; have blood available for bilateral complete clefts and revisions; IV access must be reliable"),
    ("Fluid management", "Maintenance fluids: 4 mL/kg/hr for first 10 kg; replace blood losses with 3:1 crystalloid or blood if Hb drops"),
    ("Temperature", "Neonates/infants lose heat rapidly — warm theatre, warming blanket, warm IV fluids, forced-air warmer"),
]
for title, detail in maint_items:
    story.append(Paragraph(f"  • <b>{title}:</b>  {detail}", BODY))
story.append(Spacer(1,3*mm))

# ── PAGE 2 ──────────────────────────────────────────────────────────────────
story.append(PageBreak())
story.append(banner())
story.append(Spacer(1,4*mm))

# ── SECTION 4: EXTUBATION ───────────────────────────────────────────────────
story.append(sec_hdr("4.  EXTUBATION — HIGH-RISK PHASE", color=RED))
story.append(Spacer(1,2*mm))

story.append(info_box(
    "Extubation is the MOST DANGEROUS phase in cleft palate repair. "
    "Postoperative airway obstruction is a recognised complication of palatoplasty "
    "due to posterior displacement of the repaired palate, oedema, and haematoma. "
    "Extubation should be AWAKE (not deep) to protect the airway.",
    bg=LT_RED, bd=RED
))
story.append(Spacer(1,2*mm))

ext_items = [
    ("AWAKE extubation", "MANDATORY for cleft palate repair — extubate only when child is awake with intact reflexes (coughing, eye-opening)"),
    ("Deep extubation (cleft lip)", "May be considered for lip repair only (non-palate), to reduce bucking/straining on suture line"),
    ("Throat pack removal", "REMOVE pack and inspect oropharynx under direct vision BEFORE extubation"),
    ("Suction", "Gentle oropharyngeal suction under direct vision; avoid vigorous suctioning near repair"),
    ("Lateral/recovery position", "After extubation — 'tonsillar position' (lateral, head-down) prevents aspiration and helps tongue fall forward"),
    ("Oropharyngeal airway", "AVOID hard Guedel airway after palate repair — may disrupt suture line; use soft nasopharyngeal airway if needed"),
    ("Tongue stitch", "Some surgeons place a stay suture through the tongue in Pierre Robin — allows forward traction if obstruction occurs"),
    ("Post-extubation monitoring", "Continuous SpO₂ monitoring; O₂ by face mask/tent; immediate re-intubation equipment at bedside"),
]
for title, detail in ext_items:
    story.append(Paragraph(f"  • <b>{title}:</b>  {detail}", BODY))
story.append(Spacer(1,1*mm))
story.append(exam_box(
    "KEY EXAM POINT: Cleft palate → AWAKE extubation. "
    "Cleft lip → deep extubation acceptable to avoid suture line stress. "
    "Oropharyngeal (Guedel) airway is CONTRAINDICATED after palatoplasty."
))
story.append(Spacer(1,3*mm))

# ── SECTION 5: POSTOPERATIVE ────────────────────────────────────────────────
story.append(sec_hdr("5.  POSTOPERATIVE MANAGEMENT", color=TEAL))
story.append(Spacer(1,2*mm))

post_rows = [
    [("Airway obstruction", TDR), "Palatoplasty displaces soft palate posteriorly; oedema; blood clot",
     ("Awake extubation; lateral position; tongue suture; SpO₂ monitoring; re-intubation at bedside", TDR)],
    [("Bleeding", TDB), "Palatal vascularity; adrenaline dissipation",
     "Swallowed blood → vomiting/aspiration; monitor closely; return to OT if significant"],
    [("Laryngospasm", TDB), "Secretions/blood around larynx on extubation",
     "CPAP with 100% O₂; jaw thrust; propofol 0.5 mg/kg IV; succinylcholine 1–2 mg/kg if complete"],
    [("Pain / Emergence agitation", TDB), "Common in infants post-GA",
     "Multimodal analgesia (paracetamol + NSAID + opioid PRN); regional blocks reduce requirement"],
    [("Vomiting", TD), "Swallowed blood; opioids",
     "Ondansetron 0.1 mg/kg IV; dexamethasone 0.1 mg/kg IV at induction as prophylaxis"],
    [("Hypothermia", TDB), "Small body surface area, prolonged surgery",
     "Active warming from induction; warm fluids; monitor temperature; keep theatre warm"],
    [("Apnoea (ex-preterm)", TDR), "Former preterm infants <60 weeks PMA",
     ("Admit for apnoea monitoring; caffeine prophylaxis", TDR)],
]
story.append(mktable(
    ["Complication", "Cause/Risk Factor", "Management"],
    post_rows, [38*mm, 55*mm, CW-93*mm]
))
story.append(Spacer(1,2*mm))

# Analgesia
story.append(Paragraph("Postoperative Analgesia Protocol:", H3))
analg_rows = [
    [("Paracetamol (Acetaminophen)", TDB), "15 mg/kg IV/oral q6h", "1st line; always use; reduces opioid need"],
    [("NSAIDs (Ketorolac/Ibuprofen)", TDB), "0.5 mg/kg IV or 5 mg/kg oral", "Effective; avoid if bleeding risk; >3 months age"],
    [("Infraorbital nerve block", TDG), "Bupivacaine 0.25% 0.5–1 mL per side",
     ("Bilateral for lip repair; equivalent to IV morphine for first few hours", TDG)],
    [("Greater palatine block", TDB), "Bupivacaine 0.25% 0.5 mL per foramen",
     "For palatal repair; reduces intraop and postop opioid requirements"],
    [("Opioids (fentanyl/morphine)", TD), "Titrate IV; morphine 0.05–0.1 mg/kg PRN",
     "Use judiciously — increased respiratory depression risk in infants"],
    [("Dexamethasone", TD), "0.1 mg/kg IV at induction", "Reduces oedema + PONV + analgesic requirement"],
]
story.append(mktable(
    ["Agent", "Dose", "Notes"],
    analg_rows, [45*mm, 45*mm, CW-90*mm]
))
story.append(Spacer(1,3*mm))

# ── SECTION 6: SPECIAL SCENARIOS ────────────────────────────────────────────
story.append(sec_hdr("6.  SPECIAL SCENARIOS & DIFFICULT AIRWAY", color=PURPLE))
story.append(Spacer(1,2*mm))

story.append(Paragraph("Pierre Robin Sequence — Anaesthetic Protocol", H3))
story.append(info_box(
    "Pierre Robin = Micrognathia + Cleft Palate + Glossoptosis (tongue falls back). "
    "Neonates present with feeding difficulties and airway obstruction relieved by prone positioning. "
    "This is the MOST DANGEROUS cleft-related airway scenario.",
    bg=LT_RED, bd=RED
))
pr_items = [
    ("Prone positioning", "Preoperative: prone position relieves obstruction by gravity-forward tongue displacement"),
    ("Induction", "Gas induction (sevoflurane) in PRONE or lateral position; maintain spontaneous ventilation throughout"),
    ("Intubation options", "① Direct laryngoscopy (Miller straight blade — see epiglottis); ② Videolaryngoscopy (GlideScope); ③ Fibreoptic bronchoscope (FOB) — GOLD STANDARD for anticipated difficult airway; ④ LMA as conduit for FOB-guided intubation"),
    ("Surgical airway standby", "Surgeon must be scrubbed and ready for emergency tracheostomy/cricothyrotomy"),
    ("Tongue stitch", "Place 3-0 prolene through tongue apex before induction as safety measure"),
    ("NEVER", "Never give neuromuscular blocking agent until airway is SECURED"),
]
for title, detail in pr_items:
    story.append(Paragraph(f"  • <b>{title}:</b>  {detail}", BODY))
story.append(Spacer(1,3*mm))

# ── SECTION 7: HIGH YIELD EXAM POINTS ───────────────────────────────────────
story.append(sec_hdr("7.  HIGH-YIELD MD EXAM POINTS", color=colors.HexColor("#1A5276")))
story.append(Spacer(1,2*mm))

exam_points = [
    "Rule of 10s: Age ≥10 wks, Weight ≥10 lb (4.5 kg), Hb ≥10 g/dL before cleft lip repair",
    "~30% of cleft lip/palate associated with syndromes — thorough preoperative assessment is MANDATORY",
    "Standard airway device = Preformed oral RAE tube (south-facing); secured to chin",
    "Dingman mouth gag for palatoplasty: CHECK ETT position and ETCO₂ after insertion — can displace tube",
    "Throat pack: document, count, and confirm removal BEFORE extubation (NEVER forget this step)",
    "Cleft lip → deep extubation acceptable | Cleft palate → AWAKE extubation MANDATORY",
    "Guedel (rigid) oropharyngeal airway is CONTRAINDICATED post-palatoplasty",
    "Infraorbital nerve block = excellent analgesia for cleft lip repair (reduces opioid requirement significantly)",
    "Pierre Robin Sequence: gas induction + maintain spontaneous ventilation; FOB gold standard; NEVER paralyse first",
    "Magnesium interacts with NMBAs (relevant if used for laryngospasm treatment)",
    "Ayre's T-piece (1937): first specially designed paediatric anaesthesia circuit — created for cleft lip/palate babies",
    "Ex-premature infants <60 weeks PMA: admit postoperatively for apnoea monitoring regardless of procedure",
    "22q11 deletion: screen for cardiac defects + immunodeficiency (irradiate blood products if required)",
    "Lateral (tonsillar) position after extubation: prevents aspiration, allows drainage, tongue falls forward",
    "Postoperative airway obstruction after palatoplasty: keep SpO₂ probe on, re-intubation equipment at bedside",
]
for i, pt in enumerate(exam_points, 1):
    story.append(Paragraph(f"  <b>{i}.</b>  {pt}", BODY))
story.append(Spacer(1,2*mm))

# Drug summary
story.append(Paragraph("Quick Drug Reference:", H3))
drug_rows = [
    [("Atropine", TDB),             "0.02 mg/kg IV/IM",      "Pre-induction; antisialogogue + prevents bradycardia"],
    [("Sevoflurane", TDB),          "2–8% inhalational",     "Agent of choice for inhalational induction in children"],
    [("Suxamethonium", TDB),        "1–2 mg/kg IV",          "RSI; laryngospasm treatment (full dose)"],
    [("Atracurium", TDB),           "0.5 mg/kg IV",          "Short/intermediate NMBA; organ-independent elimination"],
    [("Paracetamol", TDB),          "15 mg/kg IV/PR q6h",    "1st line analgesia; always use"],
    [("Ketorolac", TDB),            "0.5 mg/kg IV",          "NSAID; >3 months; caution in bleeding"],
    [("Bupivacaine (infraorbital)", TDB), "0.25% 0.5–1 mL",  "Bilateral infraorbital block for lip repair"],
    [("Fentanyl", TDB),             "1–2 mcg/kg IV",         "Intraoperative analgesia supplement"],
    [("Ondansetron", TDB),          "0.1 mg/kg IV",          "PONV prevention (swallowed blood risk)"],
    [("Dexamethasone", TDB),        "0.1 mg/kg IV",          "Reduces oedema, PONV, analgesic need"],
    [("Neostigmine", TDB),          "0.05 mg/kg + atropine 0.02 mg/kg", "NMBA reversal before awake extubation"],
]
story.append(mktable(
    ["Drug", "Dose", "Use"],
    drug_rows, [40*mm, 42*mm, CW-82*mm]
))

story.append(Spacer(1,3*mm))
story.append(HRFlowable(width=CW, thickness=0.5, color=GREY_BD))
story.append(Spacer(1,2*mm))
story.append(Paragraph(
    "Sources: Miller's Anesthesia 10e · Morgan &amp; Mikhail's Clinical Anesthesiology 7e · "
    "Barash, Cullen &amp; Stoelting's Clinical Anesthesia 9e · "
    "Scott-Brown's Otorhinolaryngology Head &amp; Neck Surgery 8e · "
    "Cummings Otolaryngology Head &amp; Neck Surgery",
    SMALL
))
story.append(Paragraph(
    "Generated by Orris Medical AI · For educational use only · Verify doses against current institutional protocols and BNF for Children",
    S("FW", fontSize=6.2, textColor=RED, fontName="Helvetica-Oblique", alignment=TA_CENTER)
))

doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/pih-pdf && python cleft_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/pih-pdf/Cleft_Lip_Palate_Anaesthesia.pdf

Here is the full exam-ready answer, followed by your downloadable PDF:

Cleft Lip Palate Anaesthesia

PDF Document · PDF


Cleft Lip / Cleft Palate - Anaesthetic Relevance (MD Anaesthesia Exam)


1. OVERVIEW & SURGICAL TIMING

ProcedureAgeKey Point
Cleft Lip (Cheiloplasty)3-6 monthsRule of 10s applies
Cleft Palate (Palatoplasty)9-12 monthsBefore speech development
Alveolar bone graft8-11 yearsBefore canine eruption
Secondary correctionsAdolescenceRhinoplasty, pharyngoplasty
★ RULE OF TENS (Classic Exam Q): Age ≥10 weeks | Weight ≥10 lbs (4.5 kg) | Hb ≥10 g/dL — minimum criteria before cleft lip repair is undertaken.
Veau Classification (1931):
  • Group I: Soft palate only
  • Group II: Hard + soft palate to incisive foramen
  • Group III: Extends to alveolus ± lip (unilateral)
  • Group IV: Complete bilateral cleft

2. PREOPERATIVE ASSESSMENT

2a. Associated Syndromes (~30% of cases have associated anomalies)

SyndromeFeaturesAnaesthetic Significance
Pierre Robin SequenceMicrognathia + cleft palate + glossoptosisSEVERELY DIFFICULT airway - tongue obstructs larynx
Treacher CollinsMalar hypoplasia, micrognathia, ear anomaliesEXTREMELY difficult intubation
Stickler SyndromeMicrognathia, myopia, joint laxityMay have difficult airway
22q11.2 (DiGeorge)Palatal anomalies + cardiac defects (TOF, VSD) + T-cell deficiencyCardiac assessment mandatory; irradiate blood products
Down SyndromeMacroglossia, atlantoaxial instability, cardiac defects (40-50%)Neck flexion precaution; cardiac work-up
Goldenhar SyndromeHemifacial microsomia + cervical vertebral anomaliesDifficult airway + cervical spine instability

2b. Preoperative Checklist

  • Airway assessment (retrognathia, mouth opening, tongue size, neck mobility)
  • Rule of 10s confirmed
  • Cardiac status (echo if murmur or associated syndrome)
  • Hb, platelets; type & screen
  • Postpone if active URTI (increased laryngospasm risk)
  • Appropriate fasting (breast milk 4h, formula 6h, solids 6-8h)

3. INTRAOPERATIVE ANAESTHETIC MANAGEMENT

3a. The Core Anaesthetic Challenge = AIRWAY

Cleft TypeProblemSolution
Unilateral cleft lipLaryngoscope blade slips into cleftPlace gauze roll or finger in cleft to stabilise
Bilateral cleft lipProtruding premaxilla; difficult mask sealTwo-handed mask hold; Esmarch manoeuvre
Large/bilateral cleft palateTongue prolapses through cleft → obstruction; blade lodges in cleftKeep tongue anterior; straight blade; videolaryngoscope ready
Retrognathia (Pierre Robin, Treacher Collins)Severely difficult - small jaw, anterior larynxGas induction + spontaneous ventilation; fibreoptic bronchoscope; videolaryngoscope

3b. Induction

  • Preferred: Inhalational induction with sevoflurane (smooth, maintains spontaneous ventilation until airway secured)
  • Atropine 0.02 mg/kg IV/IM pre-induction - antisialogogue, prevents bradycardia
  • Preoxygenation mandatory - infants have low FRC, desaturate rapidly
  • For Pierre Robin: induce in lateral or prone position, never paralyse before airway secured

3c. ETT Selection - KEY EXAM TOPIC

ItemChoiceReason
Cleft lipSouth-facing oral RAE tube secured to chinKeeps circuit away from surgical field
Cleft palateSouth-facing oral RAE tube secured midline at chinPasses through Dingman mouth gag; gives surgeon full palatal exposure
ETT size(Age/4) + 4 mm (uncuffed)Leak at 20-25 cmH₂O; preferred <8 years
FixationExtremely secure fixationAccidental extubation with surgeon working over airway = life-threatening
RAE = Ring, Adair, Elwyn - named after inventors; created specifically for head and neck surgery.
Historical note: Philip Ayre (1937) invented the T-piece circuit specifically to improve anaesthesia for cleft lip/palate babies - this is why Ayre's T-piece is historically linked to paediatric anaesthesia.

3d. Throat Pack - CRITICAL SAFETY POINT

  • A moist gauze throat pack is inserted after intubation to prevent blood/secretions being swallowed or aspirated
  • MUST be documented in the anaesthetic chart
  • MUST be removed before extubation - confirm by direct inspection
  • Retained throat pack = total airway obstruction post-extubation = never events category

3e. Maintenance & Intraoperative Points

  • Dingman mouth gag (for palatoplasty): re-check ETT position, ETCO₂, and bilateral breath sounds immediately after insertion - it frequently displaces the tube
  • Blood loss: usually modest for lip repair; have blood available for bilateral/revision cases
  • Temperature: warm theatre, warming blanket, warm IV fluids - neonates/infants lose heat rapidly
  • Fluids: 4 mL/kg/hr for first 10 kg; replace blood loss 3:1 with crystalloid or blood PRN
  • Regional blocks: bilateral infraorbital nerve blocks (bupivacaine 0.25%) for lip repair; greater palatine nerve blocks for palate repair - excellent opioid-sparing effect

4. EXTUBATION - HIGHEST RISK PHASE

Cleft Palate = AWAKE extubation (MANDATORY) Cleft Lip = Deep extubation acceptable (to prevent straining on suture line)
  • Remove throat pack and inspect oropharynx under direct vision BEFORE extubating
  • Gentle suction under direct vision only
  • After extubation: place child in lateral (tonsillar) position - head down, on side
  • NEVER use hard Guedel airway after palatoplasty - will disrupt suture line
  • Soft nasopharyngeal airway is acceptable if airway support needed
  • Re-intubation equipment must be at bedside in recovery

5. POSTOPERATIVE COMPLICATIONS

ComplicationMechanismManagement
Airway obstructionPosterior palatal displacement, oedema, haematomaAwake extubation; lateral position; tongue suture; SpO₂ monitoring; re-intubation ready
LaryngospasmBlood/secretions at larynx on extubationCPAP + jaw thrust + propofol 0.5 mg/kg; succinylcholine 2 mg/kg if complete
BleedingPalatal vascularitySwallowed blood → vomiting; return to OT if significant
PONVSwallowed blood + opioidsOndansetron 0.1 mg/kg; dexamethasone at induction
HypothermiaLarge surface:mass ratioActive warming throughout
Postoperative apnoeaEx-premature infant <60 weeks PMAAdmit for monitoring; caffeine prophylaxis

Analgesia Protocol (Multimodal)

  1. Paracetamol 15 mg/kg IV/PR q6h - always
  2. NSAIDs (ketorolac 0.5 mg/kg IV) - if >3 months, no bleeding risk
  3. Infraorbital nerve block (bilateral) - bupivacaine 0.25%, 0.5-1 mL/side - for lip repair
  4. Greater palatine block - for palate repair
  5. Fentanyl 1-2 mcg/kg IV intraoperatively
  6. Dexamethasone 0.1 mg/kg IV at induction - oedema + PONV + analgesia

6. PIERRE ROBIN SEQUENCE - ANAESTHETIC PROTOCOL

  1. Preoperative: prone positioning (gravity pulls tongue forward - relieves obstruction)
  2. Induction: gas induction (sevoflurane) in lateral or prone position; maintain spontaneous ventilation
  3. Intubation options (in order):
    • Miller straight blade laryngoscopy (see epiglottis)
    • Videolaryngoscopy (GlideScope/C-MAC)
    • Fibreoptic bronchoscope (FOB) - GOLD STANDARD
    • LMA as conduit for FOB-guided intubation
  4. Tongue traction suture (3-0 prolene through tongue tip) as safety measure before induction
  5. Surgical airway standby (surgeon scrubbed for emergency tracheostomy)
  6. ABSOLUTE RULE: Never give neuromuscular blocker before airway is secured

7. HIGH-YIELD EXAM POINTS (MD Anaesthesia)

  1. Rule of 10s: Age ≥10 wks, Weight ≥4.5 kg, Hb ≥10 g/dL - before lip repair
  2. 30% of cleft cases have associated syndromes - thorough assessment mandatory
  3. RAE tube = standard airway device - south-facing, secured to chin
  4. Dingman gag: always check tube position and ETCO₂ after insertion
  5. Throat pack: document insertion AND removal; inspect before extubation
  6. Cleft lip → deep extubation acceptable; Cleft palate → AWAKE extubation
  7. Guedel airway contraindicated post-palatoplasty
  8. Infraorbital block = excellent analgesia for cleft lip; reduces opioid need
  9. Pierre Robin: gas induction, maintain spontaneous ventilation, FOB gold standard, NEVER paralyse first
  10. Ayre's T-piece (1937): invented for cleft lip/palate babies - landmark in paediatric anaesthesia history
  11. 22q11.2 deletion: cardiac screening + irradiate blood products (T-cell deficiency)
  12. Ex-premature infants <60 wks PMA: admit postoperatively for apnoea monitoring
  13. Lateral (tonsillar) position after extubation - prevents aspiration, tongue falls forward
  14. Dexamethasone 0.1 mg/kg at induction: reduces airway oedema + PONV + opioid consumption
  15. Blood loss: modest for lip repair; have blood available for bilateral/complete/revision clefts

Sources: Miller's Anesthesia 10e | Morgan & Mikhail's Clinical Anesthesiology 7e | Barash, Cullen & Stoelting's Clinical Anesthesia 9e | Scott-Brown's Otorhinolaryngology Head & Neck Surgery 8e | Cummings Otolaryngology

Factor affecting placental transfer of drugs and anaesthesia relivent it and md anaesthesia exams

Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Writing File

~/pih-pdf/placental_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, PageBreak
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT

OUTPUT = "/tmp/workspace/pih-pdf/Placental_Transfer_Anaesthesia.pdf"

NAVY    = colors.HexColor("#1A2F5A")
TEAL    = colors.HexColor("#1A7A6E")
PURPLE  = colors.HexColor("#5B2C8D")
RED     = colors.HexColor("#B03A2E")
GREEN   = colors.HexColor("#1A7A4A")
AMBER   = colors.HexColor("#C67C00")
MID_BLU = colors.HexColor("#2B6CB0")
LT_BLUE = colors.HexColor("#EBF4FF")
LT_GRN  = colors.HexColor("#E8F8F0")
LT_AMB  = colors.HexColor("#FFF8E8")
LT_RED  = colors.HexColor("#FFF0EE")
LT_PUR  = colors.HexColor("#F5EEF8")
GREY_BG = colors.HexColor("#F4F6F8")
GREY_BD = colors.HexColor("#BDC3C7")
WHITE   = colors.white
DARK    = colors.HexColor("#1C1C1C")

W, H = A4
MARGIN = 13*mm
CW = W - 2*MARGIN

doc = SimpleDocTemplate(OUTPUT, pagesize=A4,
    rightMargin=MARGIN, leftMargin=MARGIN,
    topMargin=15*mm, bottomMargin=13*mm,
    title="Placental Transfer of Drugs - Anaesthesia MD Exam Reference")

styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, parent=styles["Normal"], **kw)

TH  = S("TH",  fontSize=8,   textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=10)
TD  = S("TD",  fontSize=7.8, textColor=DARK,  fontName="Helvetica",      alignment=TA_LEFT,   leading=10)
TDB = S("TDB", fontSize=7.8, textColor=DARK,  fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDR = S("TDR", fontSize=7.8, textColor=RED,   fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDG = S("TDG", fontSize=7.8, textColor=GREEN, fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDA = S("TDA", fontSize=7.8, textColor=AMBER, fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
TDP = S("TDP", fontSize=7.8, textColor=PURPLE,fontName="Helvetica-Bold", alignment=TA_LEFT,   leading=10)
BODY  = S("BODY",  fontSize=8.2, textColor=DARK,  fontName="Helvetica",      spaceAfter=2, leading=11)
BODYB = S("BODYB", fontSize=8.2, textColor=DARK,  fontName="Helvetica-Bold", spaceAfter=2, leading=11)
H2    = S("H2",    fontSize=10,  textColor=WHITE,  fontName="Helvetica-Bold", leading=13)
H3    = S("H3",    fontSize=9,   textColor=NAVY,   fontName="Helvetica-Bold", leading=12, spaceBefore=4, spaceAfter=2)
EXAM  = S("EXAM",  fontSize=8,   textColor=PURPLE, fontName="Helvetica-Bold", leading=11, spaceAfter=2)
WARN  = S("WARN",  fontSize=8,   textColor=RED,    fontName="Helvetica-Bold", leading=11, spaceAfter=2)
SMALL = S("SMALL", fontSize=6.5, textColor=colors.grey, fontName="Helvetica", alignment=TA_CENTER, leading=9)
FORMULA = S("FORM",fontSize=8.5, textColor=MID_BLU, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=12)

def sec_hdr(text, color=NAVY):
    t = Table([[Paragraph(text, H2)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),color),
        ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def exam_box(txt):
    t = Table([[Paragraph("★  " + txt, EXAM)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),LT_PUR),
        ("BOX",(0,0),(-1,-1),0.8,PURPLE),
        ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def warn_box(txt):
    t = Table([[Paragraph("⚠  " + txt, WARN)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),colors.HexColor("#FFF3CD")),
        ("BOX",(0,0),(-1,-1),0.8,AMBER),
        ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def info_box(txt, bg=LT_BLUE, bd=MID_BLU):
    t = Table([[Paragraph(txt, BODY)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),bg),
        ("BOX",(0,0),(-1,-1),0.7,bd),
        ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LEFTPADDING",(0,0),(-1,-1),8),
    ]))
    return t

def mktbl(headers, rows, cws, hbg=NAVY):
    data = [[Paragraph(h, TH) for h in headers]]
    for row in rows:
        data.append([Paragraph(str(c[0]),c[1]) if isinstance(c,tuple) else Paragraph(str(c),TD) for c in row])
    t = Table(data, colWidths=cws, repeatRows=1)
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,0),hbg),
        ("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE,GREY_BG]),
        ("BOX",(0,0),(-1,-1),0.5,GREY_BD),("GRID",(0,0),(-1,-1),0.3,GREY_BD),
        ("VALIGN",(0,0),(-1,-1),"MIDDLE"),
        ("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
        ("LEFTPADDING",(0,0),(-1,-1),5),
    ]))
    return t

def banner():
    d = [[
        Paragraph("PLACENTAL<br/>DRUG TRANSFER", S("BT", fontSize=16, textColor=WHITE,
                  fontName="Helvetica-Bold", leading=20)),
        Paragraph("Factors, Mechanisms &amp; Anaesthetic Drug Profiles<br/>"
                  "<font size=9>MD Anaesthesia Exam Reference | Obstetric Pharmacology</font>",
                  S("BS", fontSize=12, textColor=WHITE, fontName="Helvetica-Bold",
                    alignment=TA_LEFT, leading=16)),
        Paragraph("Miller's · Morgan &amp; Mikhail<br/>Barash · Goodman &amp; Gilman",
                  S("BR", fontSize=7, textColor=colors.HexColor("#B0C4DE"),
                    fontName="Helvetica", alignment=TA_RIGHT, leading=10))
    ]]
    b = Table(d, colWidths=[48*mm, 110*mm, 22*mm])
    b.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),8),("VALIGN",(0,0),(-1,-1),"MIDDLE"),
    ]))
    return b

story = []
story.append(banner())
story.append(Spacer(1,4*mm))

# ── SECTION 1: MECHANISMS ───────────────────────────────────────────────────
story.append(sec_hdr("1.  MECHANISMS OF PLACENTAL DRUG TRANSFER"))
story.append(Spacer(1,2*mm))

mech_rows = [
    [("Simple (Passive) Diffusion", TDB),
     ("MOST COMMON mechanism", TDB),
     "Follows Fick's law. Non-ionized, lipid-soluble, low-MW drugs. Driven by concentration gradient."],
    [("Facilitated Diffusion", TD),
     "Carrier-mediated; no energy",
     "Glucose, some vitamins. Faster than simple diffusion for specific molecules."],
    [("Active Transport", TD),
     "ATP-dependent carriers (ABC transporters)",
     "Amino acids, nucleosides. ABC efflux transporters actively REMOVE drugs from fetal circulation back to mother — protective role."],
    [("Pinocytosis / Vesicular", TD),
     "Endocytosis of large molecules",
     "IgG, some proteins. Minor role for drugs."],
]
story.append(mktbl(
    ["Mechanism", "Key Feature", "Examples / Notes"],
    mech_rows, [42*mm, 40*mm, CW-82*mm]
))
story.append(Spacer(1,2*mm))

# Fick's Law Box
fick_tbl = Table([[
    Paragraph("FICK'S LAW OF DIFFUSION", S("FH", fontSize=8.5, textColor=NAVY,
              fontName="Helvetica-Bold", alignment=TA_CENTER, leading=11)),
    Paragraph("Q/t  =  K × A × (Cm − Cf) / D",
              S("FF", fontSize=11, textColor=MID_BLU, fontName="Helvetica-Bold",
                alignment=TA_CENTER, leading=14)),
    Paragraph(
        "Q/t = Rate of diffusion  |  K = Diffusion constant (depends on MW, lipophilicity)  |  "
        "A = Placental surface area  |  Cm = Maternal free drug concentration  |  "
        "Cf = Fetal free drug concentration  |  D = Membrane thickness",
        S("FN", fontSize=7, textColor=DARK, fontName="Helvetica", leading=10))
]], colWidths=[38*mm, 60*mm, CW-98*mm])
fick_tbl.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1),LT_BLUE),
    ("BOX",(0,0),(-1,-1),0.8,MID_BLU),
    ("INNERGRID",(0,0),(-1,-1),0.3,GREY_BD),
    ("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(fick_tbl)
story.append(Spacer(1,3*mm))

# ── SECTION 2: FACTORS ──────────────────────────────────────────────────────
story.append(sec_hdr("2.  FACTORS AFFECTING PLACENTAL DRUG TRANSFER", color=TEAL))
story.append(Spacer(1,2*mm))

# Two columns: Drug factors | Physiological/Placental factors
col1_items = [
    ("<b>DRUG-RELATED FACTORS</b>", BODYB),
    ("<b>1. Molecular Weight (MW)</b>", BODYB),
    ("  • MW &lt;500 Da: freely cross placenta (most anaesthetic drugs)", BODY),
    ("  • MW 500–1000 Da: restricted transfer", BODY),
    ("  • MW &gt;1000 Da: minimal transfer (heparin 15,000 Da, insulin 6000 Da)", BODY),
    ("", BODY),
    ("<b>2. Lipid Solubility</b>", BODYB),
    ("  • Higher lipophilicity = faster, greater transfer", BODY),
    ("  • Volatile agents, propofol, benzodiazepines: highly lipophilic → cross freely", BODY),
    ("  • Muscle relaxants: low lipophilicity → minimal transfer", BODY),
    ("", BODY),
    ("<b>3. Ionisation (pKa)</b>", BODYB),
    ("  • Only NON-IONISED form crosses placenta", BODY),
    ("  • Degree of ionisation determined by pKa and pH (Henderson-Hasselbalch)", BODY),
    ("  • Basic drugs (pKa &gt;7.4): mostly non-ionised at maternal pH 7.4 → cross easily", BODY),
    ("  • Highly ionised drugs (quaternary ammonium): NMBAs, glycopyrrolate → minimal transfer", BODY),
    ("", BODY),
    ("<b>4. Protein Binding</b>", BODYB),
    ("  • Only FREE (unbound) drug crosses placenta", BODY),
    ("  • High protein binding → slower, reduced transfer", BODY),
    ("  • Bupivacaine: 95% protein-bound → lower fetal levels than lidocaine", BODY),
    ("  • Fetal albumin lower than maternal → less fetal protein binding", BODY),
    ("", BODY),
    ("<b>5. Drug Concentration Gradient</b>", BODYB),
    ("  • Primary determinant of fetal drug levels", BODY),
    ("  • Higher maternal dose/bolus → higher fetal exposure", BODY),
    ("  • Maternal peak blood level timing relative to delivery matters", BODY),
]

col2_items = [
    ("<b>PHYSIOLOGICAL &amp; PLACENTAL FACTORS</b>", BODYB),
    ("<b>6. Uteroplacental Blood Flow</b>", BODYB),
    ("  • Decreased flow → less drug delivery AND less drug washout from fetus", BODY),
    ("  • Reduced by: aortocaval compression, hypotension, vasopressors (α-agonists), uterine contractions", BODY),
    ("  • Maintained by: left lateral tilt, adequate BP, regional analgesia (↓ catecholamines)", BODY),
    ("", BODY),
    ("<b>7. Placental Surface Area &amp; Thickness</b>", BODYB),
    ("  • ↑ Surface area → ↑ transfer (increases with gestation)", BODY),
    ("  • ↑ Thickness → ↓ transfer (1st trimester: thicker; term: thinner)", BODY),
    ("  • Placental pathology (abruption, infarction) alters transfer unpredictably", BODY),
    ("", BODY),
    ("<b>8. Maternal-Fetal pH Difference</b>", BODYB),
    ("  • Maternal pH: 7.40 | Fetal pH: 7.32–7.35 (slightly acidic)", BODY),
    ("  • Creates ION TRAPPING for basic drugs (local anaesthetics, opioids)", BODY),
    ("  • In fetal distress (acidosis pH &lt;7.20): MORE ion trapping → drug accumulates in fetus", BODY),
    ("", BODY),
    ("<b>9. ABC Efflux Transporters</b>", BODYB),
    ("  • P-glycoprotein (MDR1), BCRP in placenta: pump drugs BACK to maternal side", BODY),
    ("  • Protective mechanism against fetal drug accumulation", BODY),
    ("", BODY),
    ("<b>10. Timing of Administration</b>", BODYB),
    ("  • Single IV bolus during uterine contraction (↓ blood flow): minimal fetal levels", BODY),
    ("  • Drug given hours before delivery: redistribution and metabolism reduces fetal effect", BODY),
    ("  • Epidural/intrathecal: slower absorption → lower maternal peak → lower fetal transfer", BODY),
    ("", BODY),
    ("<b>11. Fetal Hepatic First-Pass Effect</b>", BODYB),
    ("  • ~75% of umbilical venous blood passes through fetal liver first", BODY),
    ("  • Partial metabolism before reaching fetal brain/heart", BODY),
]

def make_col(items):
    return [Paragraph(t, s) for t,s in items]

two_col = Table([[make_col(col1_items), make_col(col2_items)]],
                colWidths=[CW/2 - 1*mm, CW/2 - 1*mm])
two_col.setStyle(TableStyle([
    ("VALIGN",(0,0),(-1,-1),"TOP"),
    ("BOX",(0,0),(-1,-1),0.5,GREY_BD),
    ("INNERGRID",(0,0),(-1,-1),0.3,GREY_BD),
    ("BACKGROUND",(0,0),(0,0),colors.HexColor("#F0F7FF")),
    ("BACKGROUND",(1,0),(1,0),colors.HexColor("#F0FFF4")),
    ("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),4),
    ("LEFTPADDING",(0,0),(-1,-1),6),
]))
story.append(two_col)
story.append(Spacer(1,2*mm))

# Ion trapping box
story.append(exam_box(
    "ION TRAPPING (Critical Exam Concept): Fetal pH is lower than maternal pH (7.32 vs 7.40). "
    "Weakly BASIC drugs (local anaesthetics pKa 7.7–8.1, opioids) cross as non-ionised molecules, "
    "then become ionised in the acidic fetal environment and CANNOT cross back → drug accumulates. "
    "Fetal distress (acidosis) WORSENS ion trapping → higher fetal drug levels."
))
story.append(Spacer(1,2*mm))

# UV/MV ratio
story.append(info_box(
    "MEASUREMENT OF PLACENTAL TRANSFER: "
    "UV/MV ratio = Umbilical Vein / Maternal Vein drug concentration = degree of placental transfer. "
    "UA/UV ratio = Umbilical Artery / Umbilical Vein = degree of fetal tissue uptake. "
    "Values close to 1.0 = complete equilibration."
))
story.append(Spacer(1,3*mm))

# ── PAGE 2 ──────────────────────────────────────────────────────────────────
story.append(PageBreak())
story.append(banner())
story.append(Spacer(1,4*mm))

# ── SECTION 3: ANAESTHETIC DRUGS ────────────────────────────────────────────
story.append(sec_hdr("3.  ANAESTHETIC DRUG PROFILES — PLACENTAL TRANSFER", color=colors.HexColor("#2E4057")))
story.append(Spacer(1,2*mm))

# Induction agents
story.append(Paragraph("3a.  Induction Agents", H3))
ind_rows = [
    [("Thiopentone", TDB), "High", "Low MW, high lipophilicity",
     ("Readily crosses; peaks in fetus 1–2 min", TDB),
     "Induction dose (4–6 mg/kg) — fetal drug diluted by redistribution; minimal neonatal depression at usual doses"],
    [("Propofol", TDB), "High", "Very high lipophilicity",
     ("Freely crosses; UV/MV ~0.7", TDB),
     "Fetal depression possible at high doses; redistribution limits effect; can cause transient neonatal sedation"],
    [("Ketamine", TDB), "High", "Moderate lipophilicity",
     ("Crosses readily", TDB),
     "At &lt;1.5 mg/kg: minimal neonatal effect. At &gt;2 mg/kg: neonatal depression + uterine hypertonus"],
    [("Etomidate", TD), "Moderate", "Moderate", "Crosses placenta",
     "Minimal uteroplacental effect; adrenal suppression in fetus possible"],
    [("Midazolam", TDA), "High", "High lipophilicity, pKa 6.2",
     ("Crosses freely; accumulates with repeated doses", TDA),
     "Single anxiolytic dose: no measurable fetal effect. Large/repeated doses → neonatal sedation (FLIPFLOP)"],
]
story.append(mktbl(
    ["Drug", "Transfer", "Properties", "Fetal Level", "Clinical Note"],
    ind_rows, [25*mm, 18*mm, 32*mm, 32*mm, CW-107*mm]
))
story.append(Spacer(1,2*mm))

# Volatile agents
story.append(Paragraph("3b.  Volatile Anaesthetic Agents", H3))
story.append(info_box(
    "ALL volatile agents (halothane, isoflurane, sevoflurane, desflurane) are highly lipophilic with "
    "low molecular weights → FREELY cross placenta. At &lt;1 MAC with delivery within 10 min of induction, "
    "minimal neonatal depression occurs. Nitrous oxide also crosses freely but has minimal fetal depression at usual doses. "
    "Volatile agents cause dose-dependent uterine relaxation (↑ haemorrhage risk at &gt;1.5 MAC).",
    bg=LT_GRN, bd=GREEN
))
story.append(Spacer(1,2*mm))

# Opioids
story.append(Paragraph("3c.  Opioids", H3))
op_rows = [
    [("Morphine", TDR),    "High", ("++", TDB), ("Most respiratory depression in neonate; sensitive to morphine", TDR),
     "Avoid within 4h of delivery if possible; naloxone reversal available"],
    [("Pethidine (Meperidine)", TDA), "High", ("++", TDB),
     ("Peak neonatal depression 1–3h post maternal IV dose", TDA),
     "Active metabolite norpethidine accumulates; avoid if delivery within 1–3h"],
    [("Fentanyl", TDG),    "High", ("+", TDB),
     ("Minimal neonatal effect at IV doses &lt;1 mcg/kg", TDG),
     "Epidural/intrathecal: very low fetal concentrations → safe for labour"],
    [("Sufentanil", TDG),  "High", ("+", TDB),
     ("Minimal neonatal effect (epidural doses)", TDG),
     "Very high protein binding limits fetal transfer"],
    [("Remifentanil", TDA),"High", ("++", TDA),
     ("UV/MV ~0.5; potential neonatal depression", TDA),
     "Rapidly metabolised in neonate (UA/UV ~30%) — self-limiting; used for labour IV-PCA"],
    [("Alfentanil", TDR),  "High", ("++", TDB),
     "Neonatal depression similar to pethidine",
     "Avoid near delivery"],
    [("Butorphanol/Nalbuphine", TD), "High", ("+", TD),
     "Less respiratory depression than morphine",
     "Significant neurobehavioural effects in neonate"],
]
story.append(mktbl(
    ["Opioid", "Transfer", "Neonatal Resp. Depression", "Key Feature", "Clinical Note"],
    op_rows, [28*mm, 16*mm, 28*mm, 48*mm, CW-120*mm]
))
story.append(Spacer(1,2*mm))

# Local anaesthetics
story.append(Paragraph("3d.  Local Anaesthetics (Weak Bases — pKa 7.7–8.1)", H3))
la_rows = [
    [("Chloroprocaine", TDG), "LEAST", "Ester; rapidly hydrolysed by maternal plasma cholinesterase",
     ("Minimal fetal accumulation — short plasma half-life in mother", TDG),
     "Preferred if high fetal transfer is a concern (e.g. fetal acidosis)"],
    [("Bupivacaine", TDB),    "Low–Moderate", "95% protein-bound to α1-acid glycoprotein",
     "Lower fetal/maternal ratio than lidocaine due to high protein binding",
     "Cardiotoxic to fetus at high doses; ion trapping in acidosis worsens accumulation"],
    [("Ropivacaine", TDB),    "Low–Moderate", "94% protein-bound; less lipophilic than bupivacaine",
     "Lower fetal transfer than bupivacaine",
     "Improved fetal safety profile vs bupivacaine"],
    [("Lidocaine", TDA),      "Moderate", "65% protein-bound; pKa 7.9",
     "Higher fetal/maternal ratio than bupivacaine",
     "Ion trapping in fetal acidosis — can accumulate; avoid high epidural doses near delivery"],
    [("Levobupivacaine", TDB),"Low–Moderate", "97% protein-bound",
     "Similar to bupivacaine but less cardiac toxicity",
     "Preferred over racemic bupivacaine by many"],
]
story.append(mktbl(
    ["Drug", "Fetal Transfer", "Key Property", "Fetal Profile", "Clinical Note"],
    la_rows, [32*mm, 26*mm, 42*mm, 38*mm, CW-138*mm]
))
story.append(Spacer(1,1*mm))
story.append(exam_box(
    "LOCAL ANAESTHETIC PLACENTAL TRANSFER (rank order, least to most): "
    "Chloroprocaine &lt; Bupivacaine ≈ Ropivacaine &lt; Lidocaine — "
    "determined by protein binding (higher binding = less free drug = less transfer) "
    "AND ester hydrolysis in maternal plasma (chloroprocaine)."
))
story.append(Spacer(1,2*mm))

# NMBAs
story.append(Paragraph("3e.  Neuromuscular Blocking Agents (NMBAs)", H3))
nmba_rows = [
    [("All NMBAs", TDG), "MINIMAL", "Highly ionised (quaternary ammonium); high MW; low lipophilicity",
     ("Fetus/neonate NOT paralysed after maternal GA", TDG),
     "Safe to use for RSI at LSCS; succinylcholine also has minimal transfer despite low MW (highly ionised)"],
    [("Sugammadex", TDG), "MINIMAL (expected)", "Large MW; negatively charged",
     "Not expected to cross significantly",
     "Evidence still limited; generally considered safe"],
    [("Neostigmine", TD),  "Some",    "Quaternary amine; limited transfer",
     "Some transfer but limited clinical effect",
     "Maternal reversal of NMBAs acceptable"],
    [("Glycopyrrolate", TDG), "MINIMAL", "Quaternary ammonium (ionised)",
     ("Does NOT cross — preferred anticholinergic in obstetrics", TDG),
     "Use glycopyrrolate, NOT atropine, to treat bradycardia without fetal tachycardia"],
    [("Atropine / Scopolamine", TDA), "Significant", "Tertiary amines, lipophilic",
     "Cross placenta → fetal tachycardia",
     "Atropine used for fetal bradycardia treatment (crosses intentionally)"],
]
story.append(mktbl(
    ["Drug", "Transfer", "Mechanism", "Fetal Effect", "Clinical Note"],
    nmba_rows, [30*mm, 22*mm, 46*mm, 36*mm, CW-134*mm]
))
story.append(Spacer(1,2*mm))

# Other drugs
story.append(Paragraph("3f.  Other Clinically Important Drugs", H3))
other_rows = [
    [("Heparin (unfractionated)", TDG), "NONE", "MW 15,000 Da; highly charged",
     ("Does NOT cross — anticoagulant of choice in pregnancy", TDG)],
    [("Warfarin", TDR), "Complete", "Low MW, lipophilic, non-ionised",
     ("Freely crosses → fetal anticoagulation, teratogenesis (Weeks 6–12), CNS anomalies", TDR)],
    [("Ephedrine", TDA), "High", "Lipophilic, low MW",
     "Crosses freely; fetal acidosis reported with high doses (vasopressor choice shifting to phenylephrine)"],
    [("Phenylephrine", TDB), "Moderate", "Crosses but better fetal pH profile than ephedrine",
     "Now preferred vasopressor for spinal hypotension at LSCS"],
    [("Labetalol", TD), "High", "Crosses placenta readily",
     "Neonatal bradycardia + hypoglycaemia possible; monitor neonate"],
    [("Dexamethasone", TDB), "High", "Fluorinated, crosses easily",
     "Intentional use: fetal lung maturation; avoid prolonged maternal use"],
    [("Insulin", TDG), "NONE", "MW 6000 Da",
     "Does NOT cross; maternal glucose control protects fetus indirectly"],
    [("Benzodiazepines", TDR), "High", "Lipophilic; pKa ~6",
     ("Cross readily; neonatal withdrawal, hypotonia, temperature instability (FLIPFLOP syndrome)", TDR)],
    [("Dexmedetomidine", TDA), "Stored in placenta", "Lipophilic but sequestered",
     "Stored in placenta; reduced transfer to fetus; neonatal effects minimal in clinical doses"],
    [("Neostigmine + pyridostigmine", TDB), "Minimal", "Quaternary ammonium",
     "Pyridostigmine used in MG; minimal transfer; monitor neonate for cholinergic effects"],
]
story.append(mktbl(
    ["Drug", "Transfer", "Mechanism / Property", "Clinical Significance"],
    other_rows, [35*mm, 20*mm, 50*mm, CW-105*mm]
))
story.append(Spacer(1,2*mm))
story.append(warn_box(
    "WARFARIN crosses the placenta COMPLETELY (low MW, lipophilic) causing: "
    "(1) Warfarin embryopathy (nasal hypoplasia, bone stippling) if exposed weeks 6–12; "
    "(2) Fetal anticoagulation → haemorrhage; (3) CNS anomalies. "
    "Use HEPARIN instead — it does NOT cross the placenta."
))
story.append(Spacer(1,3*mm))

# ── SECTION 4: HIGH-YIELD EXAM SUMMARY ──────────────────────────────────────
story.append(sec_hdr("4.  HIGH-YIELD MD EXAM SUMMARY", color=colors.HexColor("#1A5276")))
story.append(Spacer(1,2*mm))

exam_pts = [
    "Fick's Law: Transfer ∝ Surface area × Concentration gradient × Diffusion constant / Membrane thickness",
    "Most important determinant of fetal drug level = MATERNAL BLOOD CONCENTRATION (dose given to mother)",
    "Only FREE (unbound) drug crosses — protein binding reduces transfer (bupivacaine 95% bound = lower fetal levels)",
    "Only NON-IONISED form crosses — ionisation prevents transfer (NMBAs, glycopyrrolate, heparin)",
    "ION TRAPPING: basic drugs (LA, opioids) become ionised in acidic fetal pH (7.32) and cannot cross back",
    "Fetal distress/acidosis → MORE ion trapping → HIGHER fetal levels of local anaesthetics and opioids",
    "MW <500 Da: cross freely | 500–1000 Da: restricted | >1000 Da: minimal (heparin, insulin)",
    "Drugs crossing blood-brain barrier ALSO cross placenta — rule of thumb for CNS-active drugs",
    "Chloroprocaine = least placental transfer among LAs (rapid hydrolysis in maternal plasma)",
    "Glycopyrrolate = does NOT cross (quaternary ammonium) — use over atropine to avoid fetal tachycardia",
    "NMBAs (all): minimal transfer → neonates NOT paralysed after maternal GA for LSCS",
    "Succinylcholine: low MW but highly ionised → minimal transfer despite small size",
    "Warfarin = freely crosses → use HEPARIN in pregnancy (does NOT cross)",
    "Opioid neonatal respiratory depression ranking: Morphine > Pethidine > Alfentanil > Fentanyl (epidural)",
    "Pethidine peak neonatal depression: 1–3 hours after maternal IV administration",
    "Remifentanil: crosses rapidly (UV/MV ~0.5) but rapidly metabolised in neonate (UA/UV ~30%)",
    "Fetal hepatic first-pass: ~75% umbilical venous blood passes through fetal liver → partial metabolism",
    "ABC efflux transporters (P-gp, BCRP) in placenta: pump drugs BACK to maternal side — protective",
    "UV/MV ratio = measure of placental transfer | UA/UV ratio = measure of fetal tissue uptake",
    "Dexmedetomidine: stored in placenta, reduced fetal transfer despite lipophilicity",
]
for i, pt in enumerate(exam_pts, 1):
    story.append(Paragraph(f"  <b>{i}.</b>  {pt}", BODY))
story.append(Spacer(1,2*mm))

# Quick reference table: drugs that DON'T vs DO cross
story.append(Paragraph("Quick Reference — Does It Cross the Placenta?", H3))
cross_rows = [
    [("ALL volatile anaesthetics", TDR), ("YES — freely", TDR), "High lipophilicity, low MW"],
    [("Propofol", TDR),           ("YES — freely", TDR), "Very lipophilic"],
    [("Thiopentone", TDR),        ("YES — freely", TDR), "Lipophilic, low MW"],
    [("Ketamine", TDR),           ("YES — freely", TDR), "Lipophilic"],
    [("Benzodiazepines", TDR),    ("YES — freely", TDR), "Lipophilic (risk: neonatal withdrawal)"],
    [("Opioids (most)", TDR),     ("YES — varies", TDR), "Morphine > pethidine > fentanyl (epidural)"],
    [("Lidocaine", TDA),          ("YES — moderate", TDA), "65% protein bound; ion trapping risk"],
    [("Bupivacaine/Ropivacaine", TDB), ("YES — low", TDB), "High protein binding limits transfer"],
    [("Chloroprocaine", TDG),     ("MINIMAL", TDG), "Rapid hydrolysis in maternal plasma"],
    [("NMBAs (all)", TDG),        ("MINIMAL/NO", TDG), "Highly ionised quaternary ammonium"],
    [("Succinylcholine", TDG),    ("MINIMAL", TDG), "Highly ionised despite low MW"],
    [("Glycopyrrolate", TDG),     ("NO", TDG), "Quaternary ammonium, ionised"],
    [("Heparin (UFH/LMWH)", TDG),("NO", TDG), "MW 15,000 Da, highly charged"],
    [("Insulin", TDG),            ("NO", TDG), "MW 6,000 Da"),
    [("Warfarin", TDR),           ("YES — completely", TDR), "Low MW, lipophilic — AVOID in pregnancy"],
    [("Atropine/Scopolamine", TDR), ("YES", TDR), "Tertiary amines; lipophilic — fetal tachycardia"],
    [("Sugammadex", TDG),         ("MINIMAL (expected)", TDG), "Large MW, negatively charged"],
]
story.append(mktbl(
    ["Drug", "Crosses Placenta?", "Reason"],
    cross_rows, [55*mm, 35*mm, CW-90*mm]
))

story.append(Spacer(1,3*mm))
story.append(HRFlowable(width=CW, thickness=0.5, color=GREY_BD))
story.append(Spacer(1,2*mm))
story.append(Paragraph(
    "Sources: Miller's Anesthesia 10e · Morgan &amp; Mikhail's Clinical Anesthesiology 7e · "
    "Barash, Cullen &amp; Stoelting's Clinical Anesthesia 9e · Goodman &amp; Gilman's Pharmacological Basis of Therapeutics 14e",
    SMALL
))
story.append(Paragraph(
    "Generated by Orris Medical AI · For educational use only · Verify against current references",
    S("FW", fontSize=6, textColor=RED, fontName="Helvetica-Oblique", alignment=TA_CENTER)
))

doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /tmp/workspace/pih-pdf && python placental_pdf.py 2>&1

Editing File

~/pih-pdf/placental_pdf.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/pih-pdf/placental_pdf.py'
Running Command

cd /tmp/workspace/pih-pdf && python placental_pdf.py 2>&1

PDF ready. Here is the full MD exam answer:

Placental Transfer Anaesthesia

PDF Document · PDF


Factors Affecting Placental Transfer of Drugs — Anaesthetic Relevance (MD Exam)


1. MECHANISMS OF PLACENTAL DRUG TRANSFER

MechanismKey FeatureNotes
Simple (Passive) DiffusionMost commonFollows Fick's Law; driven by concentration gradient
Facilitated DiffusionCarrier-mediated, no energyGlucose, some vitamins
Active Transport (ABC transporters)ATP-dependentABC efflux transporters (P-gp, BCRP) pump drugs BACK to mother - protective
PinocytosisVesicular transportLarge molecules (IgG); minor role for drugs

Fick's Law of Diffusion (Exam Essential)

Q/t = K × A × (Cm - Cf) / D
  • Q/t = Rate of diffusion
  • K = Diffusion constant (depends on MW and lipid solubility)
  • A = Placental surface area
  • Cm - Cf = Maternal minus fetal free drug concentration gradient
  • D = Membrane (placental) thickness

2. FACTORS AFFECTING PLACENTAL DRUG TRANSFER

DRUG-RELATED FACTORS

1. Molecular Weight (MW)
  • <500 Da: freely cross placenta (most anaesthetic drugs fall here)
  • 500-1000 Da: restricted transfer
  • >1000 Da: minimal/no transfer
    • Heparin: 15,000 Da - does NOT cross
    • Insulin: 6,000 Da - does NOT cross
    • Warfarin: 308 Da - crosses COMPLETELY
2. Lipid Solubility
  • Higher lipophilicity = faster and greater transfer
  • Volatile agents, propofol, benzodiazepines: highly lipophilic → cross freely
  • Muscle relaxants: low lipophilicity → minimal transfer
  • Drugs crossing the blood-brain barrier also cross the placenta (useful rule of thumb)
3. Ionisation (pKa)
  • Only the NON-IONISED form crosses the placenta
  • Degree of ionisation determined by pKa and pH (Henderson-Hasselbalch equation)
  • Highly ionised (charged) drugs: NMBAs, glycopyrrolate → minimal transfer
  • Degree of ionisation at a given pH: predicted by pKa of drug
4. Protein Binding
  • Only FREE (unbound) drug crosses
  • Higher protein binding → slower, reduced fetal transfer
  • Bupivacaine 95% protein-bound → lower fetal levels than lidocaine (65% bound)
  • Fetal albumin is lower than maternal → less fetal protein binding capacity
5. Maternal Drug Concentration
  • Primary determinant of fetal drug levels (Miller's Anesthesia 10e)
  • Higher dose or rapid IV bolus → higher maternal peak → greater fetal transfer
  • Route matters: epidural/intrathecal → lower maternal peak → less fetal transfer

PHYSIOLOGICAL & PLACENTAL FACTORS

6. Uteroplacental Blood Flow
  • Reduced flow = less drug delivery AND less washout from fetus
  • Reduced by: aortocaval compression, hypotension, alpha-agonist vasopressors, uterine contractions
  • Maintained by: left lateral tilt, adequate BP, epidural (reduces catecholamines)
7. Placental Surface Area & Thickness
  • Increased surface area → increased transfer (surface area increases with gestation)
  • Increased thickness → decreased transfer (1st trimester is thicker)
  • Placental pathology (infarction, abruption) alters transfer unpredictably
8. Maternal-Fetal pH Difference — ION TRAPPING
  • Maternal pH: 7.40 | Fetal pH: 7.32-7.35 (slightly acidic)
  • Weakly basic drugs (LAs pKa 7.7-8.1, opioids) cross as non-ionised molecules into the fetus, then become IONISED in the acidic fetal environment
  • Ionised molecules cannot diffuse back → drug accumulates in fetal circulation
  • Fetal distress (acidosis pH <7.20): WORSENS ion trapping → much higher fetal drug levels
  • This is why fetal acidosis + local anaesthetic use is dangerous
9. ABC Efflux Transporters
  • P-glycoprotein (MDR1), BCRP in placental trophoblasts
  • Actively pump drugs back from fetal side to maternal side
  • Protective mechanism
10. Timing of Administration
  • Drug given during uterine contraction (when uteroplacental flow is maximal reduced): lower fetal levels
  • Drug given hours before delivery: redistribution and metabolism reduces fetal drug effect
  • Epidural/intrathecal route → much slower absorption → lower maternal peak → less fetal transfer
11. Fetal Hepatic First-Pass Metabolism
  • ~75% of umbilical venous blood passes through fetal liver before reaching fetal heart/brain
  • Partial first-pass metabolism reduces effective fetal drug concentration
  • Fetal and neonatal drug-metabolising enzymes are immature - metabolism is slower than adults

3. ANAESTHETIC DRUG PROFILES

3a. Induction Agents

DrugTransferKey Notes
ThiopentoneHighFreely crosses; peaks in fetus in 1-2 min; usual induction dose - minimal neonatal depression due to redistribution
PropofolHigh (UV/MV ~0.7)Freely crosses; redistribution limits neonatal effect; can cause transient sedation
KetamineHigh<1.5 mg/kg: minimal neonatal effect; >2 mg/kg: neonatal depression + uterine hypertonus
MidazolamHighSingle dose: no measurable fetal effect; repeated/large doses → neonatal sedation, hypotonia, hypothermia (FLIPFLOP syndrome)

3b. Volatile Anaesthetic Agents

All volatile agents (halothane, isoflurane, sevoflurane, desflurane, N₂O) are highly lipophilic, low MW → freely cross placenta. At <1 MAC with delivery within 10 min of induction, minimal neonatal depression occurs. At >1.5 MAC: dose-dependent uterine relaxation → haemorrhage risk.

3c. Opioids

OpioidNeonatal Resp. DepressionKey Point
MorphineMost (highest sensitivity)Neonates most sensitive; avoid near delivery
Pethidine (Meperidine)HighPeak neonatal effect 1-3 hours after maternal IV dose; active metabolite norpethidine accumulates
AlfentanilHigh (similar to pethidine)Avoid near delivery
RemifentanilModerate (UV/MV ~0.5)Rapidly metabolised in neonate (UA/UV ~30%); self-limiting; used for IV-PCA in labour
Fentanyl (IV)Low (<1 mcg/kg)Minimal neonatal effect at analgesic doses
Fentanyl (epidural/IT)MinimalVery low systemic absorption → very low fetal levels
SufentanilMinimalVery high protein binding limits transfer
Butorphanol/NalbuphineLow respiratory depressionSignificant neurobehavioural depression still occurs

3d. Local Anaesthetics (Weak Bases, pKa 7.7-8.1)

Rank order of placental transfer (least → most):
Chloroprocaine < Bupivacaine ≈ Ropivacaine < Lidocaine
DrugTransferReason
ChloroprocaineLEASTRapidly hydrolysed by maternal plasma cholinesterase → minimal drug reaches placenta
BupivacaineLow-moderate95% protein-bound → low free drug fraction
RopivacaineLow-moderate94% protein-bound; less lipophilic than bupivacaine
LidocaineModerateOnly 65% protein-bound → more free drug available; more ion trapping risk
LevobupivacaineLow-moderate97% protein-bound; less cardiac toxicity than racemic bupivacaine

3e. Neuromuscular Blocking Agents (NMBAs)

ALL NMBAs have MINIMAL placental transfer - highly ionised quaternary ammonium structure, high molecular weight, low lipophilicity → neonates are NOT paralysed after maternal GA for LSCS.
DrugTransferReason
Rocuronium, Vecuronium, Atracurium, CisatracuriumMinimalQuaternary ammonium + high MW
SuccinylcholineMinimalLow MW BUT highly ionised - ionisation prevents transfer
GlycopyrrolateNONEQuaternary ammonium - use INSTEAD of atropine to avoid fetal tachycardia
Atropine / ScopolamineSignificantTertiary amines, lipophilic → fetal tachycardia
SugammadexMinimal (expected)Large MW, negatively charged

3f. Other Clinically Critical Drugs

DrugTransferSignificance
Heparin (UFH & LMWH)NONEMW 15,000 Da, highly charged - anticoagulant of choice in pregnancy
WarfarinCompleteMW 308 Da, lipophilic - causes warfarin embryopathy (weeks 6-12), fetal anticoagulation, CNS anomalies
InsulinNONEMW 6,000 Da - does not cross
EphedrineHighFetal acidosis with repeated doses - phenylephrine now preferred
PhenylephrineModerateBetter fetal pH profile than ephedrine for spinal hypotension at LSCS
LabetalolHighNeonatal bradycardia + hypoglycaemia - monitor neonate
BenzodiazepinesHighNeonatal withdrawal, hypotonia, hypothermia, feeding difficulties - FLIPFLOP syndrome
DexmedetomidineStored in placentaSequestered; reduced fetal transfer despite lipophilicity
Metoclopramide, antihistaminesYesCross but limited neonatal clinical effect at standard doses

4. HIGH-YIELD MD EXAM POINTS

  1. Fick's Law: Transfer ∝ (Surface area × Concentration gradient × Diffusion constant) / Membrane thickness
  2. Primary determinant of fetal drug level = maternal blood concentration
  3. Only FREE, NON-IONISED drug crosses the placenta
  4. Ion trapping: basic drugs (LA, opioids) → ionised in fetal acidic pH → trapped → accumulate; worsened by fetal distress
  5. MW rule: <500 Da = cross freely; >1000 Da = minimal/none (heparin, insulin safe)
  6. BBB = placenta rule: drugs crossing blood-brain barrier cross placenta (CNS-active drugs)
  7. Chloroprocaine = least transfer among LAs (maternal plasma esterase hydrolysis)
  8. Glycopyrrolate = does NOT cross (quaternary) → preferred anticholinergic in obstetrics
  9. All NMBAs = minimal transfer → neonates not paralysed after maternal GA
  10. Succinylcholine = minimal transfer despite small size (highly ionised)
  11. Warfarin = completely crosses → NEVER use in pregnancy; use heparin
  12. Pethidine peak neonatal depression = 1-3 hours after IV maternal dose
  13. Remifentanil = rapid neonatal metabolism (UA/UV ~30%) - self-limiting despite crossing
  14. Fetal liver first-pass = ~75% umbilical blood through liver → partial metabolism before brain
  15. Fetal acidosis → worsens bupivacaine/lidocaine/opioid ion trapping → emergency
  16. ABC efflux transporters (P-gp, BCRP) in placenta actively remove drugs to protect fetus
  17. UV/MV ratio = measure of placental TRANSFER; UA/UV ratio = measure of fetal TISSUE UPTAKE
  18. FLIPFLOP syndrome (benzodiazepines): Floppy, Lethargic, Inert, Poor feeding, Low temperature, On sedation

Sources: Miller's Anesthesia 10e | Morgan & Mikhail's Clinical Anesthesiology 7e | Barash, Cullen & Stoelting's Clinical Anesthesia 9e | Goodman & Gilman's Pharmacological Basis of Therapeutics 14e
This is a shared conversation. Sign in to Orris to start your own chat.