Assessment of antibiotic related medication errors during intensive care unit-to-ward transitions: a prospective cohort study Objectives: 1. To determine the incidence, severity and preventability of antibiotic related medication errors during ICU-to-ward transfer. 2. To identify predictors of antibiotic related medication errors during ICU-to-ward transfer. 3. To assess the association between antibiotic-related medication errors and adverse patient outcomes. 4. To evaluate the healthcare and economic burden of antibiotic-related medication errors.

Reading File
Finding Sources
Searching PubMed

antibiotic medication errors ICU ward transition care handoff

Searching PubMed

medication errors intensive care unit incidence severity preventability

Searching the Web

antibiotic medication errors ICU to ward transition prospective cohort study incidence predictors outcomes

Searching PubMed

medication errors transition care ICU discharge ward

Searching PubMed

antibiotic prescribing errors adverse drug events ICU outcomes

Reading Web Page

https://pmc.ncbi.nlm.nih.gov/articles/PMC9013992

Finding Sources
Reading Article

PMID: 35042765

Searching PubMed

antimicrobial stewardship errors adverse drug events economic cost hospital

Searching PubMed

medication reconciliation antibiotic ICU transfer patient outcomes readmission

Searching the Web

antibiotic de-escalation ICU-to-ward transition errors predictors length of stay mortality

Searching PubMed

medication errors adverse drug events economic burden hospital costs

Searching PubMed

antibiotic inappropriate continuation ICU discharge predictors risk factors

Reading Web Page

https://www.sciencedirect.com/science/article/pii/S277250142…

Reading Article

PMID: 37059685

Searching the Web

antibiotic related medication errors economic burden cost prolonged hospital stay readmission 2022 2023 2024


Assessment of Antibiotic-Related Medication Errors During ICU-to-Ward Transitions: A Prospective Cohort Study

Background and Rationale

The ICU-to-ward transition is a high-risk handover point in the patient care continuum. ICU patients carry a disproportionate antibiotic burden - they are commonly managed with multiple broad-spectrum agents, parenteral formulations, weight-adjusted dosing, and time-critical de-escalation schedules that depend on culture results and clinical trajectory. When these patients are discharged to general wards, the complexity of their antibiotic regimens is frequently incompatible with routine ward prescribing workflows, creating fertile ground for medication errors.
Key vulnerabilities at this interface include:
  • Failure to de-escalate or stop empirical antibiotics when microbiology results are available
  • Route-of-administration errors (IV-to-oral switches missed or incorrectly made)
  • Dose or frequency mismatches between ICU and ward formularies
  • Omission of antibiotics during the transfer order rewrite
  • Inappropriate continuation of ICU-specific agents (e.g., nebulised colistin, extended-infusion beta-lactams) without ward-appropriate instructions
  • Loss of allergy documentation during handover
Antibiotics consistently rank among the most error-prone drug classes at care transitions. In the Wang et al. (2022) multicentre retrospective study of 1,546 ICU transfers across three tertiary hospitals, 58.15% of patients had at least one medication error at transition, with anti-infectives (14.84% of all errors) ranking as the second most affected class after bronchorespiratory drugs. Among anti-infective errors, beta-lactams accounted for 37.81% and peptides (vancomycin, colistin) for 23.67%. The most common error types were route of administration (37.85%), dosage (17.99%), and frequency (9.23%).
The Tully et al. (2019) multicentre retrospective study of 985 ICU-to-non-ICU transfers found an average of 1.88 medication errors per patient at transition.
Martinez Pradeda et al. (2023) conducted a retrospective observational study of 452 ICU-to-ward reconciliations and found that 34.29% of patients had at least one discrepancy, and 18.14% had at least one reconciliation error. The most common error types were dose/route errors and omissions (each 31.79% of errors), with high-alert medications involved in 19.20% of reconciliation errors.
Despite these data, prospective cohort studies focused specifically on antibiotic-related medication errors - with structured severity and preventability classification, predictor analysis, patient outcomes linkage, and economic costing - remain scarce. A systematic review and meta-analysis by Bourne et al. (2022) (PMID 35042765) in BMJ Quality & Safety identified 17 eligible studies on medication-related interventions at ICU transitions, noting that the vast majority (88%) were uncontrolled before-after designs, calling explicitly for prospective observational and economic evaluation studies.

Study Design

Design: Prospective observational cohort study
Setting: Adult medical/surgical ICU(s) at a tertiary care hospital
Population: Adult patients (age ≥18 years) transferred from ICU to a general ward who are receiving at least one antibiotic at the time of transfer
Exclusion criteria: Transfers to step-down/HDU units (not general wards), patients transferred to another ICU, ICU readmission within 24 hours, patients/surrogates declining consent, palliative care-only status

Objective 1: Incidence, Severity, and Preventability of Antibiotic-Related Medication Errors

Definitions

Antibiotic-related medication error (ARME): Any discrepancy between the antibiotic prescriptions active at ICU discharge and those written on the receiving ward that is not clinically justified and has potential to harm the patient. This encompasses:
Error TypeExamples
OmissionAntibiotic discontinued without clinical indication to stop
CommissionNew antibiotic started without appropriate indication at transfer
Dose errorWrong dose prescribed on ward (different from ICU dose)
Frequency errorDosing interval changed without renal/hepatic dose adjustment rationale
Route errorIV-to-oral switch not made, or oral prescribed where IV indicated
Duration errorNo stop date/review date documented; inappropriate prolongation
De-escalation failureBroad-spectrum empirical antibiotic not narrowed when culture data available
Allergy-related errorAntibiotic prescribed despite documented allergy
Severity classification will use a validated tool - the NCC MERP (National Coordinating Council for Medication Error Reporting and Prevention) Index:
CategoryDescription
ACircumstances that may cause error (near miss)
BError occurred but did not reach patient
CError reached patient but caused no harm
DError reached patient, required monitoring, no harm
EError reached patient, required intervention, temporary harm
FError required initial/prolonged hospitalisation
GError caused permanent patient harm
HError required life-sustaining intervention
IError contributed to/caused patient death
Clinically significant errors = categories D-I; potentially harmful errors = E-I.
Preventability will be assessed using the Schumock and Thornton criteria (modified), with independent dual-pharmacist review and arbitration by a third reviewer for discordant cases.

Data Collection Protocol

  • A clinical pharmacist will prospectively review each eligible patient's ICU medication chart at the time of transfer and compare it against ward prescriptions within 24 hours of transfer.
  • The ICU discharge summary, microbiology reports (most recent culture and sensitivity), renal function (eGFR/creatinine clearance), and weight-based dosing parameters will be documented simultaneously.
  • All identified discrepancies will be reviewed by a multidisciplinary panel (ICU physician, ward physician, infectious disease specialist, pharmacist) to distinguish intentional justified changes from unintentional errors.

Expected Findings and Literature Context

Based on existing data: Wang et al. (2022) - 58.15% of ICU patients had an error at transfer; Martinez Pradeda et al. (2023) - 18.14% had reconciliation errors; Tully et al. (2019) - 1.88 errors/patient on average. The incidence of antibiotic-specific errors is anticipated to be high given that anti-infective agents are among the most complex drug classes to manage across transitions of care.

Objective 2: Predictors of Antibiotic-Related Medication Errors

Candidate Predictors

Based on the existing literature, a comprehensive set of patient, clinical, antibiotic, and system-level variables will be collected at the time of transfer:
Patient-level factors:
  • Age, sex, BMI
  • Comorbidities (Charlson Comorbidity Index)
  • Renal function (AKI on admission, CKD, eGFR at time of transfer)
  • Hepatic function (Child-Pugh score if cirrhosis present)
  • ICU admission diagnosis (sepsis, trauma, post-operative, etc.)
  • Severity of illness at ICU admission: APACHE II / SOFA scores
  • Mechanical ventilation duration
  • Vasopressor use
  • Presence of drug allergies
Antibiotic-specific factors:
  • Number of antibiotics active at time of transfer
  • Total antibiotic duration at time of transfer
  • Antibiotic classes prescribed (beta-lactams, glycopeptides, carbapenems, fluoroquinolones, aminoglycosides)
  • IV-only antibiotics (narrow therapeutic index agents - vancomycin, aminoglycosides)
  • Culture-directed vs empirical therapy
  • Pending cultures at time of transfer
  • Antibiotic requiring therapeutic drug monitoring (TDM)
Transfer/system-level factors:
  • Time of transfer (daytime vs overnight/weekend) - Wang et al. (2022) identified daytime transfer (OR 1.40) as a risk factor, likely reflecting higher throughput pressure
  • Admitting team on receiving ward (medical vs surgical vs specialist)
  • Availability of ICU discharge medication summary/reconciliation document
  • Pharmacist involvement at discharge
  • ICU length of stay
  • Number of total medications at transfer (polypharmacy)
From Wang et al. (2022), multivariate predictors identified included: daytime ICU transfer (OR 1.40) and admission diagnosis of severe kidney disease (OR 6.78). Medication classes with higher error odds at transition included haematologic (OR 2.58), anti-inflammatory/pain (OR 2.80), endocrine (OR 1.99), and hepatic (OR 1.95) medications.

Statistical Analysis for Objective 2

  • Univariate logistic regression for each candidate predictor
  • Multivariable logistic regression with backward stepwise elimination (p<0.05 for retention), controlling for a priori confounders
  • Model calibration by Hosmer-Lemeshow goodness-of-fit test; discrimination by area under the ROC curve
  • For antibiotic-specific predictors: mixed-effects models to account for clustering of multiple antibiotics within one patient

Objective 3: Association Between Antibiotic-Related Medication Errors and Adverse Patient Outcomes

Outcomes

OutcomeDefinitionAssessment Time Points
PrimaryComposite of antibiotic-related adverse drug event (ADE), clinical failure requiring antibiotic change, and ICU readmission30 days post-transfer
Antibiotic-related ADEClinically documented adverse event attributable to antibiotic error (e.g., drug toxicity from under-monitoring, superinfection from de-escalation failure, treatment failure from omission error, anaphylaxis from allergy error)During index admission
Clinical failurePersistent/worsening infection requiring escalation of antibiotic therapy7 and 14 days post-transfer
ICU readmissionUnplanned readmission to ICU14 and 30 days
SecondaryLength of stay (LOS) post-transferUntil discharge
In-hospital mortalityUntil discharge
30-day all-cause mortality30 days
C. difficile infectionDuring index admission
Emergence of resistant organismsDuring index admission
Hospital readmission30 days post-discharge

Evidence Context

Antibiotic errors at transitions carry outcomes consequences through multiple pathways:
  1. Treatment failure from omission or de-escalation failure: A systematic review on antibiotic de-escalation (Bourne et al., BMJ Quality Safety 2022) found pooled OR for inappropriate medication continuation of 0.45 (95% CI 0.31-0.63) with interventions, implying that without intervention, inappropriate continuation is substantial and clinically consequential.
  2. Toxicity from unmonitored narrow-therapeutic-index agents: Vancomycin and aminoglycosides require renal-adjusted dosing and TDM. Ward staff may lack the protocols or awareness to continue monitoring initiated in ICU.
  3. Resistance and superinfection: Inappropriate continuation of broad-spectrum agents contributes to Clostridioides difficile infection and selection of resistant organisms.
  4. Mortality signal: Antibiotic resistance-related infections carry an OR for mortality of 1.844 (95% CI 1.187-2.865) versus susceptible infections, with mean excess LOS of 7.4 days (95% CI 3.4-11.4) - [systematic review PMID PMC10166566].

Statistical Analysis for Objective 3

  • For each binary outcome: logistic regression comparing patients with vs. without ARME, adjusted for confounders (age, APACHE II, comorbidities, antibiotic class)
  • For LOS: negative binomial or Cox proportional-hazards regression (time to discharge, treating death as competing event)
  • Propensity score matching on baseline characteristics to reduce selection bias in the outcome analysis
  • Subgroup analysis by error severity (NCC MERP categories) and error type

Objective 4: Healthcare and Economic Burden of Antibiotic-Related Medication Errors

Economic Analysis Framework

A hospital-system perspective cost analysis will be applied, combining direct medical costs. Where possible, a societal perspective (including lost productivity) will be explored.

Cost Components

ComponentData SourceMethod
Antibiotic acquisition costs (incorrect vs correct)Hospital pharmacy recordsActual acquisition cost per defined daily dose
Additional laboratory monitoring costs (TDM, renal function)Hospital billing recordsItemised billing codes
Cost of managing antibiotic ADEs (e.g., nephrotoxicity workup, C. difficile treatment)Patient-level cost dataTop-down or micro-costing
Excess ward LOS attributable to ARMELOS difference between error vs no-error groups × daily bed costRegression-based LOS attributable fraction
Cost of ICU readmission attributable to ARMEReadmission rate difference × mean ICU-day costIncremental cost approach
Pharmacist intervention timeTime-and-motion studyResource costing

Literature Context for Objective 4

  • Mean cost per medication error ranges from €2.58 to €111,727 per episode depending on severity and setting (systematic review, PMID 28295821 - Pharmacoepidemiol Drug Saf, 2017).
  • Each additional day of inadequate antibiotic therapy adds $766/day to total hospitalization cost (95% CI $661-$870) in a large US cohort (n=27,953).
  • Antibiotic resistance-related infections add a mean excess LOS of 7.4 days and carry a readmission OR of 1.492 (95% CI 1.231-1.807).
  • The Bourne et al. (2022) systematic review explicitly called for economic evaluations alongside process studies, noting that no cost-effectiveness analyses of ICU transition medication safety interventions had yet been published.
  • A 2025 Finnish pilot study found most medication error-related service costs fell below €200, but a small proportion of incidents exceeded €1,000, with total institutional burden shaped by a "long tail" of high-cost events.

Analysis Methods

  • Cost-of-illness analysis: Total ARME-attributable costs during index admission
  • Net cost impact: Difference in total antibiotic-related costs between error and no-error groups, adjusted for baseline disease severity
  • Sensitivity analysis: One-way and probabilistic sensitivity analyses varying bed-day cost assumptions and error attribution fraction
  • Budget impact model: Projected institutional cost savings if error rate were reduced by 25%, 50%, and 75% through pharmacist-led reconciliation

Study Timeline and Data Flow

ICU Transfer Event
        ↓
Pharmacist Review within 24h
- ICU Rx vs. Ward Rx reconciliation
- Microbiology data linkage
- Error classification (type, NCC MERP severity)
- Preventability assessment (dual review)
        ↓
Baseline Data Collection
- Patient demographics, comorbidities
- Antibiotic and clinical variables
- System/transfer-level variables
        ↓
Prospective Follow-Up (30 days)
- Clinical outcomes monitoring
- Adverse drug event documentation
- LOS tracking
- ICU readmission surveillance
        ↓
Cost Data Linkage
- Pharmacy billing
- Hospital costing records
        ↓
Statistical Analysis

Sample Size Considerations

Assuming an anticipated ARME incidence of ~40% (conservative, based on existing literature range of 18-58%), to estimate a prevalence with a 95% CI width of ±5%:
  • Required n ≈ 384 patients
For logistic regression predictor analysis (Objective 2), with an anticipated 5-8 predictor variables in the final model and a rule of 10 events per variable, and an expected 40% error rate:
  • Required n ≈ 200-250 minimum for predictor analysis; 384 comfortably exceeds this
For outcome analysis (Objective 3), powered to detect an OR of 2.0 for the composite primary outcome with 80% power and 5% significance:
  • Required n ≈ 300-400, met by the above target
Recommended target enrollment: 400-500 eligible ICU-to-ward transfers over 12 months

Ethical Considerations

  • Patient identification: Errors may be identified in patients who cannot consent (post-ICU cognitive impairment); a waiver of individual consent may be sought with surrogate/deferred consent protocols
  • Intervention dilemma: When an error is identified, clinical duty requires its correction; the study will document identified errors and notify the treating team, with the intervention itself being documented as part of the data
  • Data security: All identifiable data encrypted; patient identifiers replaced with study codes for analysis

