Massive blood transfusion and blood components for 30 marks Question MD anaesthesia exam

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Finding Sources
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Reading File
Reading File
Reading File
I now have comprehensive data from multiple authoritative sources. Let me compose the full MD anaesthesia exam answer.

Massive Blood Transfusion and Blood Components

MD Anaesthesia Examination Answer - 30 Marks

I. BLOOD COMPONENTS - TYPES AND CHARACTERISTICS (8 marks)

1. Packed Red Blood Cells (PRBCs)

  • Volume: ~250 mL per unit; haematocrit 55-80%
  • Indication: Symptomatic anaemia, acute haemorrhage
  • Storage: 1-6°C; shelf life 35-42 days (depending on preservative - CPDA-1, AS-3, etc.)
  • Effect: 1 unit raises Hb by ~1 g/dL and haematocrit by ~3% in an average adult; 10-15 mL/kg raises Hb by 2-3 g/dL in children
  • Transfusion time: 60-90 min in stable patients; should not exceed 4 hours (bacterial growth risk)
  • Universal donor: Type O Rh-negative
  • Universal recipient: Type AB
  • Special preparations: leukocyte-reduced, irradiated, washed, frozen PRBCs
Leukocyte-reduced PRBCs: 70-85% WBCs removed; reduces febrile non-haemolytic reactions, HLA sensitisation, and CMV transmission
Irradiated PRBCs: Eliminates T-lymphocyte proliferation, preventing transfusion-associated graft-versus-host disease (TA-GvHD); indicated in immunocompromised patients, BMT recipients, intrauterine transfusions
Washed PRBCs: Plasma proteins removed; used in IgA-deficient patients and patients with repeated severe allergic reactions

2. Fresh Frozen Plasma (FFP)

  • Volume: 200-250 mL per unit
  • Contains: All coagulation factors (both labile V and VIII), fibrinogen, inhibitors (antithrombin, protein C and S), albumin
  • Preparation: Frozen within 8 hours of collection; stored at -18°C or below; shelf life 12 months (up to 24 months at -65°C)
  • Thawing: Must be thawed at 37°C; use within 24 hours once thawed
  • Indications:
    • Multiple coagulation factor deficiency (liver disease, DIC, massive transfusion)
    • Reversal of warfarin when PCC unavailable
    • TTP (plasma exchange)
    • Isolated factor deficiencies when specific concentrates unavailable
  • Dosing: 10-15 mL/kg; 1 unit of any coagulation factor activity = clotting activity in 1 mL FFP
  • ABO compatibility required; no Rh typing required
  • Risks: TRALI (most commonly associated with multiparous female donors), allergic reactions, volume overload

3. Platelets

  • Volume: ~55 mL (whole-blood derived) or 200-300 mL (apheresis/single-donor)
  • Storage: 20-24°C on continuous agitation; shelf life 5-7 days
  • One apheresis unit ≡ approximately 6 whole-blood-derived units
  • Effect: 1 unit raises platelet count by ~5,000-10,000/μL in average adult
  • Indications:
    • Platelet count <10,000/μL (prophylactic)
    • Count <50,000/μL with active bleeding or before invasive procedure
    • Count <100,000/μL in CNS surgery or ophthalmic surgery
    • Platelet function disorders with clinical bleeding
  • ABO compatibility preferable but not always required; Rh-negative platelets preferred for Rh-negative premenopausal women (RBC contamination can cause Rh sensitisation)
  • Leukocyte-reduced platelets reduce HLA sensitisation

4. Cryoprecipitate

  • Preparation: Obtained by slowly thawing rapidly frozen (single-donor) plasma at 1-6°C; the precipitate is refrozen
  • Volume: 5-20 mL per unit
  • Contents per unit (minimum standards per AABB): fibrinogen ≥150 mg (assumes ~250 mg/unit), factor VIII ≥80 IU, also contains factor XIII, von Willebrand factor (vWF), and fibronectin
  • Indications:
    • Hypofibrinogenaemia (fibrinogen <1.5 g/L with active bleeding) - the PRIMARY indication
    • DIC with fibrinogen deficiency
    • Congenital afibrinogenaemia/dysfibrinogenaemia
    • Haemophilia A and vWD when recombinant concentrates unavailable
    • NOT useful in haemophilia B (no factor IX)
  • Dosing: Pool of up to 10 units for adults; expected rise ~50-70 mg/dL fibrinogen
  • Formula for dosing: [Desired fibrinogen - Initial fibrinogen] × [Patient plasma volume] / 250 mg per unit
  • ABO compatibility preferred (minor incompatibility risk) though not strictly required in adults

5. Prothrombin Complex Concentrate (PCC)

  • Three-factor PCC: factors II, IX, X (lacks significant factor VII)
  • Four-factor PCC: factors II, VII, IX, X + protein C and S (preferred for warfarin reversal)
  • Indication: Life-threatening warfarin-associated haemorrhage or intracranial haemorrhage; more rapid INR normalisation than FFP; achieves INR <1.5 within 1 hour
  • Always co-administer Vitamin K 10 mg slow IV (1 mg/min)

6. Whole Blood / Low-Titer O Universal Whole Blood (LTOWB)

  • Gaining renewed interest especially in damage-control resuscitation and military settings
  • LTOWB: Type O donors with anti-A and anti-B titer <256 (saline method); safe in non-group O recipients when up to 4 units given
  • Contains all blood components in physiologic ratio; simplifies logistics

II. PRE-TRANSFUSION TESTING (3 marks)

StepTimePurpose
Blood grouping (ABO + Rh)~15 minDetermines ABO and Rh(D) type
Antibody screen45-60 minDetects unexpected antibodies to minor RBC antigens
Crossmatch (electronic/computer)RapidFor patients with negative antibody screen and ≥2 previous samples in system
Full serologic crossmatchUp to several hoursRequired when antibody screen is positive; incubation at 37°C + anti-human globulin (Coombs reagent)
Emergency releaseImmediateType O Rh-negative PRBCs without testing
Type-specific uncrossmatched~15 minABO/Rh typed only
  • (Coombs reagent) = anti-human globulin; promotes agglutination of sensitised RBCs
  • Type O Rh-positive can be used in males and post-menopausal women if O Rh-negative unavailable; avoid in females of childbearing potential (~20% develop anti-Rh(D) with 1 unit)

III. MASSIVE BLOOD TRANSFUSION (MBT) (10 marks)

