PRIME-CVD: A Parametrically Rendered Informatics Medical Environment for Education in Cardiovascular Risk Modelling
Organizations: Centre for Big Data Research in Health (CBDRH), The University of New South Wales, Sydney, Australia
Abstract
In recent years, progress in medical informatics and machine learning has been accelerated by the availability of openly accessible benchmark datasets. However, patient-level electronic medical record (EMR) data are rarely available for teaching or methodological development due to privacy, governance, and re-identification risks. This has limited reproducibility, transparency, and hands-on training in cardiovascular risk modelling. Here we introduce PRIME-CVD, a parametrically rendered informatics medical environment designed explicitly for medical education. PRIME-CVD comprises two openly accessible synthetic data assets representing a cohort of 50,000 adults undergoing primary prevention for cardiovascular disease. The datasets are generated entirely from a user-specified causal directed acyclic graph parameterised using publicly available Australian population statistics and published epidemiologic effect estimates, rather than from patient-level EMR data or trained generative models. Data Asset 1 provides a clean, analysis-ready cohort suitable for exploratory analysis, stratification, and survival modelling, while Data Asset 2 restructures the same cohort into a relational, EMR-style database with realistic structural and lexical heterogeneity. Together, these assets enable instruction in data cleaning, harmonisation, causal reasoning, and policy-relevant risk modelling without exposing sensitive information. Because all individuals and events are generated de novo, PRIME-CVD preserves realistic subgroup imbalance and risk gradients while ensuring negligible disclosure risk. PRIME-CVD is released under a Creative Commons Attribution 4.0 licence to support reproducible research and scalable medical education.
Figures & tables
| Synthetic Cohort Characteristics (N = 50,000) | |
| Age (years) | Mean (SD): 49.71 (12.37) |
| Median [IQR]: 49.63 [41.33, 58.09] | |
| Range: 18.0–90.0 | |
| IRSD Quintile Distribution | Q1: 21.28% (Most disadvantaged) |
| Q2: 16.11% | |
| Q3: 23.88% | |
| Table | Column Name | Notes |
| PatientMasterSummary | Patient_ID | Patient identifier: Unique, non-sequential integer key derived from the cohort row index of Data Asset 1. |
| PatientMasterSummary | Age_At_2024 | Approximate patient age in 2024: Continuous, two-decimal precision, of baseline simulated age exacted at 2024. |
| PatientMasterSummary | IRSD_Quintile | Australian socioeconomic disadvantage quintile: Integer in {1,…,5}, where 1 = most disadvantaged and 5 = least disadvantaged. |
| Parent → Child | Notes | References |
| IRSD BMI | Higher deprivation slightly increases BMI. | [ 31 ] † [ 32 ] † |
| IRSD Smoking | More disadvantaged areas have higher smoking rates. | [ 33 ] † [ 34 ] ⋆ |
| BMI Diabetes | Higher BMI increases diabetes risk. | [ 35 ] † [ 36 ] ⋆ |
| IRSD | Age | Smoking | BMI | Diabetes | CKD | HbA1c | eGFR | SBP | AF | CVD_Event | CVD_Time |
| 4 | 50.40 | non | 28.17 | 0 | 0 | 4.32 | 83.08 | 118.67 | 0 | 1 | 2.96 |
| 3 | 39.23 | ex | 16.83 | 0 | 0 | 4.70 | 81.49 | 123.72 | 0 | 0 | 4.41 |
| 5 | 55.49 | non | 23.52 | 0 | 0 | 3.67 | 86.78 | 126.65 | 0 | 0 | 4.49 |
| 4 | 51.91 | non | 31.98 | 0 | 0 | 4.49 | 94.70 | 113.89 | 0 | 0 | 4.89 |
| 1 | 47.09 | ex | 25.35 | 0 | 0 | 4.32 | 86.34 | 125.91 | 0 | 0 | 4.49 |
| Patient_ID | Age_At_2024 | Smoking | IRSD | CVD_Event | CVD_Time |
| 269 | 57.40 | non | 4 | 1 | 2019-12 |
| 272 | 46.23 | ex | 3 | 0 | 2022-12 |
| 281 | 62.49 | non | 5 | 0 | 2022-12 |
| 296 | 58.91 | non | 4 | 0 | 2022-12 |
| 317 | 54.09 | ex | 1 | 0 | 2022-12 |
| Patient_ID | Category | Date |
| 1338163469 | Diabetes | 2012-05 |
| 150591944 | Diabetes | 2014-12 |
| 545940569 | ICD10: E11 | 2016-10 |
| 7134075944 | Diabetes | 2013-02 |
| 5959722392 | Diabetes | 2014-09 |
| Patient_ID | Measure | Value | Description | Date | Unit |
| 5386159421 | eGFR | 77.24 | eGFR | 2014-12 | mL/min/1.73m 2 |
| 5790852944 | HbA1c | 4.50 | HBA1C | 2013-02 | % |
| 3141314912 | HbA1c | 4.16 | Hb A1c | 2016-09 | % |
| 5573606096 | eGFR | 89.52 | eGFR | 2013-10 | mL/min/1.73m 2 |
| 3311104121 | SBP | 131.55 | SBP | 2013-11 | mmHg |
| IRSD | N | Age median [IQR] | Diabetes (%) | CKD (%) | AF (%) | BMI mean (SD) | SBP mean (SD) | eGFR mean (SD) | HbA1c mean (SD) | Event (%) |
| 1 | 10,640 | 49.53 [41.3–58.09] | 8.44 | 0.77 | 0.81 | 29.50 (4.95) | 124.98 (16.12) | 82.72 (6.22) | 4.81 (0.97) | 4.28 |
| 2 | 8,055 | 49.69 [41.44–58.26] | 7.78 | 0.72 | 0.72 | 28.99 (4.96) | 124.23 (16.11) | 82.75 (6.10) | 4.80 (0.92) | 4.38 |
| 3 | 11,941 | 49.54 [41.35–58.00] | 7.53 | 0.80 | 0.69 | 28.39 (4.95) | 123.32 (16.21) | 82.76 (6.14) | 4.79 (0.93) | 4.34 |
| Covariate | HR | 95% CI | p -value |
| Age (per year) | 1.03 | [1.03, 1.03] | |
| Atrial fibrillation | 2.90 | [2.24, 3.75] | |
| Chronic kidney disease | 0.97 | [0.75, 1.26] | 0.84 |
| Diabetes mellitus | 4.15 | [3.77, 4.57] | |
| HbA1c (%) | 1.37 | [1.33, 1.41] | |
| Body mass index | 1.01 | [1.01, 1.02] |
| Abbreviation | Definition |
| ABS | Australian Bureau of Statistics |
| AF | Atrial Fibrillation |
| AIHW | Australian Institute of Health and Welfare |
| BMI | Body Mass Index |
| CKD | Chronic Kidney Disease |
| CKM | Cardio–Kidney–Metabolic (domain including CVD, diabetes, and CKD) |
Appendix figures & tables13 assets
Supplementary material from the paper’s appendix.
Appendix
| From Node | To Node | Notes |
| IRSD | SmokingStatus | – Each IRSD quintile uses a different probability vector over ["non", "current", "ex"] . – Higher deprivation (lower IRSD) has higher probability of being a current smoker. – Implemented in sample_smoking_given_irsd() via rng.choice . |
| IRSD | BMI | – BMI mean shifts linearly with , slope . – Central mean chosen so IRSD-weighted mean equals population BMI mean (28.29). – Sampled from Normal with truncation to [15, 60]. |
| Age | Diabetes | – Diabetes log-odds uses . – Age coefficient encodes OR 1.8 per 10 years. – Older age increases Bernoulli probability in sample_diabetes_given_age_bmi() . |
| From Node | To Node | Notes |
| CKD | eGFR | – CKD adds fixed shift . – Strong downward deviation in filtration rate for CKD. – Final eGFR Normal(mean, SD=5). |
| Age | SBP | – SBP mean includes age-centered term. – Coefficient mmHg per year ( per decade). – Older age increases expected SBP. |
| SmokingStatus | SBP | – Ex-smokers: mmHg; Current smokers: mmHg. – Added through shift_smoke vector. – Non-smokers are reference with shift=0. |
| Target | Sampling Rules | Description of Injected Heterogeneity |
| Smoking Status Missingness | Bernoulli( ) applied to non-smokers | 15.66% of patients coded as “non” have their value set to NaN , producing patterned lifestyle missingness consistent with real GP EMRs. No missingness is applied to “ex” or “current” smokers. |
| Diabetes Terms | Multinomial over 6 labels | Six heterogeneous term ( ‘‘Diabetes’’ , ‘‘T2DM’’ , ICD10/ICD9 strings , lay terms) are sampled for each diabetic patient. Ensures realistic variation in coding systems across time and clinicians. |
| AF Terms | Multinomial over 6 labels | Blends abbreviations, long-form names, and ICD codes ( e.g., ‘‘AF’’ , ‘‘Atrial fibrillation’’ , ‘‘A-fib’’ ) to generate lexical diversity typical of EMR problem lists. |
| Location | Irregularity | Notes |
| Patient_ID | Non-sequential identifier | – Computed as to obscure ordering. – Mirrors de-identified EMR IDs with no intuitive structure. – Keeps deterministic linkage across tables. |
| Age_At_2024 | Shifted age reference year | – Age stored as “Age at 2024”, computed as Age + 7. – Reflects EMRs where age corresponds to extraction year, not event time. – Adds mild temporal misalignment relative to baseline. |
| SMOKING_STATUS | Patterned missingness | – Starts from true smoking status in clean cohort. – 15.66% of non-smokers set to NaN . |
| Location | Irregularity | Notes |
| Patient_ID | Presence-only condition table | – Contains rows only for patients with diabetes, CKD, or AF. – Same nonlinear ID transformation used as in other tables. |
| Category (Diabetes) | Diabetes label variability | – Canonical “Diabetes” replaced by multinomial labels. – Includes ICD codes, abbreviations, and lay labels. – Introduces semantic variability requiring harmonisation. |
| Category (AF) | AF label variability | – Similar randomness to diabetes labels. |
| Location | Irregularity | Notes |
| Patient_ID | – Same nonlinear ID transformation used as in other tables. | |
| Measure | Stacked long-form biomarkers | – HbA1c, eGFR, SBP concatenated into one table. – Requires pivoting or filtering to build analytic datasets. |
| Description (HbA1c) | Heterogeneous labels | – Includes “HbA1c”, “HBA1C”, “A1C”, “Glycated hemoglobin”, etc. – Probability-weighted distribution. |
| Age | N | IRSD (%) | Diabetes (%) | CKD (%) | AF (%) | BMI mean (SD) | SBP mean (SD) | eGFR mean (SD) | HbA1c mean (SD) | Event (%) |
| N | 2,878 | 1: 22.03 2: 15.71 3: 23.00 4: 17.23 5: 22.03 | 1.74 | 0.28 | 0.10 | 28.28 (4.97) | 113.41 (14.86) | 87.39 (5.28) | 4.62 (0.70) | 0.21 |
| A | 7,976 | 1: 20.84 2: 16.12 3: 23.92 4: 16.76 5: 22.35 | 2.95 | 0.29 | 0.18 | 28.34 (5.11) | 117.82 (15.24) | 85.31 (5.33) | 4.67 (0.75) | 0.56 |
| B | 14,746 | 1: 21.66 2: 16.00 3: 24.40 4: 16.64 5: 21.31 | 4.90 | 0.41 | 0.49 | 28.36 (5.02) | 121.42 (15.17) | 83.71 (5.41) | 4.72 (0.82) | 1.49 |