DGIN 5401

Operationalized Machine Learning in Healthcare

Author

Frank Rudzicz · Faculty of Computer Science · Dalhousie University

Modified

September 1, 2026

Operationalizing machine learning in healthcare requires more than training an accurate model.

This course examines the chain from clinical purpose and care processes to data, study design, modelling, evaluation, workflow, deployment, monitoring, and accountable use.

Course information

Term
Fall 2026

Instructor
Frank Rudzicz

Class meeting
Thursdays, 17h30-20h30

Course communication
MS Teams for registered students

2026 syllabus

The syllabus describes course logistics, assessment, university policies, and current dates.

Syllabus

This public page is the course map and quick-start guide. Current announcements, topic registration, presenter assignments, submissions, and private class work remain in MS Teams or the private studio repository.

AIRO-Sim Project

The organizing project for DGIN 5401

Project in one sentence

The class will build and study a shared, transparent cardiac-surgery risk system using fully synthetic AIRO-Sim data. Each student will lead a distinct research question, steward a shared artefact, and submit an individual research paper; the class will also produce a concise shared system dossier and an integrated demonstration.

Fully synthetic — not for clinical use

AIRO-Sim contains no patient-level Maritime Heart Centre or AIRO data. Course findings may support claims about analyses performed on AIRO-Sim, but they do not establish clinical validity, safety, effectiveness, or other real-world benefit.

Start here

Course Project Handbook

Project purpose, question allocation, checkpoints, assessment, individual and shared responsibilities, repository practice, and final deliverables.

Open the handbook

AIRO-Sim Technical Brief

Release-specific tables, joins, prediction snapshots, outcome construction, partitions, text use, system interfaces, monitoring, and final checks.

Open the technical brief

AIRO-Sim v1.0.0

The frozen public student release, including source files, metadata, documentation, checksums, and starter scripts.

Open the tagged release

Private studio repository

Class code, versioned contracts, shared artefacts, issues, reviews, models, case-viewer work, and integration. Access details will be posted in MS Teams.

Registered students · link in Teams

Individual studies and the shared system

Each student produces

  • one unique research question;
  • decisive empirical or computational evidence;
  • an independently written research paper;
  • reproducible code;
  • an oral presentation and defence;
  • stewardship of at least one shared artefact.

The class produces

  • versioned empirical setups;
  • a reproducible T0 pipeline with a transparent baseline;
  • a saved model and documented inference interface;
  • a synthetic-case viewer;
  • a locally runnable package or container;
  • a monitoring demonstration;
  • a data statement, model/system card, and shared dossier.

Leadership means accountability, not exclusivity. Shared data, code, interfaces, and scientific ideas remain available to the class; reuse and dependencies must be attributed.

Shared-system backbone

The final shared system should be more substantial than a research notebook and much smaller than a clinical deployment. At minimum, it must make the following available:

  1. the cohort, outcome, snapshot, features, and splits;
  2. a transparent T0 baseline and reproducible modelling pipeline;
  3. saved preprocessing, model, calibration, and threshold artefacts as applicable;
  4. a batch-inference interface;
  5. a case viewer that makes prediction time, permitted data, provenance, and potential explanations and actions visible;
  6. a local Docker- or Podman-compatible deployment;
  7. monitoring with at least one data-quality signal and one model-behaviour signal; and
  8. a concise dossier recording versions, acceptance checks, evidence, limitations, and contributions.
Date Milestone Main product or decision
10–16 September 2026 Explore Review the project map, brief, dictionary, sample cases, outcomes, and dependencies
16 September 2026 Ranked interests due Research interests and stewardship preferences
18 September 2026 Outcome and provisional leads Outcome-contract draft, leads, stewards, backups, and dependencies
21 September 2026 Question card due Confirmable question, evidence plan, risks, dependencies, and fallback
24 September 2026 Stage 1 Proposal and initial system boundary
8 October 2026 Stage 2 Literature synthesis and shared evidence map
22 October 2026 Stage 3 Dataset analysis and frozen T0 contracts
26 October 2026 Rescope requests due Justified revision after the data audit, where necessary
29 October 2026 Design review and scope lock Feasibility, acceptance checks, comparators, and dependencies
5 November 2026 Stage 4 Reproducible methods and runnable T0 baseline
19 November 2026 Evidence review Preliminary evidence, failures, and decisive remaining analysis
26 November 2026 Stage 5 Experiments, integrated demonstration candidate, and dossier draft
3 December 2026 Presentations Individual talks and integrated demonstration
9 December 2026 Stage 6 Final paper, reproducibility package, tagged system, and shared dossier