Definition

  • Classical: Transfusion of ≥10 units PRBCs within 24 hours (approximately one circulating blood volume in an adult ~70 mL/kg)
  • Practical/operational: Transfusion of ≥3 units PRBCs/hour or ≥4 components in 30 minutes - triggers MTP activation
  • Alternative: Transfusion of >50% circulating blood volume in 3 hours

Indications for Massive Transfusion

  1. Major trauma with haemorrhagic shock
  2. Ruptured aortic aneurysm
  3. Gastrointestinal haemorrhage
  4. Obstetric catastrophe (postpartum haemorrhage, placenta praevia/accreta)
  5. Major intraoperative haemorrhage (hepatic surgery, cardiac surgery, vascular surgery, spine surgery)

Massive Transfusion Protocol (MTP)

Purpose: Streamline the chaotic process of managing massive haemorrhage by pre-defining blood component ratios and issuing them as standardised "packs" without waiting for repeated orders.
Activation: Clinical decision based on recognised need (shock index, ABC score, clinical judgement); communication between operating team and blood bank is critical.
Pack contents (typical example):
  • 6 units PRBCs + 6 units FFP + 1 apheresis platelet unit (equivalent of 6 whole-blood platelets)
  • This represents a 1:1:1 ratio (PRBC : FFP : Platelets)
Rationale for component ratios:
  • Acute haemorrhage involves loss of whole blood - not selective loss of RBCs alone
  • The PROPPR Trial (multicentre RCT): Compared 1:1:1 vs 1:1:2 (PRBC:FFP:Platelets) - no difference in 24-hour or 30-day mortality, but fewer deaths from exsanguination at 24 hours with 1:1:1 ratio
  • Current recommendation: 1:1:1 ratio (PRBCs : FFP : Platelets)
  • Note: Some evidence suggests 1:1:2 strategy may be equally efficacious in certain populations
Sequential pack release: After first pack issued, blood bank immediately prepares the next; continues until notified of patient stabilisation or death.

Damage Control Resuscitation (DCR) Principles

  1. Permissive hypotension: Target SBP 80-90 mmHg (MAP ~50 mmHg) until surgical haemorrhage control (avoid in TBI/spinal injury)
  2. Haemostatic resuscitation: PRBCs + FFP + Platelets in 1:1:1 ratio
  3. Minimise crystalloids and colloids: Prevent dilutional coagulopathy and acidosis
  4. Early tranexamic acid (TXA): Within 3 hours of injury; antifibrinolytic; especially useful given that most bleeding patients are hyperfibrinolytic
  5. Warm all blood products and fluids: Prevent hypothermia

Viscoelastic Testing (VET) - Goal-Directed Therapy

  • TEG (Thromboelastography) and ROTEM (Rotational Thromboelastometry)
  • Provide real-time global assessment of the entire coagulation cascade
  • Guide targeted component therapy (e.g., identify specific deficiency: fibrinogen, clotting factors, platelets)
  • One study in trauma patients showed lower risk of death with TEG-guided transfusion vs. conventional coagulation parameters
  • A 2015 systematic review could not show TEG/ROTEM superiority to standard coagulation studies; further evidence needed but increasingly adopted

IV. COMPLICATIONS OF BLOOD TRANSFUSION (7 marks)

A. Complications of Single Transfusion

Acute Transfusion Reactions (onset: during or within 24 hours)

ReactionMechanismFeaturesManagement
Acute Haemolytic (AHTR)ABO incompatibility (usually clerical error); intravascular haemolysisFever, chills, hypotension, back/loin pain, haemoglobinuria, DIC, impending doom sensationStop immediately, maintain IV access, vigorous crystalloid, vasopressors, maintain UO 1-2 mL/kg/hr, send blood/urine samples + DAT (Coombs), treat DIC
Febrile Non-Haemolytic (FNHTR)Anti-leukocyte antibodies + cytokines from storage lesionTemperature rise ≥1°C, rigors, chills; NO haemolysisStop, treat as AHTR until haemolysis excluded; give paracetamol; use leukoreduced products in future; incidence reduced 50-93% with leucoreduction
Minor AllergicAntibody-mediated response to donor plasma proteinsUrticaria, pruritus; 1-3% of transfusionsStop, antihistamine ± steroid; may resume if only cutaneous
AnaphylaxisOften idiopathic; IgA-deficient patients with anti-IgA; 1:20,000-50,000Hypotension, angioedema, bronchospasm, laryngospasmStop immediately, adrenaline 0.3-0.5 mg SC, steroids, antihistamines, bronchodilators; use washed products in future
TRALIDonor antibodies (anti-HLA or anti-neutrophil) activate recipient neutrophils in lungsNon-cardiogenic pulmonary oedema within 6 hours; fever, hypotension, hypoxia, bilateral infiltrates; NOT volume-relatedStop, supportive care (oxygen, ventilation); NO diuretics; resolves 48-96 hours
TACOVolume overload; cardiogenic pulmonary oedemaDyspnoea, hypertension, tachycardia, raised JVP; raised BNP; occurs during/after transfusionStop/slow transfusion, diuretics, sit upright, CPAP/BiPAP; distinguish from TRALI
Bacterial contaminationFaulty storage; platelets at higher risk (room temperature storage)Septic shock, rigors, high feverStop, blood cultures (donor unit + patient), broad-spectrum antibiotics, supportive
Distinguishing TRALI vs TACO:
  • TRALI: Non-cardiogenic, not volume-related, hypotension, fever, low/normal BNP, NO diuretics
  • TACO: Cardiogenic, volume-related, hypertension, raised BNP, responds to diuretics, treat with non-invasive positive-pressure ventilation

Delayed Transfusion Reactions (onset: days to weeks)

  • Delayed haemolytic reaction: Anamnestic antibody response; usually extravascular; haemoglobin fall 2-14 days post-transfusion; treat supportively
  • Transfusion-associated GvHD (TA-GvHD): Rare but life-threatening; donor T-lymphocytes engraft and attack recipient; in immunocompromised patients or when donor is HLA-homozygous relative; fatal in >90%; prevented by irradiation of cellular products
  • Post-transfusion purpura: Rare; anti-HPA-1a antibodies; severe thrombocytopaenia; treat with IVIg
  • Alloimmunisation: Against RBC, HLA, or platelet antigens; leads to crossmatch difficulties and platelet refractoriness
  • Iron overload: Multiple long-term transfusions (e.g., thalassaemia); each PRBC unit contains ~250 mg elemental iron; treat with chelation

