physiological changes in geriatric and it's anaesthetic implications in details pdf
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"
mkdir -p /tmp/workspace/geriatric-anaesthesia && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.lib.colors import HexColor, black, white, Color from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, HRFlowable, KeepTogether) from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate from reportlab.lib import colors OUTPUT = '/tmp/workspace/geriatric-anaesthesia/Geriatric_Anaesthesia_Physiological_Changes.pdf' # ── Colour palette ───────────────────────────────────────────────────────────── NAVY = HexColor('#1A237E') TEAL = HexColor('#00838F') GOLD = HexColor('#F9A825') LIGHT = HexColor('#E8F4FD') PALE = HexColor('#F0F8FF') GREY_BG = HexColor('#F5F5F5') DARK = HexColor('#212121') RED_ACC = HexColor('#C62828') # ── Styles ───────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() COVER_TITLE = ParagraphStyle('CoverTitle', fontSize=28, textColor=white, fontName='Helvetica-Bold', alignment=TA_CENTER, leading=34, spaceAfter=10) COVER_SUB = ParagraphStyle('CoverSub', fontSize=15, textColor=HexColor('#BBDEFB'), fontName='Helvetica', alignment=TA_CENTER, leading=20, spaceAfter=6) COVER_INFO = ParagraphStyle('CoverInfo', fontSize=11, textColor=HexColor('#E3F2FD'), fontName='Helvetica', alignment=TA_CENTER, leading=15) H1 = ParagraphStyle('H1', fontSize=16, textColor=white, fontName='Helvetica-Bold', alignment=TA_LEFT, leading=20, spaceBefore=4, spaceAfter=4, leftIndent=0, borderPad=6, backColor=NAVY, borderRadius=4) H2 = ParagraphStyle('H2', fontSize=12, textColor=NAVY, fontName='Helvetica-Bold', alignment=TA_LEFT, leading=16, spaceBefore=10, spaceAfter=4, borderPad=0) H3 = ParagraphStyle('H3', fontSize=11, textColor=TEAL, fontName='Helvetica-Bold', alignment=TA_LEFT, leading=14, spaceBefore=8, spaceAfter=3) BODY = ParagraphStyle('Body', fontSize=9.5, textColor=DARK, fontName='Helvetica', alignment=TA_JUSTIFY, leading=14, spaceAfter=4) BULLET = ParagraphStyle('Bullet', fontSize=9.5, textColor=DARK, fontName='Helvetica', alignment=TA_LEFT, leading=13, leftIndent=14, bulletIndent=4, spaceAfter=2) CAPTION = ParagraphStyle('Caption', fontSize=8, textColor=HexColor('#555'), fontName='Helvetica-Oblique', alignment=TA_CENTER, leading=10) BOX_TITLE = ParagraphStyle('BoxTitle', fontSize=10, textColor=NAVY, fontName='Helvetica-Bold', leading=13, spaceAfter=3) BOX_BODY = ParagraphStyle('BoxBody', fontSize=9, textColor=DARK, fontName='Helvetica', leading=12.5, spaceAfter=2) KEY_STYLE = ParagraphStyle('KeyStyle', fontSize=9, textColor=RED_ACC, fontName='Helvetica-Bold', leading=13, spaceAfter=2, leftIndent=10) TABLE_HDR = ParagraphStyle('TblHdr', fontSize=9, textColor=white, fontName='Helvetica-Bold', alignment=TA_CENTER, leading=11) TABLE_CELL = ParagraphStyle('TblCell', fontSize=8.5, textColor=DARK, fontName='Helvetica', alignment=TA_LEFT, leading=11) FOOTER_STYLE = ParagraphStyle('Footer', fontSize=8, textColor=HexColor('#777'), fontName='Helvetica', alignment=TA_CENTER) PAGE_W, PAGE_H = A4 def make_h1(text): """Heading 1 with navy background.""" return [Spacer(1, 6), Table([[Paragraph(f' {text}', H1)]], colWidths=[PAGE_W - 4*cm], style=TableStyle([ ('BACKGROUND', (0,0), (-1,-1), NAVY), ('ROUNDEDCORNERS', [5]), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 10), ])), Spacer(1, 6)] def make_box(title, items, bg=LIGHT, border=TEAL): """A shaded information box.""" content = [Paragraph(title, BOX_TITLE)] for item in items: content.append(Paragraph(f'• {item}', BOX_BODY)) t = Table([[content]], colWidths=[PAGE_W - 4*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), bg), ('BOX', (0,0), (-1,-1), 1.5, border), ('TOPPADDING', (0,0), (-1,-1), 8), ('BOTTOMPADDING', (0,0), (-1,-1), 8), ('LEFTPADDING', (0,0), (-1,-1), 12), ('RIGHTPADDING', (0,0), (-1,-1), 10), ])) return [t, Spacer(1, 8)] def make_2col_table(headers, rows, col_widths=None): if col_widths is None: col_widths = [(PAGE_W - 4*cm) / len(headers)] * len(headers) data = [[Paragraph(h, TABLE_HDR) for h in headers]] for row in rows: data.append([Paragraph(str(c), TABLE_CELL) for c in row]) t = Table(data, colWidths=col_widths, repeatRows=1) style = [ ('BACKGROUND', (0,0), (-1,0), NAVY), ('GRID', (0,0), (-1,-1), 0.5, HexColor('#CCCCCC')), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, GREY_BG]), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 6), ('RIGHTPADDING', (0,0), (-1,-1), 6), ] t.setStyle(TableStyle(style)) return [t, Spacer(1, 8)] # ── Page callbacks ───────────────────────────────────────────────────────────── def cover_page(canvas, doc): canvas.saveState() # Background gradient simulation canvas.setFillColor(NAVY) canvas.rect(0, 0, PAGE_W, PAGE_H, fill=1, stroke=0) canvas.setFillColor(TEAL) canvas.rect(0, PAGE_H*0.55, PAGE_W, PAGE_H*0.45, fill=1, stroke=0) # Gold accent bar canvas.setFillColor(GOLD) canvas.rect(0, PAGE_H*0.54, PAGE_W, 6, fill=1, stroke=0) canvas.restoreState() def later_page(canvas, doc): canvas.saveState() # Header bar canvas.setFillColor(NAVY) canvas.rect(0, PAGE_H - 1.2*cm, PAGE_W, 1.2*cm, fill=1, stroke=0) canvas.setFillColor(white) canvas.setFont('Helvetica-Bold', 9) canvas.drawString(2*cm, PAGE_H - 0.8*cm, 'Geriatric Anaesthesia: Physiological Changes & Implications') canvas.drawRightString(PAGE_W - 2*cm, PAGE_H - 0.8*cm, f'Page {doc.page}') # Footer canvas.setFillColor(NAVY) canvas.rect(0, 0, PAGE_W, 1.0*cm, fill=1, stroke=0) canvas.setFillColor(white) canvas.setFont('Helvetica', 7.5) canvas.drawCentredString(PAGE_W/2, 0.35*cm, 'Based on: Morgan & Mikhail Clinical Anesthesiology 7e | Miller\'s Anesthesia 10e | Barash Clinical Anesthesia 9e') canvas.restoreState() # ── Build document ───────────────────────────────────────────────────────────── doc = SimpleDocTemplate(OUTPUT, pagesize=A4, leftMargin=2*cm, rightMargin=2*cm, topMargin=1.8*cm, bottomMargin=1.8*cm) story = [] # ============================================================ # COVER PAGE # ============================================================ story.append(Spacer(1, 3.5*cm)) cover_main = Table([[Paragraph('Physiological Changes<br/>in the Geriatric Patient', COVER_TITLE)]], colWidths=[PAGE_W - 4*cm]) cover_main.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), HexColor('#0D1B6E')), ('TOPPADDING', (0,0), (-1,-1), 20), ('BOTTOMPADDING', (0,0), (-1,-1), 20), ('LEFTPADDING', (0,0), (-1,-1), 20), ('RIGHTPADDING', (0,0), (-1,-1), 20), ('BOX', (0,0), (-1,-1), 2, GOLD), ])) story.append(cover_main) story.append(Spacer(1, 0.5*cm)) story.append(Paragraph('& Anaesthetic Implications', COVER_SUB)) story.append(Spacer(1, 1.5*cm)) story.append(Paragraph('A Comprehensive Clinical Reference', COVER_INFO)) story.append(Spacer(1, 0.5*cm)) story.append(Paragraph('Based on Morgan & Mikhail\'s Clinical Anesthesiology 7e', COVER_INFO)) story.append(Paragraph('Miller\'s Anesthesia 10e | Barash Clinical Anesthesia 9e', COVER_INFO)) story.append(Spacer(1, 1*cm)) story.append(Paragraph('July 2026', COVER_INFO)) story.append(PageBreak()) # ============================================================ # TABLE OF CONTENTS (simple) # ============================================================ toc_data = [ ['1', 'Introduction & Epidemiology', '3'], ['2', 'Cardiovascular System', '4'], ['3', 'Respiratory System', '6'], ['4', 'Central Nervous System', '8'], ['5', 'Renal & Hepatic Systems', '10'], ['6', 'Musculoskeletal & Body Composition', '11'], ['7', 'Endocrine & Thermoregulation', '12'], ['8', 'Pharmacokinetic & Pharmacodynamic Changes', '13'], ['9', 'Preoperative Assessment', '16'], ['10', 'Intraoperative Management', '18'], ['11', 'Postoperative Considerations', '21'], ['12', 'Regional Anaesthesia in the Elderly', '22'], ['13', 'Key Summary Tables', '23'], ] story.append(Spacer(1, 0.3*cm)) story.extend(make_h1('Table of Contents')) t = Table([['No.', 'Section', 'Page']] + toc_data, colWidths=[1.2*cm, PAGE_W - 7.2*cm, 1.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), NAVY), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9.5), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, PALE]), ('GRID', (0,0), (-1,-1), 0.4, HexColor('#BBBBBB')), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 8), ('ALIGN', (2,0), (2,-1), 'CENTER'), ])) story.append(t) story.append(PageBreak()) # ============================================================ # 1. INTRODUCTION # ============================================================ story.extend(make_h1('1. Introduction & Epidemiology')) story.append(Paragraph('Definition and Scope', H2)) story.append(Paragraph( 'Geriatric patients are conventionally defined as individuals aged ≥65 years, though many authors use ≥70 or ≥75 years ' 'for "elderly" in the surgical context. The term "oldest old" refers to those ≥85 years. By 2050 it is estimated that ' 'more than 20% of the world population will be over 65 years of age. In developed nations, patients over 65 already ' 'account for approximately 35-40% of all anaesthetics administered, and this proportion is rising steadily.', BODY)) story.append(Paragraph( 'Ageing is a complex biological process characterised by progressive decline of homeostatic reserve across all organ ' 'systems. It is important to distinguish <b>chronological age</b> (years lived) from <b>physiological age</b> ' '(functional reserve). Frailty - a state of increased vulnerability to stressors - captures physiological age better ' 'than chronological age and is increasingly used as a preoperative risk stratifier.', BODY)) story.extend(make_box('Key Principles of Geriatric Physiology', [ 'Ageing = gradual, progressive decline in homeostatic reserve - not disease.', 'Wide inter-individual variability makes generalisations hazardous.', 'Resting organ function may be well preserved; reduced reserve is exposed under stress (surgery/anaesthesia).', 'Comorbidities are extremely common and interact with age-related changes.', 'Polypharmacy affects pharmacokinetics and pharmacodynamics significantly.', 'Frailty index is a better predictor of perioperative morbidity than age alone.', ])) # ============================================================ # 2. CARDIOVASCULAR SYSTEM # ============================================================ story.append(PageBreak()) story.extend(make_h1('2. Cardiovascular System')) story.append(Paragraph('Structural Changes', H2)) story.append(Paragraph( 'Ageing produces progressive structural changes in the heart and vasculature independently of ischaemic heart disease. ' 'These changes reduce cardiac reserve and alter the response to anaesthetic agents.', BODY)) story.extend(make_2col_table( ['Structural Change', 'Mechanism / Consequence'], [ ['Increased aortic stiffness (arteriosclerosis)', 'Loss of elastin → ↑ pulse wave velocity → ↑ afterload, ↑ systolic BP, ↑ pulse pressure'], ['LV wall hypertrophy', 'Adaptation to chronic ↑ afterload → ↑ LV mass, ↓ compliance'], ['LV cavity size unchanged or slightly reduced', 'Preserved systolic function at rest even in octogenarians'], ['Myocardial fibrosis & lipofuscin deposition', '↓ Myocardial contractile reserve, ↑ arrhythmia risk'], ['Valvular calcification', 'Aortic sclerosis in up to 40% of patients >75 years; calcific aortic stenosis'], ['SA node fibrosis, ↓ pacemaker cells', 'Sick sinus syndrome risk; ↓ intrinsic HR'], ['Coronary artery calcification', '↑ Prevalence of subclinical CAD'], ], col_widths=[8*cm, PAGE_W - 4*cm - 8*cm] )) story.append(Paragraph('Functional Changes', H2)) story.append(Paragraph( 'In the <b>absence of coexisting disease</b>, resting systolic cardiac function is largely preserved even in octogenarians. ' 'However, diastolic dysfunction is extremely common. Increased vagal tone and decreased sensitivity of adrenergic ' 'receptors lead to a decline in heart rate and reduced chronotropic reserve.', BODY)) story.extend(make_2col_table( ['Parameter', 'Change with Ageing', 'Clinical Significance'], [ ['Resting heart rate', '↓ slightly (↑ vagal tone, ↓ β-receptor sensitivity)', 'HR less responsive to haemodynamic stress'], ['Maximum heart rate', '↓ (≈ 220 − age)', 'Significantly reduced exercise capacity'], ['Stroke volume (rest)', 'Preserved', 'Cardiac output maintained at rest'], ['Cardiac output (rest)', 'Preserved or mildly ↓', 'Normal resting haemodynamics'], ['Cardiac reserve (exercise)', '↓ 50% by age 80 vs. age 20', 'Poor tolerance of haemodynamic stress'], ['Systolic BP', '↑ (↑ afterload)', 'Hypertension present in >60% of elderly'], ['Diastolic dysfunction', '↑ prevalence with age', 'Impaired LV filling; flash pulmonary oedema risk'], ['Baroreceptor sensitivity', '↓', 'Exaggerated hypotension with positional change/induction'], ['Circulation time', '↑ (prolonged)', 'Delays onset IV drugs; speeds inhalational induction'], ], col_widths=[4.5*cm, 5.5*cm, PAGE_W - 4*cm - 10*cm] )) story.append(Paragraph('Diastolic Dysfunction', H2)) story.append(Paragraph( 'Older patients undergoing echocardiographic evaluation for surgery have an increased incidence of diastolic dysfunction ' 'compared with younger patients. Diastolic dysfunction prevents optimal ventricular relaxation, inhibiting diastolic ' 'filling. The ventricle becomes less compliant and filling pressures increase. ' 'An E/E\' ratio >15 on tissue Doppler echocardiography indicates elevated LVEDP and diastolic dysfunction. ' 'An E/E\' ratio <8 is consistent with normal diastolic function.', BODY)) story.append(Paragraph('Anaesthetic Implications - Cardiovascular', H2)) story.extend(make_box('Cardiovascular Anaesthetic Implications', [ 'Diminished cardiac reserve → exaggerated hypotension during induction of general anaesthesia.', 'Prolonged circulation time → delayed onset of IV drugs; titrate slowly and wait for effect.', 'Prolonged circulation time → faster rise in alveolar concentration → speeds inhalational induction (beware overdose).', 'Diastolic dysfunction → maintain sinus rhythm (loss of atrial kick → ↑ LVEDP by 20-40%); avoid tachycardia.', 'Decreased baroreceptor reflex → no compensatory tachycardia with hypotension; rely on fluid and vasopressors.', 'Decreased adrenergic receptor sensitivity → attenuated response to catecholamines; higher doses may be needed.', 'Increased afterload → avoid further increases (e.g., laryngoscopy response); consider vasodilators.', 'High prevalence of "silent" CAD → monitor for ischaemia; maintain coronary perfusion pressure.', 'Atrial fibrillation risk ↑ perioperatively → anticipate and manage proactively.', ], bg=HexColor('#FFF8E1'), border=GOLD)) # ============================================================ # 3. RESPIRATORY SYSTEM # ============================================================ story.append(PageBreak()) story.extend(make_h1('3. Respiratory System')) story.append(Paragraph('Structural Changes', H2)) story.append(Paragraph( 'Ageing decreases the elasticity of lung tissue, allowing overdistension of alveoli and collapse of small airways. ' 'The chest wall becomes stiffer due to calcification of costal cartilages, loss of intercostal muscle mass, and ' 'dorsal kyphosis. These changes together reduce respiratory reserve.', BODY)) story.extend(make_2col_table( ['Parameter', 'Change', 'Notes'], [ ['Total Lung Capacity (TLC)', 'Unchanged or slightly ↓', 'Not a useful ageing marker'], ['Residual Volume (RV)', '↑ (up to 50% by age 70)', 'Trapped gas; ↑ dead space'], ['Functional Residual Capacity (FRC)', '↑', 'FRC approaches closing capacity'], ['Vital Capacity (VC)', '↓ ~25 mL/year after age 30', 'Important screening measure'], ['FEV₁', '↓ ~30 mL/year after age 30', 'Predictive of respiratory complications'], ['FEV₁/FVC ratio', '↓ mildly', 'Physiological obstructive pattern'], ['Closing Capacity (CC)', '↑↑', 'CC > FRC by age 45 (supine), 65 (erect)'], ['Diffusing Capacity (DLCO)', '↓ ~0.4 mL/min/mmHg/year', 'Reflects alveolar surface loss'], ['Chest wall compliance', '↓ (↑ stiffness)', 'Increased work of breathing'], ['Lung compliance', '↑ (loss of elasticity)', 'Air trapping; dynamic hyperinflation'], ], col_widths=[5.5*cm, 3.5*cm, PAGE_W - 4*cm - 9*cm] )) story.append(Paragraph('Gas Exchange and Ventilatory Control', H2)) story.append(Paragraph( 'The alveolar-arterial (A-a) O₂ gradient widens with age. A useful formula for expected PaO₂ is: ' '<b>PaO₂ (mmHg) ≈ 100 − (age/3)</b> or approximately <b>0.38 × age</b> kPa reduction from young-adult values. ' 'Ventilatory responses to both hypoxia and hypercapnia diminish with ageing, reflecting decreased sensitivity ' 'of central and peripheral chemoreceptors.', BODY)) story.extend(make_2col_table( ['Gas Exchange Parameter', 'Change', 'Clinical Implication'], [ ['PaO₂', '↓ (~4 mmHg per decade after 30)', 'Baseline hypoxaemia; rapid desaturation'], ['PaCO₂', 'Unchanged', 'Higher PaCO₂ relative to ventilatory effort'], ['A-a gradient', '↑', 'V/Q mismatch from small airway collapse'], ['Hypoxic ventilatory response', '↓ 50% by age 65', 'Risk of undetected hypoxaemia'], ['Hypercapnic ventilatory response', '↓ 40% by age 65', 'Risk of CO₂ retention, delayed awakening'], ['Pharyngeal muscle tone', '↓', '↑ Risk of OSA, upper airway collapse'], ['Cough reflex', '↓', '↑ Aspiration risk, poor secretion clearance'], ], col_widths=[5.5*cm, 3.5*cm, PAGE_W - 4*cm - 9*cm] )) story.append(Paragraph('Closing Capacity & Airway Closure', H2)) story.append(Paragraph( 'The closing capacity (CC) increases with age due to loss of lung elastic recoil. Once CC exceeds FRC, small airways ' 'close during normal tidal breathing, causing intrapulmonary shunt and hypoxaemia. ' 'In normal individuals: <b>CC exceeds FRC in the supine position at age ~44 years</b> and in the sitting position ' 'at <b>age ~65 years</b>. General anaesthesia further reduces FRC by ~20%, worsening airway closure.', BODY)) story.append(Paragraph('Anaesthetic Implications - Respiratory', H2)) story.extend(make_box('Respiratory Anaesthetic Implications', [ 'Pre-oxygenation is mandatory and critical - reduced FRC and ↑ O₂ consumption → rapid SpO₂ fall on apnoea.', 'FRC < CC in supine position → shunt, hypoxaemia; PEEP and recruitment manoeuvres essential.', 'Reduced hypoxic/hypercapnic drive → rely on SpO₂ and ETCO₂ monitoring, not symptoms.', 'Attenuated cough reflex + ↓ mucociliary function → ↑ aspiration and pneumonia risk.', 'Stiff chest wall → ↑ work of breathing when spontaneously ventilating under GA; prefer IPPV.', 'Postoperative extubation: ensure return of airway reflexes and adequate muscle strength (sugammadex as needed).', 'Post-op pulmonary complications more likely: early mobilisation, incentive spirometry, physiotherapy.', 'OSA common and often undiagnosed: use STOP-BANG screen; consider CPAP perioperatively.', ])) # ============================================================ # 4. CENTRAL NERVOUS SYSTEM # ============================================================ story.append(PageBreak()) story.extend(make_h1('4. Central Nervous System')) story.append(Paragraph('Structural & Neurochemical Changes', H2)) story.append(Paragraph( 'The brain loses approximately 10-15% of its volume between ages 20 and 70 years, primarily through neuronal loss ' 'in the frontal cortex, hippocampus, and cerebellum. Cerebral blood flow decreases proportionally. ' 'Neurotransmitter systems - including dopaminergic, cholinergic, serotonergic, and noradrenergic pathways - ' 'show progressive decline, altering responses to anaesthetic agents and predisposing to delirium.', BODY)) story.extend(make_2col_table( ['CNS Change', 'Consequence'], [ ['↓ Cerebral cortex volume (10-15%)', 'Cognitive decline; ↑ susceptibility to anaesthetic effects'], ['↓ Cerebral blood flow', 'Reduced O₂ delivery; watershed ischaemia risk'], ['↓ Cerebral O₂ consumption', 'Reduced MAC requirement for inhalational agents'], ['↓ Dopaminergic neurons (substantia nigra)', 'Parkinson disease risk; akathisia with metoclopramide/haloperidol'], ['↓ Cholinergic transmission', 'Anticholinergic delirium susceptibility (atropine, scopolamine risky)'], ['↓ Spinal cord neurons, nerve conduction', 'Reduced local anaesthetic requirement for spinal/epidural'], ['↓ Nerve conduction velocity', 'Prolonged block with neuraxial techniques'], ['Cerebral atrophy → ↑ subdural space', 'Bridging veins stretched → subdural haematoma risk'], ], col_widths=[7*cm, PAGE_W - 4*cm - 7*cm] )) story.append(Paragraph('Postoperative Neurocognitive Disorders (PONDs)', H2)) story.append(Paragraph( 'Geriatric patients are at high risk for neurocognitive complications following surgery and anaesthesia. ' 'Current terminology classifies these as <b>Perioperative Neurocognitive Disorders (PNDs)</b>:', BODY)) story.extend(make_2col_table( ['Condition', 'Definition', 'Risk Factors', 'Time Course'], [ ['Postoperative Delirium (POD)', 'Acute brain dysfunction: inattention, fluctuating consciousness, disorganised thinking', 'Age >65, pre-existing cognitive impairment, anticholinergics, benzodiazepines, opioids, pain', 'Hours to days; usually resolves <1 week'], ['Delayed Neurocognitive Recovery', 'Cognitive decline at hospital discharge vs. baseline', 'Cardiac surgery, major abdominal surgery, pre-existing mild cognitive impairment', '30 days post-op'], ['Postoperative Cognitive Dysfunction (POCD)', 'Objective cognitive test decline vs. pre-op baseline', 'Advanced age, low education, pre-existing cognitive impairment, inflammatory response', '3 months post-op; may persist'], ['Neurocognitive Disorder (NCD)', 'Persistent cognitive impairment consistent with dementia criteria', 'Worsened by surgery in predisposed patients', >1 year'], ], col_widths=[3.5*cm, 4.5*cm, 4.5*cm, 3*cm] )) story.append(Paragraph('Anaesthetic Implications - CNS', H2)) story.extend(make_box('CNS Anaesthetic Implications', [ 'Reduced MAC: MAC decreases ~6% per decade after age 40 (use age-adjusted MAC).', 'Increased sensitivity to all CNS depressants: opioids, benzodiazepines, barbiturates, propofol.', 'Reduce doses by 30-50% for induction and maintenance agents.', 'Avoid anticholinergics (atropine, scopolamine) → profound delirium risk; use glycopyrrolate preferentially.', 'Avoid long-acting benzodiazepines (diazepam, lorazepam) perioperatively.', 'Screen for baseline cognitive function (MMSE, MoCA) before surgery - establishes reference.', 'Assess for pre-existing dementia, Parkinson disease, prior stroke - alters drug choices.', 'Use CAM (Confusion Assessment Method) daily postoperatively to detect delirium early.', 'Consider BIS or processed EEG monitoring to avoid inadvertent deep anaesthesia (burst suppression).', 'Regional anaesthesia preferred where feasible - reduces systemic CNS depressant load.', ])) # ============================================================ # 5. RENAL & HEPATIC SYSTEMS # ============================================================ story.append(PageBreak()) story.extend(make_h1('5. Renal & Hepatic Systems')) story.append(Paragraph('Renal Changes', H2)) story.append(Paragraph( 'Kidney mass decreases by 20-30% between ages 30 and 80, primarily due to cortical nephron loss. ' 'Glomerular filtration rate (GFR) declines by approximately 1 mL/min/year after age 40. ' 'Critically, serum creatinine may remain normal because of concomitant reduction in muscle mass - ' 'making it an unreliable marker of renal function in the elderly. Always calculate eGFR.', BODY)) story.extend(make_2col_table( ['Renal Parameter', 'Change', 'Anaesthetic Implication'], [ ['GFR', '↓ ~1 mL/min/year after 40; ~50% by age 80', 'Accumulation of renally-cleared drugs'], ['Renal blood flow', '↓ 50% by age 70', '↑ Susceptibility to acute kidney injury'], ['Tubular function', '↓ Na⁺ handling, concentrating & diluting capacity', 'Risk of both dehydration and fluid overload'], ['Renin-angiotensin axis', '↓ Renin & aldosterone', 'Impaired response to hypovolaemia'], ['Serum creatinine', 'May be falsely normal', 'Always calculate eGFR (CKD-EPI/MDRD)'], ['Drug clearance', '↓ (morphine-6-glucuronide, neostigmine, digoxin, aminoglycosides)', 'Dose reduce; monitor drug levels'], ], col_widths=[4.5*cm, 5*cm, PAGE_W - 4*cm - 9.5*cm] )) story.append(Paragraph('Hepatic Changes', H2)) story.append(Paragraph( 'Liver mass decreases by 20-40% and hepatic blood flow declines by 40-50% between ages 25 and 65. ' 'Microsomal enzyme (cytochrome P450) activity decreases modestly. Phase I reactions (oxidation, reduction, ' 'hydrolysis) are more affected than Phase II (conjugation). Plasma protein synthesis decreases, ' 'with reduced serum albumin, altering protein binding of drugs.', BODY)) story.extend(make_2col_table( ['Hepatic Parameter', 'Change', 'Anaesthetic Implication'], [ ['Liver mass', '↓ 20-40%', 'Reduced first-pass metabolism'], ['Hepatic blood flow', '↓ 40-50%', 'Reduced clearance of high-extraction drugs'], ['Phase I metabolism (CYP450)', '↓ modestly', 'Prolonged t½ of many drugs'], ['Phase II conjugation', 'Relatively preserved', 'Less affected drug metabolism'], ['Serum albumin', '↓ (3.5 → 3.0 g/dL typically)', '↑ Free fraction of protein-bound drugs'], ['Pseudocholinesterase', '↓ modestly', 'Slightly prolonged succinylcholine action'], ['Coagulation factor synthesis', '↓ mildly', 'Check INR; vitamin K deficiency possible'], ], col_widths=[4.5*cm, 4*cm, PAGE_W - 4*cm - 8.5*cm] )) # ============================================================ # 6. MUSCULOSKELETAL & BODY COMPOSITION # ============================================================ story.append(PageBreak()) story.extend(make_h1('6. Musculoskeletal & Body Composition')) story.extend(make_2col_table( ['Change', 'Mechanism', 'Anaesthetic Implication'], [ ['Sarcopenia (↓ lean body mass)', 'Loss of type II muscle fibres, ↓ anabolic hormones', '↓ Volume of distribution for water-soluble drugs; ↓ dose requirements'], ['↑ Body fat %', 'Relative fat gain despite stable total weight', '↑ Volume of distribution for lipophilic drugs (e.g., fentanyl, diazepam)'], ['↓ Total body water (TBW)', 'Loss of ICF and ECF', 'Higher peak plasma concentrations for water-soluble drugs'], ['Osteoporosis', '↓ Bone mineral density', 'Pathological fractures; positioning injuries; care with pressure points'], ['Degenerative joint disease (cervical spine)', 'Osteophytes, ↓ joint space', 'Limited neck extension → difficult laryngoscopy; atlantoaxial instability in RA'], ['Kyphosis/scoliosis', 'Vertebral compression fractures, ligament laxity', 'Difficult neuraxial technique; altered epidural spread'], ['↓ NMJ reserve (sarcopenia)', 'Denervation changes, ↓ AChR number', 'Prolonged NDMR effect (pharmacokinetic); train-of-four monitoring essential'], ], col_widths=[4*cm, 4.5*cm, PAGE_W - 4*cm - 8.5*cm] )) # ============================================================ # 7. ENDOCRINE & THERMOREGULATION # ============================================================ story.extend(make_h1('7. Endocrine & Thermoregulation')) story.append(Paragraph('Endocrine Changes', H2)) story.append(Paragraph( 'The neuroendocrine response to stress (surgery) is largely preserved or only slightly decreased in healthy ' 'older adult patients. However, several specific hormonal changes have anaesthetic relevance:', BODY)) story.extend(make_2col_table( ['Endocrine Change', 'Consequence'], [ ['↓ Insulin sensitivity (type 2 DM common)', 'Perioperative hyperglycaemia; target BG 6-10 mmol/L'], ['↓ ADH response accuracy', 'Impaired free water regulation; hypo/hypernatraemia risk'], ['↓ Thyroid function (hypothyroidism common)', 'Delayed drug metabolism; ↑ anaesthetic sensitivity; constipation'], ['↓ Cortisol reserve (subclinical adrenal insufficiency)', 'Haemodynamic instability under stress; consider stress dosing'], ['↓ Testosterone / oestrogen', 'Contributes to muscle loss, osteoporosis; altered drug metabolism'], ['↑ ANP (atrial natriuretic peptide)', 'In response to volume overload; risk of iatrogenic pulmonary oedema'], ], col_widths=[6*cm, PAGE_W - 4*cm - 6*cm] )) story.append(Paragraph('Thermoregulation', H2)) story.append(Paragraph( 'The thermoregulatory system deteriorates with ageing. The interthreshold range (temperature range triggering ' 'no response) widens significantly. The vasoconstriction and shivering thresholds decrease, and the sweating ' 'threshold increases. Subcutaneous fat loss, reduced muscle mass, and poor peripheral vasoconstriction all ' 'contribute to hypothermia risk.', BODY)) story.extend(make_box('Thermoregulation Implications', [ 'Hypothermia is more common, faster to develop, and better tolerated (less shivering) in the elderly.', 'BUT hypothermia causes: cardiac arrhythmias, coagulopathy, delayed drug metabolism, prolonged awakening, SSI.', 'Active warming: forced-air warming blanket, IV fluid warming, theatre temperature ≥21°C, leg/arm covers.', 'Monitor core temperature (nasopharyngeal/oesophageal under GA; tympanic/bladder for quick checks).', 'Shivering treatment: meperidine (pethidine) 12.5-25 mg IV, but use cautiously (serotonin syndrome risk).', ])) # ============================================================ # 8. PHARMACOKINETICS & PHARMACODYNAMICS # ============================================================ story.append(PageBreak()) story.extend(make_h1('8. Pharmacokinetic & Pharmacodynamic Changes')) story.append(Paragraph('Overview', H2)) story.append(Paragraph( 'Ageing produces both pharmacokinetic (PK) and pharmacodynamic (PD) changes. ' 'Disease-related changes and wide inter-individual variability prevent convenient generalisations. ' 'The principal PD change is a <b>reduced anaesthetic requirement (↓ MAC)</b>. ' 'PK changes result from altered body composition, reduced plasma protein binding, and reduced ' 'renal and hepatic clearance.', BODY)) story.append(Paragraph('Pharmacokinetic Changes', H2)) story.extend(make_2col_table( ['PK Parameter', 'Change in Elderly', 'Drugs Most Affected'], [ ['Volume of distribution (Vd) - hydrophilic drugs', '↓ (↓ TBW, ↓ lean mass)', 'Morphine, neostigmine, aminoglycosides → ↑ peak levels'], ['Volume of distribution - lipophilic drugs', '↑ (↑ % body fat)', 'Fentanyl, diazepam, thiopental → prolonged t½'], ['Plasma protein binding', '↓ (↓ albumin, ↓ AAG varies)', 'Propofol, fentanyl, lidocaine → ↑ free fraction'], ['Hepatic clearance (high extraction)', '↓ (↓ hepatic blood flow)', 'Lidocaine, propofol, opioids → ↑ plasma levels'], ['Hepatic clearance (low extraction)', '↓ (↓ CYP activity, ↓ liver mass)', 'Diazepam, warfarin, theophylline'], ['Renal clearance', '↓ (↓ GFR)', 'Morphine-6-glucuronide, neostigmine, rocuronium → prolonged effect'], ['Elimination half-life (t½ β)', '↑ for many drugs', 'Longer duration of action; accumulation with repeat dosing'], ['Phase I biotransformation', '↓', 'Many hepatically-metabolised drugs'], ['Phase II conjugation', 'Relatively preserved', 'Less clinically significant'], ], col_widths=[4.5*cm, 4.5*cm, PAGE_W - 4*cm - 9*cm] )) story.append(Paragraph('Minimum Alveolar Concentration (MAC)', H2)) story.append(Paragraph( 'MAC decreases by approximately <b>6% per decade</b> after the age of 40 years. This is the most important ' 'pharmacodynamic change for inhalational anaesthesia. Age-adjusted MAC can be estimated as: ' '<b>MAC(age) ≈ MAC(40 yr) × [1 − 0.06 × (age − 40)/10]</b>. For example, MAC of sevoflurane at age 80 ' 'is approximately 1.4% vs. 2.0% at age 40.', BODY)) story.extend(make_box('MAC Values by Age (Sevoflurane ~ 2% at age 40)', [ 'Age 40 years: Sevoflurane ~2.0%, Isoflurane ~1.15%, Desflurane ~6.0%', 'Age 60 years: Sevoflurane ~1.7%, Isoflurane ~0.97%, Desflurane ~5.1%', 'Age 80 years: Sevoflurane ~1.4%, Isoflurane ~0.80%, Desflurane ~4.2%', 'Nitrous oxide (N₂O): MAC also declines; useful as adjunct to reduce volatile agent requirements.', ], bg=GREY_BG, border=NAVY)) story.append(Paragraph('Individual Drug Changes', H2)) story.extend(make_2col_table( ['Drug Class / Drug', 'Change in Elderly', 'Recommended Adjustment'], [ ['Propofol', '↓ Dose requirement: 30-50% less for induction; altered PK (↓ clearance, ↑ sensitivity)', 'Reduce induction dose to 1-1.5 mg/kg IV; titrate slowly (use TCI with age-corrected target)'], ['Etomidate', '↓ Dose requirement; relatively stable cardiovascular profile', 'Preferred for haemodynamically compromised patients; reduce dose by ~30%'], ['Thiopental/Thiopentone', '↓ Dose: ↑ Vd for lipid-soluble drug; ↑ sensitivity; slow redistribution', 'Largely superseded by propofol; if used, reduce to 2-3 mg/kg'], ['Ketamine', 'Useful cardiovascular stimulant; may precipitate delirium', 'Use low dose (0.5-1 mg/kg); combine with benzodiazepine cautiously or midazolam alternative'], ['Benzodiazepines', '↑ Vd (lipophilic); ↓ hepatic clearance; ↑ CNS sensitivity; prolonged t½', 'Avoid long-acting agents; if midazolam used: reduce dose by 50%'], ['Opioids (morphine)', '↑ CNS sensitivity; ↓ renal clearance of M-6-G; ↑ brain μ-receptor sensitivity', 'Reduce by 30-50%; titrate to effect; consider fentanyl (shorter acting)'], ['Fentanyl', '↑ Vd (lipophilic); ↑ CNS sensitivity; prolonged t½', 'Reduce doses; useful as primary opioid; accumulates with infusions'], ['Remifentanil', 'PK unchanged (ester hydrolysis unaffected by age); PD: ↑ sensitivity', 'Reduce infusion rate by 50%; useful in elderly - predictable offset'], ['Succinylcholine', '↓ Pseudocholinesterase slightly; unchanged NMJ sensitivity (no ↑ hyperkalaemia risk)', 'Standard dose (1.5 mg/kg); safe for RSI'], ['Rocuronium', '↓ Renal/hepatic clearance → prolonged effect', 'Standard intubating dose; monitor with TOF; sugammadex highly effective'], ['Vecuronium', '↓ Hepatic clearance → prolonged effect (up to 2×)', 'Reduce maintenance doses; monitor TOF carefully'], ['Atracurium/Cisatracurium', 'PK unchanged (Hofmann elimination + ester hydrolysis)', 'Preferred NDMR in elderly - organ-independent elimination'], ['Neostigmine', '↓ Renal clearance → prolonged effect', 'Lower doses adequate; monitor TOF; sugammadex preferred'], ['Sugammadex', 'Renal excretion; ↓ GFR may slow elimination', 'Generally safe; excellent reversal; check eGFR'], ['Local anaesthetics', '↓ Protein binding (↑ free fraction); ↓ clearance; ↓ neuraxial requirement', 'Reduce spinal dose by 20-30%; smaller epidural top-ups; increased toxicity risk'], ['Inhalational agents', 'MAC ↓ 6%/decade; faster inhalational induction', 'Use age-adjusted MAC; use agent monitoring (ETAC)'], ], col_widths=[4.5*cm, 4.5*cm, PAGE_W - 4*cm - 9*cm] )) # ============================================================ # 9. PREOPERATIVE ASSESSMENT # ============================================================ story.append(PageBreak()) story.extend(make_h1('9. Preoperative Assessment of the Geriatric Patient')) story.append(Paragraph('Comprehensive Geriatric Assessment (CGA)', H2)) story.append(Paragraph( 'The American College of Surgeons and American Geriatrics Society recommend a <b>Comprehensive Geriatric Assessment ' '(CGA)</b> for all patients ≥65 years undergoing elective surgery. CGA evaluates domains beyond standard medical ' 'history and enables identification of modifiable risk factors.', BODY)) story.extend(make_2col_table( ['Domain', 'Assessment Tool', 'Anaesthetic Relevance'], [ ['Cognitive function', 'Mini-Mental State Examination (MMSE), Montreal Cognitive Assessment (MoCA)', 'Risk stratification for POCD/delirium; consent capacity'], ['Functional status', 'Activities of Daily Living (ADL), Instrumental ADL (IADL)', 'Predicts postoperative independence; rehabilitation needs'], ['Nutritional status', 'Serum albumin, body weight, Mini Nutritional Assessment', '↑ Wound healing complications; altered drug metabolism'], ['Frailty', 'Clinical Frailty Scale (1-9), Fried Frailty Phenotype, FRAIL questionnaire', 'Better predictor of mortality than ASA alone'], ['Polypharmacy review', 'Beers Criteria, STOPP/START tool', 'Drug interactions; preoperative optimisation'], ['Cardiopulmonary reserve', 'Duke Activity Status Index, 4 MET threshold, CPET', 'Risk stratification; guide for monitoring level'], ['Mood / depression', 'Geriatric Depression Scale (GDS)', 'Depression ↑ POCD/delirium risk'], ['Sensory impairment', 'Vision, hearing, communication assessment', 'Communication strategy in perioperative period'], ['Social support', 'Availability of carer, home environment', 'Discharge planning; rehabilitation capacity'], ], col_widths=[3.5*cm, 5*cm, PAGE_W - 4*cm - 8.5*cm] )) story.append(Paragraph('Preoperative Investigations', H2)) story.extend(make_2col_table( ['Investigation', 'Recommended For'], [ ['Electrolyte panel', 'All geriatric surgical patients'], ['Serum creatinine, BUN, eGFR', 'All geriatric surgical patients'], ['Coagulation (PT, PTT, INR, platelets)', 'All geriatric surgical patients'], ['ECG', 'All geriatric surgical patients (high prevalence silent CAD, AF)'], ['Echocardiography', 'Suspected diastolic/systolic dysfunction, murmur, poor functional capacity'], ['Liver function (AST, ALT, bilirubin, albumin)', 'All geriatric patients; especially major surgery'], ['Fasting glucose / HbA1c', 'All geriatric patients (high DM prevalence)'], ['TSH, free T4', 'All geriatric patients (↑ subclinical hypothyroidism)'], ['Haemoglobin / FBC', 'Anticipated blood loss; suspected anaemia'], ['Chest X-ray', 'Symptomatic respiratory disease; major thoracic/abdominal surgery'], ['Pulmonary function tests (spirometry)', 'Lung surgery, severe COPD, ambiguous symptoms'], ['CPET (Cardiopulmonary Exercise Testing)', 'High-risk surgery; equivocal functional assessment'], ], col_widths=[6*cm, PAGE_W - 4*cm - 6*cm] )) story.append(Paragraph('Frailty Assessment', H2)) story.append(Paragraph( 'Frailty is defined as a state of increased vulnerability to physiological stressors resulting from a cumulative ' 'decline in multiple physiological systems. The <b>Fried Frailty Phenotype</b> identifies frailty by the presence ' 'of ≥3 of 5 criteria: unintentional weight loss, self-reported exhaustion, low grip strength, slow walking speed, ' 'and low physical activity. Patients with 1-2 criteria are "pre-frail".', BODY)) story.extend(make_box('Frailty in Anaesthesia Practice', [ 'Frailty (vs. non-frailty) associated with 2-3× ↑ postoperative complications, ↑ ICU admission, ↑ 30-day mortality.', 'Clinical Frailty Scale (CFS) score 5-9 = moderate-to-severe frailty → consider goals-of-care discussion.', 'Frailty ≠ age: a robust 80-year-old may be safer than a frail 60-year-old.', 'Prehabilitation: exercise, nutritional supplementation, and optimisation of comorbidities can improve functional reserve before elective surgery.', 'Enhanced Recovery After Surgery (ERAS) protocols are recommended and reduce complications in geriatric patients.', ])) # ============================================================ # 10. INTRAOPERATIVE MANAGEMENT # ============================================================ story.append(PageBreak()) story.extend(make_h1('10. Intraoperative Management')) story.append(Paragraph('Monitoring', H2)) story.extend(make_box('Monitoring Recommendations in Elderly', [ 'Standard ASA/AAGBI monitoring: ECG (5-lead), SpO₂, NIBP, ETCO₂, temperature.', 'Arterial line: major surgery, haemodynamically unstable, or on vasopressors.', 'Central venous access: major haemorrhage risk, vasopressors needed, poor peripheral access.', 'Processed EEG (BIS/Entropy): recommended to guide depth of anaesthesia and avoid burst suppression.', 'Neuromuscular monitoring (TOF): mandatory when NMBDs used - never extubate without confirmed reversal.', 'Cardiac output monitoring (PICCO, LiDCO, oesophageal Doppler): major vascular/cardiac surgery.', 'Temperature monitoring: nasopharyngeal or oesophageal (gold standard under GA).', 'Urinary catheter: major/prolonged surgery; assess hourly urine output as volume guide.', ])) story.append(Paragraph('Positioning', H2)) story.append(Paragraph( 'Particular care is needed in positioning geriatric patients. Joint stiffness, osteoporosis, fragile skin, ' 'and vulnerable peripheral nerves require modified positioning techniques:', BODY)) story.extend(make_box('Positioning Considerations', [ 'Padding: gel pads for all bony prominences; pressure sores develop faster in the elderly.', 'Avoid excessive neck extension (cervical spondylosis, osteophytes, risk of spinal cord injury).', 'Lithotomy position: slow leg elevation/lowering to avoid haemodynamic swings.', 'Trendelenburg: poorly tolerated; exacerbates V/Q mismatch; ↑ ICP; ↑ IOP.', 'Lateral position: protect dependent ear, eye, and brachial plexus.', 'All joint movements: gentle, within physiological range; arthritic joints may be severely restricted.', ])) story.append(Paragraph('General Anaesthesia', H2)) story.extend(make_2col_table( ['Phase', 'Recommendations'], [ ['Pre-oxygenation', 'Mandatory; extend to 3-5 min (or 8 vital capacity breaths); reduce apnoea desaturation time'], ['Induction', 'Slow IV induction; titrate to effect; reduce doses 30-50%; consider TCI propofol or etomidate in haemodynamically unstable; avoid bolus thiopental'], ['Laryngoscopy / Intubation', 'Video laryngoscope as primary or backup; careful neck movement; smaller ETT may be needed (tracheal calcification); modified RSI if aspiration risk'], ['Maintenance', 'Age-adjusted MAC (↓ 6%/decade); use ETAC monitoring; volatile agents (sevoflurane) ↓ POCD risk vs. TIVA (conflicting evidence); avoid deep anaesthesia (BIS 40-60 target)'], ['Ventilation', 'Lung-protective ventilation: TV 6-8 mL/kg IBW, PEEP 5-8 cmH₂O, RR adjusted to normocapnia, recruitment manoeuvres PRN'], ['Fluid management', 'Goal-directed fluid therapy; avoid both hypovolaemia (organ ischaemia) and fluid overload (pulmonary oedema from diastolic dysfunction); warmed IV fluids'], ['NMBD reversal', 'Sugammadex preferred for rocuronium/vecuronium (complete reversal at TOF ratio >0.9); neostigmine acceptable with TOF ≥2 twitches'], ['Emergence', 'Avoid straining/coughing (↑ IOP, ↑ ICP, cardiac stress); smooth emergence; lidocaine 1-1.5 mg/kg IV to attenuate cough reflex; extubate awake'], ], col_widths=[4*cm, PAGE_W - 4*cm - 4*cm] )) story.append(Paragraph('TIVA vs. Inhalational Anaesthesia', H2)) story.append(Paragraph( 'The debate regarding TIVA vs. inhalational anaesthesia and POCD remains ongoing. Current evidence suggests ' 'no convincing difference in POCD rates between the two techniques in most patient populations when appropriate ' 'depth of anaesthesia monitoring is used. Key considerations:', BODY)) story.extend(make_box('TIVA vs. Volatile - Key Points in Elderly', [ 'Both techniques are acceptable; neither is definitively superior for POCD prevention.', 'Volatile agents: well-studied, low cost, easy monitoring (ETAC), possible ischaemic preconditioning.', 'TIVA (propofol + remifentanil): useful where ETAC unreliable (jet ventilation, CPB, MRI); antiemetic.', 'Depth of anaesthesia monitoring (BIS/Entropy) recommended with both techniques to avoid burst suppression.', 'Remifentanil TCI useful in elderly: predictable offset, but opioid-induced hyperalgesia concern.', 'Desflurane associated with emergence delirium and climate concerns; consider sevoflurane/isoflurane.', ])) # ============================================================ # 11. POSTOPERATIVE CONSIDERATIONS # ============================================================ story.append(PageBreak()) story.extend(make_h1('11. Postoperative Considerations')) story.extend(make_2col_table( ['Issue', 'Management'], [ ['Postoperative Delirium (POD)', 'Non-pharmacological: reorientation, family presence, avoid restraints, hearing aids/glasses, early mobilisation, sleep hygiene. Pharmacological: haloperidol 0.25-0.5 mg if agitated/unsafe; avoid benzodiazepines (worsen delirium)'], ['Pain management', 'Multimodal analgesia: paracetamol (safe), regional techniques, low-dose NSAIDs (with caution - renal risk), opioids titrated IV then oral; reduce opioid doses by 30-50%'], ['Hypothermia', 'Continue forced-air warming; monitor until T >36°C; shivering treated with meperidine 12.5 mg IV'], ['Respiratory complications', 'SpO₂ monitoring; supplemental O₂; incentive spirometry; early physiotherapy; CPAP if OSA/respiratory failure'], ['Fluid/electrolyte balance', 'Restrict IV fluids post-op (switch to oral early); monitor electrolytes (hypo/hypernatraemia common)'], ['Nausea & vomiting (PONV)', 'High-risk: TIVA, ondansetron + dexamethasone; avoid N₂O if high risk'], ['Urinary retention', 'Anticholinergic drugs worsen; monitor urine output; catheterise if needed; alpha-blockers for BPH'], ['DVT/PE prophylaxis', 'LMWH/UFH + mechanical compression; early mobilisation essential'], ['Pressure injury prevention', 'Regular repositioning; special pressure-relieving mattress; nutritional support'], ['Discharge planning', 'Multidisciplinary: early PT/OT assessment; ensure safe home environment/carer; medication reconciliation'], ], col_widths=[4*cm, PAGE_W - 4*cm - 4*cm] )) # ============================================================ # 12. REGIONAL ANAESTHESIA # ============================================================ story.extend(make_h1('12. Regional Anaesthesia in the Elderly')) story.append(Paragraph( 'Regional anaesthesia (RA) is increasingly favoured in geriatric patients as it may reduce systemic drug ' 'exposure and associated CNS side effects. However, anatomical changes and altered physiology modify its ' 'conduct and outcomes.', BODY)) story.extend(make_2col_table( ['Regional Technique', 'Age-Related Changes', 'Clinical Adjustments'], [ ['Spinal (intrathecal)', '↓ CSF volume, ↑ CSF pressure, ↓ protein binding, ↑ lipid solubility of nerves → ↑ block spread and intensity; faster onset; prolonged duration', 'Reduce dose by 20-30%; use isobaric or hypobaric solutions; slow position changes; treat hypotension promptly (phenylephrine/ephedrine)'], ['Epidural', 'Intervertebral foramina narrow → reduced leakage; fibrosed epidural space → ↑ resistance; reduced volume needed', 'Reduce top-up volumes by 20-30%; test dose essential; air-loss-of-resistance may be difficult; calcified ligamentum flavum'], ['Peripheral nerve blocks', 'Thinner epineurium → faster drug uptake; ↓ protein binding → ↑ free LA; prolonged block', 'Reduce LA volume; use ultrasound guidance; observe for LA systemic toxicity (LAST)'], ['Brachial plexus block', 'Standard approach; may need modified positioning for shoulder disease', 'Ultrasound preferred; phrenic nerve block concern in poor respiratory reserve'], ['Femoral/adductor canal', 'Useful for hip/knee surgery; reduces opioid requirement', 'Ultrasound guidance; combine with sciatic if complete lower limb analgesia needed'], ['TAP block / rectus sheath', 'Abdominal surgery analgesia; reduces opioid use', 'Ultrasound guided; consider in ERAS protocols'], ], col_widths=[3.5*cm, 5*cm, PAGE_W - 4*cm - 8.5*cm] )) story.extend(make_box('Regional vs. General Anaesthesia in Elderly - Evidence Summary', [ 'Hip fracture: spinal anaesthesia associated with reduced 30-day mortality and complications vs. GA (multiple RCTs).', 'POCD: no definitive evidence that RA prevents POCD vs. GA when BIS monitoring used for GA.', 'Blood loss: spinal/epidural reduce surgical blood loss by ~30% via hypotension and improved venous tone.', 'DVT risk: neuraxial blocks reduce DVT/PE incidence in major orthopaedic surgery.', 'Pulmonary complications: epidural analgesia reduces post-thoracic surgery pulmonary complications.', 'Avoid combined GA + neuraxial routinely if GA can be avoided entirely.', ])) # ============================================================ # 13. SUMMARY TABLES # ============================================================ story.append(PageBreak()) story.extend(make_h1('13. Key Summary Tables')) story.append(Paragraph('Table 1: System-by-System Summary', H2)) story.extend(make_2col_table( ['System', 'Key Age-Related Changes', 'Principal Anaesthetic Implication'], [ ['Cardiovascular', '↓ HR reserve, diastolic dysfunction, ↑ afterload, ↓ baroreceptors, prolonged circulation time', 'Slow induction; treat hypotension promptly; maintain sinus rhythm; haemodynamic monitoring'], ['Respiratory', '↓ FVC/FEV₁, ↑ RV, CC>FRC, ↓ chemoreceptors, ↓ cough', 'Pre-oxygenate; PEEP; early extubation criteria; post-op O₂; physiotherapy'], ['CNS', '↓ MAC, ↓ neurotransmitters, ↑ delirium risk', '↓ drug doses; BIS monitoring; avoid anticholinergics/BZD; delirium screening'], ['Renal', '↓ GFR, ↓ tubular function, ↑ AKI risk', 'Dose-adjust renally-cleared drugs; GFT; avoid NSAIDs/nephrotoxins'], ['Hepatic', '↓ liver mass/flow, ↓ albumin, ↓ CYP450', 'Prolonged t½ of many drugs; ↑ free fraction; dose reduce'], ['Musculoskeletal', 'Sarcopenia, ↑ fat%, osteoporosis, arthritis', 'Careful positioning; ↓ Vd water-soluble drugs; prolonged NDMR'], ['Thermoregulation', 'Impaired; rapid hypothermia', 'Active warming throughout; temperature monitoring'], ['Pharmacology', '↓ MAC, ↑ sensitivity all agents, altered PK', 'Start low, go slow; titrate; use remifentanil/atracurium for predictability'], ], col_widths=[3.5*cm, 6*cm, PAGE_W - 4*cm - 9.5*cm] )) story.append(Spacer(1, 6)) story.append(Paragraph('Table 2: Drug Dosing Adjustments in Elderly', H2)) story.extend(make_2col_table( ['Drug', 'Standard Adult Dose', 'Elderly Adjustment', 'Reason'], [ ['Propofol (induction)', '1.5-2.5 mg/kg', '1.0-1.5 mg/kg (titrate)', '↑ sensitivity, ↓ clearance'], ['Etomidate', '0.3 mg/kg', '0.15-0.2 mg/kg', '↑ CNS sensitivity'], ['Fentanyl', '1-3 mcg/kg', '0.5-1.5 mcg/kg', '↑ brain sensitivity, ↑ Vd'], ['Remifentanil (infusion)', '0.1-0.5 mcg/kg/min', '0.05-0.25 mcg/kg/min (↓50%)', 'PD sensitivity, normo-PK'], ['Morphine', '0.1-0.15 mg/kg', '0.05-0.08 mg/kg (↓30-50%)', '↑ sensitivity, ↓ M6G clearance'], ['Midazolam', '0.05-0.1 mg/kg', '0.01-0.03 mg/kg (↓50-75%)', '↑ sensitivity, ↑ t½'], ['Rocuronium (intubation)', '0.6-1.2 mg/kg', '0.6 mg/kg (standard intubation)', 'Standard dose, but prolonged effect'], ['Spinal bupivacaine', '2.5-3 mL 0.5%', '1.5-2 mL 0.5% (↓25-30%)', '↑ spread, ↑ sensitivity'], ['Neostigmine', '0.04-0.07 mg/kg', '↓ dose; prefer sugammadex', '↓ renal clearance, bradycardia risk'], ['Sevoflurane MAC', '2.0% (age 40)', '1.4% (age 80) - age-adjusted', '↓ MAC 6%/decade'], ], col_widths=[3.5*cm, 3.5*cm, 4*cm, PAGE_W - 4*cm - 11*cm] )) story.append(Spacer(1, 6)) story.append(Paragraph('Table 3: Contraindicated / High-Risk Drugs in Elderly', H2)) story.extend(make_2col_table( ['Drug', 'Risk', 'Alternative'], [ ['Atropine (large doses)', 'Anticholinergic delirium, tachycardia, urinary retention', 'Glycopyrrolate (does not cross BBB)'], ['Scopolamine (hyoscine)', 'Profound anticholinergic delirium', 'Avoid; or minimal dose for N&V only'], ['Meperidine (pethidine)', 'Normeperidine accumulation → seizures; serotonin syndrome', 'Use only for shivering (12.5 mg IV); avoid for analgesia'], ['Long-acting benzodiazepines (diazepam)', '↑ Vd, ↑ t½, prolonged sedation, delirium, falls', 'Midazolam (if BZD needed) in low dose'], ['NSAIDs (indomethacin, ketorolac)', 'Acute kidney injury, GI bleed, fluid retention, ↑ BP', 'Paracetamol; COX-2 with caution; short duration only'], ['High-dose opioids', 'Respiratory depression, constipation, delirium, sedation', 'Multimodal: paracetamol, regional, ↓ dose opioid'], ['Haloperidol (high dose)', 'QT prolongation, extrapyramidal, NMS, arrhythmia', 'Low dose 0.25-0.5 mg for delirium only; monitor QTc'], ['First-gen antihistamines (promethazine)', 'Anticholinergic delirium', 'Ondansetron for PONV; avoid promethazine'], ], col_widths=[4*cm, 5.5*cm, PAGE_W - 4*cm - 9.5*cm] )) # Final references story.append(PageBreak()) story.extend(make_h1('References & Further Reading')) refs = [ 'Morgan GE, Mikhail MS, Murray MJ. Clinical Anesthesiology, 7th edition. McGraw-Hill, 2022. Chapter 43: Geriatric Anesthesia.', "Miller RD, Cohen NH, Eriksson LI, et al. Miller's Anesthesia, 10th edition. Elsevier, 2025. Chapter 11: Neuromuscular Physiology and Pharmacology.", 'Barash PG, Cullen BF, Stoelting RK, et al. Clinical Anesthesia, 9th edition. Wolters Kluwer, 2022.', 'Chow W, Rosenthal R, Merkow R, et al. Optimal preoperative assessment of the geriatric surgical patient. J Am Coll Surg. 2012;215(4):453-466.', 'Monk TG, Price CC. Postoperative cognitive disorders. Curr Opin Crit Care. 2011;17(4):376-381.', 'Fried LP, Tangen CM, Walston J, et al. Frailty in older adults: evidence for a phenotype. J Gerontol A Biol Sci Med Sci. 2001;56:M146-M156.', 'Inouye SK, Bogardus ST Jr, Charpentier PA, et al. A multicomponent intervention to prevent delirium in hospitalised older patients. N Engl J Med. 1999;340:669-676.', 'Neuman MD, Feng R, Carson JL, et al. Spinal anesthesia or general anesthesia for hip surgery in older adults. N Engl J Med. 2021;385(22):2025-2035.', 'Evered L, Silbert B, Knopman DS, et al. Recommendations for the nomenclature of cognitive change associated with anaesthesia and surgery - 2018. Br J Anaesth. 2018;121:1005-1012.', ] for i, ref in enumerate(refs, 1): story.append(Paragraph(f'{i}. {ref}', BODY)) story.append(Spacer(1, 3)) # ── Build ──────────────────────────────────────────────────────────────────── def on_page(canvas, doc): if doc.page == 1: cover_page(canvas, doc) else: later_page(canvas, doc) doc.build(story, onFirstPage=on_page, onLaterPages=on_page) print(f"PDF created: {OUTPUT}") PYEOF
where is my pdf
mkdir -p /tmp/workspace/geriatric-anaesthesia && python3 /tmp/workspace/geriatric-anaesthesia/build.py 2>&1 | tail -5
~/geriatric-anaesthesia/build.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib.colors import HexColor, white
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, PageBreak)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
OUTPUT = '/tmp/workspace/geriatric-anaesthesia/Geriatric_Anaesthesia.pdf'
NAVY = HexColor('#1A237E')
TEAL = HexColor('#00838F')
GOLD = HexColor('#F9A825')
LIGHT = HexColor('#E8F4FD')
PALE = HexColor('#F0F8FF')
GREY_BG = HexColor('#F5F5F5')
DARK = HexColor('#212121')
RED_ACC = HexColor('#C62828')
styles = getSampleStyleSheet()
COVER_TITLE = ParagraphStyle('CoverTitle', fontSize=26, textColor=white,
fontName='Helvetica-Bold', alignment=TA_CENTER, leading=32, spaceAfter=10)
COVER_SUB = ParagraphStyle('CoverSub', fontSize=14, textColor=HexColor('#BBDEFB'),
fontName='Helvetica', alignment=TA_CENTER, leading=20, spaceAfter=6)
COVER_INFO = ParagraphStyle('CoverInfo', fontSize=11, textColor=HexColor('#E3F2FD'),
fontName='Helvetica', alignment=TA_CENTER, leading=15)
H1 = ParagraphStyle('H1', fontSize=15, textColor=white, fontName='Helvetica-Bold',
alignment=TA_LEFT, leading=19)
H2 = ParagraphStyle('H2', fontSize=12, textColor=NAVY, fontName='Helvetica-Bold',
alignment=TA_LEFT, leading=16, spaceBefore=10, spaceAfter=4)
H3 = ParagraphStyle('H3', fontSize=11, textColor=TEAL, fontName='Helvetica-Bold',
alignment=TA_LEFT, leading=14, spaceBefore=8, spaceAfter=3)
BODY = ParagraphStyle('Body', fontSize=9.5, textColor=DARK, fontName='Helvetica',
alignment=TA_JUSTIFY, leading=14, spaceAfter=4)
BULLET = ParagraphStyle('Bullet', fontSize=9.5, textColor=DARK, fontName='Helvetica',
alignment=TA_LEFT, leading=13, leftIndent=14, bulletIndent=4, spaceAfter=2)
BOX_TITLE = ParagraphStyle('BoxTitle', fontSize=10, textColor=NAVY,
fontName='Helvetica-Bold', leading=13, spaceAfter=3)
BOX_BODY = ParagraphStyle('BoxBody', fontSize=9, textColor=DARK,
fontName='Helvetica', leading=12.5, spaceAfter=2)
TABLE_HDR = ParagraphStyle('TblHdr', fontSize=9, textColor=white,
fontName='Helvetica-Bold', alignment=TA_CENTER, leading=11)
TABLE_CELL = ParagraphStyle('TblCell', fontSize=8.5, textColor=DARK,
fontName='Helvetica', alignment=TA_LEFT, leading=11)
PAGE_W, PAGE_H = A4
CONTENT_W = PAGE_W - 4*cm
def make_h1(text):
t = Table([[Paragraph(' ' + text, H1)]], colWidths=[CONTENT_W])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), NAVY),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
]))
return [Spacer(1, 8), t, Spacer(1, 8)]
def make_box(title, items, bg=LIGHT, border=TEAL):
content = [Paragraph(title, BOX_TITLE)]
for item in items:
content.append(Paragraph('• ' + item, BOX_BODY))
t = Table([[content]], colWidths=[CONTENT_W])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('BOX', (0,0), (-1,-1), 1.5, border),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 12),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
return [t, Spacer(1, 8)]
def make_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [CONTENT_W / len(headers)] * len(headers)
data = [[Paragraph(h, TABLE_HDR) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), TABLE_CELL) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), NAVY),
('GRID', (0,0), (-1,-1), 0.5, HexColor('#CCCCCC')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [white, GREY_BG]),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
]))
return [t, Spacer(1, 8)]
def cover_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(NAVY)
canvas.rect(0, 0, PAGE_W, PAGE_H, fill=1, stroke=0)
canvas.setFillColor(TEAL)
canvas.rect(0, PAGE_H*0.55, PAGE_W, PAGE_H*0.45, fill=1, stroke=0)
canvas.setFillColor(GOLD)
canvas.rect(0, PAGE_H*0.54, PAGE_W, 6, fill=1, stroke=0)
canvas.restoreState()
def later_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(NAVY)
canvas.rect(0, PAGE_H - 1.2*cm, PAGE_W, 1.2*cm, fill=1, stroke=0)
canvas.setFillColor(white)
canvas.setFont('Helvetica-Bold', 9)
canvas.drawString(2*cm, PAGE_H - 0.8*cm,
'Geriatric Anaesthesia: Physiological Changes & Anaesthetic Implications')
canvas.drawRightString(PAGE_W - 2*cm, PAGE_H - 0.8*cm, f'Page {doc.page}')
canvas.setFillColor(NAVY)
canvas.rect(0, 0, PAGE_W, 1.0*cm, fill=1, stroke=0)
canvas.setFillColor(white)
canvas.setFont('Helvetica', 7.5)
canvas.drawCentredString(PAGE_W/2, 0.35*cm,
"Morgan & Mikhail 7e | Miller's Anesthesia 10e | Barash Clinical Anesthesia 9e")
canvas.restoreState()
def on_page(canvas, doc):
if doc.page == 1:
cover_page(canvas, doc)
else:
later_page(canvas, doc)
doc = SimpleDocTemplate(OUTPUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm)
story = []
# ── COVER ──────────────────────────────────────────────────────────────────────
story.append(Spacer(1, 3.5*cm))
cover_box = Table([[Paragraph('Physiological Changes<br/>in the Geriatric Patient', COVER_TITLE)]],
colWidths=[CONTENT_W])
cover_box.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HexColor('#0D1B6E')),
('TOPPADDING', (0,0), (-1,-1), 20),
('BOTTOMPADDING', (0,0), (-1,-1), 20),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 20),
('BOX', (0,0), (-1,-1), 2, GOLD),
]))
story.append(cover_box)
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph('& Anaesthetic Implications', COVER_SUB))
story.append(Spacer(1, 1.5*cm))
story.append(Paragraph('A Comprehensive Clinical Reference', COVER_INFO))
story.append(Paragraph("Morgan & Mikhail's Clinical Anesthesiology 7e", COVER_INFO))
story.append(Paragraph("Miller's Anesthesia 10e | Barash Clinical Anesthesia 9e", COVER_INFO))
story.append(Spacer(1, 1*cm))
story.append(Paragraph('July 2026', COVER_INFO))
story.append(PageBreak())
# ── TABLE OF CONTENTS ──────────────────────────────────────────────────────────
story.extend(make_h1('Table of Contents'))
toc_rows = [
['1', 'Introduction & Epidemiology'],
['2', 'Cardiovascular System'],
['3', 'Respiratory System'],
['4', 'Central Nervous System & Postoperative Neurocognitive Disorders'],
['5', 'Renal & Hepatic Systems'],
['6', 'Musculoskeletal & Body Composition'],
['7', 'Endocrine & Thermoregulation'],
['8', 'Pharmacokinetic & Pharmacodynamic Changes'],
['9', 'Preoperative Assessment'],
['10', 'Intraoperative Management'],
['11', 'Postoperative Considerations'],
['12', 'Regional Anaesthesia in the Elderly'],
['13', 'Key Summary Tables'],
['14', 'References'],
]
t = Table([['No.', 'Section']] + toc_rows, colWidths=[1.2*cm, CONTENT_W - 1.2*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), NAVY),
('TEXTCOLOR', (0,0), (-1,0), white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9.5),
('ROWBACKGROUNDS', (0,1), (-1,-1), [white, PALE]),
('GRID', (0,0), (-1,-1), 0.4, HexColor('#BBBBBB')),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
]))
story.append(t)
story.append(PageBreak())
# ── 1. INTRODUCTION ────────────────────────────────────────────────────────────
story.extend(make_h1('1. Introduction & Epidemiology'))
story.append(Paragraph('Definition and Scope', H2))
story.append(Paragraph(
'Geriatric patients are conventionally defined as individuals aged 65 years or older, though many authors '
'use 70 or 75 years for "elderly" in the surgical context. The term "oldest old" refers to those aged 85 '
'or above. By 2050 it is estimated that more than 20% of the world population will be over 65 years. '
'In developed nations, patients over 65 already account for approximately 35-40% of all anaesthetics '
'administered, and this proportion is rising steadily.', BODY))
story.append(Paragraph(
'Ageing is a complex biological process characterised by progressive decline of homeostatic reserve across '
'all organ systems. It is important to distinguish <b>chronological age</b> (years lived) from '
'<b>physiological age</b> (functional reserve). Frailty - a state of increased vulnerability to stressors '
'- captures physiological age better than chronological age and is increasingly used as a preoperative '
'risk stratifier.', BODY))
story.extend(make_box('Key Principles of Geriatric Physiology', [
'Ageing = gradual, progressive decline in homeostatic reserve - not disease per se.',
'Wide inter-individual variability makes generalisations hazardous.',
'Resting organ function may be well preserved; reduced reserve is exposed under stress (surgery/anaesthesia).',
'Comorbidities are extremely common and interact with age-related changes.',
'Polypharmacy affects pharmacokinetics and pharmacodynamics significantly.',
'Frailty index is a better predictor of perioperative morbidity than chronological age alone.',
]))
# ── 2. CARDIOVASCULAR ──────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('2. Cardiovascular System'))
story.append(Paragraph('Structural Changes', H2))
story.append(Paragraph(
'Ageing produces progressive structural changes in the heart and vasculature independently of ischaemic '
'heart disease. These changes reduce cardiac reserve and alter the response to anaesthetic agents.', BODY))
story.extend(make_table(
['Structural Change', 'Mechanism / Consequence'],
[
['Increased aortic stiffness (arteriosclerosis)', 'Loss of elastin, ↑ pulse wave velocity, ↑ afterload, ↑ systolic BP, ↑ pulse pressure'],
['LV wall hypertrophy', 'Adaptation to chronic ↑ afterload; ↑ LV mass, ↓ compliance'],
['Myocardial fibrosis & lipofuscin deposition', '↓ Contractile reserve, ↑ arrhythmia risk'],
['Valvular calcification', 'Aortic sclerosis in up to 40% of patients >75 yr; calcific aortic stenosis'],
['SA node fibrosis, ↓ pacemaker cells', 'Sick sinus syndrome; ↓ intrinsic HR; ↑ conduction disease'],
['Coronary artery calcification', '↑ Prevalence of subclinical CAD'],
],
col_widths=[7*cm, CONTENT_W - 7*cm]
))
story.append(Paragraph('Functional Changes', H2))
story.append(Paragraph(
'In the <b>absence of coexisting disease</b>, resting systolic cardiac function is largely preserved even '
'in octogenarians. However, diastolic dysfunction is extremely common. Increased vagal tone and decreased '
'sensitivity of adrenergic receptors lead to a decline in heart rate and reduced chronotropic reserve. '
'Prolonged circulation time delays the onset of intravenous drugs but speeds induction with inhalational '
'agents. (Morgan & Mikhail Clinical Anesthesiology 7e, Chapter 43)', BODY))
story.extend(make_table(
['Parameter', 'Change with Ageing', 'Clinical Significance'],
[
['Resting heart rate', '↓ slightly', 'HR less responsive to haemodynamic stress'],
['Maximum heart rate', '↓ (approx. 220 minus age)', 'Significantly reduced exercise capacity'],
['Cardiac output (rest)', 'Preserved or mildly ↓', 'Normal resting haemodynamics'],
['Cardiac reserve (exercise)', '↓ 50% by age 80 vs age 20', 'Poor tolerance of haemodynamic stress'],
['Systolic BP', '↑ (↑ afterload)', 'Hypertension present in >60% of elderly'],
['Diastolic dysfunction', '↑ prevalence', 'Impaired LV filling; flash pulmonary oedema risk'],
['Baroreceptor sensitivity', '↓', 'Exaggerated hypotension with positional change/induction'],
['Circulation time', '↑ (prolonged)', 'Delays IV drug onset; speeds inhalational induction'],
['beta-adrenergic response', '↓', 'Attenuated response to catecholamines'],
],
col_widths=[4*cm, 4.5*cm, CONTENT_W - 8.5*cm]
))
story.append(Paragraph('Diastolic Dysfunction', H2))
story.append(Paragraph(
'Older patients undergoing echocardiographic evaluation have an increased incidence of diastolic dysfunction '
'compared with younger patients. The ventricle becomes less compliant and filling pressures increase. '
'An E/E\' ratio >15 on tissue Doppler echocardiography indicates elevated LVEDP and diastolic dysfunction; '
'a ratio <8 is consistent with normal diastolic function. Diastolic dysfunction is not equivalent to '
'diastolic heart failure, but in some patients with symptoms of heart failure, systolic function can be '
'well preserved despite severe diastolic dysfunction.', BODY))
story.extend(make_box('Cardiovascular Anaesthetic Implications', [
'Diminished cardiac reserve - exaggerated hypotension during induction of general anaesthesia.',
'Prolonged circulation time - delayed onset of IV drugs; titrate slowly and wait for effect.',
'Prolonged circulation time - faster alveolar rise - speeds inhalational induction (beware overdose).',
'Diastolic dysfunction - maintain sinus rhythm (loss of atrial kick raises LVEDP 20-40%); avoid tachycardia.',
'Decreased baroreceptor reflex - no compensatory tachycardia with hypotension; rely on fluids and vasopressors.',
'Decreased adrenergic receptor sensitivity - higher catecholamine doses may be needed.',
'Increased afterload - avoid further increases (laryngoscopy pressor response); consider vasodilators.',
'High prevalence of silent CAD - monitor for ischaemia; maintain coronary perfusion pressure.',
'Atrial fibrillation risk increases perioperatively - anticipate and manage proactively.',
], bg=HexColor('#FFF8E1'), border=GOLD))
# ── 3. RESPIRATORY ─────────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('3. Respiratory System'))
story.append(Paragraph('Structural & Mechanical Changes', H2))
story.append(Paragraph(
'Ageing decreases the elasticity of lung tissue, allowing overdistension of alveoli and collapse of small '
'airways. Residual volume (RV) and functional residual capacity (FRC) increase with ageing. The chest wall '
'becomes stiffer due to calcification of costal cartilages, loss of intercostal muscle mass, and dorsal '
'kyphosis. (Morgan & Mikhail 7e, Chapter 43)', BODY))
story.extend(make_table(
['Parameter', 'Change', 'Notes'],
[
['Total Lung Capacity (TLC)', 'Unchanged or slightly ↓', 'Not a useful ageing marker'],
['Residual Volume (RV)', '↑ up to 50% by age 70', 'Trapped gas; ↑ dead space'],
['Functional Residual Capacity (FRC)', '↑', 'FRC approaches closing capacity (CC)'],
['Vital Capacity (VC)', '↓ ~25 mL/year after age 30', 'Important screening measure'],
['FEV1', '↓ ~30 mL/year after age 30', 'Predictive of respiratory complications'],
['FEV1/FVC ratio', '↓ mildly', 'Physiological obstructive pattern'],
['Closing Capacity (CC)', '↑↑ (faster than FRC)', 'CC > FRC by age 44 (supine), 65 (erect)'],
['Diffusing Capacity (DLCO)', '↓ ~0.4 mL/min/mmHg/year', 'Reflects alveolar surface loss'],
['Chest wall compliance', '↓ (stiffer)', 'Increased work of breathing'],
['Lung compliance', '↑ (loss of elasticity)', 'Air trapping, dynamic hyperinflation'],
],
col_widths=[5*cm, 3.5*cm, CONTENT_W - 8.5*cm]
))
story.append(Paragraph('Gas Exchange & Ventilatory Control', H2))
story.append(Paragraph(
'The alveolar-arterial (A-a) O2 gradient widens with age. Expected PaO2 approximately equals '
'100 minus (age/3) mmHg. Ventilatory responses to both hypoxia and hypercapnia diminish with ageing, '
'reflecting decreased sensitivity of central and peripheral chemoreceptors.', BODY))
story.extend(make_table(
['Parameter', 'Change', 'Clinical Implication'],
[
['PaO2', '↓ ~4 mmHg per decade after age 30', 'Baseline hypoxaemia; rapid desaturation on apnoea'],
['PaCO2', 'Unchanged', 'Higher CO2 relative to ventilatory effort'],
['A-a gradient', '↑', 'V/Q mismatch from small airway collapse'],
['Hypoxic ventilatory response', '↓ 50% by age 65', 'Risk of undetected hypoxaemia'],
['Hypercapnic ventilatory response', '↓ 40% by age 65', 'Risk of CO2 retention; delayed awakening'],
['Pharyngeal muscle tone', '↓', '↑ Risk of OSA and upper airway collapse'],
['Cough reflex', '↓', '↑ Aspiration risk; poor secretion clearance'],
],
col_widths=[5*cm, 3.5*cm, CONTENT_W - 8.5*cm]
))
story.append(Paragraph('Closing Capacity & Airway Closure', H2))
story.append(Paragraph(
'The closing capacity (CC) increases with age due to loss of lung elastic recoil. Once CC exceeds FRC, '
'small airways close during normal tidal breathing, causing intrapulmonary shunt and hypoxaemia. '
'General anaesthesia further reduces FRC by approximately 20%, worsening airway closure.', BODY))
story.extend(make_box('Respiratory Anaesthetic Implications', [
'Pre-oxygenation is mandatory - reduced FRC and increased O2 consumption lead to rapid SpO2 fall on apnoea.',
'FRC < CC in supine position - shunt, hypoxaemia; PEEP and recruitment manoeuvres are essential under GA.',
'Reduced hypoxic/hypercapnic drive - rely on SpO2 and ETCO2 monitoring, not clinical symptoms.',
'Attenuated cough reflex + decreased mucociliary clearance - increased aspiration and pneumonia risk.',
'Stiff chest wall - increased work of breathing when spontaneously ventilating under GA; prefer IPPV.',
'Extubation criteria: ensure return of airway reflexes and adequate muscle strength (consider sugammadex).',
'Post-op pulmonary complications are more likely - early mobilisation, incentive spirometry, physiotherapy.',
'OSA is common and often undiagnosed - use STOP-BANG screen; consider CPAP perioperatively.',
]))
# ── 4. CNS ─────────────────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('4. Central Nervous System'))
story.append(Paragraph('Structural & Neurochemical Changes', H2))
story.append(Paragraph(
'The brain loses approximately 10-15% of its volume between ages 20 and 70, primarily through neuronal '
'loss in the frontal cortex, hippocampus, and cerebellum. Cerebral blood flow decreases proportionally. '
'Neurotransmitter systems including dopaminergic, cholinergic, serotonergic, and noradrenergic pathways '
'show progressive decline, altering responses to anaesthetic agents and predisposing to delirium.', BODY))
story.extend(make_table(
['CNS Change', 'Consequence'],
[
['Brain volume loss 10-15%', 'Cognitive decline; ↑ susceptibility to anaesthetic effects; subdural space enlarges'],
['↓ Cerebral blood flow', 'Reduced O2 delivery; watershed ischaemia risk'],
['↓ Cerebral O2 consumption', 'Reduced MAC requirement for inhalational agents'],
['↓ Dopaminergic neurons (substantia nigra)', 'Parkinson disease risk; akathisia with metoclopramide/haloperidol'],
['↓ Cholinergic transmission', 'Anticholinergic delirium susceptibility (atropine, scopolamine dangerous)'],
['↓ Spinal cord neurons & nerve conduction velocity', 'Reduced local anaesthetic requirement for neuraxial; prolonged block'],
['Bridging veins stretched over atrophic brain', 'Subdural haematoma risk with minor trauma'],
],
col_widths=[6.5*cm, CONTENT_W - 6.5*cm]
))
story.append(Paragraph('Postoperative Neurocognitive Disorders (PNDs)', H2))
story.append(Paragraph(
'Geriatric patients are at high risk for neurocognitive complications following surgery and anaesthesia. '
'Current 2018 nomenclature (Evered et al, Br J Anaesth) classifies these as Perioperative Neurocognitive '
'Disorders (PNDs):', BODY))
story.extend(make_table(
['Condition', 'Definition', 'Typical Time Course'],
[
['Postoperative Delirium (POD)', 'Acute brain dysfunction: inattention, fluctuating consciousness, disorganised thinking', 'Hours to days; usually resolves within 1 week'],
['Delayed Neurocognitive Recovery', 'Cognitive decline at hospital discharge vs. preoperative baseline', 'Up to 30 days post-op'],
['Postoperative Cognitive Dysfunction (POCD)', 'Objective cognitive test decline vs. pre-op baseline in formal neuropsychological testing', 'Up to 3 months post-op; may persist'],
['Postoperative Neurocognitive Disorder (NCD)', 'Persistent cognitive impairment consistent with dementia diagnostic criteria', 'Beyond 12 months post-op'],
],
col_widths=[4.5*cm, 6*cm, CONTENT_W - 10.5*cm]
))
story.extend(make_box('CNS Anaesthetic Implications', [
'Reduced MAC - decreases ~6% per decade after age 40; always use age-adjusted MAC.',
'Increased sensitivity to all CNS depressants: opioids, benzodiazepines, barbiturates, propofol.',
'Reduce induction and maintenance doses by 30-50%; titrate slowly.',
'Avoid anticholinergics (atropine, scopolamine) - profound delirium risk; use glycopyrrolate preferentially.',
'Avoid long-acting benzodiazepines (diazepam, lorazepam) perioperatively.',
'Screen for baseline cognitive function (MMSE, MoCA) before surgery - establishes reference.',
'Assess for pre-existing dementia, Parkinson disease, prior stroke - alters drug choices.',
'Use CAM (Confusion Assessment Method) daily postoperatively to detect delirium early.',
'Consider BIS or processed EEG monitoring to avoid inadvertent deep anaesthesia and burst suppression.',
'Regional anaesthesia preferred where feasible - reduces systemic CNS depressant load.',
]))
# ── 5. RENAL & HEPATIC ─────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('5. Renal & Hepatic Systems'))
story.append(Paragraph('Renal Changes', H2))
story.append(Paragraph(
'Kidney mass decreases by 20-30% between ages 30 and 80, primarily due to cortical nephron loss. '
'GFR declines by approximately 1 mL/min/year after age 40. Critically, serum creatinine may remain '
'normal because of concomitant reduction in muscle mass - making it an unreliable marker of renal '
'function in the elderly. <b>Always calculate eGFR using CKD-EPI or MDRD.</b>', BODY))
story.extend(make_table(
['Renal Parameter', 'Change', 'Anaesthetic Implication'],
[
['GFR', '↓ ~1 mL/min/year after 40; ~50% by age 80', 'Accumulation of renally-cleared drugs'],
['Renal blood flow', '↓ 50% by age 70', '↑ Susceptibility to AKI'],
['Tubular function', '↓ Na+ handling, concentrating & diluting capacity', 'Risk of both dehydration and fluid overload'],
['Renin-angiotensin axis', '↓ Renin & aldosterone', 'Impaired response to hypovolaemia'],
['Serum creatinine', 'May be falsely normal', 'Always calculate eGFR'],
['Drug clearance', '↓ morphine-6-glucuronide, neostigmine, digoxin', 'Dose reduce; monitor levels'],
],
col_widths=[4.5*cm, 5*cm, CONTENT_W - 9.5*cm]
))
story.append(Paragraph('Hepatic Changes', H2))
story.append(Paragraph(
'Liver mass decreases by 20-40% and hepatic blood flow declines by 40-50% between ages 25 and 65. '
'Microsomal enzyme (cytochrome P450) activity decreases modestly. Phase I reactions (oxidation, '
'reduction, hydrolysis) are more affected than Phase II (conjugation). Plasma albumin synthesis '
'decreases, altering protein binding of drugs. Hepatic function declines in proportion to decrease '
'in liver mass. (Miller\'s Anesthesia 10e)', BODY))
story.extend(make_table(
['Hepatic Parameter', 'Change', 'Anaesthetic Implication'],
[
['Liver mass', '↓ 20-40%', 'Reduced first-pass metabolism'],
['Hepatic blood flow', '↓ 40-50%', 'Reduced clearance of high-extraction drugs'],
['Phase I metabolism (CYP450)', '↓ modestly', 'Prolonged t1/2 of many drugs'],
['Phase II conjugation', 'Relatively preserved', 'Less clinically significant'],
['Serum albumin', '↓ (3.5 to ~3.0 g/dL)', '↑ Free fraction of protein-bound drugs'],
['Pseudocholinesterase', '↓ modestly', 'Slightly prolonged succinylcholine action'],
['Coagulation factor synthesis', '↓ mildly', 'Check INR; vitamin K deficiency possible'],
],
col_widths=[4.5*cm, 4*cm, CONTENT_W - 8.5*cm]
))
# ── 6. MUSCULOSKELETAL ─────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('6. Musculoskeletal & Body Composition'))
story.extend(make_table(
['Change', 'Mechanism', 'Anaesthetic Implication'],
[
['Sarcopenia (↓ lean body mass)', 'Loss of type II muscle fibres, ↓ anabolic hormones', '↓ Vd for water-soluble drugs; ↑ peak plasma levels'],
['↑ Body fat percentage', 'Relative fat gain despite stable total weight', '↑ Vd for lipophilic drugs (fentanyl, diazepam) - prolonged t1/2'],
['↓ Total body water (TBW)', 'Loss of ICF and ECF', 'Higher peak concentrations for water-soluble drugs'],
['Osteoporosis', '↓ Bone mineral density', 'Pathological fractures; positioning injuries; care with pressure points'],
['Degenerative cervical spine disease', 'Osteophytes, ↓ joint space, RA instability', 'Limited neck extension - difficult laryngoscopy; atlantoaxial instability in RA'],
['Kyphosis/scoliosis', 'Vertebral compression fractures, ligament laxity', 'Difficult neuraxial technique; altered epidural spread'],
['Neuromuscular junction changes', 'Denervation-like changes, ↓ AChR at NMJ, sarcopenia', 'Prolonged NDMR effect (pharmacokinetic); TOF monitoring essential'],
],
col_widths=[4*cm, 4.5*cm, CONTENT_W - 8.5*cm]
))
story.append(Paragraph(
'Note on NMJ ageing: Despite structural NMJ changes (Miller\'s Anesthesia 10e, Chapter 11), there is no '
'evidence that elderly patients are more prone to succinylcholine-induced hyperkalaemia. Some NDMRs '
'(e.g. vecuronium) have prolonged effects in old age due to pharmacokinetic rather than pharmacodynamic '
'causes. Atracurium/cisatracurium are preferred due to organ-independent (Hofmann) elimination.', BODY))
# ── 7. ENDOCRINE & THERMOREGULATION ───────────────────────────────────────────
story.extend(make_h1('7. Endocrine & Thermoregulation'))
story.append(Paragraph('Endocrine Changes', H2))
story.append(Paragraph(
'The neuroendocrine stress response is largely preserved in healthy elderly patients. '
'Specific hormonal changes with anaesthetic relevance include:', BODY))
story.extend(make_table(
['Endocrine Change', 'Anaesthetic Consequence'],
[
['↓ Insulin sensitivity / type 2 DM common (30% of >65)', 'Perioperative hyperglycaemia; target BG 6-10 mmol/L'],
['Impaired ADH response accuracy', 'Impaired free water regulation; hypo/hypernatraemia risk'],
['Subclinical hypothyroidism common', 'Delayed drug metabolism; ↑ anaesthetic sensitivity'],
['↓ Cortisol reserve', 'Haemodynamic instability under stress; consider stress-dose steroids'],
['↓ Testosterone and oestrogen', 'Contributes to muscle loss, osteoporosis; altered drug metabolism'],
['↑ ANP in volume overload', 'Risk of iatrogenic pulmonary oedema with aggressive fluid resuscitation'],
],
col_widths=[6*cm, CONTENT_W - 6*cm]
))
story.append(Paragraph('Thermoregulation', H2))
story.append(Paragraph(
'The thermoregulatory interthreshold range widens significantly with ageing. Vasoconstriction and shivering '
'thresholds decrease; sweating threshold increases. Subcutaneous fat loss, reduced muscle mass, and poor '
'peripheral vasoconstriction all contribute to rapid perioperative hypothermia.', BODY))
story.extend(make_box('Thermoregulation Implications', [
'Hypothermia develops faster and is more severe in the elderly; active warming is mandatory throughout.',
'Consequences of hypothermia: cardiac arrhythmias, coagulopathy, delayed drug metabolism, prolonged awakening, surgical site infection.',
'Active warming: forced-air warming blanket, IV fluid warming, theatre temperature >/=21 degrees C.',
'Monitor core temperature: nasopharyngeal or oesophageal (gold standard under GA).',
'Shivering treatment: meperidine 12.5-25 mg IV (use cautiously; serotonin syndrome risk); also clonidine 75 mcg IV.',
]))
# ── 8. PHARMACOLOGY ────────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('8. Pharmacokinetic & Pharmacodynamic Changes'))
story.append(Paragraph(
'Ageing produces both pharmacokinetic (PK) and pharmacodynamic (PD) changes. The principal PD change is a '
'<b>reduced anaesthetic requirement (reduced MAC)</b>. PK changes result from altered body composition, '
'reduced plasma protein binding, and reduced renal and hepatic clearance. Wide inter-individual variability '
'means all doses should be titrated to effect.', BODY))
story.append(Paragraph('Pharmacokinetic Changes', H2))
story.extend(make_table(
['PK Parameter', 'Change in Elderly', 'Drugs Most Affected'],
[
['Vd - hydrophilic drugs', '↓ (↓ TBW, ↓ lean mass)', 'Morphine, neostigmine, aminoglycosides - ↑ peak levels'],
['Vd - lipophilic drugs', '↑ (↑ % body fat)', 'Fentanyl, diazepam, thiopental - prolonged t1/2'],
['Plasma protein binding', '↓ (↓ albumin)', 'Propofol, fentanyl, lidocaine - ↑ free fraction'],
['Hepatic clearance (high extraction)', '↓ (↓ hepatic blood flow)', 'Lidocaine, propofol, opioids - ↑ plasma levels'],
['Hepatic clearance (low extraction)', '↓ (↓ CYP activity, ↓ liver mass)', 'Diazepam, warfarin, theophylline'],
['Renal clearance', '↓ (↓ GFR)', 'Morphine-6-glucuronide, neostigmine, rocuronium'],
['Elimination half-life (t1/2 beta)', '↑ for many drugs', 'Longer duration; accumulation with repeat dosing'],
],
col_widths=[4.5*cm, 4.5*cm, CONTENT_W - 9*cm]
))
story.append(Paragraph('Minimum Alveolar Concentration (MAC)', H2))
story.append(Paragraph(
'MAC decreases by approximately <b>6% per decade</b> after the age of 40 years. This is the most important '
'pharmacodynamic change for inhalational anaesthesia. Age-adjusted MAC can be estimated as: '
'MAC(age) = MAC(40 yr) x [1 - 0.06 x (age - 40)/10]. For sevoflurane (MAC ~2.0% at age 40): '
'at age 60 = ~1.7%, at age 80 = ~1.4%. Always use end-tidal agent concentration (ETAC) monitoring.', BODY))
story.append(Paragraph('Individual Drug Dosing Adjustments', H2))
story.extend(make_table(
['Drug', 'Change in Elderly', 'Recommended Adjustment'],
[
['Propofol', '↓ dose requirement; altered PK (↓ clearance, ↑ brain sensitivity)', 'Reduce induction to 1.0-1.5 mg/kg; titrate slowly; use TCI with age-corrected target'],
['Etomidate', '↓ dose requirement; relatively stable cardiovascular profile', 'Preferred for haemodynamically compromised; reduce dose by ~30%'],
['Thiopental', 'Largely superseded; ↑ Vd; slow redistribution; ↑ sensitivity', 'If used: reduce to 2-3 mg/kg; avoid rapid bolus'],
['Ketamine', 'Useful cardiovascular stimulant; may precipitate delirium', 'Low dose 0.5-1 mg/kg; monitor for emergence phenomena'],
['Benzodiazepines', '↑ Vd (lipophilic); ↓ clearance; ↑ CNS sensitivity; prolonged t1/2', 'Avoid long-acting agents; if midazolam needed: reduce dose by 50%'],
['Morphine', '↑ CNS sensitivity; ↓ renal clearance of M-6-G active metabolite', 'Reduce by 30-50%; titrate to effect; monitor for respiratory depression'],
['Fentanyl', '↑ Vd; ↑ CNS sensitivity; prolonged t1/2', 'Reduce doses; accumulates with infusions'],
['Remifentanil', 'PK unchanged (ester hydrolysis); PD: ↑ sensitivity', 'Reduce infusion rate by 50%; useful in elderly - predictable offset'],
['Succinylcholine', '↓ pseudocholinesterase slightly; unchanged NMJ sensitivity', 'Standard dose 1.5 mg/kg; safe for RSI; no increased hyperkalaemia risk'],
['Rocuronium', '↓ Renal/hepatic clearance - prolonged effect', 'Standard intubating dose 0.6-1.2 mg/kg; monitor TOF; sugammadex preferred for reversal'],
['Vecuronium', '↓ Hepatic clearance - up to 2x prolonged effect', 'Reduce maintenance doses; monitor TOF carefully'],
['Atracurium/Cisatracurium', 'PK unchanged - Hofmann elimination + ester hydrolysis', 'Preferred NDMR in elderly; organ-independent elimination; predictable'],
['Neostigmine', '↓ Renal clearance - prolonged effect; bradycardia risk', 'Lower doses adequate; TOF monitoring; sugammadex strongly preferred'],
['Sugammadex', 'Renal excretion; ↓ GFR may slow excretion', 'Generally safe; excellent complete reversal; check eGFR for severe CKD'],
['Local anaesthetics (neuraxial)', '↓ Protein binding; ↓ clearance; ↓ LA requirement in CNS', 'Reduce spinal dose by 20-30%; smaller epidural top-ups; increased LAST risk'],
['Inhalational agents', 'MAC ↓ 6%/decade; faster inhalational induction', 'Use age-adjusted MAC; use ETAC monitoring; beware overdose'],
],
col_widths=[4*cm, 5*cm, CONTENT_W - 9*cm]
))
# ── 9. PREOPERATIVE ────────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('9. Preoperative Assessment of the Geriatric Patient'))
story.append(Paragraph('Comprehensive Geriatric Assessment (CGA)', H2))
story.append(Paragraph(
'The American College of Surgeons and American Geriatrics Society recommend a Comprehensive Geriatric '
'Assessment (CGA) for all patients aged 65 or above undergoing elective surgery. CGA evaluates domains '
'beyond standard medical history and enables identification of modifiable risk factors.', BODY))
story.extend(make_table(
['Domain', 'Assessment Tool', 'Anaesthetic Relevance'],
[
['Cognitive function', 'MMSE, Montreal Cognitive Assessment (MoCA)', 'Risk stratification for POCD/delirium; consent capacity'],
['Functional status', 'Activities of Daily Living (ADL), Instrumental ADL', 'Predicts postoperative independence; rehabilitation needs'],
['Nutritional status', 'Serum albumin, body weight, Mini Nutritional Assessment', '↑ Wound complications; altered drug metabolism'],
['Frailty', 'Clinical Frailty Scale (1-9), Fried Frailty Phenotype, FRAIL questionnaire', 'Better predictor of mortality than ASA alone'],
['Polypharmacy review', 'Beers Criteria, STOPP/START tool', 'Drug interactions; preoperative optimisation'],
['Cardiopulmonary reserve', 'Duke Activity Status Index, 4 MET threshold, CPET', 'Risk stratification; guide for monitoring level'],
['Mood/depression', 'Geriatric Depression Scale (GDS)', 'Depression ↑ POCD/delirium risk'],
['Sensory impairment', 'Vision, hearing, communication assessment', 'Communication strategy in perioperative period'],
['Social support', 'Availability of carer, home environment', 'Discharge planning; rehabilitation capacity'],
],
col_widths=[3.5*cm, 5*cm, CONTENT_W - 8.5*cm]
))
story.append(Paragraph('Frailty', H2))
story.append(Paragraph(
'Frailty is a state of increased vulnerability to physiological stressors. The <b>Fried Frailty Phenotype</b> '
'identifies frailty by the presence of 3 or more of 5 criteria: unintentional weight loss, self-reported '
'exhaustion, low grip strength, slow walking speed, and low physical activity. Patients with 1-2 criteria '
'are "pre-frail". Frailty is associated with 2-3 fold increased postoperative complications, ICU admission, '
'and 30-day mortality. Prehabilitation (exercise + nutrition + comorbidity optimisation) can improve '
'functional reserve before elective surgery.', BODY))
story.append(Paragraph('Preoperative Investigations', H2))
story.extend(make_table(
['Investigation', 'Recommended For'],
[
['Electrolytes, serum creatinine, BUN, eGFR', 'All geriatric surgical patients'],
['Coagulation (PT, PTT, INR, platelets)', 'All geriatric surgical patients'],
['ECG (12-lead)', 'All geriatric surgical patients (↑ silent CAD, arrhythmias)'],
['Echocardiography', 'Suspected diastolic/systolic dysfunction, murmur, poor functional capacity'],
['Liver function tests + albumin', 'All geriatric patients; especially major surgery'],
['Fasting glucose / HbA1c', 'All geriatric patients (↑ DM prevalence)'],
['TSH, free T4', 'All geriatric patients (↑ subclinical hypothyroidism)'],
['Haemoglobin / FBC', 'Anticipated blood loss; suspected anaemia'],
['Chest X-ray', 'Symptomatic respiratory disease; major surgery'],
['PFTs / Spirometry', 'Lung surgery, severe COPD, ambiguous symptoms'],
['CPET', 'High-risk surgery; equivocal functional assessment'],
],
col_widths=[6*cm, CONTENT_W - 6*cm]
))
# ── 10. INTRAOPERATIVE ─────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('10. Intraoperative Management'))
story.append(Paragraph('Monitoring', H2))
story.extend(make_box('Monitoring Recommendations in Elderly', [
'Standard monitoring: ECG (5-lead), SpO2, NIBP, ETCO2, temperature (core).',
'Arterial line: major surgery, haemodynamic instability, vasopressors, beat-to-beat BP important.',
'Central venous access: major haemorrhage risk, vasopressors needed, poor peripheral access.',
'Processed EEG (BIS/Entropy): recommended to guide depth of anaesthesia and avoid burst suppression.',
'Neuromuscular monitoring (TOF): mandatory when NMBDs used - never extubate without confirmed reversal.',
'Cardiac output monitoring (oesophageal Doppler, PiCCO, LiDCO): major vascular/cardiac surgery.',
'Temperature monitoring: nasopharyngeal or oesophageal gold standard under GA.',
'Urinary catheter: major/prolonged surgery; hourly urine output as volume guide.',
]))
story.append(Paragraph('Airway Management', H2))
story.append(Paragraph(
'Geriatric patients present unique airway challenges due to anatomical and physiological changes:', BODY))
story.extend(make_box('Airway Considerations', [
'Decreased mouth opening (temporomandibular arthritis), reduced neck extension (cervical spondylosis).',
'Loose or absent teeth: dentures should be removed before induction; protect teeth during laryngoscopy.',
'Fragile mucosa and gums: gentle, atraumatic technique; risk of epistaxis with nasal airways.',
'Video laryngoscopy should be available as primary or backup airway device.',
'Tracheal calcification may stiffen trachea; smaller ETT sizes may be needed occasionally.',
'Modified RSI if aspiration risk: ↑ aspiration risk due to ↓ lower oesophageal sphincter tone.',
'Pre-oxygenation is critical: extend to 3-5 min (or 8 vital capacity breaths).',
]))
story.append(Paragraph('Induction & Maintenance', H2))
story.extend(make_table(
['Phase', 'Recommendations'],
[
['Induction', 'Slow IV induction; titrate to effect; reduce doses 30-50%; TCI propofol with age-corrected target; etomidate in haemodynamically unstable; avoid rapid boluses'],
['Maintenance - volatile', 'Age-adjusted MAC; ETAC monitoring; sevoflurane preferred; avoid deep anaesthesia (target BIS 40-60)'],
['Maintenance - TIVA', 'TCI propofol + remifentanil (reduce remifentanil by 50%); BIS monitoring mandatory; no ETAC so rely on processed EEG'],
['Ventilation', 'Lung-protective: TV 6-8 mL/kg IBW, PEEP 5-8 cmH2O, RR to normocapnia, recruitment manoeuvres PRN'],
['Fluid management', 'Goal-directed therapy; avoid hypovolaemia (organ ischaemia) AND fluid overload (pulmonary oedema from diastolic dysfunction); warmed IV fluids'],
['NMBD reversal', 'Sugammadex preferred for rocuronium/vecuronium (confirms TOF ratio >0.9); neostigmine acceptable with TOF >/=2 twitches'],
['Emergence', 'Smooth emergence; lidocaine 1-1.5 mg/kg IV to attenuate cough reflex; extubate awake; avoid straining (↑ IOP, ICP, cardiac stress)'],
],
col_widths=[3.5*cm, CONTENT_W - 3.5*cm]
))
story.extend(make_box('TIVA vs. Volatile Anaesthesia in Elderly', [
'No definitive evidence that either technique prevents POCD when appropriate depth monitoring is used.',
'Volatile agents: well-studied, low cost, easy monitoring (ETAC), possible ischaemic preconditioning.',
'TIVA (propofol + remifentanil): useful where ETAC unreliable (CPB, MRI); antiemetic effect of propofol.',
'Depth of anaesthesia monitoring (BIS/Entropy) is recommended with both techniques.',
'Desflurane: associated with airway irritation and climate concerns; prefer sevoflurane or isoflurane.',
'Remifentanil TCI: predictable offset regardless of infusion duration - ideal for elderly.',
], bg=HexColor('#F3E5F5'), border=HexColor('#7B1FA2')))
# ── 11. POSTOPERATIVE ─────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('11. Postoperative Considerations'))
story.extend(make_table(
['Issue', 'Management'],
[
['Postoperative Delirium (POD)', 'Non-pharmacological: reorientation, family presence, hearing aids/glasses, avoid restraints, early mobilisation, sleep hygiene. Pharmacological (agitated/unsafe only): haloperidol 0.25-0.5 mg IV/IM; avoid benzodiazepines (worsen delirium)'],
['Pain management', 'Multimodal analgesia: paracetamol (safe, regular), regional techniques, low-dose NSAIDs (with caution - renal risk, short duration), opioids titrated IV then oral; reduce opioid doses 30-50%'],
['Hypothermia', 'Continue forced-air warming; monitor until core temp >36°C; shivering: meperidine 12.5 mg IV or clonidine 75 mcg IV'],
['Respiratory complications', 'SpO2 monitoring; supplemental O2; incentive spirometry; early physiotherapy; CPAP if OSA/respiratory failure'],
['Fluid/electrolyte balance', 'Restrict IV fluids post-op (switch to oral early); monitor electrolytes (hypo/hypernatraemia common)'],
['PONV', 'High-risk: use TIVA, ondansetron + dexamethasone combination; avoid N2O if high risk'],
['Urinary retention', 'Anticholinergic drugs worsen retention; monitor urine output; catheterise if needed; alpha-blockers for BPH'],
['DVT/PE prophylaxis', 'LMWH/UFH + mechanical compression (pneumatic stockings); early mobilisation essential'],
['Pressure injury prevention', 'Regular repositioning; pressure-relieving mattress; nutritional support'],
['Discharge planning', 'Early PT/OT assessment; ensure safe home environment or rehabilitation facility; medication reconciliation (deprescribing)'],
],
col_widths=[4*cm, CONTENT_W - 4*cm]
))
# ── 12. REGIONAL ANAESTHESIA ──────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('12. Regional Anaesthesia in the Elderly'))
story.append(Paragraph(
'Regional anaesthesia (RA) is increasingly favoured in geriatric patients as it may reduce systemic drug '
'exposure and associated CNS side effects. Anatomical changes and altered physiology modify its conduct.', BODY))
story.extend(make_table(
['Technique', 'Age-Related Changes', 'Clinical Adjustments'],
[
['Spinal (intrathecal)', '↓ CSF volume, ↓ protein binding, ↑ nerve lipid solubility - ↑ block spread and intensity; faster onset; prolonged duration', 'Reduce dose by 20-30%; use isobaric or hypobaric solutions; slow position changes; treat hypotension promptly (phenylephrine/ephedrine)'],
['Epidural', 'Narrow intervertebral foramina, fibrosed space, calcified ligamentum flavum; reduced volume spreads more', 'Reduce top-up volumes 20-30%; test dose essential; air LOR may be difficult; ultrasound for identification'],
['Peripheral nerve blocks', 'Thinner epineurium - faster uptake; ↓ protein binding - ↑ free LA; prolonged block duration', 'Reduce LA volume; ultrasound guidance strongly recommended; observe for LAST'],
['Femoral/Adductor canal block', 'Useful for hip/knee surgery; reduces opioid requirement', 'Ultrasound guided; combine with sciatic if complete lower limb analgesia needed'],
['TAP block/rectus sheath', 'Abdominal surgery analgesia; reduces opioid use', 'Ultrasound guided; consider in all ERAS protocols'],
],
col_widths=[3.5*cm, 5*cm, CONTENT_W - 8.5*cm]
))
story.extend(make_box('Regional vs General Anaesthesia in Elderly - Evidence Summary', [
'Hip fracture: spinal anaesthesia associated with reduced 30-day mortality vs GA (REGAIN trial, NEJM 2021).',
'POCD: no definitive evidence that RA prevents POCD vs GA when BIS monitoring is used for GA.',
'Blood loss: neuraxial blocks reduce surgical blood loss by ~30% via hypotension and venous tone.',
'DVT/PE risk: neuraxial blocks reduce DVT/PE incidence in major orthopaedic surgery.',
'Epidural analgesia reduces post-thoracic surgery pulmonary complications.',
'LA systemic toxicity (LAST) risk is increased: use ultrasound, aspirate, use intralipid protocol.',
]))
# ── 13. SUMMARY TABLES ────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('13. Key Summary Tables'))
story.append(Paragraph('Table A: System-by-System Summary', H2))
story.extend(make_table(
['System', 'Key Age-Related Changes', 'Principal Anaesthetic Implication'],
[
['Cardiovascular', '↓ HR reserve, diastolic dysfunction, ↑ afterload, ↓ baroreceptors, prolonged circulation time', 'Slow induction; treat hypotension promptly; maintain sinus rhythm; haemodynamic monitoring'],
['Respiratory', '↓ FVC/FEV1, ↑ RV, CC>FRC, ↓ chemoreceptors, ↓ cough', 'Pre-oxygenate; PEEP; careful extubation; post-op O2; physiotherapy'],
['CNS', '↓ MAC, ↓ neurotransmitters, ↑ delirium risk', '↓ Drug doses 30-50%; BIS monitoring; avoid anticholinergics/BZD; delirium screening'],
['Renal', '↓ GFR, ↓ tubular function, ↑ AKI risk', 'Dose-adjust renally-cleared drugs; GFT; avoid NSAIDs/nephrotoxins'],
['Hepatic', '↓ Liver mass/blood flow, ↓ albumin, ↓ CYP450', 'Prolonged t1/2; ↑ free fraction of protein-bound drugs; dose reduce'],
['Musculoskeletal', 'Sarcopenia, ↑ fat%, osteoporosis, arthritis, cervical disease', 'Careful positioning; ↓ Vd water-soluble drugs; prolonged NDMR effects'],
['Thermoregulation', 'Impaired; rapid hypothermia', 'Active warming throughout; core temperature monitoring'],
['Pharmacology', '↓ MAC, ↑ sensitivity all agents, altered PK', 'Start low, go slow; titrate to effect; remifentanil/atracurium for predictability'],
],
col_widths=[3.5*cm, 6*cm, CONTENT_W - 9.5*cm]
))
story.append(Paragraph('Table B: Drug Dosing Adjustments in the Elderly', H2))
story.extend(make_table(
['Drug', 'Standard Adult Dose', 'Elderly Adjustment', 'Reason'],
[
['Propofol (induction)', '1.5-2.5 mg/kg', '1.0-1.5 mg/kg (titrate)', '↑ sensitivity, ↓ clearance'],
['Etomidate', '0.3 mg/kg', '0.15-0.2 mg/kg', '↑ CNS sensitivity'],
['Fentanyl', '1-3 mcg/kg', '0.5-1.5 mcg/kg', '↑ brain sensitivity, ↑ Vd'],
['Remifentanil (infusion)', '0.1-0.5 mcg/kg/min', '0.05-0.25 mcg/kg/min', 'PD sensitivity; normal PK'],
['Morphine', '0.1-0.15 mg/kg', '0.05-0.08 mg/kg', '↑ sensitivity, ↓ M6G clearance'],
['Midazolam', '0.05-0.1 mg/kg', '0.01-0.03 mg/kg', '↑ sensitivity, ↑ t1/2'],
['Rocuronium (intubation)', '0.6-1.2 mg/kg', '0.6 mg/kg; TOF monitoring essential', 'Prolonged effect; sugammadex for reversal'],
['Spinal bupivacaine', '2.5-3 mL of 0.5%', '1.5-2 mL of 0.5%', '↑ spread, ↑ sensitivity'],
['Sevoflurane MAC', '2.0% (age 40)', '1.4% (age 80)', '↓ MAC 6% per decade'],
],
col_widths=[4*cm, 3.5*cm, 4*cm, CONTENT_W - 11.5*cm]
))
story.append(Paragraph('Table C: High-Risk / Contraindicated Drugs in the Elderly', H2))
story.extend(make_table(
['Drug', 'Risk', 'Alternative'],
[
['Atropine (large doses)', 'Anticholinergic delirium, tachycardia, urinary retention', 'Glycopyrrolate (does not cross BBB)'],
['Scopolamine (hyoscine)', 'Profound anticholinergic delirium', 'Avoid; minimal dose for N&V only'],
['Meperidine (pethidine) as analgesic', 'Normeperidine accumulation - seizures; serotonin syndrome', 'Only 12.5 mg IV for shivering; avoid for analgesia'],
['Long-acting benzodiazepines (diazepam)', '↑ Vd, ↑ t1/2, prolonged sedation, delirium, falls risk', 'Midazolam in low dose if BZD absolutely necessary'],
['NSAIDs (indomethacin, ketorolac)', 'Acute kidney injury, GI bleed, fluid retention, ↑ BP', 'Paracetamol; COX-2 with caution; short course only'],
['Promethazine (first-gen antihistamine)', 'Anticholinergic delirium, oversedation', 'Ondansetron for PONV; avoid promethazine'],
['High-dose haloperidol', 'QT prolongation, extrapyramidal, NMS, arrhythmia', 'Low dose 0.25-0.5 mg for delirium only; monitor QTc'],
],
col_widths=[4.5*cm, 5.5*cm, CONTENT_W - 10*cm]
))
# ── 14. REFERENCES ────────────────────────────────────────────────────────────
story.append(PageBreak())
story.extend(make_h1('14. References & Further Reading'))
refs = [
'Morgan GE, Mikhail MS, Murray MJ. Clinical Anesthesiology, 7th edition. McGraw-Hill, 2022. Chapter 43: Geriatric Anesthesia.',
"Miller RD, Cohen NH, Eriksson LI, et al. Miller's Anesthesia, 10th edition. Elsevier, 2025. Chapter 11: Neuromuscular Physiology and Pharmacology.",
'Barash PG, Cullen BF, Stoelting RK, et al. Clinical Anesthesia, 9th edition. Wolters Kluwer, 2022.',
'Chow W, Rosenthal R, Merkow R, et al. Optimal preoperative assessment of the geriatric surgical patient. J Am Coll Surg. 2012;215(4):453-466.',
'Fried LP, Tangen CM, Walston J, et al. Frailty in older adults: evidence for a phenotype. J Gerontol A Biol Sci Med Sci. 2001;56:M146-M156.',
'Evered L, Silbert B, Knopman DS, et al. Recommendations for the nomenclature of cognitive change associated with anaesthesia and surgery - 2018. Br J Anaesth. 2018;121:1005-1012.',
'Neuman MD, Feng R, Carson JL, et al. Spinal anesthesia or general anesthesia for hip surgery in older adults. N Engl J Med. 2021;385(22):2025-2035.',
'Monk TG, Price CC. Postoperative cognitive disorders. Curr Opin Crit Care. 2011;17(4):376-381.',
'Inouye SK, Bogardus ST Jr, et al. A multicomponent intervention to prevent delirium in hospitalised older patients. N Engl J Med. 1999;340:669-676.',
'Fleisher LA, et al. ACC/AHA 2014 Guideline on Perioperative Cardiovascular Evaluation. J Am Coll Cardiol. 2014;64(22):e77-e137.',
]
for i, ref in enumerate(refs, 1):
story.append(Paragraph(f'{i}. {ref}', BODY))
story.append(Spacer(1, 3))
# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"SUCCESS: {OUTPUT}")
python3 /tmp/workspace/geriatric-anaesthesia/build.py 2>&1
ls -lh /tmp/workspace/geriatric-anaesthesia/Geriatric_Anaesthesia.pdf
Geriatric Anaesthesia
PDF Document · PDF
| Section | Coverage |
|---|---|
| 1 | Introduction & Epidemiology - definitions, frailty, principles |
| 2 | Cardiovascular - structural changes, diastolic dysfunction, implications |
| 3 | Respiratory - lung volumes, CC vs FRC, gas exchange, implications |
| 4 | CNS - brain changes, MAC reduction, POD/POCD/NCD classification |
| 5 | Renal & Hepatic - GFR decline, protein binding, clearance |
| 6 | Musculoskeletal & Body Composition - sarcopenia, NMJ changes |
| 7 | Endocrine & Thermoregulation - DM, hypothermia management |
| 8 | Pharmacology - full PK/PD changes, MAC table by age, drug-by-drug dose adjustments |
| 9 | Preoperative Assessment - CGA, frailty, investigations checklist |
| 10 | Intraoperative Management - monitoring, airway, TIVA vs volatile |
| 11 | Postoperative - delirium, pain, hypothermia, DVT, discharge |
| 12 | Regional Anaesthesia - spinal, epidural, PNBs, evidence summary |
| 13 | Summary Tables A/B/C - system summary, dose adjustments, high-risk drugs |
| 14 | References - Morgan & Mikhail 7e, Miller's 10e, Barash 9e, REGAIN trial, Evered 2018 nomenclature |