The final syllabus and MS Teams should be treated as the current source for any later schedule change.

AIRO-Sim: obtain, verify, and begin

The course dataset

Release at a glance

8,000 synthetic operations

7,500 synthetic patients

20,000 synthetic notes

2018–2025 synthetic calendar years

The release provides compressed CSV tables, a SQLite database, longitudinal events, naturalistic synthetic notes, reference partitions, sample cases, metadata, documentation, and starter validation/loading scripts. It was built most directly around postoperative delirium and also contains superficial and deep sternal-infection outcomes that may support a class-selected alternative task.

Release documentation

Obtain AIRO-Sim

Use the frozen tag airo-sim-v1.0.0 for course work and record that version in every derived artefact.

  1. Open the AIRO-Sim v1.0.0 release.
  2. Under Assets, download Source code (zip) or Source code (tar.gz).
  3. Extract the archive.
  4. Open a terminal in the extracted directory containing PACKAGE_SHA256SUMS.txt, data/, docs/, metadata/, and starter/.
git clone \
  --branch airo-sim-v1.0.0 \
  --depth 1 \
  https://github.com/Dalhousie-A2I2/AIRO-Sim.git

cd AIRO-Sim

Cloning the tag normally leaves the checkout in a detached-HEAD state. That is appropriate for a frozen data release. Keep project code and derived data in the private studio repository rather than editing the release in place.

Verify the package

Run the checksum command from the release root.

shasum -a 256 -c PACKAGE_SHA256SUMS.txt
sha256sum -c PACKAGE_SHA256SUMS.txt
$failed = $false

Get-Content PACKAGE_SHA256SUMS.txt | ForEach-Object {
    if ($_ -match '^([0-9a-fA-F]{64})\s+\*?(.+)$') {
        $expected = $matches[1].ToLower()
        $path = $matches[2]
        $actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $path).Hash.ToLower()

        if ($actual -eq $expected) {
            Write-Host "$path`: OK"
        } else {
            Write-Error "$path`: FAILED"
            $failed = $true
        }
    }
}

if ($failed) { exit 1 }

Every listed file should report OK. A failed checksum means that the release is incomplete, altered, or was extracted incorrectly; stop before analysis and obtain a clean copy.

Create a Python environment

python3 -m venv .venv
source .venv/bin/activate

python -m pip install --upgrade pip
python -m pip install -r starter/requirements.txt
py -m venv .venv
.\.venv\Scripts\Activate.ps1

python -m pip install --upgrade pip
python -m pip install -r starter\requirements.txt

Do not commit .venv/ to a repository. Record the environment used for final analyses through a dependency file or container.

First successful use

python starter/validate_release.py
python starter/load_data.py

The validator should report:

Core release checks passed.
Controlled audit anomalies are expected; see the dataset card.

Before we fit a model, we should understand the units, keys, partitions, timings, and fields that may confound our model.

Load the data

pandas reads the supplied .csv.gz files directly; they do not need to be decompressed first.

from pathlib import Path
import pandas as pd

ROOT = Path(".")

core = pd.read_csv(ROOT / "data" / "mhc_synthetic_core.csv.gz")
notes = pd.read_csv(ROOT / "data" / "notes.csv.gz")
splits = pd.read_csv(ROOT / "data" / "splits_reference.csv")
dictionary = pd.read_csv(
    ROOT / "metadata" / "synthetic_data_dictionary.csv"
)

primary_t0_features = dictionary.loc[
    (dictionary["included_in_core"] == 1)
    & (dictionary["allowed_primary_T0"] == 1)
    & (dictionary["recommended_role"] == "feature"),
    "variable_name",
].tolist()

print(core.shape)
print(core["patient_id"].nunique())
print(len(primary_t0_features))
import sqlite3
import pandas as pd

with sqlite3.connect("data/airo_sim.sqlite") as connection:
    tables = pd.read_sql_query(
        """
        SELECT name
        FROM sqlite_master
        WHERE type = 'table'
        ORDER BY name
        """,
        connection,
    )

    core = pd.read_sql_query(
        "SELECT * FROM mhc_synthetic_core",
        connection,
    )