Infection Transmission

  • Hepatitis B, Hepatitis C, HIV, malaria, CMV, HTLV
  • Bacterial infection (Yersinia enterocolitica in stored RBCs; gram-negative organisms in platelets)

B. Complications Specific to Massive Transfusion

ComplicationMechanismManagement
Dilutional CoagulopathyLoss + dilution of clotting factors and plateletsBalanced 1:1:1 resuscitation, FFP, cryoprecipitate for fibrinogen, TXA
HypothermiaCold stored products (PRBCs stored at 1-6°C); reduces clotting factor activityBlood warmers, IV fluid warmers, forced-air warming blankets, warm environment
Hypocalcaemia (Citrate Toxicity)Citrate preservative chelates ionised calcium; hepatic metabolism impaired at high infusion ratesIV calcium gluconate or CaCl₂; monitor ionised Ca²⁺; occurs when transfusion rate >100 mL/min
HyperkalaemiaStored blood releases K⁺ (storage lesion); older units especiallyECG monitoring, treat with calcium, insulin-dextrose, bicarbonate
HypokalaemiaAs citrate is metabolised to bicarbonate, K⁺ shifts intracellularMonitor and replace
Metabolic alkalosisCitrate → bicarbonate metabolismUsually self-limiting
AcidosisLactic acidosis from tissue hypoperfusion + acidic preservativesCorrect underlying haemorrhage and hypoperfusion
TRALI / TACOAs above - risk increases proportionally with volumeAs above
DICMassive haemorrhage → consumption coagulopathy, tissue factor releaseTreat underlying cause, cryoprecipitate, FFP, platelets
Air embolismRapid infusion via pressure bags, inadvertent air entryPrevention; Trendelenburg position, aspirate air, supportive
ThrombophlebitisLocal vessel injuryUse large-bore IV, change sites
The "Lethal Triad" of Trauma (each element worsens the others):
  • Hypothermia → reduces enzyme activity of coagulation cascade
  • Acidosis → inhibits clotting factor function
  • Coagulopathy → ongoing haemorrhage perpetuating hypothermia and acidosis
Damage control surgery and DCR aim to break this cycle before definitive repair.

V. MONITORING DURING MASSIVE TRANSFUSION (2 marks)

  • Haemoglobin/haematocrit: Note that Hb may not reflect acute blood loss (lags behind)
  • Platelet count: Maintain >50,000/μL in active bleeding (>100,000/μL if CNS/ophthalmic)
  • Coagulation studies: PT, aPTT, INR, fibrinogen; target fibrinogen >1.5-2.0 g/L
  • TEG / ROTEM: Real-time global coagulation; guide targeted component therapy
  • Ionised calcium: Monitor and replace
  • Electrolytes and ABG: K⁺, Na⁺, pH, lactate
  • Temperature: Continuous; use warming measures
  • Urine output: Maintain ≥1 mL/kg/hr (haemolysis monitoring, renal perfusion)
  • Chest X-ray: Detect TRALI/TACO
  • BNP: Raised in TACO (not TRALI)

VI. TRANSFUSION TRIGGERS AND THRESHOLDS (2 marks)

Clinical SettingTransfusion Trigger (Hb)
Stable, asymptomatic (ICU)<7 g/dL (restrictive strategy equivalent to liberal in most patients)
Cardiac disease (ACS, post-cardiac surgery)<8-10 g/dL
Active GI bleed / haemodynamic instabilityClinical judgement; not lab-based
Perioperative (before surgery)<8 g/dL (or symptomatic)
Chronic anaemia (e.g., thalassaemia)Maintain Hb ~9-10 g/dL
Acute haemorrhageTransfuse based on clinical blood loss, not Hb
The TRICC trial and similar studies support a restrictive strategy (Hb trigger ~7 g/dL) in most hospitalised patients as non-inferior to liberal strategy, with lower transfusion-related morbidity.

VII. AUTOLOGOUS BLOOD CONSERVATION STRATEGIES (1 mark)

  1. Pre-operative autologous donation (PAD): Collection weeks before elective surgery
  2. Acute normovolaemic haemodilution (ANH): Withdraw blood just before surgery, replace with crystalloid; retransfuse at end
  3. Cell salvage (intraoperative): Suctioned blood centrifuged, washed, and reinfused; contraindicated in malignancy and bowel contamination
  4. Antifibrinolytics: Tranexamic acid (TXA) - reduces blood loss and transfusion requirement; lysine analogue, inhibits plasminogen activation; 1 g IV over 10 min within 3 hours of trauma, then 1 g over 8 hours

SUMMARY TABLE - Blood Components at a Glance

ComponentVolumeKey ContentsStorageMain Indication
PRBCs250 mLRBCs, Hb1-6°C, 35-42 daysAnaemia, haemorrhage
FFP200-250 mLAll clotting factors-18°C, 12 monthsCoagulopathy, massive transfusion
Platelets55-300 mLPlatelets20-24°C, 5-7 daysThrombocytopaenia, platelet dysfunction
Cryoprecipitate5-20 mLFibrinogen, F.VIII, F.XIII, vWF-18°C, 12 monthsHypofibrinogenaemia, DIC
PCCVariableFactors II, VII, IX, X (4-factor)LyophilisedWarfarin reversal
Whole blood450 mLAll components1-6°C, 21-35 daysHaemorrhagic shock (military/DCR)

Sources: Rosen's Emergency Medicine (9e) - Ch. 108; Bailey and Love's Short Practice of Surgery (28e) - Ch. 3; Tietz Textbook of Laboratory Medicine (7e) - Ch. 92; Tintinalli's Emergency Medicine; Harrison's Principles of Internal Medicine (22e); Miller's Anesthesia (10e)

Make PDF

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace

Running Command

mkdir -p /home/daytona/workspace/mbt-pdf && python3 -c "from reportlab.lib import colors; print('reportlab ok')"

Writing File

~/mbt-pdf/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, KeepTogether, PageBreak)
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import ListFlowable, ListItem

OUTPUT = "/home/daytona/workspace/mbt-pdf/Massive_Blood_Transfusion_MD_Anaesthesia.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=2*cm, rightMargin=2*cm,
    topMargin=2*cm, bottomMargin=2*cm,
    title="Massive Blood Transfusion and Blood Components",
    author="MD Anaesthesia Exam Answer",
)

W = A4[0] - 4*cm  # usable width

# ── Styles ──────────────────────────────────────────────────────────────────
base = getSampleStyleSheet()

