Create a PowerPoint presentation on: PREOPERATIVE ANAESTHETIC EVALUATION Audience: MBBS undergraduate medical students Teaching level: Easy to understand + clinically useful Presenter: Anaesthesia faculty/PG teaching MBBS students. MAIN OBJECTIVE By the end of this lecture, an MBBS student should be able to: 1. Explain what preoperative anaesthetic evaluation is and why it is important. 2. Systematically take a relevant preoperative history. 3. Perform a focused general and airway examination. 4. Identify important comorbidities and anaesthetic risk factors. 5. Understand the important anaesthesia-related scores and classifications. 6. Know which investigations are required and when they are indicated. 7. Identify patients who need optimization before surgery. 8. Understand fasting instructions and common medication considerations. 9. Recognize red flags that increase perioperative risk. 10. Understand the basic process from patient → assessment → optimization → risk stratification → anaesthesia plan → surgery. The students should finish the lecture feeling: “I now know exactly how to approach a patient before anaesthesia.” ⸻ STYLE OF THE PPT DO NOT make this a boring text-heavy academic presentation. Make it: * Visually interesting * Clean * Modern * Medical/clinical looking * Easy to teach from * Easy for MBBS students to revise later * Point-wise * Structured * Interactive where appropriate Use: * Boxes * Tables * Flowcharts * Algorithms * Decision trees * Comparison tables * Checklists * Highlighted “RED FLAG” boxes * “Remember” boxes * Clinical examples * Simple diagrams * Relevant medical illustrations/images wherever useful Avoid huge paragraphs. Prefer: 1 concept → 1 visual → 3–6 key points Use concise wording on slides but provide enough detail for teaching. ⸻ IMPORTANT DESIGN REQUIREMENT The first slide should ONLY have: PREOPERATIVE ANAESTHETIC EVALUATION Subtitle: A systematic approach to assessing the surgical patient Do NOT write: “Visual guide for MBBS students” or anything similar on the first slide. Do not overcrowd slides. Use a consistent colour palette and professional typography. Use diagrams and icons where they genuinely improve understanding. ⸻ SUGGESTED STRUCTURE Create approximately 30–40 slides, depending on how much content is needed. SECTION 1 — INTRODUCTION Slide 1 Title slide. Slide 2 — What is Preoperative Anaesthetic Evaluation? Simple definition. Show a visual pathway: PATIENT ↓ HISTORY ↓ EXAMINATION ↓ INVESTIGATIONS ↓ RISK ASSESSMENT ↓ OPTIMIZATION ↓ ANAESTHETIC PLAN ↓ SURGERY Slide 3 — Why do we evaluate the patient? Use 4–6 boxes: * Identify comorbidities * Assess anaesthetic risk * Predict difficult airway * Optimize medical conditions * Plan investigations * Plan anaesthesia and postoperative care Add a simple clinical scenario. ⸻ SECTION 2 — SYSTEMATIC APPROACH Slide 4 — The “ABCDE” / systematic approach to preoperative assessment Create a memorable framework for students. For example: A — Airway B — Breathing C — Circulation D — Drugs/Diseases E — Examination/Evaluation If another framework is more appropriate, use a clinically accepted approach. Make it visual. Slide 5 — What history should I ask? Create a large checklist divided into: 1. Presenting illness 2. Previous anaesthesia 3. Medical illnesses 4. Surgical history 5. Drug history 6. Allergy history 7. Personal history 8. Family history 9. Functional capacity 10. Relevant investigations ⸻ SECTION 3 — HISTORY IN DETAIL Make separate, visually organized slides. Slide — Previous Anaesthetic History Include: * Previous anaesthesia * Difficult intubation * Difficult ventilation * Difficult regional anaesthesia * Awareness * PONV * Allergy * Malignant hyperthermia * ICU admission * Unexpected complications * Previous transfusion Highlight: “Ask: What happened during the last anaesthesia?” Slide — Medical Comorbidities Cover important systems: Cardiovascular: * Hypertension * IHD * Heart failure * Arrhythmias * Valvular disease Respiratory: * Asthma * COPD * OSA * Recent respiratory infection Endocrine/metabolic: * Diabetes * Thyroid disease * Obesity Renal: * CKD * Dialysis Neurological: * Stroke * Seizures * Parkinsonism Others: * Liver disease * Anaemia * Bleeding disorders * Pregnancy * Malignancy Use a body-system diagram if possible. Slide — Drug History Include: * Antihypertensives * Antidiabetics/insulin * Anticoagulants * Antiplatelets * Steroids * Antiepileptics * Cardiac drugs * Herbal medications Clearly explain: Which medications may need continuation, withholding, dose adjustment or special planning. Do NOT give unsafe blanket instructions. Clearly mention that perioperative medication management depends on the drug, indication, surgery and patient condition. Slide — Allergy History Differentiate: * Drug allergy * Food allergy * Latex allergy * Previous reaction Explain the difference between: true allergy vs side effect/intolerance Slide — Functional Capacity Explain METs in very simple language. Use examples: <4 METs → poor functional capacity ≥4 METs → generally better functional capacity Give examples of activities: * Walking * Climbing stairs * Heavy housework * Running Explain why functional capacity matters. ⸻ SECTION 4 — AIRWAY ASSESSMENT This is an important section. Slide — Why assess the airway? Explain: Difficult airway → difficult ventilation/intubation → increased risk Slide — Airway Assessment Checklist Include: * Mouth opening * Mallampati * Thyromental distance * Neck movement * Dentition * Jaw protrusion * Facial abnormalities * Beard * Obesity * Previous difficult airway Slide — Mallampati Classification Create a clear visual diagram showing: Class I Class II Class III Class IV Use actual appropriate medical illustrations/images. Do not rely only on text. Slide — Other Airway Predictors Use a table: Test | What it assesses | What suggests difficulty Include: * Mouth opening * Thyromental distance * Upper Lip Bite Test * Neck movement * Dentition * Mallampati Mention LEMON as an airway assessment mnemonic and explain each component simply. ⸻ SECTION 5 — PHYSICAL EXAMINATION Slide — General Examination Checklist: * Pulse * BP * Respiratory rate * SpO₂ * Temperature * Pallor * Icterus * Cyanosis * Clubbing * Oedema * Hydration * Nutritional status * BMI Slide — Cardiovascular Examination Explain what to look for and why. Slide — Respiratory Examination Include: * Airway/chest examination * Breath sounds * Wheeze * Crepitations * Respiratory effort * SpO₂ Slide — Other Relevant Examination Neurological, abdominal, spine, vascular access, regional anaesthesia site etc., depending on the planned procedure. ⸻ SECTION 6 — IMPORTANT SCORES & CLASSIFICATIONS This section should be highly visual. Create separate slides or comparison tables for: ASA Physical Status Classification Explain: ASA I ASA II ASA III ASA IV ASA V ASA VI Include simple clinical examples for each. Clearly mention the role of “E” for emergency. Make a memorable table. Mallampati Classification Already covered in airway section, but include in the important scores summary if appropriate. NYHA Functional Classification Class I–IV with simple examples. METs / Functional Capacity Explain simply. STOP-BANG Explain each component: S — Snoring T — Tiredness O — Observed apnoea P — Pressure/BP B — BMI A — Age N — Neck circumference G — Gender Include scoring and interpretation in a simple table. RCRI / Revised Cardiac Risk Index Explain: * High-risk surgery * Ischemic heart disease * Congestive heart failure * Cerebrovascular disease * Diabetes requiring insulin * Renal dysfunction Keep interpretation simple and clinically relevant. Other relevant scores Include only scores/classifications that are genuinely useful at MBBS level. Do not overload the presentation with obscure scores. ⸻ SECTION 7 — INVESTIGATIONS Slide — Should every patient get every investigation? Start with: NO. Then explain: “Investigations should be guided by history, examination, age, comorbidities and type of surgery.” Slide — Common Investigations Create a table: Investigation | When useful | Why? Include: * CBC * Blood glucose/HbA1c * Renal function/electrolytes * LFT * ECG * Chest X-ray * Coagulation profile * Pregnancy test where appropriate * Blood grouping/crossmatch * Other tests when clinically indicated Avoid suggesting routine testing for every patient. Slide — When should ECG be considered? Explain using simple clinical logic rather than rigid memorization. Slide — When is Chest X-ray useful? Again, explain indication-based testing. ⸻ SECTION 8 — CARDIOVASCULAR RISK Slide — Cardiac Evaluation Explain: * Symptoms * Exercise tolerance * Previous MI * Angina * Heart failure * Arrhythmia * Valvular disease * Previous cardiac interventions Slide — RED FLAGS Use a visually prominent red-flag box. Examples: * Active cardiac symptoms * Decompensated heart failure * Significant unstable arrhythmia * Severe symptomatic valvular disease * Recent major cardiac event Explain: “Optimize/evaluate further before elective surgery when appropriate.” Do not make unsafe absolute statements. ⸻ SECTION 9 — RESPIRATORY RISK Include: * Asthma * COPD * OSA * Smoking * Recent respiratory infection * Baseline SpO₂ * Exercise tolerance Slide — OSA Explain STOP-BANG and perioperative relevance. Slide — Smoking Explain why smoking increases: * Airway reactivity * Secretions * Pulmonary complications * Cardiovascular risk ⸻ SECTION 10 — COMMON SPECIAL SITUATIONS Include concise but useful slides on: Diabetes * Glucose control * Hypoglycaemia risk * Medication considerations * End-organ disease Hypertension * Severity * End-organ damage * Overall cardiovascular risk Obesity * Difficult airway * OSA * Respiratory risk * Drug dosing considerations * Positioning Anaemia * Identify cause * Severity * Expected blood loss * Need for optimization Renal disease * Electrolytes * Fluid status * Dialysis * Drug considerations Liver disease * Coagulation * Albumin * Drug metabolism * Portal hypertension Pregnancy * Pregnancy status * Aspiration considerations * Airway * Fetal considerations where relevant ⸻ SECTION 11 — FASTING Slide — Preoperative Fasting Create a simple table showing commonly accepted fasting intervals for: * Clear liquids * Breast milk * Infant formula/non-human milk * Light meal * Fatty meal/solid food Use current accepted guideline recommendations. Clearly distinguish between: “minimum fasting interval” and individualized clinical decisions. ⸻ SECTION 12 — PREOPERATIVE OPTIMIZATION Slide — What does “optimization” mean? Show: IDENTIFY PROBLEM ↓ ASSESS SEVERITY ↓ TREAT / OPTIMIZE ↓ REASSESS ↓ PROCEED WHEN APPROPRIATE Slide — Examples of Optimization * Correct significant anaemia * Control uncontrolled medical conditions * Treat active infection * Optimize asthma/COPD * Optimize diabetes * Address electrolyte abnormalities * Manage anticoagulants appropriately * Smoking cessation * Nutritional optimization when relevant ⸻ SECTION 13 — RISK STRATIFICATION Explain that risk depends on: PATIENT FACTORS + SURGERY FACTORS + ANAESTHESIA FACTORS + POSTOPERATIVE FACTORS Create a visual matrix. Discuss: * Patient comorbidities * Type and urgency of surgery * Expected blood loss * Functional capacity * Airway * Need for postoperative ICU/HDU * Overall ASA status ⸻ SECTION 14 — CONSENT & COMMUNICATION Slide — What should be discussed? * Nature of anaesthesia * Planned technique where appropriate * Common risks * Serious risks when relevant * Blood transfusion where relevant * Postoperative ventilation/ICU possibility when relevant * Alternatives where applicable Emphasize: Good preoperative evaluation = good communication + documentation. ⸻ SECTION 15 — THE FINAL PREOPERATIVE CHECKLIST Create a visually attractive checklist titled: “BEFORE I SEND THE PATIENT TO OT…” Checklist: ☐ Identity confirmed ☐ Diagnosis/procedure confirmed ☐ Consent checked ☐ Allergies checked ☐ Previous anaesthesia history ☐ Airway assessed ☐ Comorbidities reviewed ☐ Medications reviewed ☐ Investigations reviewed ☐ Blood availability assessed if needed ☐ Fasting confirmed ☐ Relevant optimization completed ☐ ASA status assigned ☐ Anaesthetic plan formulated ☐ Postoperative plan considered Make this one of the most memorable slides. ⸻ SECTION 16 — CASE-BASED LEARNING Include 3–4 short cases. Case 1 Young healthy patient for elective surgery. Ask: “What will you ask and examine?” Case 2 Elderly patient with hypertension, diabetes and poor exercise tolerance. Ask: “What additional things do you need to evaluate?” Case 3 Obese patient with snoring and daytime sleepiness. Ask: “What is the concern?” → OSA / difficult airway / respiratory risk. Case 4 Patient with previous difficult intubation. Ask: “What will you do differently?” Use answer-reveal style: Think → Answer → Why? ⸻ FINAL SLIDES Slide — One-Minute Revision Create a single visual summary: HISTORY ↓ EXAMINATION ↓ AIRWAY ↓ COMORBIDITIES ↓ INVESTIGATIONS ↓ RISK SCORES ↓ OPTIMIZATION ↓ FASTING/MEDICATIONS ↓ CONSENT ↓ ANAESTHETIC PLAN Final Slide — TAKE HOME MESSAGE Use 5–7 memorable points: 1. Every patient needs a systematic assessment. 2. History often tells you where the major risks are. 3. Never forget the airway. 4. Assess functional capacity and comorbidities. 5. Investigations should be clinically indicated. 6. Optimize correctable problems before elective surgery. 7. Always have a clear anaesthetic and postoperative plan. ⸻ VISUAL REQUIREMENTS Use medical illustrations/images wherever they genuinely improve understanding, especially for: * Mallampati classification * Airway assessment * LEMON * STOP-BANG * Physical examination * ASA classification * Functional capacity/METs * Fasting * Preoperative workflow For diagrams such as Mallampati, use clear medical illustrations, not decorative stock photographs. Do not use random generic hospital/doctor stock photos just to fill space. Every image should have a teaching purpose. ⸻ TABLES & FLOWCHARTS Use tables wherever comparison is useful. Examples: ASA I–VI comparison Mallampati I–IV NYHA I–IV STOP-BANG RCRI Investigation indications Fasting times Airway assessment tests Use flowcharts for: Preoperative evaluation pathway Optimization pathway Airway assessment Risk stratification Final OT checklist ⸻ TEACHING FEATURES Add small callout boxes labelled: 💡 REMEMBER ⚠️ RED FLAG 🩺 CLINICAL PEARL 📌 EXAM POINT ❓ ASK YOURSELF Use these sparingly. Include occasional questions such as: “Would you postpone surgery?” “Does this patient need an ECG?” “What is the most important airway concern?” This should make the lecture interactive rather than passive. ⸻ ACCURACY REQUIREMENTS Use current, reputable anaesthesia/perioperative guidelines and standard textbooks. Where recommendations can vary by guideline or patient context, do not present them as absolute rules. Particularly verify: * ASA Physical Status * Fasting recommendations * STOP-BANG * RCRI * Perioperative medication principles * Cardiac risk assessment * Indications for investigations Add a final References section with reputable sources. Prefer sources such as: * ASA * ESAIC * AHA/ACC * NICE * Standard anaesthesia textbooks * Other recognized professional guidelines Do not cite random blogs or low-quality websites. ⸻ IMPORTANT CONTENT RULE The PPT should be detailed enough to teach from but simple enough for an MBBS student to understand. Do not turn it into a postgraduate-level anaesthesia lecture. Avoid unnecessary pharmacology, advanced airway algorithms, obscure scoring systems and excessive guideline minutiae. Focus on: WHAT TO ASK → WHAT TO EXAMINE → WHAT TO LOOK FOR → WHAT IT MEANS → WHAT TO DO NEXT That is the central teaching philosophy of this presentation. ⸻ OUTPUT REQUIREMENTS Generate the actual .pptx PowerPoint file, not merely an outline. Make it visually polished and presentation-ready. Use approximately 30–40 slides. Use readable font sizes. Avoid overcrowding. Maintain consistent formatting throughout. Every slide should have a clear takeaway. Include speaker notes where useful, especially for: * Important explanations * Clinical pearls * Things the presenter should emphasize verbally Before finalizing, check the entire PPT for: * Spelling * Medical accuracy * Duplicate information * Overcrowded slides * Inconsistent formatting * Incorrect score interpretation * Incorrect fasting recommendations * Missing important topics The final product should look like a well-designed anaesthesia teaching lecture, not a copied textbook chapter. I dont want chapter 16
Choose the first module for detailed development.
preoperative evaluation AND anesthesia
ASA preoperative fasting guidelines 2023 clear liquids light meal
2024 ACC AHA guideline perioperative cardiovascular management noncardiac surgery preoperative evaluation
~/
Mallampati classification classes I II III IV clear airway assessment medical illustration
airway examination thyromental distance mouth opening upper lip bite test medical illustration
~/
mkdir -p "/tmp/workspace/preoperative-anaesthetic-evaluation/src" "/tmp/workspace/preoperative-anaesthetic-evaluation/output" && python -c "import pptx; print('python-pptx available')"
~/preoperative-anaesthetic-evaluation/src/build_deck.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.shapes import MSO_SHAPE
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.dml.color import RGBColor
from pptx.enum.dml import MSO_THEME_COLOR
prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5)
blank=prs.slide_layouts[6]
# Palette
NAVY='123047'; TEAL='007C83'; MINT='DFF4F1'; SKY='EAF4FA'; INK='18313F'; MUTED='5F7480'; WHITE='FFFFFF'; RED='C93B4A'; PALE_RED='FDECEE'; GOLD='E6A73A'; PALE_GOLD='FFF5DD'; LINE='C8D8DE'; PALE='F6FAFB'
def rgb(h): return RGBColor.from_string(h)
def shape(s,x,y,w,h,fill=WHITE,line=None,r=MSO_SHAPE.ROUNDED_RECTANGLE):
sh=s.shapes.add_shape(r,Inches(x),Inches(y),Inches(w),Inches(h)); sh.fill.solid(); sh.fill.fore_color.rgb=rgb(fill); sh.line.color.rgb=rgb(line or fill); return sh
def text(s,tx,x,y,w,h,size=18,color=INK,bold=False,align=PP_ALIGN.LEFT, font='Aptos', valign=MSO_ANCHOR.MIDDLE):
tb=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=tb.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=Inches(.08); tf.margin_right=Inches(.08); tf.margin_top=Inches(.03); tf.margin_bottom=Inches(.03); tf.vertical_anchor=valign
p=tf.paragraphs[0]; p.alignment=align; r=p.add_run(); r.text=tx; r.font.name=font; r.font.size=Pt(size); r.font.bold=bold; r.font.color.rgb=rgb(color); return tb
def add_notes(slide, note):
try: slide.notes_slide.notes_text_frame.text=note
except: pass
def base(title, section='', n=''):
s=prs.slides.add_slide(blank); shape(s,0,0,13.333,.16,TEAL,TEAL,MSO_SHAPE.RECTANGLE)
if section: text(s,section.upper(),.55,.29,4,.28,10,TEAL,True)
text(s,title,.55,.60,12.1,.55,25,NAVY,True)
shape(s,.55,1.24,12.2,.018,LINE,LINE,MSO_SHAPE.RECTANGLE)
text(s,n or str(len(prs.slides)),12.15,7.08,.55,.18,9,MUTED,False,PP_ALIGN.RIGHT)
return s
def bullet(s, items, x,y,w, h, size=17, color=INK, bullet_color=TEAL):
tb=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=tb.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=Inches(.04); tf.margin_top=Inches(.02)
for i,it in enumerate(items):
p=tf.paragraphs[0] if i==0 else tf.add_paragraph(); p.text=it; p.font.name='Aptos'; p.font.size=Pt(size); p.font.color.rgb=rgb(color); p.space_after=Pt(7); p.level=0; p.text='• '+it
return tb
def card(s,title,body,x,y,w,h,accent=TEAL,fs=15):
shape(s,x,y,w,h,WHITE,LINE); shape(s,x,y,.08,h,accent,accent,MSO_SHAPE.RECTANGLE); text(s,title,x+.20,y+.14,w-.32,.28,15,accent,True); bullet(s,body if isinstance(body,list) else [body],x+.18,y+.50,w-.35,h-.58,fs)
def callout(s,label,msg,x,y,w,kind='remember'):
colors={'remember':(MINT,TEAL),'red':(PALE_RED,RED),'pearl':(PALE_GOLD,GOLD),'ask':(SKY,'277BA8')}; bg,ac=colors[kind]; shape(s,x,y,w,.74,bg,bg); text(s,label,x+.15,y+.10,1.55,.18,10,ac,True); text(s,msg,x+.15,y+.31,w-.3,.31,13,INK,False)
def arrow(s,x1,y1,x2,y2,color=TEAL):
ln=s.shapes.add_connector(1, Inches(x1),Inches(y1),Inches(x2),Inches(y2)); ln.line.color.rgb=rgb(color); ln.line.width=Pt(2); ln.line.end_arrowhead=True
def table(s,headers,rows,x,y,widths,rowh=.48,fs=12):
xx=x
for h,w in zip(headers,widths): shape(s,xx,y,w,rowh,NAVY,NAVY,MSO_SHAPE.RECTANGLE); text(s,h,xx+.06,y+.05,w-.12,rowh-.08,fs,WHITE,True,PP_ALIGN.CENTER); xx+=w
yy=y+rowh
for ri,row in enumerate(rows):
xx=x; bg=WHITE if ri%2==0 else PALE
for val,w in zip(row,widths): shape(s,xx,yy,w,rowh,bg,LINE,MSO_SHAPE.RECTANGLE); text(s,val,xx+.06,yy+.04,w-.12,rowh-.08,fs,INK,False); xx+=w
yy+=rowh
# 1
s=prs.slides.add_slide(blank); shape(s,0,0,13.333,7.5,NAVY,NAVY,MSO_SHAPE.RECTANGLE); shape(s,.68,1.05,.12,5.25,TEAL,TEAL,MSO_SHAPE.RECTANGLE); text(s,'PREOPERATIVE\nANAESTHETIC EVALUATION',1.12,2.10,10.8,1.45,34,WHITE,True); text(s,'A systematic approach to assessing the surgical patient',1.14,3.88,8.8,.40,19,'BFE9E8'); add_notes(s,'Open by asking: “What must we know before giving anaesthesia?” This lecture follows a reusable bedside approach.')
# 2
s=base('What is preoperative anaesthetic evaluation?','Introduction'); text(s,'A planned clinical assessment that identifies risk, corrects modifiable problems, and prepares an individual anaesthetic and postoperative plan.',.7,1.55,11.8,.55,18,INK,False)
steps=['PATIENT','HISTORY','EXAMINATION','TESTS','RISK','OPTIMIZE','PLAN','SURGERY']
for i,st in enumerate(steps):
x=.65+i*1.57; shape(s,x,3.05,1.34,.78,TEAL if i in [0,7] else WHITE,TEAL); text(s,st,x+.05,3.25,1.24,.24,11,WHITE if i in [0,7] else TEAL,True,PP_ALIGN.CENTER);
if i<7: arrow(s,x+1.34,3.44,x+1.52,3.44)
callout(s,'REMEMBER','It is more than “fitness for surgery”: it is shared planning for safer care.',.9,5.0,11.5)
# 3
s=base('Why do we evaluate the patient?','Introduction'); reasons=[('Identify','Comorbidities and current illness'),('Predict','Airway and physiological difficulty'),('Optimize','Correctable problems before elective surgery'),('Plan','Anaesthesia, monitoring, blood and recovery'),('Communicate','Risk, consent and expectations')]
for i,(a,b) in enumerate(reasons): card(s,a,b,.72+(i%3)*4.1,1.65+(i//3)*1.75,3.7,1.3,[TEAL,'277BA8',GOLD,RED,'6E5AA6'][i],15)
callout(s,'CLINICAL PEARL','A patient with new chest pain needs attention before an elective operation, not a “routine clearance”.',1.1,5.6,10.9,'pearl')
# 4
s=base('A simple bedside framework: ABCDE','Systematic approach'); abc=[('A','Airway','Look, ask, measure'),('B','Breathing','Symptoms, SpO₂, chest'),('C','Circulation','BP, heart, exercise tolerance'),('D','Drugs + Diseases','Medication and comorbidity review'),('E','Examination + Evaluation','Focused exam, tests, plan')]
for i,(a,b,c) in enumerate(abc):
x=.75+i*2.5; shape(s,x,1.85,2.15,3.55,WHITE,LINE); shape(s,x,1.85,2.15,.75,[TEAL,'277BA8',RED,GOLD,'6E5AA6'][i],[TEAL,'277BA8',RED,GOLD,'6E5AA6'][i]); text(s,a,x+.12,1.98,.6,.35,30,WHITE,True); text(s,b,x+.18,2.9,1.8,.35,16,NAVY,True,PP_ALIGN.CENTER); text(s,c,x+.20,3.55,1.75,.60,14,MUTED,False,PP_ALIGN.CENTER)
callout(s,'ASK YOURSELF','What could make airway management, anaesthesia, surgery or recovery unsafe today?',.9,5.95,11.5,'ask')
#5
s=base('History: ask systematically, then focus','Systematic approach'); cols=[['Presenting illness','Procedure and urgency','Previous anaesthesia','Operations/transfusion','Allergy and reactions'],['Medical illnesses','Drug history','Personal history: smoking, alcohol','Family history','Functional capacity'],['Pregnancy where relevant','Bleeding history','Review of systems','Relevant prior reports','Patient concerns and expectations']]
for j,col in enumerate(cols): card(s,'CHECKLIST '+str(j+1),col,.75+j*4.15,1.55,3.7,4.45,[TEAL,'277BA8','6E5AA6'][j],15)
#6
s=base('Previous anaesthetic history','History in detail'); bullet(s,['What happened during the last anaesthesia?','Difficult mask ventilation or intubation?','Difficult spinal/epidural?','Awareness, severe nausea/vomiting, ICU admission?','Unusual reaction: allergy, prolonged paralysis, hyperthermia?','Previous transfusion or unexpected complication?'],.8,1.65,6.0,4.5,18); shape(s,7.35,1.8,4.7,3.35,SKY,SKY); text(s,'Ask for records or an airway alert card when available.',7.8,2.2,3.8,.7,20,'277BA8',True,PP_ALIGN.CENTER); text(s,'A previous difficult airway is one of the strongest practical warnings for future planning.',7.8,3.25,3.8,.75,16,INK,False,PP_ALIGN.CENTER); callout(s,'RED FLAG','Personal or family history suggestive of malignant hyperthermia: refer to anaesthesia team early.',1.0,6.0,11.0,'red')
#7
s=base('Medical comorbidities: organise by system','History in detail'); systems=[('Cardiovascular','HTN • IHD • HF • arrhythmia • valve disease'),('Respiratory','Asthma • COPD • OSA • recent infection'),('Metabolic','Diabetes • thyroid disease • obesity'),('Renal / liver','CKD/dialysis • liver disease'),('Neuro / blood','Stroke • seizures • anaemia • bleeding'),('Other','Pregnancy • malignancy • frailty')]
for i,(a,b) in enumerate(systems): card(s,a,b,.75+(i%3)*4.1,1.55+(i//3)*2.0,3.75,1.55,[RED,'277BA8',GOLD,TEAL,'6E5AA6','7B8E9A'][i],15)
#8
s=base('Drug history: “what, why, when, and last dose?”','History in detail'); table(s,['Group','Why it matters','Practical principle'],[['Antihypertensives / cardiac drugs','Haemodynamics','Many continue; individualize ACEi/ARB plan.'],['Antidiabetics / insulin','Hypoglycaemia, ketoacidosis','Adjust around fasting; SGLT2 inhibitors need advance plan.'],['Anticoagulant / antiplatelet','Bleeding vs thrombosis','Procedure and indication determine plan.'],['Steroids / antiepileptics','Withdrawal or seizure risk','Usually continue with planned cover if needed.'],['Herbal / OTC medicines','Interactions / bleeding','Ask specifically and document.']],.6,1.55,[2.55,3.0,6.35],.68,13); callout(s,'REMEMBER','Never issue blanket “stop all medicines” advice. Confirm the local perioperative plan and anaesthetist’s instructions.',.8,5.9,11.6)
#9
s=base('Allergy history: clarify the reaction','History in detail'); card(s,'TRUE ALLERGY','Immune-mediated features may include urticaria, angioedema, bronchospasm or anaphylaxis.',.85,1.75,5.45,2.35,RED,16); card(s,'SIDE EFFECT / INTOLERANCE','For example nausea with an opioid, or gastric upset with an antibiotic. Still document, but do not label casually as “allergy”.',7.0,1.75,5.45,2.35,TEAL,16); bullet(s,['Name of agent and route','Timing after exposure','Symptoms and treatment received','Latex, chlorhexidine, food and adhesive reactions','Any prior allergy testing or documentation'],1.25,4.65,10.7,1.45,17); callout(s,'EXAM POINT','“What happened?” is more useful than simply asking “Any allergy?”',1.0,6.15,11.3,'ask')
#10
s=base('Functional capacity: can the patient do everyday exertion?','History in detail'); acts=[('<4 METs','Limited: struggles with a flight of stairs or brisk walking','POOR / UNCERTAIN'),('≥4 METs','Climbs stairs, walks uphill or does moderate housework','GENERALLY REASSURING'),('High capacity','Jogging, sports or strenuous work','GOOD RESERVE')]
for i,(a,b,c) in enumerate(acts): card(s,a,[b,c],.75+i*4.15,1.75,3.75,2.7,[RED,TEAL,'277BA8'][i],16)
callout(s,'CLINICAL PEARL','Functional capacity is a simple clue to cardiopulmonary reserve. Interpret it with symptoms and surgical risk.',.9,5.3,11.4,'pearl')
#11
s=base('Why assess the airway?','Airway assessment'); text(s,'A difficult airway can mean difficulty with mask ventilation, supraglottic airway placement, laryngoscopy, intubation or emergency front-of-neck access.',.8,1.5,11.4,.55,17,INK); stages=[('LOOK','Face, teeth, beard, habitus'),('OPEN','Mouth opening, jaw protrusion'),('MEASURE','Thyromental distance, neck movement'),('PLAN','Equipment, help, positioning')]
for i,(a,b) in enumerate(stages): card(s,a,b,.85+i*3.0,3.0,2.55,1.5,[RED,GOLD,TEAL,'277BA8'][i],15)
callout(s,'RED FLAG','Stridor, neck mass, fixed flexion, previous difficult airway or airway surgery: alert senior anaesthesia staff early.',1,5.7,11.2,'red')
#12
s=base('Airway assessment checklist','Airway assessment'); items=['Mouth opening','Mallampati view','Thyromental distance','Neck movement','Dentition','Jaw protrusion','Facial/neck abnormality','Beard or obesity','Previous difficult airway']
for i,it in enumerate(items):
x=.9+(i%3)*4.1; y=1.65+(i//3)*1.25; shape(s,x,y,3.55,.82,WHITE,LINE); shape(s,x+.16,y+.18,.42,.42,TEAL,TEAL,MSO_SHAPE.OVAL); text(s,str(i+1),x+.16,y+.18,.42,.38,12,WHITE,True,PP_ALIGN.CENTER); text(s,it,x+.72,y+.20,2.55,.32,16,INK,True)
callout(s,'REMEMBER','No single test predicts every difficult airway. Combine history, examination and clinical judgement.',.9,5.65,11.5)
#13 Mallampati
s=base('Mallampati classification: view of pharyngeal structures','Airway assessment'); classes=[('I','Soft palate, fauces, uvula, pillars'),('II','Soft palate, fauces, uvula'),('III','Soft palate and base of uvula'),('IV','Only hard palate')]
for i,(cl,desc) in enumerate(classes):
x=.65+i*3.12; shape(s,x,1.55,2.75,3.9,WHITE,LINE); text(s,'CLASS '+cl,x+.15,1.78,2.45,.25,15,TEAL,True,PP_ALIGN.CENTER)
# stylised open mouth / palate
shape(s,x+.60,2.28,1.55,1.45,'E8B7AA','E8B7AA',MSO_SHAPE.OVAL); shape(s,x+.72,2.46,1.30,.85,'7C3F4D','7C3F4D',MSO_SHAPE.OVAL); shape(s,x+.91,2.45,.92,.24,'F5D9C9','F5D9C9',MSO_SHAPE.ARC)
if i<3: shape(s,x+1.33,2.57,.22,.50,'F5D9C9','F5D9C9',MSO_SHAPE.ROUNDED_RECTANGLE)
if i==0: shape(s,x+1.04,2.65,.10,.30,'F5D9C9','F5D9C9',MSO_SHAPE.ROUNDED_RECTANGLE); shape(s,x+1.72,2.65,.10,.30,'F5D9C9','F5D9C9',MSO_SHAPE.ROUNDED_RECTANGLE)
if i==1: shape(s,x+1.04,2.65,.10,.30,'F5D9C9','F5D9C9',MSO_SHAPE.ROUNDED_RECTANGLE)
text(s,desc,x+.22,4.1,2.3,.85,13,INK,False,PP_ALIGN.CENTER)
callout(s,'EXAM POINT','Higher Mallampati class can suggest difficult laryngoscopy, but must not be used alone.',.85,5.85,11.5,'ask')
#14
s=base('Other airway predictors and the LEMON mnemonic','Airway assessment'); table(s,['Test','Assesses','Possible difficulty clue'],[['Mouth opening','Space for laryngoscopy','Markedly reduced opening'],['Thyromental distance','Mandibular space','Short distance / receding chin'],['Upper Lip Bite Test','Mandibular protrusion','Cannot bite upper lip'],['Neck movement','Position for laryngoscopy','Restricted extension'],['Dentition','Access / tooth injury','Prominent or loose incisors']],.55,1.45,[2.5,3.3,5.95],.59,12); shape(s,.75,5.05,11.6,1.23,MINT,MINT); text(s,'LEMON',1.0,5.30,1.45,.25,20,TEAL,True); text(s,'Look externally • Evaluate 3-3-2 • Mallampati • Obstruction • Neck mobility',2.55,5.30,8.9,.25,16,INK,True)
#15
s=base('Focused general examination','Physical examination'); exams=[('Vitals','Pulse • BP • RR • SpO₂ • temperature'),('General signs','Pallor • icterus • cyanosis • clubbing'),('Volume / nutrition','Oedema • hydration • BMI • frailty'),('Access','Peripheral veins, devices, infection at access site')]
for i,(a,b) in enumerate(exams): card(s,a,b,.85+(i%2)*5.9,1.65+(i//2)*1.85,5.25,1.4,[TEAL,'277BA8',GOLD,'6E5AA6'][i],16)
callout(s,'CLINICAL PEARL','Baseline SpO₂, blood pressure and body habitus help determine monitoring, positioning and postoperative destination.',.9,5.75,11.4,'pearl')
#16
s=base('Cardiovascular examination: what changes the plan?','Physical examination'); bullet(s,['Pulse rate/rhythm and blood pressure','Signs of heart failure: raised JVP, oedema, basal crepitations','Murmur: consider severity, symptoms and previous echo','Evidence of poor perfusion or uncontrolled hypertension','Review cardiac devices, stents, prior interventions and reports'],.75,1.55,6.1,4.55,17); shape(s,7.35,1.7,4.6,3.45,SKY,SKY); text(s,'Symptoms matter',7.75,2.12,3.8,.32,20,'277BA8',True,PP_ALIGN.CENTER); text(s,'Ask about chest pain, dyspnoea, syncope, palpitations and change in exercise tolerance.',7.75,2.8,3.8,.85,16,INK,False,PP_ALIGN.CENTER); callout(s,'RED FLAG','Active cardiac symptoms or decompensated heart failure: pause and evaluate before elective surgery when appropriate.',.95,5.9,11.3,'red')
#17
s=base('Respiratory and procedure-specific examination','Physical examination'); card(s,'RESPIRATORY','Work of breathing • SpO₂ • wheeze • crackles • cough/sputum • chest expansion',.8,1.6,5.45,2.15,'277BA8',16); card(s,'OTHER TARGETED EXAM','Neurology • abdomen • spine for neuraxial block • limb perfusion • regional block site • infection / skin integrity',7.0,1.6,5.45,2.15,TEAL,16); text(s,'Match the examination to the planned procedure and anaesthetic technique.',1.15,4.55,10.8,.35,19,NAVY,True,PP_ALIGN.CENTER); callout(s,'ASK YOURSELF','Would an abnormal finding change the technique, monitoring, place of recovery or timing of surgery?',.9,5.55,11.5,'ask')
#18
s=base('ASA Physical Status: describe systemic illness','Risk scores'); rows=[['ASA I','Healthy patient'],['ASA II','Mild systemic disease'],['ASA III','Severe systemic disease'],['ASA IV','Severe disease: constant threat to life'],['ASA V','Moribund patient not expected to survive without operation'],['ASA VI','Declared brain-dead donor']]; table(s,['Class','Simple example'],rows,.75,1.5,[2.2,9.3],.55,14); callout(s,'REMEMBER','“E” is added for an emergency procedure. ASA-PS describes health status, not the whole operative risk.',.8,5.75,11.6)
#19
s=base('Functional / screening tools worth knowing','Risk scores'); table(s,['Tool','What it adds','Simple use'],[['NYHA I-IV','Limitation from cardiac symptoms','I: no limitation → IV: symptoms at rest'],['METs','Activity-based functional capacity','<4 METs = poor/uncertain reserve'],['STOP-BANG','Screen for obstructive sleep apnoea','Higher score → greater OSA probability'],['RCRI','Cardiac risk factors for noncardiac surgery','Supports, not replaces, judgement']],.6,1.65,[2.2,4.25,5.05],.72,14); callout(s,'REMEMBER','Scores support decisions. They do not replace a history, examination, and discussion with the anaesthesia team.',.85,5.6,11.5)
#20
s=base('STOP-BANG: screen for obstructive sleep apnoea','Risk scores'); comps=[('S','Snoring'),('T','Tiredness'),('O','Observed apnoea'),('P','Pressure / hypertension'),('B','BMI >35 kg/m²'),('A','Age >50 years'),('N','Neck >40 cm'),('G','Male gender')]
for i,(a,b) in enumerate(comps):
x=.65+(i%4)*3.15;y=1.55+(i//4)*1.3; shape(s,x,y,2.75,.85,WHITE,LINE); shape(s,x+.12,y+.14,.52,.52,TEAL,TEAL,MSO_SHAPE.OVAL); text(s,a,x+.12,y+.17,.52,.28,15,WHITE,True,PP_ALIGN.CENTER); text(s,b,x+.76,y+.18,1.82,.3,14,INK,True)
callout(s,'CLINICAL PEARL','A high score should prompt perioperative OSA precautions and planning. It is a screen, not a definitive diagnosis.',.9,4.55,11.5,'pearl'); text(s,'Common interpretation: 0-2 low risk | 3-4 intermediate risk | 5-8 high risk (context matters).',1.05,5.68,11,.3,15,NAVY,True,PP_ALIGN.CENTER)
#21
s=base('RCRI: 6 predictors of major cardiac complications','Risk scores'); rcri=['High-risk surgery','Ischaemic heart disease','Congestive heart failure','Cerebrovascular disease','Diabetes requiring insulin','Creatinine >2 mg/dL (176.8 μmol/L)']
for i,a in enumerate(rcri): card(s,str(i+1),a,.75+(i%3)*4.15,1.65+(i//3)*1.75,3.7,1.3,[RED,TEAL,'277BA8',GOLD,'6E5AA6','7B8E9A'][i],15)
callout(s,'EXAM POINT','Each present predictor scores 1. Use it as part of stepwise cardiac assessment, together with urgency, symptoms and functional capacity.',.9,5.35,11.5,'ask')
#22
s=base('Should every patient get every investigation?','Investigations'); text(s,'NO',.75,1.55,2.0,.60,42,RED,True); text(s,'Tests are guided by history, examination, age, comorbidity and surgical magnitude.',2.5,1.65,9.6,.40,20,NAVY,True); tests=[('CBC','Anaemia, infection, expected blood loss'),('Glucose / HbA1c','Diabetes or suspected poor control'),('U&E / renal function','CKD, diuretics, diabetes, major surgery'),('ECG','Known CVD, symptoms, risk factors / surgical context'),('CXR','New cardiopulmonary symptoms or known disease when result changes care'),('Coagulation / group & save','Anticoagulants, liver disease, bleeding history, anticipated blood loss')]
for i,(a,b) in enumerate(tests): card(s,a,b,.75+(i%2)*5.95,2.6+(i//2)*1.1,5.35,.85,[TEAL,'277BA8',GOLD,RED,'6E5AA6','7B8E9A'][i],13)
#23
s=base('Common investigations: request a test only if it answers a question','Investigations'); table(s,['Investigation','When useful','Why it changes care'],[['CBC','Anaemia suspected / blood loss expected','Treat, crossmatch, plan transfusion'],['Blood glucose / HbA1c','Diabetes','Perioperative glucose strategy'],['Renal function / electrolytes','CKD, diuretic use, diabetes','Drug, fluid and electrolyte plan'],['Pregnancy test','Where pregnancy is possible and result relevant','Technique and fetal considerations'],['Group and screen / crossmatch','Potential significant blood loss','Blood availability'],['Additional tests','Specific symptom or disease','Only if management may change']],.5,1.45,[2.6,4.0,5.45],.55,12); callout(s,'REMEMBER','Routine testing in low-risk patients often adds little and can create false positives.',.9,5.7,11.4)
#24
s=base('Cardiovascular risk: use a stepwise approach','Cardiorespiratory risk'); steps=['Urgency of surgery','Active cardiac symptoms?','Estimate surgical + patient risk','Assess functional capacity','Test or refer only if result changes management','Plan monitoring and postoperative care']
for i,a in enumerate(steps):
y=1.42+i*.75; shape(s,1.35,y,8.7,.5,WHITE,LINE); text(s,str(i+1),1.5,y+.08,.3,.2,12,WHITE,True,PP_ALIGN.CENTER); shape(s,1.44,y+.1,.28,.28,TEAL,TEAL,MSO_SHAPE.OVAL); text(s,a,1.95,y+.08,7.7,.22,15,INK,True)
callout(s,'RED FLAG','Acute coronary syndrome, decompensated HF, unstable arrhythmia, or severe symptomatic valve disease require specialist assessment before elective surgery where appropriate.',1.0,6.15,11.3,'red')
#25
s=base('Respiratory risk: identify reversible problems','Cardiorespiratory risk'); cards=[('Asthma / COPD','Current symptoms, exacerbation, inhaler use, wheeze'),('OSA','Snoring, witnessed apnoea, CPAP use, STOP-BANG'),('Smoking','Secretions, bronchial reactivity, pulmonary complications'),('Recent infection','Fever, cough, wheeze, low SpO₂: assess timing and severity'),('Baseline reserve','SpO₂, exercise tolerance, prior admission/ventilation')]
for i,(a,b) in enumerate(cards): card(s,a,b,.75+(i%3)*4.15,1.55+(i//3)*1.75,3.7,1.3,[TEAL,'277BA8',GOLD,RED,'6E5AA6'][i],14)
callout(s,'CLINICAL PEARL','Encourage smoking cessation at every opportunity. The anaesthetic plan should include oxygenation, analgesia and postoperative pulmonary care.',.9,5.35,11.5,'pearl')
#26
s=base('Common special situations I','Special situations'); table(s,['Condition','What to assess','What to do next'],[['Diabetes','Glucose, hypoglycaemia, end-organ disease, drugs','Individual glucose and fasting-medication plan'],['Hypertension','Severity, symptoms, end-organ disease, overall risk','Confirm control; evaluate severe/uncontrolled cases'],['Obesity','Airway, OSA, ventilation, positioning, VTE risk','Plan equipment, position and recovery'],['Anaemia','Cause, severity, expected blood loss','Investigate/correct when possible before elective surgery']],.55,1.55,[2.25,4.55,5.25],.75,13); callout(s,'REMEMBER','Treat the patient, not a number. Timing and extent of optimization depend on urgency and expected benefit.',.85,5.65,11.5)
#27
s=base('Common special situations II','Special situations'); table(s,['Condition','Key preoperative concerns','Plan'],[['Renal disease','K⁺, volume, dialysis timing, vascular access, drug clearance','Coordinate dialysis; avoid nephrotoxins where possible'],['Liver disease','Coagulation, albumin, portal hypertension, encephalopathy','Assess severity and bleeding/medication plan'],['Pregnancy','Aspiration risk, airway change, gestation/fetal issues','Pregnancy-aware technique and obstetric input when needed'],['Frailty','Reserve, cognition, nutrition, functional decline','Discuss goals, recovery and support needs']],.55,1.55,[2.25,5.05,4.75],.75,13); callout(s,'CLINICAL PEARL','For complex disease, early anaesthesia review is more useful than a last-minute “clearance” request.',.85,5.65,11.5,'pearl')
#28
s=base('Preoperative fasting: minimum intervals for healthy elective patients','Fasting'); table(s,['Intake','Minimum fasting interval'],[['Clear liquids (water, pulp-free juice, black tea/coffee)','2 hours'],['Breast milk','4 hours'],['Infant formula / non-human milk','6 hours'],['Light meal','6 hours'],['Fatty meal / fried food / meat','8 hours or more']],.9,1.55,[7.2,4.0],.62,15); callout(s,'REMEMBER','These are minimum intervals. Aspiration risk, emergency surgery, diabetes, gastroparesis and pregnancy can require an individualized plan.',.9,5.6,11.5)
#29
s=base('What does “optimization” mean?','Optimization'); flow=['IDENTIFY\nPROBLEM','ASSESS\nSEVERITY','TREAT /\nOPTIMIZE','REASSESS','PROCEED\nWHEN APPROPRIATE']
for i,a in enumerate(flow):
x=.65+i*2.55; shape(s,x,2.25,2.05,1.2,WHITE,TEAL); text(s,a,x+.1,2.52,1.85,.5,16,TEAL,True,PP_ALIGN.CENTER);
if i<4: arrow(s,x+2.08,2.85,x+2.48,2.85)
examples=['Correct significant anaemia','Treat active infection','Improve asthma/COPD control','Correct important electrolyte abnormalities','Plan anticoagulants and blood products']
bullet(s,examples,1.25,4.65,10.6,1.35,16)
#30
s=base('Risk is multifactorial','Risk stratification'); factors=[('PATIENT','Age, frailty, comorbidities, function, airway'),('SURGERY','Urgency, site, duration, blood loss'),('ANAESTHESIA','Technique, monitoring, access, positioning'),('POSTOPERATIVE','Pain plan, ward vs HDU/ICU, respiratory support')]
for i,(a,b) in enumerate(factors): card(s,a,b,.75+(i%2)*5.95,1.65+(i//2)*1.8,5.35,1.35,[TEAL,RED,'277BA8',GOLD][i],15)
text(s,'Overall risk assessment = evidence + clinical judgement + patient discussion',1.0,5.55,11.2,.35,19,NAVY,True,PP_ALIGN.CENTER)
#31
s=base('Consent, communication and documentation','Planning'); points=['Nature of the proposed anaesthetic technique','Common and relevant serious risks','Alternatives where appropriate','Blood transfusion and postoperative ventilation/ICU possibility','Patient questions, preferences and concerns','Clear documentation of assessment, risk and plan']
bullet(s,points,.95,1.55,5.8,4.7,18); shape(s,7.35,1.65,4.7,3.8,MINT,MINT); text(s,'Good preoperative care = good communication + good documentation',7.85,2.35,3.7,.90,22,TEAL,True,PP_ALIGN.CENTER); text(s,'Use language the patient can understand. Confirm the plan with the operating and recovery teams.',7.85,3.7,3.7,.65,15,INK,False,PP_ALIGN.CENTER)
#32
s=base('BEFORE I SEND THE PATIENT TO OT…','Final checklist'); checks=['Identity + procedure confirmed','Consent checked','Allergies clarified','Previous anaesthesia reviewed','Airway assessed','Comorbidities + medications reviewed','Investigations reviewed','Blood availability assessed if needed','Fasting confirmed','Optimization completed / plan documented','ASA status assigned','Anaesthetic + postoperative plan clear']
for i,c in enumerate(checks):
x=.8+(i%2)*6.1;y=1.45+(i//2)*.72; shape(s,x,y,5.55,.53,WHITE,LINE); shape(s,x+.14,y+.12,.27,.27,TEAL,TEAL,MSO_SHAPE.ROUNDED_RECTANGLE); text(s,'✓',x+.16,y+.11,.23,.19,11,WHITE,True,PP_ALIGN.CENTER); text(s,c,x+.56,y+.12,4.75,.2,14,INK,True)
#33
s=base('One-minute revision','Revision'); rev=['HISTORY','EXAMINATION','AIRWAY','COMORBIDITIES','TARGETED TESTS','RISK TOOLS','OPTIMIZE','FASTING + MEDS','CONSENT','PLAN']
for i,a in enumerate(rev):
x=.65+(i%5)*2.53; y=1.65+(i//5)*2.0; shape(s,x,y,2.15,.82,WHITE,TEAL); text(s,a,x+.05,y+.25,2.05,.25,13,TEAL,True,PP_ALIGN.CENTER)
if i%5<4: arrow(s,x+2.16,y+.41,x+2.47,y+.41)
callout(s,'REMEMBER','Approach every patient in the same order. The details change, but the framework does not.',.9,5.75,11.5)
#34
s=base('TAKE-HOME MESSAGE','Conclusion'); take=['Every patient needs a systematic assessment.','History usually reveals where the major risks are.','Never forget the airway.','Assess functional capacity and comorbidities.','Investigations must be clinically indicated.','Optimize correctable problems before elective surgery.','Always have a clear anaesthetic and postoperative plan.']
for i,t in enumerate(take): text(s,str(i+1),.95,1.45+i*.65,.38,.25,16,WHITE,True,PP_ALIGN.CENTER); shape(s,.92,1.43+i*.65,.44,.36,TEAL,TEAL,MSO_SHAPE.OVAL); text(s,t,1.55,1.43+i*.65,10.3,.32,17,INK,True)
#35
s=base('References','References'); refs=['American Society of Anesthesiologists. ASA Physical Status Classification System.','American Society of Anesthesiologists. Practice Guidelines for Preoperative Fasting, 2017; modular update 2023.','Thompson A et al. 2024 AHA/ACC/ACS/ASNC/HRS/SCA/SCCT/SCMR/SVM Guideline for Perioperative Cardiovascular Management for Noncardiac Surgery. Circulation. 2024.','NICE Guideline NG45. Routine preoperative tests for elective surgery. Updated 2019.','Miller’s Anesthesia, 10th ed. Preoperative evaluation and risk assessment chapters.','Morgan & Mikhail’s Clinical Anesthesiology, 7th ed. Preoperative evaluation and airway management chapters.','Chung F et al. STOP-Bang Questionnaire: a practical approach to screen for obstructive sleep apnea. Chest. 2016.','Lee TH et al. Derivation and prospective validation of a simple index for prediction of cardiac risk of major noncardiac surgery. Circulation. 1999.']
bullet(s,refs,.8,1.45,11.7,4.95,14); text(s,'Teaching deck: use local institutional policies and consultant anaesthesia advice for patient-specific decisions.',.85,6.55,11.6,.3,13,MUTED,False,PP_ALIGN.CENTER)
# set core properties
prs.core_properties.title='Preoperative Anaesthetic Evaluation'; prs.core_properties.subject='MBBS undergraduate teaching'; prs.core_properties.author='Anaesthesia teaching faculty';
out='/tmp/workspace/preoperative-anaesthetic-evaluation/output/Preoperative_Anaesthetic_Evaluation_MBBS.pptx'; prs.save(out); print(out, len(prs.slides))
python "/tmp/workspace/preoperative-anaesthetic-evaluation/src/build_deck.py"
python - <<'PY' from pptx import Presentation p='/tmp/workspace/preoperative-anaesthetic-evaluation/output/Preoperative_Anaesthetic_Evaluation_MBBS.pptx' prs=Presentation(p) print('slides',len(prs.slides)) for i,s in enumerate(prs.slides,1): txt=' | '.join(sh.text.replace('\n',' / ') for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text.strip()) print(f'{i:02}: {txt[:175]}') PY
~/preoperative-anaesthetic-evaluation/src/build_deck.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/preoperative-anaesthetic-evaluation/src/build_deck.py'
python "/tmp/workspace/preoperative-anaesthetic-evaluation/src/build_deck.py" && python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/preoperative-anaesthetic-evaluation/output/Preoperative_Anaesthetic_Evaluation_MBBS.pptx') prs=Presentation(str(p)) print('exists',p.exists(),'bytes',p.stat().st_size,'slides',len(prs.slides)) assert len(prs.slides)==35 assert prs.slides[0].shapes[1].text_frame.text == 'PREOPERATIVE\nANAESTHETIC EVALUATION' print('title check passed') PY
~/preoperative-anaesthetic-evaluation/src/build_deck.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/preoperative-anaesthetic-evaluation/src/build_deck.py'
python "/tmp/workspace/preoperative-anaesthetic-evaluation/src/build_deck.py" && python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/preoperative-anaesthetic-evaluation/output/Preoperative_Anaesthetic_Evaluation_MBBS.pptx') prs=Presentation(str(p)) all_text=[] for sh in prs.slides[0].shapes: if getattr(sh,'has_text_frame',False): all_text.append(sh.text) print('exists:',p.exists(),'bytes:',p.stat().st_size,'slides:',len(prs.slides)) print('first slide text:',repr(' | '.join(all_text))) print('notes checked:', bool(prs.slides[1].notes_slide.notes_text_frame.text.strip())) assert len(prs.slides)==35 assert 'PREOPERATIVE\nANAESTHETIC EVALUATION' in all_text assert 'A systematic approach to assessing the surgical patient' in all_text print('Validation passed') PY
Preoperative Anaesthetic Evaluation MBBS
Presentation · PPTX