DARTER — Projektspecifikke faldgruber
Quirks og kendte problemer specifikt for projekt 708421
Denne side supplerer de generelle DST-faldgruber med problemer specifikke for DARTER-projektet.
1. Tjek at parquet-filerne er opdaterede
De fleste registre er pr. 2026 opdateret til slutningen af 2024 (bekræftet af Anders Aasted Isaksen/Marie Kempf Frydendahl, DARTER-team). dodsaars dækker dog kun ~1970–2001 — dødsfald efter 2001 fanges ikke af den nuværende kode.
# Tjek hvornår parquet-mappen sidst blev opdateret:
file.info("E:/workdata/708421/cleaned-data/parquet-registers/dodsaars/")$mtimeSamme gælder potentielt for andre registre. Bekræft altid at dækningen matcher din studieperiode, inden du kører pipeline.
Hvis parquet-filen ikke dækker din studieperiode: Du skal trække data fra den rå SAS-fil på DST. Kontakt din datamanager — de kan hjælpe med adgang til rådata og konvertering.
# Nuværende kode — fanger kun dødsfald frem til parquet-filens dækning:
dod <- load_database("dodsaars") %>% rename_with(tolower) # doven forbindelse
deaths <- dod %>%
filter(pnr %in% !!pnr_liste) %>% # kun kohortens pnr'er
select(pnr, d_dodsdto) %>% # kun dødsdato
collect() # hent ind i RKonsekvens ved manglende dækning: Komparatorer og BS-patienter der dør efter parquet-filens slutdato behandles som levende — det påvirker censurering og matching i 01_build_cohorts.R.
2. Kirurgi og procedurer
Procedurekoder er opdelt i to registre efter periode:
lpr_sksopr(parquet-registers) — procedurer og kirurgi 1996–2018, joines tillpr_admviarecnumprocedurer_kirurgi(parquet-external) — 2019 og frem, joines tillpr_a_kontaktviadw_ek_forloeb
dw_ek_kontakt er NA for alle rækker i procedurer_kirurgi (bekræftet 2026-06-02). Brug dw_ek_forloeb — ikke dw_ek_kontakt — til at hente pnr fra lpr_a_kontakt.
# FORKERT — dw_ek_kontakt er NA:
proc %>% left_join(kontakter, by = "dw_ek_kontakt") # joiner ingenting
# KORREKT — brug dw_ek_forloeb:
proc <- load_database("procedurer_kirurgi") %>%
rename_with(tolower) %>%
left_join(
load_database("lpr_a_kontakt") %>%
rename_with(tolower) %>%
select(dw_ek_forloeb, pnr),
by = "dw_ek_forloeb"
)3. lpr_a_diagnose — “a” betyder ikke A-type diagnoser
Tabellen hedder lpr_a_diagnose — “a” refererer til analysemodel-betegnelsen (LPR_A-serien). Det er ikke et filter på A-type diagnoser. Tabellen indeholder A, B og G. Du skal stadig filtrere på diag_kode_type.
4. nmi_count ≠ nmi_score
| Variabel | Hvad den er |
|---|---|
nmi_score |
Vægtet score — Nordic Multimorbidity Index (50 prediktorer med individuelle vægte) |
nmi_count |
Simpel optælling af antal kroniske tilstande (33 mulige) |
Bruger du nmi_count i din Cox-model i stedet for nmi_score, justerer du for noget andet end du tror.
5. LPR3 — filtrer på lprindberetningssystem == "LPR3"
LPR_A-registrene (lpr_a_kontakt, lpr_a_diagnose) indeholder data fra to formater: det gamle LPR_F og det nye LPR_A. Begge eksisterer i projektet og dækker overlappende perioder. Uden filteret får du duplikerede rækker (bekræftet af Anders Aasted Isaksen, DARTER-team 2026).
# KORREKT — filtrer til kun LPR_A-format:
lpr3_k <- load_database("lpr_a_kontakt") %>%
rename_with(tolower) %>%
filter(lprindberetningssystem == "LPR3") # fjerner LPR_F-overlap og duplikaterget_lpr_diagnoses() i darter/00_index.qmd er opdateret med dette filter. Har du kopier af LPR3-koden i egne scripts, skal du tilføje det manuelt.
6. Laboratoriesvar — brug laboratorieproevesvar_
Det nye laboratoriedataregister hedder laboratorieproevesvar_ og indeholder >2,2 milliarder rækker. Det gamle lab_forsker / lab_dm_forsker eksisterer stadig men dækker samme data — brug kun én kilde for at undgå duplikater.
lab <- load_database("laboratorieproevesvar_") %>%
rename_with(tolower) %>%
filter(pnr %in% !!kohort$pnr) %>% # filtrer FØR collect — registret er meget stort
select(pnr, npu, samplingdato, samplevalue) %>%
collect()
# samplevalue er character — kan indeholde "ikke påvist", "negativ" mv.Se også
- Generelle DST-faldgruber — 10 faldgruber der gælder alle projekter
- Registersti og datastores — bekræftede stier og adgangsmetoder