DARK_BLUE  = colors.HexColor("#1a3a5c")
MID_BLUE   = colors.HexColor("#2e6da4")
LIGHT_BLUE = colors.HexColor("#dce9f5")
PALE_GREY  = colors.HexColor("#f5f5f5")
GOLD       = colors.HexColor("#c9843a")
RED        = colors.HexColor("#c0392b")
BORDER     = colors.HexColor("#aac4de")

title_style = ParagraphStyle("Title2", parent=base["Normal"],
    fontSize=18, leading=22, textColor=colors.white,
    fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4)

subtitle_style = ParagraphStyle("Subtitle2", parent=base["Normal"],
    fontSize=11, leading=14, textColor=colors.white,
    fontName="Helvetica", alignment=TA_CENTER)

h1 = ParagraphStyle("H1", parent=base["Normal"],
    fontSize=13, leading=16, textColor=colors.white,
    fontName="Helvetica-Bold", spaceAfter=4, spaceBefore=12,
    backColor=DARK_BLUE, leftIndent=-4, rightIndent=-4,
    borderPad=(4, 6, 4, 6))

h2 = ParagraphStyle("H2", parent=base["Normal"],
    fontSize=11, leading=14, textColor=DARK_BLUE,
    fontName="Helvetica-Bold", spaceAfter=3, spaceBefore=8,
    borderPad=2)

h3 = ParagraphStyle("H3", parent=base["Normal"],
    fontSize=10, leading=13, textColor=MID_BLUE,
    fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=5)

body = ParagraphStyle("Body", parent=base["Normal"],
    fontSize=9, leading=13, textColor=colors.HexColor("#222222"),
    fontName="Helvetica", spaceAfter=3, alignment=TA_JUSTIFY)

bullet = ParagraphStyle("Bullet", parent=body,
    leftIndent=14, bulletIndent=4, spaceAfter=2)

bold_body = ParagraphStyle("BoldBody", parent=body, fontName="Helvetica-Bold")

note_style = ParagraphStyle("Note", parent=body,
    backColor=colors.HexColor("#fffbe6"), leftIndent=8, rightIndent=8,
    borderPad=4, fontSize=8.5, textColor=colors.HexColor("#5a4000"))

def H1(text):
    return [
        Spacer(1, 6),
        Table([[Paragraph(text, title_style)]],
              colWidths=[W],
              style=TableStyle([
                  ("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
                  ("ROUNDEDCORNERS", [4]),
                  ("TOPPADDING",    (0,0), (-1,-1), 6),
                  ("BOTTOMPADDING", (0,0), (-1,-1), 6),
                  ("LEFTPADDING",   (0,0), (-1,-1), 10),
                  ("RIGHTPADDING",  (0,0), (-1,-1), 10),
              ])),
        Spacer(1, 4),
    ]

def H2(text):
    return [
        Spacer(1, 4),
        Table([[Paragraph(text, ParagraphStyle("h2t", parent=h2,
                textColor=colors.white, fontSize=10, fontName="Helvetica-Bold"))]],
              colWidths=[W],
              style=TableStyle([
                  ("BACKGROUND", (0,0), (-1,-1), MID_BLUE),
                  ("TOPPADDING",    (0,0), (-1,-1), 4),
                  ("BOTTOMPADDING", (0,0), (-1,-1), 4),
                  ("LEFTPADDING",   (0,0), (-1,-1), 8),
              ])),
        Spacer(1, 3),
    ]

def H3(text):
    return [Paragraph(f'<font color="#2e6da4"><b>{text}</b></font>', body), Spacer(1,1)]

def B(text): return f"<b>{text}</b>"
def I(text): return f"<i>{text}</i>"

def bullet_list(items):
    rows = []
    for item in items:
        rows.append(Paragraph(f"• {item}", bullet))
    return rows

def make_table(headers, rows, col_widths=None):
    data = [headers] + rows
    if not col_widths:
        col_widths = [W / len(headers)] * len(headers)
    
    hdr_style = ParagraphStyle("TH", parent=body,
        fontName="Helvetica-Bold", fontSize=8.5, textColor=colors.white, alignment=TA_CENTER)
    cell_style = ParagraphStyle("TD", parent=body, fontSize=8.5, alignment=TA_LEFT)
    
    table_data = []
    for ri, row in enumerate(data):
        r = []
        for ci, cell in enumerate(row):
            s = hdr_style if ri == 0 else cell_style
            r.append(Paragraph(str(cell), s))
        table_data.append(r)
    
    t = Table(table_data, colWidths=col_widths, repeatRows=1)
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0),  (-1,0),  DARK_BLUE),
        ("ROWBACKGROUNDS",(0,1),  (-1,-1), [colors.white, LIGHT_BLUE]),
        ("GRID",          (0,0),  (-1,-1), 0.4, BORDER),
        ("VALIGN",        (0,0),  (-1,-1), "TOP"),
        ("TOPPADDING",    (0,0),  (-1,-1), 4),
        ("BOTTOMPADDING", (0,0),  (-1,-1), 4),
        ("LEFTPADDING",   (0,0),  (-1,-1), 5),
        ("RIGHTPADDING",  (0,0),  (-1,-1), 5),
    ]))
    return [t, Spacer(1, 6)]

# ── Content ──────────────────────────────────────────────────────────────────
story = []

# Cover banner
story.append(Table(
    [[Paragraph("MASSIVE BLOOD TRANSFUSION", title_style)],
     [Paragraph("AND BLOOD COMPONENTS", title_style)],
     [Paragraph("MD Anaesthesia Examination Answer  |  30 Marks", subtitle_style)]],
    colWidths=[W],
    style=TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), DARK_BLUE),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 12),
        ("RIGHTPADDING",  (0,0), (-1,-1), 12),
    ])
))
story.append(Spacer(1, 10))
story.append(HRFlowable(width=W, thickness=2, color=GOLD))
story.append(Spacer(1, 8))

# ═══════════════════════════════════════════════════════
# SECTION I – BLOOD COMPONENTS
# ═══════════════════════════════════════════════════════
story += H1("I.  BLOOD COMPONENTS — TYPES AND CHARACTERISTICS  [8 Marks]")

