DARTER - Registersti og datastores
Bekræftede stier og adgangsmetoder for alle registre på projekt 708421
Tjek modificeringsdato på cleaned-data inden du kører pipeline.
file.info("E:/workdata/708421/cleaned-data/parquet-registers/")$mtimeRegistrene 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_recnum → recnum |
1995–marts 2019 | v_cpr → pnr |
| LPR2 psyk diagnoser | read_register("t_psyk_diag") |
v_recnum → recnum |
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. samplevalueer en character-kolonne - den kan indeholde tekst som “ikke påvist” eller “negativ”, ikke kun tal. Konvertér med omtanke (as.numeric()giverNApå 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
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 brugSe også
- Register-overblik: fulde bekræftede kolonnenavne
- DARTER - faldgruber: projekt-specifikke problemer