DARTER - Registersti og datastores

Bekræftede stier og adgangsmetoder for alle registre på projekt 708421

Published

July 2, 2026

Warning

Tjek modificeringsdato på cleaned-data inden du kører pipeline.

file.info("E:/workdata/708421/cleaned-data/parquet-registers/")$mtime

Registrene er ikke nødvendigvis opdateret til i dag. Bekræft at dækning matcher din studieperiode.


Basestier

# Alle stier bruges som konstanter øverst i scripts
path_parquet_reg  <- "E:/workdata/708421/cleaned-data/parquet-registers/"
path_parquet_ext  <- "E:/workdata/708421/cleaned-data/parquet-external/"
path_dm_pop       <- "E:/workdata/708421/cleaned-data/diabetes-register-pop/dm_population_1977_2022.rds"
path_output       <- "E:/workdata/708421/workspaces/[ditNavn]/BS_demens/datasets/"

Oversigt - alle registre på projekt 708421

Alle bekræftet via colnames() på DST-serveren 2026-05-15. De fleste registre er opdateret til slutningen af 2024 pr. 2026 (Anders Aasted Isaksen/DARTER-team). Kolonnenavne vises efter rename_with(tolower).

Register Adgang Join-nøgle Periode Kritisk kolonne
BEF read_register("bef") pnr Alle år koen, foed_dag, familie_id
DODSAARS read_register("dodsaars") pnr ~1970–2001 d_dodsdto (dødsdato)
DOD ikke i cleaned-data pnr ~2001–2024 doddato - se udtræksguide
VNDS read_register("vnds") pnr Alle år indud_kode, haend_dato
LPR2 kontakter read_register("lpr_adm") recnum Frem til marts 2019 d_inddto, c_pattype
LPR2 diagnoser read_register("lpr_diag") recnum Frem til marts 2019 c_diag, c_diagtype
LPR2 psyk kontakter read_register("t_psyk_adm") k_recnumrecnum 1995–marts 2019 v_cprpnr
LPR2 psyk diagnoser read_register("t_psyk_diag") v_recnumrecnum 1995–marts 2019 c_diag, c_diagtype
LPR3 kontakter read_register("lpr_a_kontakt") dw_ek_kontakt Marts 2019+ kont_starttidspunkt (datetime)
LPR3 diagnoser read_register("lpr_a_diagnose") dw_ek_kontakt Marts 2019+ diag_kode, diag_kode_type, senere_afkraeftet
LPR3 procedurer read_register("procedurer_kirurgi") dw_ek_forloeb 2019+ procedurekode, dato_start
LPR2 procedurer read_register("lpr_sksopr") recnum 1996–2018 c_opr, d_odto
LMDB read_register("lmdb") pnr Ca. 1994+ atc, eksd
UDDA read_register("udda") pnr Alle år hfaudd, aar
FAIK read_register("faik") familie_id Alle år famaekvivadisp_13
AKM read_register("akm") pnr Alle år socio13, aar
DBSO read_register("dbso") pnr 2010+ datoper_prim, kirurgi-flag
OSDC readRDS(path_dm_pop) PNR → rename til pnr 1977–2022 diabetes_type, do_dm
Laboratoriesvar read_register("laboratorieproevesvar_") pnr Ca. 1994+ npu, samplingdato, samplevalue (character)

Kritiske noter

DODSAARS og DOD - dødsfald er delt på to registre: dødsdato findes ikke ét sted. dodsaars ligger i cleaned-data, men dækker kun ~1970–2001 (dødsdato i d_dodsdto). Dødsfald efter 2001 ligger i DOD (dødsdato i doddato, dækker ~2001–2024), som ikke er i cleaned-data - det kræver udtræk fra den rå SAS-fil via din datamanager. Begge joines på pnr, og du skal bruge begge for at have fuld dækning over en moderne studieperiode.

Hvorfor det betyder noget: kører du kun på dodsaars, behandles alle der dør efter 2001 som levende. Det forskyder censurering og matching i 01_build_cohorts.R. Se faldgrube 1.

LPR3 - duplikatrisiko: lpr_a_kontakt og lpr_a_diagnose indeholder data fra to formater (LPR_F og LPR_A). Filtrer altid på lprindberetningssystem == "LPR3". Se faldgrube 5.

Laboratoriesvar - brug kun én kilde: laboratorieproevesvar_ (>2,2 milliarder rækker) erstatter lab_forsker/lab_dm_forsker. De gamle filer eksisterer stadig og dækker samme data - brug kun én for at undgå duplikater. Fordi registret er så stort, er det afgørende at semi_join(tibble(pnr = kohort$pnr), by = "pnr") og select() før collect(). To ting at være opmærksom på ved udtræk:

  • Prøver identificeres via NPU-koder i kolonnen npu - filtrér på de NPU-koder, din analyse kræver.
  • samplevalue er en character-kolonne - den kan indeholde tekst som “ikke påvist” eller “negativ”, ikke kun tal. Konvertér med omtanke (as.numeric() giver NA på tekstværdier).

Se faldgrube 6 - Laboratoriesvar for kodeeksempel.

procedurer_kirurgi: dw_ek_kontakt er NA for alle rækker på DST. Join til lpr_a_kontakt via dw_ek_forloeb for at hente pnr.

DBSO: Identifier-kolonnen hedder cpr i råparquet - omdøbt til pnr af 00_prepare_dbso.R. Al kode bruger pnr herefter.

OSDC: PNR er uppercase i rå fil - rename med rename(pnr = PNR) efter indlæsning.


Indlæsningsskabeloner

Note

fastreg afløser dstDataPrep på DARTER. Registre indlæses nu med fastreg::read_register("navn") - samme funktion som i den generelle vejledning. Har du hidtil brugt dstDataPrep::load_database(), kører den kode stadig, men skriv ny kode med fastreg. Du skal blot pege fastreg på DARTERs parquet-mappe én gang per script - options(fastreg.project_workdata_dir = path_parquet_reg) - se “Har du ikke selv konverteret dataene?” i Fase 4. Derefter virker read_register("bef") via navn.

library(fastreg)   # read_register() - adgang til DST-registre
library(dplyr)         # rename_with, rename, left_join, select

# Standard register - via read_register:
bef <- read_register("bef") %>% rename_with(tolower)   # doven forbindelse; lowercase kolonner

# Psykiatrisk LPR2 - kræver rename af v_cpr og k_recnum:
psyk_adm <- read_register("t_psyk_adm") %>%
  rename_with(tolower) %>%                          # lowercase kolonner
  rename(pnr = v_cpr, recnum = k_recnum)            # v_cpr → pnr; k_recnum → recnum

# DBSO - parquet-external (databasen for svær overvægt):
dbso <- read_register("dbso") %>% rename_with(tolower)   # doven forbindelse

# OSDC - RDS-fil med præberegnet diabetesklassifikation (OSDC, open source diabetes classifier):
dm_pop <- readRDS(path_dm_pop) %>% rename(pnr = PNR)   # PNR er uppercase i råfil - omdøb

# LPR3 procedurer - join via dw_ek_forloeb (IKKE dw_ek_kontakt - er NA for alle rækker):
proc <- read_register("procedurer_kirurgi") %>%
  rename_with(tolower) %>%                          # lowercase kolonner
  left_join(
    read_register("lpr_a_kontakt") %>%
      rename_with(tolower) %>%
      select(dw_ek_forloeb, pnr),                  # hent pnr via forloeb-nøglen
    by = "dw_ek_forloeb"                            # join-nøgle - dw_ek_kontakt virker ikke
  )
# proc er stadig doven - tilføj filter() og collect() inden brug

Se også

Back to top