# 1. PRBCs
story += H2("1. Packed Red Blood Cells (PRBCs)")
story += bullet_list([
    f"{B('Volume:')} ~250 mL per unit; haematocrit 55–80%",
    f"{B('Storage:')} 1–6°C; shelf life 35–42 days (depends on preservative: CPDA-1, AS-3, etc.)",
    f"{B('Effect:')} 1 unit ↑ Hb ~1 g/dL and HCT ~3% in average adult; 10–15 mL/kg ↑ Hb 2–3 g/dL in children",
    f"{B('Transfusion time:')} 60–90 min stable; never exceed 4 hours (bacterial growth risk)",
    f"{B('Universal donor:')} Type O Rh-negative  |  {B('Universal recipient:')} Type AB",
])
story += H3("Special PRBC Preparations")
prbc_table = make_table(
    ["Preparation", "Method", "Indication"],
    [
        ["Leukocyte-reduced", "70–85% WBCs removed", "↓ FNHTR, HLA sensitisation, CMV transmission"],
        ["Irradiated", "Gamma/X-ray irradiation", "Prevents TA-GvHD; immunocompromised, BMT, IUT"],
        ["Washed", "Plasma proteins removed", "IgA deficiency, recurrent severe allergic reactions"],
        ["Frozen", "Glycerol cryoprotection", "Rare blood groups, autologous storage"],
    ],
    col_widths=[W*0.22, W*0.30, W*0.48]
)
story += prbc_table

# 2. FFP
story += H2("2. Fresh Frozen Plasma (FFP)")
story += bullet_list([
    f"{B('Volume:')} 200–250 mL per unit",
    f"{B('Contents:')} ALL coagulation factors (I, II, V, VII, VIII, IX, X, XI, XIII), fibrinogen, albumin, protein C & S, antithrombin",
    f"{B('Preparation:')} Frozen within 8 hours of collection; stored ≤ −18°C; shelf life 12 months (24 months at −65°C)",
    f"{B('Thawing:')} At 37°C; use within 24 hours once thawed",
    f"{B('Dosing:')} 10–15 mL/kg; 1 unit = clotting activity in 1 mL FFP (per clotting factor)",
    f"{B('ABO compatibility:')} Required; Rh typing not required",
])
story += H3("Indications for FFP")
story += bullet_list([
    "Multiple coagulation factor deficiency (liver disease, DIC, massive transfusion)",
    "Reversal of warfarin when PCC is unavailable",
    "Thrombotic thrombocytopenic purpura (TTP) — plasma exchange",
    "Isolated factor deficiencies when specific concentrates are unavailable",
])

# 3. Platelets
story += H2("3. Platelets")
story += bullet_list([
    f"{B('Volume:')} ~55 mL (whole-blood derived) or 200–300 mL (apheresis/single-donor)",
    f"{B('Storage:')} 20–24°C on continuous agitation; shelf life 5–7 days",
    f"1 apheresis unit ≡ ~6 whole-blood-derived pooled units",
    f"{B('Effect:')} 1 unit raises platelet count by ~5,000–10,000/µL in average adult",
    f"Rh-negative platelets preferred for Rh-negative premenopausal women (RBC contamination risk)",
    f"Leukocyte-reduced platelets reduce HLA sensitisation",
])
story += H3("Platelet Transfusion Thresholds")
story += make_table(
    ["Clinical Situation", "Platelet Threshold"],
    [
        ["Prophylactic (no bleeding, no procedure)", "<10,000/µL"],
        ["Active bleeding or invasive procedure", "<50,000/µL"],
        ["CNS or ophthalmic surgery", "<100,000/µL"],
        ["Platelet function disorder with clinical bleeding", "Regardless of count"],
    ],
    col_widths=[W*0.65, W*0.35]
)

# 4. Cryoprecipitate
story += H2("4. Cryoprecipitate")
story += bullet_list([
    f"{B('Preparation:')} Slowly thawed rapidly-frozen single-donor plasma; precipitate collected and refrozen",
    f"{B('Volume:')} 5–20 mL per unit",
    f"{B('Contents per unit (AABB minimum):')} Fibrinogen ≥150 mg (assumes ~250 mg/unit), Factor VIII ≥80 IU, also Factor XIII, vWF, fibronectin",
    f"{B('Adult dose:')} Pool of up to 10 units → raises fibrinogen ~50–70 mg/dL",
    f"{B('Dosing formula:')} [Target fibrinogen − Initial fibrinogen] × Patient plasma volume ÷ 250 mg/unit",
    f"{B('ABO compatibility:')} Preferred but not strictly required in adults",
])
story += H3("Indications")
story += bullet_list([
    f"Hypofibrinogenaemia (fibrinogen <1.5 g/L with active bleeding) — {B('PRIMARY indication')}",
    "DIC with fibrinogen deficiency",
    "Congenital afibrinogenaemia or dysfibrinogenaemia",
    "Haemophilia A and von Willebrand disease (when recombinant concentrates unavailable)",
    f"{B('NOT useful')} in Haemophilia B (no Factor IX content)",
])

# 5. PCC
story += H2("5. Prothrombin Complex Concentrate (PCC)")
story += bullet_list([
    f"{B('3-factor PCC:')} Factors II, IX, X (lacks significant Factor VII)",
    f"{B('4-factor PCC:')} Factors II, VII, IX, X + Protein C and S — {B('preferred')} for warfarin reversal",
    f"{B('Advantage over FFP:')} Rapid INR normalisation to <1.5 within 1 hour; no large volume load",
    f"{B('Always co-administer:')} Vitamin K 10 mg IV slow infusion (1 mg/min) for sustained reversal",
    "Indication: Life-threatening warfarin-associated haemorrhage, intracranial haemorrhage",
])

# 6. Whole Blood
story += H2("6. Whole Blood / Low-Titer O Universal Whole Blood (LTOWB)")
story += bullet_list([
    "All components in physiologic ratio; simplifies logistics in damage-control resuscitation",
    f"{B('LTOWB:')} Type O donors with anti-A & anti-B titer <256 (saline method)",
    "Renewed interest in military and trauma settings; safe when ≤4 units given to non-group O recipients",
    "Standard in wartime settings for decades; increasing civilian adoption",
])

story.append(Spacer(1, 6))
story.append(HRFlowable(width=W, thickness=1, color=GOLD))
story.append(Spacer(1, 6))