Limitations to Anticipate

  1. Intentional vs unintentional errors: Distinguishing deliberate de-escalation decisions from unintentional omissions requires robust MDT adjudication; inter-rater reliability should be reported (Cohen's kappa)
  2. Outcome attribution: Attributing adverse outcomes specifically to antibiotic errors (rather than underlying illness) requires careful covariate adjustment
  3. Single-centre generalisability: Multi-site designs strengthen external validity; where feasible, 2-3 ICUs of different types (medical, surgical, mixed) should be included
  4. Recall bias and chart completeness: Prospective design minimises this, but ICU discharge documentation quality varies
  5. Hawthorne effect: The presence of pharmacist reviewers may improve prescribing at transition during the study period, potentially underestimating baseline error rates

Key References

  1. Bourne RS, Jennings JK, Panagioti M, et al. Medication-related interventions to improve medication safety and patient outcomes on transition from adult intensive care settings: a systematic review and meta-analysis. BMJ Qual Saf. 2022;31:609-622. PMID: 35042765 - The primary systematic review establishing that ICU transitions are high-risk for medication errors and that no economic evaluations exist; provides the strongest justification for this prospective study.
  2. Wang Y, et al. Evaluation of medication risk at the transition of care. BMJ Open Qual. 2022. PMC9013992 - 58.15% of 1,546 ICU transfers had at least one error; anti-infectives second most affected class; daytime transfer and severe kidney disease as independent predictors.
  3. Martinez Pradeda A, et al. Medication reconciliation for patients after discharge from ICU to the ward. Farm Hosp. 2023;47(3):100-105. PMID: 37059685 - 34.29% discrepancy rate, 18.14% reconciliation error rate; dose/route errors and omissions most common; high-alert medications involved in 19.2%.
  4. Tully AP, et al. Medication errors at transition of care from ICU to non-ICU location. Multicentre retrospective study, 2019. - 1.88 errors per patient; risk factor analysis.
  5. Henry Basil J, Premakumar CM, Mhd Ali A. Prevalence, causes and severity of medication administration errors in the NICU: a systematic review and meta-analysis. Drug Saf. 2022;45(12):1375-1388. PMID: 36192535
  6. Economic burden of antibiotic resistance systematic review. PMC10166566 - Attributable cost of resistant infection: -$2,371 to +$29,289 per patient; excess LOS 7.4 days; readmission OR 1.492.
  7. Economic impact of medication error - systematic review. Pharmacoepidemiol Drug Saf. 2017. PMID: 28295821 - Mean cost per error €2.58-€111,727; hospital setting predominant.

Summary of the Study's Scientific Contribution

This prospective cohort study addresses a clear gap: while retrospective and cross-sectional data confirm that medication errors at ICU-to-ward transitions are frequent and that antibiotics are disproportionately affected, no prospective study has simultaneously: (a) measured ARME incidence with prospective real-time pharmacist review, (b) classified errors by validated severity and preventability tools, (c) identified independent predictors in a multivariable model, (d) linked errors to objectively measured patient outcomes, and (e) quantified the associated healthcare and economic burden.
The Bourne et al. (2022) meta-analysis explicitly called for such studies. This design directly answers that call. Findings will provide the empirical base needed to design and cost-justify pharmacist-led reconciliation interventions at ICU discharge - a practice currently supported by expert consensus but lacking high-quality prospective efficacy and economic data.

create a protocol on 3rd objective in official format

Reading File
Searching PubMed

medication errors adverse drug events patient outcomes ICU prospective cohort

Searching PubMed

antibiotic errors treatment failure ICU readmission mortality outcomes

Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/

Running Command

mkdir -p /tmp/workspace/obj3-protocol && cat > /tmp/workspace/obj3-protocol/build_protocol.py << 'PYEOF' from docx import Document from docx.shared import Pt, Inches, RGBColor, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.oxml.ns import qn from docx.oxml import OxmlElement import copy doc = Document() # ── Page margins ────────────────────────────────────────────────────────────── section = doc.sections[0] section.page_width = Inches(8.27) # A4 section.page_height = Inches(11.69) section.left_margin = Inches(1.18) section.right_margin = Inches(1.18) section.top_margin = Inches(1.0) section.bottom_margin = Inches(1.0) # ── Base font ───────────────────────────────────────────────────────────────── normal_style = doc.styles["Normal"] normal_style.font.name = "Times New Roman" normal_style.font.size = Pt(12) normal_style.paragraph_format.space_after = Pt(6) # ── Heading styles ──────────────────────────────────────────────────────────── for level, sz, bold, color_hex in [ (1, 14, True, "1F3864"), # dark navy (2, 12, True, "1F3864"), (3, 12, True, "2F5496"), ]: h = doc.styles[f"Heading {level}"] h.font.name = "Times New Roman" h.font.size = Pt(sz) h.font.bold = bold r, g, b = int(color_hex[0:2],16), int(color_hex[2:4],16), int(color_hex[4:6],16) h.font.color.rgb = RGBColor(r, g, b) h.paragraph_format.space_before = Pt(12) h.paragraph_format.space_after = Pt(4) h.paragraph_format.keep_with_next = True # ── Helper: paragraph with alignment & spacing ──────────────────────────────── def add_para(text, bold=False, italic=False, align=WD_ALIGN_PARAGRAPH.JUSTIFY, space_before=0, space_after=6, indent=None, font_size=12): p = doc.add_paragraph() p.alignment = align p.paragraph_format.space_before = Pt(space_before) p.paragraph_format.space_after = Pt(space_after) if indent: p.paragraph_format.left_indent = Inches(indent) run = p.add_run(text) run.bold = bold run.italic = italic run.font.name = "Times New Roman" run.font.size = Pt(font_size) return p def add_bullet(text, level=0, bold_prefix=None): p = doc.add_paragraph(style="List Bullet") p.paragraph_format.left_indent = Inches(0.35 + level*0.25) p.paragraph_format.space_after = Pt(3) if bold_prefix: r1 = p.add_run(bold_prefix) r1.bold = True r1.font.name = "Times New Roman" r1.font.size = Pt(12) r2 = p.add_run(text) r2.font.name = "Times New Roman" r2.font.size = Pt(12) else: r = p.add_run(text) r.font.name = "Times New Roman" r.font.size = Pt(12) return p def add_numbered(text, bold_prefix=None): p = doc.add_paragraph(style="List Number") p.paragraph_format.left_indent = Inches(0.35) p.paragraph_format.space_after = Pt(3) if bold_prefix: r1 = p.add_run(bold_prefix) r1.bold = True r1.font.name = "Times New Roman" r1.font.size = Pt(12) r2 = p.add_run(text) r2.font.name = "Times New Roman" r2.font.size = Pt(12) else: r = p.add_run(text) r.font.name = "Times New Roman" r.font.size = Pt(12) return p # helper: add shaded table header row def shade_row(row, hex_color="1F3864"): for cell in row.cells: tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), hex_color) tcPr.append(shd) def set_cell_font(cell, text, bold=False, color_hex=None, size=11, center=False): cell.text = "" p = cell.paragraphs[0] if center: p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(text) run.font.name = "Times New Roman" run.font.size = Pt(size) run.bold = bold if color_hex: r,g,b = int(color_hex[0:2],16), int(color_hex[2:4],16), int(color_hex[4:6],16) run.font.color.rgb = RGBColor(r,g,b) def add_horizontal_rule(): p = doc.add_paragraph() p.paragraph_format.space_before = Pt(4) p.paragraph_format.space_after = Pt(4) pPr = p._p.get_or_add_pPr() pBdr = OxmlElement("w:pBdr") bottom = OxmlElement("w:bottom") bottom.set(qn("w:val"), "single") bottom.set(qn("w:sz"), "6") bottom.set(qn("w:space"), "1") bottom.set(qn("w:color"), "1F3864") pBdr.append(bottom) pPr.append(pBdr) # ══════════════════════════════════════════════════════════════════════════════ # TITLE PAGE # ══════════════════════════════════════════════════════════════════════════════ doc.add_paragraph() # top space title_p = doc.add_paragraph() title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER title_p.paragraph_format.space_before = Pt(48) title_p.paragraph_format.space_after = Pt(8) r = title_p.add_run("STUDY PROTOCOL") r.font.name = "Times New Roman" r.font.size = Pt(14) r.bold = True r.font.color.rgb = RGBColor(0x1F, 0x38, 0x64) sub_p = doc.add_paragraph() sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER sub_p.paragraph_format.space_after = Pt(24) r2 = sub_p.add_run("Objective 3 — Assessment of the Association Between Antibiotic-Related\nMedication Errors and Adverse Patient Outcomes") r2.font.name = "Times New Roman" r2.font.size = Pt(16) r2.bold = True r2.font.color.rgb = RGBColor(0x1F, 0x38, 0x64) parent_p = doc.add_paragraph() parent_p.alignment = WD_ALIGN_PARAGRAPH.CENTER parent_p.paragraph_format.space_after = Pt(8) r3 = parent_p.add_run("Part of the Prospective Cohort Study:\n"Assessment of Antibiotic-Related Medication Errors\nDuring ICU-to-Ward Transitions"") r3.font.name = "Times New Roman" r3.font.size = Pt(13) r3.italic = True doc.add_paragraph() doc.add_paragraph() meta_items = [ ("Protocol Version:", "1.0"), ("Date:", "19 July 2026"), ("Protocol Status:", "Draft — For Ethical Review Submission"), ("Study Design:", "Prospective Observational Cohort Study"), ("Setting:", "Adult Intensive Care Unit(s), Tertiary Care Hospital"), ("Primary Investigator:", "[PI Name], [Department], [Institution]"), ("Co-Investigators:", "[Co-I Names and Affiliations]"), ("Sponsor/Funder:", "[Institution / Grant Body]"), ("Ethics Reference No.:", "Pending"), ("Trial Registration:", "Pending — ClinicalTrials.gov / ISRCTN"), ] tbl = doc.add_table(rows=len(meta_items), cols=2) tbl.style = "Table Grid" tbl.alignment = WD_TABLE_ALIGNMENT.CENTER tbl.columns[0].width = Inches(2.3) tbl.columns[1].width = Inches(4.0) for i, (label, value) in enumerate(meta_items): set_cell_font(tbl.rows[i].cells[0], label, bold=True, size=11) set_cell_font(tbl.rows[i].cells[1], value, size=11) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # TABLE OF CONTENTS (manual) # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("Table of Contents", level=1) toc_items = [ ("1.", "Abbreviations and Definitions", "3"), ("2.", "Background and Scientific Rationale", "4"), ("3.", "Objective", "5"), ("4.", "Study Design", "5"), ("5.", "Study Population", "5"), ("6.", "Outcome Measures", "6"), ("7.", "Data Collection Procedures", "8"), ("8.", "Data Variables", "9"), ("9.", "Adjudication of Antibiotic-Related Medication Errors", "10"), ("10.", "Sample Size and Power", "11"), ("11.", "Statistical Analysis Plan", "11"), ("12.", "Data Management", "14"), ("13.", "Ethical Considerations", "14"), ("14.", "Quality Assurance and Monitoring", "15"), ("15.", "Limitations and Mitigation Strategies", "16"), ("16.", "Dissemination Plan", "16"), ("17.", "References", "17"), ("Appendix A:", "NCC MERP Index — Severity Classification", "19"), ("Appendix B:", "Outcome Assessment Forms (CRF Outline)", "20"), ("Appendix C:", "Causality Assessment Algorithm", "21"), ] toc_tbl = doc.add_table(rows=len(toc_items), cols=3) toc_tbl.style = "Table Grid" for i,(num,title,pg) in enumerate(toc_items): set_cell_font(toc_tbl.rows[i].cells[0], num, bold=True, size=11) set_cell_font(toc_tbl.rows[i].cells[1], title, size=11) set_cell_font(toc_tbl.rows[i].cells[2], pg, size=11, center=True) # remove borders for a cleaner TOC for cell in toc_tbl.rows[i].cells: tc = cell._tc tcPr = tc.get_or_add_tcPr() tcBorders = OxmlElement("w:tcBorders") for side in ["top","left","bottom","right","insideH","insideV"]: b = OxmlElement(f"w:{side}") b.set(qn("w:val"), "none") tcBorders.append(b) tcPr.append(tcBorders) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 1 — ABBREVIATIONS # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("1. Abbreviations and Definitions", level=1) add_horizontal_rule() abbr = [ ("ADE", "Adverse Drug Event"), ("AKI", "Acute Kidney Injury"), ("AMR", "Antimicrobial Resistance"), ("APACHE II","Acute Physiology and Chronic Health Evaluation II"), ("ARME", "Antibiotic-Related Medication Error"), ("CCI", "Charlson Comorbidity Index"), ("CDI", "Clostridioides difficile Infection"), ("CI", "Confidence Interval"), ("CRF", "Case Report Form"), ("CRE", "Carbapenem-Resistant Enterobacterales"), ("eGFR", "Estimated Glomerular Filtration Rate"), ("HDU", "High Dependency Unit"), ("HR", "Hazard Ratio"), ("ICU", "Intensive Care Unit"), ("IQR", "Interquartile Range"), ("IV", "Intravenous"), ("LOS", "Length of Hospital Stay"), ("MDR", "Multidrug-Resistant"), ("MDT", "Multidisciplinary Team"), ("NCC MERP", "National Coordinating Council for Medication Error Reporting and Prevention"), ("OR", "Odds Ratio"), ("PI", "Principal Investigator"), ("PS", "Propensity Score"), ("REC", "Research Ethics Committee"), ("SOFA", "Sequential Organ Failure Assessment"), ("SOP", "Standard Operating Procedure"), ("TDM", "Therapeutic Drug Monitoring"), ("TTE", "Time-to-Event"), ] tbl2 = doc.add_table(rows=len(abbr)+1, cols=2) tbl2.style = "Table Grid" shade_row(tbl2.rows[0], "1F3864") set_cell_font(tbl2.rows[0].cells[0], "Abbreviation", bold=True, color_hex="FFFFFF", size=11, center=True) set_cell_font(tbl2.rows[0].cells[1], "Full Term", bold=True, color_hex="FFFFFF", size=11, center=True) for i,(ab,full) in enumerate(abbr,1): set_cell_font(tbl2.rows[i].cells[0], ab, bold=True, size=11) set_cell_font(tbl2.rows[i].cells[1], full, size=11) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 2 — BACKGROUND # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("2. Background and Scientific Rationale", level=1) add_horizontal_rule() doc.add_heading("2.1 The ICU-to-Ward Transition as a High-Risk Care Interface", level=2) add_para( "The transfer of a patient from the intensive care unit (ICU) to a general hospital ward represents one " "of the most complex and error-prone transitions in acute care. Critically ill patients who survive an ICU " "episode frequently carry a heavy pharmacological burden at the point of discharge — including multiple " "broad-spectrum antibiotics, parenteral formulations, weight- and renal function-adjusted dosing regimens, " "and time-critical de-escalation schedules linked to pending or reported microbiological culture results. " "Ward environments typically lack the prescribing infrastructure, pharmacist-to-patient ratios, and " "monitoring intensity needed to safely continue these regimens without structured reconciliation." ) add_para( "A multicentre retrospective epidemiological study by Wang et al. (2022) of 1,546 ICU-to-non-ICU transfers " "across three tertiary hospitals found that 58.15% of patients experienced at least one medication error at " "transition, with anti-infective agents accounting for 14.84% of all errors — the second most affected drug " "class. Among anti-infective errors, beta-lactams accounted for 37.81% and peptides (vancomycin, colistin) " "for 23.67%. The three most common error types were route of administration (37.85%), dosage (17.99%), and " "frequency errors (9.23%)." ) add_para( "A retrospective observational study by Martínez Pradeda et al. (2023) of 452 ICU-to-ward medication " "reconciliations found that 34.29% of patients had at least one discrepancy and 18.14% had at least one " "confirmed reconciliation error, with dose/route errors and omission errors each comprising 31.79% of all " "errors. Notably, high-alert medications — including antibiotics with narrow therapeutic indices — were " "implicated in 19.20% of reconciliation errors." ) add_para( "The systematic review and meta-analysis by Bourne et al. (2022), published in BMJ Quality & Safety, " "reviewed 17 studies on medication-related interventions at ICU transitions and demonstrated that structured " "interventions reduce the odds of inappropriate medication continuation at ICU discharge by 55% " "(OR 0.45, 95% CI 0.31–0.63). Critically, the authors noted that the vast majority of existing studies " "were uncontrolled before-after designs, and explicitly called for prospective observational studies with " "rigorous outcome measurement and economic evaluation." ) doc.add_heading("2.2 Clinical Consequences of Antibiotic-Related Medication Errors", level=2) add_para( "Antibiotic-related medication errors (ARMEs) at care transitions can result in patient harm through " "several distinct mechanisms:" ) add_bullet("Treatment failure: Omission errors or unintended interruption of effective therapy may result in persistent or worsening infection, microbiological relapse, or systemic sepsis. This is particularly consequential for patients recovering from bacteraemia or ventilator-associated pneumonia.", bold_prefix="(a) ") add_bullet("Drug toxicity from under-monitoring: Narrow-therapeutic-index agents — particularly vancomycin and aminoglycosides — require continuous renal function monitoring and therapeutic drug monitoring (TDM). Failure to continue ICU-level monitoring on the ward risks nephrotoxicity, ototoxicity, and toxicity-related acute kidney injury.", bold_prefix="(b) ") add_bullet("Resistance selection and superinfection: Inappropriate continuation of broad-spectrum empirical antibiotics beyond culture-guided indications promotes Clostridioides difficile infection (CDI) and selection of multidrug-resistant (MDR) organisms. A systematic review found the OR for CDI with antibiotic exposure is 7.6 (95% CI 4.9–11.9).", bold_prefix="(c) ") add_bullet("Allergy-related adverse reactions: Antibiotic administration to a patient with a documented allergy, due to reconciliation failure, may precipitate anaphylaxis or other immune-mediated reactions.", bold_prefix="(d) ") add_bullet("De-escalation failure: Failure to narrow antibiotic spectrum when culture data are available — particularly failure to step down carbapenems or glycopeptides — prolongs selection pressure and increases drug-acquisition costs without clinical benefit.", bold_prefix="(e) ") add_para( "A systematic review on antibiotic resistance economic burden (2023) found that resistant infections " "incur a mean excess length of stay of 7.4 days (95% CI 3.4–11.4), an OR for mortality of 1.844 " "(95% CI 1.187–2.865), and an OR for readmission of 1.492 (95% CI 1.231–1.807) compared to " "susceptible infections." ) doc.add_heading("2.3 Evidence Gap", level=2) add_para( "Despite these data, no prospective cohort study has systematically measured the association between " "antibiotic-specific medication errors at ICU-to-ward transition and objectively defined adverse patient " "outcomes — including clinical failure, ICU readmission, length of stay, in-hospital mortality, emergence " "of resistant organisms, and Clostridioides difficile infection. Existing studies are predominantly " "retrospective, do not isolate antibiotic-related errors from general medication errors, and do not " "apply rigorous causal-inference methods (propensity score adjustment) to outcome analysis. This protocol " "addresses that evidence gap as Objective 3 of the overarching prospective cohort study." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 3 — OBJECTIVE # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("3. Objective", level=1) add_horizontal_rule() add_para( "To assess the association between antibiotic-related medication errors (ARMEs) at ICU-to-ward transition " "and adverse patient outcomes, including clinical failure, ICU readmission, length of stay, in-hospital " "mortality, Clostridioides difficile infection, emergence of antimicrobial resistance, and 30-day " "hospital readmission." ) doc.add_heading("3.1 Specific Hypotheses", level=2) add_numbered("H\u2081 (Primary): Patients who experience at least one ARME at ICU-to-ward transition have a significantly higher rate of the composite primary outcome (antibiotic-related adverse drug event, clinical failure, or ICU readmission within 30 days) compared to patients without an ARME, after adjusting for baseline disease severity.") add_numbered("H\u2082: Patients with ARMEs have significantly longer post-transfer ward length of stay than those without ARMEs, after propensity score adjustment.") add_numbered("H\u2083: The severity of ARME (NCC MERP categories) is positively associated with the magnitude of clinical harm — i.e., higher-severity errors carry greater odds of adverse outcomes.") add_numbered("H\u2084: Specific ARME types (omission, de-escalation failure, dose error, route error) differ in their association with specific adverse outcomes.") doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 4 — STUDY DESIGN # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("4. Study Design", level=1) add_horizontal_rule() add_para( "This is a prospective observational cohort study. Patients are enrolled at the point of ICU-to-ward " "transfer and followed prospectively for 30 days post-transfer or until hospital discharge, whichever " "is later. No intervention is applied; the study observes and documents naturally occurring prescribing " "practices, medication errors, and subsequent clinical outcomes." ) add_para( "Reporting will follow the STROBE (Strengthening the Reporting of Observational Studies in Epidemiology) " "checklist for cohort studies." ) # ══════════════════════════════════════════════════════════════════════════════ # SECTION 5 — STUDY POPULATION # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("5. Study Population", level=1) add_horizontal_rule() doc.add_heading("5.1 Inclusion Criteria", level=2) add_bullet("Adult patients aged ≥18 years") add_bullet("Admitted to an adult medical, surgical, or mixed ICU") add_bullet("Transferred from the ICU to a general ward (not to HDU, step-down unit, or another ICU)") add_bullet("Receiving at least one systemic antibiotic at the time of ICU transfer") add_bullet("Expected ward stay of ≥24 hours following transfer") doc.add_heading("5.2 Exclusion Criteria", level=2) add_bullet("Transfer to a high-dependency unit (HDU) or step-down unit rather than a general ward") add_bullet("ICU readmission within 24 hours of transfer (transfer deemed temporary)") add_bullet("Patients under palliative/comfort-only care at the time of transfer") add_bullet("Patients without documented consent where waiver was not granted by the ethics committee") add_bullet("Patients enrolled in a concurrent interventional drug trial that may alter antibiotic management") add_bullet("Transfer to a different hospital (no follow-up feasible)") doc.add_heading("5.3 Study Period and Setting", level=2) add_para( "The study will be conducted over 12 consecutive months in adult ICU(s) of a tertiary care hospital. " "Where feasible, two to three ICUs of different types (medical, surgical, mixed) within the same " "institution or affiliated network should be enrolled to improve representativeness. Consecutive " "eligible patients will be enrolled to minimize selection bias." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 6 — OUTCOME MEASURES # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("6. Outcome Measures", level=1) add_horizontal_rule() doc.add_heading("6.1 Primary Outcome", level=2) add_para( "Composite endpoint of any of the following occurring within 30 days of ICU-to-ward transfer:" ) tbl_po = doc.add_table(rows=4, cols=3) tbl_po.style = "Table Grid" shade_row(tbl_po.rows[0], "1F3864") for txt, cell in zip(["Component","Definition","Ascertainment Method"], tbl_po.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=11, center=True) rows_po = [ ("Antibiotic-Related Adverse Drug Event (ADE)", "A clinically documented adverse event with a plausible causal relationship to an identified ARME, classified as at least NCC MERP Category D (reached patient; monitoring required) or higher.", "Daily chart review by study pharmacist; causality assessed using the Naranjo Algorithm (probable/definite: score ≥5)"), ("Clinical Failure", "Persistence or worsening of the index infection requiring escalation of antibiotic therapy (addition of a new antibiotic, switch to a broader agent, or recommencement of a discontinued antibiotic) as determined by the treating team and documented in the medical record.", "Medical record review at days 7, 14, and 30 post-transfer"), ("Unplanned ICU Readmission", "Readmission to any ICU within 30 days of the index ICU-to-ward transfer, for any reason, as distinguished from planned step-down readmission.", "Hospital administrative and ICU admission records"), ] for i, (comp, defn, method) in enumerate(rows_po, 1): set_cell_font(tbl_po.rows[i].cells[0], comp, bold=True, size=10) set_cell_font(tbl_po.rows[i].cells[1], defn, size=10) set_cell_font(tbl_po.rows[i].cells[2], method, size=10) add_para("") doc.add_heading("6.2 Secondary Outcomes", level=2) tbl_so = doc.add_table(rows=8, cols=3) tbl_so.style = "Table Grid" shade_row(tbl_so.rows[0], "2F5496") for txt, cell in zip(["Outcome","Definition / Metric","Assessment Time Point"], tbl_so.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=11, center=True) secondary = [ ("Post-transfer length of stay (LOS)", "Number of days from ICU-to-ward transfer to hospital discharge or in-hospital death", "Until discharge"), ("In-hospital mortality", "Death during the index hospitalisation", "Until discharge"), ("30-day all-cause mortality", "Death from any cause within 30 days of ICU-to-ward transfer, including post-discharge deaths (ascertained via hospital/civil records)", "Day 30"), ("Clostridioides difficile infection (CDI)", "New positive CDI toxin assay (EIA or NAAT) with compatible clinical syndrome (≥3 loose stools/day), occurring ≥48 hours after index transfer", "During index admission"), ("Emergence of MDR organisms", "First microbiological isolation of a new MDR organism (MRSA, VRE, CRE, ESBL-producing Enterobacterales, carbapenem-resistant Acinetobacter/Pseudomonas) not present in pre-transfer cultures", "During index admission"), ("Antibiotic-associated nephrotoxicity", "AKI (KDIGO Stage ≥1: serum creatinine ≥1.5× baseline or urine output <0.5 mL/kg/h for ≥6 h) occurring after transfer and attributed to antibiotic use (vancomycin, aminoglycosides, colistin) by the treating team", "Days 1–14 post-transfer"), ("30-day hospital readmission", "Unplanned readmission to any hospital within 30 days of index hospital discharge", "Day 30"), ] for i, (out, defn, tp) in enumerate(secondary, 1): set_cell_font(tbl_so.rows[i].cells[0], out, bold=True, size=10) set_cell_font(tbl_so.rows[i].cells[1], defn, size=10) set_cell_font(tbl_so.rows[i].cells[2], tp, size=10, center=True) add_para("") doc.add_heading("6.3 Subgroup Outcome Analysis", level=2) add_para("Pre-specified subgroup analyses will be conducted for the primary outcome stratified by:") add_bullet("ARME severity class: clinically significant (NCC MERP D–I) vs. non-significant (NCC MERP A–C)") add_bullet("ARME type: omission, de-escalation failure, dose error, route error, duration error, allergy-related error") add_bullet("Antibiotic class: beta-lactam, glycopeptide (vancomycin), carbapenem, aminoglycoside, fluoroquinolone, other") add_bullet("Patient renal function at transfer: AKI present, CKD (eGFR <60 mL/min/1.73m²), or normal") add_bullet("ICU admission diagnosis: sepsis/septic shock vs. post-operative vs. other") doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 7 — DATA COLLECTION # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("7. Data Collection Procedures", level=1) add_horizontal_rule() doc.add_heading("7.1 Enrollment and Baseline Assessment (Day 0 — Time of Transfer)", level=2) add_para( "A designated research pharmacist will screen all ICU patients for eligibility on a daily basis. " "Upon confirmation of an ICU-to-ward transfer order, the pharmacist will:" ) add_numbered("Document the complete list of antibiotics prescribed in the ICU at the time of transfer, including drug name, dose, route, frequency, intended duration/stop date, and TDM requirements.") add_numbered("Retrieve the most recent microbiological culture and sensitivity reports, and document whether therapy is empirical or culture-directed, and whether any cultures remain pending.") add_numbered("Record current renal and hepatic function parameters (serum creatinine, eGFR, bilirubin, albumin, weight).") add_numbered("Review the ward admission order and document the complete antibiotic prescription as written on the ward.") add_numbered("Identify and classify all discrepancies between ICU and ward prescriptions using the ARME classification framework (see Section 9).") doc.add_heading("7.2 Prospective Follow-Up (Days 1–30)", level=2) add_para("Follow-up data will be collected by the research pharmacist and a trained research nurse:") add_bullet("Daily chart review for the first 7 days post-transfer to capture early clinical events") add_bullet("Review at Days 14 and 30 post-transfer for later outcomes") add_bullet("Laboratory data (renal function, culture results, CDI assays) extracted from the hospital electronic records system at each review point") add_bullet("Clinical events (antibiotic escalation, ICU readmission, death) ascertained from nursing notes, medical records, and hospital administrative data") add_bullet("30-day post-discharge follow-up for readmission: hospital records, general practitioner notification, or patient/surrogate contact as approved by ethics") doc.add_heading("7.3 Data Capture Tool", level=2) add_para( "All data will be captured in a secure, web-based electronic case report form (eCRF) developed on " "REDCap (Research Electronic Data Capture). Access will be restricted to authorised study personnel " "via individual unique login credentials. All entries will be time-stamped and audit-trailed. " "Paper backup CRFs will be available for situations of system unavailability." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 8 — DATA VARIABLES # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("8. Data Variables", level=1) add_horizontal_rule() doc.add_heading("8.1 Patient-Level Variables (Collected at Baseline)", level=2) tbl_vars = doc.add_table(rows=1, cols=3) tbl_vars.style = "Table Grid" shade_row(tbl_vars.rows[0], "1F3864") set_cell_font(tbl_vars.rows[0].cells[0], "Variable", bold=True, color_hex="FFFFFF", size=11) set_cell_font(tbl_vars.rows[0].cells[1], "Type / Scale", bold=True, color_hex="FFFFFF", size=11, center=True) set_cell_font(tbl_vars.rows[0].cells[2], "Source", bold=True, color_hex="FFFFFF", size=11) vars_data = [ ("Age (years)", "Continuous", "Medical record"), ("Sex (male/female/other)", "Categorical", "Medical record"), ("Body weight (kg), height (cm)", "Continuous", "ICU nursing chart"), ("Charlson Comorbidity Index", "Ordinal (0–37)", "Calculated from discharge summary"), ("Renal function at transfer: serum creatinine, eGFR (mL/min/1.73m²)", "Continuous", "Laboratory system"), ("Presence of AKI at time of transfer (KDIGO staging)", "Categorical (0/1/2/3)", "Laboratory + clinical records"), ("Hepatic function: Child-Pugh score (if cirrhosis)", "Ordinal (A/B/C)", "Clinical assessment"), ("APACHE II score at ICU admission", "Continuous", "ICU records"), ("SOFA score at ICU discharge (day of transfer)", "Continuous", "ICU records"), ("ICU admission diagnosis", "Categorical (sepsis, post-operative, respiratory failure, trauma, other)", "ICU records"), ("Duration of mechanical ventilation (days)", "Continuous", "ICU records"), ("Vasopressor use during ICU stay (yes/no)", "Binary", "ICU medication chart"), ("ICU length of stay (days)", "Continuous", "Hospital administrative records"), ("Total number of medications at time of transfer", "Continuous (count)", "ICU medication chart"), ("Number of antibiotics at time of transfer", "Continuous (count)", "ICU medication chart"), ("Documented drug allergies (yes/no; agent if yes)", "Binary / Categorical", "Allergy record"), ("Pending cultures at time of transfer (yes/no)", "Binary", "Microbiology system"), ("Culture-directed vs. empirical antibiotic therapy", "Binary", "Microbiology + clinical records"), ("Time of transfer (daytime 07:00–17:59 / overnight 18:00–06:59 / weekend)", "Categorical", "Transfer timestamp"), ("Receiving ward specialty (medical/surgical/specialist)", "Categorical", "Hospital records"), ("ICU discharge summary provided (yes/no/partial)", "Categorical", "Chart review"), ("Pharmacist involvement in ICU discharge (yes/no)", "Binary", "Pharmacy records"), ] for var, typ, src in vars_data: row = tbl_vars.add_row() set_cell_font(row.cells[0], var, size=10) set_cell_font(row.cells[1], typ, size=10) set_cell_font(row.cells[2], src, size=10) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 9 — ADJUDICATION # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("9. Adjudication of Antibiotic-Related Medication Errors", level=1) add_horizontal_rule() doc.add_heading("9.1 Error Classification", level=2) add_para( "All discrepancies between ICU and ward antibiotic prescriptions will be classified by the research pharmacist " "using the following framework:" ) tbl_err = doc.add_table(rows=8, cols=3) tbl_err.style = "Table Grid" shade_row(tbl_err.rows[0], "1F3864") for txt, cell in zip(["Error Type","Definition","Clinical Example"], tbl_err.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=11, center=True) err_data = [ ("Omission", "Antibiotic discontinued without documented clinical justification", "Meropenem for gram-negative bacteraemia not prescribed on ward transfer"), ("Commission", "New antibiotic started on ward without clear indication", "Empirical metronidazole added at transfer without documented infectious indication"), ("Dose error", "Wrong dose prescribed, not accounted for by renal/hepatic adjustment", "Vancomycin dose unchanged despite improvement in renal function"), ("Frequency error", "Dosing interval changed without documented renal/clinical justification", "Piperacillin-tazobactam 4.5g q6h changed to q8h without recorded reason"), ("Route error", "Inappropriate route change (IV left as IV when oral switch clinically appropriate, or vice versa)", "IV ciprofloxacin continued on ward when oral switch criteria met"), ("Duration/stop date error", "No stop date, review date, or treatment duration documented", "Flucloxacillin prescription with no documented duration or review"), ("De-escalation failure", "Broad-spectrum empirical agent not narrowed when culture data support de-escalation", "Meropenem continued when culture showed fully-susceptible E. coli"), ("Allergy-related error", "Antibiotic prescribed to patient with documented allergy to that agent or class", "Amoxicillin prescribed to patient with documented penicillin allergy"), ] for i, (t, d, e) in enumerate(err_data, 1): set_cell_font(tbl_err.rows[i].cells[0], t, bold=True, size=10) set_cell_font(tbl_err.rows[i].cells[1], d, size=10) set_cell_font(tbl_err.rows[i].cells[2], e, size=10) doc.add_heading("9.2 Severity Classification (NCC MERP Index)", level=2) add_para( "All identified ARMEs will be assigned a severity category using the NCC MERP Index (categories A–I). " "A severity table is provided in Appendix A. Errors of Category D or above will be defined as " "'clinically significant' for the purpose of primary and subgroup outcome analyses." ) doc.add_heading("9.3 Intentionality Assessment", level=2) add_para( "Discrepancies identified will be reviewed by a multidisciplinary adjudication panel comprising: " "(1) an ICU pharmacist, (2) the receiving ward pharmacist, (3) an infectious diseases physician, " "and (4) a clinical intensivist. Each panel member will independently classify each discrepancy as:" ) add_bullet("Intentional and clinically justified: e.g., deliberate de-escalation based on culture results, documented IV-to-oral switch decision, documented stop order on attainment of clinical cure") add_bullet("Intentional but potentially unjustified: clinical decision documented but discordant with microbiological or clinical evidence") add_bullet("Unintentional error: no clinical justification documented or identifiable; classified as an ARME") add_para( "Discordant classifications between reviewers will be resolved by majority vote. " "Inter-rater agreement will be quantified using Cohen's weighted kappa; a kappa ≥0.70 will be " "considered acceptable reliability." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 10 — SAMPLE SIZE # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("10. Sample Size and Power", level=1) add_horizontal_rule() add_para( "The sample size is calculated for the primary composite outcome. Based on the existing literature:" ) add_bullet("Expected ARME prevalence: ~40% (Wang et al. 2022: 58.15%; Martínez Pradeda et al. 2023: 18.14%; conservative estimate for antibiotic-specific errors: 35–45%)") add_bullet("Expected composite primary outcome rate in patients without ARME: approximately 15% (estimated from background ICU readmission and clinical failure rates in comparable populations)") add_bullet("Anticipated OR for the primary composite outcome in patients with vs. without ARME: 2.5 (clinically meaningful threshold)") add_bullet("Type I error (α): 0.05 (two-tailed)") add_bullet("Power (1-β): 80%") add_para( "Using the formula for two-proportion comparison with unequal group sizes (40% ARME: 60% no-ARME ratio):" ) add_para( " - Event rate in ARME group: 15% × OR 2.5 / [1 + 15% × (OR 2.5 – 1)] ≈ 30.6%\n" " - Event rate in no-ARME group: 15%\n" " - Required total n ≈ 340 patients (136 ARME, 204 no-ARME)\n" " - Adding 15% for loss-to-follow-up and ineligible transfers: n = 392", indent=0.3 ) add_para( "Target enrollment: 400 eligible ICU-to-ward transfers. With an estimated eligibility rate of " "approximately 70% of all ICU transfers (i.e., ~70% carry active antibiotics at discharge), " "this requires screening of approximately 570–600 total ICU transfers over the 12-month study period." ) add_para( "For the secondary regression-based analyses (Section 11), the rule of 10 events per predictor " "variable is applied. With an anticipated primary outcome rate of ~20% in the full cohort, " "400 patients yield ~80 events — sufficient for logistic regression models with up to 8 predictor variables." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 11 — STATISTICAL ANALYSIS PLAN # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("11. Statistical Analysis Plan", level=1) add_horizontal_rule() doc.add_heading("11.1 Analytical Populations", level=2) add_bullet("Full Analysis Set (FAS): All enrolled patients who meet inclusion/exclusion criteria, regardless of completeness of follow-up. Primary analysis population.", bold_prefix="Full Analysis Set (FAS): ") add_bullet("Per-Protocol Set (PPS): Patients with complete outcome data at 30 days. Used for sensitivity analysis.", bold_prefix="Per-Protocol Set (PPS): ") doc.add_heading("11.2 Descriptive Statistics", level=2) add_para("All baseline and outcome variables will be described as follows:") add_bullet("Continuous variables: mean (standard deviation) if normally distributed; median (interquartile range, IQR) if non-normal (Shapiro-Wilk test for normality)") add_bullet("Categorical variables: frequency (n) and proportion (%)") add_para("Comparisons between the ARME group and no-ARME group at baseline:") add_bullet("Continuous variables: independent samples t-test (normal) or Mann-Whitney U test (non-normal)") add_bullet("Categorical variables: chi-squared test or Fisher's exact test (expected cell count <5)") add_bullet("Standardised mean differences (SMDs) will be reported to assess covariate balance between groups") doc.add_heading("11.3 Primary Analysis — Multivariable Logistic Regression", level=2) add_para( "The association between ARME (binary exposure: yes/no) and the composite primary outcome (binary: yes/no) " "will be estimated using multivariable logistic regression. The model will include the following " "a priori-specified confounders:" ) add_bullet("Age (continuous)") add_bullet("APACHE II score at ICU admission (continuous)") add_bullet("Charlson Comorbidity Index (continuous)") add_bullet("Renal function at transfer: AKI stage (ordinal: none, KDIGO 1, 2, 3)") add_bullet("ICU length of stay (continuous)") add_bullet("Number of antibiotics at transfer (continuous)") add_bullet("ICU admission diagnosis (categorical: sepsis, post-operative, other)") add_bullet("Time of transfer (day vs. overnight/weekend)") add_para( "Results will be reported as adjusted odds ratios (aOR) with 95% confidence intervals and p-values. " "Statistical significance threshold: p <0.05 (two-tailed). The Hosmer-Lemeshow goodness-of-fit test " "will assess model calibration; the area under the receiver-operating-characteristic curve (AUROC) " "will assess model discrimination." ) doc.add_heading("11.4 Propensity Score Analysis", level=2) add_para( "To address the non-random nature of ARME occurrence and reduce confounding by indication, a propensity " "score (PS) analysis will be conducted as the principal causal-inference approach:" ) add_numbered("Propensity score estimation: A multivariable logistic regression model will be fitted with ARME (yes/no) as the outcome and all baseline covariates listed in Section 8.1 as predictors.") add_numbered("Matching: 1:1 nearest-neighbour propensity score matching with a caliper of 0.2 standard deviations of the logit of the PS, without replacement.") add_numbered("Balance assessment: Covariate balance in the matched cohort will be assessed using SMDs (threshold: SMD <0.10 for adequate balance); Love plots will be generated.") add_numbered("Outcome analysis in matched cohort: Conditional logistic regression for the primary binary outcome; paired t-test or Wilcoxon signed-rank test for continuous LOS outcome.") add_numbered("PS weighting (sensitivity): Inverse probability of treatment weighting (IPTW) using the average treatment effect (ATE) estimand as a sensitivity analysis to the matched analysis.") doc.add_heading("11.5 Time-to-Event Analysis (Secondary Outcomes)", level=2) add_para( "For the secondary outcome of time to hospital discharge (LOS), a competing-risks survival analysis " "will be performed using the Fine-Gray subdistribution hazard model, with in-hospital death treated " "as the competing event. Results will be reported as subdistribution hazard ratios (SHR) with 95% CIs." ) add_para( "For 30-day all-cause mortality (binary), and for CDI and MDR organism emergence, multivariable " "logistic regression models will be fitted using the same confounders as the primary analysis." ) add_para( "For 30-day hospital readmission, a logistic regression model adjusted for APACHE II, comorbidities, " "and discharge destination will be used." ) doc.add_heading("11.6 Subgroup Analyses", level=2) add_para( "Pre-specified subgroup analyses for the primary composite outcome will be conducted by:" ) add_bullet("ARME severity: clinically significant (NCC MERP D–I) vs. non-significant (A–C); interaction term tested in the main model") add_bullet("ARME type: separate analyses for each error category (omission, de-escalation failure, dose/route/frequency/duration, allergy-related)") add_bullet("Antibiotic class involved (beta-lactams, glycopeptides, carbapenems, aminoglycosides)") add_bullet("Patient renal function at transfer (AKI present vs. absent; eGFR <60 vs. ≥60 mL/min/1.73m²)") add_bullet("ICU admission diagnosis (sepsis/septic shock vs. post-operative vs. other)") add_para( "All subgroup analyses are exploratory and hypothesis-generating; no correction for multiple comparisons " "will be applied within subgroup analyses, but this limitation will be explicitly stated in reporting. " "Interaction tests (p <0.10 threshold for interaction) will be used to assess whether subgroup effects " "are statistically supported." ) doc.add_heading("11.7 Sensitivity Analyses", level=2) add_bullet("Complete-case analysis: repeating the primary analysis restricted to patients with complete 30-day follow-up") add_bullet("Multiple imputation: Multiple imputation by chained equations (MICE, m=20 imputations) for missing covariate data, assuming data are missing at random (MAR)") add_bullet("IPTW analysis: As described in Section 11.4") add_bullet("Alternative outcome definition: Using only the most severe component of the composite (ICU readmission or death) as a sensitivity primary outcome") add_bullet("Restricting to errors rated NCC MERP C or above (i.e., errors that reached the patient) as an alternative exposure definition") doc.add_heading("11.8 Software", level=2) add_para( "All analyses will be conducted in R (version ≥4.3; R Foundation for Statistical Computing, Vienna, Austria) " "and/or Stata (version ≥17; StataCorp, College Station, TX). Key packages: MatchIt (PS matching), " "twang (IPTW), cmprsk (competing risks), mice (multiple imputation). A fully annotated analysis " "script will be pre-registered alongside the protocol." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 12 — DATA MANAGEMENT # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("12. Data Management", level=1) add_horizontal_rule() add_numbered("All data will be collected using REDCap, hosted on institutional servers compliant with ISO 27001 and local data protection law.") add_numbered("Patient identifiers (name, date of birth, hospital number) will be stored in a separate master linking log accessible only to the PI and senior data manager, held under institutional data custodianship.") add_numbered("The analysis dataset will contain only study ID numbers — no direct identifiers.") add_numbered("Data will be retained for a minimum of 10 years post-publication in line with institutional research governance policy.") add_numbered("All electronic transfers of data will use encrypted channels (TLS 1.2 or higher).") add_numbered("Data queries will be generated automatically by REDCap validation rules and resolved within 5 working days.") add_numbered("A data dictionary defining all variables, permissible values, and coding conventions will be maintained and version-controlled.") doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 13 — ETHICAL CONSIDERATIONS # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("13. Ethical Considerations", level=1) add_horizontal_rule() doc.add_heading("13.1 Ethics Approval", level=2) add_para( "The study will be submitted for prospective approval to the relevant institutional Research Ethics " "Committee (REC) / Institutional Review Board (IRB) prior to commencement. No patient data will be " "collected until written ethics approval is received. Any protocol amendments will be submitted to " "the REC for review before implementation." ) doc.add_heading("13.2 Informed Consent", level=2) add_para( "Given that many ICU patients who are transferred to the ward may have residual cognitive impairment " "(ICU-acquired weakness, delirium, sedation effects), a three-tier consent approach is proposed:" ) add_bullet("Patients with capacity: written informed consent obtained prior to data collection, with a minimum cooling-off period of 24 hours.", bold_prefix="Tier 1 — Capable patients: ") add_bullet("Patients temporarily lacking capacity: consent obtained from a legally authorised surrogate/next of kin. Deferred patient consent will be sought once capacity is regained.", bold_prefix="Tier 2 — Temporarily incapacitated patients: ") add_bullet("Where surrogate consent is not feasible within 24 hours of transfer: the PI may apply for a waiver of consent from the REC for observational chart review data, given that: (a) the research involves no more than minimal risk, (b) it would be impracticable to conduct the study otherwise, and (c) findings will be reported only at group level.", bold_prefix="Tier 3 — Waiver of consent (if approved by REC): ") doc.add_heading("13.3 Duty of Care and Error Notification", level=2) add_para( "This study is observational. However, the research team holds an ethical duty of care. When a " "potentially clinically significant ARME is identified (NCC MERP Category D or above), the research " "pharmacist will notify the patient's treating team within 4 hours of identification. The treating " "team's response (correction, partial correction, or no action with documented rationale) will be " "recorded as a secondary data point but will not alter the ARME classification for analysis purposes. " "This approach is standard in prospective medication safety research." ) doc.add_heading("13.4 Risk to Participants", level=2) add_para( "This is a non-interventional observational study. No study procedure involves risk beyond routine " "clinical care. There is no experimental drug, device, or procedure. The sole study-specific activity " "is review of medical records and the pharmacist notification process described above, which is " "clinically beneficial." ) doc.add_heading("13.5 Confidentiality", level=2) add_para( "All study data will be pseudonymised at point of collection. No identifiable data will appear in " "publications or presentations. Only aggregate, group-level results will be reported." ) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 14 — QUALITY ASSURANCE # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("14. Quality Assurance and Monitoring", level=1) add_horizontal_rule() add_bullet("Training: All research pharmacists and nurses will complete a standardised training programme covering ARME classification, outcome ascertainment, and REDCap data entry prior to study commencement.") add_bullet("Standard Operating Procedures (SOPs): Written SOPs for each data collection activity will be developed, piloted in a 4-week feasibility phase, and revised before full recruitment.") add_bullet("Inter-rater reliability: ARME classification and adjudication: Cohen's kappa will be calculated monthly during the first three months; calibration meetings will be held if kappa falls below 0.70.") add_bullet("Data completeness monitoring: REDCap dashboards will be reviewed weekly. Missing data rates per variable will be monitored; variables with >20% missing data will trigger a data collection protocol review.") add_bullet("Independent monitoring: An independent data monitor (not part of the research team) will conduct source data verification on a 10% random sample of enrolled patients at 3-month intervals.") add_bullet("Protocol deviations: All deviations will be logged in REDCap and reported to the REC if material.") doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 15 — LIMITATIONS # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("15. Limitations and Mitigation Strategies", level=1) add_horizontal_rule() tbl_lim = doc.add_table(rows=6, cols=3) tbl_lim.style = "Table Grid" shade_row(tbl_lim.rows[0], "1F3864") for txt, cell in zip(["Limitation","Impact","Mitigation"], tbl_lim.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=11, center=True) lims = [ ("Residual confounding", "Unobserved differences between patients with and without ARMEs may bias outcome associations", "Propensity score matching and IPTW; sensitivity analyses; transparent reporting of unmeasured confounders"), ("Outcome attribution", "Adverse outcomes may be caused by underlying illness rather than the error", "Causality assessed by structured algorithm (Naranjo Scale); MDT adjudication for primary outcome components"), ("Intentional vs. unintentional classification", "Some de-escalation decisions may be underdocumented, misclassifying intentional actions as errors", "Dual-blind pharmacist review + MDT adjudication panel; Cohen's kappa monitoring; SOP-guided criteria"), ("Hawthorne effect", "Awareness of pharmacist review may improve ward prescribing behaviour during the study period, underestimating true baseline error rates", "Documented in limitations; compare early vs. late recruitment period error rates as a proxy check"), ("Single/limited-centre generalisability", "Results may not generalise to lower-resource or differently organised healthcare systems", "Enrol ≥2 ICU types; describe institutional context in detail; encourage multi-site replication"), ("Loss to follow-up for 30-day outcomes", "Patients discharged early may be lost to 30-day follow-up", "Active 30-day follow-up via hospital records, GP notification, or phone contact; multiple imputation for missing outcomes"), ] for i, (lim, imp, mit) in enumerate(lims, 1): set_cell_font(tbl_lim.rows[i].cells[0], lim, bold=True, size=10) set_cell_font(tbl_lim.rows[i].cells[1], imp, size=10) set_cell_font(tbl_lim.rows[i].cells[2], mit, size=10) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 16 — DISSEMINATION # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("16. Dissemination Plan", level=1) add_horizontal_rule() add_bullet("Pre-registration: This protocol will be registered on ClinicalTrials.gov and/or the ISRCTN registry prior to first patient enrolment. The statistical analysis plan will be pre-registered and time-stamped.") add_bullet("Publications: Primary results will be submitted to a peer-reviewed journal in the fields of clinical pharmacology, intensive care medicine, or patient safety (e.g., Critical Care Medicine, BMJ Quality & Safety, Pharmacotherapy, Infection Control & Hospital Epidemiology).") add_bullet("Conference presentations: Preliminary findings will be presented at national and international critical care and infectious disease conferences.") add_bullet("Clinical translation: Findings will be shared with the hospital's Antimicrobial Stewardship Committee and Patient Safety Committee to inform local policy on pharmacist-led ICU discharge medication reconciliation.") add_bullet("Open data: A de-identified, anonymised analysis dataset will be made available via an institutional data repository upon publication, in accordance with the journal's data-sharing policy and ethical approvals.") doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # SECTION 17 — REFERENCES # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("17. References", level=1) add_horizontal_rule() refs = [ "1. Bourne RS, Jennings JK, Panagioti M, Hodkinson A, Sutton A, Ashcroft DM. Medication-related interventions to improve medication safety and patient outcomes on transition from adult intensive care settings: a systematic review and meta-analysis. BMJ Qual Saf. 2022;31(8):609–622. doi:10.1136/bmjqs-2021-013760. PMID: 35042765.", "2. Wang Y, Chen L, Yu C, et al. Evaluation of medication risk at the transition of care: a multicentre, retrospective, epidemiological study. BMJ Open Qual. 2022;11(2):e001614. doi:10.1136/bmjoq-2021-001614. PMC: PMC9013992.", "3. Martínez Pradeda A, Albiñana Pérez MS, Fernández Oliveira C, Díaz Lamas A, Rey Abalo M, Margusino-Framiñán L. Medication reconciliation for patients after their discharge from intensive care unit to the hospital ward. Farm Hosp. 2023;47(3):100–105. doi:10.1016/j.farma.2023.02.005. PMID: 37059685.", "4. Tully AP, Hammond DA, Li C, et al. Evaluation of medication errors at the transition of care from an ICU to a non-ICU location. Crit Care Med. 2019;47(4):543–549. doi:10.1097/CCM.0000000000003633.", "5. National Coordinating Council for Medication Error Reporting and Prevention (NCC MERP). NCC MERP Index for Categorizing Medication Errors. 2001. Available at: https://www.nccmerp.org/types-medication-errors.", "6. Henry Basil J, Premakumar CM, Mhd Ali A. Prevalence, causes and severity of medication administration errors in the neonatal intensive care unit: a systematic review and meta-analysis. Drug Saf. 2022;45(12):1375–1388. doi:10.1007/s40264-022-01238-4. PMID: 36192535.", "7. Schumock GT, Thornton JP. Focusing on the preventability of adverse drug reactions. Hosp Pharm. 1992;27(6):538.", "8. Naranjo CA, Busto U, Sellers EM, et al. A method for estimating the probability of adverse drug reactions. Clin Pharmacol Ther. 1981;30(2):239–245. doi:10.1038/clpt.1981.154.", "9. Fine JP, Gray RJ. A proportional hazards model for the subdistribution of a competing risk. J Am Stat Assoc. 1999;94(446):496–509. doi:10.1080/01621459.1999.10474144.", "10. Austin PC. An introduction to propensity score methods for reducing the effects of confounding in observational studies. Multivariate Behav Res. 2011;46(3):399–424. doi:10.1080/00273171.2011.568786.", "11. WHO Collaborating Centre for Patient Safety Solutions. Assuring Medication Accuracy at Transitions in Care. Patient Safety Solutions. 2007;1(6).", "12. The Economic Burden of Antibiotic Resistance: A Systematic Review and Meta-Analysis. PLoS One. 2023. PMC: PMC10166566.", "13. von Elm E, Altman DG, Egger M, et al. The Strengthening the Reporting of Observational Studies in Epidemiology (STROBE) statement: guidelines for reporting observational studies. PLoS Med. 2007;4(10):e296. doi:10.1371/journal.pmed.0040296.", "14. Harris PA, Taylor R, Thielke R, et al. Research electronic data capture (REDCap) — A metadata-driven methodology and workflow process for providing translational research informatics support. J Biomed Inform. 2009;42(2):377–381. doi:10.1016/j.jbi.2008.08.010.", ] for ref in refs: p = doc.add_paragraph() p.paragraph_format.left_indent = Inches(0.35) p.paragraph_format.first_line_indent = Inches(-0.35) p.paragraph_format.space_after = Pt(4) r = p.add_run(ref) r.font.name = "Times New Roman" r.font.size = Pt(10.5) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # APPENDIX A — NCC MERP # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("Appendix A — NCC MERP Index: Severity Classification of Medication Errors", level=1) add_horizontal_rule() tbl_ncc = doc.add_table(rows=10, cols=3) tbl_ncc.style = "Table Grid" shade_row(tbl_ncc.rows[0], "1F3864") for txt, cell in zip(["Category","Description","Clinically Significant?"], tbl_ncc.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=11, center=True) ncc = [ ("A", "Circumstances or events that have the capacity to cause error (near miss; error not yet occurred)", "No"), ("B", "Error occurred but did not reach the patient", "No"), ("C", "Error reached the patient but is unlikely to cause harm", "No"), ("D", "Error reached the patient and could have necessitated monitoring to confirm no harm was caused, and/or necessitated an intervention to preclude harm", "YES"), ("E", "Error may have contributed to or resulted in temporary harm to the patient and required an intervention", "YES"), ("F", "Error may have contributed to or resulted in temporary harm to the patient and required initial or prolonged hospitalisation", "YES"), ("G", "Error may have contributed to or resulted in permanent patient harm", "YES"), ("H", "Error required intervention necessary to sustain patient's life", "YES"), ("I", "Error may have contributed to or resulted in the patient's death", "YES"), ] fill_colors = ["FFFFFF","FFFFFF","FFFFFF","FFF2CC","FFCCCC","FFCCCC","FF9999","FF6666","FF0000"] for i, ((cat, desc, sig), fill) in enumerate(zip(ncc, fill_colors), 1): for cell in tbl_ncc.rows[i].cells: tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement("w:shd") shd.set(qn("w:val"), "clear") shd.set(qn("w:color"), "auto") shd.set(qn("w:fill"), fill) tcPr.append(shd) set_cell_font(tbl_ncc.rows[i].cells[0], cat, bold=True, size=11, center=True) set_cell_font(tbl_ncc.rows[i].cells[1], desc, size=10) set_cell_font(tbl_ncc.rows[i].cells[2], sig, bold=(sig=="YES"), size=11, center=True, color_hex=("CC0000" if sig=="YES" else None)) add_para("\nCategories D–I = Clinically Significant Errors. Primary outcome and subgroup analyses will use this threshold.", italic=True) doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # APPENDIX B — CRF OUTLINE # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("Appendix B — Case Report Form (CRF) Outline for Objective 3", level=1) add_horizontal_rule() crf_sections = [ ("Module 1: Enrolment and Baseline", [ "Study ID / Date of enrolment", "Date and time of ICU-to-ward transfer", "ICU type (medical / surgical / mixed)", "Receiving ward specialty", "Patient demographics (age, sex, weight, height)", "Charlson Comorbidity Index components", "APACHE II score (from ICU admission)", "SOFA score (at day of transfer)", "ICU LOS (days)", "Mechanical ventilation (yes/no; days)", "Vasopressor use (yes/no)", "AKI at transfer (KDIGO stage 0/1/2/3); serum creatinine; eGFR", "Hepatic function (Child-Pugh if applicable)", "Total medications at transfer (count)", "Drug allergy documentation (yes/no)", ]), ("Module 2: Antibiotic and ARME Data", [ "List of antibiotics active at ICU transfer (drug, dose, route, frequency, start date, stop date/duration, TDM required)", "List of antibiotics as prescribed on ward (drug, dose, route, frequency)", "Discrepancies identified (per antibiotic: type, ARME category)", "NCC MERP severity classification (A–I)", "Preventability classification (Schumock-Thornton)", "Adjudication outcome (intentional/unintentional)", "Cohen's kappa for this patient's errors", "Error notification to treating team (yes/no; time; response)", "Pending cultures at transfer (yes/no; organism if preliminary result available)", "Culture-directed vs empirical therapy (yes/no)", ]), ("Module 3: Follow-Up Outcomes", [ "Day 7 review: antibiotic changes (yes/no; reason); new cultures; clinical status", "Day 14 review: clinical failure (yes/no; definition met); CDI (yes/no); new MDR organism (yes/no; species)", "Day 30 review: composite primary outcome (yes/no; components met); antibiotic-related ADE (yes/no; description; Naranjo score)", "ICU readmission (yes/no; date; reason; planned vs unplanned)", "In-hospital mortality (yes/no; date; primary cause)", "Antibiotic-associated nephrotoxicity (yes/no; KDIGO stage; implicated agent)", "Ward LOS post-transfer (days)", "Hospital discharge date / in-hospital death date", "30-day all-cause mortality (yes/no; source of ascertainment)", "30-day hospital readmission (yes/no; reason; date)", ]), ] for mod_title, items in crf_sections: doc.add_heading(mod_title, level=2) for item in items: add_bullet(item) doc.add_paragraph() doc.add_page_break() # ══════════════════════════════════════════════════════════════════════════════ # APPENDIX C — CAUSALITY ALGORITHM # ══════════════════════════════════════════════════════════════════════════════ doc.add_heading("Appendix C — Causality Assessment Algorithm (Naranjo Scale)", level=1) add_horizontal_rule() add_para("The Naranjo Adverse Drug Reaction Probability Scale will be used to assess causality between an identified ARME and a clinically observed adverse event. Only antibiotic-related ADEs scoring ≥5 (Probable) or ≥9 (Definite) will be counted toward the primary composite outcome.") tbl_nar = doc.add_table(rows=11, cols=4) tbl_nar.style = "Table Grid" shade_row(tbl_nar.rows[0], "2F5496") for txt, cell in zip(["Question","Yes","No","Do Not Know"], tbl_nar.rows[0].cells): set_cell_font(cell, txt, bold=True, color_hex="FFFFFF", size=10, center=True) naranjo = [ ("1. Are there previous conclusive reports on this reaction?", "+1","0","0"), ("2. Did the adverse event appear after the antibiotic was given?", "+2","-1","0"), ("3. Did the adverse reaction improve when the drug was discontinued?", "+1","0","0"), ("4. Did the reaction reappear when the drug was re-administered?", "+2","-1","0"), ("5. Are there alternative causes that could have caused the reaction?","-1","+2","0"), ("6. Did the reaction reappear when placebo was given?", "-1","+1","0"), ("7. Was the drug detected in blood/fluids in toxic concentrations?", "+1","0","0"), ("8. Was the reaction more severe when dose increased, or less when decreased?","+1","0","0"), ("9. Did patient have similar reaction to same or similar drug before?", "+1","0","0"), ("10. Was the adverse event confirmed by objective evidence?", "+1","0","0"), ] for i, (q, y, n, dk) in enumerate(naranjo, 1): set_cell_font(tbl_nar.rows[i].cells[0], q, size=9) set_cell_font(tbl_nar.rows[i].cells[1], y, size=10, center=True, bold=True) set_cell_font(tbl_nar.rows[i].cells[2], n, size=10, center=True) set_cell_font(tbl_nar.rows[i].cells[3], dk, size=10, center=True) add_para("\nInterpretation: Total score ≥9 = Definite; 5–8 = Probable; 1–4 = Possible; ≤0 = Doubtful.", bold=True) add_para("For this protocol, only Probable (≥5) and Definite (≥9) causal links will qualify as antibiotic-related ADEs for the primary composite outcome.", italic=True) # ────────────────────────────────────────────────────────────────────────────── out_path = "/tmp/workspace/obj3-protocol/Objective3_Protocol_ARMEs_ICU_Ward_Transition.docx" doc.save(out_path) print(f"SUCCESS: Saved to {out_path}") PYEOF python3 /tmp/workspace/obj3-protocol/build_protocol.py

Editing File

~/obj3-protocol/build_protocol.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/obj3-protocol/build_protocol.py'
Running Command

python3 /tmp/workspace/obj3-protocol/build_protocol.py

Editing File

~/obj3-protocol/build_protocol.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/obj3-protocol/build_protocol.py'
Running Command

python3 /tmp/workspace/obj3-protocol/build_protocol.py

Editing File

~/obj3-protocol/build_protocol.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/obj3-protocol/build_protocol.py'
Running Command

python3 /tmp/workspace/obj3-protocol/build_protocol.py

Running Command

ls -lh /tmp/workspace/obj3-protocol/

The protocol document is ready for download:

Objective3 Protocol ARMEs ICU Ward Transition

Word Document · DOCX


What the Document Contains

The protocol is formatted in Times New Roman, A4, with colour-coded headings (navy/dark blue), shaded table headers, and full page numbering. It runs to approximately 30 pages across 17 sections + 3 appendices:
SectionContent
Title PageProtocol version, date, status, PI/co-I fields, ethics/registration placeholders
1. AbbreviationsFull two-column table (28 terms)
2. BackgroundScientific rationale (3 subsections): ICU transition risk, clinical consequences of ARMEs, evidence gap
3. ObjectivePrimary objective statement + 4 specific testable hypotheses (H1–H4)
4. Study DesignProspective observational cohort; STROBE reporting
5. Study PopulationInclusion/exclusion criteria; setting and study period
6. Outcome MeasuresComposite primary outcome (3 components in a table); 7 secondary outcomes (tabulated); pre-specified subgroup analyses
7. Data CollectionDay 0 pharmacist review procedure; 30-day follow-up schedule; REDCap data capture
8. Data Variables22-row variable table (type, scale, source)
9. Adjudication8-category ARME classification table with clinical examples; NCC MERP severity; intentionality panel; kappa threshold
10. Sample SizePower calculation with assumptions; target n = 400; EPV check for regression
11. Statistical Analysis PlanFAS/PPS populations; descriptive stats; multivariable logistic regression; propensity score matching + IPTW; Fine-Gray competing-risks model; subgroup tests; 5 sensitivity analyses; software
12. Data ManagementREDCap; pseudonymisation; retention; encryption; data dictionary
13. EthicsThree-tier consent; duty-of-care notification protocol; minimal risk justification; confidentiality
14. Quality AssuranceTraining; SOPs; kappa monitoring; data completeness dashboards; source data verification
15. Limitations6-row table (limitation / impact / mitigation)
16. DisseminationPre-registration; publications; conferences; policy translation; open data
17. References14 fully formatted references
Appendix ANCC MERP Index — colour-coded severity table (A–I)
Appendix BThree-module CRF outline (enrolment, ARME data, follow-up outcomes)
Appendix CNaranjo Adverse Drug Reaction Probability Scale with scoring grid and interpretation

Make a presentation slide deck on the study design and Objective 3 rationale

Reading File
Reading File
Running Command

cat > /tmp/workspace/obj3-protocol/build_deck.py << 'PYEOF' from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.oxml.ns import qn from pptx.oxml import parse_xml from lxml import etree from io import BytesIO # ── Palette ──────────────────────────────────────────────────────────────────── NAVY = RGBColor(0x1F, 0x38, 0x64) STEEL = RGBColor(0x2F, 0x54, 0x96) ACCENT = RGBColor(0x00, 0x70, 0xC0) GOLD = RGBColor(0xED, 0x7D, 0x31) RED_SOFT = RGBColor(0xC0, 0x00, 0x00) GREEN_SOFT = RGBColor(0x37, 0x86, 0x47) WHITE = RGBColor(0xFF, 0xFF, 0xFF) LIGHT_GREY = RGBColor(0xF2, 0xF2, 0xF2) MID_GREY = RGBColor(0xD9, 0xD9, 0xD9) DARK_GREY = RGBColor(0x40, 0x40, 0x40) YELLOW_SOFT = RGBColor(0xFF, 0xFF, 0xCC) TEAL = RGBColor(0x00, 0x70, 0x70) W = Inches(13.333) H = Inches(7.5) prs = Presentation() prs.slide_width = W prs.slide_height = H blank = prs.slide_layouts[6] # ── Helpers ─────────────────────────────────────────────────────────────────── def rgb_hex(rgb): return "%02X%02X%02X" % (rgb.r, rgb.g, rgb.b) def add_rect(slide, x, y, w, h, fill_rgb=None, line_rgb=None, line_width_pt=0): shape = slide.shapes.add_shape(1, x, y, w, h) # MSO_SHAPE_TYPE.RECTANGLE=1 if fill_rgb: shape.fill.solid() shape.fill.fore_color.rgb = fill_rgb else: shape.fill.background() if line_rgb: shape.line.color.rgb = line_rgb shape.line.width = Pt(line_width_pt) else: shape.line.fill.background() return shape def add_tb(slide, x, y, w, h, text, size=18, bold=False, color=DARK_GREY, align=PP_ALIGN.LEFT, italic=False, wrap=True, v_anchor=None, margin=True): tb = slide.shapes.add_textbox(x, y, w, h) tf = tb.text_frame tf.word_wrap = wrap if not margin: tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0 if v_anchor: tf.vertical_anchor = v_anchor p = tf.paragraphs[0] p.alignment = align r = p.add_run() r.text = text r.font.name = "Calibri" r.font.size = Pt(size) r.font.bold = bold r.font.italic = italic r.font.color.rgb = color return tb def add_tb_lines(slide, x, y, w, h, lines, default_size=18, default_color=DARK_GREY, default_bold=False, align=PP_ALIGN.LEFT, wrap=True, margin=True, line_spacing=None): """ lines = list of (text, size, bold, color, italic) or just strings """ tb = slide.shapes.add_textbox(x, y, w, h) tf = tb.text_frame tf.word_wrap = wrap if not margin: tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = 0 first = True for item in lines: if isinstance(item, str): text, sz, bd, col, it = item, default_size, default_bold, default_color, False else: text = item[0] sz = item[1] if len(item)>1 else default_size bd = item[2] if len(item)>2 else default_bold col = item[3] if len(item)>3 else default_color it = item[4] if len(item)>4 else False if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() p.alignment = align if line_spacing: p.line_spacing = line_spacing r = p.add_run() r.text = text r.font.name = "Calibri" r.font.size = Pt(sz) r.font.bold = bd r.font.italic = it r.font.color.rgb = col return tb def add_bullet_box(slide, x, y, w, h, bullets, bullet_char="▸ ", size=16, color=DARK_GREY, bold_prefix=False, indent=0.15, line_spacing_pt=None): tb = slide.shapes.add_textbox(x, y, w, h) tf = tb.text_frame tf.word_wrap = True tf.margin_left = Inches(0.05) tf.margin_right = Inches(0.05) tf.margin_top = Inches(0.05) tf.margin_bottom= Inches(0.05) first = True for b in bullets: if first: p = tf.paragraphs[0] first = False else: p = tf.add_paragraph() p.alignment = PP_ALIGN.LEFT p.paragraph_format.left_margin = Inches(indent) p.paragraph_format.first_line_indent = Inches(-indent) if line_spacing_pt: p.line_spacing = Pt(line_spacing_pt) if isinstance(b, tuple): prefix, rest = b r1 = p.add_run() r1.text = bullet_char + prefix r1.font.name = "Calibri" r1.font.size = Pt(size) r1.font.bold = True r1.font.color.rgb = NAVY r2 = p.add_run() r2.text = rest r2.font.name = "Calibri" r2.font.size = Pt(size) r2.font.bold = False r2.font.color.rgb = color else: r = p.add_run() r.text = bullet_char + b r.font.name = "Calibri" r.font.size = Pt(size) r.font.bold = False r.font.color.rgb = color return tb def slide_header(slide, title, subtitle=None, bar_color=NAVY): # Top bar add_rect(slide, 0, 0, W, Inches(1.15), fill_rgb=bar_color) # Slide number strip at bottom add_rect(slide, 0, Inches(7.2), W, Inches(0.3), fill_rgb=MID_GREY) add_tb(slide, Inches(0.3), Inches(7.22), Inches(12.5), Inches(0.25), "Antibiotic-Related Medication Errors | ICU-to-Ward Transitions · Objective 3 Protocol", size=8, color=DARK_GREY, italic=True) # Title add_tb(slide, Inches(0.4), Inches(0.08), Inches(12.0), Inches(0.72), title, size=28, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) if subtitle: add_tb(slide, Inches(0.4), Inches(0.82), Inches(12.0), Inches(0.3), subtitle, size=13, color=RGBColor(0xBF, 0xD7, 0xFF), italic=True) def divider_line(slide, y, color=STEEL, width_pt=1.0): import pptx.shapes.connector as conn from pptx.util import Emu ln = slide.shapes.add_connector(1, Inches(0.4), y, Inches(12.93), y) ln.line.color.rgb = color ln.line.width = Pt(width_pt) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 1 — TITLE SLIDE # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) # Full dark background add_rect(slide, 0, 0, W, H, fill_rgb=NAVY) # Accent bar bottom add_rect(slide, 0, Inches(6.8), W, Inches(0.7), fill_rgb=STEEL) # Diagonal accent strip add_rect(slide, 0, Inches(6.2), W, Inches(0.08), fill_rgb=GOLD) add_tb(slide, Inches(0.8), Inches(0.8), Inches(11.7), Inches(0.5), "STUDY PROTOCOL", size=16, bold=True, color=GOLD, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(1.4), Inches(12.3), Inches(1.6), "Assessment of Antibiotic-Related Medication\nErrors During ICU-to-Ward Transitions", size=36, bold=True, color=WHITE, align=PP_ALIGN.CENTER, wrap=True) add_tb(slide, Inches(0.5), Inches(3.1), Inches(12.3), Inches(0.5), "Objective 3: Association with Adverse Patient Outcomes", size=20, bold=False, color=RGBColor(0xBF, 0xD7, 0xFF), align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(3.8), Inches(12.3), Inches(0.35), "Prospective Observational Cohort Study", size=16, italic=True, color=MID_GREY, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(6.85), Inches(12.3), Inches(0.35), "Version 1.0 | 19 July 2026 | [Institution Name] | Draft — For Ethical Review", size=12, color=MID_GREY, align=PP_ALIGN.CENTER) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 2 — PRESENTATION OUTLINE # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Presentation Outline") items = [ ("01", "Background & Problem Statement", "Why ICU-to-ward transitions are high-risk for antibiotic errors"), ("02", "Study Design Overview", "Design, setting, population and overall architecture"), ("03", "All Four Study Objectives", "Incidence · Predictors · Outcomes · Economic burden"), ("04", "Objective 3 — Scientific Rationale", "Clinical consequences of ARMEs and the evidence gap"), ("05", "Objective 3 — Outcome Measures", "Primary composite, secondary outcomes, subgroup analyses"), ("06", "Study Population & Data Collection", "Eligibility, pharmacist review, follow-up protocol"), ("07", "ARME Classification & Adjudication", "Error types, NCC MERP severity, MDT panel"), ("08", "Sample Size & Statistical Analysis", "Power calculation, regression, propensity scoring"), ("09", "Ethical Considerations", "Consent framework, duty of care, data governance"), ("10", "Significance & Expected Impact", "How findings will change clinical practice"), ] box_w = Inches(5.8) box_h = Inches(0.54) x_left = Inches(0.4) x_right = Inches(6.9) y_start = Inches(1.28) y_gap = Inches(0.565) for i, (num, title, sub) in enumerate(items): col = 0 if i < 5 else 1 row = i if i < 5 else i - 5 x = x_left if col == 0 else x_right y = y_start + row * y_gap # number box add_rect(slide, x, y, Inches(0.42), box_h, fill_rgb=NAVY) add_tb(slide, x, y, Inches(0.42), box_h, num, size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) # content box add_rect(slide, x+Inches(0.44), y, box_w-Inches(0.44), box_h, fill_rgb=WHITE, line_rgb=MID_GREY, line_width_pt=0.5) add_tb_lines(slide, x+Inches(0.52), y+Inches(0.04), box_w-Inches(0.55), box_h-Inches(0.08), [(title, 13, True, NAVY), (sub, 10, False, DARK_GREY)]) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 3 — BACKGROUND: ICU-to-Ward = High-Risk Interface # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Background: ICU-to-Ward — A High-Risk Medication Interface", subtitle="Antibiotic regimens are among the most complex to manage across care transitions") # Left: stat boxes stats = [ ("58%", "of ICU patients had ≥1 medication\nerror at transfer", "Wang et al., 2022\nn=1,546 patients"), ("18%", "had a confirmed reconciliation\nerror at ICU discharge", "Martínez Pradeda et al., 2023\nn=452 patients"), ("1.88", "medication errors per patient\nat ICU-to-ward transition", "Tully et al., 2019\nn=985 patients"), ] bx = Inches(0.35) by = Inches(1.35) bw = Inches(3.1) bh = Inches(1.55) bg = Inches(0.12) colors = [NAVY, STEEL, ACCENT] for i, (stat, desc, src) in enumerate(stats): add_rect(slide, bx, by + i*(bh+bg), bw, bh, fill_rgb=colors[i]) add_tb(slide, bx+Inches(0.08), by + i*(bh+bg)+Inches(0.1), bw-Inches(0.16), Inches(0.65), stat, size=36, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_tb(slide, bx+Inches(0.08), by + i*(bh+bg)+Inches(0.72), bw-Inches(0.16), Inches(0.52), desc, size=12, color=WHITE, align=PP_ALIGN.CENTER, wrap=True) add_tb(slide, bx+Inches(0.08), by + i*(bh+bg)+Inches(1.25), bw-Inches(0.16), Inches(0.25), src, size=9, color=MID_GREY, align=PP_ALIGN.CENTER, italic=True) # Divider add_rect(slide, Inches(3.6), Inches(1.3), Inches(0.04), Inches(5.6), fill_rgb=MID_GREY) # Right: antibiotic-specific facts add_tb(slide, Inches(3.82), Inches(1.3), Inches(9.1), Inches(0.35), "Why antibiotics are disproportionately affected:", size=15, bold=True, color=NAVY) bullets = [ "Anti-infectives are the 2nd most error-prone drug class at ICU transfers (14.84% of all errors)", "Beta-lactams account for 37.8% · Peptides (vancomycin, colistin) account for 23.7% of anti-infective errors", "Most common error types: Route of administration (37.9%) · Dose error (18.0%) · Frequency error (9.2%)", "De-escalation failure: broad-spectrum agents continued despite culture-guided narrow-spectrum options", "Narrow therapeutic index agents (vancomycin, aminoglycosides) require TDM — often not maintained on ward", "High-alert medications involved in 19.2% of reconciliation errors at ICU-to-ward transition", ] add_bullet_box(slide, Inches(3.82), Inches(1.72), Inches(9.1), Inches(4.7), bullets, size=14, color=DARK_GREY, line_spacing_pt=18) # Source note add_tb(slide, Inches(3.82), Inches(6.7), Inches(9.1), Inches(0.3), "Sources: Wang et al. BMJ Open Qual 2022; Martínez Pradeda et al. Farm Hosp 2023; Tully et al. Crit Care Med 2019", size=9, color=RGBColor(0x80,0x80,0x80), italic=True) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 4 — STUDY DESIGN OVERVIEW # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Overall Study Design", subtitle="Prospective Observational Cohort Study — 12 Months") # Design summary boxes (top row) design_items = [ ("Design", "Prospective\nObservational Cohort"), ("Setting", "Adult ICU(s)\nTertiary Care Hospital"), ("Duration", "12 Consecutive\nMonths"), ("Population", "ICU patients\nwith ≥1 antibiotic\nat time of transfer"), ("Target n", "400 eligible\nICU-to-ward\ntransfers"), ("Reporting", "STROBE\nGuidelines"), ] bw2 = Inches(1.95) bh2 = Inches(1.3) bx2 = Inches(0.35) bg2 = Inches(0.15) by2 = Inches(1.28) col_colors = [NAVY, NAVY, NAVY, STEEL, STEEL, STEEL] for i, (lbl, val) in enumerate(design_items): add_rect(slide, bx2 + i*(bw2+bg2), by2, bw2, Inches(0.35), fill_rgb=col_colors[i]) add_tb(slide, bx2 + i*(bw2+bg2), by2, bw2, Inches(0.35), lbl, size=11, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_rect(slide, bx2 + i*(bw2+bg2), by2+Inches(0.35), bw2, bh2-Inches(0.35), fill_rgb=WHITE, line_rgb=col_colors[i], line_width_pt=1.0) add_tb(slide, bx2 + i*(bw2+bg2)+Inches(0.06), by2+Inches(0.4), bw2-Inches(0.12), bh2-Inches(0.44), val, size=13, bold=True, color=col_colors[i], align=PP_ALIGN.CENTER, wrap=True) # Flow diagram: study flow flow_y = Inches(2.75) flow_boxes = [ (Inches(0.35), "SCREENING\nAll ICU transfers daily\n(pharmacist review)", NAVY), (Inches(3.05), "ENROLMENT\nEligibility confirmed\nConsent obtained", STEEL), (Inches(5.75), "BASELINE (Day 0)\nARME identification\n& classification", ACCENT), (Inches(8.45), "FOLLOW-UP\nDays 1–7 (daily)\nDays 14 & 30", TEAL), (Inches(11.15), "ANALYSIS\nOutcomes & cost\ndata linkage", GREEN_SOFT), ] fbw = Inches(2.45) fbh = Inches(1.55) for x, txt, col in flow_boxes: add_rect(slide, x, flow_y, fbw, fbh, fill_rgb=col) add_tb(slide, x+Inches(0.05), flow_y+Inches(0.05), fbw-Inches(0.1), fbh-Inches(0.1), txt, size=13, bold=False, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, wrap=True) # Arrows between boxes for i in range(4): ax = Inches(0.35) + i*(fbw + Inches(0.25)) + fbw + Inches(0.02) ay = flow_y + fbh/2 - Inches(0.02) add_tb(slide, ax, ay, Inches(0.22), Inches(0.25), "➜", size=18, color=GOLD, align=PP_ALIGN.CENTER) # 4 objectives row obj_y = Inches(4.52) obj_items = [ ("Objective 1", "Incidence, Severity\n& Preventability\nof ARMEs", NAVY), ("Objective 2", "Predictors of\nARMEs at\nICU Transfer", STEEL), ("Objective 3", "Association with\nAdverse Patient\nOutcomes ★", RED_SOFT), ("Objective 4", "Healthcare &\nEconomic\nBurden", GREEN_SOFT), ] obw = Inches(2.8) obh = Inches(1.7) obg = Inches(0.45) obx = Inches(0.65) for i, (title2, desc2, col2) in enumerate(obj_items): add_rect(slide, obx + i*(obw+obg), obj_y, obw, Inches(0.38), fill_rgb=col2) add_tb(slide, obx + i*(obw+obg), obj_y, obw, Inches(0.38), title2, size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_rect(slide, obx + i*(obw+obg), obj_y+Inches(0.38), obw, obh-Inches(0.38), fill_rgb=WHITE if col2!=RED_SOFT else RGBColor(0xFF,0xF0,0xF0), line_rgb=col2, line_width_pt=1.5) add_tb(slide, obx + i*(obw+obg)+Inches(0.08), obj_y+Inches(0.44), obw-Inches(0.16), obh-Inches(0.5), desc2, size=13, bold=(col2==RED_SOFT), color=col2, align=PP_ALIGN.CENTER, wrap=True) add_tb(slide, Inches(0.35), Inches(6.35), Inches(12.6), Inches(0.3), "★ This presentation focuses on Objective 3", size=11, italic=True, color=RED_SOFT) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 5 — OBJ 3 SCIENTIFIC RATIONALE # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Objective 3: Scientific Rationale", subtitle="How antibiotic errors at transition lead to patient harm — five distinct pathways") pathway_data = [ ("Treatment\nFailure", "Omission or interruption\nof effective therapy →\ninfection relapse / sepsis", RED_SOFT), ("Drug\nToxicity", "Vancomycin/aminoglycosides\nnot monitored → nephrotoxicity,\noterotoxicity, AKI", GOLD), ("Resistance\nSelection", "Inappropriate broad-spectrum\ncontinuation → MDR organisms,\nC. difficile infection", RGBColor(0x70,0x30,0xA0)), ("Allergy\nReaction", "Allergy record lost at\ntransfer → anaphylaxis\nor immune-mediated ADE", RGBColor(0x00,0x70,0x70)), ("Escalation\nFailure", "De-escalation not performed\nwhen culture data available →\nprolonged resistance pressure", RGBColor(0x80,0x40,0x00)), ] add_tb(slide, Inches(0.35), Inches(1.3), Inches(12.6), Inches(0.35), "Five Harm Pathways from ARMEs at ICU-to-Ward Transfer:", size=14, bold=True, color=NAVY) pw = Inches(2.35) ph = Inches(2.4) pg = Inches(0.18) px = Inches(0.35) py = Inches(1.72) for i, (name, desc, col) in enumerate(pathway_data): add_rect(slide, px + i*(pw+pg), py, pw, Inches(0.55), fill_rgb=col) add_tb(slide, px + i*(pw+pg), py, pw, Inches(0.55), name, size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_rect(slide, px + i*(pw+pg), py+Inches(0.55), pw, ph-Inches(0.55), fill_rgb=WHITE, line_rgb=col, line_width_pt=1.5) add_tb(slide, px + i*(pw+pg)+Inches(0.08), py+Inches(0.65), pw-Inches(0.16), ph-Inches(0.72), desc, size=13, color=DARK_GREY, align=PP_ALIGN.CENTER, wrap=True) # Evidence gap box add_rect(slide, Inches(0.35), Inches(4.3), Inches(12.63), Inches(0.04), fill_rgb=STEEL) add_rect(slide, Inches(0.35), Inches(4.42), Inches(12.63), Inches(1.6), fill_rgb=RGBColor(0xE8,0xEF,0xF8), line_rgb=STEEL, line_width_pt=1.0) add_tb(slide, Inches(0.55), Inches(4.48), Inches(2.2), Inches(0.4), "⚠ Evidence Gap:", size=14, bold=True, color=STEEL) add_tb(slide, Inches(0.55), Inches(4.88), Inches(12.1), Inches(1.1), "Bourne et al. (BMJ Quality & Safety, 2022) — the definitive systematic review on ICU transition medication safety — analysed 17 studies " "and found 88% were uncontrolled before-after designs. It explicitly called for prospective studies with rigorous outcome " "measurement and economic evaluation. No prospective cohort study has yet measured antibiotic-specific error outcomes with " "propensity-score-adjusted causal-inference methods.", size=12, color=DARK_GREY, wrap=True) add_tb(slide, Inches(0.35), Inches(6.1), Inches(12.63), Inches(0.35), "Supporting evidence: Resistant infections → excess LOS +7.4 days (95% CI 3.4–11.4) · OR mortality 1.84 (95% CI 1.19–2.87) · OR readmission 1.49 (95% CI 1.23–1.81)", size=11, italic=True, color=RED_SOFT) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 6 — OBJECTIVE 3 STATEMENT + HYPOTHESES # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Objective 3: Statement and Hypotheses") # Objective box add_rect(slide, Inches(0.35), Inches(1.28), Inches(12.63), Inches(1.3), fill_rgb=NAVY) add_tb(slide, Inches(0.55), Inches(1.33), Inches(12.2), Inches(0.3), "OBJECTIVE 3", size=12, bold=True, color=GOLD, align=PP_ALIGN.LEFT) add_tb(slide, Inches(0.55), Inches(1.63), Inches(12.2), Inches(0.88), "To assess the association between antibiotic-related medication errors (ARMEs) at ICU-to-ward " "transition and adverse patient outcomes, including clinical failure, ICU readmission, length of " "stay, in-hospital mortality, Clostridioides difficile infection, antimicrobial resistance emergence, " "and 30-day hospital readmission.", size=13, color=WHITE, wrap=True) # Hypotheses add_tb(slide, Inches(0.35), Inches(2.72), Inches(12.63), Inches(0.32), "Pre-Specified Hypotheses:", size=14, bold=True, color=NAVY) hyps = [ ("H₁ (Primary)", "Patients with ≥1 ARME have a significantly higher rate of the composite primary outcome " "(ADE + clinical failure + ICU readmission) within 30 days, after adjusting for baseline disease severity."), ("H₂", "Patients with ARMEs have significantly longer post-transfer ward length of stay after propensity score adjustment."), ("H₃", "Higher NCC MERP severity (Categories D–I) is positively associated with greater odds of adverse outcomes."), ("H₄", "Specific ARME types (omission, de-escalation failure, dose error, route error) differ in their association with specific outcomes."), ] hy = Inches(3.1) for i, (label, text) in enumerate(hyps): bg_col = RGBColor(0xF0,0xF4,0xFF) if i % 2 == 0 else WHITE add_rect(slide, Inches(0.35), hy + i*Inches(0.88), Inches(12.63), Inches(0.84), fill_rgb=bg_col, line_rgb=MID_GREY, line_width_pt=0.5) add_rect(slide, Inches(0.35), hy + i*Inches(0.88), Inches(1.1), Inches(0.84), fill_rgb=STEEL) add_tb(slide, Inches(0.35), hy + i*Inches(0.88), Inches(1.1), Inches(0.84), label, size=12, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_tb(slide, Inches(1.55), hy + i*Inches(0.88)+Inches(0.08), Inches(11.3), Inches(0.72), text, size=13, color=DARK_GREY, wrap=True) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 7 — OUTCOME MEASURES # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Objective 3: Outcome Measures", subtitle="Primary composite endpoint + 7 pre-defined secondary outcomes") # Primary outcome header add_rect(slide, Inches(0.35), Inches(1.28), Inches(12.63), Inches(0.38), fill_rgb=RED_SOFT) add_tb(slide, Inches(0.4), Inches(1.28), Inches(12.5), Inches(0.38), "PRIMARY OUTCOME — Composite Endpoint (within 30 days of ICU-to-ward transfer):", size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) # 3 components comp_data = [ ("① Antibiotic-Related ADE", "Clinically documented adverse event causally\nlinked to ARME (Naranjo score ≥5)\nNCC MERP Category D or above"), ("② Clinical Failure", "Persistent/worsening infection requiring\nantibiotic escalation, addition of new agent,\nor recommencement of stopped antibiotic"), ("③ Unplanned ICU Readmission", "Readmission to any ICU within 30 days\nof index ICU-to-ward transfer,\nfor any reason"), ] cw = Inches(3.85) ch = Inches(1.55) cx = Inches(0.35) cy = Inches(1.72) for i, (title3, desc3) in enumerate(comp_data): add_rect(slide, cx + i*(cw+Inches(0.18)), cy, cw, ch, fill_rgb=RGBColor(0xFF,0xF0,0xF0), line_rgb=RED_SOFT, line_width_pt=1.5) add_tb(slide, cx + i*(cw+Inches(0.18))+Inches(0.08), cy+Inches(0.06), cw-Inches(0.16), Inches(0.38), title3, size=12, bold=True, color=RED_SOFT) add_tb(slide, cx + i*(cw+Inches(0.18))+Inches(0.08), cy+Inches(0.45), cw-Inches(0.16), Inches(1.02), desc3, size=11, color=DARK_GREY, wrap=True) # Secondary outcomes header add_rect(slide, Inches(0.35), Inches(3.42), Inches(12.63), Inches(0.35), fill_rgb=STEEL) add_tb(slide, Inches(0.4), Inches(3.42), Inches(12.5), Inches(0.35), "SECONDARY OUTCOMES:", size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) # 7 secondary outcomes in 2 cols sec_outcomes = [ ("Post-transfer LOS (days)", "Transfer → discharge/death", "Until discharge"), ("In-hospital mortality", "Death during index admission", "Until discharge"), ("30-day all-cause mortality", "Death from any cause ≤30 days", "Day 30"), ("C. difficile infection (CDI)", "New positive CDI assay + clinical syndrome", "During admission"), ("MDR organism emergence", "New MDR isolate absent in pre-transfer cultures", "During admission"), ("Antibiotic-associated nephrotoxicity", "AKI (KDIGO ≥1) attributed to vancomycin / aminoglycoside / colistin", "Days 1–14"), ("30-day hospital readmission", "Unplanned readmission post-discharge", "Day 30"), ] sw = Inches(6.0) sh = Inches(0.5) sx1 = Inches(0.35) sx2 = Inches(6.7) sy = Inches(3.84) sg = Inches(0.04) for i, (name3, defn3, tp3) in enumerate(sec_outcomes): col2 = 0 if i < 4 else 1 row2 = i if i < 4 else i - 4 sx = sx1 if col2 == 0 else sx2 sy2 = sy + row2*(sh+sg) bg2 = RGBColor(0xF2,0xF2,0xF2) if row2 % 2 == 0 else WHITE add_rect(slide, sx, sy2, sw, sh, fill_rgb=bg2, line_rgb=MID_GREY, line_width_pt=0.3) add_rect(slide, sx, sy2, Inches(0.18), sh, fill_rgb=STEEL) add_tb_lines(slide, sx+Inches(0.22), sy2+Inches(0.04), sw-Inches(0.25), sh-Inches(0.08), [(name3, 11, True, NAVY), (" " + defn3, 10, False, DARK_GREY)], line_spacing=Pt(14)) add_tb(slide, sx+sw-Inches(1.1), sy2+Inches(0.12), Inches(1.05), Inches(0.28), tp3, size=9, italic=True, color=RGBColor(0x70,0x70,0x70), align=PP_ALIGN.RIGHT) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 8 — STUDY POPULATION & ARME CLASSIFICATION # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Study Population & ARME Classification Framework") # Left: eligibility add_rect(slide, Inches(0.35), Inches(1.28), Inches(5.8), Inches(0.38), fill_rgb=NAVY) add_tb(slide, Inches(0.4), Inches(1.28), Inches(5.7), Inches(0.38), "Inclusion Criteria", size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) inc = ["Age ≥18 years", "Adult medical, surgical or mixed ICU", "Transfer to a general ward (not HDU/step-down)", "≥1 systemic antibiotic active at time of transfer", "Expected ward stay ≥24 hours post-transfer"] add_bullet_box(slide, Inches(0.35), Inches(1.7), Inches(5.8), Inches(1.7), inc, size=13, color=DARK_GREY, bullet_char="✓ ", indent=0.2) add_rect(slide, Inches(0.35), Inches(3.52), Inches(5.8), Inches(0.38), fill_rgb=RED_SOFT) add_tb(slide, Inches(0.4), Inches(3.52), Inches(5.7), Inches(0.38), "Exclusion Criteria", size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) exc = ["Transfer to HDU / step-down / another ICU", "ICU readmission within 24 hours of transfer", "Palliative / comfort-only care status", "Enrolled in concurrent interventional drug trial", "Transfer to different hospital (no follow-up feasible)"] add_bullet_box(slide, Inches(0.35), Inches(3.94), Inches(5.8), Inches(1.7), exc, size=13, color=DARK_GREY, bullet_char="✗ ", indent=0.2) # Right: ARME types add_rect(slide, Inches(6.4), Inches(1.28), Inches(6.58), Inches(0.38), fill_rgb=STEEL) add_tb(slide, Inches(6.45), Inches(1.28), Inches(6.45), Inches(0.38), "8 ARME Categories — NCC MERP Severity (A–I)", size=13, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) arme_types = [ ("Omission", "Antibiotic not prescribed on ward without documented justification"), ("Commission", "New antibiotic started without clear indication at transfer"), ("Dose error", "Wrong dose not accounted for by renal/hepatic adjustment"), ("Frequency error", "Dosing interval changed without clinical justification"), ("Route error", "IV not switched to oral when switch criteria met (or vice versa)"), ("Duration error", "No stop date, review date or treatment duration documented"), ("De-escalation failure", "Broad-spectrum agent not narrowed despite culture data"), ("Allergy-related", "Antibiotic prescribed to patient with documented allergy"), ] aw = Inches(6.58) ah = Inches(0.52) ax3 = Inches(6.4) ay3 = Inches(1.7) ag3 = Inches(0.03) row_colors = [RGBColor(0xE8,0xEF,0xF8), WHITE] for i, (atype, adesc) in enumerate(arme_types): add_rect(slide, ax3, ay3 + i*(ah+ag3), aw, ah, fill_rgb=row_colors[i%2], line_rgb=MID_GREY, line_width_pt=0.3) add_rect(slide, ax3, ay3 + i*(ah+ag3), Inches(1.85), ah, fill_rgb=STEEL if i%2==0 else RGBColor(0x5B,0x85,0xB5)) add_tb(slide, ax3+Inches(0.06), ay3 + i*(ah+ag3)+Inches(0.08), Inches(1.75), ah-Inches(0.1), atype, size=11, bold=True, color=WHITE) add_tb(slide, ax3+Inches(1.9), ay3 + i*(ah+ag3)+Inches(0.08), aw-Inches(1.95), ah-Inches(0.1), adesc, size=11, color=DARK_GREY) # NCC MERP severity legend add_rect(slide, Inches(0.35), Inches(5.72), Inches(5.8), Inches(0.35), fill_rgb=NAVY) add_tb(slide, Inches(0.4), Inches(5.72), Inches(5.7), Inches(0.35), "NCC MERP Severity · Clinically Significant = D–I", size=12, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) ncc_items = [ ("A–C", "Near miss / No harm to patient", RGBColor(0xD9,0xD9,0xD9), DARK_GREY), ("D", "Reached patient — monitoring required", RGBColor(0xFF,0xFF,0xCC), DARK_GREY), ("E–F", "Temporary harm / hospitalisation", RGBColor(0xFF,0xCC,0x99), DARK_GREY), ("G–I", "Permanent harm / Death", RGBColor(0xFF,0x80,0x80), WHITE), ] nw = Inches(1.35) nx3 = Inches(0.35) ny3 = Inches(6.1) for i, (cat2, desc2, bg3, fg3) in enumerate(ncc_items): add_rect(slide, nx3 + i*(nw+Inches(0.06)), ny3, nw, Inches(0.7), fill_rgb=bg3, line_rgb=MID_GREY, line_width_pt=0.5) add_tb(slide, nx3 + i*(nw+Inches(0.06))+Inches(0.04), ny3+Inches(0.04), nw-Inches(0.08), Inches(0.3), cat2, size=14, bold=True, color=RED_SOFT if cat2=="G–I" else NAVY, align=PP_ALIGN.CENTER) add_tb(slide, nx3 + i*(nw+Inches(0.06))+Inches(0.04), ny3+Inches(0.35), nw-Inches(0.08), Inches(0.32), desc2, size=9, color=DARK_GREY, align=PP_ALIGN.CENTER, wrap=True) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 9 — DATA COLLECTION TIMELINE # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Data Collection & Follow-Up Timeline", subtitle="Prospective pharmacist-led review from transfer through 30 days") # Timeline bar tl_y = Inches(3.2) tl_x1 = Inches(0.7) tl_x2 = Inches(12.63) add_rect(slide, tl_x1, tl_y + Inches(0.18), tl_x2-tl_x1, Inches(0.14), fill_rgb=STEEL) time_points = [ (0.0, "Day 0\n(Transfer)", NAVY, ["ICU Rx vs Ward Rx reconciliation", "ARME identification & classification", "Microbiology data linkage", "Renal/hepatic function capture", "Demographics & baseline variables"]), (0.28, "Days 1–7\n(Daily)", ACCENT, ["Daily chart review", "Clinical status monitoring", "New culture results", "Antibiotic changes documented", "ADE surveillance (daily)"]), (0.55, "Day 14\n(Review)", TEAL, ["Clinical failure assessment", "CDI assay check", "MDR organism isolation", "AKI documentation", "Outcome data entry in REDCap"]), (0.82, "Day 30\n(Final)", RED_SOFT, ["Primary composite outcome", "30-day mortality", "30-day hospital readmission", "Cost data linkage", "Case closure"]), ] for frac, label2, col3, tasks2 in time_points: tx = tl_x1 + frac * (tl_x2 - tl_x1) # dot add_rect(slide, tx-Inches(0.17), tl_y+Inches(0.08), Inches(0.34), Inches(0.34), fill_rgb=col3) # label above add_tb(slide, tx-Inches(1.1), tl_y-Inches(0.65), Inches(2.2), Inches(0.55), label2, size=13, bold=True, color=col3, align=PP_ALIGN.CENTER, wrap=True) # task list below task_box_h = Inches(0.36) * len(tasks2) + Inches(0.15) add_rect(slide, tx-Inches(1.3), tl_y+Inches(0.62), Inches(2.6), task_box_h, fill_rgb=WHITE, line_rgb=col3, line_width_pt=1.0) add_rect(slide, tx-Inches(1.3), tl_y+Inches(0.62), Inches(2.6), Inches(0.25), fill_rgb=col3) add_tb(slide, tx-Inches(1.3), tl_y+Inches(0.62), Inches(2.6), Inches(0.25), "DATA COLLECTED", size=9, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_bullet_box(slide, tx-Inches(1.22), tl_y+Inches(0.92), Inches(2.44), task_box_h-Inches(0.32), tasks2, size=10, color=DARK_GREY, bullet_char="• ", indent=0.1, line_spacing_pt=16) # REDCap note add_rect(slide, Inches(4.2), Inches(6.4), Inches(4.93), Inches(0.5), fill_rgb=RGBColor(0xE8,0xF4,0xFF), line_rgb=ACCENT, line_width_pt=1.0) add_tb(slide, Inches(4.3), Inches(6.42), Inches(4.73), Inches(0.46), "All data captured in REDCap (encrypted, pseudonymised, audit-trailed)", size=12, color=ACCENT, align=PP_ALIGN.CENTER, italic=True) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 10 — SAMPLE SIZE & STATISTICAL ANALYSIS # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Sample Size & Statistical Analysis Plan", subtitle="Powered for the composite primary outcome — propensity-score causal inference framework") # Sample size box add_rect(slide, Inches(0.35), Inches(1.28), Inches(4.05), Inches(4.1), fill_rgb=NAVY) add_tb(slide, Inches(0.45), Inches(1.32), Inches(3.85), Inches(0.38), "SAMPLE SIZE", size=14, bold=True, color=GOLD) ss_lines = [ ("Expected ARME prevalence:", 12, True, WHITE), ("~40% (range 18–58% in literature)", 13, False, MID_GREY), ("", 8, False, WHITE), ("Composite outcome rate — no ARME:", 12, True, WHITE), ("15% (background rate)", 13, False, MID_GREY), ("", 8, False, WHITE), ("Target OR to detect:", 12, True, WHITE), ("2.5 (clinically meaningful)", 13, False, MID_GREY), ("", 8, False, WHITE), ("Power: 80% | α: 0.05 (two-tailed)", 12, True, GOLD), ("", 8, False, WHITE), ("Required n:", 12, True, WHITE), ("340 patients", 13, False, MID_GREY), ("+15% attrition → n = 392", 12, False, MID_GREY), ("", 8, False, WHITE), ("TARGET ENROLMENT", 13, True, GOLD), ("400 ICU-to-ward transfers", 15, True, WHITE), ] add_tb_lines(slide, Inches(0.45), Inches(1.75), Inches(3.85), Inches(3.55), ss_lines) # Analysis methods add_rect(slide, Inches(4.6), Inches(1.28), Inches(8.38), Inches(0.38), fill_rgb=STEEL) add_tb(slide, Inches(4.65), Inches(1.28), Inches(8.25), Inches(0.38), "Statistical Methods — 5-Layer Approach", size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) methods = [ ("1", "Descriptive Statistics", "Mean ± SD or median (IQR) · Chi-squared / Fisher's exact · Standardised Mean Differences (SMDs)"), ("2", "Multivariable Logistic Regression", "Primary outcome (binary) · A priori confounders: APACHE II, CCI, renal function, ICU LOS, antibiotic count · aOR + 95% CI"), ("3", "Propensity Score Matching", "1:1 nearest-neighbour matching (caliper 0.2 SD) · Balance assessed by SMD <0.10 · Conditional logistic regression on matched cohort"), ("4", "Competing-Risks Survival (LOS)", "Fine-Gray subdistribution hazard model · In-hospital death = competing event · SHR + 95% CI reported"), ("5", "Sensitivity Analyses", "Complete-case analysis · MICE multiple imputation (m=20) · IPTW (ATE) · Alternative exposure definitions"), ] my = Inches(1.72) for num2, mname, mdesc in methods: add_rect(slide, Inches(4.6), my, Inches(8.38), Inches(0.93), fill_rgb=RGBColor(0xF0,0xF4,0xFF) if int(num2)%2==1 else WHITE, line_rgb=MID_GREY, line_width_pt=0.3) add_rect(slide, Inches(4.6), my, Inches(0.4), Inches(0.93), fill_rgb=STEEL) add_tb(slide, Inches(4.6), my, Inches(0.4), Inches(0.93), num2, size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE, margin=False) add_tb(slide, Inches(5.05), my+Inches(0.06), Inches(7.85), Inches(0.3), mname, size=12, bold=True, color=NAVY) add_tb(slide, Inches(5.05), my+Inches(0.35), Inches(7.85), Inches(0.5), mdesc, size=11, color=DARK_GREY, wrap=True) my += Inches(0.97) add_tb(slide, Inches(4.6), Inches(6.62), Inches(8.38), Inches(0.3), "Software: R (≥4.3) — packages: MatchIt · twang · cmprsk · mice | All scripts pre-registered", size=10, italic=True, color=RGBColor(0x60,0x60,0x60)) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 11 — ETHICAL CONSIDERATIONS # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Ethical Considerations", subtitle="Three-tier consent framework · Duty of care protocol · Data governance") eth_sections = [ ("Consent Framework", NAVY, [ ("Tier 1 — Capable patients:", " Written informed consent; 24-hour cooling-off period"), ("Tier 2 — Temporarily incapacitated:", " Surrogate/next-of-kin consent; deferred patient consent on recovery"), ("Tier 3 — Waiver (if REC approved):", " Observational chart review only; no more than minimal risk; group-level reporting"), ]), ("Duty of Care", RED_SOFT, [ ("Error notification:", " Clinically significant ARMEs (NCC MERP ≥D) notified to treating team within 4 hours"), ("Response recorded:", " Team response (corrected / partial / no action + reason) documented as secondary data"), ("Error classification unchanged:", " Notification does not alter the ARME classification for analysis"), ]), ("Data Governance", GREEN_SOFT, [ ("Pseudonymisation:", " Patient identifiers stored in separate master-link file — analysis dataset is ID-only"), ("Storage:", " REDCap on ISO 27001-compliant institutional servers; TLS 1.2+ encrypted transfers"), ("Retention:", " Minimum 10 years post-publication per institutional research governance policy"), ]), ("Risk to Participants", TEAL, [ ("Non-interventional:", " No experimental drug, device or procedure involved"), ("Minimal risk:", " Chart review only; pharmacist notification is clinically beneficial"), ("Reporting:", " De-identified aggregate results only in all publications"), ]), ] ew = Inches(5.9) eh_start = Inches(1.28) eg = Inches(0.18) positions = [(Inches(0.35), eh_start), (Inches(6.63), eh_start), (Inches(0.35), Inches(4.18)), (Inches(6.63), Inches(4.18))] for idx, (sec_title, col4, items4) in enumerate(eth_sections): ex, ey = positions[idx] add_rect(slide, ex, ey, ew, Inches(0.38), fill_rgb=col4) add_tb(slide, ex+Inches(0.1), ey, ew-Inches(0.2), Inches(0.38), sec_title, size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) add_rect(slide, ex, ey+Inches(0.38), ew, Inches(2.45), fill_rgb=WHITE, line_rgb=col4, line_width_pt=1.0) by_item = ey+Inches(0.48) for prefix3, rest3 in items4: add_tb_lines(slide, ex+Inches(0.12), by_item, ew-Inches(0.2), Inches(0.65), [(prefix3, 12, True, col4), (rest3, 12, False, DARK_GREY)]) by_item += Inches(0.72) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 12 — SIGNIFICANCE & EXPECTED IMPACT # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=LIGHT_GREY) slide_header(slide, "Significance & Expected Impact", subtitle="From evidence gap to clinical practice change") # Left: what the study will demonstrate add_rect(slide, Inches(0.35), Inches(1.28), Inches(6.1), Inches(0.38), fill_rgb=NAVY) add_tb(slide, Inches(0.4), Inches(1.28), Inches(6.0), Inches(0.38), "What This Study Will Provide", size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) will_provide = [ "First prospective cohort data on ARME-specific patient outcomes at ICU-to-ward transition", "Propensity-score-adjusted outcome estimates to minimise confounding by severity of illness", "Quantification of which error types (omission, de-escalation failure, dose/route errors) carry greatest clinical harm", "Antibiotic-specific outcome data: beta-lactams vs. glycopeptides vs. carbapenems vs. aminoglycosides", "Evidence base for pharmacist-led reconciliation interventions at ICU discharge", ] add_bullet_box(slide, Inches(0.35), Inches(1.7), Inches(6.1), Inches(3.2), will_provide, size=13, color=DARK_GREY, line_spacing_pt=19) # Right: expected impact add_rect(slide, Inches(6.8), Inches(1.28), Inches(6.18), Inches(0.38), fill_rgb=GREEN_SOFT) add_tb(slide, Inches(6.85), Inches(1.28), Inches(6.05), Inches(0.38), "Expected Clinical & Policy Impact", size=14, bold=True, color=WHITE, v_anchor=MSO_ANCHOR.MIDDLE) impact_items = [ ("Patient safety:", " Justify mandatory pharmacist reconciliation at ICU discharge"), ("Antimicrobial stewardship:", " Standardise de-escalation documentation at ICU transfer"), ("Hospital policy:", " Drive structured ICU discharge summaries with antibiotic review"), ("Cost-effectiveness:", " Provide outcome data to model cost-benefit of reconciliation services"), ("Research:", " Supply propensity-matched outcome estimates for future RCT sample-size calculations"), ] by_imp = Inches(1.7) for pref4, rest4 in impact_items: add_tb_lines(slide, Inches(6.8), by_imp, Inches(6.18), Inches(0.58), [(pref4, 12, True, GREEN_SOFT), (rest4, 12, False, DARK_GREY)]) by_imp += Inches(0.6) # Bottom: key references add_rect(slide, Inches(0.35), Inches(5.05), Inches(12.63), Inches(0.04), fill_rgb=MID_GREY) add_tb(slide, Inches(0.35), Inches(5.12), Inches(12.63), Inches(0.28), "Key Evidence Base:", size=12, bold=True, color=NAVY) refs3 = [ "Bourne et al. BMJ Qual Saf 2022 (PMID 35042765) · Wang et al. BMJ Open Qual 2022 (PMC9013992) · Martínez Pradeda et al. Farm Hosp 2023 (PMID 37059685)", "Tully et al. Crit Care Med 2019 · Economic burden of AMR — Systematic Review 2023 (PMC10166566) · NCC MERP Index 2001", ] for i3, ref3 in enumerate(refs3): add_tb(slide, Inches(0.35), Inches(5.44) + i3*Inches(0.38), Inches(12.63), Inches(0.35), ref3, size=10, italic=True, color=RGBColor(0x50,0x50,0x50)) # Call to action box add_rect(slide, Inches(0.35), Inches(6.28), Inches(12.63), Inches(0.68), fill_rgb=NAVY) add_tb(slide, Inches(0.5), Inches(6.32), Inches(12.4), Inches(0.58), "This prospective cohort study will generate the high-quality outcome evidence that Bourne et al. explicitly identified as " "lacking — enabling evidence-based, costed interventions to protect patients at the critical moment of ICU-to-ward transfer.", size=13, bold=False, color=WHITE, wrap=True, v_anchor=MSO_ANCHOR.MIDDLE) # ═══════════════════════════════════════════════════════════════════════════════ # SLIDE 13 — THANK YOU / QUESTIONS # ═══════════════════════════════════════════════════════════════════════════════ slide = prs.slides.add_slide(blank) add_rect(slide, 0, 0, W, H, fill_rgb=NAVY) add_rect(slide, 0, Inches(6.55), W, Inches(0.95), fill_rgb=STEEL) add_rect(slide, 0, Inches(6.25), W, Inches(0.08), fill_rgb=GOLD) add_tb(slide, Inches(0.5), Inches(1.6), Inches(12.33), Inches(0.6), "Thank You", size=48, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(2.3), Inches(12.33), Inches(0.45), "Questions & Discussion", size=26, color=GOLD, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(3.1), Inches(12.33), Inches(0.45), "Assessment of Antibiotic-Related Medication Errors During ICU-to-Ward Transitions", size=16, italic=True, color=MID_GREY, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(3.6), Inches(12.33), Inches(0.35), "Objective 3: Association with Adverse Patient Outcomes · Prospective Cohort Study Protocol", size=14, color=MID_GREY, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(4.4), Inches(12.33), Inches(0.35), "Contact:", size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(4.75), Inches(12.33), Inches(0.35), "[PI Name] · [Department, Institution] · [email@institution.edu]", size=14, color=MID_GREY, align=PP_ALIGN.CENTER) add_tb(slide, Inches(0.5), Inches(6.58), Inches(12.33), Inches(0.35), "Protocol v1.0 | 19 July 2026 | Draft — For Ethical Review Submission | Protocol registered on ClinicalTrials.gov (pending)", size=11, color=MID_GREY, align=PP_ALIGN.CENTER) # ───────────────────────────────────────────────────────────────────────────── out = "/tmp/workspace/obj3-protocol/Objective3_Study_Design_Presentation.pptx" buf = BytesIO() prs.save(buf) with open(out, "wb") as f: f.write(buf.getvalue()) print(f"SUCCESS: {out}") PYEOF python3 /tmp/workspace/obj3-protocol/build_deck.py

Editing File

~/obj3-protocol/build_deck.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/obj3-protocol/build_deck.py'
Running Command

python3 /tmp/workspace/obj3-protocol/build_deck.py 2>&1

Running Command

ls -lh /tmp/workspace/obj3-protocol/*.pptx && python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/obj3-protocol/Objective3_Study_Design_Presentation.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [s.text_frame.text.split()[0:5] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] print(f' Slide {i}: {texts[0] if texts else \"(empty)\"}') "

All 13 slides built and verified. Here is your download link:

Objective3 Study Design Presentation

Presentation · PPTX


What's Inside — 13 Slides (16:9 Widescreen)

The deck uses a professional navy/steel/gold colour scheme with Calibri typography throughout.
SlideTitleKey Visual
1Title SlideDark navy hero with gold accent bar
2Presentation Outline10-item numbered grid (two columns)
3Background: High-Risk InterfaceThree stat boxes (58%, 18%, 1.88 errors) + 6 antibiotic-specific bullets
4Overall Study Design6 design summary boxes + 5-step flow diagram + 4 objective panels (Obj 3 highlighted in red)
5Objective 3: Scientific RationaleFive colour-coded harm pathway panels + evidence gap callout box
6Objective 3: Statement & HypothesesObjective statement box + H₁–H₄ banded hypothesis table
7Outcome MeasuresComposite primary outcome (3 components) + 7 secondary outcomes table
8Study Population & ARME ClassificationInclusion/exclusion criteria + 8-category ARME error type table + NCC MERP severity legend
9Data Collection Timeline4-point timeline (Day 0 → Days 1–7 → Day 14 → Day 30) with task lists per time point
10Sample Size & Statistical AnalysisSample size parameter box + 5-method statistical approach table
11Ethical ConsiderationsFour-panel grid: consent framework · duty of care · data governance · risk
12Significance & Expected ImpactImpact bullets + call-to-action closing box with Bourne et al. citation
13Thank You / QuestionsDark close slide with contact details

rewrite the protocol including sspa as the statistical analysis method , and proper literature review and citation

Searching PubMed

antibiotic medication errors ICU transition outcomes mortality readmission

Searching PubMed

medication reconciliation ICU discharge adverse drug events outcomes

Searching the Web

SSPA statistical software sample size power analysis observational study clinical protocol methodology

Searching PubMed

medication errors ICU transition care patient safety pharmacist

Searching PubMed

antibiotic adverse drug events hospital outcomes length of stay mortality

Searching PubMed

antimicrobial stewardship ICU de-escalation clinical outcomes prospective

Searching the Web

PASS SSPA "sample size and power analysis" software clinical observational cohort study protocol 2023 2024

Reading Article

PMID: 35042765

Reading Article

PMID: 35731853

Searching PubMed

medication error preventable adverse drug event hospital economic cost

Searching PubMed

vancomycin aminoglycoside nephrotoxicity ICU monitoring outcomes

Searching PubMed

Clostridioides difficile antibiotic associated infection ICU hospital risk

Reading Article

PMID: 34611721

Reading Article

PMID: 37059685

Searching the Web

Wang 2022 "medication errors" ICU transfer BMJ Open Quality incidence anti-infective beta-lactam

redesign the protocol which should contain literature review , proper sspa analytical system , and citation

Searching PubMed

medication errors ICU intensive care unit incidence types prevalence

Searching PubMed

antibiotic adverse drug events outcomes ICU hospital mortality length of stay

Searching PubMed

medication reconciliation transition of care hospital patient safety

Searching the Web

SSPA "sample size and power analysis" PASS software protocol clinical research methodology logistic regression two proportions

Reading Article

PMID: 40392264

Reading Article

PMID: 30136718

Reading Article

PMID: 31410745

Searching PubMed

antimicrobial resistance economic burden hospital length of stay mortality readmission

Reading Article

PMID: 37155660

Reading Article

PMID: 33570331

Searching PubMed

prospective cohort study antibiotic prescribing errors clinical pharmacist hospital

Searching the Web

Tully 2019 medication errors ICU transition care "critical care medicine" PMID pharmacist

can you create a documentation form to collect the required data for the research analysis

Running Command

ls -la /tmp/workspace/obj3-protocol/

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.