Make me a structured concise exam ready format answer of all the questions attached in the picture above, designed to be written in 15minutes each , covering all key scoring points for answering my MS General Surgery exam from Bailey and love textbook of general surgery.Give in pdf form
mkdir -p /home/daytona/workspace/surgery-exam && cat > /home/daytona/workspace/surgery-exam/generate_pdf.py << '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 from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak, KeepTogether from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY from reportlab.platypus.flowables import Flowable # Colors DARK_BLUE = HexColor('#1a3a5c') MID_BLUE = HexColor('#2563a8') LIGHT_BLUE = HexColor('#e8f0fa') ACCENT = HexColor('#c0392b') GOLD = HexColor('#d4a017') LIGHT_GRAY = HexColor('#f5f5f5') BORDER_GRAY = HexColor('#cccccc') GREEN = HexColor('#1a6b3a') LIGHT_GREEN = HexColor('#e8f5ec') doc = SimpleDocTemplate( '/home/daytona/workspace/surgery-exam/MS_Surgery_Exam_Answers_Q62_81.pdf', pagesize=A4, rightMargin=1.8*cm, leftMargin=1.8*cm, topMargin=1.5*cm, bottomMargin=1.5*cm ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle('Title', parent=styles['Normal'], fontSize=18, fontName='Helvetica-Bold', textColor=white, alignment=TA_CENTER, spaceAfter=2) subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'], fontSize=10, fontName='Helvetica', textColor=HexColor('#d0e4ff'), alignment=TA_CENTER, spaceAfter=2) q_header_style = ParagraphStyle('QHeader', parent=styles['Normal'], fontSize=12, fontName='Helvetica-Bold', textColor=white, spaceBefore=0, spaceAfter=0) section_style = ParagraphStyle('Section', parent=styles['Normal'], fontSize=9.5, fontName='Helvetica-Bold', textColor=MID_BLUE, spaceBefore=5, spaceAfter=2) body_style = ParagraphStyle('Body', parent=styles['Normal'], fontSize=8.8, fontName='Helvetica', textColor=HexColor('#222222'), leading=13, spaceBefore=1, spaceAfter=1) bullet_style = ParagraphStyle('Bullet', parent=styles['Normal'], fontSize=8.8, fontName='Helvetica', textColor=HexColor('#222222'), leading=13, leftIndent=12, firstLineIndent=-10, spaceBefore=0, spaceAfter=0) sub_bullet_style = ParagraphStyle('SubBullet', parent=styles['Normal'], fontSize=8.5, fontName='Helvetica', textColor=HexColor('#333333'), leading=12, leftIndent=24, firstLineIndent=-10, spaceBefore=0, spaceAfter=0) note_style = ParagraphStyle('Note', parent=styles['Normal'], fontSize=8.2, fontName='Helvetica-Oblique', textColor=ACCENT, leading=12, spaceBefore=2) key_style = ParagraphStyle('Key', parent=styles['Normal'], fontSize=8.5, fontName='Helvetica-Bold', textColor=HexColor('#1a6b3a'), leading=12, spaceBefore=2) def make_q_header(qnum, title, year=""): year_text = f' <font color="#ffd700">[{year}]</font>' if year else '' data = [[Paragraph(f'Q{qnum}. {title}{year_text}', q_header_style)]] t = Table(data, colWidths=[17*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 7), ('BOTTOMPADDING', (0,0), (-1,-1), 7), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('ROUNDEDCORNERS', [5,5,5,5]), ])) return t def sec(txt): return Paragraph(txt, section_style) def b(txt): return Paragraph(f'• {txt}', bullet_style) def sb(txt): return Paragraph(f'– {txt}', sub_bullet_style) def p(txt): return Paragraph(txt, body_style) def note(txt): return Paragraph(f'★ Exam tip: {txt}', note_style) def key(txt): return Paragraph(f'✔ {txt}', key_style) def sp(h=4): return Spacer(1, h) def hr(): return HRFlowable(width='100%', thickness=0.5, color=BORDER_GRAY, spaceAfter=3, spaceBefore=3) def box(items, color=LIGHT_BLUE): content = ''.join(f'<br/>' if i==0 else '' for i in range(1)) rows = [[item] for item in items] t = Table([[item] for item in items], colWidths=[16.5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), color), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 8), ('RIGHTPADDING', (0,0), (-1,-1), 8), ('BOX', (0,0), (-1,-1), 0.5, BORDER_GRAY), ])) return t story = [] # ============================================================ # COVER / TITLE BLOCK # ============================================================ title_data = [[ Paragraph('MS GENERAL SURGERY', title_style), Paragraph('EXAM PREPARATION — STRUCTURED ANSWERS', subtitle_style), Paragraph('Questions 62–81 | Post-operative Care & Trauma', subtitle_style), Paragraph('Bailey & Love\'s Short Practice of Surgery, 28th Edition', subtitle_style), Paragraph('Each answer designed for 15-minute exam response | Key scoring points highlighted', subtitle_style), ]] cover = Table([[ Paragraph('MS GENERAL SURGERY', title_style), Paragraph('EXAM PREPARATION — STRUCTURED ANSWERS', subtitle_style), Paragraph('Questions 62–81 | Post-operative Care & Trauma', subtitle_style), Paragraph('Bailey & Love\'s Short Practice of Surgery, 28th Ed', subtitle_style), Paragraph('15-min exam format • Key scoring points highlighted', subtitle_style), ]], colWidths=[17*cm]) cover.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 14), ('BOTTOMPADDING', (0,0), (-1,-1), 14), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ])) # Build cover as nested table inner_rows = [ [Paragraph('MS GENERAL SURGERY', title_style)], [Paragraph('EXAM PREPARATION — STRUCTURED ANSWERS', subtitle_style)], [Paragraph('Questions 62–81 | Post-operative Care & Trauma', subtitle_style)], [Paragraph('Bailey & Love\'s Short Practice of Surgery, 28th Ed', subtitle_style)], [Paragraph('15-min exam format • Key scoring points highlighted', subtitle_style)], ] inner = Table(inner_rows, colWidths=[17*cm]) inner.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('LINEABOVE', (0,0), (-1,0), 3, GOLD), ('LINEBELOW', (0,-1), (-1,-1), 3, GOLD), ])) story.append(inner) story.append(sp(8)) # ============================================================ # Q62. POST-OPERATIVE VENTILATORY SUPPORT (2010) # ============================================================ story.append(make_q_header(62, "Post-operative Ventilatory Support", "2010")) story.append(sp(4)) story.append(sec("DEFINITION & INDICATIONS")) story.append(b("Mechanical ventilation: machine-assisted breathing post-surgery when patient cannot maintain adequate gas exchange independently")) story.append(b("Indications: (RSVP mnemonic)")) story.append(sb("Respiratory failure (PaO2 <60 mmHg on O2, PaCO2 >50 mmHg)")) story.append(sb("Shock / haemodynamic instability")) story.append(sb("Volume overload / fluid management")) story.append(sb("Protection of airway (e.g. major head/neck surgery, GCS ≤8)")) story.append(sb("Also: prolonged surgery >4 hrs, major thoracic/abdominal ops, pre-existing lung disease")) story.append(sp(3)) story.append(sec("MODES OF VENTILATION")) data = [ [Paragraph('<b>Mode</b>', body_style), Paragraph('<b>Description</b>', body_style), Paragraph('<b>Use</b>', body_style)], [Paragraph('CMV / IPPV', body_style), Paragraph('Controlled mandatory ventilation', body_style), Paragraph('Fully sedated patients', body_style)], [Paragraph('SIMV', body_style), Paragraph('Synchronized intermittent mandatory', body_style), Paragraph('Weaning phase', body_style)], [Paragraph('PSV', body_style), Paragraph('Pressure support ventilation', body_style), Paragraph('Spontaneous breathing support', body_style)], [Paragraph('CPAP', body_style), Paragraph('Continuous positive airway pressure', body_style), Paragraph('Non-invasive / post-extubation', body_style)], [Paragraph('BiPAP', body_style), Paragraph('Bilevel positive airway pressure', body_style), Paragraph('COPD, type 2 RF', body_style)], [Paragraph('PEEP', body_style), Paragraph('Positive end-expiratory pressure', body_style), Paragraph('Prevents atelectasis', body_style)], ] t = Table(data, colWidths=[3*cm, 7*cm, 5*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t) story.append(sp(3)) story.append(sec("VENTILATOR SETTINGS & MONITORING")) story.append(b("Tidal volume: 6–8 mL/kg ideal body weight (lung-protective strategy)")) story.append(b("FiO2: start at 1.0, reduce to maintain SpO2 >94%")) story.append(b("Respiratory rate: 12–16/min")) story.append(b("PEEP: 5–8 cmH2O routinely; higher in ARDS (up to 15)")) story.append(b("Plateau pressure: keep <30 cmH2O")) story.append(sp(3)) story.append(sec("WEANING CRITERIA (ABCDE)")) story.append(b("A – Awake & co-operative, GCS improving")) story.append(b("B – Breathing: RR <30, TV >5 mL/kg, SpO2 >95% on FiO2 ≤0.4, PEEP ≤5")) story.append(b("C – Cardiovascular: HR 60–100, stable BP, minimal vasopressors")) story.append(b("D – Driving pressure (P plateau – PEEP) <15 cmH2O")) story.append(b("E – Electrolytes/secretions controlled, no active infection")) story.append(b("SAT (Spontaneous Awakening Trial) + SBT (Spontaneous Breathing Trial) protocol")) story.append(sp(3)) story.append(sec("COMPLICATIONS")) story.append(b("VAP – Ventilator-associated pneumonia (most common serious complication)")) story.append(b("Barotrauma: pneumothorax, pneumomediastinum, surgical emphysema")) story.append(b("Volutrauma: overdistension injury")) story.append(b("Oxygen toxicity if prolonged high FiO2")) story.append(b("Haemodynamic compromise: ↓ venous return → ↓ CO")) story.append(b("Muscle weakness/atrophy from prolonged ventilation")) story.append(sp(3)) story.append(note("Always mention lung-protective ventilation (6 mL/kg, plateau <30), weaning criteria, and VAP bundle")) story.append(hr()) # ============================================================ # Q63. TRIAGE IN DISASTER / POLYTRAUMA (2019) # ============================================================ story.append(make_q_header(63, "Triage in Disaster & Principles of Polytrauma Management", "2019")) story.append(sp(4)) story.append(sec("TRIAGE - DEFINITION")) story.append(p("The process of sorting patients by severity to maximise survival when resources are limited (French: 'to sort')")) story.append(sp(3)) story.append(sec("START TRIAGE (Simple Triage And Rapid Treatment)")) story.append(b("Used in mass casualty incidents; 30 seconds per patient")) data2 = [ [Paragraph('<b>Tag</b>', body_style), Paragraph('<b>Colour</b>', body_style), Paragraph('<b>Criteria</b>', body_style), Paragraph('<b>Action</b>', body_style)], [Paragraph('Immediate', body_style), Paragraph('RED', body_style), Paragraph('Resp >30/min OR no radial pulse OR fails mental status; can survive with immediate Rx', body_style), Paragraph('Treat first', body_style)], [Paragraph('Delayed', body_style), Paragraph('YELLOW', body_style), Paragraph('Breathing, pulse present, follows commands; serious but stable', body_style), Paragraph('Treat after RED', body_style)], [Paragraph('Minor', body_style), Paragraph('GREEN', body_style), Paragraph('Walking wounded; minor injuries', body_style), Paragraph('Self-care/defer', body_style)], [Paragraph('Expectant', body_style), Paragraph('BLACK', body_style), Paragraph('Not breathing after airway repositioning; unsurvivable injuries', body_style), Paragraph('Comfort only', body_style)], ] t2 = Table(data2, colWidths=[2.5*cm, 2*cm, 8*cm, 3.5*cm]) t2.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [HexColor('#ffe5e5'), HexColor('#fff8cc'), HexColor('#e5ffe5'), HexColor('#e0e0e0')]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(t2) story.append(sp(3)) story.append(sec("SALT TRIAGE (Sort, Assess, Life-saving interventions, Treatment/Transport)")) story.append(b("Sort: global assessment — 1) Walk, 2) Wave/purposeful movement, 3) Still/obvious life threat")) story.append(b("Assess: individual assessment of LSI needs")) story.append(b("Life-saving interventions: control bleeding, open airway, needle decompression, auto-injector antidotes")) story.append(b("Treatment/Transport: assign category and transport accordingly")) story.append(sp(3)) story.append(sec("PRINCIPLES OF POLYTRAUMA MANAGEMENT (ATLS Framework)")) story.append(b("Primary Survey — ABCDE:")) story.append(sb("A – Airway with C-spine control (jaw thrust, chin lift, OPA/NPA, intubation)")) story.append(sb("B – Breathing: RR, SpO2, bilateral air entry, seal open wounds, decompress tension PTX")) story.append(sb("C – Circulation: pulse, BP, 2 large-bore IVs, Hartmann's/blood, control haemorrhage")) story.append(sb("D – Disability: GCS, pupils, blood glucose")) story.append(sb("E – Exposure + Environment: undress fully, examine all surfaces, prevent hypothermia")) story.append(b("Resuscitation: concurrent with primary survey")) story.append(b("Secondary Survey: head-to-toe exam only after patient stabilised")) story.append(b("Definitive Care: ICU, theatre, specialist referral")) story.append(sp(3)) story.append(note("Mention START vs SALT, triage colours, ATLS ABCDE — all are scoring points. Golden Hour concept.")) story.append(hr()) # ============================================================ # Q64. COAGULOPATHY OF TRAUMA & DAMAGE CONTROL RESUSCITATION (2021) # ============================================================ story.append(make_q_header(64, "Coagulopathy of Trauma & Damage Control Resuscitation", "2021")) story.append(sp(4)) story.append(sec("COAGULOPATHY OF TRAUMA — ACUTE TRAUMATIC COAGULOPATHY (ATC)")) story.append(b("Definition: coagulopathy occurring immediately after severe trauma, BEFORE significant fluid resuscitation")) story.append(b("Incidence: 25–35% of severely injured patients on arrival")) story.append(b("Mechanism — THE LETHAL TRIAD ('Death Triad'):")) story.append(sb("1. Hypothermia (<35°C): impairs clotting factor function, platelet aggregation")) story.append(sb("2. Acidosis (pH <7.2): inhibits thrombin generation by 40–50%")) story.append(sb("3. Coagulopathy (dilutional + consumptive): ↑ PT, APTT, ↓ fibrinogen, platelets")) story.append(b("Additional mechanisms: shock → endotheliopathy, hyperfibrinolysis, protein C activation")) story.append(b("TASH Score & ABC Score used to predict need for massive transfusion")) story.append(sp(3)) story.append(sec("DAMAGE CONTROL RESUSCITATION (DCR)")) story.append(b("Goal: reverse/prevent lethal triad while achieving haemostasis")) story.append(b("Components:")) story.append(sb("1. Permissive Hypotension: target SBP 80–90 mmHg (MAP 50–65) until surgical haemostasis")) story.append(sb(" Exception: TBI — maintain MAP >80 mmHg")) story.append(sb("2. Haemostatic Resuscitation: blood products in 1:1:1 ratio (pRBC : FFP : Platelets)")) story.append(sb("3. Massive Transfusion Protocol (MTP): pre-emptive, avoid crystalloid dilution")) story.append(sb("4. Tranexamic Acid (TXA): give within 3 hours of injury (CRASH-2 trial): 1g IV over 10 min, then 1g over 8h")) story.append(sb("5. Calcium supplementation: citrate in blood products → hypocalcaemia → poor clotting")) story.append(sb("6. Treat hypothermia: warm fluids, blankets, bear-hugger")) story.append(sb("7. Treat acidosis: correct haemorrhage, bicarbonate rarely needed")) story.append(sp(3)) story.append(sec("DAMAGE CONTROL SURGERY (DCS)")) story.append(b("Phase 1: abbreviated surgery — control haemorrhage + contamination, temporary closure")) story.append(b("Phase 2: ICU resuscitation — warm, correct coagulopathy, stabilise")) story.append(b("Phase 3: definitive surgery once physiology corrected")) story.append(sp(3)) story.append(note("CRASH-2 trial + lethal triad + 1:1:1 resuscitation + TXA dosing = guaranteed marks")) story.append(hr()) # ============================================================ # Q65 & Q66. HEAD TRAUMA, GCS, SIGNIFICANCE & FALLOVER (2009, 2021) # ============================================================ story.append(make_q_header(65, "Head Trauma — Glasgow Coma Scale (GCS)", "2009 / 2021")) story.append(sp(4)) story.append(sec("GLASGOW COMA SCALE — COMPONENTS")) data_gcs = [ [Paragraph('<b>Component</b>', body_style), Paragraph('<b>Response</b>', body_style), Paragraph('<b>Score</b>', body_style)], [Paragraph('<b>Eye Opening (E)</b>', body_style), Paragraph('Spontaneous', body_style), Paragraph('4', body_style)], [Paragraph('', body_style), Paragraph('To voice', body_style), Paragraph('3', body_style)], [Paragraph('', body_style), Paragraph('To pain', body_style), Paragraph('2', body_style)], [Paragraph('', body_style), Paragraph('None', body_style), Paragraph('1', body_style)], [Paragraph('<b>Verbal (V)</b>', body_style), Paragraph('Orientated', body_style), Paragraph('5', body_style)], [Paragraph('', body_style), Paragraph('Confused', body_style), Paragraph('4', body_style)], [Paragraph('', body_style), Paragraph('Inappropriate words', body_style), Paragraph('3', body_style)], [Paragraph('', body_style), Paragraph('Incomprehensible sounds', body_style), Paragraph('2', body_style)], [Paragraph('', body_style), Paragraph('None', body_style), Paragraph('1', body_style)], [Paragraph('<b>Motor (M)</b>', body_style), Paragraph('Obeys commands', body_style), Paragraph('6', body_style)], [Paragraph('', body_style), Paragraph('Localises pain', body_style), Paragraph('5', body_style)], [Paragraph('', body_style), Paragraph('Withdraws from pain', body_style), Paragraph('4', body_style)], [Paragraph('', body_style), Paragraph('Abnormal flexion (Decorticate)', body_style), Paragraph('3', body_style)], [Paragraph('', body_style), Paragraph('Extension (Decerebrate)', body_style), Paragraph('2', body_style)], [Paragraph('', body_style), Paragraph('None', body_style), Paragraph('1', body_style)], ] t_gcs = Table(data_gcs, colWidths=[4*cm, 9*cm, 2*cm]) t_gcs.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 2), ('BOTTOMPADDING', (0,0), (-1,-1), 2), ('LEFTPADDING', (0,0), (-1,-1), 4), ('SPAN', (0,1), (0,4)), ('SPAN', (0,5), (0,9)), ('SPAN', (0,10), (0,15)), ])) story.append(t_gcs) story.append(sp(3)) story.append(sec("GCS SIGNIFICANCE & INTERPRETATION")) story.append(b("Maximum = 15 (normal), Minimum = 3 (deep coma)")) story.append(b("Severity classification:")) story.append(sb("Minor head injury: GCS 14–15")) story.append(sb("Moderate head injury: GCS 9–13")) story.append(sb("Severe head injury: GCS ≤8 — INTUBATE")) story.append(b("Intubation threshold: GCS ≤8 (cannot protect airway)")) story.append(b("GCS ≤8 = coma by definition")) story.append(sp(3)) story.append(sec("GCS IN CHILDREN (Paediatric GCS)")) story.append(b("Verbal component modified:")) story.append(sb("5 – Smiles/coos/babbles appropriately")) story.append(sb("4 – Cries but consolable")) story.append(sb("3 – Persistent inappropriate crying")) story.append(sb("2 – Grunts, agitated, restless")) story.append(sb("1 – No response")) story.append(b("Motor and Eye components same as adult")) story.append(sp(3)) story.append(sec("FALLOVERS / LIMITATIONS OF GCS")) story.append(b("Verbal score unreliable in: intubated patients (record as 'T'), dysphasia, language barrier")) story.append(b("Eye opening affected by: periorbital oedema, blindness")) story.append(b("Motor affected by: spinal cord injury, sedation, alcohol")) story.append(b("Does not assess brainstem reflexes or pupillary response")) story.append(b("Alternative: FOUR score (Full Outline of UnResponsiveness) for intubated patients")) story.append(sp(3)) story.append(note("Write GCS table neatly. Mention fallover points (intubated = T). Mention paediatric modifications.")) story.append(hr()) # ============================================================ # Q67. TRANSIENT LOSS OF CONSCIOUSNESS AFTER RTA (HIGH GCS) (2021/2023) # ============================================================ story.append(make_q_header(67, "Transient Loss of Consciousness after RTA (High GCS)", "2021/2023")) story.append(sp(4)) story.append(sec("DEFINITION")) story.append(p("Transient LOC (TLOC) after RTA = brief loss of consciousness with recovery, with relatively HIGH GCS on arrival (typically 13–15)")) story.append(sp(3)) story.append(sec("CAUSES TO CONSIDER")) story.append(b("Concussion (Mild Traumatic Brain Injury) — MOST COMMON")) story.append(b("Lucid interval: EDH — patient 'talks and dies' (interval before herniation)")) story.append(b("Vasovagal syncope from pain/fear")) story.append(b("Hypoglycaemia, hypotension, arrhythmia")) story.append(b("Post-ictal state")) story.append(sp(3)) story.append(sec("ASSESSMENT (NICE HEAD INJURY GUIDELINES)")) story.append(b("History: duration of LOC, amnesia (anterograde/retrograde), mechanism")) story.append(b("Examination: GCS, pupils, focal neurology, Battle's sign, raccoon eyes, CSF leak")) story.append(b("Indications for CT Head (NICE criteria):")) story.append(sb("GCS <13 at any time, or <15 at 2 hours post-injury")) story.append(sb("Suspected open/depressed skull fracture")) story.append(sb("Signs of base of skull fracture")) story.append(sb("Post-traumatic seizure")) story.append(sb("Focal neurological deficit")) story.append(sb("Vomiting ≥2 episodes")) story.append(sb("Amnesia >30 min for events before impact")) story.append(sb("Age >65, coagulopathy")) story.append(sp(3)) story.append(sec("MANAGEMENT")) story.append(b("If CT normal + GCS 15: discharge with head injury advice card, responsible adult escort")) story.append(b("If CT abnormal: neurosurgical opinion, admit to HDU/ITU")) story.append(b("Concussion: no return to play until asymptomatic (graduated return protocol)")) story.append(b("Intracranial pressure management if raised ICP: 30° head-up, avoid hypotension, mannitol/hypertonic saline")) story.append(sp(3)) story.append(note("The 'lucid interval' of EDH is the classic exam trap — always mention it for high GCS with TLOC")) story.append(hr()) # ============================================================ # Q68. CHEST TRAUMA — COMPLICATIONS & MANAGEMENT (2010/2020) # ============================================================ story.append(make_q_header(68, "Chest Trauma — Complications & Management", "2010/2020")) story.append(sp(4)) story.append(sec("INITIAL ASSESSMENT — ATLS")) story.append(b("Primary survey: identify immediately life-threatening chest injuries")) story.append(b("Secondary survey: detailed examination after stabilisation")) story.append(sp(3)) story.append(sec("IMMEDIATELY LIFE-THREATENING (TREAT IN PRIMARY SURVEY — 'ATOM FC')")) story.append(b("A – Airway obstruction")) story.append(b("T – Tension pneumothorax: tracheal deviation away, absent breath sounds, ↑JVP, shock")) story.append(sb("Rx: immediate needle decompression 2nd ICS MCL → chest drain 5th ICS AAL")) story.append(b("O – Open pneumothorax ('sucking chest wound')")) story.append(sb("Rx: 3-sided occlusive dressing → chest drain remote from wound")) story.append(b("M – Massive haemothorax (>1500 mL): dullness, shock, absent BS")) story.append(sb("Rx: 2 large-bore IVs, blood transfusion, chest drain → thoracotomy if drain >200 mL/hr")) story.append(b("F – Flail chest (see Q70)")) story.append(b("C – Cardiac tamponade: Beck's triad (JVD + muffled HS + hypotension), Kussmaul's sign")) story.append(sb("Rx: pericardiocentesis / emergency thoracotomy")) story.append(sp(3)) story.append(sec("POTENTIALLY LIFE-THREATENING (SECONDARY SURVEY — 'APATCHE')")) story.append(b("A – Aortic injury: widened mediastinum >8cm, mechanism of deceleration")) story.append(b("P – Pulmonary contusion: post-traumatic ARDS, delayed onset")) story.append(b("A – Aortic/great vessel injury")) story.append(b("T – Tracheobronchial injury: persistent air leak despite drain")) story.append(b("C – Cardiac contusion: arrhythmia post blunt chest trauma, troponin elevation")) story.append(b("H – Haemothorax (simple)")) story.append(b("E – Oesophageal injury: very rare, mediastinitis")) story.append(sp(3)) story.append(sec("CHEST DRAIN INSERTION")) story.append(b("Site: 5th ICS, anterior axillary line (safe triangle)")) story.append(b("Technique: Seldinger or surgical; blunt dissection over rib (avoid neurovascular bundle)")) story.append(b("Size: large bore (28–32 Fr) for haemothorax; 16–20 Fr for pneumothorax")) story.append(sp(3)) story.append(note("'ATOM FC' mnemonic for immediate threats is a guaranteed scoring structure")) story.append(hr()) # ============================================================ # Q69. DANGEROUS DOZEN OF THORACIC TRAUMA (2021) # ============================================================ story.append(make_q_header(69, "The 'Dangerous Dozen' of Thoracic Trauma", "2021")) story.append(sp(4)) story.append(sec("DANGEROUS DOZEN — CLASSIFICATION")) story.append(b("GROUP 1: IMMEDIATELY LIFE-THREATENING (The 'Fatal 6') — kill in minutes")) data_dd = [ [Paragraph('<b>#</b>', body_style), Paragraph('<b>Condition</b>', body_style), Paragraph('<b>Key Sign</b>', body_style), Paragraph('<b>Immediate Rx</b>', body_style)], [Paragraph('1', body_style), Paragraph('Airway obstruction', body_style), Paragraph('Stridor, cyanosis', body_style), Paragraph('Secure airway', body_style)], [Paragraph('2', body_style), Paragraph('Tension pneumothorax', body_style), Paragraph('Deviation, JVD, absent BS', body_style), Paragraph('Needle decompression', body_style)], [Paragraph('3', body_style), Paragraph('Open pneumothorax', body_style), Paragraph('Sucking wound', body_style), Paragraph('3-sided dressing', body_style)], [Paragraph('4', body_style), Paragraph('Massive haemothorax', body_style), Paragraph('Dullness, shock', body_style), Paragraph('Chest drain + blood', body_style)], [Paragraph('5', body_style), Paragraph('Flail chest', body_style), Paragraph('Paradoxical movement', body_style), Paragraph('O2 ± ventilation', body_style)], [Paragraph('6', body_style), Paragraph('Cardiac tamponade', body_style), Paragraph('Beck\'s triad', body_style), Paragraph('Pericardiocentesis', body_style)], ] t_dd = Table(data_dd, colWidths=[0.8*cm, 4.5*cm, 5.5*cm, 5.2*cm]) t_dd.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), ACCENT), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [HexColor('#ffe8e8'), white]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_dd) story.append(sp(3)) story.append(b("GROUP 2: POTENTIALLY LIFE-THREATENING (The 'Hidden 6') — detected on secondary survey")) data_dd2 = [ [Paragraph('<b>#</b>', body_style), Paragraph('<b>Condition</b>', body_style), Paragraph('<b>Investigation</b>', body_style), Paragraph('<b>Management</b>', body_style)], [Paragraph('7', body_style), Paragraph('Pulmonary contusion', body_style), Paragraph('CXR, CT, ABG', body_style), Paragraph('O2, ventilation if severe', body_style)], [Paragraph('8', body_style), Paragraph('Aortic disruption', body_style), Paragraph('CT angiography', body_style), Paragraph('TEVAR/open repair', body_style)], [Paragraph('9', body_style), Paragraph('Tracheobronchial injury', body_style), Paragraph('Bronchoscopy', body_style), Paragraph('Surgical repair', body_style)], [Paragraph('10', body_style), Paragraph('Blunt cardiac injury', body_style), Paragraph('ECG, troponin, Echo', body_style), Paragraph('Monitoring, anti-arrhythmic', body_style)], [Paragraph('11', body_style), Paragraph('Oesophageal injury', body_style), Paragraph('Gastrografin swallow', body_style), Paragraph('Surgical repair + drainage', body_style)], [Paragraph('12', body_style), Paragraph('Traumatic diaphragm injury', body_style), Paragraph('CXR, CT', body_style), Paragraph('Surgical repair', body_style)], ] t_dd2 = Table(data_dd2, colWidths=[0.8*cm, 4.5*cm, 5.5*cm, 5.2*cm]) t_dd2.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_BLUE, white]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_dd2) story.append(sp(3)) story.append(note("Learn exactly 6+6=12. Examiners love the numbers. Mention Beck's triad and needle decompression specifically.")) story.append(hr()) # ============================================================ # Q70. FLAIL CHEST (2009/2015) # ============================================================ story.append(make_q_header(70, "Flail Chest — Types, Physiology & Management (esp. Anterior Flail)", "2009/2015")) story.append(sp(4)) story.append(sec("DEFINITION")) story.append(p("Flail chest: fracture of ≥3 consecutive ribs in ≥2 places each, creating a free-floating segment that moves paradoxically with respiration")) story.append(sp(3)) story.append(sec("TYPES")) story.append(b("Anterior flail: bilateral rib/costochondral fractures or sternal fracture — most dangerous")) story.append(b("Lateral flail: unilateral multiple rib fractures")) story.append(b("Posterior flail: rare, protected by large muscle mass")) story.append(sp(3)) story.append(sec("PHYSIOLOGICAL CHANGES")) story.append(b("Paradoxical movement: flail segment moves IN on inspiration, OUT on expiration")) story.append(b("↓ Tidal volume → ↑ work of breathing → respiratory failure")) story.append(b("Underlying pulmonary contusion (main cause of hypoxia — NOT the paradox itself)")) story.append(b("Splinting → poor cough → secretion retention → infection")) story.append(b("Pain → hypoventilation → atelectasis → V/Q mismatch")) story.append(sp(3)) story.append(sec("MANAGEMENT")) story.append(b("Oxygen: high-flow, continuous SpO2 monitoring")) story.append(b("Analgesia (KEY — without this, everything else fails):")) story.append(sb("Epidural analgesia — GOLD STANDARD")) story.append(sb("Intercostal nerve blocks / paravertebral blocks")) story.append(sb("IV opioids, NSAIDs")) story.append(b("Physiotherapy: chest physiotherapy, incentive spirometry")) story.append(b("Positive pressure ventilation (IPPV) — 'internal pneumatic stabilisation':")) story.append(sb("Indications: RR >30, SpO2 <90% on O2, PaO2 <60, PaCO2 >50, exhaustion")) story.append(sb("CPAP/BiPAP first (non-invasive); intubate if failing")) story.append(b("Surgical rib fixation (ORIF): increasingly used, especially for ANTERIOR FLAIL CHEST")) story.append(sb("Indications: failed ventilation weaning, severe chest wall instability, thoracotomy needed anyway")) story.append(sb("Benefits: earlier extubation, less ICU stay, fewer complications")) story.append(sp(3)) story.append(note("Anterior flail = most dangerous, highest mortality. Epidural = gold standard analgesia. ORIF gaining favour.")) story.append(hr()) # ============================================================ # Q71. HAEMOPNEUMOTHORAX (2007) # ============================================================ story.append(make_q_header(71, "Haemopneumothorax", "2007")) story.append(sp(4)) story.append(sec("DEFINITION")) story.append(p("Presence of both blood AND air in the pleural space simultaneously. Combined features of haemothorax + pneumothorax.")) story.append(sp(3)) story.append(sec("CAUSES")) story.append(b("Penetrating chest trauma (knife, gunshot) — most common")) story.append(b("Blunt chest trauma: rib fracture lacerating lung + vessel")) story.append(b("Spontaneous: ruptured emphysematous bleb with vascular tear (rare)")) story.append(sp(3)) story.append(sec("CLINICAL FEATURES")) story.append(b("Dyspnoea, tachycardia, hypoxia")) story.append(b("Reduced breath sounds on affected side")) story.append(b("Upper dullness on percussion (blood), hyper-resonance below (air) — OR mixed signs")) story.append(b("Shock if massive")) story.append(sp(3)) story.append(sec("INVESTIGATIONS")) story.append(b("CXR: opacification (fluid level + collapse)")) story.append(b("FAST ultrasound: rapid bedside detection")) story.append(b("CT chest: gold standard for extent and associated injuries")) story.append(b("ABG: assess gas exchange")) story.append(sp(3)) story.append(sec("MANAGEMENT")) story.append(b("Resuscitation: O2, 2 large-bore IVs, blood transfusion")) story.append(b("Chest drain: SINGLE large-bore drain (28–32 Fr) at 5th ICS, AAL")) story.append(sb("Drains both air and blood simultaneously")) story.append(sb("Measure drainage: >1500 mL immediate OR >200 mL/hr for 2–4 hours → thoracotomy")) story.append(b("Thoracotomy indications:")) story.append(sb("Massive initial haemothorax (>1500 mL)")) story.append(sb("Ongoing haemorrhage >200 mL/hr")) story.append(sb("Retained haemothorax after drain — VATS preferred")) story.append(b("Complications: empyema, fibrothorax, trapped lung")) story.append(sp(3)) story.append(note("Single large-bore drain is the key management point. Know thoracotomy thresholds precisely.")) story.append(hr()) # ============================================================ # Q72. UNDERWATER SEAL DRAINAGE (2021) # ============================================================ story.append(make_q_header(72, "Underwater Seal Drainage", "2021")) story.append(sp(4)) story.append(sec("PRINCIPLE")) story.append(p("A one-way valve system that allows air/fluid to drain from the pleural space while preventing re-entry, using a water seal that acts as a unidirectional valve")) story.append(sp(3)) story.append(sec("COMPONENTS")) story.append(b("Chest drain tube: connected to patient")) story.append(b("Underwater seal bottle: tube submerged 2 cm below water level")) story.append(b("Drainage collection chamber: collects fluid")) story.append(b("Suction port: optional suction -10 to -20 cmH2O")) story.append(b("One-way flutter valve (Heimlich valve): portable alternative")) story.append(sp(3)) story.append(sec("ASSESSMENT OF FUNCTIONING DRAIN")) story.append(b("Swinging: fluid level swings with respiration = patent drain, lung not yet re-expanded")) story.append(b("Bubbling: continuous = air leak present; intermittent = small leak; stopped = lung re-expanded OR drain blocked")) story.append(b("Drain output: record hourly volume and character (blood/serous/chyle)")) story.append(b("No swing + no bubble = blocked or lung fully re-expanded (confirm with CXR)")) story.append(sp(3)) story.append(sec("REMOVAL CRITERIA")) story.append(b("Pneumothorax: no air leak for 24 hrs + CXR shows re-expanded lung")) story.append(b("Haemothorax: drainage <100–150 mL/24 hrs")) story.append(b("Removal technique: remove at end of expiration (or Valsalva) — immediate purse-string or mattress suture")) story.append(sp(3)) story.append(sec("COMPLICATIONS")) story.append(b("Blocked drain, subcutaneous emphysema, infection/empyema, re-expansion pulmonary oedema")) story.append(b("Misplacement: intra-parenchymal, intra-abdominal, in chest wall")) story.append(sp(3)) story.append(note("Examiner tests: swing = patent; bubbling = air leak. NEVER clamp a bubbling drain (tension PTX risk).")) story.append(hr()) # ============================================================ # Q73. NOMAT — NON-OPERATIVE MANAGEMENT OF SOLID ORGAN INJURIES # ============================================================ story.append(make_q_header(73, "NOMAT — Non-Operative Management of Blunt Abdominal Trauma", "")) story.append(sp(4)) story.append(sec("DEFINITION & RATIONALE")) story.append(p("Non-operative management (NOM) has become standard for haemodynamically STABLE patients with solid organ injuries from blunt trauma, avoiding surgery and its complications")) story.append(b("Success rate: liver 80–90%, spleen 60–80%, kidney >90%")) story.append(sp(3)) story.append(sec("PRE-HOSPITAL & INITIAL ASSESSMENT")) story.append(b("Mechanism: RTA, fall, sports, assault")) story.append(b("FAST ultrasound: bedside, rapid, detects free fluid")) story.append(b("Primary survey (ATLS ABCDE): haemodynamic status determines NOM candidacy")) story.append(b("HAEMODYNAMIC STABILITY = prerequisite for NOM")) story.append(sp(3)) story.append(sec("COMMON SOLID ORGANS & GRADING (AAST Scale I–V)")) data_organs = [ [Paragraph('<b>Organ</b>', body_style), Paragraph('<b>NOM criteria</b>', body_style), Paragraph('<b>Failure rate</b>', body_style)], [Paragraph('Spleen', body_style), Paragraph('Haemodynamically stable, Grade I–III (Grade IV/V with angioembolization)', body_style), Paragraph('10–20%', body_style)], [Paragraph('Liver', body_style), Paragraph('Stable, any grade; angioembolization for Grade III–V', body_style), Paragraph('5–15%', body_style)], [Paragraph('Kidney', body_style), Paragraph('Stable, most grades; urinary extravasation can be stented', body_style), Paragraph('<10%', body_style)], ] t_org = Table(data_organs, colWidths=[3*cm, 9.5*cm, 3*cm]) t_org.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(t_org) story.append(sp(3)) story.append(sec("NOM PROTOCOL")) story.append(b("ICU admission: continuous monitoring, serial ABCs, hourly urine output")) story.append(b("Serial abdominal examinations (6-hourly)")) story.append(b("Serial FBC, clotting, LFT, amylase (6–12 hourly)")) story.append(b("CT abdomen + pelvis with IV contrast: gold standard for grading")) story.append(b("Angioembolization: for active contrast blush/pseudoaneurysm (IR procedure)")) story.append(b("Bed rest, NBM initially")) story.append(sp(3)) story.append(sec("FAILURE OF NOM — CONVERT TO SURGERY")) story.append(b("Haemodynamic instability despite resuscitation")) story.append(b("Peritonism / worsening abdominal signs")) story.append(b("Failure of angioembolization")) story.append(b("Associated hollow viscus injury (not suitable for NOM)")) story.append(b("Transfusion requirement >4 units pRBC in 24 hrs")) story.append(sp(3)) story.append(note("Key: haemodynamic stability is the sine qua non of NOM. Angioembolization = modern adjunct. AAST grading.")) story.append(hr()) # ============================================================ # Q74 & Q75. SPLENIC INJURY — GRADES & MANAGEMENT (2021) # ============================================================ story.append(make_q_header(74, "Splenic Injury — Grading & Management / Blunt Abdominal Trauma in Shock", "2021")) story.append(sp(4)) story.append(sec("AAST SPLENIC INJURY GRADING")) data_spleen = [ [Paragraph('<b>Grade</b>', body_style), Paragraph('<b>Description</b>', body_style)], [Paragraph('I', body_style), Paragraph('Subcapsular haematoma <10% surface area; capsular laceration <1 cm depth', body_style)], [Paragraph('II', body_style), Paragraph('Subcapsular haematoma 10–50%; parenchymal laceration 1–3 cm', body_style)], [Paragraph('III', body_style), Paragraph('Subcapsular haematoma >50% or expanding; laceration >3 cm or trabecular vessel', body_style)], [Paragraph('IV', body_style), Paragraph('Laceration of segmental/hilar vessels with >25% devascularisation', body_style)], [Paragraph('V', body_style), Paragraph('Shattered spleen OR hilar vascular injury (complete devascularisation)', body_style)], ] t_sp = Table(data_spleen, colWidths=[2*cm, 13.5*cm]) t_sp.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_sp) story.append(sp(3)) story.append(sec("MANAGEMENT ALGORITHM")) story.append(b("HAEMODYNAMICALLY STABLE:")) story.append(sb("Grade I–II: NOM (bed rest, observation)")) story.append(sb("Grade III: NOM ± angioembolization")) story.append(sb("Grade IV–V: angioembolization if stable; surgery if failing")) story.append(b("HAEMODYNAMICALLY UNSTABLE:")) story.append(sb("FAST positive → Emergency laparotomy (no time for CT)")) story.append(sb("Damage control: splenorrhaphy (repair) or splenectomy")) story.append(sp(3)) story.append(sec("Q75: BLUNT TRAUMA ABDOMEN IN SHOCK — MANAGEMENT")) story.append(b("Immediate actions:")) story.append(sb("O2, 2 large-bore IV access, send FBC/G+S/clotting/BM")) story.append(sb("1L warm Hartmann's / activate MTP if needed")) story.append(sb("FAST ultrasound: free fluid → emergency laparotomy")) story.append(sb("If no FAST available → DPL (diagnostic peritoneal lavage)")) story.append(b("Do NOT delay for CT if haemodynamically unstable")) story.append(b("Emergency laparotomy: midline incision, 4-quadrant packing, damage control")) story.append(b("Permissive hypotension: SBP 80–90 until haemostasis achieved")) story.append(sp(3)) story.append(note("FAST + haemodynamic status directs all decisions. Unstable = theatre, stable = CT + NOM.")) story.append(hr()) # ============================================================ # Q76. DIAGNOSTIC MODALITIES OF BLUNT ABDOMINAL TRAUMA (2016) # ============================================================ story.append(make_q_header(76, "Diagnostic Modalities of Blunt Abdominal Trauma", "2016")) story.append(sp(4)) data_diag = [ [Paragraph('<b>Investigation</b>', body_style), Paragraph('<b>Sensitivity</b>', body_style), Paragraph('<b>Advantages</b>', body_style), Paragraph('<b>Limitations</b>', body_style)], [Paragraph('Clinical exam', body_style), Paragraph('65% (unreliable alone)', body_style), Paragraph('Immediate, no equipment', body_style), Paragraph('Unreliable in unconscious, obese, intoxicated', body_style)], [Paragraph('FAST USG', body_style), Paragraph('88–98% for free fluid', body_style), Paragraph('Bedside, fast, no radiation, repeatable', body_style), Paragraph('Operator dependent, misses retroperitoneal, bowel injury', body_style)], [Paragraph('DPL', body_style), Paragraph('98% sensitive', body_style), Paragraph('Rapid, highly sensitive', body_style), Paragraph('Invasive, non-specific, non-therapeutic', body_style)], [Paragraph('CT Abdomen (contrast)', body_style), Paragraph('97–98% specific', body_style), Paragraph('Gold standard, grades injury, retroperitoneum, direction of management', body_style), Paragraph('Needs stability, radiation, contrast risk', body_style)], [Paragraph('Plain AXR', body_style), Paragraph('Low', body_style), Paragraph('Fast, cheap', body_style), Paragraph('Limited diagnostic value', body_style)], [Paragraph('Diagnostic laparoscopy', body_style), Paragraph('High', body_style), Paragraph('Diagnostic + therapeutic', body_style), Paragraph('Requires GA, not for unstable', body_style)], ] t_diag = Table(data_diag, colWidths=[3*cm, 2.5*cm, 5.5*cm, 5.5*cm]) t_diag.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 7.5), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(t_diag) story.append(sp(3)) story.append(sec("DPL CRITERIA FOR POSITIVE RESULT")) story.append(b(">10 mL gross blood on aspiration")) story.append(b("RBC >100,000 cells/mm³ (blunt) or >10,000 (penetrating)")) story.append(b("WBC >500 cells/mm³")) story.append(b("Bile, bacteria, food fibres")) story.append(sp(3)) story.append(note("CT is gold standard in stable patients. FAST is first-line. DPL now largely replaced by FAST + CT.")) story.append(hr()) # ============================================================ # Q77. APPROACHES & INDICATIONS FOR LAPAROTOMY IN BLUNT ABDOMINAL TRAUMA # ============================================================ story.append(make_q_header(77, "Approaches & Indications for Laparotomy in Blunt Abdominal Trauma", "")) story.append(sp(4)) story.append(sec("INDICATIONS FOR EMERGENCY LAPAROTOMY")) story.append(b("Absolute indications:")) story.append(sb("Haemodynamic instability + FAST positive (free fluid)")) story.append(sb("Peritonitis (involuntary guarding, rigidity, rebound)")) story.append(sb("DPL positive (>10 mL blood, RBC >100,000/mm³)")) story.append(sb("Evisceration or impalement")) story.append(sb("Diaphragmatic rupture")) story.append(sb("Free air on imaging (hollow viscus injury)")) story.append(b("Relative indications:")) story.append(sb("Failure of NOM (worsening vitals, increasing transfusion requirements)")) story.append(sb("Unexplained falling Hb")) story.append(sb("CT evidence of hollow viscus injury, mesenteric tear")) story.append(sp(3)) story.append(sec("SURGICAL APPROACH")) story.append(b("Incision: midline laparotomy — fastest, best exposure")) story.append(b("Technique — DAMAGE CONTROL LAPAROTOMY:")) story.append(sb("Step 1: Enter abdomen, identify and control haemorrhage — 4 quadrant packing")) story.append(sb("Step 2: Control contamination — staple bowel, ligate bile duct if needed")) story.append(sb("Step 3: Temporary closure — Bogota bag or negative pressure wound therapy (VAWC)")) story.append(sb("Step 4: ICU resuscitation — correct triad")) story.append(sb("Step 5: Return to theatre in 24–48 hrs for definitive repair")) story.append(b("Laparoscopy: for stable patients, diagnostic + limited therapeutic")) story.append(sp(3)) story.append(sec("DAMAGE CONTROL SEQUENCE (3-PHASE DCS)")) story.append(b("Phase 1: Abbreviated laparotomy — stop bleeding + contamination")) story.append(b("Phase 2: ICU — warm, correct coagulopathy, prevent MODS")) story.append(b("Phase 3: Definitive surgery when physiology normalised")) story.append(sp(3)) story.append(note("Bogota bag / open abdomen management = scoring point. Damage control = 3 phases.")) story.append(hr()) # ============================================================ # Q78. GRADES OF LIVER INJURY & MANAGEMENT WITH ACTIVE BLEED # ============================================================ story.append(make_q_header(78, "Grades of Liver Injury & Management Algorithm with Active Haemorrhage", "")) story.append(sp(4)) story.append(sec("AAST LIVER INJURY GRADING")) data_liver = [ [Paragraph('<b>Grade</b>', body_style), Paragraph('<b>Description</b>', body_style), Paragraph('<b>Mortality</b>', body_style)], [Paragraph('I', body_style), Paragraph('Haematoma <10% surface area; capsular tear <1 cm depth', body_style), Paragraph('<1%', body_style)], [Paragraph('II', body_style), Paragraph('Haematoma 10–50%; parenchymal laceration 1–3 cm, <10 cm length', body_style), Paragraph('<1%', body_style)], [Paragraph('III', body_style), Paragraph('Haematoma >50% or expanding; laceration >3 cm depth', body_style), Paragraph('5%', body_style)], [Paragraph('IV', body_style), Paragraph('Parenchymal disruption 25–75% of hepatic lobe; single lobe juxtahepatic vein', body_style), Paragraph('25%', body_style)], [Paragraph('V', body_style), Paragraph('Parenchymal disruption >75% single lobe; juxtahepatic venous injury', body_style), Paragraph('50%', body_style)], [Paragraph('VI', body_style), Paragraph('Hepatic avulsion (fatal)', body_style), Paragraph('>95%', body_style)], ] t_liv = Table(data_liver, colWidths=[2*cm, 11*cm, 2.5*cm]) t_liv.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_liv) story.append(sp(3)) story.append(sec("MANAGEMENT ALGORITHM")) story.append(b("HAEMODYNAMICALLY STABLE:")) story.append(sb("Grade I–III: NOM — bed rest, ICU monitoring, serial CT")) story.append(sb("Grade III–V with blush: angioembolization (IR)")) story.append(b("HAEMODYNAMICALLY UNSTABLE / ACTIVE BLEED:")) story.append(sb("Emergency laparotomy — midline incision")) story.append(sb("Manual compression + packing (4 quadrant)")) story.append(sb("Pringle manoeuvre: compress hepatoduodenal ligament (portal vein + hepatic artery) — max 15 min warm")) story.append(sb("Control bleeding: direct suture, argon beam, fibrin glue")) story.append(sb("Major injury: peri-hepatic packing + temporary closure (damage control)")) story.append(sb("Return in 48 hrs for pack removal + definitive surgery")) story.append(b("Complications: bile leak, haemobilia, hepatic abscess, biloma")) story.append(sp(3)) story.append(note("Pringle manoeuvre = guaranteed scoring point. Know warm ischaemia limit (15 min). Damage control = pack + come back.")) story.append(hr()) # ============================================================ # Q79. DUODENAL INJURIES (2025, 2021, 2014) # ============================================================ story.append(make_q_header(79, "Traumatic Duodenal Injuries — Classification & Management", "2025/2021/2014")) story.append(sp(4)) story.append(sec("ANATOMY NOTE")) story.append(p("Duodenum = 2nd most common hollow viscus injured in blunt abdominal trauma. 80% retroperitoneal — hence easily missed on initial assessment.")) story.append(sp(3)) story.append(sec("CLASSIFICATION — AAST DUODENAL INJURY GRADING")) data_duo = [ [Paragraph('<b>Grade</b>', body_style), Paragraph('<b>Description</b>', body_style)], [Paragraph('I', body_style), Paragraph('Haematoma: single portion; laceration: partial thickness, no perforation', body_style)], [Paragraph('II', body_style), Paragraph('Haematoma: multiple portions; laceration: <50% circumference', body_style)], [Paragraph('III', body_style), Paragraph('Laceration: 50–75% circumference D2; 50–100% D1, D3, D4', body_style)], [Paragraph('IV', body_style), Paragraph('Laceration: >75% circumference D2, involves ampulla or CBD', body_style)], [Paragraph('V', body_style), Paragraph('Massive disruption of duodenopancreatic complex; devascularisation of duodenum', body_style)], ] t_duo = Table(data_duo, colWidths=[2*cm, 13.5*cm]) t_duo.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_duo) story.append(sp(3)) story.append(sec("MANAGEMENT")) story.append(b("Haematoma (Grade I–II): conservative — NGT decompression, TPN, serial imaging; resolves in 2–3 weeks")) story.append(b("Perforation (Grade I–II): primary repair (debridement + transverse closure)")) story.append(b("Grade III–IV:")) story.append(sb("Primary repair with pyloric exclusion (staple pylorus + gastrojejunostomy to divert)")) story.append(sb("Tube duodenostomy: jejunostomy tube for antegrade feeding + duodenal drainage")) story.append(b("Grade IV–V (complex):")) story.append(sb("Pancreaticoduodenectomy (Whipple) — rarely needed acutely")) story.append(sb("Duodenal diverticulisation: pyloric exclusion + vagotomy + Billroth II (complex)")) story.append(b("Key adjuncts: wide drainage, retroperitoneal drains, jejunostomy for feeding")) story.append(sp(3)) story.append(note("'Missed duodenal injury' = classic exam scenario. Pyloric exclusion = scoring point for complex injuries.")) story.append(hr()) # ============================================================ # Q80 & Q81. PANCREATIC TRAUMA (2021, 2007/2025) # ============================================================ story.append(make_q_header(80, "Pancreatic Trauma — Classification, Management & Pancreaticoduodenal Injury", "2021/2007/2025")) story.append(sp(4)) story.append(sec("PANCREATIC INJURY — AAST GRADING")) data_pan = [ [Paragraph('<b>Grade</b>', body_style), Paragraph('<b>Description</b>', body_style)], [Paragraph('I', body_style), Paragraph('Minor contusion/laceration without duct injury', body_style)], [Paragraph('II', body_style), Paragraph('Major contusion/laceration without duct injury or tissue loss', body_style)], [Paragraph('III', body_style), Paragraph('Distal transection or parenchymal injury WITH duct injury', body_style)], [Paragraph('IV', body_style), Paragraph('Proximal transection or parenchymal injury involving ampulla', body_style)], [Paragraph('V', body_style), Paragraph('Massive disruption of pancreatic head', body_style)], ] t_pan = Table(data_pan, colWidths=[2*cm, 13.5*cm]) t_pan.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), MID_BLUE), ('TEXTCOLOR', (0,0), (-1,0), white), ('FONTSIZE', (0,0), (-1,-1), 8), ('ROWBACKGROUNDS', (0,1), (-1,-1), [white, LIGHT_GRAY]), ('GRID', (0,0), (-1,-1), 0.4, BORDER_GRAY), ('TOPPADDING', (0,0), (-1,-1), 3), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('LEFTPADDING', (0,0), (-1,-1), 4), ])) story.append(t_pan) story.append(sp(3)) story.append(sec("KEY INVESTIGATIONS")) story.append(b("Serum amylase: raised in 90% — but non-specific; can be normal early")) story.append(b("Serum lipase: more specific than amylase")) story.append(b("CT abdomen (gold standard for initial assessment): may miss duct injury")) story.append(b("MRCP / ERCP: gold standard for main pancreatic duct integrity — KEY DECISION POINT")) story.append(b("Intraoperative pancreatography if needed")) story.append(sp(3)) story.append(sec("MANAGEMENT ALGORITHM (Q80 — Traumatic Pancreatic Injury, 2021)")) story.append(b("Grade I–II (No duct injury): conservative — NPO, TPN/NJ feeds, octreotide, drainage")) story.append(b("Grade III (Distal duct injury — LEFT of SMV):")) story.append(sb("Distal pancreatectomy ± splenectomy")) story.append(sb("Roux-en-Y pancreaticojejunostomy (alternative)")) story.append(b("Grade IV–V (Proximal duct injury — RIGHT of SMV, head involved):")) story.append(sb("Attempted Whipple (pancreaticoduodenectomy) — definitive but high mortality")) story.append(sb("Damage control: external drainage + delayed reconstruction")) story.append(sb("Pancreatectomy + islet cell transplant in selected cases")) story.append(b("ERCP + stenting: for Grade II–III, selected stable patients")) story.append(sp(3)) story.append(sec("Q81 — PANCREATICODUODENAL INJURY (2007/2025)")) story.append(b("Definition: combined injury to both pancreas (Grade IV–V) and duodenum")) story.append(b("Most complex abdominal injury; mortality 20–40%")) story.append(b("Management options:")) story.append(sb("1. Damage control: wide drainage, pack, delayed definitive repair")) story.append(sb("2. Duodenal repair + pancreatic drainage (Grade III pancreas + Grade I–II duodenum)")) story.append(sb("3. Pyloric exclusion with Roux-en-Y: for complex duodenal + pancreatic head injury")) story.append(sb("4. Pancreaticoduodenectomy (Whipple): only if pancreatic head + CBD/ampulla destroyed — emergency Whipple has 30–50% mortality")) story.append(b("Complications: pancreatic fistula (most common), pseudocyst, abscess, delayed haemorrhage, DM")) story.append(sp(3)) story.append(note("The KEY question in all pancreatic trauma is: IS THE MAIN PANCREATIC DUCT INJURED? This determines surgery vs conservative. SMV is the dividing line (left = distal pancreatectomy).")) # ============================================================ # FOOTER NOTE # ============================================================ story.append(sp(8)) footer_data = [[Paragraph('Bailey & Love\'s Short Practice of Surgery, 28th Ed | MS General Surgery Examination | Questions 62–81', ParagraphStyle('footer', fontSize=7.5, textColor=HexColor('#666666'), alignment=TA_CENTER))]] ft = Table(footer_data, colWidths=[17*cm]) ft.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), LIGHT_GRAY), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LINEABOVE', (0,0), (-1,0), 0.5, BORDER_GRAY), ])) story.append(ft) doc.build(story) print("PDF generated successfully!") PYEOF echo "Script written"
cd /home/daytona/workspace/surgery-exam && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/surgery-exam/MS_Surgery_Exam_Answers_Q62_81.pdf
MS Surgery Exam Answers Q62 81
PDF Document · PDF
| # | Question | Key Scoring Points Included |
|---|---|---|
| Q62 | Post-operative Ventilatory Support | Modes (CMV/SIMV/PSV/CPAP/BiPAP), lung-protective strategy, weaning ABCDE criteria, VAP |
| Q63 | Triage in Disaster & Polytrauma | START triage (colour-coded table), SALT triage, ATLS ABCDE primary survey |
| Q64 | Coagulopathy of Trauma & DCR | Lethal triad, 1:1:1 resuscitation, TXA (CRASH-2), permissive hypotension, damage control surgery 3 phases |
| Q65/66 | Head Trauma + GCS (Adults & Children) | Full GCS table, severity classification, paediatric modifications, fallovers/limitations |
| Q67 | Transient LOC after RTA (High GCS) | Lucid interval/EDH, NICE CT criteria, concussion management |
| Q68 | Chest Trauma Complications | ATOM FC (fatal 6) - immediate threats + management, Beck's triad, chest drain indications |
| Q69 | Dangerous Dozen Thoracic Trauma | Fatal 6 + Hidden 6 in tables with signs, investigations, and immediate management |
| Q70 | Flail Chest (esp. Anterior) | Types, paradoxical physiology, epidural analgesia as gold standard, ORIF indications |
| Q71 | Haemopneumothorax | Single large-bore drain, thoracotomy thresholds (>1500 mL / >200 mL/hr) |
| Q72 | Underwater Seal Drainage | Swing vs bubble interpretation, removal criteria, never clamp a bubbling drain |
| Q73 | NOMAT | Pre-hospital assessment, AAST grading, angioembolization, NOM failure criteria |
| Q74/75 | Splenic Injury + Blunt Abdomen in Shock | AAST spleen grades, NOM vs surgery algorithm, emergency laparotomy decision |
| Q76 | Diagnostic Modalities Blunt Abdominal Trauma | FAST/DPL/CT comparison table, DPL positive criteria |
| Q77 | Laparotomy Approaches & Indications | Absolute vs relative indications, damage control laparotomy 5-step, Bogota bag |
| Q78 | Liver Injury Grades & Active Bleed | AAST I-VI grading with mortality, Pringle manoeuvre (15 min limit), packing |
| Q79 | Duodenal Injuries | AAST grading, pyloric exclusion for Grade III-IV, diverticulisation |
| Q80/81 | Pancreatic Trauma + Pancreaticoduodenal Injury | AAST grading, SMV as dividing line, distal pancreatectomy vs Whipple, emergency drainage |