Question-Answer in the pdf form
mkdir -p /tmp/workspace/surgery-qa && ls /tmp/workspace/surgery-qa/
~/surgery-qa/generate_qa_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer,
Table, TableStyle, HRFlowable, PageBreak,
KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus.flowables import HRFlowable
OUTPUT = "/tmp/workspace/surgery-qa/General_Surgery_QA.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm,
leftMargin=2*cm,
topMargin=2.5*cm,
bottomMargin=2.5*cm,
title="General Surgery Paper I - Q&A",
author="Orris Medical AI"
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
'Title', parent=styles['Title'],
fontSize=16, textColor=colors.HexColor('#1a3a5c'),
spaceAfter=4, alignment=TA_CENTER, leading=20
)
subtitle_style = ParagraphStyle(
'Subtitle', parent=styles['Normal'],
fontSize=11, textColor=colors.HexColor('#2c6ea6'),
spaceAfter=2, alignment=TA_CENTER, fontName='Helvetica-Bold'
)
exam_info_style = ParagraphStyle(
'ExamInfo', parent=styles['Normal'],
fontSize=9, textColor=colors.HexColor('#555555'),
alignment=TA_CENTER, spaceAfter=2
)
section_header_style = ParagraphStyle(
'SectionHeader', parent=styles['Normal'],
fontSize=13, textColor=colors.white,
fontName='Helvetica-Bold',
backColor=colors.HexColor('#1a3a5c'),
spaceBefore=12, spaceAfter=6,
leftIndent=0, rightIndent=0,
leading=18, borderPadding=(5, 8, 5, 8)
)
question_style = ParagraphStyle(
'Question', parent=styles['Normal'],
fontSize=10.5, textColor=colors.HexColor('#1a3a5c'),
fontName='Helvetica-Bold',
spaceBefore=10, spaceAfter=4,
leftIndent=0
)
subq_style = ParagraphStyle(
'SubQuestion', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#2c6ea6'),
fontName='Helvetica-BoldOblique',
spaceBefore=6, spaceAfter=2,
leftIndent=10
)
answer_style = ParagraphStyle(
'Answer', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#222222'),
leading=15, spaceAfter=4,
leftIndent=15, rightIndent=5,
alignment=TA_JUSTIFY
)
bullet_style = ParagraphStyle(
'Bullet', parent=styles['Normal'],
fontSize=10, textColor=colors.HexColor('#222222'),
leading=14, spaceAfter=2,
leftIndent=25, firstLineIndent=-12
)
table_header_style = ParagraphStyle(
'TableHeader', parent=styles['Normal'],
fontSize=9, textColor=colors.white,
fontName='Helvetica-Bold', alignment=TA_CENTER
)
table_cell_style = ParagraphStyle(
'TableCell', parent=styles['Normal'],
fontSize=9, leading=12, alignment=TA_CENTER
)
note_style = ParagraphStyle(
'Note', parent=styles['Normal'],
fontSize=9, textColor=colors.HexColor('#7b4c00'),
fontName='Helvetica-Oblique',
leftIndent=15, spaceAfter=4,
backColor=colors.HexColor('#fff9e6'),
borderPadding=(4, 6, 4, 6)
)
marks_style = ParagraphStyle(
'Marks', parent=styles['Normal'],
fontSize=9, textColor=colors.HexColor('#b30000'),
fontName='Helvetica-Bold', alignment=TA_LEFT
)
def SH(text):
return Paragraph(f" {text}", section_header_style)
def Q(text):
return Paragraph(text, question_style)
def SQ(text):
return Paragraph(text, subq_style)
def A(*lines):
return [Paragraph(line, answer_style) for line in lines]
def B(*items):
return [Paragraph(f"• {item}", bullet_style) for item in items]
def SP(h=0.3):
return Spacer(1, h*cm)
def HR():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#cccccc'), spaceAfter=4)
def marks(text):
return Paragraph(text, marks_style)
# ──────────────────────────────────────────────────────────────────────────────
story = []
# HEADER
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("TEERTHANKER MAHAVEER MEDICAL COLLEGE & RESEARCH CENTRE", title_style))
story.append(Paragraph("Delhi Road, Moradabad (U.P.) 244001", subtitle_style))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("Department of General Surgery", subtitle_style))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"3rd Prof Part II (MBBS) — First Terminal Examination | 9th Semester (Batch 2021-22)",
exam_info_style
))
story.append(Paragraph(
"General Surgery Paper I | Duration: 3 Hours | Total: 80 Marks | Date: 26/06/2025",
exam_info_style
))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1a3a5c'), spaceAfter=8))
story.append(Paragraph("<i>Model Answer Key — Prepared by Orris Medical AI (Sources: Schwartz's Principles of Surgery 11e, Mulholland & Greenfield's Surgery 7e, Bailey & Love 28e, Sabiston 21e, Robbins Pathology 10e, Harrison's 22e)</i>",
ParagraphStyle('Ref', parent=styles['Normal'], fontSize=8, textColor=colors.gray, alignment=TA_CENTER)))
story.append(Spacer(1, 0.4*cm))
# ══════════════════════════════════════════════════════════════════════════════
# LONG QUESTIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(SH("LONG QUESTIONS (20 Marks Each)"))
story.append(SP(0.4))
# ── QUESTION 1 ────────────────────────────────────────────────────────────────
story.append(Q("QUESTION 1 (20 Marks)"))
story.append(Paragraph(
"A 25-year-old male is brought to the TMU emergency after a high-speed motorbike accident. "
"He is conscious but pale and anxious. Pulse: 110 bpm, BP: 90/60 mmHg, RR: 24 breaths/min, "
"SpO₂: 92% on RA. Deep laceration on left thigh with active bleeding and abdominal pain.",
ParagraphStyle('Case', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, rightIndent=10,
borderPadding=(6,8,6,8), spaceAfter=8, leading=15, textColor=colors.HexColor('#1a3a5c'))
))
story.append(SP(0.2))
# ─ 1.1 ATLS
story.append(SQ("1. Initial approach according to ATLS Protocol [5 marks]"))
story.append(SP(0.1))
story.append(*A("The <b>Advanced Trauma Life Support (ATLS)</b> protocol provides a structured, prioritized approach to trauma. The primary survey follows the <b>ABCDE mnemonic</b>, with simultaneous resuscitation:"))
story.append(SP(0.1))
atls_data = [
[Paragraph("<b>Step</b>", table_header_style), Paragraph("<b>Action</b>", table_header_style), Paragraph("<b>In This Patient</b>", table_header_style)],
["A — Airway\n(+C-spine)", "Assess patency; jaw thrust/chin lift;\nOropharyngeal/nasopharyngeal airway;\nC-spine immobilization (hard collar)", "Patient is conscious — airway likely patent;\nApply cervical collar; supplemental O₂ via NRM"],
["B — Breathing", "Inspect chest wall; auscultate;\nRule out pneumo/haemothorax", "RR 24, SpO₂ 92% — high-flow O₂ 15 L/min;\nRule out pneumothorax/rib fractures"],
["C — Circulation\n(Hemorrhage)", "Control external bleeding;\n2 large-bore IVs (14-16G antecubital);\nCrystalloid/blood resuscitation;\nAssess perfusion", "Active thigh laceration — direct pressure;\nBP 90/60, HR 110 — Class III shock;\n1-2 L warmed NS/RL; cross-match; transfuse"],
["D — Disability", "GCS, pupils, motor response;\nBlood glucose", "Assess GCS; check pupils; glucose"],
["E — Exposure", "Completely undress patient;\nLog-roll to check back;\nMaintain normothermia", "Remove clothes; examine abdomen fully;\nWarm blankets to prevent hypothermia"],
]
atls_table = Table(atls_data, colWidths=[3.5*cm, 7.5*cm, 7.5*cm])
atls_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f5f9ff'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(atls_table)
story.append(SP(0.2))
story.append(*A("<b>Secondary survey</b> follows once life-threatening injuries are addressed: head-to-toe examination, AMPLE history (Allergies, Medications, Past history, Last meal, Events), and targeted investigations."))
story.append(SP(0.3))
story.append(HR())
# ─ 1.2 Pathophysiology of Shock
story.append(SQ("2. Pathophysiology of Shock [5 marks]"))
story.append(SP(0.1))
story.append(*A("Shock is defined as <b>inadequate tissue perfusion resulting in cellular oxygen delivery insufficient to meet metabolic demands</b>, leading to anaerobic metabolism and cellular dysfunction."))
story.append(SP(0.15))
story.append(*A("<b>Sequence of events in hemorrhagic/hypovolemic shock:</b>"))
story.append(*B(
"<b>Trigger:</b> Hemorrhage → ↓ circulating blood volume → ↓ venous return → ↓ preload",
"<b>↓ Cardiac Output</b> → ↓ systemic oxygen delivery (DO₂ = CO × CaO₂)",
"<b>Compensatory mechanisms (early shock):</b> Baroreceptor activation → SNS stimulation → tachycardia, vasoconstriction (↑ SVR), catecholamine release (adrenaline, noradrenaline)",
"<b>Neuroendocrine response:</b> RAAS activation → angiotensin II → aldosterone → Na⁺/water retention; ADH (vasopressin) release → water reabsorption; cortisol and glucagon release for substrate mobilization",
"<b>Cellular level:</b> Oxygen debt → anaerobic glycolysis → lactic acidosis (↑ lactate, ↓ pH) → ATP depletion → failure of Na⁺/K⁺-ATPase pump → cellular swelling",
"<b>Microcirculation:</b> Pre-capillary sphincter constriction → maldistribution of flow → ischaemia-reperfusion injury → endothelial dysfunction → capillary leak syndrome",
"<b>Inflammatory cascade:</b> Release of cytokines (TNF-α, IL-1, IL-6) → neutrophil activation → endothelial injury → SIRS/MODS if untreated",
"<b>End-organ failure:</b> Acute tubular necrosis (kidneys), ARDS (lungs), hepatic failure, gut mucosal breakdown → bacterial translocation"
))
story.append(SP(0.2))
story.append(SP(0.3))
story.append(HR())
# ─ 1.3 Classification of Shock
story.append(SQ("3. Classification of Shock [5 marks]"))
story.append(SP(0.1))
story.append(*A("<b>Weil and Shubin (1971)</b> classification — four categories (overlap is common):"))
story.append(SP(0.15))
shock_data = [
[Paragraph("<b>Type</b>", table_header_style), Paragraph("<b>Mechanism</b>", table_header_style), Paragraph("<b>Examples</b>", table_header_style), Paragraph("<b>Haemodynamics</b>", table_header_style)],
["1. Hypovolemic\n(incl. Hemorrhagic)", "↓ Circulating volume\n→ ↓ preload → ↓ CO", "Trauma, GI bleed, burns,\ndehydration, peritonitis", "↓CO, ↑SVR, ↓PCWP,\ntachycardia, cold extremities"],
["2. Cardiogenic", "Pump failure\n→ ↓ CO", "MI, arrhythmia,\ncardiomyopathy, valve failure", "↓CO, ↑SVR, ↑PCWP,\nS3 gallop, pulmonary oedema"],
["3. Distributive\n(Vasogenic)", "Pathological vasodilation\n→ maldistribution of flow", "Septic, anaphylactic,\nneurogenic shock", "↑CO (early sepsis), ↓SVR,\nwarm flushed skin"],
["4. Obstructive", "Mechanical obstruction\nto blood flow", "Tension pneumothorax,\ncardiac tamponade, massive PE", "↓CO, ↑SVR, JVD,\nmuffled heart sounds"],
]
shock_table = Table(shock_data, colWidths=[3.8*cm, 4.5*cm, 5*cm, 5.2*cm])
shock_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#2c6ea6')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f5f9ff'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(shock_table)
story.append(SP(0.2))
story.append(*A("<b>ATLS Classification of Hemorrhagic Shock</b> (by % blood loss; estimated blood volume ~4,900 mL in 70 kg adult):"))
story.append(SP(0.1))
haem_data = [
[Paragraph("<b>Class</b>", table_header_style), Paragraph("<b>Blood Loss</b>", table_header_style), Paragraph("<b>HR</b>", table_header_style), Paragraph("<b>BP</b>", table_header_style), Paragraph("<b>RR</b>", table_header_style), Paragraph("<b>Mental Status</b>", table_header_style), Paragraph("<b>Urine Output</b>", table_header_style)],
["I", "<15%\n(<750 mL)", "<100", "Normal", "14-20", "Normal", ">30 mL/hr"],
["II", "15-30%\n(750-1500 mL)", "100-120", "Normal/↓", "20-30", "Anxious", "20-30 mL/hr"],
["III", "30-40%\n(1500-2000 mL)", "120-140", "↓", "30-40", "Confused", "5-15 mL/hr"],
["IV", ">40%\n(>2000 mL)", ">140", "↓↓", ">35", "Lethargic", "<5 mL/hr"],
]
haem_table = Table(haem_data, colWidths=[1.5*cm, 2.8*cm, 1.8*cm, 2.0*cm, 1.8*cm, 3.0*cm, 2.6*cm])
haem_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#8b0000')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fff5f5'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('BACKGROUND', (0,3), (-1,3), colors.HexColor('#ffe0e0')), # Class III highlighted
]))
story.append(haem_table)
story.append(SP(0.15))
story.append(Paragraph(
"★ This patient: HR 110, BP 90/60, RR 24 with active thigh bleeding = <b>Class III Hemorrhagic Shock</b> "
"(loss ~30-40% blood volume). Requires immediate crystalloid + blood transfusion.",
ParagraphStyle('Highlight', parent=styles['Normal'], fontSize=9.5, fontName='Helvetica-Bold',
textColor=colors.HexColor('#8b0000'), leftIndent=15, spaceAfter=6,
backColor=colors.HexColor('#fff5f5'), borderPadding=(5,8,5,8))
))
story.append(SP(0.3))
story.append(HR())
# ─ 1.4 Investigations
story.append(SQ("4. Investigations to further evaluate this patient [5 marks]"))
story.append(SP(0.1))
inv_data = [
[Paragraph("<b>Category</b>", table_header_style), Paragraph("<b>Investigation</b>", table_header_style), Paragraph("<b>Purpose</b>", table_header_style)],
["Bedside\n(immediate)", "FAST (Focused Assessment\nwith Sonography in Trauma)", "Detect free fluid in abdomen/pericardium;\nRule out haemoperitoneum, haemopericardium"],
["Bedside\n(immediate)", "ECG", "Arrhythmia, myocardial contusion"],
["Blood Tests\n(urgent)", "FBC (CBC)", "Haemoglobin, haematocrit; baseline for serial monitoring"],
["Blood Tests\n(urgent)", "Blood group & cross-match\n+ type & screen", "Prepare for blood transfusion (packed RBCs)"],
["Blood Tests\n(urgent)", "Coagulation profile\n(PT, aPTT, INR, fibrinogen)", "Trauma-induced coagulopathy (TIC) assessment"],
["Blood Tests\n(urgent)", "ABG (Arterial Blood Gas)", "Lactate, base deficit → severity of shock;\nSpO₂, pH, PaO₂"],
["Blood Tests\n(urgent)", "Serum electrolytes,\nUrea, Creatinine", "Baseline renal function; electrolyte imbalance"],
["Blood Tests\n(urgent)", "Blood glucose", "Stress hyperglycaemia"],
["Blood Tests\n(urgent)", "Liver function tests", "Baseline; hepatic injury"],
["Blood Tests\n(urgent)", "Serum amylase/lipase", "Pancreatic injury (abdominal pain)"],
["Imaging", "CXPA (Chest X-ray anteroposterior)", "Pneumothorax, haemothorax, rib fractures, widened mediastinum"],
["Imaging", "Pelvic X-ray", "Pelvic fracture (major source of occult haemorrhage)"],
["Imaging", "CECT Abdomen & Pelvis\n(haemodynamically stable)", "Organ injury (liver, spleen, kidney, bowel, mesentery)"],
["Imaging", "CT Head (if GCS altered)", "Intracranial injury, bleed"],
["Urine", "Urinalysis + urine output\nmonitoring (IDC)", "Haematuria (renal/bladder injury); perfusion monitor (>0.5 mL/kg/hr target)"],
]
inv_table = Table(inv_data, colWidths=[3.0*cm, 5.5*cm, 9.0*cm])
inv_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a5c3a')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f5fff9'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(inv_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# QUESTION 2 — SSI
# ══════════════════════════════════════════════════════════════════════════════
story.append(SH("LONG QUESTIONS (continued)"))
story.append(SP(0.4))
story.append(Q("QUESTION 2 (20 Marks)"))
story.append(Paragraph(
"What are the common sources, classification of surgical site infection (SSI), prevention and management of SSI?",
ParagraphStyle('Case', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, rightIndent=10,
borderPadding=(6,8,6,8), spaceAfter=8, leading=15, textColor=colors.HexColor('#1a3a5c'))
))
story.append(SQ("A. Definition"))
story.append(*A(
"A Surgical Site Infection (SSI) is an infection occurring <b>within 30 days of surgery</b> "
"(or within 1 year if an implant was placed) and involving the incision, underlying tissue, "
"or organ/space opened during the operation. (CDC/NHSN definition)"
))
story.append(SP(0.2))
story.append(SQ("B. Common Sources / Risk Factors"))
story.append(*A("<b>Endogenous sources (most common):</b>"))
story.append(*B(
"Patient's own skin flora — <i>Staphylococcus aureus</i> (especially MRSA), coagulase-negative staphylococci",
"GI tract flora — <i>E. coli</i>, <i>Bacteroides fragilis</i>, enterococci (colonic surgery)",
"Oropharyngeal flora (head and neck, oesophageal surgery)",
"Vaginal flora (gynaecological procedures)",
"Pre-existing remote infection — haematogenous seeding"
))
story.append(*A("<b>Exogenous sources:</b>"))
story.append(*B(
"Surgical team (breaks in sterile technique, carrier state, airborne droplets)",
"Contaminated instruments, implants, or sutures",
"Operating room environment (inadequate ventilation, air contamination)"
))
story.append(*A("<b>Host risk factors:</b>"))
story.append(*B(
"Diabetes mellitus, obesity, malnutrition, immunosuppression (steroids, chemotherapy, HIV)",
"Prolonged pre-operative hospital stay, emergency surgery, prolonged operative time",
"ASA score ≥3, poor glycaemic control, smoking"
))
story.append(SP(0.2))
story.append(SQ("C. CDC Classification of SSI (by depth)"))
story.append(SP(0.1))
ssi_class_data = [
[Paragraph("<b>Type</b>", table_header_style), Paragraph("<b>Depth</b>", table_header_style), Paragraph("<b>Criteria</b>", table_header_style), Paragraph("<b>Time</b>", table_header_style)],
["Superficial\nIncisional", "Skin +\nsubcutaneous tissue", "Purulent drainage/positive culture; signs of inflammation\n(pain, tenderness, swelling, heat, erythema)", "Within 30 days"],
["Deep\nIncisional", "Fascia and/or\nmuscle layers", "Above + spontaneous dehiscence; fever; abscess on\nre-exploration; opened by surgeon", "Within 30 days"],
["Organ/Space", "Any organ/space\nopened during surgery", "Purulent drainage from drain placed in organ/space;\npositive culture; abscess on imaging or reoperation", "Within 30 days\n(1 yr if implant)"],
]
ssi_table = Table(ssi_class_data, colWidths=[3.5*cm, 3.5*cm, 8.0*cm, 2.5*cm])
ssi_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#5c1a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fdf5ff'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(ssi_table)
story.append(SP(0.15))
story.append(*A("<b>Wound classification</b> (Altemeier) — predicts SSI risk:"))
story.append(*B(
"<b>Class I (Clean):</b> No infection, no GI/respiratory/GU tract entry, elective — SSI risk <2%",
"<b>Class II (Clean-Contaminated):</b> Minor break in technique, GI/respiratory tract entered under controlled conditions — risk 5-10%",
"<b>Class III (Contaminated):</b> Fresh traumatic wound, major break in sterility, acute non-purulent inflammation — risk 20-25%",
"<b>Class IV (Dirty/Infected):</b> Old traumatic wound, perforated viscus, established infection — risk >25%"
))
story.append(SP(0.2))
story.append(SQ("D. Prevention of SSI"))
story.append(SP(0.1))
story.append(*A("<b>Pre-operative measures:</b>"))
story.append(*B(
"Identify and treat remote infections before elective surgery",
"Pre-operative shower/bath with antiseptic soap (chlorhexidine)",
"Hair removal: clip (not shave) immediately before surgery — shaving increases SSI risk",
"Nasal decolonisation with mupirocin in MRSA carriers",
"Glycaemic control: target blood glucose <180 mg/dL perioperatively",
"Smoking cessation at least 30 days before surgery",
"Nutritional optimisation (correct malnutrition)"
))
story.append(*A("<b>Antibiotic prophylaxis (SIP guidelines):</b>"))
story.append(*B(
"<b>Timing:</b> IV antibiotics within 60 min (ideally 30 min) before skin incision",
"<b>Selection:</b> Cefazolin for most clean/clean-contaminated procedures; metronidazole added for colorectal",
"<b>Duration:</b> Discontinue within 24 hours of surgery (48 hours for cardiac surgery)",
"Redose for prolonged operations (>4 hours or significant blood loss)"
))
story.append(*A("<b>Intra-operative measures:</b>"))
story.append(*B(
"Maintain strict sterile technique (barriers, gloves, gowns, drapes)",
"Maintain normothermia (active warming blankets, warmed IV fluids) — hypothermia increases SSI",
"Supplemental oxygen: FiO₂ 0.80 intra-operatively and for 2 hours post-operatively",
"Gentle tissue handling; minimize dead space; adequate haemostasis",
"Laminar flow ventilation in operating room (especially orthopaedic implants)",
"Wound irrigation (dilute povidone-iodine or saline) before closure"
))
story.append(*A("<b>Post-operative measures:</b>"))
story.append(*B(
"Keep wound covered with sterile dressing for 24-48 hours",
"Maintain glycaemic control; continue normothermia",
"Surveillance for early signs of SSI; monitor wound"
))
story.append(SP(0.2))
story.append(SQ("E. Management of SSI"))
story.append(*A("<b>Superficial SSI:</b>"))
story.append(*B(
"Open and drain the wound (remove 1-2 skin sutures to release pus)",
"Wound swab for culture and sensitivity",
"Wet-to-dry dressings with daily wound care",
"Oral antibiotics if systemic features (cellulitis, fever) — guided by culture",
"Secondary closure or healing by secondary intention"
))
story.append(*A("<b>Deep/Organ-space SSI:</b>"))
story.append(*B(
"CT scan to identify abscess/collection — percutaneous drainage (image-guided) preferred",
"Surgical re-exploration if not amenable to drainage",
"IV antibiotics — empirical broad-spectrum (piperacillin-tazobactam or meropenem) then de-escalate per culture",
"Supportive care: nutritional support, glycaemic control, physiotherapy",
"Removal or replacement of infected implants if necessary",
"Negative pressure wound therapy (VAC) for large wounds"
))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════════════════
# SHORT QUESTIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(SH("SHORT QUESTIONS (5 Marks Each)"))
story.append(SP(0.4))
# ── SQ 1 — Wound Classification & Healing
story.append(Q("SHORT QUESTION 1 (5 Marks)"))
story.append(Paragraph("Classification of wounds and phases of wound healing",
ParagraphStyle('Sq', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, borderPadding=(4,6,4,6), spaceAfter=6)))
story.append(SQ("A. Classification of Wounds"))
wnd_data = [
[Paragraph("<b>Based on</b>", table_header_style), Paragraph("<b>Types</b>", table_header_style)],
["Aetiology", "Incised, lacerated, contused, puncture, avulsion, crush, burn, bite"],
["Contamination\n(Altemeier)", "Clean (Class I), Clean-contaminated (II), Contaminated (III), Dirty (IV) — see Q2"],
["Depth", "Superficial (skin/subcutaneous), Deep (fascia/muscle), Penetrating (body cavity), Perforating"],
["Mechanism", "Open (communicating with exterior) vs Closed (intact skin — contusion, haematoma)"],
["Healing\nIntention", "Primary (1° — clean approximated), Secondary (2° — left open, granulation), Tertiary (3° — delayed primary closure)"],
]
wnd_table = Table(wnd_data, colWidths=[4*cm, 13.5*cm])
wnd_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#2c6ea6')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f5f9ff'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(wnd_table)
story.append(SP(0.2))
story.append(SQ("B. Phases of Wound Healing"))
story.append(SP(0.1))
phase_data = [
[Paragraph("<b>Phase</b>", table_header_style), Paragraph("<b>Timing</b>", table_header_style), Paragraph("<b>Key Events & Cells</b>", table_header_style)],
["1. Haemostasis", "0-24 hours", "Platelet aggregation, coagulation cascade; fibrin clot formation; platelet-derived growth factors (PDGF, TGF-β) released"],
["2. Inflammation", "Days 1-5", "Neutrophils (1-2 days) → Macrophages (day 2-5) dominate; phagocytosis of bacteria/debris; growth factor release; VEGF, EGF, FGF; angiogenesis initiation"],
["3. Proliferation\n(Granulation)", "Days 5-21", "Fibroblasts: collagen synthesis (type III initially); granulation tissue; angiogenesis (endothelial cells); epithelialisation (keratinocytes); wound contraction (myofibroblasts)"],
["4. Remodelling\n(Maturation)", "Day 21 — 2 yrs", "Type III → Type I collagen conversion; matrix metalloproteinases (MMPs); tensile strength increases to 80% of normal; avascular scar; complete remodelling over 1-2 years"],
]
phase_table = Table(phase_data, colWidths=[3.5*cm, 2.8*cm, 11.2*cm])
phase_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a5c3a')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f5fff9'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(phase_table)
story.append(SP(0.15))
story.append(*B(
"<b>Factors impairing wound healing:</b> Infection, ischaemia, malnutrition (Vit C/Zn deficiency), diabetes, steroids, radiation, foreign body, excessive tension",
"<b>Healing by secondary intention</b> involves more prominent granulation, wound contraction, and a larger scar than primary intention"
))
story.append(SP(0.4))
story.append(HR())
# ── SQ 2 — Ethics & Laws
story.append(Q("SHORT QUESTION 2 (5 Marks)"))
story.append(Paragraph("Describe ethics and laws in surgical practice",
ParagraphStyle('Sq', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, borderPadding=(4,6,4,6), spaceAfter=6)))
story.append(*A("<b>Medical Ethics — Four Pillars (Beauchamp & Childress):</b>"))
story.append(*B(
"<b>Autonomy:</b> Patient's right to make informed decisions about their own care. Requires valid informed consent (voluntary, competent, informed).",
"<b>Beneficence:</b> Act in the patient's best interest; do good.",
"<b>Non-maleficence:</b> 'First, do no harm' — weigh risks vs benefits of surgery.",
"<b>Justice:</b> Fair distribution of healthcare resources; equal treatment regardless of race, gender, or socioeconomic status."
))
story.append(SP(0.1))
story.append(*A("<b>Informed Consent:</b>"))
story.append(*B(
"Surgeon must explain: diagnosis, proposed procedure, alternatives, risks and benefits, expected outcome",
"Patient must be competent (capacity to understand and decide), voluntary, and have received adequate information",
"Written consent required for elective surgical procedures",
"Emergency exception: life-saving treatment may be given without consent if patient cannot consent",
"For minors: parents/guardians consent; for incompetent adults: next of kin or legal guardian"
))
story.append(SP(0.1))
story.append(*A("<b>Confidentiality:</b> All patient information is privileged. Disclosure only with consent, by court order, or for specific public health/legal obligations."))
story.append(SP(0.1))
story.append(*A("<b>Relevant Laws in India (surgical practice):</b>"))
story.append(*B(
"<b>Indian Medical Council (Professional Conduct, Etiquette and Ethics) Regulations 2002</b> — governing conduct of doctors",
"<b>National Medical Commission (NMC) Act 2019</b> — replaced MCI; regulates medical education and practice",
"<b>Consumer Protection Act 2019</b> — medical services included; patients can file cases in consumer courts for negligence",
"<b>IPC Section 304A</b> — causing death by negligence (imprisonment up to 2 years)",
"<b>Transplantation of Human Organs Act 1994</b> — regulates organ donation and transplantation",
"<b>Pre-Conception and Pre-Natal Diagnostic Techniques (PCPNDT) Act 1994</b> — prohibits sex determination",
"<b>Negligence criteria (Bolam test):</b> A doctor is not negligent if they acted in accordance with the practice accepted by a responsible body of medical practitioners"
))
story.append(SP(0.4))
story.append(HR())
# ── SQ 3 — Enteral vs Parenteral Nutrition
story.append(Q("SHORT QUESTION 3 (5 Marks)"))
story.append(Paragraph("Differentiate between enteral and parenteral nutrition",
ParagraphStyle('Sq', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, borderPadding=(4,6,4,6), spaceAfter=6)))
nut_data = [
[Paragraph("<b>Feature</b>", table_header_style), Paragraph("<b>Enteral Nutrition (EN)</b>", table_header_style), Paragraph("<b>Parenteral Nutrition (PN)</b>", table_header_style)],
["Definition", "Delivery of nutrients via GI tract\n(oral or tube feeding)", "Delivery directly into bloodstream\n(bypassing GI tract)"],
["Route", "Nasogastric (NGT), nasojejunal,\npercutaneous endoscopic gastrostomy\n(PEG), jejunostomy", "Peripheral IV (short-term, low concentration)\nor Central line (TPN — higher concentration,\nlong-term)"],
["Indication", "Functional GI tract present;\nswallowing dysfunction; inadequate oral intake;\nICU patients (preferred first line)", "Non-functional or inaccessible GI tract;\nshort bowel syndrome; severe IBD; prolonged ileus;\nfistulae; major abdominal surgery"],
["Composition", "Polymeric, elemental, or semi-elemental\nformulas; standard or disease-specific", "Dextrose (carbs), amino acids, lipid emulsion,\nelectrolytes, vitamins, trace elements\n(individualised prescription)"],
["Advantages", "Maintains gut mucosal integrity;\n↓ bacterial translocation; ↓ infection risk;\nphysiological; cheaper;\n↓ hyperglycaemia risk; preferred by guidelines", "Complete nutritional control;\nindicates precise macronutrient delivery;\nnot dependent on GI function"],
["Disadvantages", "Aspiration risk; tube displacement;\ndiarrhoea; abdominal distension;\nrequires functioning GI tract", "Catheter-related bloodstream infection (CRBSI);\nhyperglycaemia; hepatic steatosis (prolonged use);\nthrombosis; expensive; gut atrophy"],
["Monitoring", "Residual volumes; tolerance;\nblood glucose; electrolytes", "Blood glucose (daily); LFTs; TG;\nelectrolytes (Na, K, Mg, Phos);\nCRBSI surveillance"],
["Guidelines", "ASPEN, ESPEN: prefer EN over PN\nwhen GI tract is functional", "Use only when EN is contraindicated or\ninadequate; start within 3-7 days if\nEN not tolerated"],
]
nut_table = Table(nut_data, colWidths=[3.2*cm, 7.9*cm, 7.4*cm])
nut_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#5c3a00')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fffdf0'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(nut_table)
story.append(PageBreak())
# ── SQ 4 — Diabetic Foot Ulcer
story.append(SH("SHORT QUESTIONS (continued)"))
story.append(SP(0.4))
story.append(Q("SHORT QUESTION 4 (5 Marks)"))
story.append(Paragraph("Discuss causes, pathophysiology, and management of diabetic foot ulcer",
ParagraphStyle('Sq', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique',
backColor=colors.HexColor('#f0f6ff'), leftIndent=10, borderPadding=(4,6,4,6), spaceAfter=6)))
story.append(SQ("A. Causes of Diabetic Foot Ulcer"))
story.append(*B(
"<b>Peripheral neuropathy (most important):</b> Loss of protective sensation → unnoticed trauma; autonomic neuropathy → dry skin, fissures; motor neuropathy → foot deformity (Charcot foot)",
"<b>Peripheral vascular disease (PVD):</b> Atherosclerosis of lower limb vessels → ischaemia → poor healing",
"<b>Infection:</b> Polymicrobial (gram +ve, gram -ve, anaerobes) — facilitates deep spread",
"<b>Foot deformities:</b> Claw toes, hammer toes, Charcot arthropathy → pressure points",
"<b>External trauma:</b> Ill-fitting footwear, walking barefoot, burns, foreign bodies"
))
story.append(SP(0.2))
story.append(SQ("B. Pathophysiology"))
story.append(*A("The diabetic foot ulcer develops through a triad of <b>neuropathy + ischaemia + infection</b>:"))
story.append(SP(0.1))
patho_data = [
[Paragraph("<b>Component</b>", table_header_style), Paragraph("<b>Mechanism</b>", table_header_style), Paragraph("<b>Consequence</b>", table_header_style)],
["Sensory Neuropathy", "Polyol pathway accumulation (sorbitol),\nnon-enzymatic glycation, oxidative stress\n→ axonal degeneration", "Loss of pain/pressure/temperature\nprotection → repeated unnoticed trauma"],
["Motor Neuropathy", "Denervation of intrinsic foot muscles", "Muscle wasting → foot deformity\n→ altered pressure distribution"],
["Autonomic Neuropathy", "Loss of sudomotor/vasomotor\nfunction", "Dry, cracked skin; AV shunting\n→ impaired microcirculation"],
["Microangiopathy", "Basement membrane thickening,\nRBC rigidity, ↓ NO vasodilation", "Capillary ischaemia, impaired\nleukocyte migration"],
["Macroangiopathy\n(PVD)", "Accelerated atherosclerosis\n(hyperglycaemia, dyslipidaemia,\nhypertension)", "Critical limb ischaemia, absent\ndistal pulses, gangrene"],
["Infection", "Impaired neutrophil function\n(phagocytosis, chemotaxis),\nhyperglycaemia favours bacterial growth", "Polymicrobial deep infection:\ncellulitis → osteomyelitis →\nsepsis → limb loss"],
]
patho_table = Table(patho_data, colWidths=[3.5*cm, 6.5*cm, 7.5*cm])
patho_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#8b4c00')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 8.5),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fff8f0'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(patho_table)
story.append(SP(0.15))
story.append(*A("<b>Wagner Classification</b> (staging for management):"))
wagner_data = [
[Paragraph("<b>Grade</b>", table_header_style), Paragraph("<b>Description</b>", table_header_style)],
["0", "No open lesion; pre-ulcerative or healed ulcer; bony deformity"],
["1", "Superficial ulcer — skin/subcutaneous tissue only; no infection"],
["2", "Deep ulcer reaching tendon, capsule, bone, or joint; no abscess or osteomyelitis"],
["3", "Deep ulcer with abscess, osteomyelitis, or joint sepsis"],
["4", "Localised gangrene (toe or forefoot)"],
["5", "Gangrene of entire foot — amputation required"],
]
wagner_table = Table(wagner_data, colWidths=[2.0*cm, 15.5*cm])
wagner_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#8b0000')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor('#aaaaaa')),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#fff5f5'), colors.white]),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(wagner_table)
story.append(SP(0.2))
story.append(SQ("C. Management of Diabetic Foot Ulcer"))
story.append(*A("<b>1. Medical management (systemic control):</b>"))
story.append(*B(
"Tight glycaemic control — target HbA1c <7%; insulin therapy preferred in acute infection",
"Control of hypertension, dyslipidaemia (statins), antiplatelet therapy (aspirin)",
"Nutritional support — adequate protein and micronutrients for wound healing",
"Treat underlying PVD"
))
story.append(*A("<b>2. Wound management (local):</b>"))
story.append(*B(
"Debridement — sharp surgical debridement of necrotic tissue; hydrogel/enzymatic debridement",
"Wound irrigation with saline; moist wound dressings (hydrocolloid, foam, silver dressings)",
"Offloading — total contact cast (TCC) is gold standard; removable walker; special footwear",
"Negative Pressure Wound Therapy (NPWT/VAC) for complex wounds",
"Advanced wound dressings: honey-impregnated, bioengineered skin substitutes"
))
story.append(*A("<b>3. Antibiotics:</b>"))
story.append(*B(
"Mild infection: oral amoxicillin-clavulanate or clindamycin (MRSA cover if needed)",
"Moderate-severe: IV piperacillin-tazobactam ± vancomycin; duration guided by response and bone involvement",
"Osteomyelitis: 6 weeks of antibiotics; bone biopsy for culture; surgical debridement often needed"
))
story.append(*A("<b>4. Vascular intervention (if PVD):</b>"))
story.append(*B(
"Duplex ultrasound → ABI (ankle brachial index) — ABI <0.9 suggests PAD; <0.4 critical ischaemia",
"Revascularisation: angioplasty/stenting (preferred) or bypass surgery (femoro-popliteal/tibial bypass)",
"Hyperbaric oxygen therapy as adjunct (Wagner grade 3-4)"
))
story.append(*A("<b>5. Surgical management:</b>"))
story.append(*B(
"Drainage of abscess (incision and drainage)",
"Ray amputation (for single infected digit/metatarsal)",
"Transmetatarsal/below-knee/above-knee amputation — when gangrene or infection is unreconstructable",
"Charcot reconstruction for severe foot deformity"
))
story.append(*A("<b>6. Prevention (multidisciplinary foot care):</b>"))
story.append(*B(
"Daily foot inspection; therapeutic footwear; podiatry care; patient education",
"Avoid walking barefoot; nail care; management of calluses",
"Annual foot screening for all diabetic patients"
))
story.append(SP(0.4))
story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#1a3a5c'), spaceAfter=6))
story.append(Paragraph(
"End of Answer Key — General Surgery Paper I | Prepared by Orris Medical AI",
ParagraphStyle('Footer', parent=styles['Normal'], fontSize=8, textColor=colors.gray,
alignment=TA_CENTER, fontName='Helvetica-Oblique')
))
story.append(Paragraph(
"Sources: Schwartz's Surgery 11e · Mulholland & Greenfield 7e · Bailey & Love 28e · Sabiston 21e · Robbins Pathology 10e · Harrison's 22e",
ParagraphStyle('Footer2', parent=styles['Normal'], fontSize=7.5, textColor=colors.gray,
alignment=TA_CENTER, fontName='Helvetica-Oblique')
))
# Build
doc.build(story)
print(f"PDF generated: {OUTPUT}")
Question-Answer in the pdf form
python /tmp/workspace/surgery-qa/generate_qa_pdf.py
cd /tmp/workspace/surgery-qa && sed -i 's/story\.append(\*B(/story.extend(B(/g; s/story\.append(\*A(/story.extend(A(/g' generate_qa_pdf.py && python generate_qa_pdf.py
General Surgery QA
PDF Document · PDF
| Section | Content |
|---|---|
| Q1 — Part 1 | ATLS Primary Survey (ABCDE table with patient-specific actions) |
| Q1 — Part 2 | Pathophysiology of Shock (step-by-step cellular/neuroendocrine cascade) |
| Q1 — Part 3 | Classification of Shock (Weil & Shubin 4-type table + ATLS Class I-IV hemorrhagic shock table with this patient highlighted as Class III) |
| Q1 — Part 4 | Investigations (FAST, bloods, imaging, urine — full table) |
| Q2 | SSI — Definition, Sources/Risk factors, CDC 3-tier classification, Altemeier wound class, Prevention (pre-op/antibiotic/intra-op/post-op), Management |
| SQ 1 | Wound classification (5 bases) + 4 phases of healing (Haemostasis → Inflammation → Proliferation → Remodelling) with cells and timing |
| SQ 2 | Ethics (4 pillars) + Informed consent + Indian laws (NMC Act, CPA, IPC 304A, THOAI, PCPNDT) |
| SQ 3 | Enteral vs Parenteral Nutrition — 8-row comparison table (route, indication, advantages, monitoring, guidelines) |
| SQ 4 | Diabetic foot — Causes, Pathophysiology table, Wagner classification (Grades 0-5), full management (medical + wound + antibiotics + vascular + surgical + prevention) |