OSDC - Open Source Diabetes Classifier

Klassificering af diabetestype i danske registerdata

Published

July 2, 2026

OSDC er en open source-algoritme, der klassificerer alle personer i Danmark som havende type 1-diabetes (T1D), type 2-diabetes (T2D) eller ingen diabetes, ud fra data i de nationale registre.

Artikel: doi:10.2147/CLEP.S407019 Dokumentation og kode: steno-aarhus.github.io/osdc


Hvad giver OSDC dig?

En færdigberegnet population med: - Diabetestype: T1D, T2D eller ingen diabetes - Debutdato: hvornår diabetesbetingelserne første gang var opfyldt - Alder ved debut

Klassifikationen bygger på en kombination af diagnosekoder (LPR), medicinoplysninger (LMDB) og laboratoriesvar.


Hvornår bruges det?

  • Til at definere en diabetes-population som eksponering eller inklusionskriterium
  • Til at ekskludere diabetespatienter fra en kontrolgruppe
  • Til at klassificere type - LPR alene er ikke tilstrækkeligt til at skelne T1D fra T2D pålideligt

Sådan bruges OSDC

DARTER - projekt 708421 (færdigberegnet fil)

På DARTER er OSDC-klassifikationen allerede beregnet og klar til brug (i flere formater). Du behøver ikke køre algoritmen selv.

Important

Ny 2024-population - brug denne fremover osdc-pakken er opdateret og godkendt af CRAN, og der er genereret en ny diabetespopulation på DARTER med de nyeste data. Den er gyldig for inklusioner til og med udgangen af 2024 og skal bruges i stedet for den tidligere populationsfil - ikke kombineret med den. De tidligere filer er uændrede af hensyn til bagudkompatibilitet og reproducerbarhed.

Tabellen findes i flere formater:

  • Parquet: E:/workdata/708421/cleaned-data/external-parquet/osdc/2024 - på DARTER kan du indlæse den direkte med read_register("osdc")
  • .csv, .rds eller .dta: E:/workdata/708421/cleaned-data/diabetes_register_pop/2024
Warning

Stien og filnavnet osdc (samt read_register("osdc")) er DARTER-specifikke (projekt 708421). På andre projekter hedder filen noget andet og ligger et andet sted.

Outputformatet adskiller sig en smule fra den gamle population. Se beskrivelsen af outputvariablerne - især forskellen mellem “raw”- og “stable”-inklusionsdatoer (om inklusionsdatoen falder i en periode med tilstrækkelige inklusions-event-data til at være pålidelig) - i design-vignetten.

# Ny 2024-population på DARTER - read_register finder stien automatisk:
library(fastreg)
dm_pop <- read_register("osdc")
Tidligere population (frem til 2022) - kun til reproducerbarhed

Den gamle fil har et andet outputformat end 2024-populationen (variabelnavnene nedenfor gælder kun den gamle fil).

dm_pop <- readRDS("E:/workdata/708421/cleaned-data/diabetes-register-pop/dm_population_1977_2022.rds")

names(dm_pop)
# [1] "PNR"           "diabetes_type"  "do_dm"          "age_at_onset"

library(dplyr)
dm_pop <- dm_pop %>% rename(pnr = PNR)   # omdøb PNR til lowercase pnr

# diabetes_type: 1 = T1D, 2 = T2D  |  do_dm: debutdato

# Eksempel: filtrer til T1D-patienter
t1d <- dm_pop %>%
  filter(diabetes_type == 1) %>%
  select(pnr, diabetes_type, do_dm) %>%
  rename(date_diabetes = do_dm)

Andre projekter - kør algoritmen selv

Hvis din OSDC-klassifikation ikke er præberegnet, skal du køre algoritmen selv.

osdc er en CRAN-pakke, der kan installeres på DST. Den skal installeres først og derefter indlæses:

install.packages("osdc")
library("osdc")

På DST-serveren opdaterer install.packages("osdc") samtidig de nødvendige afhængigheder, hvilket er vigtigt, da de forudinstallerede pakker kan være forældede.

Note

Tilgængelighed på tværs af projekter Pakken er bekræftet tilgængelig på DARTER (projekt 708421). Den er sandsynligvis også tilgængelig på andre projekter, men det er ikke verificeret - tjek selv med "osdc" %in% rownames(available.packages()) på din egen server (pakken er ikke forudinstalleret, så available.packages() viser, om den kan installeres). Mangler en pakke, kan du kontakte DST, som kan installere ønskede pakker for dig.

Se dokumentation og kode på GitHub: steno-aarhus/osdc og kom-godt-i-gang-vejledningen på steno-aarhus.github.io/osdc/articles/osdc.html.


Dækning og begrænsninger

  • DARTER-datasættet har en kohorte lavet med osdc; den nye 2024-population er gyldig for inklusioner til og med udgangen af 2024
  • Klassificerer alle personer i Danmark - ikke kun din kohorte
  • Bruger LPR, LMDB og laboratoriesvar - kræver adgang til disse registre
Note

Hvilke diabetesmidler tæller som events? Ikke alle glukosesænkende midler (ATC A10) tæller som inklusions-events i algoritmen:

  • ALLE GLP1-RA’er er ekskluderet som events, fordi denne lægemiddelklasse bruges udbredt til vægttab hos personer uden diabetes.
  • For SGLT2-hæmmere er de rene dapagliflozin- og empagliflozin-præparater heller ikke med som events (anbefales i danske retningslinjer mod hjerte- og nyresvigt hos personer uden diabetes).
  • Kombinationspræparater med GLP1-RA eller SGLT2-hæmmere sammen med andre glukosesænkende midler tæller derimod med som events.

Se den præcise logik i algoritme-vignetten: steno-aarhus.github.io/osdc/articles/algorithm.html - eller koden direkte på GitHub: steno-aarhus/osdc.

Warning

OSDC’s type-klassifikation betinger på fremtiden - pas på med den færdiglavede population Den præberegnede OSDC-population kan tildele en persons diabetestype ud fra events, der ligger efter din index-/inklusionsdato. T1D vs. T2D afgøres bl.a. ud fra insulinkøbsmønstre over tid, så typen kan afhænge af information, der endnu ikke fandtes på din index-dato. Bruger du typen som baseline-variabel, betinger du reelt på fremtiden (immortal time-bias).

Workaround: kør algoritmen selv og filtrér input-registrene til kun data før din index-dato, så classify_diabetes() kun ser pre-index-information. Så er typeklassifikationen ikke forurenet af fremtidige events.

En guide til at køre algoritmen selv - og til at ændre den, fx hvis du vil inkludere GLP1-RA som events - er under udarbejdelse. Vær opmærksom på, at hvis du ændrer algoritmen, gælder den publicerede validering ikke længere.

Se den fulde metodebeskrivelse i artiklen og dokumentationssitet.


Næste skridt

Back to top