# ═══════════════════════════════════════════════════════
# SECTION II – PRE-TRANSFUSION TESTING
# ═══════════════════════════════════════════════════════
story += H1("II.  PRE-TRANSFUSION TESTING  [3 Marks]")
story += make_table(
    ["Step", "Time Required", "Purpose"],
    [
        ["Emergency release (Type O Rh-neg)", "Immediate", "Life-threatening haemorrhage, no testing possible"],
        ["ABO + Rh(D) blood grouping", "~15 min", "Determines patient's blood type"],
        ["Antibody screen", "45–60 min", "Detects unexpected antibodies to minor RBC antigens"],
        ["Computer/electronic crossmatch", "Rapid", "For patients with negative screen + ≥2 previous samples in system"],
        ["Full serologic crossmatch", "Hours–days", "Required when antibody screen is positive; recipient serum + donor RBCs incubated at 37°C + Coombs reagent"],
    ],
    col_widths=[W*0.30, W*0.18, W*0.52]
)
story += bullet_list([
    f"{B('Coombs reagent')} = anti-human globulin; promotes agglutination of sensitised RBCs",
    f"Type O Rh-positive: acceptable in males and post-menopausal women if O Rh-negative unavailable",
    f"~20% of Rh-negative patients transfused 1 unit Rh-positive will develop anti-Rh(D) antibodies",
])

story.append(HRFlowable(width=W, thickness=1, color=GOLD))

# ═══════════════════════════════════════════════════════
# SECTION III – MASSIVE BLOOD TRANSFUSION
# ═══════════════════════════════════════════════════════
story += H1("III.  MASSIVE BLOOD TRANSFUSION (MBT)  [10 Marks]")

story += H2("Definition")
story += make_table(
    ["Definition Type", "Criteria"],
    [
        ["Classical", "Transfusion of ≥10 units PRBCs within 24 hours (≈1 circulating blood volume, ~70 mL/kg)"],
        ["Operational/Practical", "≥3 units PRBCs/hour  OR  ≥4 blood components in 30 minutes"],
        ["Alternative", "Transfusion of >50% circulating blood volume in 3 hours"],
    ],
    col_widths=[W*0.28, W*0.72]
)

story += H2("Indications for Massive Transfusion")
story += bullet_list([
    "Major trauma with haemorrhagic shock",
    "Ruptured aortic aneurysm",
    "Massive gastrointestinal haemorrhage",
    "Obstetric catastrophe (postpartum haemorrhage, placenta praevia/accreta)",
    "Major intraoperative haemorrhage (hepatic, cardiac, vascular, spinal surgery)",
])

story += H2("Massive Transfusion Protocol (MTP)")
story += bullet_list([
    f"{B('Purpose:')} Streamline component ordering, pre-define ratios, issue standardised packs without waiting for repeated orders",
    f"{B('Activation:')} Clinical decision (shock index, ABC score, clinical judgement); direct blood bank communication is critical",
    f"{B('Typical pack contents:')} 6 units PRBCs + 6 units FFP + 1 apheresis platelet unit (≡ 6 whole-blood platelet units)",
    f"{B('Ratio:')} 1:1:1 (PRBCs : FFP : Platelets) — current recommendation",
    f"{B('PROPPR Trial (multicentre RCT):')} Compared 1:1:1 vs 2:1:1 — no difference in 24-hour or 30-day mortality; fewer deaths from exsanguination at 24 hours with 1:1:1",
    f"After first pack issued, blood bank immediately assembles next pack; continues until patient stabilisation or death",
    f"{B('Communication:')} Critical between clinical team and blood bank throughout",
])

story += H2("Damage Control Resuscitation (DCR) Principles")
story += make_table(
    ["Principle", "Details"],
    [
        [B("Permissive hypotension"), "Target SBP 80–90 mmHg (MAP ~50 mmHg) until surgical haemorrhage control; avoid in TBI/spinal cord injury"],
        [B("Haemostatic resuscitation"), "PRBCs + FFP + Platelets in 1:1:1 ratio; recapitulates whole blood"],
        [B("Minimise crystalloids/colloids"), "Prevent dilutional coagulopathy, acidosis, and hypothermia"],
        [B("Tranexamic acid (TXA)"), "Within 3 hours of injury; 1 g IV over 10 min, then 1 g over 8 hours; antifibrinolytic — inhibits plasminogen activation"],
        [B("Warm all products/fluids"), "Blood warmers, IV fluid warmers, forced-air warming blankets"],
    ],
    col_widths=[W*0.28, W*0.72]
)

story += H2("The Lethal Triad of Trauma")
story.append(Paragraph(
    "Each element of the lethal triad potentiates the others — damage control surgery and DCR aim to break this cycle:",
    body))
story += make_table(
    ["Component", "Mechanism of Harm"],
    [
        [B("Hypothermia"), "↓ Enzymatic activity of coagulation cascade; core temperature <35°C significantly impairs clotting"],
        [B("Acidosis"), "Inhibits clotting factor function; pH <7.1 reduces factor activity to <50%"],
        [B("Coagulopathy"), "Ongoing haemorrhage perpetuates hypothermia and acidosis; dilutional + consumptive"],
    ],
    col_widths=[W*0.22, W*0.78]
)

story += H2("Goal-Directed Therapy — Viscoelastic Testing (VET)")
story += bullet_list([
    f"{B('TEG (Thromboelastography)')} and {B('ROTEM (Rotational Thromboelastometry)')}",
    "Provide real-time global assessment of the entire coagulation cascade (clot formation to fibrinolysis)",
    "Guide targeted component therapy — identify specific deficiency (fibrinogen, clotting factors, platelets, hyperfibrinolysis)",
    "One trauma study showed lower risk of death with TEG-guided transfusion vs. conventional coagulation parameters",
    "A 2015 systematic review could not show superiority over standard coagulation studies; further evidence ongoing",
])

story.append(HRFlowable(width=W, thickness=1, color=GOLD))

# ═══════════════════════════════════════════════════════
# SECTION IV – COMPLICATIONS
# ═══════════════════════════════════════════════════════
story += H1("IV.  COMPLICATIONS OF BLOOD TRANSFUSION  [7 Marks]")

