What this does: loads the Step 1 corpus (dm_corpus.json), and for every patient instantiates
PatientNode / ObservationNode / DiagnosisNode / InterventionNode / OutcomeNode
connected by the patient-anchor edges (HAS_OBSERVATION, HAS_DIAGNOSIS, RECEIVES_PLAN, RESULTS_IN — time as an edge property)
plus the relational edges (SUGGESTS, INDICATES_PLAN, PRODUCED_OUTCOME, MODULATES, CONSTRAINS).
Same code path for T1D and T2D — no special-casing.