Registerreference
Variabelnavne for de hyppigst brugte DST-registre
For DARTER: Tjek hvornår cleaned-data sidst blev opdateret, inden du kører pipeline.
Registrene i cleaned-data/ er ikke nødvendigvis opdateret til i dag. Tjek modificeringsdato på DST-serveren:
file.info("E:/workdata/[projektnummer]/cleaned-data/parquet-registers/")$mtimeOvervej: hvornår går din follow-up til, og er registrene opdateret frem til den dato? Forældet udtræk afskærer censureringsdatoer og udfald for tidligt — ingen fejlmeddelelse, bare stille forkerte resultater. Hvis registrene ikke dækker din studieperiode, skal du bestille et nyt udtræk hos DST.
Alle kolonnenavne på denne side er bekræftet på DST 2026-05-15 via colnames(). De vises efter rename_with(tolower) er kaldt. Nøglekolonner — dem du faktisk bruger i koden — er markeret med fed.
Åbning af registre — to veje: Kodeeksemplerne på denne side bruger open_dataset("sti/til/register/") som generisk placeholder — erstat med stien til dit projekts parquet-mappe. DARTER-brugere kan bruge load_database("registernavn") — se DARTER — Registersti og datastores.
Se Faldgruber for særlige quirks ect. ved hvert register. Kolonnenavne gælder efter rename_with(tolower) — inspicér dit eget register med colnames() hvis noget ikke stemmer.
Leder du efter “hvilket register indeholder X?” — start med beslutningstabellen i Fase 8 — Kend dine registre. Denne side er den dybe reference med fulde kolonnenavne, typer og kodeeksempler.
Oversigt — alle registre
| Register | Registernavn | Join-nøgle | Periode | Kritisk kolonne |
|---|---|---|---|---|
| BEF | "bef" |
pnr |
Alle år | koen, foed_dag, familie_id |
| DODSAARS | "dodsaars" |
pnr |
Se projektvejledning | d_dodsdto (dødsdato til censurering) |
| VNDS | "vnds" |
pnr |
Alle år | indud_kode, haend_dato |
| LPR2 kontakter | "lpr_adm" |
recnum |
Frem til marts 2019 | d_inddto, c_pattype |
| LPR2 diagnoser | "lpr_diag" |
recnum |
Frem til marts 2019 | c_diag, c_diagtype |
| LPR2 SKS-procedurer | "lpr_sksopr" |
recnum |
Frem til 2018 | c_opr, d_odto |
| LPR2 psyk kontakter | "t_psyk_adm" |
k_recnum → recnum |
1995–marts 2019 | v_cpr → pnr |
| LPR2 psyk diagnoser | "t_psyk_diag" |
v_recnum → recnum |
1995–marts 2019 | c_diag, c_diagtype |
| LPR3 kontakter | "lpr_a_kontakt" |
dw_ek_kontakt |
Marts 2019+ | kont_starttidspunkt (datetime) |
| LPR3 diagnoser | "lpr_a_diagnose" |
dw_ek_kontakt |
Marts 2019+ | diag_kode, diag_kode_type, senere_afkraeftet |
| LPR3 SKS-procedurer | "procedurer_kirurgi" |
dw_ek_forloeb |
2019+ | procedurekode, dato_start |
| LMDB | "lmdb" |
pnr |
Ca. 1994+ | atc, eksd |
| UDDA | "udda" |
pnr |
Alle år | hfaudd, aar |
| FAIK | "faik" |
familie_id |
Alle år | famaekvivadisp_13 |
| AKM | "akm" |
pnr |
Alle år | socio13, aar |
| Projekt-specifikke registre | Se projektvejledning | pnr |
Varierer | DARTER: se registersti → |
1. Demografi og dødsfald
BEF — Befolkningsregistret
Statusregister — ét snapshot per person per referencetidspunkt (ultimo perioden). Leveres kvartalsvist siden 2008 (marts, juni, september, december); før 2008 kun december. At aar == 2020 svarer til et bestemt referencetidspunkt afhænger af projektkonventionen — bekræft i din projektvejledning. En person der dør i løbet af 2020 optræder stadig i 2020-snapshottet — brug DODSAARS til at afgøre om en person var i live på en specifik dato.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
koen |
numeric | Køn: 1 = mand, 2 = kvinde |
foed_dag |
Date | Fødselsdato |
aar |
integer | Registerår (én post per år) |
familie_id |
character | Husstandsnøgle — join til FAIK |
reg |
character | Region |
civst |
character | Civilstand |
BEF indeholder ikke dødsdato. Brug DODSAARS (d_dodsdto) til censurering. Se DST’s officielle BEF-dokumentation: statistikdokumentation/befolkningen →
DODSAARS — Dødsregistret
Én række per afdød person.
Dækningsperiode og tilgængelighed afhænger af dit projekts cleaned-data. Tjek modificeringsdato og spørg din datamanager om aktuel dækning.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
d_dodsdto |
Date | Dødsdato — brug denne til censurering |
fdato |
Date | Fødselsdato |
c_sex |
character | Køn |
v_alder |
numeric | Alder ved dødsfald |
year |
integer | Dødsår |
c_dod1 |
character | Underliggende dødsårsag (ICD-10) |
c_dod2–c_dod4 |
character | Medvirkende dødsårsager |
c_dodskom |
character | Dødsmåde/-sted |
c_bopkom |
character | Bopælskommune ved dødsfald |
dodsaasg er klassifikationsregistret for dødsårsager — det er ikke kilden til individuelle dødsdatoer. Brug altid dodsaars med kolonnen d_dodsdto.
VNDS — Migrationsregistret
Én række per migrationsbegivenhed per person.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
indud_kode |
character | "U" = udvandring (brug til censurering), "I" = indvandring |
haend_dato |
Date | Begivenhedsdato |
Brug: filter(indud_kode == "U") → min(haend_dato) per pnr for første udvandringsdato. Ikke-udvandrere optræder ikke i VNDS med en “U”-hændelse og får emigration_date = NA.
2. LPR2 — Somatisk (frem til marts 2019)
Join: lpr_adm LEFT JOIN lpr_diag ON recnum.
lpr_adm — Kontakter
| Kolonne | Type | Indhold |
|---|---|---|
recnum |
character | Kontaktnøgle — join til lpr_diag |
pnr |
character | Personidentifikator |
d_inddto |
Date | Indlæggelsesdato — brug som kontaktdato |
c_pattype |
character | Kontakttype: "0" = indlagt, "1" = ambulant, "2" = skadestue |
d_uddto |
Date | Udskrivningsdato |
c_adiag |
character | Aktionsdiagnose (kopi — brug lpr_diag via join i stedet) |
c_spec |
character | Specialekode |
year |
integer | År |
lpr_diag — Diagnoser
| Kolonne | Type | Indhold |
|---|---|---|
recnum |
character | Join-nøgle til lpr_adm |
c_diag |
character | ICD-10-kode med D-præfiks (f.eks. "DG30") — brug substr(c_diag, 2, 4) |
c_diagtype |
character | "A" = aktionsdiagnose, "B" = bidiagnose, "G" = grundmorbus |
c_diagmod |
character | Diagnosemodifikator |
year |
integer | År |
3. LPR2 — Psykiatrisk (1995 – marts 2019)
Psykiatriske kontakter før marts 2019 er i separate registre fra somatisk LPR2. Fra marts 2019 dækker LPR3 begge i én tabel.
Glemmer du at forespørge de psykiatriske registre for perioden 1995–2019, misser du alle demensdiagnoser (F00–F03) stillet på geropsykiatriske ambulatorier og hukommelsesklinikker. De patienter vil fremstå demensfrie og forblive i kohorten som falske negativer.
t_psyk_adm — Psykiatriske kontakter
Kolonnenavne afviger fra somatisk LPR2 — omdøb ved load:
psyk_adm <- open_dataset("sti/til/t_psyk_adm/") %>%
rename_with(tolower) %>%
rename(pnr = v_cpr, recnum = k_recnum)| Rå kolonnenavn | Efter rename | Type | Indhold |
|---|---|---|---|
v_cpr |
→ pnr |
character | Personidentifikator |
k_recnum |
→ recnum |
character | Kontaktnøgle — join til t_psyk_diag |
d_inddto |
(uændret) | Date | Kontaktdato — samme som lpr_adm |
c_pattype |
(uændret) | character | Kontakttype |
t_psyk_diag — Psykiatriske diagnoser
psyk_diag <- open_dataset("sti/til/t_psyk_diag/") %>%
rename_with(tolower) %>%
rename(recnum = v_recnum)| Rå kolonnenavn | Efter rename | Type | Indhold |
|---|---|---|---|
v_recnum |
→ recnum |
character | Join-nøgle til t_psyk_adm |
c_diag |
(uændret) | character | ICD-10 med D-præfiks — brug substr(c_diag, 2, 4) |
c_diagtype |
(uændret) | character | "A" / "B" / "G" — samme som lpr_diag |
4. LPR3 (marts 2019 og frem)
LPR3 dækker både somatiske og psykiatriske kontakter i én tabel. Join: lpr_a_kontakt LEFT JOIN lpr_a_diagnose ON dw_ek_kontakt.
“a” i lpr_a_diagnose betyder ikke A-type diagnoser. Det refererer til analysemodel-betegnelsen for LPR3-serien (LPR_A, introduceret 2025). Tabellen indeholder alle typer: A, B og G — du skal stadig filtrere på diag_kode_type.
lpr_a_kontakt — Kontakter
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
dw_ek_kontakt |
character | Kontaktnøgle — join til lpr_a_diagnose |
kont_starttidspunkt |
datetime | Kontaktstarttidspunkt — konverter med as.Date() |
kont_type |
character | Kontakttype: "ALCA00" = indlagt |
kont_sluttidspunkt |
datetime | Kontaktsluttidspunkt |
kont_ans_hovedspec |
character | Specialekode |
borger_doedsdato |
Date | Dødsdato (kopi fra CPR) |
borger_foedselsdato |
Date | Fødselsdato (kopi fra CPR) |
borger_koen |
character | Køn (kopi fra CPR) |
year |
integer | År |
Alle bekræftede kolonner i lpr_a_kontakt
pnr, dw_ek_kontakt, kont_starttidspunkt, kont_sluttidspunkt, kont_type, kont_type_tekst, kont_patient_type, kont_patient_type_tekst, kont_ans_hovedspec, kont_ans_hovedspec_shak, kont_ans_inst, kont_ans, kont_ans_geo_reg, kont_ans_geo_reg_tekst, kont_ans_org_reg, kont_ans_org_reg_tekst, borger_doedsdato, borger_foedselsdato, borger_koen, borger_alder_aar_ind, borger_alder_aar_ud, borger_bo_kom, borger_bo_kom_tekst, borger_bo_reg, borger_bo_reg_tekst, dw_sk_sygehusophold, dw_ek_helbredsforloeb, dw_ek_forloeb, dw_ek_borger, adiag, adiag_tekst, beh_starttidspunkt, flag_kont_afsluttet, kont_aarsag, kont_aarsag_tekst, kont_indb_tidspunkt, kont_fir_kode, kont_fir_tekst, kont_fritvalg, kont_fritvalg_tekst, kont_henv_aarsag, kont_henv_aarsag_tekst, kont_henv_instans, kont_henv_maade, kont_henv_maade_tekst, kont_henv_tidspunkt, kont_inst_ejertype, lprindberetningssystem, prioritet, prioritet_tekst, kont_lpr_entity_id, cprtjek, cprtype, year
lpr_a_diagnose — Diagnoser
| Kolonne | Type | Indhold |
|---|---|---|
dw_ek_kontakt |
character | Join-nøgle til lpr_a_kontakt |
diag_kode |
character | ICD-10 med D-præfiks (f.eks. "DG30") — brug substr(diag_kode, 2, 4) |
diag_kode_type |
character | "A" = aktionsdiagnose, "B" = bidiagnose, "G" = grundmorbus |
senere_afkraeftet |
character | "Ja" = tilbagekaldt (ekskluder), "Nej" = bekræftet, NA = ikke registreret |
diag_kode_tekst |
character | ICD-10-kodetekst |
diag_parent_kode |
character | Overordnet diagnosekode |
year |
integer | År |
Standardfilter for senere_afkraeftet:
filter(is.na(senere_afkraeftet) | senere_afkraeftet != "Ja")5. LPR — SKS-procedurekoder
SKS (Sundhedsvæsenets Klassifikations System) er det danske klassifikationssystem for operationer og procedurer — svarende til NOMESCO-koderne brugt i de øvrige nordiske lande. Bariatrisk kirurgi har f.eks. koderne KJDF10 (RYGB) og KJDF40 (sleeve gastrektomi).
SKS-koder er splittet over to registre afhængigt af periode. Til en fuld dækning skal begge forespørges og resultatet bindes sammen.
Ingen pnr i proceduretabellerne. pnr hentes via join til henholdsvis lpr_adm (LPR2) eller lpr_a_kontakt (LPR3).
lpr_sksopr — LPR2 SKS-procedurer (frem til 2018)
Placering: parquet-registers/lpr_sksopr
lpr_sksopr <- open_dataset("sti/til/lpr_sksopr/") %>%
rename_with(tolower)| Kolonne | Type | Indhold |
|---|---|---|
recnum |
character | Join-nøgle til lpr_adm |
c_opr |
character | SKS-procedurekode — brug denne til matching (f.eks. "KJDF10") |
d_odto |
Date | Operationsdato |
c_oprart |
character | Procedureart-kode |
c_osgh |
character | Opererende sygehus |
c_tilopr |
character | Supplerende procedurekode |
year |
integer | År (partitionskolonne) |
procedurer_kirurgi — LPR3 SKS-procedurer (2019 og frem)
Placering: parquet-external/procedurer_kirurgi
proc_kirurgi <- open_dataset("sti/til/procedurer_kirurgi/") %>%
rename_with(tolower)| Kolonne (efter tolower) | Type | Indhold |
|---|---|---|
dw_ek_forloeb |
character | Join-nøgle til lpr_a_kontakt — brug denne til pnr-opslag |
dw_ek_kontakt |
character | NA for alle rækker i denne parquet-fil på DARTER — brug dw_ek_forloeb i stedet |
procedurekode |
character | SKS-procedurekode — brug denne til matching (f.eks. "KJDF10") |
dato_start |
Date | Proceduredato |
proceduretype |
character | "P" = procedure, "+" = add-on kode |
procedurekode_parent |
character | Overordnet procedurekode |
proceduretype_parent |
character | Overordnet proceduretype |
tidspunkt_start |
datetime | Proceduretidspunkt |
dato_slut |
Date | Procedureslutdato |
tidspunkt_slut |
datetime | Proceduresluttidspunkt |
lprindberetningssystem |
character | LPR-indberetningssystem |
sorenhed_pro |
character | SOR-enhed for proceduren |
procedureregistrering_id |
character | Internt registrerings-ID |
dw_ek_kontakt er NA for alle rækker i DARTER’s parquet-version af procedurer_kirurgi (bekræftet 2026-06-02). Join til lpr_a_kontakt via dw_ek_forloeb for at hente pnr. Gælder DARTER/projekt 708421 — tjek på dit eget projekt. Kolonnenavnene er blandet store/små bogstaver i rådata — kald rename_with(tolower) umiddelbart efter load.
Kombination over hele perioden
# Erstat [projektnummer] med dit eget projektnummer
# DARTER: brug load_database("registernavn") i stedet for open_dataset("sti")
# SKS fra LPR2 (frem til 2018)
opr_lpr2 <- open_dataset("sti/til/lpr_sksopr/") %>%
rename_with(tolower) %>%
filter(toupper(c_opr) %in% !!SKS_KODER) %>% # !! sender den lokale R-vektor til DuckDB
left_join(
open_dataset("sti/til/lpr_adm/") %>%
rename_with(tolower) %>%
select(recnum, pnr, d_inddto),
by = "recnum"
) %>%
select(pnr, opr_dato = d_odto, opr_kode = c_opr) %>%
collect()
# SKS fra LPR3 (2019 og frem) — join via dw_ek_forloeb
opr_lpr3 <- open_dataset("sti/til/procedurer_kirurgi/") %>%
rename_with(tolower) %>%
filter(toupper(procedurekode) %in% !!SKS_KODER) %>% # !! sender den lokale R-vektor til DuckDB
left_join(
open_dataset("sti/til/lpr_a_kontakt/") %>%
rename_with(tolower) %>%
select(dw_ek_forloeb, pnr),
by = "dw_ek_forloeb"
) %>%
select(pnr, opr_dato = dato_start, opr_kode = procedurekode) %>%
collect()
# Samlet
opr_alle <- bind_rows(opr_lpr2, opr_lpr3)6. LMDB — Lægemiddelstatistikregistret
Én række per ekspederet recept. Dækker ca. 1994 og frem.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
atc |
character | Fuld ATC-kode (f.eks. "N06D01") |
eksd |
Date | Ekspeditionsdato — brug som receptdato |
atc1–atc4 |
character | ATC-niveauer 1–4 |
indo |
character | Indikationskode |
vnr |
character | Varenummer |
apk |
numeric | Pakningsstørrelse |
aldr |
numeric | Alder ved ekspedition |
year |
integer | Ekspeditionsår |
Alle bekræftede kolonner i LMDB
pnr, eksd, ekst, atc, atc1, atc2, atc3, atc4, indo, vnr, apk, aldr, bald, eksp, korr, rinr, name, streng, packtext, volume, voltypecode, voltypetxt, dosform, strnum, strunit, packsize, cprtjek, cprtype, year, etid, ovnr, patt, doso, reca, abc
7. Socioøkonomiske registre
Alle tre registre bruges til SEP-udtræk i 03_extract_ses.R efter SEPLINE-retningslinjerne (Hjorth et al. 2025). Ingen samlet SEP-variabel beregnes — tre separate dimensioner.
UDDA — Uddannelsesregistret
Én post per person per år — opdateres, når uddannelsesniveauet ændrer sig.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
hfaudd |
character | ISCED-uddannelseskode (f.eks. "35" = erhvervsuddannelse) |
aar |
integer | Registerår |
Kategorisering (SEPLINE): substr(as.character(hfaudd), 1, 2) → "10"/"15" = kort, "20"–"35" = mellemlang, "40"–"80" = lang, "90" = ukendt.
FAIK — Familieindkomst
Husstandsækvivaleret disponibel indkomst per år. Link: join BEF (pnr, familie_id, aar) med FAIK (familie_id, aar).
| Kolonne | Type | Indhold |
|---|---|---|
familie_id |
character | Husstandsnøgle — join til BEF |
famaekvivadisp_13 |
numeric | Husstandsækvivaleret disponibel indkomst |
aar |
integer | Registerår |
Indkomstkvintiler beregnes som 3-årsgennemsnit sammenlignet med Q20/Q40/Q60/Q80-grænseværdier fra den fulde BEF-population stratificeret på køn × 5-årsaldersgruppe × referenceår.
AKM — Arbejdsklassifikationsmodulet
Arbejdsmarkedsstatus per person per år.
| Kolonne | Type | Indhold |
|---|---|---|
pnr |
character | Personidentifikator |
socio13 |
numeric | Beskæftigelseskode |
aar |
integer | Registerår |
SEPLINE-kategorisering af socio13: - Beskæftiget: 110–114, 120, 131–135, 139 - Studerende: 310 - Ledig: 210, 410 - Udenfor arbejdsmarkedet: 220, 321, 330 - Pensionist: 322, 323 - Ukendt: 0, 420 eller manglende
8. Projekt-specifikke registre
Mange projekter har adgang til registre ud over standardlisten ovenfor — fx kvalitetsregistre fra kliniske databaser eller færdigberegnede klassifikationsfiler.
Disse er projekt-specifikke og ikke tilgængelige i alle projekter på DST.
Arbejder du på DARTER / projekt 708421? Projektet bruger bl.a. DBSO (Databasen for Behandling af Svær Overvægt) og OSDC (Open Source Diabetes Classifier).
- Alle ansøgte variable og registre i en søgbar tabel: steno-aarhus.github.io/darter-project →
- Bekræftede stier og kolonnenavne: DARTER — Registersti og datastores →