print(tables)
print(core.shape)

Aspects to understand before modelling

Unit and keys

One row in the core table is one operation. operation_id is the unique operation key; patient_id links repeated operations.

Patient grouping

No patient may appear in both development and held-out partitions. Split and resample at the unit that can leak.

Prediction snapshots

T0, T1, T2, outcome-only, and research-only fields have different permissions. Pay attention to plausible data availability.

Outcomes

The outcome must define positive, negative, missing, and exclusion rules.

Notes and events

Filter note type, note time, event time, and available_snapshot before constructing features. Discharge or post-outcome text cannot enter T0 or T1 prediction.

Held-out evidence

The supplied test and shadow labels are visible, so they are not a blind external test. Prespecify their use and do not tune repeatedly against them.

A first audit

assert len(core) == 8_000
assert core["operation_id"].is_unique
assert core["patient_id"].nunique() == 7_500
assert core.groupby("patient_id")["split_reference"].nunique().max() == 1

print(
    core.groupby("split_reference")["comp_neuro_delirium"]
        .agg(nonmissing="count", prevalence="mean")
)

Then investigate, document, and decide rather than merely asserting:

  • row counts, duplicate identifiers, and join multiplicity;
  • repeated patients and partition overlap;
  • missing outcomes and predictors by partition and relevant subgroup;
  • impossible or extreme numeric values;
  • parent–child consistency among complication fields;
  • planned versus performed procedure differences;
  • timestamp and prediction-snapshot consistency;
  • structured–note contradictions, omissions, and provenance;
  • note-template or near-duplicate leakage; and
  • changes in missingness, procedure mix, note style, and predictions in the shadow period.
  • Editing release files in place instead of creating versioned derived artefacts.
  • Treating 99 in the raw table as a clinical category without consulting the dictionary.
  • Treating missing outcomes as negative outcomes.
  • Using identifiers, split labels, synthetic year, discharge information, or outcome-only fields as ordinary predictors.
  • Allowing one patient, note template, or near-duplicate note to cross a boundary that is supposed to be held out.
  • Importing T1, T2, discharge, or post-outcome information into a T0 study.
  • Repeatedly tuning decisions on the test or shadow partition while still calling it held out.
  • Describing synthetic event rates, note language, associations, subgroup differences, or model performance as estimates of a real institution.

Lectures and course materials

The lecture decks are linked from their beginning. Use the deck table of contents or overview mode to move to a section.

Lecture 1 From a clinical need to a monitored, accountable system

Course purpose, the shared research studio, seminar practice, intended use, evidence, workflow, and recurring category mistakes.

Open the slides

Lecture 2 Clinical data science foundations: from care to evidence

How care becomes data, how data become a study, how analysis is computed, and how results become defensible evidence.

Open the slides

Lecture 3 Honest models and meaningful evaluation

Study cards, baselines, information budgets, model restraint, calibration, thresholds, uncertainty, transport, action, and audit.

Open the slides

Later lectures ### Materials will be added as the course develops

Future links will be added here.

Forthcoming

Seminar papers

Paper schedule forthcoming

The seminar-paper list will be added here as selections are confirmed.

Date Theme Paper Why we are reading it
24 September 2026 Evaluation Author et al. Paper title Calibration, validation, and claim boundaries

How seminars work

A seminar should help a mixed clinical–technical audience faithfully reconstruct and understand the paper’s contributions but also critically test it.

Seminar guide

Additional resources

These links are starting points rather than substitutes for critical appraisal or the original scientific record.

Reporting, bias, and lifecycle guidance

  • TRIPOD+AI — reporting studies that develop or evaluate clinical prediction models using regression or machine-learning methods.
  • PROBAST+AI — assessing quality, risk of bias, and applicability in prediction-model studies.
  • DECIDE-AI — reporting early-stage live clinical evaluation of AI decision-support systems.
  • FUTURE-AI — lifecycle guidance for trustworthy and deployable AI in healthcare.

Finding and following evidence

Software and reproducibility

Attribution and research integrity

Cite borrowed text, ideas, figures, data, code, prompts, and analytical procedures. Attribute shared class artefacts and reviews. Preserve enough of the analytical record to explain how every reported result was produced. Never fabricate data, citations, experiments, outputs, or statistical results.