Does the knowledge graph schema matter for clinical outcome prediction?
A study of SPHN and CARE-SM graphs of synthetic patients reported that the choice of schema changed outcome prediction substantially. We corrected the published pipeline, repeated the comparison on the original synthetic data and tested it on real patients. Once the graphs were built and checked correctly, the schema made at most a small difference, graph models performed like tabular models on the same data, and supplying ontology meaning did not change performance.
Main findings
- The published numbers reproduce. On the original synthetic data, the R-GCN with literal encoder reaches AUC 0.910 ± 0.007 on SPHN and 0.502 ± 0.011 on CARE-SM, as reported.
- Graphs did not outperform tabular models. The original tabular baselines were computed on a different synthetic table. On the table the graphs were built from, logistic regression reaches 0.918 ± 0.006.
- The CARE-SM result came from pipeline defects. Preprocessing dropped every numeric value, and every feature lay four message-passing steps from the patient while the model reached three. With both corrected, CARE-SM reaches 0.821 ± 0.015, and 0.889 ± 0.008 with node embeddings at a usable scale.
- On real patients the schemas perform similarly. For 1,388 patients with subarachnoid haemorrhage in MIMIC-IV, CARE-SM (0.808 ± 0.032) is slightly but consistently ahead of the template SPHN graph (0.791 ± 0.032), and gradient boosting on the same features reaches 0.813 ± 0.023. A graph built with the released SPHN 2026.1 schema and standard codes reaches 0.813 ± 0.030.
- Ontology meaning did not help. Label embeddings, ontology embeddings and terminology hierarchies all stayed within 0.002 AUC of random starting vectors, with confidence intervals that include zero.
The original study
Jhee and colleagues generated 10,000 synthetic patients modelled on 552 people with a ruptured intracranial aneurysm and represented them as knowledge graphs following two schemas, the Swiss Personalized Health Network (SPHN) schema and CARE-SM, a model built on the Semanticscience Integrated Ontology. They asked three questions. Do graph models outperform tabular models? Does the schema matter? Does the way time is encoded matter? They reported that a relational graph convolutional network (R-GCN) with a literal encoder outperformed tabular models (AUC 0.91 against at most 0.71), that SPHN outperformed CARE-SM (0.91 against 0.50), and that time encodings performed alike.
The task is three-class node classification of the outcome at the end of the stay (discharge home, rehabilitation or death), evaluated with stratified 10-fold cross-validation and weighted one-versus-rest AUC.
What we checked
We reran the public pipeline (TeamHeKA/neurovasc, commit 1619d99) with its pinned software and the original protocol: the same folds, one ninth of each training set for validation, 2,000 full-batch epochs and the checkpoint with the best validation accuracy. Every change to the original code is marked in the repository. We then corrected the errors listed below and compared each configuration with tabular models on the same patients and folds.
| Issue in the original pipeline | Effect | Correction |
|---|---|---|
| Tabular and graph models used different synthetic tables | The graph advantage reflected the data | Tabular models rerun on the graph table |
| The CARE-SM literal filter used a predicate absent from the graph | All 40,000 numeric values dropped | Filter corrected |
| CARE-SM features four steps from the patient, with a three-layer model | No feature within the model's reach | Four or five layers |
| Untrained node embeddings near zero | Node identity almost invisible | Unit-scale initialisation |
| Care pathways generated independently of the outcome | Time encodings could not differ | Tested on real data |
| Locally minted IRIs and two incorrect procedure codes | No resolvable semantics | Released terms and verified codes on real data |
Real patients
From MIMIC-IV v3.1 we selected adults with a first admission coded for non-traumatic subarachnoid haemorrhage. At landmarks 24, 48 and 72 hours after admission, patients still alive and in hospital entered the analysis (1,388, 1,287 and 1,190 patients). Features used only information recorded before the landmark, namely age, sex, Glasgow Coma Scale, vital signs, laboratory values and the presence and timing of eight treatments. The outcome was discharge home (560 at 24 hours), to rehabilitation or care (530), or death including hospice (298).
We built SPHN and CARE-SM graphs following the original templates, an SPHN variant with time relations, a compiled CARE-SM graph with shortcut edges from each patient to each feature, and a graph using the released SPHN 2026.1 classes and properties with ATC, ICD-10-PCS, LOINC and SNOMED CT codes. Before training, every graph was checked automatically. Every numeric value had to reach the model, every feature had to lie within the model's reach, and no outcome edge could be present. Patient-specific nodes started from zero embeddings to prevent memorisation.
To test whether ontology meaning helps, we varied only the class and code nodes shared across patients. They started from random vectors, from SapBERT embeddings of their labels (also shuffled across nodes as a control) or from OWL2Vec* embeddings of the SPHN schema extended with the code hierarchies. Alternatively, their ancestors were added as graph edges, from the ATC and ICD-10-PCS codes themselves or from the OMOP vocabularies, which add SNOMED CT and LOINC ancestors.
Models were compared on the same ten folds with paired t-tests, and we report mean differences with 95% confidence intervals. Only aggregate results left the secure environment, and counts below 11 are never reported.
Synthetic data
| Configuration | AUC | Accuracy |
|---|---|---|
| As published | ||
| SPHN, R-GCN with literal encoder, 3 layers (paper 0.91) | 0.910 ± 0.007 | 0.781 ± 0.013 |
| CARE-SM, R-GCN with literal encoder, 3 layers (paper 0.50) | 0.502 ± 0.011 | 0.439 ± 0.007 |
| CARE-SM as published, 5 layers | 0.499 ± 0.018 | 0.439 ± 0.007 |
| Corrected CARE-SM | ||
| Numeric values restored, 4 layers | 0.821 ± 0.015 | 0.662 ± 0.022 |
| Numeric values restored, 5 layers | 0.833 ± 0.013 | 0.678 ± 0.014 |
| Numeric values restored, 4 layers, unit-scale embeddings | 0.889 ± 0.008 | 0.749 ± 0.011 |
| Numeric values restored, 5 layers, unit-scale embeddings | 0.890 ± 0.008 | 0.750 ± 0.010 |
| Diagnostics | ||
| SPHN with the dedicated age edge relabelled as a diagnosis edge | 0.843 ± 0.068 | 0.736 ± 0.044 |
| Random forest on features read back from the CARE-SM graph | 0.917 ± 0.006 | 0.783 ± 0.013 |
| CARE-SM with an outcome edge per patient (leakage test) | 0.981 ± 0.040 | 0.962 ± 0.060 |
| Tabular models on the table the graphs were built from | ||
| Logistic regression | 0.918 ± 0.006 | 0.782 ± 0.013 |
| Random forest | 0.916 ± 0.006 | 0.781 ± 0.010 |
| Neural network (the original architecture) | 0.912 ± 0.007 | 0.778 ± 0.013 |
| Random forest, age only | 0.914 ± 0.007 | 0.784 ± 0.014 |
| Random forest, care events only | 0.504 ± 0.019 | 0.432 ± 0.015 |
| Tabular models on the earlier table behind the published tabular results | ||
| Logistic regression | 0.707 ± 0.014 | 0.560 ± 0.016 |
| Random forest | 0.708 ± 0.011 | 0.564 ± 0.013 |
| Neural network | 0.702 ± 0.015 | 0.560 ± 0.013 |
Test AUC (weighted one-versus-rest) and accuracy, mean and standard deviation over the original 10 folds with 2,000 epochs.
Three observations explain the published differences. The published tabular results reproduce only on an earlier version of the synthetic table, so the graph advantage reflected different data. The five-layer CARE-SM model failed because the numeric values were dropped, not because of depth or over-smoothing, since the corrected five-layer model performs well. Merging the CARE-SM graphs into one graph lost no information, because the features read back from it give the same performance as the original table.
The original authors later shared their CARE-SM training notebook. It trains CARE-SM with the same three-layer model as SPHN, with an embedding size of 100 and its own fold seed. Run with these settings, the published graph gives 0.502 ± 0.018, matching the published 0.50, while the graph with its values restored gives 0.822 ± 0.008 with four layers and 0.886 ± 0.006 with unit-scale embeddings.
Age alone predicts the synthetic outcome as well as any model (0.914 ± 0.007), and SPHN delivers it on a dedicated edge. Relabelling that edge lowers SPHN, so part of its lead came from one predicate. The care events carry no outcome signal by construction, which is why the time encodings could not differ.
Why age is a sufficient predictor
The reason lies in how the synthetic patients were generated. The generator in the original repository works in four steps.
- Every variable, including the outcome, is drawn independently from a distribution fitted to the 552 real patients. Categorical variables become integer codes, and no variable is standardised.
- Correlations are then introduced by multiplying the table by the lower-triangular Cholesky factor of a correlation matrix. Each column becomes a weighted sum of itself and of every column that follows it in the table.
- In the table the graphs were built from, the outcome is the sixth column, ahead of seventeen other variables. Its column therefore becomes a weighted sum of the initial outcome code and of those seventeen variables, age included.
- That sum is cut into three classes at the target proportions (44, 43 and 12 percent).
Age is the only continuous variable in the sum and is measured in years, while most of the others are 0/1 codes, so the sum, and hence the outcome, is close to age cut at two thresholds. The data show this directly. Mean age is 43.0, 60.1 and 74.8 years for discharge home, rehabilitation and death, with a spread of only 7 to 9 years within each class, and a rule with cut-offs near 50 and 70 years classifies 78 percent of patients correctly, the same accuracy as the graph model on SPHN (0.781 ± 0.013). Variables that enter the sum with visible weight carry some signal (sex alone reaches an AUC of about 0.76), whereas length of stay, the Glasgow Coma Scale and the number of medical acts carry none. Mixing unstandardised values also pushes some variables outside clinical ranges, for example Glasgow Coma Scale values up to 52 on a scale that ends at 15. The care pathway events are generated afterwards, independently of everything else.
We infer the dominance of age from the generator code and the data. The mixing weights are stored in a serialised file in the original repository that we did not load. The figures in this subsection were computed from data/syn_data.csv at commit 1619d99.
Real patients in MIMIC-IV
| Model | 24 hours | 48 hours | 72 hours |
|---|---|---|---|
| Gradient boosting | 0.813 ± 0.023 | 0.818 ± 0.034 | 0.829 ± 0.038 |
| CARE-SM graph, 4 layers | 0.808 ± 0.032 | 0.818 ± 0.032 | 0.812 ± 0.052 |
| Compiled CARE-SM graph, 3 layers | 0.805 ± 0.030 | 0.820 ± 0.026 | 0.823 ± 0.025 |
| Logistic regression | 0.793 ± 0.023 | 0.804 ± 0.035 | 0.813 ± 0.025 |
| SPHN graph (original template), timestamps | 0.791 ± 0.032 | 0.793 ± 0.038 | 0.808 ± 0.037 |
| SPHN graph, timestamps and time relations | 0.784 ± 0.033 | 0.787 ± 0.037 | 0.806 ± 0.031 |
| SPHN 2026.1 graph, released terms, both edge directions | 0.813 ± 0.030 | ||
| Gradient boosting, care events only | 0.682 ± 0.039 | 0.694 ± 0.038 | 0.690 ± 0.033 |
| Gradient boosting, age only | 0.605 ± 0.029 | 0.601 ± 0.042 | 0.631 ± 0.024 |
Test AUC, mean and standard deviation over 10 folds, seed 0. Accuracy of gradient boosting at 24 hours is 0.646 ± 0.028.
CARE-SM against the template SPHN graph
| Landmark and seed | Difference in AUC | 95% CI | p |
|---|---|---|---|
| 24 h, seed 0 | +0.017 | −0.010 to +0.044 | 0.19 |
| 48 h, seed 0 | +0.025 | −0.004 to +0.054 | 0.08 |
| 72 h, seed 0 | +0.004 | −0.021 to +0.029 | 0.73 |
| 24 h, seed 1 | +0.022 | +0.009 to +0.036 | 0.005 |
| 24 h, seed 2 | +0.016 | −0.004 to +0.037 | 0.11 |
CARE-SM minus SPHN on the same folds. The difference is positive in all five comparisons and significant in one.
Other comparisons at 24 hours
| Comparison | Difference in AUC | 95% CI | p |
|---|---|---|---|
| Compiled CARE-SM minus CARE-SM | −0.003 | −0.028 to +0.022 | 0.77 |
| SPHN with time relations minus SPHN | −0.007 | −0.025 to +0.011 | 0.40 |
| Gradient boosting minus CARE-SM | +0.005 | −0.012 to +0.022 | 0.54 |
| Gradient boosting minus template SPHN | +0.022 | +0.001 to +0.042 | 0.04 |
| Template SPHN, both directions minus one direction | +0.002 | −0.016 to +0.020 | 0.79 |
| Released SPHN 2026.1 minus template SPHN, both directions | +0.020 | +0.003 to +0.037 | 0.03 |
| Gradient boosting minus released SPHN 2026.1 | −0.001 | −0.014 to +0.013 | 0.92 |
Unlike the synthetic data, age alone predicted the outcome weakly while the care events and their timing carried signal. Compiling CARE-SM and adding time relations to SPHN changed nothing. Passing messages in both directions did not change the template SPHN graph, but the graph built with released SPHN terms performed better and matched gradient boosting. Because that graph differs from the template in several ways at once, including its layout and depth, the gain cannot be attributed to the released terms themselves.
Does ontology meaning help?
| What the shared class and code nodes received | AUC | Difference | 95% CI | p |
|---|---|---|---|---|
| Random vectors (reference) | 0.812 ± 0.027 | |||
| SapBERT label embeddings, shuffled across nodes | 0.811 ± 0.028 | −0.001 | −0.007 to +0.005 | 0.69 |
| SapBERT label embeddings | 0.811 ± 0.032 | −0.001 | −0.006 to +0.004 | 0.63 |
| OWL2Vec* ontology embeddings | 0.810 ± 0.028 | −0.002 | −0.011 to +0.006 | 0.55 |
| ATC and ICD-10-PCS hierarchies as edges | 0.813 ± 0.029 | +0.001 | −0.007 to +0.008 | 0.84 |
| OMOP hierarchies as edges (adds SNOMED CT and LOINC) | 0.812 ± 0.027 | −0.001 | −0.006 to +0.005 | 0.79 |
None of the five ways of supplying ontology content changed performance by more than 0.002 AUC, and the differences are smaller than the variation between seeds. The two embeddings do carry different information. OWL2Vec* places heart rate next to the other vital-sign results and the drugs together, while SapBERT groups labels by wording. On these features the models use the graph layout and the numeric values rather than the meaning of the terms. The feature set is small and dense, so related codes have little need to share strength, and settings with many sparse codes may behave differently.
What this means
The large schema effect in the original study came from how the graphs were built and preprocessed. Once corrected, the schema made at most a small difference, and graph models performed as well as, but not better than, tabular models on the same data. The original graphs used locally minted identifiers, and no hierarchy or reasoning entered the models, so the comparison was one of graph structures rather than of ontologies. Our experiments with released terms, standard codes, embeddings and hierarchies support this reading.
Limitations. The real-data analysis covers one centre and one outcome definition. MIMIC-IV has no structured aneurysm severity score, and treatments partly reflect severity, so their signal is prognostic rather than causal. We did not rerun the TransE and RDF2Vec baselines of the original study, whose code is not in its repository.
Seven checks for clinical knowledge graph studies
- Compare graph and tabular models on the same data, patients and folds.
- Confirm that the model depth covers the longest path from the prediction target to each feature.
- Verify that every literal reaches the model, for example by counting the values ingested.
- Ablate predicate identity, since a dedicated predicate can carry most of the signal.
- Confirm that synthetic data contain the signal a comparison is meant to detect.
- Use resolvable ontology terms and verified codes, and validate graphs against the source ontologies.
- Publish the code for every reported configuration.
Reproducing these results
All code, pinned environments and per-fold results are in the repository, and every number on this page is computed from those results by site/build.py. The synthetic data and original code are available from TeamHeKA/neurovasc. MIMIC-IV requires credentialed access through PhysioNet. The OMOP-based hierarchy needs a vocabulary export from Athena, which includes licensed SNOMED CT and LOINC content.
The original authors' repository notes the discrepancy between the tabular and graph data. We shared these findings with the original authors before publication and thank them for their responses.