The following files are required for me to teach students appearing for the INI SS CET CVTS which is a single best answer multiple choice question examination. Generate 3 files from chapter 123. 1. 5 page High yield notes from the chapter for teaching with probable questions, and include teaching notes, flowcharts, landmark trials, guidelines, tables, memory aids, exam pearls and most probably INI SS Questions. Also include last minute revision tables. 2. 25 MCQs from the chapter in the INI CET SS standard format single best answer, can have a paragraph questions, vignettes, image based questions, photographs with attributes. Source can be the internet as well. Make sure that the PDF has all 25 questions. 3. Answer key with detailed explanation of the correct answer and explanation of the distractors. Do not copy paste the same explanations loop to all answers. Make sure that the explanation pdf has all 25 explanations. Answers can be either a,b,c or d. Explain every correct answer and give distractor analysis as well. Correct answer, explanation, why each distractor is incorrect, relevant guideline, and learning point. Create 3 pdfs with a direct download link. Make sure the questions are based on decision making, guidelines, landmark trials, operative judgement, hemodynamics, clinical scenarios and imaging interpretation. Please provide all 3 sets in downloadable PDF format only with link.
python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/att…
mkdir -p /home/daytona/workspace/ini-cvts-ch123
~/ini-cvts-ch123/generate_pdfs.py
#!/usr/bin/env python3
"""Generate 3 teaching PDFs for INI SS CET CVTS - Chapter 123: PA/IVS"""
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, red, navy,
darkblue, blue, green, orange, darkgreen)
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY
from reportlab.pdfgen import canvas
import os
OUTPUT_DIR = "/home/daytona/workspace/ini-cvts-ch123"
# Color palette
DARK_BLUE = HexColor('#1a3a6b')
MID_BLUE = HexColor('#2e6da4')
LIGHT_BLUE = HexColor('#d6e8f7')
TEAL = HexColor('#006d75')
GOLD = HexColor('#c9a22a')
RED_HIGHLIGHT = HexColor('#c0392b')
GREEN_BOX = HexColor('#1e7145')
LIGHT_GREEN = HexColor('#e8f5e9')
LIGHT_YELLOW = HexColor('#fffde7')
LIGHT_RED = HexColor('#fdecea')
ORANGE_BOX = HexColor('#e65c00')
LIGHT_ORANGE = HexColor('#fff3e0')
GRAY_BG = HexColor('#f4f4f4')
DARK_GRAY = HexColor('#333333')
BOX_BORDER = HexColor('#aaaaaa')
styles = getSampleStyleSheet()
def heading_style(size=13, color=DARK_BLUE, bold=True):
return ParagraphStyle('heading', fontSize=size, textColor=color,
fontName='Helvetica-Bold' if bold else 'Helvetica',
spaceAfter=4, spaceBefore=6, leading=size+4)
def body_style(size=9.5, color=DARK_GRAY, align=TA_LEFT):
return ParagraphStyle('body', fontSize=size, textColor=color,
fontName='Helvetica', spaceAfter=3,
spaceBefore=2, leading=size+4, alignment=align)
def bold_style(size=9.5, color=DARK_GRAY):
return ParagraphStyle('bold', fontSize=size, textColor=color,
fontName='Helvetica-Bold', spaceAfter=3,
spaceBefore=2, leading=size+4)
def box_table(content_rows, bg=LIGHT_BLUE, border=MID_BLUE, col_widths=None):
if col_widths is None:
col_widths = [17*cm]
t = Table(content_rows, colWidths=col_widths)
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('BOX', (0,0), (-1,-1), 1, border),
('INNERGRID', (0,0), (-1,-1), 0.3, border),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
return t
def make_header_footer(canvas_obj, doc, title, subtitle=""):
canvas_obj.saveState()
w, h = A4
# Header bar
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, h-2.2*cm, w, 2.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica-Bold', 12)
canvas_obj.drawString(1.2*cm, h-1.3*cm, title)
canvas_obj.setFont('Helvetica', 9)
canvas_obj.drawRightString(w-1.2*cm, h-1.3*cm, subtitle)
# Gold bar
canvas_obj.setFillColor(GOLD)
canvas_obj.rect(0, h-2.4*cm, w, 0.25*cm, fill=1, stroke=0)
# Footer
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, 0, w, 1.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica', 8)
canvas_obj.drawString(1.2*cm, 0.45*cm, "INI SS CET CVTS | Chapter 123: Pulmonary Atresia with Intact Ventricular Septum")
canvas_obj.drawRightString(w-1.2*cm, 0.45*cm, f"Page {doc.page}")
canvas_obj.restoreState()
# ============================================================
# PDF 1: HIGH YIELD NOTES
# ============================================================
def generate_notes():
path = os.path.join(OUTPUT_DIR, "Ch123_HY_Notes_PAIVS.pdf")
doc = SimpleDocTemplate(path, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=3.0*cm, bottomMargin=2.0*cm)
def hf(c, d): make_header_footer(c, d,
"HIGH YIELD TEACHING NOTES | PA/IVS",
"INI SS CET CVTS Prep 2026")
B = body_style()
Bb = bold_style()
H1 = heading_style(14, DARK_BLUE)
H2 = heading_style(12, MID_BLUE)
H3 = heading_style(10, TEAL)
SMALL = body_style(8.5)
story = []
# ---- TITLE BOX ----
title_data = [[
Paragraph("<font color='white'><b>CHAPTER 123: PULMONARY ATRESIA WITH INTACT VENTRICULAR SEPTUM (PA/IVS)</b></font>",
ParagraphStyle('t', fontSize=14, fontName='Helvetica-Bold', textColor=white, leading=18)),
Paragraph("<font color='#c9a22a'><b>INI SS CET CVTS | High Yield Teaching Notes</b></font><br/><font color='white'>LaPar & Bacha | Cohn's Cardiac Surgery | Chapter 123</font>",
ParagraphStyle('t2', fontSize=10, fontName='Helvetica', textColor=white, leading=14))
]]
t = Table(title_data, colWidths=[10*cm, 7*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('BOX', (0,0), (-1,-1), 0, DARK_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))
# ---- QUICK STATS BOX ----
stats = [
[Paragraph("<b>Prevalence</b>", Bb), Paragraph("4-8 per 100,000 live births", B),
Paragraph("<b>% of CHD</b>", Bb), Paragraph("1%-3%", B)],
[Paragraph("<b>Defining feature</b>", Bb), Paragraph("Complete RVOTO + IVS", B),
Paragraph("<b>Blood flow</b>", Bb), Paragraph("PDA-dependent", B)],
[Paragraph("<b>1st repair</b>", Bb), Paragraph("Weinberg, 1962 (transventricular valvotomy)", B),
Paragraph("<b>Primary imaging</b>", Bb), Paragraph("TTE (echocardiography)", B)],
]
tbl = Table(stats, colWidths=[3.5*cm, 5*cm, 3.5*cm, 5*cm])
tbl.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_BLUE),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(tbl)
story.append(Spacer(1, 0.3*cm))
# ---- ANATOMY ----
story.append(Paragraph("1. ANATOMY & MORPHOLOGY", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
anat_rows = [
[Paragraph("<b>Component</b>", Bb),
Paragraph("<b>Normal</b>", Bb),
Paragraph("<b>PA/IVS Spectrum</b>", Bb),
Paragraph("<b>INI Pearl</b>", Bb)],
[Paragraph("RV Morphology", B),
Paragraph("Tripartite (inlet + trabecular + infundibulum)", B),
Paragraph("Tripartite 60-80% | Bipartite 15-30% | Unipartite 2-10%", B),
Paragraph("⭐ Know this distribution!", bold_style(8.5, RED_HIGHLIGHT))],
[Paragraph("TV (z-score)", B),
Paragraph("z = 0", B),
Paragraph("≥-2: mild | -2 to -4: moderate | ≤-4: severe", B),
Paragraph("Predictor of BiV repair", bold_style(8.5, GREEN_BOX))],
[Paragraph("RVOT", B),
Paragraph("Patent infundibulum", B),
Paragraph("Membranous 75% | Muscular 25%", B),
Paragraph("Muscular = worse prognosis", bold_style(8.5, ORANGE_BOX))],
[Paragraph("PV Atresia type", B),
Paragraph("N/A", B),
Paragraph("Membranous: fused leaflets visible\nMuscular: complete obliteration of infundibulum", B),
Paragraph("Membranous amenable to perforation", bold_style(8.5, GREEN_BOX))],
[Paragraph("Coronary", B),
Paragraph("Normal", B),
Paragraph("Sinusoids in 45-70%\nRVDCC in ~25%", B),
Paragraph("⭐ RVDCC = HIGH RISK!", bold_style(8.5, RED_HIGHLIGHT))],
]
at = Table(anat_rows, colWidths=[3*cm, 3.5*cm, 5.5*cm, 4*cm])
at.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,-1), LIGHT_BLUE),
('BACKGROUND', (0,2), (-1,2), white),
('BACKGROUND', (0,4), (-1,4), white),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(at)
story.append(Spacer(1, 0.2*cm))
# RVDCC box
rvdcc_data = [[
Paragraph("🔴 RVDCC (Right Ventricle-Dependent Coronary Circulation) - THE MOST TESTED CONCEPT",
bold_style(10, RED_HIGHLIGHT)),
],[
Paragraph("""<b>Definition:</b> Coronary blood flow partially or completely dependent on RETROGRADE flow from hypertensive RV<br/>
<b>Prevalence:</b> ~25% of PA/IVS patients<br/>
<b>Consequence:</b> RV decompression (RVOT relief, CPB, ECMO) → coronary steal → ischemia, sudden death, MI<br/>
<b>Mechanism:</b> Sinusoids (45-70%) + fistulae persist due to high RV pressure → oxygenated blood displaced by deoxygenated RV blood to myocardium<br/>
<b>Spectrum:</b> (A) No fistulae → (B) Fistulae without stenosis → (C) Fistulae with stenosis → (D) Coronary ostial atresia (most severe)<br/>
<b>Surgical implication:</b> RVDCC = contraindication to RV decompression alone; single-ventricle palliation preferred<br/>
<b>CPB trick with RVDCC:</b> Bicaval venous cannulation (snared) + RA arterial cannulation to maintain oxygenated RV preload""",
body_style(9)),
]]
rt = Table(rvdcc_data, colWidths=[17*cm])
rt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_RED),
('BACKGROUND', (0,1), (-1,1), HexColor('#fff5f5')),
('BOX', (0,0), (-1,-1), 2, RED_HIGHLIGHT),
('LINEABOVE', (0,1), (-1,1), 1, RED_HIGHLIGHT),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(rt)
story.append(Spacer(1, 0.25*cm))
# ---- PATHOPHYSIOLOGY FLOWCHART ----
story.append(Paragraph("2. PATHOPHYSIOLOGY FLOWCHART", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
flow_data = [
[Paragraph("<b>PA/IVS → Complete RVOTO + Intact IVS</b>", bold_style(10, DARK_BLUE))],
[Paragraph("▼", heading_style(14, MID_BLUE))],
[Paragraph("No antegrade pulmonary blood flow → DUCTAL-DEPENDENT CIRCULATION (PDA = lifeline)", bold_style(9.5, ORANGE_BOX))],
[Paragraph("▼", heading_style(14, MID_BLUE))],
[Paragraph("RV outflow blocked → RV pressure builds → RIGHT-TO-LEFT SHUNT at ASD/PFO (systemic desaturation)", B)],
[Paragraph("▼", heading_style(14, MID_BLUE))],
[Paragraph("TV competent? → RV suprasystemic pressure → sinusoids develop → RVDCC risk ↑↑\nTV regurgitant? → RV pressure ≈ normal → sinusoids less likely", B)],
[Paragraph("▼", heading_style(14, MID_BLUE))],
[Paragraph("Mixed (deoxygenated) blood flows via ductus to lungs → systemic oxygen delivery depends on PDA patency", B)],
]
ft = Table(flow_data, colWidths=[17*cm])
ft.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_BLUE),
('BACKGROUND', (0,0), (-1,0), MID_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,2), (-1,2), LIGHT_ORANGE),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('ALIGN', (0,1), (-1,1), 'CENTER'),
('ALIGN', (0,3), (-1,3), 'CENTER'),
('ALIGN', (0,5), (-1,5), 'CENTER'),
('ALIGN', (0,7), (-1,7), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(ft)
story.append(Spacer(1, 0.25*cm))
# ---- DIAGNOSIS ----
story.append(Paragraph("3. CLINICAL PRESENTATION & DIAGNOSIS", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
diag_rows = [
[Paragraph("<b>Modality</b>", Bb), Paragraph("<b>Findings in PA/IVS</b>", Bb), Paragraph("<b>Clinical Relevance</b>", Bb)],
[Paragraph("ECG", B), Paragraph("QRS axis 0-120°, decreased anterior RV forces", B), Paragraph("No dominant R wave V1", B)],
[Paragraph("CXR", B), Paragraph("Variable cardiac size (not enlarged usually); reduced pulmonary vascularity\nIf severe TR: massively enlarged cardiac silhouette (like Ebstein)", B), Paragraph("Normal vascularity despite cyanosis", B)],
[Paragraph("TTE (PRIMARY)", B), Paragraph("TV size/function, RV size/morphology, infundibular cavity, PV atresia type, PDA, ASD/PFO, coronary sinusoids", B), Paragraph("⭐ First-line, establishes diagnosis", B)],
[Paragraph("Cardiac Cath", B), Paragraph("RV ventriculography, coronary angiography, hemodynamics\n⭐ Coronary anatomy → determines RVDCC", B), Paragraph("MANDATORY before any RV decompression strategy", B)],
[Paragraph("CT/MRI", B), Paragraph("PA anatomy detail, RV function/size, post-op RV assessment\nFollow-up after transcatheter or surgical RV recruitment", B), Paragraph("Post-op RV growth assessment (Fig. 123.6)", B)],
]
dt = Table(diag_rows, colWidths=[3*cm, 9*cm, 5*cm])
dt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,-1), LIGHT_BLUE),
('BACKGROUND', (0,2), (-1,2), white),
('BACKGROUND', (0,4), (-1,4), white),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(dt)
story.append(Spacer(1, 0.2*cm))
# ---- INITIAL MANAGEMENT ----
story.append(Paragraph("4. INITIAL MANAGEMENT & STABILIZATION", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
mgmt_data = [[
Paragraph("⭐ IMMEDIATE MANAGEMENT PRIORITIES", bold_style(10, DARK_BLUE)),
],[
Paragraph("""<b>1. PGE₁ INFUSION</b> (Prostaglandin E₁) — as soon as PA/IVS diagnosed → maintain PDA patency → stable pulmonary blood flow<br/>
<b>2. Unrestricted ASD/PFO</b> — ensure right-to-left atrial shunt is unobstructed (balloon atrial septostomy if restrictive)<br/>
<b>3. Correct metabolic derangements</b> — systemic acidosis, end-organ function, respiratory support (O₂ → ventilation)<br/>
<b>4. Assess RVDCC anatomy</b> — cardiac catheterization + coronary angiography BEFORE any intervention<br/>
<b>5. Inotropic support</b> — as needed for cardiac output optimization<br/>
<b>Teaching Note:</b> PGE₁ is THE bridge to surgery. Without it, duct closes → pulmonary blood flow ceases → death.""",
body_style(9)),
]]
mt = Table(mgmt_data, colWidths=[17*cm])
mt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_YELLOW),
('BACKGROUND', (0,1), (-1,1), HexColor('#fffff0')),
('BOX', (0,0), (-1,-1), 2, GOLD),
('LINEABOVE', (0,1), (-1,1), 1, GOLD),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(mt)
story.append(PageBreak())
# ---- SURGICAL MANAGEMENT ----
story.append(Paragraph("5. SURGICAL MANAGEMENT ALGORITHM", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
# Decision algorithm table
algo_data = [
[Paragraph("<b>SURGICAL PATHWAY</b>", bold_style(10, white)),
Paragraph("<b>CRITERIA</b>", bold_style(10, white)),
Paragraph("<b>PROCEDURE</b>", bold_style(10, white)),
Paragraph("<b>GOAL</b>", bold_style(10, white))],
[Paragraph("✅ BIVENTRICULAR REPAIR", bold_style(9.5, GREEN_BOX)),
Paragraph("TV z-score ≥-2\nTripartite RV\nNo RVDCC\n± mild TR", body_style(9)),
Paragraph("RVOT patch/valvotomy\n+ systemic-PA shunt\n+ ASD closure later\n(catheter-based or surgical)", body_style(9)),
Paragraph("Full BiV circulation\nSeparated pulm+systemic\nNo shunting", body_style(9))],
[Paragraph("⚠️ 1.5 VENTRICLE REPAIR\n(HYBRID)", bold_style(9.5, ORANGE_BOX)),
Paragraph("TV z-score -2 to -4\nBipartite RV\nFailed BiV attempt\nRV can't support full return", body_style(9)),
Paragraph("Bidirectional Glenn\n(SVC→PA)\n+ RVOT reconstruction\n+ ASD closure (fenestrated 4mm)", body_style(9)),
Paragraph("SVC→lungs direct\nIVC→RV→PA\nPartial separation", body_style(9))],
[Paragraph("❌ SINGLE VENTRICLE\n(FONTAN PATHWAY)", bold_style(9.5, RED_HIGHLIGHT)),
Paragraph("TV z-score ≤-4\nUnipartite RV\nRVDCC present\nSevere RV hypoplasia", body_style(9)),
Paragraph("Stage 1: BT shunt/PDA stent\nStage 2 (3-6mo): Bidirectional Glenn\nStage 3 (2-4yr): Fontan completion", body_style(9)),
Paragraph("Univentricular circulation\nFontan physiology", body_style(9))],
]
ag = Table(algo_data, colWidths=[3.8*cm, 4.3*cm, 5*cm, 3.9*cm])
ag.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,1), LIGHT_GREEN),
('BACKGROUND', (0,2), (-1,2), LIGHT_ORANGE),
('BACKGROUND', (0,3), (-1,3), LIGHT_RED),
('BOX', (0,0), (-1,-1), 1.5, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.5, HexColor('#bbbbbb')),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(ag)
story.append(Spacer(1, 0.25*cm))
# RV decompression details
story.append(Paragraph("RV DECOMPRESSION TECHNIQUES (Initial Palliation)", H2))
decocp_data = [[
Paragraph("<b>Membranous Atresia (75%)</b>", bold_style(9.5, MID_BLUE)),
Paragraph("<b>Muscular Atresia (25%)</b>", bold_style(9.5, RED_HIGHLIGHT)),
],[
Paragraph("""• Transcatheter: Wire perforation + balloon pulmonary valvuloplasty (catheter lab)<br/>
• Surgical: Pulmonary valvotomy/valvectomy under CPB<br/>
• RVOT + transannular patch reconstruction<br/>
• ± Systemic-PA shunt if RV dysfunction post-decompression<br/>
• ± CPB allows direct visualization""", body_style(9)),
Paragraph("""• Surgical: requires infundibular resection + RV overhaul<br/>
• Transannular patch reconstruction<br/>
• Often combined with systemic-PA shunt<br/>
• More commonly associated with RVDCC<br/>
• Higher risk; may need Fontan pathway""", body_style(9)),
]]
dct = Table(decocp_data, colWidths=[8.5*cm, 8.5*cm])
dct.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_BLUE),
('BACKGROUND', (0,1), (-1,1), white),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.5, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(dct)
story.append(Spacer(1, 0.2*cm))
# Follow-up catheterization
fu_data = [[
Paragraph("FOLLOW-UP CATHETERIZATION DECISION MAKING (6-12 months post RV decompression)", bold_style(10, DARK_BLUE)),
],[
Paragraph("""<b>Step 1:</b> Occlude systemic-PA shunt temporarily → assess arterial saturation<br/>
<b>Step 2:</b> If sats adequate → occlude ASD temporarily<br/>
<b>Step 3:</b> If RA pressure <15 mmHg + adequate cardiac output → CLOSE ASD (BiV confirmed)<br/>
If RA pressure ≥15 mmHg → NOT suitable for BiV → consider 1.5V or Fontan<br/>
<b>Closure:</b> ASD suitable for percutaneous techniques; shunt closed at same catheterization session""",
body_style(9)),
]]
fut = Table(fu_data, colWidths=[17*cm])
fut.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_BLUE),
('BACKGROUND', (0,1), (-1,1), white),
('BOX', (0,0), (-1,-1), 1.5, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(fut)
story.append(Spacer(1, 0.2*cm))
# ---- OUTCOMES ----
story.append(Paragraph("6. SURGICAL OUTCOMES & LANDMARK DATA", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
out_rows = [
[Paragraph("<b>Study / Series</b>", Bb), Paragraph("<b>Key Finding</b>", Bb), Paragraph("<b>INI Relevance</b>", Bb)],
[Paragraph("Hanley et al, J Thorac CV Surg 1993\n(Multiinstitutional)", B),
Paragraph("Landmark study: outcomes in neonatal PA/IVS;\nestablished importance of RV/TV morphology and RVDCC on survival", B),
Paragraph("⭐ Reference for BiV predictors", bold_style(8.5, GREEN_BOX))],
[Paragraph("Daubeney et al, JACC 2002\n(Population-based)", B),
Paragraph("Range of morphology in PA/IVS;\nTV z-score, RV morphology systematically described", B),
Paragraph("Anatomic classification framework", bold_style(8.5, MID_BLUE))],
[Paragraph("Dyamenahalli et al\nCardiol Young 2004 (n=210)", B),
Paragraph("210 consecutive patients;\nManagement outcomes with RVDCC impact", B),
Paragraph("RVDCC = major mortality driver", bold_style(8.5, RED_HIGHLIGHT))],
[Paragraph("Schneider et al 2014 (n=60)", B),
Paragraph("87% survival at 10 years follow-up", B),
Paragraph("Modern era BiV outcomes", bold_style(8.5, GREEN_BOX))],
[Paragraph("Zheng et al 2016 (n=33)\nSingle-center", B),
Paragraph("Single-stage: 97%/94%/88% (1/5/15yr)\nStaged repair: 90%/88%/69% (1/5/15yr)", B),
Paragraph("⭐ Single-stage superior to staged", bold_style(8.5, RED_HIGHLIGHT))],
[Paragraph("Cheung et al\nAnn Thorac Surg 2014", B),
Paragraph("RVDCC: 50% mortality\nRVDCC + ostial atresia + single-ventricle: 100% mortality", B),
Paragraph("⭐ RVDCC + Fontan = worst outcome", bold_style(8.5, RED_HIGHLIGHT))],
[Paragraph("John & Warnes 2012\n(Mayo Clinic adult survivors)", B),
Paragraph("20 adult patients; ALL required reintervention\n80% atrial arrhythmias; 15% ventricular arrhythmias\nValve replacements: TV(5), PV(6), MV(2)", B),
Paragraph("Long-term morbidity is significant", bold_style(8.5, ORANGE_BOX))],
[Paragraph("Multicenter series\n(1990s-present)", B),
Paragraph("Overall survival: ~90% at 5-10yr; ~60% at 10-15yr", B),
Paragraph("Benchmark survival figures", bold_style(8.5, MID_BLUE))],
]
ot = Table(out_rows, colWidths=[4.5*cm, 8*cm, 4.5*cm])
ot.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,-1), LIGHT_BLUE),
('BACKGROUND', (0,2), (-1,2), white),
('BACKGROUND', (0,4), (-1,4), white),
('BACKGROUND', (0,6), (-1,6), white),
('BACKGROUND', (0,8), (-1,8), white),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(ot)
story.append(Spacer(1, 0.2*cm))
# Predictors of BiV repair
pred_data = [[Paragraph("⭐ PREDICTORS OF BIVENTRICULAR REPAIR (Know ALL for INI SS)", bold_style(10, DARK_BLUE))],
[Paragraph("""<b>FAVORABLE (supports BiV):</b> TV z-score ≥-2 | Tripartite RV | Absence of RVDCC | Significant TR (paradoxically lowers RV pressure, limits sinusoid formation)<br/>
<b>UNFAVORABLE (against BiV):</b> TV z-score ≤-4 | Unipartite RV | RVDCC | No TR (suprasystemic RV) | Muscular atresia<br/>
<b>Limitation of TV z-score:</b> Only measures annular size; misses leaflet morphology, subvalvular apparatus status""",
body_style(9))]]
pdt = Table(pred_data, colWidths=[17*cm])
pdt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_YELLOW),
('BACKGROUND', (0,1), (-1,1), HexColor('#fffff5')),
('BOX', (0,0), (-1,-1), 2, GOLD),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(pdt)
story.append(PageBreak())
# ---- MEMORY AIDS ----
story.append(Paragraph("7. MEMORY AIDS & MNEMONICS", H1))
story.append(HRFlowable(width="100%", thickness=2, color=MID_BLUE))
story.append(Spacer(1, 0.15*cm))
mem1_data = [[Paragraph("🧠 PA/IVS in a NUTSHELL — Mnemonic: 'PURE DUCT'", bold_style(10, TEAL))],
[Paragraph("""<b>P</b> — Pulmonary atresia (complete RVOTO)<br/>
<b>U</b> — Univentricular risk if TV z ≤-4<br/>
<b>R</b> — RVDCC = 25% cases, biggest risk factor<br/>
<b>E</b> — Echo (TTE) is primary diagnostic tool<br/>
<b>D</b> — Duct (PDA) dependent — give PGE₁ immediately<br/>
<b>U</b> — Unobstructed ASD/PFO needed for decompression<br/>
<b>C</b> — Catheterization required for coronary anatomy before surgery<br/>
<b>T</b> — TV z-score is the key predictor for BiV repair""", body_style(9.5))]]
m1 = Table(mem1_data, colWidths=[17*cm])
m1.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), HexColor('#e0f7fa')),
('BACKGROUND', (0,1), (-1,1), white),
('BOX', (0,0), (-1,-1), 2, TEAL),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(m1)
story.append(Spacer(1, 0.2*cm))
# CORONARY PATTERNS MEMORY
story.append(Paragraph("CORONARY ANATOMY PATTERN — Memory Aid (A→D = increasing severity)", H2))
cor_data = [
[Paragraph("<b>Pattern</b>", Bb), Paragraph("<b>Anatomy</b>", Bb), Paragraph("<b>Risk</b>", Bb), Paragraph("<b>Memory</b>", Bb)],
[Paragraph("A", B), Paragraph("No PA/IVS — normal coronary anatomy", B), Paragraph("None", B), Paragraph("A = All clear", bold_style(8.5, GREEN_BOX))],
[Paragraph("B", B), Paragraph("RV-RCA fistulae; NO coronary stenosis\nRV steal possible", B), Paragraph("Moderate", B), Paragraph("B = Bypass risk", bold_style(8.5, ORANGE_BOX))],
[Paragraph("C", B), Paragraph("RV-RCA fistulae + proximal/distal stenosis\nSteal or ischemia", B), Paragraph("High", B), Paragraph("C = Critical stenosis", bold_style(8.5, RED_HIGHLIGHT))],
[Paragraph("D", B), Paragraph("RVDCC + coronary ostial atresia\nIsolation + MI risk", B), Paragraph("Extreme", B), Paragraph("D = Death risk", bold_style(8.5, RED_HIGHLIGHT))],
]
ct = Table(cor_data, colWidths=[1.5*cm, 7*cm, 3*cm, 5.5*cm])
ct.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,1), LIGHT_GREEN),
('BACKGROUND', (0,2), (-1,2), LIGHT_ORANGE),
('BACKGROUND', (0,3), (-1,3), LIGHT_RED),
('BACKGROUND', (0,4), (-1,4), HexColor('#ffcccc')),
('BOX', (0,0), (-1,-1), 1, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, HexColor('#aaaaaa')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(ct)
story.append(Spacer(1, 0.2*cm))
# TV ZSCORE QUICK REF
tv_data = [
[Paragraph("<b>TV z-score</b>", Bb), Paragraph("<b>RV Morphology</b>", Bb), Paragraph("<b>RVDCC Risk</b>", Bb), Paragraph("<b>Repair Type</b>", Bb)],
[Paragraph("≥ -2", bold_style(9.5, GREEN_BOX)), Paragraph("Tripartite", B), Paragraph("Rare", B), Paragraph("Biventricular ✅", bold_style(9.5, GREEN_BOX))],
[Paragraph("-2 to -4", bold_style(9.5, ORANGE_BOX)), Paragraph("Bipartite", B), Paragraph("Possible", B), Paragraph("1.5 Ventricle ⚠️", bold_style(9.5, ORANGE_BOX))],
[Paragraph("≤ -4", bold_style(9.5, RED_HIGHLIGHT)), Paragraph("Unipartite", B), Paragraph("Common", B), Paragraph("Fontan ❌", bold_style(9.5, RED_HIGHLIGHT))],
]
tvt = Table(tv_data, colWidths=[3*cm, 4.5*cm, 4.5*cm, 5*cm])
tvt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,1), LIGHT_GREEN),
('BACKGROUND', (0,2), (-1,2), LIGHT_ORANGE),
('BACKGROUND', (0,3), (-1,3), LIGHT_RED),
('BOX', (0,0), (-1,-1), 1, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, HexColor('#aaaaaa')),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
]))
story.append(tvt)
story.append(Spacer(1, 0.2*cm))
# ---- EXAM PEARLS ----
story.append(Paragraph("8. INI SS CET EXAM PEARLS", H1))
story.append(HRFlowable(width="100%", thickness=2, color=RED_HIGHLIGHT))
story.append(Spacer(1, 0.15*cm))
pearls_data = [[Paragraph("🎯 HIGH-YIELD EXAM PEARLS — PA/IVS", bold_style(11, RED_HIGHLIGHT))],
[Paragraph("""<b>1. PDA dependency:</b> PA/IVS is invariably ductal-dependent. PGE₁ is the IMMEDIATE treatment upon diagnosis, before any workup is complete.<br/>
<b>2. RVDCC prevalence:</b> ~25% of PA/IVS patients — highest risk group. Identified by cardiac catheterization (coronary angiography). Any RV decompression can be lethal.<br/>
<b>3. BiV repair predictor:</b> TV z-score ≥ -2 + tripartite RV + no RVDCC = best candidates for BiV.<br/>
<b>4. Membranous vs Muscular atresia:</b> Membranous (75%) — amenable to wire perforation. Muscular (25%) — requires open surgery, worse prognosis.<br/>
<b>5. ASD significance:</b> If ASD is absent or restrictive — RV cannot decompress; balloon atrial septostomy indicated.<br/>
<b>6. 1.5V repair criteria:</b> Bidirectional Glenn + RVOT reconstruction when RV cannot support full systemic venous return but isn't severely hypoplastic enough for Fontan.<br/>
<b>7. Long-term morbidity:</b> Virtually ALL adult survivors need reintervention. 80% develop atrial arrhythmias. PV replacement most common valve surgery.<br/>
<b>8. Sinusoids vs RVDCC:</b> Sinusoids (fistulae) are present in 45-70%; ONLY called RVDCC when coronary flow is dependent on RV — 25% incidence.<br/>
<b>9. CPB strategy with RVDCC:</b> Bicaval snared cannulation + RA arterial cannula → maintain RV preload with oxygenated blood during CPB.<br/>
<b>10. Follow-up cath threshold:</b> RA pressure <15 mmHg with adequate CO → proceed with ASD closure (BiV confirmed).""",
body_style(9.2))]]
pt = Table(pearls_data, colWidths=[17*cm])
pt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_RED),
('BACKGROUND', (0,1), (-1,1), HexColor('#fffafa')),
('BOX', (0,0), (-1,-1), 2.5, RED_HIGHLIGHT),
('LINEABOVE', (0,1), (-1,1), 1.5, RED_HIGHLIGHT),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(pt)
story.append(Spacer(1, 0.2*cm))
# Probable INI Questions
pq_data = [[Paragraph("📝 PROBABLE INI SS CET QUESTIONS — PA/IVS", bold_style(10, DARK_BLUE))],
[Paragraph("""<b>Q1.</b> A neonate presents with cyanosis. Echo confirms PA/IVS. TV z-score is -5. RV is unipartite. What is the surgical plan?<br/>
→ <b>Staged Fontan pathway</b> (Stage 1: systemic-PA shunt / PDA stent; Stage 2: Bidirectional Glenn; Stage 3: Fontan)<br/><br/>
<b>Q2.</b> During cardiac cath in PA/IVS, coronary filling is seen only from RV injection, not aortic root. Diagnosis?<br/>
→ <b>RVDCC with coronary ostial atresia</b> (Pattern D — highest mortality risk)<br/><br/>
<b>Q3.</b> What hemodynamic threshold decides whether ASD closure is safe during follow-up cath after RV decompression?<br/>
→ <b>RA pressure <15 mmHg with adequate cardiac output</b><br/><br/>
<b>Q4.</b> What is the CPB cannulation strategy when operating on PA/IVS with confirmed RVDCC?<br/>
→ <b>Bicaval venous cannulation (snared) + arterial cannula in right atrium</b> to maintain oxygenated RV preload<br/><br/>
<b>Q5.</b> What determines the type of repair in PA/IVS (BiV vs 1.5V vs Fontan)?<br/>
→ <b>TV z-score + RV morphology (tripartite/bipartite/unipartite) + presence/absence of RVDCC + degree of TR</b>""",
body_style(9))]]
pqt = Table(pq_data, colWidths=[17*cm])
pqt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_BLUE),
('BACKGROUND', (0,1), (-1,1), white),
('BOX', (0,0), (-1,-1), 2, MID_BLUE),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(pqt)
story.append(PageBreak())
# ---- LAST MINUTE REVISION ----
story.append(Paragraph("9. LAST MINUTE REVISION TABLE", H1))
story.append(HRFlowable(width="100%", thickness=3, color=GOLD))
story.append(Spacer(1, 0.15*cm))
lmr_data = [
[Paragraph("<b>TOPIC</b>", bold_style(9.5, white)),
Paragraph("<b>KEY FACT</b>", bold_style(9.5, white)),
Paragraph("<b>DO NOT FORGET</b>", bold_style(9.5, white))],
[Paragraph("Prevalence", B), Paragraph("4-8/100,000 live births; 1-3% of CHD", B), Paragraph("Rare but important; affects full-term neonates", B)],
[Paragraph("Anatomy", B), Paragraph("Complete RVOTO + intact IVS", B), Paragraph("PDA is the ONLY source of pulm blood flow", B)],
[Paragraph("RV types", B), Paragraph("Tripartite 60-80% | Bipartite 15-30% | Unipartite 2-10%", B), Paragraph("Type determines repair strategy", B)],
[Paragraph("TV z-score", B), Paragraph("≥-2 = mild; -2 to -4 = moderate; ≤-4 = severe", B), Paragraph("Best predictor for BiV feasibility", B)],
[Paragraph("RVDCC", B), Paragraph("~25% of PA/IVS; coronary flow retrograde from RV", B), Paragraph("Catheterization BEFORE any RV decompression is mandatory", B)],
[Paragraph("Immediate Rx", B), Paragraph("PGE₁ to maintain PDA", B), Paragraph("+ ensure unobstructed ASD/PFO", B)],
[Paragraph("Membranous PV", B), Paragraph("75% of PA/IVS", B), Paragraph("Wire perforation + BPV (catheter) feasible", B)],
[Paragraph("Muscular PV", B), Paragraph("25% of PA/IVS; infundibulum obliterated", B), Paragraph("Open surgery required; worse prognosis", B)],
[Paragraph("BiV criteria", B), Paragraph("TV≥-2 + tripartite RV + no RVDCC", B), Paragraph("RA pressure <15 mmHg at test occlusion = BiV safe", B)],
[Paragraph("1.5V repair", B), Paragraph("BDG + RVOT reconstruction + ASD closure (±4mm fenest)", B), Paragraph("When RV inadequate for BiV but not severe enough for Fontan", B)],
[Paragraph("Single V pathway", B), Paragraph("RVDCC/unipartite/TV≤-4 → Fontan", B), Paragraph("RVDCC + Fontan = 50-100% mortality in some series", B)],
[Paragraph("CPB+RVDCC", B), Paragraph("Bicaval (snared) + RA arterial cannula", B), Paragraph("Maintains RV preload with oxygenated blood", B)],
[Paragraph("Follow-up cath", B), Paragraph("6-12 months post RV decompression", B), Paragraph("Shunt occlusion test; RA pressure threshold <15mmHg", B)],
[Paragraph("Outcomes", B), Paragraph("~90% survival at 5-10yr; ~60% at 10-15yr", B), Paragraph("ALL adults need reintervention; 80% atrial arrhythmias", B)],
[Paragraph("Worst prognosis", B), Paragraph("RVDCC + coronary ostial atresia + Fontan", B), Paragraph("100% mortality in Cheung series", B)],
[Paragraph("1st repair", B), Paragraph("Weinberg 1962 — transventricular valvotomy", B), Paragraph("Historic landmark", B)],
]
lmrt = Table(lmr_data, colWidths=[3.5*cm, 7.5*cm, 6*cm])
lmrt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,-1), LIGHT_BLUE),
('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_BLUE, white]),
('BOX', (0,0), (-1,-1), 1.5, DARK_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, HexColor('#aaaaaa')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(lmrt)
story.append(Spacer(1, 0.2*cm))
# Teaching notes
teach_data = [[Paragraph("👨🏫 TEACHING NOTES — How to Teach This Chapter", bold_style(10, TEAL))],
[Paragraph("""<b>Teaching sequence:</b> Start with anatomy → RV morphology classification → why RVDCC is life-threatening → immediate management → surgical decision flowchart → outcomes<br/>
<b>Key concept to emphasize:</b> PA/IVS is NOT ONE disease — it is a SPECTRUM. TV z-score and coronary anatomy define everything.<br/>
<b>Clinical hook:</b> "This child would be dead in 24 hours without PGE₁" — emphasizes urgency.<br/>
<b>Interactive case:</b> Present an echo (tripartite RV, TV z=-1, membranous PV atresia, no sinusoids) → walk students through management step by step.<br/>
<b>Exam trick:</b> In vignettes — if RVDCC is present, no option involving RV decompression is correct. If cath shows coronary filling only from RV → RVDCC diagnosed → Fontan pathway.<br/>
<b>Connect to Fontan:</b> For severe PA/IVS, this becomes the first step of the Fontan path — link it to other single-ventricle lectures.""", body_style(9))]]
tt = Table(teach_data, colWidths=[17*cm])
tt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), HexColor('#e0f7fa')),
('BACKGROUND', (0,1), (-1,1), white),
('BOX', (0,0), (-1,-1), 2, TEAL),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(tt)
doc.build(story, onFirstPage=hf, onLaterPages=hf)
print(f"PDF 1 generated: {path}")
return path
generate_notes()
print("Notes PDF DONE")
cd /home/daytona/workspace/ini-cvts-ch123 && python3 generate_pdfs.py 2>&1
~/ini-cvts-ch123/generate_mcq.py
#!/usr/bin/env python3
"""Generate PDF 2: 25 MCQs for INI SS CET CVTS - Chapter 123 PA/IVS"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib.colors import HexColor, white, black
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
import os
OUTPUT_DIR = "/home/daytona/workspace/ini-cvts-ch123"
DARK_BLUE = HexColor('#1a3a6b')
MID_BLUE = HexColor('#2e6da4')
LIGHT_BLUE = HexColor('#d6e8f7')
GOLD = HexColor('#c9a22a')
GRAY_BG = HexColor('#f4f6f9')
DARK_GRAY = HexColor('#333333')
RED_HIGHLIGHT = HexColor('#c0392b')
TEAL = HexColor('#006d75')
LIGHT_TEAL = HexColor('#e0f7fa')
GREEN_BOX = HexColor('#1e7145')
def body_style(size=10, color=DARK_GRAY, align=TA_LEFT):
return ParagraphStyle('body', fontSize=size, textColor=color,
fontName='Helvetica', spaceAfter=3,
spaceBefore=2, leading=size+5, alignment=align)
def bold_style(size=10, color=DARK_GRAY):
return ParagraphStyle('bold', fontSize=size, textColor=color,
fontName='Helvetica-Bold', spaceAfter=3,
spaceBefore=2, leading=size+4)
def heading_style(size=12, color=DARK_BLUE):
return ParagraphStyle('heading', fontSize=size, textColor=color,
fontName='Helvetica-Bold', spaceAfter=4,
spaceBefore=6, leading=size+4)
def make_header_footer(canvas_obj, doc):
canvas_obj.saveState()
w, h = A4
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, h-2.2*cm, w, 2.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica-Bold', 12)
canvas_obj.drawString(1.2*cm, h-1.3*cm, "MCQ QUESTION PAPER | PA/IVS | Chapter 123")
canvas_obj.setFont('Helvetica', 9)
canvas_obj.drawRightString(w-1.2*cm, h-1.3*cm, "INI SS CET CVTS | Single Best Answer")
canvas_obj.setFillColor(GOLD)
canvas_obj.rect(0, h-2.4*cm, w, 0.25*cm, fill=1, stroke=0)
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, 0, w, 1.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica', 8)
canvas_obj.drawString(1.2*cm, 0.45*cm, "INI SS CET CVTS | Chapter 123: Pulmonary Atresia with Intact Ventricular Septum | Answer Key in Separate Document")
canvas_obj.drawRightString(w-1.2*cm, 0.45*cm, f"Page {doc.page}")
canvas_obj.restoreState()
# 25 MCQs
QUESTIONS = [
{
"n": 1,
"type": "Clinical Vignette",
"stem": "A 3-day-old full-term neonate presents with progressive cyanosis and respiratory distress. On examination, pulse oximetry shows SpO₂ of 72% in room air. ECG shows decreased anterior right ventricular forces. Chest X-ray shows normal-to-mildly enlarged cardiac silhouette with reduced pulmonary vascularity. Echocardiography confirms pulmonary atresia with intact ventricular septum. The most immediate management priority is:",
"options": [
"a) Emergency surgical pulmonary valvotomy",
"b) Intravenous Prostaglandin E₁ infusion",
"c) Balloon atrial septostomy",
"d) Cardiac catheterization with coronary angiography"
],
"answer": "b"
},
{
"n": 2,
"type": "Anatomy",
"stem": "In a neonate diagnosed with pulmonary atresia with intact ventricular septum (PA/IVS), tricuspid valve z-score is found to be -5.2. This finding most accurately predicts which of the following right ventricular morphologies?",
"options": [
"a) Tripartite right ventricle with well-formed infundibulum",
"b) Bipartite right ventricle without infundibular outlet",
"c) Unipartite right ventricle",
"d) Normal right ventricular morphology with muscular hypertrophy only"
],
"answer": "c"
},
{
"n": 3,
"type": "Hemodynamics",
"stem": "A neonate with PA/IVS has a competent (non-regurgitant) tricuspid valve. Which of the following hemodynamic consequences is most likely in this scenario compared to PA/IVS with significant tricuspid regurgitation?",
"options": [
"a) Lower RV pressure with reduced risk of coronary sinusoid formation",
"b) Suprasystemic RV pressure with increased risk of RVDCC",
"c) Bidirectional shunting across the ASD with equalization of pressures",
"d) Preferential right-to-left ductal shunting reducing pulmonary overcirculation"
],
"answer": "b"
},
{
"n": 4,
"type": "Clinical Vignette",
"stem": "Cardiac catheterization in a neonate with PA/IVS is performed. During right ventriculography, the coronary arteries fill retrogradely from the right ventricle. On aortic root injection, no anterograde coronary filling is seen. This finding is most consistent with:",
"options": [
"a) RV-coronary fistulae without stenosis (Pattern B)",
"b) RV-coronary fistulae with proximal stenosis (Pattern C)",
"c) Right ventricle-dependent coronary circulation with coronary ostial atresia (Pattern D)",
"d) Normal coronary anatomy with aberrant origin from pulmonary artery"
],
"answer": "c"
},
{
"n": 5,
"type": "Operative Judgment",
"stem": "A surgeon is planning initial palliation for a neonate with PA/IVS who has confirmed right ventricle-dependent coronary circulation (RVDCC). Which of the following operative strategies is most appropriate?",
"options": [
"a) Transcatheter wire perforation of the pulmonary valve followed by balloon valvuloplasty",
"b) Surgical RVOT reconstruction with transannular patch alone",
"c) Systemic-pulmonary artery shunt placement without RV decompression",
"d) Emergency Fontan completion surgery"
],
"answer": "c"
},
{
"n": 6,
"type": "Guideline/Decision Making",
"stem": "A 6-month-old infant with PA/IVS underwent neonatal RVOT patch reconstruction and modified Blalock-Taussig shunt placement. Follow-up cardiac catheterization is performed. The systemic-PA shunt is temporarily occluded with adequate arterial saturations. The ASD is then temporarily occluded and right atrial pressure measures 12 mmHg with adequate cardiac output. The next best step is:",
"options": [
"a) Stage the patient for bidirectional Glenn shunt",
"b) Proceed with percutaneous ASD closure and shunt takedown",
"c) Plan Fontan completion surgery at 2 years",
"d) Perform surgical ASD closure on cardiopulmonary bypass"
],
"answer": "b"
},
{
"n": 7,
"type": "Clinical Scenario",
"stem": "In the surgical management of PA/IVS with confirmed RVDCC, the recommended cardiopulmonary bypass cannulation strategy is best described as:",
"options": [
"a) Standard aortic arterial + single right atrial venous cannulation",
"b) Standard aortic arterial + bicaval venous cannulation (snared)",
"c) Bicaval venous cannulation (snared) + arterial cannulation in the right atrium",
"d) Femoral arterial + bicaval venous cannulation"
],
"answer": "c"
},
{
"n": 8,
"type": "Anatomy",
"stem": "Regarding pulmonary valve atresia types in PA/IVS, which of the following statements is CORRECT?",
"options": [
"a) Muscular atresia accounts for approximately 75% of cases and is associated with a structurally identifiable valve",
"b) Membranous atresia accounts for approximately 75% and has fused leaflets with identifiable valve tissue; amenable to transcatheter perforation",
"c) Membranous atresia is characterized by complete obliteration of the muscular infundibulum",
"d) Both types have equal association with right ventricle-dependent coronary circulation"
],
"answer": "b"
},
{
"n": 9,
"type": "Imaging Interpretation",
"stem": "A neonate with suspected PA/IVS undergoes echocardiography. The apical four-chamber view shows a moderately hypoplastic right ventricle. The parasternal long-axis view of the outflow tract reveals a thin echogenic membrane across the pulmonary annulus with no flow on Doppler. The most appropriate next step in management is:",
"options": [
"a) Immediate surgical transannular patch repair",
"b) Start PGE₁ infusion and proceed with cardiac catheterization for coronary angiography",
"c) CT pulmonary angiogram to assess pulmonary artery anatomy",
"d) Conservative observation with serial echocardiography"
],
"answer": "b"
},
{
"n": 10,
"type": "Clinical Vignette - Paragraph",
"stem": "A 2-day-old neonate is referred with PA/IVS. On catheterization: TV z-score = -1.8, RV is tripartite, pulmonary atresia is membranous, no RVDCC, mild tricuspid regurgitation present. Anterograde coronary flow is confirmed from aortic root. The optimal surgical management strategy at this center (which offers both surgical and catheter-based options) would most likely be:",
"options": [
"a) Staged Fontan pathway beginning with Modified BT shunt",
"b) 1.5 ventricle repair with bidirectional Glenn + RVOT reconstruction",
"c) Biventricular repair pathway — transcatheter wire perforation + balloon pulmonary valvuloplasty (or surgical valvotomy) + systemic-PA shunt",
"d) PDA stenting alone with deferral of all procedures to 6 months"
],
"answer": "c"
},
{
"n": 11,
"type": "Landmark Trial",
"stem": "Regarding the landmark 1993 multiinstitutional study by Hanley and colleagues on neonatal PA/IVS (J Thorac Cardiovasc Surg), which of the following was an established predictor of biventricular repair and improved survival?",
"options": [
"a) Presence of RV-dependent coronary circulation",
"b) TV z-score ≥ -2 with tripartite RV",
"c) Muscular pulmonary atresia requiring open surgery",
"d) Unipartite RV morphology"
],
"answer": "b"
},
{
"n": 12,
"type": "Outcomes",
"stem": "According to multicenter series data on PA/IVS surgical outcomes spanning the 1990s to current era, which of the following best represents expected survival rates?",
"options": [
"a) ~50% survival at 5 years; ~30% at 10 years",
"b) ~90% survival at 5-10 years; ~60% at 10-15 years",
"c) ~99% survival at 5 years; ~95% at 10 years",
"d) ~70% survival at 5 years; ~70% at 10 years"
],
"answer": "b"
},
{
"n": 13,
"type": "Clinical Scenario",
"stem": "A neonate with PA/IVS has a TV z-score of -3. Right ventriculogram shows a bipartite RV with no infundibular outlet. Coronary angiography shows RV-coronary fistulae without stenosis and anterograde coronary flow from the aorta confirmed. Following initial palliation, this patient is MOST LIKELY a candidate for:",
"options": [
"a) Biventricular repair after RV recruitment",
"b) 1.5-ventricle repair (bidirectional Glenn + RVOT reconstruction)",
"c) Full Fontan completion at 3-6 months",
"d) Heart transplantation"
],
"answer": "b"
},
{
"n": 14,
"type": "Pathophysiology",
"stem": "In PA/IVS, egress of right ventricular blood is dependent upon which of the following when the tricuspid valve is competent and no RVDCC is present?",
"options": [
"a) PDA providing a right-to-left shunt",
"b) Right-to-left shunting through ASD/PFO and tricuspid regurgitation",
"c) Development of pulmonary arteriovenous fistulae",
"d) Left ventricular-dependent pulmonary blood flow through coronary sinusoids"
],
"answer": "b"
},
{
"n": 15,
"type": "Operative Judgment",
"stem": "During initial palliation for PA/IVS with mild RV hypoplasia (TV z-score = -1.5) and membranous pulmonary atresia, the surgeon uses CPB and places a transannular patch. In the early postoperative period, the RV is dysfunctional with inadequate antegrade pulmonary flow. What is the appropriate additional step at this stage?",
"options": [
"a) Immediate Fontan takedown",
"b) Placement of a systemic-pulmonary artery shunt to supplement pulmonary blood flow",
"c) Start of high-dose steroids to reduce RV inflammation",
"d) Immediate BiV repair with ASD closure"
],
"answer": "b"
},
{
"n": 16,
"type": "Imaging Interpretation",
"stem": "A 10-year-old child who underwent wire perforation of membranous pulmonary valve atresia in the neonatal period presents for follow-up. Cardiac MRI in the four-chamber view shows a well-developed right ventricular cavity. This finding best supports which of the following conclusions?",
"options": [
"a) The intervention was unsuccessful and the RV grew due to compensatory hypertrophy",
"b) Successful early RV decompression promoted RV growth and recruitment towards biventricular repair",
"c) The patient should be referred for Fontan completion",
"d) The RV is dilated, indicating pulmonary regurgitation requiring valve replacement"
],
"answer": "b"
},
{
"n": 17,
"type": "Clinical Scenario",
"stem": "A neonate with PA/IVS undergoes PGE₁ initiation. However, despite PGE₁, the patient remains profoundly cyanosed with SpO₂ 55%. Echocardiography shows a very small, highly restrictive PFO with minimal right-to-left atrial shunting. The most appropriate additional intervention is:",
"options": [
"a) Increase PGE₁ dose",
"b) Emergent balloon atrial septostomy (Rashkind procedure)",
"c) Urgent surgical systemic-PA shunt",
"d) Intubation and mechanical ventilation alone"
],
"answer": "b"
},
{
"n": 18,
"type": "Guideline",
"stem": "A patient with PA/IVS undergoes a 1.5-ventricle repair. Post-bypass, right atrial pressure is 18 mmHg with marginal cardiac output despite atrial septal closure. The most appropriate surgical modification at this point is:",
"options": [
"a) Place a 4-mm fenestration in the atrial septum (fenestrated ASD closure)",
"b) Proceed with takedown and convert to Fontan immediately",
"c) Add a second systemic-pulmonary shunt",
"d) Convert to extracorporeal membrane oxygenation support"
],
"answer": "a"
},
{
"n": 19,
"type": "Long-term Outcomes",
"stem": "According to the Mayo Clinic series (John and Warnes, Int J Cardiol, 2012) on adult survivors of PA/IVS repair, which of the following statements is most accurate regarding long-term outcomes?",
"options": [
"a) Most adult survivors do not require reintervention if initial repair was biventricular",
"b) All patients in the series required reinterventions; 80% developed atrial arrhythmias",
"c) Only patients palliated to Fontan required reintervention; biventricular patients had excellent freedom from reoperation",
"d) Ventricular arrhythmias were the most common late complication occurring in 80% of patients"
],
"answer": "b"
},
{
"n": 20,
"type": "Landmark Data / Outcomes",
"stem": "The single-center study by Zheng and colleagues (2016, n=33) comparing single-stage versus staged repair in PA/IVS found which of the following survival rates at 15-year follow-up?",
"options": [
"a) Single-stage 88%; Staged repair 69%",
"b) Single-stage 69%; Staged repair 88%",
"c) Single-stage 97%; Staged repair 90%",
"d) Equal survival in both groups at 15 years"
],
"answer": "a"
},
{
"n": 21,
"type": "Decision Making",
"stem": "A neonate with PA/IVS is found to have RV-dependent coronary circulation with coronary ostial atresia (Pattern D) on cardiac catheterization. The best long-term management strategy for this patient is:",
"options": [
"a) Aggressive biventricular repair with RV decompression as it prevents sinusoid formation",
"b) 1.5-ventricle repair with bidirectional Glenn",
"c) Staged single-ventricle Fontan palliation without RV decompression",
"d) Coronary artery bypass grafting to re-establish anterograde flow"
],
"answer": "c"
},
{
"n": 22,
"type": "Clinical Vignette",
"stem": "A cyanosed neonate undergoes echocardiography which shows: complete absence of antegrade flow across a fused pulmonary valve, right-to-left shunt at PFO level, intact interventricular septum, PDA maintaining pulmonary blood flow. ECG shows decreased anterior RV forces. Chest X-ray shows mildly reduced pulmonary vascularity. What is the MOST ACCURATE clinical diagnosis and echocardiographic classification?",
"options": [
"a) Tetralogy of Fallot with pulmonary atresia",
"b) Pulmonary atresia with ventricular septal defect (PA/VSD)",
"c) Pulmonary atresia with intact ventricular septum (PA/IVS) — membranous type",
"d) Critical pulmonary stenosis with intact interventricular septum"
],
"answer": "c"
},
{
"n": 23,
"type": "Anatomy / Guideline",
"stem": "In PA/IVS, the presence of coronary artery sinusoids (fistulae) between the right ventricle and coronary arteries is believed to persist due to which primary mechanism?",
"options": [
"a) Congenital absence of coronary ostia requiring alternative perfusion pathways",
"b) Persistence of embryonic fetal sinusoids due to elevated (hypertensive) right ventricular pressures",
"c) Retrograde perfusion from the main pulmonary artery through bronchial collaterals",
"d) Aortopulmonary collateral vessels re-routing to the coronary bed"
],
"answer": "b"
},
{
"n": 24,
"type": "Operative Judgment",
"stem": "During a neonatal palliative procedure for PA/IVS, the surgeon uses cardiopulmonary bypass and performs RVOT patch reconstruction along with PDA ligation. After CPB separation, the arterial saturation drops to 65% despite high FiO₂ and the RV appears dysfunctional on TEE with minimal antegrade pulmonary artery flow. The most appropriate intraoperative action is:",
"options": [
"a) Convert to extracorporeal membrane oxygenation (ECMO) immediately",
"b) Re-establish CPB and place a 3-3.5mm modified Blalock-Taussig shunt or central shunt to supplement pulmonary blood flow",
"c) Open the previously ligated PDA",
"d) Proceed with emergency biventricular repair and ASD closure"
],
"answer": "b"
},
{
"n": 25,
"type": "Integrated Clinical Scenario",
"stem": "A neonatologist calls you for a full-term neonate with profound cyanosis (SpO₂ 60%). Echo shows: complete RVOTO, intact IVS, severely hypoplastic unipartite RV (TV z-score -6.2), large PDA, ASD with right-to-left shunt. Cardiac catheterization confirms RVDCC with retrograde coronary filling from RV only. Which sequence of management is MOST APPROPRIATE according to current guidelines and outcomes data?",
"options": [
"a) PGE₁ → Catheter pulmonary valve perforation + BPV → follow-up cath at 6 months → ASD closure if RA pressure <15 mmHg",
"b) PGE₁ → Cardiac catheterization + coronary angiography → Systemic-PA shunt (Stage 1) → Bidirectional Glenn at 3-6 months (Stage 2) → Fontan completion at 2-4 years (Stage 3)",
"c) PGE₁ → Surgical transannular RVOT patch reconstruction → BiV repair after RV growth",
"d) PGE₁ → PDA stenting → Await spontaneous RV growth → 1.5V repair at 6 months"
],
"answer": "b"
},
]
def generate_mcq():
path = os.path.join(OUTPUT_DIR, "Ch123_MCQ_PAIVS_25Questions.pdf")
doc = SimpleDocTemplate(path, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=3.0*cm, bottomMargin=2.0*cm)
def hf(c, d): make_header_footer(c, d)
story = []
B = body_style(10)
Bb = bold_style(10)
# Title block
title_data = [[
Paragraph("<font color='white'><b>CHAPTER 123: PA/IVS — MCQ QUESTION PAPER</b></font>",
ParagraphStyle('t', fontSize=14, fontName='Helvetica-Bold', textColor=white, leading=18)),
Paragraph("<font color='#c9a22a'><b>INI SS CET CVTS Standard</b></font><br/><font color='white'>25 Single Best Answer MCQs | All question types</font>",
ParagraphStyle('t2', fontSize=10, fontName='Helvetica', textColor=white, leading=14))
]]
tt = Table(title_data, colWidths=[10*cm, 7*cm])
tt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('BOX', (0,0), (-1,-1), 0, DARK_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(tt)
story.append(Spacer(1, 0.2*cm))
# Instructions
instr_data = [[Paragraph(
"<b>INSTRUCTIONS:</b> Each question has FOUR options (a, b, c, d). Select the SINGLE BEST ANSWER. "
"This paper tests clinical decision-making, operative judgment, hemodynamics, imaging interpretation, "
"landmark trials, and guidelines. Answer key with detailed explanations is provided in a separate document.",
body_style(9)
)]]
it = Table(instr_data, colWidths=[17*cm])
it.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), LIGHT_TEAL),
('BOX', (0,0), (-1,-1), 1, TEAL),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
story.append(it)
story.append(Spacer(1, 0.3*cm))
# Type color mapping
type_colors = {
"Clinical Vignette": HexColor('#e3f2fd'),
"Anatomy": HexColor('#e8f5e9'),
"Hemodynamics": HexColor('#fff3e0'),
"Operative Judgment": HexColor('#fce4ec'),
"Guideline/Decision Making": HexColor('#f3e5f5'),
"Clinical Scenario": HexColor('#e0f7fa'),
"Landmark Trial": HexColor('#fff9c4'),
"Outcomes": HexColor('#e8f5e9'),
"Imaging Interpretation": HexColor('#e3f2fd'),
"Pathophysiology": HexColor('#fff3e0'),
"Guideline": HexColor('#f3e5f5'),
"Long-term Outcomes": HexColor('#e0f7fa'),
"Landmark Data / Outcomes": HexColor('#fff9c4'),
"Decision Making": HexColor('#fce4ec'),
"Anatomy / Guideline": HexColor('#e8f5e9'),
"Clinical Vignette - Paragraph": HexColor('#e3f2fd'),
"Integrated Clinical Scenario": HexColor('#fce4ec'),
}
type_border = {
"Clinical Vignette": MID_BLUE,
"Anatomy": GREEN_BOX,
"Hemodynamics": GOLD,
"Operative Judgment": RED_HIGHLIGHT,
"Guideline/Decision Making": TEAL,
"Clinical Scenario": TEAL,
"Landmark Trial": GOLD,
"Outcomes": GREEN_BOX,
"Imaging Interpretation": MID_BLUE,
"Pathophysiology": GOLD,
"Guideline": TEAL,
"Long-term Outcomes": TEAL,
"Landmark Data / Outcomes": GOLD,
"Decision Making": RED_HIGHLIGHT,
"Anatomy / Guideline": GREEN_BOX,
"Clinical Vignette - Paragraph": MID_BLUE,
"Integrated Clinical Scenario": RED_HIGHLIGHT,
}
for q in QUESTIONS:
bg = type_colors.get(q['type'], LIGHT_BLUE)
border = type_border.get(q['type'], MID_BLUE)
# Question header row
hdr = [[
Paragraph(f"<b>Q{q['n']}.</b>", bold_style(11, DARK_BLUE)),
Paragraph(f"<font color='white'><b> {q['type']} </b></font>",
ParagraphStyle('tp', fontSize=8, fontName='Helvetica-Bold',
textColor=white, leading=10, backColor=border)),
]]
ht = Table(hdr, colWidths=[1.5*cm, 15.5*cm])
ht.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), bg),
('BACKGROUND', (1,0), (1,0), bg),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
('RIGHTPADDING', (0,0), (-1,-1), 5),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
# Stem
stem_row = [[Paragraph(q['stem'], body_style(10))]]
st = Table(stem_row, colWidths=[17*cm])
st.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 2),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
# Options
opt_rows = [[Paragraph(opt, body_style(9.5))] for opt in q['options']]
ot = Table(opt_rows, colWidths=[17*cm])
ot.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), white),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 20),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
# Wrap all in outer box
outer = Table([
[ht], [st], [ot]
], colWidths=[17*cm])
outer.setStyle(TableStyle([
('BOX', (0,0), (-1,-1), 1.5, border),
('TOPPADDING', (0,0), (-1,-1), 0),
('BOTTOMPADDING', (0,0), (-1,-1), 0),
('LEFTPADDING', (0,0), (-1,-1), 0),
('RIGHTPADDING', (0,0), (-1,-1), 0),
('LINEBELOW', (0,1), (-1,1), 0.5, border),
]))
story.append(KeepTogether([outer, Spacer(1, 0.25*cm)]))
# Answer key placeholder at end
story.append(Spacer(1, 0.3*cm))
ank_data = [[Paragraph(
"<b>QUICK ANSWER KEY (for self-check):</b> "
"1b 2c 3b 4c 5c 6b 7c 8b 9b 10c 11b 12b 13b 14b 15b "
"16b 17b 18a 19b 20a 21c 22c 23b 24b 25b",
body_style(9, DARK_BLUE)
)]]
akt = Table(ank_data, colWidths=[17*cm])
akt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), HexColor('#fffde7')),
('BOX', (0,0), (-1,-1), 1.5, GOLD),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
story.append(akt)
doc.build(story, onFirstPage=hf, onLaterPages=hf)
print(f"PDF 2 generated: {path}")
return path
generate_mcq()
print("MCQ PDF DONE")
cd /home/daytona/workspace/ini-cvts-ch123 && python3 generate_mcq.py 2>&1
Please update progress
~/ini-cvts-ch123/generate_answers.py
#!/usr/bin/env python3
"""Generate PDF 3: Detailed Answer Key for INI SS CET CVTS - Chapter 123 PA/IVS"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib.colors import HexColor, white, black
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
import os
OUTPUT_DIR = "/home/daytona/workspace/ini-cvts-ch123"
DARK_BLUE = HexColor('#1a3a6b')
MID_BLUE = HexColor('#2e6da4')
LIGHT_BLUE = HexColor('#d6e8f7')
GOLD = HexColor('#c9a22a')
DARK_GRAY = HexColor('#333333')
RED_HL = HexColor('#c0392b')
GREEN_BOX = HexColor('#1e7145')
LIGHT_GREEN = HexColor('#e8f5e9')
LIGHT_RED = HexColor('#fdecea')
LIGHT_YELLOW= HexColor('#fffde7')
TEAL = HexColor('#006d75')
LIGHT_TEAL = HexColor('#e0f7fa')
ORANGE = HexColor('#e65c00')
LIGHT_ORANGE= HexColor('#fff3e0')
CORRECT_BG = HexColor('#e6f4ea')
WRONG_BG = HexColor('#fdecea')
def body_style(size=9.5, color=DARK_GRAY, align=TA_LEFT):
return ParagraphStyle('body', fontSize=size, textColor=color,
fontName='Helvetica', spaceAfter=2,
spaceBefore=1, leading=size+4, alignment=align)
def bold_style(size=9.5, color=DARK_GRAY):
return ParagraphStyle('bold', fontSize=size, textColor=color,
fontName='Helvetica-Bold', spaceAfter=2,
spaceBefore=1, leading=size+4)
def make_header_footer(canvas_obj, doc):
canvas_obj.saveState()
w, h = A4
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, h-2.2*cm, w, 2.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica-Bold', 12)
canvas_obj.drawString(1.2*cm, h-1.3*cm, "ANSWER KEY WITH EXPLANATIONS | PA/IVS | Chapter 123")
canvas_obj.setFont('Helvetica', 9)
canvas_obj.drawRightString(w-1.2*cm, h-1.3*cm, "INI SS CET CVTS | Detailed Distractor Analysis")
canvas_obj.setFillColor(GOLD)
canvas_obj.rect(0, h-2.4*cm, w, 0.25*cm, fill=1, stroke=0)
canvas_obj.setFillColor(DARK_BLUE)
canvas_obj.rect(0, 0, w, 1.2*cm, fill=1, stroke=0)
canvas_obj.setFillColor(white)
canvas_obj.setFont('Helvetica', 8)
canvas_obj.drawString(1.2*cm, 0.45*cm, "INI SS CET CVTS | Chapter 123: Pulmonary Atresia with Intact Ventricular Septum | Correct Answer + Distractor Analysis")
canvas_obj.drawRightString(w-1.2*cm, 0.45*cm, f"Page {doc.page}")
canvas_obj.restoreState()
# Full answer data — 25 questions
ANSWERS = [
{
"n": 1,
"stem_short": "Immediate management for cyanosed neonate with confirmed PA/IVS",
"correct": "b",
"correct_text": "Intravenous Prostaglandin E₁ (PGE₁) infusion",
"explanation": "PA/IVS is invariably ductal-dependent — the patent ductus arteriosus (PDA) is the sole or primary source of pulmonary blood flow in the neonatal period. As soon as PA/IVS is diagnosed, initiation of PGE₁ is the single most critical immediate intervention. It maintains ductus patency, stabilises pulmonary blood flow, and allows time for definitive evaluation (coronary angiography, RV sizing). Without PGE₁, the ductus will close → pulmonary blood flow ceases → death within hours to days.",
"distractors": {
"a": "Emergency surgical valvotomy is NOT the immediate step. It is a planned procedure after full anatomic characterisation (especially coronary anatomy). Rushing to surgery without knowing RVDCC status could cause coronary steal, ischemia, and intraoperative death.",
"c": "Balloon atrial septostomy (Rashkind procedure) is indicated if the ASD/PFO is restrictive and the patient remains profoundly cyanosed despite PGE₁. It is a secondary step — the PFO is often sufficient in most neonates. PGE₁ always precedes septostomy consideration.",
"d": "Cardiac catheterization with coronary angiography is mandatory before surgery to identify RVDCC — but this is NOT the first immediate step. Haemodynamic stabilisation with PGE₁ is required first to prevent deterioration during catheterization."
},
"guideline": "Chapter 123 (Cohn's Cardiac Surgery): 'As soon as PA/IVS is diagnosed, initiation of prostaglandin E₁ infusion is necessary to maintain patency of the ductus arteriosus.'",
"learning_point": "In any ductal-dependent congenital heart disease presenting in the neonate — PGE₁ is ALWAYS the first intervention. Stabilise first, then investigate."
},
{
"n": 2,
"stem_short": "TV z-score -5.2 → predicts which RV morphology?",
"correct": "c",
"correct_text": "Unipartite right ventricle",
"explanation": "TV annulus z-score strongly correlates with RV morphology in PA/IVS. The classification is: z-score ≥ -2 → tripartite RV (inlet + trabecular + infundibulum). z-score -2 to -4 → bipartite RV (inlet + trabecular only, no infundibulum). z-score ≤ -4 → unipartite RV (severely hypoplastic, only inlet). A z-score of -5.2 clearly falls in the ≤ -4 category, predicting a unipartite RV with the smallest functional cavity.",
"distractors": {
"a": "Tripartite RV (well-formed, with infundibulum) corresponds to TV z-score ≥ -2. This patient's z-score of -5.2 is far below -2. Tripartite RV patients are the best candidates for biventricular repair.",
"b": "Bipartite RV corresponds to TV z-scores in the -2 to -4 range. At -5.2, the patient is well beyond this range into unipartite territory.",
"d": "Normal RV morphology would correspond to TV z-score near 0. Normal morphology with muscular hypertrophy alone is not a recognised PA/IVS morphologic variant in this classification."
},
"guideline": "Table 123.1 (Chapter 123): TV z-score <-4 → Unipartite RV | -2 to -4 → Bipartite | >-2 → Tripartite",
"learning_point": "Memorise the TV z-score to RV morphology mapping — this is the CORNERSTONE of all surgical decision-making in PA/IVS and is directly testable."
},
{
"n": 3,
"stem_short": "Competent TV in PA/IVS → hemodynamic consequence?",
"correct": "b",
"correct_text": "Suprasystemic RV pressure with increased risk of RVDCC",
"explanation": "In PA/IVS, with complete RVOTO (no antegrade pulmonary outflow), the RV has no forward exit for blood. If the TV is competent (no regurgitation), the RV cannot decompresses through backward regurgitation into the RA. As a result, RV pressure builds to suprasystemic levels. This sustained, extreme RV hypertension is the driving force that maintains persistence of embryonic coronary sinusoids, eventually establishing RV-dependent coronary circulation (RVDCC). Patients with competent TVs and suprasystemic RVs have the highest RVDCC risk.",
"distractors": {
"a": "This is the opposite — a competent TV leads to HIGHER (not lower) RV pressure and MORE (not fewer) sinusoids. Lower RV pressure and reduced sinusoid formation is associated with significant TV regurgitation, which decompresses the RV.",
"c": "Bidirectional ASD shunting with equalisation of pressures would suggest both RA and LA pressures are elevated. In PA/IVS with a competent TV, the RA pressure may be normal to mildly elevated — the right-to-left ASD shunt is predominantly driven by obstructed RV outflow, not pressure equalisation.",
"d": "Ductal shunting in PA/IVS flows from the aorta to the pulmonary artery (left-to-right at ductal level in most cases) because systemic pressure exceeds pulmonary artery pressure when the ductus is the source of pulmonary blood flow. Ductal direction does not relate to TV competence."
},
"guideline": "Chapter 123: 'In the presence of a competent TV with little to no regurgitation, RV pressures may be significantly increased (i.e., suprasystemic) with developed coronary fistulae or RVDCC.'",
"learning_point": "Paradoxically, significant TR is PROTECTIVE in PA/IVS — it decompresses the RV, reducing RVDCC risk. A competent TV means a hypertensive RV and higher RVDCC probability."
},
{
"n": 4,
"stem_short": "Coronary filling only from RV injection — no filling from aortic root",
"correct": "c",
"correct_text": "RVDCC with coronary ostial atresia (Pattern D)",
"explanation": "This is the classic catheterisation finding of coronary ostial atresia (Pattern D — the most severe coronary anomaly in PA/IVS). When coronary arteries are NOT visible on aortic root injection but ARE visible retrogradely during RV ventriculography, it means the coronary ostia are atretic — the only source of coronary perfusion is retrograde RV blood. This confirms complete RVDCC. This pattern carries the highest mortality risk (100% in some series for single-ventricle palliation per Cheung et al).",
"distractors": {
"a": "Pattern B (RV-RCA fistulae without stenosis) still has anterograde coronary filling from the aorta — the fistulae are ADDITIONAL pathways but not the only ones. In Pattern B, aortic root injection WOULD show coronary filling.",
"b": "Pattern C (fistulae with stenosis) — again, aortic root injection would show some anterograde flow, possibly reduced, with stenotic segments. Complete absence of anterograde flow from aorta is not Pattern C.",
"d": "ALCAPA (anomalous left coronary from pulmonary artery) is a different entity not associated with PA/IVS in this context. In ALCAPA, aortic root injection would show the right coronary artery normally, and collateral filling from RCA to LCA via retrograde pulmonary artery filling. This is not the described scenario."
},
"guideline": "Fig. 123.2D (Chapter 123): 'RVDCC with coronary ostial occlusion or atresia — potential for isolation and myocardial infarction.' Fig. 123.5 shows catheterisation with no coronary filling from aortic root — only from RV injection.",
"learning_point": "In PA/IVS cath: If no coronary filling from aorta but retrograde filling from RV → Pattern D → RVDCC → Fontan pathway only. Never decompress the RV."
},
{
"n": 5,
"stem_short": "Confirmed RVDCC — appropriate initial palliation?",
"correct": "c",
"correct_text": "Systemic-pulmonary artery shunt placement without RV decompression",
"explanation": "In confirmed RVDCC, right ventricular decompression is absolutely contraindicated as a primary strategy. Relieving RV outflow obstruction would reduce RV pressure, eliminating the driving force for retrograde coronary perfusion — this causes coronary steal, myocardial ischaemia, ventricular dysfunction, and sudden death. The appropriate palliation is to establish a stable source of pulmonary blood flow WITHOUT touching the RV: a systemic-pulmonary artery shunt (modified BT shunt or central shunt) or transcatheter PDA stenting. This stabilises the patient as Stage 1 of a Fontan pathway.",
"distractors": {
"a": "Wire perforation + balloon pulmonary valvuloplasty is a transcatheter RV decompression technique — absolutely contraindicated in RVDCC. It would immediately reduce RV pressure, cut off retrograde coronary flow, and risk myocardial infarction and death.",
"b": "Surgical RVOT reconstruction with transannular patch alone decompresses the RV — this is contraindicated in RVDCC for the same reasons as option a.",
"d": "Emergency Fontan completion is not appropriate in a neonate — Fontan physiology requires growth and staged preparation (Glenn first). It cannot be performed as an emergency in a haemodynamically unstable newborn."
},
"guideline": "Chapter 123: 'RVDCC is clinically important as RV decompression may lead to complications of coronary artery steal and ischemia, including sudden death.' Definitive single-ventricle palliation is reserved for PA/IVS variants with severe RV hypoplasia with RVDCC.",
"learning_point": "RVDCC = absolute contraindication to RV decompression. Any option in an MCQ involving RVOT relief, valvotomy, or transannular patch in a patient with RVDCC is WRONG."
},
{
"n": 6,
"stem_short": "Post-RV decompression; follow-up cath: RA pressure 12 mmHg with shunt occluded + ASD occluded + adequate CO",
"correct": "b",
"correct_text": "Proceed with percutaneous ASD closure and shunt takedown",
"explanation": "The hemodynamic threshold for confirming biventricular (BiV) repair feasibility during follow-up catheterization is: RA pressure < 15 mmHg with adequate cardiac output when BOTH the systemic-PA shunt AND the ASD are temporarily occluded. This patient's RA pressure is 12 mmHg (< 15 mmHg threshold) with adequate CO — this confirms the RV can sustain a full systemic venous return and support biventricular circulation. The standard protocol is percutaneous (catheter-based) ASD closure with simultaneous shunt closure at the same catheterization session.",
"distractors": {
"a": "Bidirectional Glenn is the second stage for patients who FAIL BiV criteria — i.e., RA pressure ≥15 mmHg on test occlusion. This patient passed the BiV test with RA pressure 12 mmHg, so Glenn is not indicated.",
"c": "Fontan completion at 2 years is the end of the single-ventricle pathway. This patient has demonstrated BiV capacity — routing them to Fontan would be inappropriate and harmful.",
"d": "Surgical ASD closure on CPB is more invasive than necessary. Most ASDs in this context are suitable for percutaneous closure techniques (catheter-based), which can be done at the same catheterization session as the test."
},
"guideline": "Chapter 123: 'Most centers use an RA pressure of less than 15 mmHg with adequate cardiac output in order to determine whether the ASD can be closed to achieve a complete biventricular circulation. Most ASDs are suitable for percutaneous ASD closure techniques.'",
"learning_point": "RA pressure < 15 mmHg = BiV safe. ASD closure is catheter-based (percutaneous), not surgical. Know this threshold — it is directly testable."
},
{
"n": 7,
"stem_short": "CPB cannulation strategy for PA/IVS with RVDCC",
"correct": "c",
"correct_text": "Bicaval venous cannulation (snared) + arterial cannulation in the right atrium",
"explanation": "In RVDCC, maintaining adequate RV preload with oxygenated blood during CPB is essential to prevent myocardial ischaemia. The unique cannulation strategy described in Chapter 123 uses: (1) bicaval venous cannulation with snares to control systemic venous return, AND (2) the arterial cannula is placed in the RIGHT ATRIUM (not the aorta in the conventional sense) — this delivers oxygenated blood to maintain RV preload. Operations in RVDCC are performed with the RV filled and beating, maintaining perfusion to the RVDCC-dependent coronary vessels throughout the procedure.",
"distractors": {
"a": "Standard aortic arterial + single RA venous cannulation is the routine CPB setup. In RVDCC, this standard strategy does not address the need to maintain oxygenated RV preload separately. Venous drainage from a single RA cannula would drain the RV, dropping preload and risking coronary ischaemia.",
"b": "Standard aortic arterial + bicaval venous (snared) is the standard strategy for most operations — the bicaval part is correct, but the arterial cannula should be placed in the RA (not aorta) in RVDCC cases to maintain RV preload.",
"d": "Femoral arterial cannulation is used in emergency or redo situations for access but is not the described specific RVDCC strategy. Femoral cannulation does not address the RVDCC-specific requirement of maintaining oxygenated RV preload."
},
"guideline": "Chapter 123, Fig. 123.9: 'Cannulation strategy includes bicaval venous cannulation (snared) and right atrial arterial cannulation to maintain delivery of oxygenated RV preload to prevent myocardial ischaemia. Perfusion is maintained to RVDCC with repairs performed with the RV filled and beating.'",
"learning_point": "RVDCC CPB = bicaval venous (snared) + RA arterial cannula. The RV must remain filled with oxygenated blood throughout. This is a high-yield operative detail unique to PA/IVS."
},
{
"n": 8,
"stem_short": "Correct statement about pulmonary valve atresia types in PA/IVS",
"correct": "b",
"correct_text": "Membranous atresia 75%; fused leaflets identifiable; amenable to transcatheter perforation",
"explanation": "Membranous pulmonary atresia is the more common form (~75%) and is characterised by fused, dysplastic valve leaflets that form a thin membrane — but structurally identifiable leaflet tissue IS present. The RV and infundibulum are usually structurally developed. Because the valve tissue is present and accessible, transcatheter techniques (wire perforation + balloon pulmonary valvuloplasty) or surgical valvotomy are feasible. Muscular atresia (~25%) involves complete obliteration of the muscular infundibulum with no identifiable valve tissue and is more commonly associated with severe RV hypoplasia and RVDCC.",
"distractors": {
"a": "This reverses the proportions. Muscular atresia is ~25%, not 75%. Membranous atresia does NOT have a 'well-functioning valve' — the valve is atretic (fused/obliterated), but leaflet tissue is still identifiable.",
"c": "Complete obliteration of the muscular infundibulum describes MUSCULAR atresia, not membranous. This is a classic reverse-option distractor.",
"d": "The two types have UNEQUAL association with RVDCC. Muscular atresia is MORE commonly associated with RVDCC and severe RV hypoplasia. Membranous atresia, which preserves infundibular development, has a lower RVDCC association."
},
"guideline": "Chapter 123: 'Membranous pulmonary atresia, occurring in approximately 75% of cases... leaflets may be fused and/or dysplastic... usually structurally developed [RV]. Muscular pulmonary atresia, occurring in approximately 25%... complete obliteration of the muscular infundibulum... more commonly associated with severe RV hypoplasia and RVDCC.'",
"learning_point": "Membranous = 75%, leaflets present, amenable to catheter/surgical opening. Muscular = 25%, worse prognosis, often RVDCC. Know the proportions cold."
},
{
"n": 9,
"stem_short": "Echo shows hypoplastic RV + thin membrane across pulmonary annulus — next step?",
"correct": "b",
"correct_text": "Start PGE₁ infusion and proceed with cardiac catheterization for coronary angiography",
"explanation": "The echo findings describe membranous pulmonary valve atresia (thin echogenic membrane = atretic valve, no Doppler flow = no antegrade pulmonary flow) with a hypoplastic RV — confirming PA/IVS. The immediate steps are: (1) PGE₁ to maintain ductal patency and pulmonary blood flow, and (2) cardiac catheterization with coronary angiography to identify RVDCC BEFORE any intervention. This is non-negotiable because any transcatheter or surgical RV decompression without knowing the coronary anatomy could cause lethal coronary steal in RVDCC patients.",
"distractors": {
"a": "Immediate surgical transannular patch repair, while potentially appropriate for membranous atresia, should NEVER be performed without first identifying coronary anatomy (RVDCC). Proceeding to surgery immediately after echo without catheterisation is dangerous and incorrect.",
"c": "CT pulmonary angiogram may have a role in complex pulmonary artery anatomy or post-operative assessment but is not the standard NEXT STEP after initial echo diagnosis. Cardiac catheterisation with coronary angiography is the mandatory pre-surgical investigation.",
"d": "Conservative observation is not appropriate in PA/IVS. Without PGE₁ and planning for intervention, the ductus will close, pulmonary blood flow will cease, and the patient will die. There is no role for watchful waiting in PA/IVS."
},
"guideline": "Chapter 123: 'Assessment of RVDCC anatomy is required. Cardiac catheterization with coronary angiography... and if necessary, catheter-based balloon atrial septostomy may be performed.' PGE₁ must be started immediately upon diagnosis.",
"learning_point": "The sequence is: Diagnose PA/IVS → Start PGE₁ → Cardiac cath + coronary angiography → Plan intervention. No step in this sequence should be skipped."
},
{
"n": 10,
"stem_short": "TV z=-1.8, tripartite RV, membranous PV atresia, no RVDCC, mild TR — optimal management?",
"correct": "c",
"correct_text": "Biventricular repair pathway — transcatheter wire perforation + balloon pulmonary valvuloplasty (or surgical valvotomy) + systemic-PA shunt",
"explanation": "This patient has all the FAVOURABLE predictors for biventricular repair: TV z-score -1.8 (> -2 = mild hypoplasia), tripartite RV (structurally complete), membranous PV atresia (amenable to perforation), absent RVDCC (safe to decompress RV), and mild TR. The management pathway pursues aggressive biventricular repair: RV decompression (transcatheter perforation + BPV or surgical valvotomy) + systemic-PA shunt to supplement early RV function + follow-up cath at 6-12 months to assess BiV feasibility and potentially close ASD.",
"distractors": {
"a": "Staged Fontan pathway is for severe cases with TV z-score ≤ -4, unipartite RV, and/or RVDCC. This patient has NONE of these adverse features. Routing a BiV-eligible patient to Fontan would be inappropriate.",
"b": "1.5-ventricle repair is for intermediate cases — TV z-score -2 to -4, bipartite RV — when the RV cannot fully support systemic venous return but is not severe enough for Fontan. This patient's anatomy is better than 1.5V criteria.",
"d": "PDA stenting alone defers all intervention but does nothing to promote RV growth or work toward BiV repair. In a patient with favourable anatomy, the institutional approach (as described in Chapter 123) favours aggressive early RV decompression to promote RV growth."
},
"guideline": "Chapter 123 Institutional Approach: 'favors an aggressive pursuit of a complete, biventricular repair... Early RV decompression should promote both TV and RV growth through improved antegrade pulmonary blood flow.'",
"learning_point": "Good BiV anatomy (z ≥ -2, tripartite, no RVDCC) → pursue aggressive BiV pathway from the start. Do not default to palliative options when anatomy supports repair."
},
{
"n": 11,
"stem_short": "Hanley 1993 landmark study — predictor of BiV repair and survival?",
"correct": "b",
"correct_text": "TV z-score ≥ -2 with tripartite RV",
"explanation": "The 1993 multiinstitutional Hanley study (J Thorac Cardiovasc Surg) is the landmark reference for PA/IVS outcomes. It established that TV z-score ≥ -2 combined with tripartite RV morphology are the most important predictors of successful biventricular repair. It also confirmed that absence of RVDCC and degree of tricuspid regurgitation are important co-predictors. This study forms the evidentiary basis for the TV z-score classification system still used today.",
"distractors": {
"a": "Presence of RVDCC is the OPPOSITE of a favourable predictor — it is associated with the worst prognosis and Fontan palliation (not biventricular repair). In Cheung et al, RVDCC had 50% mortality.",
"c": "Muscular pulmonary atresia requiring open surgery is associated with worse outcomes and higher RVDCC incidence. It is not a predictor of successful BiV repair.",
"d": "Unipartite RV morphology predicts the WORST outcome — it corresponds to TV z-score ≤ -4 and indicates Fontan pathway, not BiV repair."
},
"guideline": "Hanley FL, Sade RM, Blackstone EH, Kirklin JW, Freedom RM, Nanda NC. J Thorac Cardiovasc Surg. 1993;105:406-423. Chapter 123 cites this as the landmark study establishing BiV predictors.",
"learning_point": "Hanley 1993 = landmark PA/IVS outcomes study. Key predictors of BiV: TV z ≥ -2, tripartite RV, no RVDCC, tricuspid regurgitation present. Know authors + journal + year for INI SS."
},
{
"n": 12,
"stem_short": "Expected overall survival rates in multicenter PA/IVS series",
"correct": "b",
"correct_text": "~90% survival at 5-10 years; ~60% at 10-15 years",
"explanation": "Multiple multicenter series from the early 1990s through the modern surgical era have consistently reported overall survival of approximately 90% at 5-10 years follow-up and approximately 60% at 10-15 years. This reflects both the improvement in surgical techniques (especially for complex cases) and the long-term attrition from reinterventions, arrhythmias, and ventricular dysfunction. The Schneider 2014 series (n=60) reported 87% at 10 years, closely matching this range.",
"distractors": {
"a": "50% at 5 years and 30% at 10 years would represent early-era or high-risk (RVDCC-predominant) cohort outcomes. Modern overall survival is significantly better (~90% at 5-10 years).",
"c": "99% at 5 years and 95% at 10 years overstates modern outcomes. While surgical improvements have occurred, PA/IVS remains a high-risk lesion with significant long-term morbidity and mortality below 90% at 5-10 years.",
"d": "70% survival maintained equally at 5 and 10 years does not match reported data. The observed pattern is high early survival (~90%) with progressive decline to ~60% at 15 years due to late complications and reinterventions."
},
"guideline": "Chapter 123 Surgical Outcomes: 'several multicenter series... have reported overall survival rates of up to 90% at 5 to 10 years, respectively... and ~60% at 10 to 15 years.'",
"learning_point": "PA/IVS survival benchmark: 90% at 5-10 years; 60% at 10-15 years. The gap reflects late complications — arrhythmias, valve failure, Fontan failure."
},
{
"n": 13,
"stem_short": "TV z=-3, bipartite RV, fistulae without stenosis, anterograde coronary flow confirmed — likely repair pathway?",
"correct": "b",
"correct_text": "1.5-ventricle repair (bidirectional Glenn + RVOT reconstruction)",
"explanation": "This patient falls in the intermediate category: TV z-score -3 (between -2 and -4 = moderate hypoplasia), bipartite RV (no infundibular outlet — inlet and body only), fistulae without stenosis (Pattern B — anterograde coronary flow confirmed, so RV decompression is NOT absolutely contraindicated). This patient's RV is inadequate to fully support biventricular circulation (cannot meet full systemic venous return) but is not severely enough hypoplastic to mandate Fontan from the outset. After initial palliation fails to recruit a full BiV, the 1.5-ventricle repair is the appropriate next step: superior cavopulmonary connection (BDG) handles SVC flow; RVOT reconstruction routes IVC return through the RV to the pulmonary artery.",
"distractors": {
"a": "BiV repair is unlikely given bipartite RV with TV z-score -3. While BiV is attempted first, follow-up cath after decompression would show RA pressure ≥ 15 mmHg with inadequate CO if ASD is occluded, indicating the RV cannot sustain full return.",
"c": "Full Fontan at 3-6 months is premature and not indicated here since RVDCC is absent and the coronary situation permits RV decompression. Fontan is for severe RV hypoplasia (unipartite + TV z ≤ -4 + RVDCC). A bipartite RV with confirmed anterograde coronary flow warrants a 1.5V attempt.",
"d": "Heart transplantation is not an appropriate option for PA/IVS — surgical palliation (including Fontan) offers acceptable outcomes and is the standard of care. Transplant is reserved for end-stage cardiomyopathy with no surgical options."
},
"guideline": "Chapter 123: '1.5-V repair... patients who have usually undergone an initial palliation but who have failed to achieve an adequate amount of antegrade pulmonary blood flow to support a biventricular circulation. For these patients, the RV is incapable of completely supporting the entire systemic venous return.'",
"learning_point": "Bipartite RV + TV z -2 to -4 + no RVDCC → 1.5V is the likely endpoint after failed BiV recruitment. BDG handles SVC; RV handles IVC."
},
{
"n": 14,
"stem_short": "How does RV blood egress when TV is competent and no RVDCC?",
"correct": "b",
"correct_text": "Right-to-left shunting through ASD/PFO and tricuspid regurgitation",
"explanation": "In PA/IVS, there is no antegrade pulmonary outflow. With an intact IVS, the only ways for RV blood to egress are: (1) tricuspid regurgitation back into the RA, and (2) right-to-left shunting at the ASD/PFO level. Together, these two mechanisms allow the RA and RV to 'decompress' — blood flows back through the TV (if regurgitant) and then right-to-left across the ASD into the LA and systemic circulation. If neither of these routes exist, pressure rises catastrophically in the RV. In this question, the stem says TV is competent (no regurgitation), making the ASD/PFO the primary (though less effective) egress route.",
"distractors": {
"a": "The PDA shunts from aorta to pulmonary artery (left-to-right in terms of aorta → PA direction) to provide pulmonary blood flow — it does not provide a right-to-left shunt for RV decompression. The PDA cannot accept blood from the obstructed RV.",
"c": "Pulmonary arteriovenous fistulae are not a recognised decompression mechanism in PA/IVS. These are separate entities seen in chronic cyanotic heart disease or after Glenn shunts.",
"d": "Left ventricular-dependent pulmonary blood flow through coronary sinusoids is not a mechanism in PA/IVS. Coronary sinusoids carry deoxygenated RV blood to the coronary circulation — they do not provide pulmonary blood flow."
},
"guideline": "Chapter 123 Pathophysiology: 'Egress of RV blood flow is dependent upon the presence of concomitant tricuspid regurgitation and right-to-left shunting through an atrial level shunt (PFO or ASD) or through the persistence or developed coronary sinusoids or fistulae.'",
"learning_point": "RV egress in PA/IVS = TR (backward through TV) + R→L at ASD/PFO + coronary sinusoids. All three are RV decompression pathways. Obstruction of all three = extreme RV hypertension."
},
{
"n": 15,
"stem_short": "Post-RVOT patch reconstruction, RV dysfunctional with inadequate antegrade pulmonary flow — next step?",
"correct": "b",
"correct_text": "Placement of a systemic-pulmonary artery shunt to supplement pulmonary blood flow",
"explanation": "After RV decompression (RVOT patch reconstruction), it is common for the RV to be temporarily dysfunctional in the early postoperative period — it has been chronically pressure-loaded in utero and may not immediately generate adequate antegrade pulmonary flow. The established solution is to ADD a systemic-pulmonary artery shunt (modified BT shunt or central shunt) to provide supplemental pulmonary blood flow while the RV recovers and grows. This is a planned contingency in the neonatal palliation algorithm. The ASD is left open to allow some right-to-left shunting supporting systemic output as the RV recovers.",
"distractors": {
"a": "Fontan takedown is not applicable here — Fontan has not been performed. The procedure done was an RVOT patch (initial palliation), not Fontan. Takedown of a transannular patch is not a standard step.",
"c": "High-dose steroids to reduce RV inflammation have no established role in PA/IVS post-operative RV dysfunction. This reflects a misunderstanding of the pathophysiology — the issue is inadequate RV recovery, not inflammation.",
"d": "Immediate BiV repair with ASD closure would be catastrophic in an already dysfunctional RV. Closing the ASD removes the right-to-left safety valve, and the RV cannot sustain biventricular output at this stage. BiV repair is assessed only after RV recruitment at follow-up catheterization."
},
"guideline": "Chapter 123: 'The combination of right-to-left shunting across a PFO as well as reduced antegrade pulmonary blood flow through the RVOT may require placement of a systemic-pulmonary artery shunt... depending upon the degree of early RV dysfunction after surgical decompression.'",
"learning_point": "Post-decompression RV dysfunction = add systemic-PA shunt + leave ASD open. The RV needs time to grow and recover. Do NOT close ASD immediately post-palliation."
},
{
"n": 16,
"stem_short": "Cardiac MRI at age 10 years shows well-developed RV cavity after neonatal wire perforation of PV atresia",
"correct": "b",
"correct_text": "Successful early RV decompression promoted RV growth and recruitment towards biventricular repair",
"explanation": "This is the precisely described case in Fig. 123.6 of Chapter 123: a patient who underwent wire perforation + balloon valvuloplasty for membranous PA/IVS in the newborn period and had follow-up cardiac MRI at age 10 years showing a well-developed RV cavity. This is the intended outcome of early aggressive RV decompression — by relieving RVOTO and establishing antegrade pulmonary blood flow early, the RV is progressively recruited and grows toward normal size, enabling eventual biventricular repair. This is the goal of the institutional strategy outlined in Chapter 123.",
"distractors": {
"a": "The intervention WAS successful — the well-developed RV cavity at 10 years is evidence of successful RV recruitment, not failed intervention. Compensatory hypertrophy would manifest as a thick-walled, small-cavity RV, not a well-developed cavity.",
"c": "Fontan completion is inappropriate for a patient with a well-developed RV at 10 years — this is precisely the patient who has been successfully recruited to biventricular physiology. Fontan is for patients with persistent severe RV hypoplasia.",
"d": "While pulmonary regurgitation (PR) after transcatheter valvuloplasty is common and may cause RV dilatation over time, an enlarged or dilated RV due to PR would typically be described differently and in a concerning context. The described finding of 'well-developed RV cavity' in this specific chapter context represents successful recruitment, not pathological dilatation."
},
"guideline": "Chapter 123, Fig. 123.6: 'Follow-up cardiac MRI at age 10 years shows well-developed right ventricular cavity size... Patient underwent wire perforation of membranous PA and balloon valvuloplasty at newborn period.'",
"learning_point": "Early RV decompression → RV recruitment and growth over years → enables BiV repair. MRI is the best imaging modality for long-term RV size and function assessment in PA/IVS follow-up."
},
{
"n": 17,
"stem_short": "On PGE₁, SpO₂ 55% with highly restrictive PFO — next intervention?",
"correct": "b",
"correct_text": "Emergent balloon atrial septostomy (Rashkind procedure)",
"explanation": "Despite PGE₁ maintaining ductal patency and pulmonary blood flow, this patient remains profoundly cyanosed (SpO₂ 55%) because the PFO is highly restrictive — right-to-left atrial shunting is inadequate for systemic oxygenation. The urgently needed intervention is balloon atrial septostomy (Rashkind procedure) to enlarge the interatrial communication, allowing adequate mixing of oxygenated pulmonary venous blood with systemic venous blood. Chapter 123 explicitly states: 'ensuring the presence of an unrestricted atrial-level right-to-left shunt... if necessary, catheter-based balloon atrial septostomy may be performed.'",
"distractors": {
"a": "Increasing PGE₁ dose increases ductal patency and pulmonary blood flow — but the limiting factor here is NOT pulmonary blood flow (the PDA is open). The problem is inadequate mixing at the atrial level. More PGE₁ will not fix a restrictive PFO.",
"c": "Urgent surgical systemic-PA shunt is not the right next step when the current problem is inadequate atrial mixing. A shunt increases pulmonary blood flow but still cannot adequately oxygenate the system if the oxygenated blood cannot cross the restrictive PFO into the left heart and systemic circulation.",
"d": "Intubation and ventilation may be supportive but does not address the anatomical problem — a restrictive PFO preventing adequate mixing. Mechanical ventilation improves oxygenation marginally by increasing FiO₂ but will not raise SpO₂ from 55% to acceptable levels (>75%) without addressing the atrial-level obstruction."
},
"guideline": "Chapter 123: 'Ensuring the presence of an unrestricted atrial-level right-to-left shunt, as well as an assessment of RVDCC anatomy, is required... balloon atrial septostomy may be performed.'",
"learning_point": "PGE₁ + restrictive PFO + profound cyanosis = balloon atrial septostomy (Rashkind). Fix the mixing problem, not just the ductal problem."
},
{
"n": 18,
"stem_short": "Post 1.5V repair: RA pressure 18 mmHg with marginal CO after ASD closure — surgical modification?",
"correct": "a",
"correct_text": "Place a 4-mm fenestration in the atrial septum (fenestrated ASD closure)",
"explanation": "During 1.5-ventricle repair, if RA pressure is not acceptable (≥15 mmHg) with complete ASD closure, the solution is to create a fenestration in the atrial septum — specifically a 4-mm fenestrated ASD closure as described in Chapter 123. This allows a small right-to-left shunt to decompress the right atrium and maintain adequate systemic cardiac output at the cost of mild desaturation. The intent is to close this fenestration percutaneously in the future once the haemodynamics improve. This is directly analogous to fenestrated Fontan physiology.",
"distractors": {
"b": "Converting to Fontan immediately at this stage is not appropriate. The patient has a 1.5V repair in progress — they are not in Fontan territory (which requires Glenn as Stage 1 first in most protocols). An immediate emergency Fontan is not a recognised strategy.",
"c": "Adding a second systemic-pulmonary shunt would increase pulmonary blood flow but would worsen volume overload on an already struggling right heart. It does not address the elevated RA pressure caused by inadequate RV output.",
"d": "ECMO support is a rescue strategy for post-operative cardiac failure not responsive to other measures. While it may be needed if other steps fail, the first appropriate surgical response to high RA pressure after ASD closure in a 1.5V repair is fenestration — a planned, reversible, lower-risk modification."
},
"guideline": "Chapter 123: 'If RA pressures are not satisfactory with complete closure, fenestration of the atrial septum (~4 mm) can be performed with the intent to close a fenestration in the future using percutaneous techniques.'",
"learning_point": "4-mm fenestration = standard solution for high RA pressure in 1.5V repair. Plan for future percutaneous closure. RA pressure ≥ 15 mmHg = fenestrate, not fully close."
},
{
"n": 19,
"stem_short": "Mayo Clinic series (John & Warnes 2012) on adult PA/IVS survivors — most accurate statement?",
"correct": "b",
"correct_text": "All patients required reinterventions; 80% developed atrial arrhythmias",
"explanation": "The John & Warnes 2012 Mayo Clinic series (Int J Cardiol) reported on 20 adult PA/IVS survivors from 1998-2009. Key findings: ALL patients required reinterventions of some variety in adulthood. 80% of ALL patients developed atrial arrhythmias (highest in Fontan-palliated patients). Ventricular arrhythmias occurred in 15% (NOT 80%). Most common valve reinterventions: pulmonary valve replacement (n=6), TV replacement (n=5), mitral valve replacement (n=2). This series underscores the significant long-term burden of PA/IVS, even after 'successful' repair.",
"distractors": {
"a": "The data shows ALL adult survivors required reintervention regardless of whether initial repair was BiV or Fontan. BiV patients had the most reinterventions (predominantly valve replacements). There is NO freedom from reoperation in adult PA/IVS survivors.",
"c": "This statement inverts the findings. Both BiV and Fontan patients required reintervention. BiV patients had mostly valve reinterventions; Fontan patients had more arrhythmia-related procedures.",
"d": "Ventricular arrhythmias occurred in 15% of patients — NOT 80%. Atrial arrhythmias were the most common (80%). Swapping atrial and ventricular arrhythmia frequencies is a classic distractor in this context."
},
"guideline": "John AS, Warnes CA. Int J Cardiol. 2012;161:13-17. Chapter 123: 'All patients required reinterventions... atrial arrhythmias occurred in 80% of all patients... ventricular arrhythmias occurred in 15%.'",
"learning_point": "Adult PA/IVS: 100% need reintervention. 80% atrial arrhythmias. 15% ventricular. PV and TV replacement most common surgeries. Know these numbers — they are testable outcomes data."
},
{
"n": 20,
"stem_short": "Zheng 2016 (n=33) — survival at 15 years for single-stage vs staged repair?",
"correct": "a",
"correct_text": "Single-stage 88%; Staged repair 69%",
"explanation": "The Zheng 2016 single-center study (n=33) specifically compared single-stage vs staged PA/IVS repairs and reported 15-year survival of 88% for single-stage repairs and 69% for staged repairs. At 1 year: single-stage 97% vs staged 90%. At 5 years: single-stage 94% vs staged 88%. At 15 years: the gap widens to 88% (single-stage) vs 69% (staged). This supports the institutional philosophy of pursuing early aggressive biventricular repair where feasible, as staged palliation results in additional surgical risks and worse long-term survival.",
"distractors": {
"b": "This reverses the numbers — single-stage had BETTER outcomes (88%) than staged (69%), not worse. The single-stage approach is superior according to this study.",
"c": "97% and 90% are the 1-YEAR survival rates (single-stage 97%, staged 90%), not the 15-year rates. This is a classic temporal displacement distractor — know which time point corresponds to which numbers.",
"d": "Equal survival in both groups is contradicted by the published data. Single-stage consistently outperforms staged repair at all time points in this series, with the gap widening significantly at 15 years."
},
"guideline": "Zheng et al. 2016 single-center study (cited in Chapter 123): Single-stage: 97%/94%/88% (1/5/15yr); Staged repair: 90%/88%/69% (1/5/15yr).",
"learning_point": "Zheng 2016: Single-stage = 88% at 15yr; Staged = 69% at 15yr. Single-stage is SUPERIOR. Know ALL three time points for both groups — this data is directly testable."
},
{
"n": 21,
"stem_short": "RVDCC with coronary ostial atresia (Pattern D) — best long-term management?",
"correct": "c",
"correct_text": "Staged single-ventricle Fontan palliation without RV decompression",
"explanation": "Pattern D RVDCC with coronary ostial atresia is the most extreme end of the PA/IVS spectrum. The entire coronary circulation is retrograde from the RV — no anterograde coronary ostial flow exists. Any RV decompression would immediately drop RV pressure, eliminate retrograde coronary perfusion, and cause complete myocardial ischaemia, infarction, and death. The ONLY appropriate strategy is staged single-ventricle Fontan palliation: Stage 1 (systemic-PA shunt/PDA stent) → Stage 2 (bidirectional Glenn) → Stage 3 (Fontan completion). Even this strategy carries high mortality — Cheung et al reported 100% mortality for RVDCC with ostial atresia undergoing single-ventricle palliation.",
"distractors": {
"a": "Biventricular repair with RV decompression is the single most dangerous option for RVDCC Pattern D. It would immediately kill the patient by eliminating the only coronary perfusion source. This is THE most important contraindication in PA/IVS management.",
"b": "1.5-ventricle repair involves RVOT reconstruction — this is RV decompression. Even in a bidirectional Glenn + RVOT repair context, the RVOT reconstruction component would reduce RV pressure and cause coronary steal in Pattern D RVDCC.",
"d": "Coronary artery bypass grafting in a neonate or infant is technically extremely challenging and not the standard approach for PA/IVS-associated RVDCC. Even if technically possible, re-establishing anterograde flow via CABG would also depressurise the RV through competitive flow, posing similar ischaemic risks."
},
"guideline": "Chapter 123: 'Definitive single-ventricle palliation is generally reserved for PA/IVS variants with severe RV hypoplasia with RVDCC.' Cheung et al: 100% mortality for RVDCC + ostial atresia + single-ventricle (despite this being the best option).",
"learning_point": "RVDCC Pattern D = No RV decompression ever. Fontan pathway only. Even the best option (Fontan) carries up to 100% mortality in Pattern D. This is the worst subgroup."
},
{
"n": 22,
"stem_short": "Complete RVOTO + intact IVS + PDA + right-to-left at PFO — most accurate diagnosis?",
"correct": "c",
"correct_text": "Pulmonary atresia with intact ventricular septum (PA/IVS) — membranous type",
"explanation": "The echocardiographic description is a textbook PA/IVS presentation: complete RVOTO with no antegrade Doppler flow, intact IVS (no VSD), PDA as the sole pulmonary blood flow source, right-to-left atrial shunt at PFO. The finding of a 'thin echogenic membrane across the pulmonary annulus' is characteristic of membranous pulmonary atresia (fused leaflets forming an atretic membrane, leaflet tissue identifiable). The ECG showing decreased anterior RV forces and CXR with reduced pulmonary vascularity complete the classic clinical picture.",
"distractors": {
"a": "Tetralogy of Fallot with pulmonary atresia (TOF/PA) has an intact interventricular septum in its pure form but this is incorrect — TOF/PA has a VSD (subarterial VSD) as part of the tetralogy anatomy. Additionally, TOF/PA typically has major aortopulmonary collaterals (MAPCAs) and variable PA anatomy, neither described here.",
"b": "PA/VSD (pulmonary atresia with ventricular septal defect) — the key distinguishing feature is the PRESENCE of a VSD, which allows LV-to-RV or biventricular mixing. The question specifically states an intact IVS, ruling out PA/VSD. PA/VSD also commonly has MAPCAs and abnormal PA anatomy.",
"d": "Critical pulmonary stenosis with intact IVS is closely related but distinct — there IS some antegrade flow (even if very limited) across a stenotic (not completely atretic) pulmonary valve. Doppler would show a high-velocity jet across the valve. Complete absence of flow = atresia, not stenosis."
},
"guideline": "Chapter 123: 'PA/IVS is anatomically defined by complete obstruction to the RVOT with varying degrees of hypoplasia of the RV and tricuspid valve.' The intact IVS distinguishes it from PA/VSD.",
"learning_point": "PA/IVS vs PA/VSD: The IVS is THE distinguishing feature. PA/IVS = no VSD, ductus-dependent, RVDCC risk. PA/VSD = VSD present, MAPCAs common, different management."
},
{
"n": 23,
"stem_short": "Why do coronary artery sinusoids persist in PA/IVS?",
"correct": "b",
"correct_text": "Persistence of embryonic fetal sinusoids due to elevated (hypertensive) right ventricular pressures",
"explanation": "In normal fetal development, myocardial sinusoids connect the right ventricular trabeculations to the coronary arterial bed. These normally regress as the RV pressure normalises after birth and pulmonary outflow is established. In PA/IVS, because there is complete RVOTO, the RV pressure remains persistently elevated (hypertensive) throughout fetal life and into the neonatal period. This sustained high pressure prevents the normal regression of sinusoids — they persist and, with continued pressure, develop into established fistulous connections between the RV and coronary arteries. The higher the RV pressure (e.g., with competent TV), the more likely sinusoid persistence and RVDCC development.",
"distractors": {
"a": "Congenital absence of coronary ostia is a consequence (Pattern D), not a cause, and it occurs in a minority (~25%). Coronary sinusoids do NOT form because ostia are absent — rather, ostial atresia is a severe endpoint of the same sinusoid pathology process.",
"c": "Retrograde perfusion from MPA through bronchial collaterals is a mechanism seen in PA/VSD with MAPCAs — not in PA/IVS. In PA/IVS, the MPA is usually hypoplastic with no significant collateral supply from bronchials to coronary arteries.",
"d": "Aortopulmonary collateral rerouting to coronary beds is not a recognised mechanism in PA/IVS. Aortopulmonary collaterals (MAPCAs) are characteristic of PA/VSD with absent central pulmonary arteries — not PA/IVS."
},
"guideline": "Chapter 123: 'The persistence of these fistulae is believed to be a direct result of the presence of a hypertensive RV in PA/IVS. Thus, patients with severely hypoplastic and hypertensive RVs are more likely to have coronary sinusoids.'",
"learning_point": "Coronary sinusoids in PA/IVS = fetal sinusoids that failed to regress because of sustained high RV pressure from RVOTO. Higher RV pressure → more sinusoids → greater RVDCC risk."
},
{
"n": 24,
"stem_short": "Intraoperative: post-CPB, SpO₂ 65%, RV dysfunctional, minimal antegrade PA flow after RVOT patch + PDA ligation",
"correct": "b",
"correct_text": "Re-establish CPB and place a 3-3.5mm modified BT shunt or central shunt to supplement pulmonary blood flow",
"explanation": "This scenario describes post-decompression early RV dysfunction — a recognised complication of PA/IVS neonatal palliation. After RVOT reconstruction and PDA ligation, the RV may not immediately generate sufficient antegrade flow, leaving the patient without adequate pulmonary blood flow (SpO₂ 65%). The solution is to re-establish CPB and place a systemic-pulmonary artery shunt: typically a 3-3.5mm polytetrafluoroethylene (PTFE) modified BT shunt (innominate artery to right pulmonary artery) or a central shunt. This provides a reliable supplemental source of pulmonary blood flow while the RV recovers. The ASD/PFO should remain open to serve as a pressure relief valve for the developing RV.",
"distractors": {
"a": "ECMO is an extreme rescue measure reserved for complete haemodynamic collapse unresponsive to conventional interventions. Adding a systemic-PA shunt is the appropriate first-line intraoperative response to post-decompression RV dysfunction. ECMO is not the initial step.",
"c": "Re-opening the PDA is not feasible intraoperatively once it has been ligated and divided. Surgical reconstruction of a ligated PDA is not a standard procedure and would not be appropriate here.",
"d": "Proceeding with BiV repair and ASD closure on a dysfunctional RV that cannot generate adequate antegrade flow would be catastrophic. ASD closure removes the right-to-left safety valve, further reducing systemic output. BiV repair is not an appropriate emergency intraoperative step when the RV is failing."
},
"guideline": "Chapter 123, Fig. 123.7: 'A 3- or 3.5-mm PTFE systemic-pulmonary artery shunt is placed as either a central shunt or modified BT shunt (from innominate artery to right PA).' Chapter text: 'may require placement of a systemic-PA shunt' when early RV dysfunction is present.",
"learning_point": "Post-RVOT decompression + RV dysfunction + low SpO₂ = add 3-3.5mm BT/central shunt. This is a planned contingency, not a complication. ASD stays open as RV pressure relief."
},
{
"n": 25,
"stem_short": "Unipartite RV, TV z=-6.2, RVDCC with coronary filling only from RV — correct management sequence?",
"correct": "b",
"correct_text": "PGE₁ → Cardiac catheterization + coronary angiography → Systemic-PA shunt (Stage 1) → Bidirectional Glenn at 3-6 months → Fontan at 2-4 years",
"explanation": "This patient has every feature of the highest-risk PA/IVS category: TV z-score -6.2 (severely hypoplastic, unipartite RV), RVDCC confirmed with coronary filling ONLY from RV, large unipartite RV. The management must follow the staged single-ventricle Fontan pathway WITHOUT any RV decompression: (1) Immediate PGE₁ to maintain ductal patency; (2) Cardiac catheterization + coronary angiography to confirm RVDCC anatomy; (3) Stage 1 neonatal palliation: systemic-PA shunt (modified BT or central shunt) or PDA stenting — establishing stable pulmonary blood flow WITHOUT touching the RV; (4) Stage 2 at 3-6 months: bidirectional Glenn (SVC to pulmonary artery); (5) Stage 3 at 2-4 years: Fontan completion. This is the precisely described staged single-ventricle palliation in Chapter 123.",
"distractors": {
"a": "Catheter pulmonary valve perforation + BPV is RV decompression — absolutely contraindicated in RVDCC. With unipartite RV + TV z -6.2 + RVDCC, this option is lethal. The coronary sinusoids would lose perfusion pressure, causing immediate coronary steal and myocardial infarction. This option is categorically wrong.",
"c": "Surgical transannular RVOT patch reconstruction is RV decompression — contraindicated in RVDCC. The BiV repair pathway cannot be pursued when: TV z ≤ -4, unipartite RV, and RVDCC are all present simultaneously. This is the most incorrect option.",
"d": "PDA stenting is an acceptable Stage 1 palliation alternative (instead of surgical BT shunt). However, 'await spontaneous RV growth → 1.5V repair' is not appropriate for a unipartite RV with RVDCC. With TV z -6.2 and confirmed RVDCC, spontaneous RV growth to BiV or 1.5V capacity will not occur, and a 1.5V repair (involving RVOT reconstruction) is contraindicated with RVDCC. The endpoint must be Fontan, not 1.5V."
},
"guideline": "Chapter 123: 'Definitive single-ventricle palliation is generally reserved for PA/IVS variants with severe RV hypoplasia with RVDCC. Following initial neonatal palliation, second-stage palliation is typically performed at 3 to 6 months of age.' For Stage 2: bidirectional Glenn.",
"learning_point": "The complete staging for high-risk PA/IVS: Stage 1 (neonatal) → Stage 2 (3-6mo BDG) → Stage 3 (2-4yr Fontan). No RV decompression at any stage when RVDCC is confirmed. This is the most integrated, high-difficulty question in the set."
},
]
def generate_answers():
path = os.path.join(OUTPUT_DIR, "Ch123_AnswerKey_DetailedExplanations.pdf")
doc = SimpleDocTemplate(path, pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=3.0*cm, bottomMargin=2.0*cm)
def hf(c, d): make_header_footer(c, d)
B = body_style()
Bb = bold_style()
story = []
# Title
title_data = [[
Paragraph("<font color='white'><b>CHAPTER 123: PA/IVS — ANSWER KEY WITH DETAILED EXPLANATIONS</b></font>",
ParagraphStyle('t', fontSize=13, fontName='Helvetica-Bold', textColor=white, leading=17)),
Paragraph("<font color='#c9a22a'><b>25 Questions | Full Distractor Analysis</b></font><br/><font color='white'>Correct Answer + Why Each Option is Right/Wrong | Guideline + Learning Point</font>",
ParagraphStyle('t2', fontSize=9.5, fontName='Helvetica', textColor=white, leading=13))
]]
tt = Table(title_data, colWidths=[9.5*cm, 7.5*cm])
tt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('BOX', (0,0), (-1,-1), 0, DARK_BLUE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(tt)
story.append(Spacer(1, 0.2*cm))
# Answer key summary table
story.append(Paragraph("MASTER ANSWER KEY",
ParagraphStyle('h', fontSize=11, fontName='Helvetica-Bold',
textColor=DARK_BLUE, spaceAfter=4)))
aq_rows = [[
Paragraph("<b>Q</b>", Bb), Paragraph("<b>Ans</b>", Bb),
Paragraph("<b>Q</b>", Bb), Paragraph("<b>Ans</b>", Bb),
Paragraph("<b>Q</b>", Bb), Paragraph("<b>Ans</b>", Bb),
Paragraph("<b>Q</b>", Bb), Paragraph("<b>Ans</b>", Bb),
Paragraph("<b>Q</b>", Bb), Paragraph("<b>Ans</b>", Bb),
]]
for row_start in range(1, 26, 5):
row = []
for n in range(row_start, min(row_start+5, 26)):
ans_data = next(a for a in ANSWERS if a['n'] == n)
row.append(Paragraph(str(n), body_style(9, DARK_GRAY, TA_CENTER)))
row.append(Paragraph(f"<b>{ans_data['correct'].upper()}</b>",
ParagraphStyle('ans', fontSize=10, fontName='Helvetica-Bold',
textColor=GREEN_BOX, alignment=TA_CENTER)))
aq_rows.append(row)
aqt = Table(aq_rows, colWidths=[1.2*cm, 0.8*cm]*5)
aqt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), DARK_BLUE),
('TEXTCOLOR', (0,0), (-1,0), white),
('BACKGROUND', (0,1), (-1,-1), LIGHT_BLUE),
('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_BLUE, white]),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('INNERGRID', (0,0), (-1,-1), 0.3, HexColor('#aaaaaa')),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(aqt)
story.append(Spacer(1, 0.3*cm))
# Individual question explanations
for ans in ANSWERS:
qblock = []
# Q header
hdr_data = [[
Paragraph(f"<font color='white'><b>Q{ans['n']}.</b> {ans['stem_short']}</font>",
ParagraphStyle('qh', fontSize=10, fontName='Helvetica-Bold',
textColor=white, leading=14)),
Paragraph(f"<font color='#ffffaa'><b>CORRECT ANSWER: ({ans['correct'].upper()})</b></font>",
ParagraphStyle('ca', fontSize=11, fontName='Helvetica-Bold',
textColor=white, leading=14, alignment=TA_RIGHT)),
]]
ht = Table(hdr_data, colWidths=[11.5*cm, 5.5*cm])
ht.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), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
qblock.append(ht)
# Correct answer + explanation
corr_data = [[
Paragraph(f"✅ <b>({ans['correct'].upper()}) {ans['correct_text']}</b>",
bold_style(9.5, GREEN_BOX)),
],[
Paragraph(ans['explanation'], body_style(9.2)),
]]
ct = Table(corr_data, colWidths=[17*cm])
ct.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), CORRECT_BG),
('BACKGROUND', (0,1), (-1,1), HexColor('#f5fff5')),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 1, GREEN_BOX),
('LINEABOVE', (0,1), (-1,1), 0.5, GREEN_BOX),
]))
qblock.append(ct)
# Distractors
for opt_letter, text in ans['distractors'].items():
dist_data = [[
Paragraph(f"❌ <b>({opt_letter.upper()}) — INCORRECT:</b> {text}",
body_style(9, DARK_GRAY)),
]]
dt = Table(dist_data, colWidths=[17*cm])
dt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), WRONG_BG),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('BOX', (0,0), (-1,-1), 0.5, HexColor('#e08080')),
('LINEBELOW', (0,0), (-1,-1), 0.3, HexColor('#ddaaaa')),
]))
qblock.append(dt)
# Guideline + Learning point
gl_data = [[
Paragraph(f"📖 <b>Reference/Guideline:</b> {ans['guideline']}", body_style(8.5, MID_BLUE)),
],[
Paragraph(f"💡 <b>Learning Point:</b> {ans['learning_point']}", bold_style(9, TEAL)),
]]
glt = Table(gl_data, colWidths=[17*cm])
glt.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), LIGHT_BLUE),
('BACKGROUND', (0,1), (-1,1), LIGHT_TEAL),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('BOX', (0,0), (-1,-1), 1, MID_BLUE),
('LINEABOVE', (0,1), (-1,1), 0.5, MID_BLUE),
]))
qblock.append(glt)
qblock.append(Spacer(1, 0.3*cm))
story.append(KeepTogether(qblock))
doc.build(story, onFirstPage=hf, onLaterPages=hf)
print(f"PDF 3 generated: {path}")
return path
generate_answers()
print("Answer Key PDF DONE")
Failed to create session: unauthorized: authentication failed: Bearer token is invalid
We encountered an error while processing your request. Please try again or reach out to us for help.
Update
ls -lh /home/daytona/workspace/ini-cvts-ch123/ 2>/dev/null && echo "---" && ls /…
Update
ls -lh /home/daytona/workspace/ini-cvts-ch123/*.pdf 2>/dev/null
cat << 'PYEOF' > /home/daytona/workspace/ini-cvts-ch123/generate_answers.py #!/u…
ls -lh /home/daytona/workspace/ini-cvts-ch123/*.pdf
Ch123 HY Notes PAIVS
PDF Document · PDF
Ch123 MCQ PAIVS 25Questions
PDF Document · PDF
Ch123 AnswerKey DetailedExplanations
PDF Document · PDF