story += H2("A. Acute Transfusion Reactions (during or within 24 hours)")
story += make_table(
    ["Reaction", "Mechanism", "Clinical Features", "Management"],
    [
        [B("Acute Haemolytic (AHTR)"),
         "ABO incompatibility (usually clerical error); intravascular haemolysis",
         "Fever, chills, hypotension, back/loin pain, haemoglobinuria, DIC, 'impending doom'",
         "Stop immediately, vigorous crystalloid, maintain UO ≥1 mL/kg/hr, send DAT (Coombs), treat DIC"],
        [B("Febrile Non-haemolytic (FNHTR)"),
         "Anti-leukocyte antibodies + cytokines from stored products",
         "Temp rise ≥1°C, rigors, chills; NO haemolysis; up to 300 per 10⁵ units",
         "Stop, exclude haemolysis; paracetamol; use leukoreduced products future; leukoreduction ↓ by 50–93%"],
        [B("Minor Allergic"),
         "Antibody response to donor plasma proteins; 1–3% of transfusions",
         "Urticaria, pruritus, mild wheeze",
         "Stop, antihistamine ± steroid; may resume if limited to skin"],
        [B("Anaphylaxis"),
         "Idiopathic; IgA-deficient patients with anti-IgA; 1:20,000–50,000",
         "Hypotension, angioedema, bronchospasm, laryngospasm; onset seconds–minutes",
         "Stop immediately; adrenaline 0.3–0.5 mg SC; steroids, antihistamines, bronchodilators; washed products future"],
        [B("TRALI"),
         "Donor anti-HLA/anti-neutrophil antibodies activate recipient neutrophils in lungs",
         "Non-cardiogenic pulm. oedema within 6 h; fever, hypotension, hypoxia, bilateral infiltrates; NOT volume-related",
         "Stop, supportive (O₂, ventilation); NO diuretics; resolves 48–96 h"],
        [B("TACO"),
         "Cardiogenic pulm. oedema; volume overload",
         "Dyspnoea, hypertension, tachycardia, raised JVP, ↑BNP; pulm. oedema on CXR",
         "Slow/stop transfusion, diuretics, sit upright, CPAP/BiPAP"],
        [B("Bacterial sepsis"),
         "Contaminated product; platelets highest risk (room temp storage)",
         "High fever, rigors, septic shock during/shortly after transfusion",
         "Stop, blood cultures (donor + patient), broad-spectrum antibiotics, supportive"],
    ],
    col_widths=[W*0.18, W*0.22, W*0.30, W*0.30]
)

story += H3("Distinguishing TRALI vs TACO")
story += make_table(
    ["Feature", "TRALI", "TACO"],
    [
        ["Mechanism", "Non-cardiogenic", "Cardiogenic"],
        ["Volume association", "NOT volume-related", "Proportional to volume transfused"],
        ["Blood pressure", "Hypotension", "Hypertension"],
        ["BNP", "Normal/low", "Elevated"],
        ["Fever", "Present", "Usually absent"],
        ["Treatment", "Supportive; NO diuretics", "Diuretics; CPAP/BiPAP"],
    ],
    col_widths=[W*0.25, W*0.37, W*0.38]
)

story += H2("B. Delayed Transfusion Reactions (days to weeks)")
story += bullet_list([
    f"{B('Delayed Haemolytic Reaction:')} Anamnestic antibody response; extravascular haemolysis; Hb fall 2–14 days post-transfusion; treat supportively",
    f"{B('TA-GvHD:')} Rare but life-threatening (>90% fatal); donor T-lymphocytes attack recipient; immunocompromised/HLA-homozygous relative donors; prevented by {B('irradiation')} of cellular products",
    f"{B('Post-transfusion purpura:')} Rare; anti-HPA-1a antibodies; severe thrombocytopaenia ~7–10 days; treat with IVIg",
    f"{B('Alloimmunisation:')} Against RBC, HLA or platelet antigens; leads to crossmatch difficulties and platelet refractoriness",
    f"{B('Iron overload:')} Multiple long-term transfusions (thalassaemia); each PRBC unit ~250 mg elemental iron; treat with chelation (desferrioxamine, deferasirox)",
])

story += H2("C. Infectious Complications")
story += bullet_list([
    "Hepatitis B, Hepatitis C, HIV, CMV, HTLV, malaria",
    "Bacterial infection: Yersinia enterocolitica in stored RBCs; gram-negative organisms in platelets",
    "Risk minimised by stringent donor screening and nucleic acid testing (NAT)",
])

story += H2("D. Complications Specific to Massive Transfusion")
story += make_table(
    ["Complication", "Mechanism", "Management"],
    [
        [B("Dilutional Coagulopathy"),
         "Loss + dilution of clotting factors and platelets with large volume replacement",
         "Balanced 1:1:1 resuscitation; FFP; cryoprecipitate for fibrinogen; TXA"],
        [B("Hypothermia"),
         "Cold stored products (PRBCs at 1–6°C); reduces clotting enzyme activity",
         "Blood warmers, IV fluid warmers, forced-air warming, warm environment"],
        [B("Hypocalcaemia (Citrate toxicity)"),
         "Citrate chelates ionised Ca²⁺; hepatic metabolism overwhelmed at high infusion rates (>100 mL/min)",
         "Monitor ionised Ca²⁺; give IV calcium gluconate or CaCl₂"],
        [B("Hyperkalaemia"),
         "K⁺ leaks from stored RBCs (storage lesion); risk with older units",
         "ECG monitoring; calcium, insulin-dextrose, bicarbonate"],
        [B("Metabolic alkalosis"),
         "Citrate metabolised to bicarbonate after transfusion",
         "Usually self-limiting; monitor ABG"],
        [B("Lactic acidosis"),
         "Tissue hypoperfusion + acidic preservatives in stored blood",
         "Correct haemorrhage; restore perfusion"],
        [B("DIC"),
         "Massive haemorrhage → consumption coagulopathy + tissue factor release",
         "Treat underlying cause; cryoprecipitate, FFP, platelets"],
        [B("TRALI / TACO"),
         "As above; risk increases proportionally with volume",
         "As above"],
    ],
    col_widths=[W*0.25, W*0.38, W*0.37]
)

story.append(HRFlowable(width=W, thickness=1, color=GOLD))

# ═══════════════════════════════════════════════════════
# SECTION V – MONITORING
# ═══════════════════════════════════════════════════════
story += H1("V.  MONITORING DURING MASSIVE TRANSFUSION  [2 Marks]")
story += make_table(
    ["Parameter", "Target / Purpose"],
    [
        [B("Haemoglobin / Haematocrit"), "Note: Hb lags behind acute blood loss; transfuse on clinical grounds not lab alone"],
        [B("Platelet count"), "Maintain >50,000/µL active bleeding; >100,000/µL CNS/ophthalmic surgery"],
        [B("PT, aPTT, INR, Fibrinogen"), "Fibrinogen target >1.5–2.0 g/L; guide FFP and cryoprecipitate therapy"],
        [B("TEG / ROTEM"), "Real-time global coagulation; targeted component therapy"],
        [B("Ionised calcium"), "Monitor and replace; prevent cardiac dysfunction and coagulopathy"],
        [B("ABG + Lactate"), "Assess pH, base excess, K⁺, Na⁺, metabolic derangements, tissue perfusion"],
        [B("Temperature"), "Continuous monitoring; institute warming measures aggressively"],
        [B("Urine output"), "Maintain ≥1 mL/kg/hr; monitor for haemolysis (haemoglobinuria) and renal perfusion"],
        [B("Chest X-ray + BNP"), "Detect TRALI (normal BNP) vs TACO (elevated BNP)"],
    ],
    col_widths=[W*0.32, W*0.68]
)

story.append(HRFlowable(width=W, thickness=1, color=GOLD))

# ═══════════════════════════════════════════════════════
# SECTION VI – TRANSFUSION TRIGGERS
# ═══════════════════════════════════════════════════════
story += H1("VI.  TRANSFUSION TRIGGERS AND THRESHOLDS  [2 Marks]")
story += make_table(
    ["Clinical Setting", "Hb Trigger"],
    [
        ["Stable/asymptomatic ICU patient (TRICC strategy)", "<7 g/dL (restrictive strategy)"],
        ["Cardiac disease (ACS, post-cardiac surgery)", "<8–10 g/dL"],
        ["Perioperative (before or after surgery)", "<8 g/dL or symptomatic"],
        ["Active haemorrhage / haemodynamic instability", "Clinical judgement; not lab-based"],
        ["Chronic anaemia (e.g., thalassaemia)", "Maintain Hb ~9–10 g/dL"],
        ["Sepsis (early resuscitation)", "Hb <7 g/dL after stabilisation"],
    ],
    col_widths=[W*0.60, W*0.40]
)
story.append(Paragraph(
    f"The {B('TRICC Trial')} supports a restrictive strategy (Hb trigger ~7 g/dL) in most hospitalised patients as non-inferior to a liberal strategy, with lower transfusion-related morbidity.",
    note_style))
story.append(Spacer(1, 6))

story.append(HRFlowable(width=W, thickness=1, color=GOLD))

# ═══════════════════════════════════════════════════════
# SECTION VII – AUTOLOGOUS CONSERVATION
# ═══════════════════════════════════════════════════════
story += H1("VII.  BLOOD CONSERVATION STRATEGIES  [1 Mark]")
story += bullet_list([
    f"{B('Pre-operative autologous donation (PAD):')} Collect weeks before elective surgery; re-transfuse intraoperatively",
    f"{B('Acute normovolaemic haemodilution (ANH):')} Withdraw blood immediately pre-surgery, replace with crystalloid; retransfuse at end of procedure",
    f"{B('Cell salvage (intraoperative):')} Suction blood centrifuged, washed, reinfused; contraindicated in malignancy and bowel/infective contamination",
    f"{B('Tranexamic acid (TXA):')} Lysine analogue; inhibits plasminogen activation (antifibrinolytic); 1 g IV over 10 min within 3 hours of trauma, then 1 g over 8 hours; reduces transfusion requirement",
    f"{B('Erythropoietin (EPO):')} Pre-operative stimulation of erythropoiesis in selected patients",
])

story.append(HRFlowable(width=W, thickness=1, color=GOLD))
story.append(Spacer(1, 4))

# ═══════════════════════════════════════════════════════
# QUICK REFERENCE TABLE
# ═══════════════════════════════════════════════════════
story += H1("QUICK REFERENCE — BLOOD COMPONENTS AT A GLANCE")
story += make_table(
    ["Component", "Volume", "Key Contents", "Storage", "Main Indication"],
    [
        [B("PRBCs"),        "~250 mL",   "RBCs, Hb (HCT 55–80%)",                           "1–6°C, 35–42 days",     "Anaemia, haemorrhage"],
        [B("FFP"),          "200–250 mL","All clotting factors, fibrinogen, albumin",         "≤−18°C, 12 months",     "Coagulopathy, massive transfusion"],
        [B("Platelets"),    "55–300 mL", "Platelets",                                         "20–24°C, 5–7 days",     "Thrombocytopaenia, platelet dysfunction"],
        [B("Cryoprecipitate"),"5–20 mL","Fibrinogen, F.VIII, F.XIII, vWF",                   "≤−18°C, 12 months",     "Hypofibrinogenaemia, DIC"],
        [B("PCC (4-factor)"),"Variable", "Factors II, VII, IX, X + Protein C & S",           "Lyophilised (room temp)","Warfarin reversal"],
        [B("Whole blood"),  "~450 mL",   "All components (physiologic ratio)",                "1–6°C, 21–35 days",     "Haemorrhagic shock (DCR/military)"],
    ],
    col_widths=[W*0.18, W*0.12, W*0.32, W*0.20, W*0.18]
)

# Footer
story.append(Spacer(1, 8))
story.append(HRFlowable(width=W, thickness=1, color=colors.HexColor("#aaaaaa")))
story.append(Spacer(1, 4))
story.append(Paragraph(
    f"<font color='#555555' size='8'>{B('Sources:')} Rosen's Emergency Medicine 9e (Ch. 108) • Bailey & Love's Surgery 28e • "
    "Tietz Textbook of Laboratory Medicine 7e (Ch. 92) • Tintinalli's Emergency Medicine • "
    "Harrison's Principles of Internal Medicine 22e • Miller's Anesthesia 10e</font>",
    ParagraphStyle("footer", parent=body, alignment=TA_CENTER, fontSize=7.5, textColor=colors.grey)
))

# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF written to: {OUTPUT}")
Running Command

cd /home/daytona/workspace/mbt-pdf && python3 generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/mbt-pdf/Massive_Blood_Transfusion_MD_Anaesthesia.pdf

Your PDF is ready. Here's the download link:

Massive Blood Transfusion MD Anaesthesia

PDF Document · PDF

The PDF includes all 7 sections of the 30-mark answer in a clean, exam-ready format:
  • Colour-coded headers (dark blue section banners, mid-blue sub-sections)
  • All tables formatted with alternating row colours for easy reading - blood components, transfusion reactions, TRALI vs TACO comparison, thresholds, monitoring parameters
  • Bullet points for all indication/management lists
  • Quick reference summary table at the end
  • Source citations in the footer (Miller's, Rosen's, Bailey & Love, Tietz, Harrison's, Tintinalli's)
This is a shared conversation. Sign in to Orris to start your own chat.