From e47fb5a07848d1766c757f2f52e1e693563267d6 Mon Sep 17 00:00:00 2001 From: kevinthon Date: Wed, 20 Dec 2023 16:03:42 +0100 Subject: [PATCH] videreutvikling --- NAMESPACE | 1 + R/norspisBeregnIndikator.R | 117 ++++++++++++++++++++++++++++++++++- R/norspisLesOgProsesser.R | 58 +++++++++++++++++ data/resh_voksen_barn.rda | Bin 0 -> 762 bytes data/variabeloversikt.rda | Bin 0 -> 1750 bytes doc/kladd_indikatorer.R | 86 ++++++++++++++++++------- man/norspisLesOgProsesser.Rd | 11 ++++ 7 files changed, 249 insertions(+), 24 deletions(-) create mode 100644 R/norspisLesOgProsesser.R create mode 100644 data/resh_voksen_barn.rda create mode 100644 data/variabeloversikt.rda create mode 100644 man/norspisLesOgProsesser.Rd diff --git a/NAMESPACE b/NAMESPACE index 26ccd8f..30764ec 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -15,6 +15,7 @@ export(appUi) export(binomkonf) export(norspisApp) export(norspisBeregnIndikator) +export(norspisLesOgProsesser) export(norspisPlotIndikator) export(queryAlleScorer) export(queryBehandling) diff --git a/R/norspisBeregnIndikator.R b/R/norspisBeregnIndikator.R index 5e6686b..a73d31d 100644 --- a/R/norspisBeregnIndikator.R +++ b/R/norspisBeregnIndikator.R @@ -151,6 +151,122 @@ norspisBeregnIndikator <- function(RegData, ind_id = "norspis_KI1_symptomreduksj tittel <- c("Andelen som rapporterer Klar bedring", "eller Ikke noe problem lenger (BU)") } + if (ind_id == "norspis_involvering_famlie_venner_BU") { + + Indikator <- RegData %>% + filter(!is.na(PT02BleInvolv) & PT02BleInvolv!= 9, + !Over18_start) %>% + mutate(year = format(RegHendelsesdato_slutt, "%Y") %>% as.numeric(), + var = PT02BleInvolv, + denominator = 1) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 100 + tittel <- c("Andelen som rapporterer at familie og/eller", "venner ble involvert i behandlingen (BU)") + } + + if (ind_id == "norspis_involvering_famlie_venner_V") { + + Indikator <- RegData %>% + filter(PT01OnsketInvolv == 1, + !is.na(PT02BleInvolv) & PT02BleInvolv != 9, + Over18_start) %>% + mutate(year = format(RegHendelsesdato_slutt, "%Y") %>% as.numeric(), + var = PT02BleInvolv, + denominator = 1) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 100 + tittel <- c("Andelen som rapporterer at familie og/eller", "venner ble involvert i behandlingen (V)") + } + + if (ind_id == "norspis_undervekt_prodprove") { + + Indikator <- RegData %>% + mutate(bmi = ifelse(!is.na(MedIsoBMIBGS_start), + MedIsoBMIBGS_start, MedBMI_start)) %>% + filter(!is.na(bmi), + bmi < 18.5, + MedBlodprove_start %in% c(0,1)) %>% + mutate(var = MedBlodprove_start, + denominator = 1, + year = format(RegHendelsesdato_start, "%Y") %>% as.numeric()) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 90 + tittel <- c("Andelen undervektige pasienter (BMI < 18,5) ved ", "start, der det er tatt blodprøver ved start.") + } + + if (ind_id == "norspis_oppkast_prodprove") { + + Indikator <- RegData %>% + filter(!is.na(EDE16GgrOppkast_start), + MedBlodprove_start %in% c(0,1)) %>% + mutate(var = MedBlodprove_start, + denominator = 1, + year = format(RegHendelsesdato_start, "%Y") %>% as.numeric()) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 90 + tittel <- c("Andelen med alvorlig eller ekstremt oppkast ved", "start, der det er tatt blodprøver ved start.") + } + + if (ind_id == "norspis_beintetthetsmaling_V") { + + Indikator <- RegData %>% + mutate(bmi = ifelse(!is.na(MedIsoBMIBGS_start), + MedIsoBMIBGS_start, MedBMI_start), + BeintetthMaling = ifelse(MedBeintetthMaling_start == 1 | + MedBeintetthMaling_slutt == 1, + 1, 0)) %>% + filter(Over18_start, + bmi < 18.5, + MedBeintetthMaling_start %in% 0:1 | + MedBeintetthMaling_slutt %in% 0:1) %>% + mutate(BeintetthMaling = ifelse(is.na(BeintetthMaling), 0, BeintetthMaling)) %>% + mutate(var = BeintetthMaling, + denominator = 1, + year = format(RegHendelsesdato_start, "%Y") %>% as.numeric()) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 90 + tittel <- c("Andelen undervektige ved start der det", "oppgis at det er gjort en beintetthetsmåling (V)") + } + + if (ind_id == "norspis_beintetthetsmaling_BU") { + + Indikator <- RegData %>% + mutate(bmi = ifelse(!is.na(MedIsoBMIBGS_start), + MedIsoBMIBGS_start, MedBMI_start), + BeintetthMaling = ifelse(MedBeintetthMaling_start == 1 | + MedBeintetthMaling_slutt == 1, + 1, 0)) %>% + filter(!Over18_start, + bmi < 18.5, + MedBeintetthMaling_start %in% 0:1 | + MedBeintetthMaling_slutt %in% 0:1) %>% + mutate(BeintetthMaling = ifelse(is.na(BeintetthMaling), 0, BeintetthMaling)) %>% + mutate(var = BeintetthMaling, + denominator = 1, + year = format(RegHendelsesdato_start, "%Y") %>% as.numeric()) %>% + select(AvdRESH, year, var, denominator, Kortnavn, AvdBUV_start) %>% + rename(SykehusNavn = Kortnavn) %>% + mutate(ind_id = ind_id, + context = "caregiver") + maal <- 90 + tittel <- c("Andelen undervektige ved start der det", "oppgis at det er gjort en beintetthetsmåling (BU)") + } + indikatordata <- list(indikator=Indikator, tittel=tittel, terskel=terskel, @@ -160,5 +276,4 @@ norspisBeregnIndikator <- function(RegData, ind_id = "norspis_KI1_symptomreduksj width=width, height=height, maalretn=maalretn) - } diff --git a/R/norspisLesOgProsesser.R b/R/norspisLesOgProsesser.R new file mode 100644 index 0000000..4dbb3a0 --- /dev/null +++ b/R/norspisLesOgProsesser.R @@ -0,0 +1,58 @@ +#' Les og preprosesser data for Norspis +#' +#' Leg nødvendige tabeller for Norspis og returner en utflatet dataramme +#' +#' @export +#' +norspisLesOgProsesser <- function() { + + AlleScorer <- norspis::queryAlleScorer("norspis") + EnkeltLeddNum <- norspis::queryEnkeltLeddNum("norspis") + ForlopsOversikt <- norspis::queryForlopsOversikt("norspis") + + AlleScorer <- + AlleScorer[ , setdiff(names(AlleScorer), + norspis::variabeloversikt$Variabelnavn[norspis::variabeloversikt$Tabell == "AlleScorer" & + norspis::variabeloversikt$status == "Utgaatt"])] + EnkeltLeddNum <- + EnkeltLeddNum[ , setdiff(names(EnkeltLeddNum), + norspis::variabeloversikt$Variabelnavn[norspis::variabeloversikt$Tabell == "EnkeltLeddNum" & + norspis::variabeloversikt$status == "Utgaatt"])] + + RegData <- merge(EnkeltLeddNum, + ForlopsOversikt[, c("ForlopsID", "ForlopsType1Num", + "ForlopsType1", "BasisRegStatus", + "PasientAlder", "Fodselsdato")], + by = "ForlopsID") %>% + dplyr::filter(BasisRegStatus == 1) %>% + merge(AlleScorer, by = "ForlopsID") %>% + merge(norspis::resh_voksen_barn[, c("AvdRESH", "AvdBUV", + "Kortnavn", "orgnr")], + by = "AvdRESH", all.x = TRUE) %>% + dplyr::mutate(AvdBUV = ifelse(AvdRESH == 109979 & ForlopsType1Num %in% c(1,3,5,7,98), + "V", AvdBUV), + Kortnavn = ifelse(AvdRESH == 109979 & ForlopsType1Num %in% c(1,3,5,7,98), + "OUS: Reg. V", Kortnavn), + Over18 = ifelse(PasientAlder >= 18, TRUE, FALSE)) + + RegData_start <- RegData[RegData$ForlopsType1Num %in% 3:4, ] + RegData_start <- + RegData_start[, setdiff(names(RegData_start), + norspis::variabeloversikt$Variabelnavn[norspis::variabeloversikt$status == "IkkeStart"])] + RegData_slutt <- RegData[RegData$ForlopsType1Num %in% 5:6, ] + RegData_slutt <- + RegData_slutt[ , setdiff(names(RegData_slutt), + norspis::variabeloversikt$Variabelnavn[norspis::variabeloversikt$status == "IkkeSlutt"])] + RegData_slutt <- RegData_slutt[ , setdiff(names(RegData_slutt), + c("AvdRESH", "Kortnavn", + "PasientID", "SykehusNavn", + "orgnr"))] + + RegData <- merge(RegData_start, RegData_slutt, + by.x = "ForlopsID", by.y = "RegTilhorendeStartReg", + suffixes = c("_start", "_slutt"), + all.x = TRUE) + +} + + diff --git a/data/resh_voksen_barn.rda b/data/resh_voksen_barn.rda new file mode 100644 index 0000000000000000000000000000000000000000..8ab59b3e89a60771548e43b86b44aab2e9116724 GIT binary patch literal 762 zcmV&)-H<>4K>*E)&_&2o z1SCV6951J0GK8KCIA4Km;eBnn1D!> z2~R1J>OBy`H>xxNpwXs*pc)zmjWT2n8a9(a00*c8M=*=^aUo_9ecuvQ-p;RdWk3PI z26PAqW+HoHf!8_fPy|t3^<0pu6&W$)) zIU?;?x$CCKDLoN3ws{c}5T#(*DLZ3BVOEKj?V{Mec(mwoDW$A7plzdn3@rMf^9{7Z zYI84*9BXWPbC$iAC3gF`8TM#WQ$X@P8aNb+_29A^ua%!7M~6ck44kQeRpl_!XkMm$ zhZ4*hq&P#kw0zg+2!indH_AYdLVo)kHFK8MB+{e1PVMU)N2nD zK~&xy8zECH!wTS6<(g8=)woJbeA7XcBd+6nu7WK=lx4BJ8d1@sDBR44fR(qFcFo}o z&82M|ZEWatei)vaD}6!~)t4dsH_KVlax_ar+to@@ z2hk(!=06HGxmxHYRt$um;v&!%EwHs@k?E}uv3n^#(-SO&ygC7J*^q=v2p|+NfEi|a zB$7!a(QuR@D+E1=LPV?*CG-i}sb*l{&bS5qJaf$PAP_7*%o2gp9ea%dE>A5QaB0$w zG`5>(Th?5TNiL&(iXDKpYhI~wWW`HOH(J!JnA{HbIMIwm6+Ag7E2l=Pxe*|2Iou-~ z{5eZF5dtaKj_*#Fz2FCSiJjjDM@Rq>lB%-;YJ+eI6cR~Rete<;h&>>g>I4X_e2hSY z+$HjYe5f5=HTa~@KhskMev27pjL)E3THE5rnqZmbt?6RD)t|{D3zh zrViDZ5dQqSECjX{?qLA9=I(@7p1u>ZyB#DE&9Qp5&l@QakYqp|0FW8CZnR66AAL$) z`*i=d0z2$S6< z*J(q307y8cY`u&K7C|v!Lj4{kv|2Um<3DNq%qB?kguMs5uLrw5Qw^6Y9}mG9=jFj6 z1jfe4)Qz<`d9~zp5*5SfHQxZ|{JsM9Vd=t&4e89J@A&*l3fO60-9&4k7%|l#K}=$M>QsygQ~`ny4Xr6fkHwXNI=xi$JCG@ zbrkxS5hLUT2#IqwGrcF;snxO$^`bz7n6by7OR4)#{aek?fxJSwk=|lkSTN&G#X=t= z^{Dv@>r5Jk$9RSVYcquPo_~5olQtQe{oT-tDtOpfV}z9n8CE8RQ6W}K@~Vo5DZ5sM z(g#p8}Ky#oJT0{v6Q6NCdj7m*){%8_RngQf|B8~{imd*PZLx#0D zZd9nHVk9axIFGvF9oIm+8hTn@frd!RqyXS=W)zVapix4*R>-QM4Ld?WftwN$V&ZcZ zl0pZ>K^B>NFf#|h?JNNCOgx4IuL3CvRq5MpqV#aTrX&;}(EjgjPshwLGxE zGrk$!_$b~T_`%1G4=`1n@gSkBkb|^5Vr{M zzqbQi*2zOPsZtDoShT@tta~un5>NqTBoM^ghwrXOh?fVr;{zXGWOy4?OrD@>FaV_ZxoAHt4S6E-LYs`Nn{o0TB=( z4J3xZOo(zB5*Z3DDY=9Yplk+2RUkoOD6U0j6Isl~Pq`rj8xOZX_!w6jh3|% +# rename(AvdRESH = RESH, +# Kortnavn = `Kortnavn i årsrapporten`, +# AvdBUV = `Barn/unge (BU) eller voksen (V)`, +# orgnr = Org.nr.) %>% +# select(AvdRESH, Kortnavn, AvdBUV, orgnr) +# +# write.csv(resh_voksen_barn, "~/mydata/norspis/tmp.csv", row.names = F) + resh_voksen_barn <- - readxl::read_xlsx("~/mydata/norspis/RESH, navn, BUV, org.nr. 18.12.23.xlsx", - sheet = 1) -resh_voksen_barn <- resh_voksen_barn[match(unique(resh_voksen_barn$RESH), - resh_voksen_barn$RESH), ] + tibble::tribble( + ~AvdRESH, ~Kortnavn, ~AvdBUV, ~orgnr, + 106854,"NKS Jæren DPS","V",333333, + 4210626,"HSYK: Allm.pol. BU Mosjøen","BU",875326562, + 4210303,"ST. OLAVS: Spes.pol. V","V",883974832, + 4208548,"DIAKONSYK: Allm.pol. V","V",974116804, + 700698,"UNN: Reg.døgn BU","BU",974547031, + 707383,"AHUS: EFS Spes.pol. V","V",974705168, + 4207041,"AHUS: EFS Spes.døgn V","V",974705168, + 105806,"HNT: Reg. V","V",974754142, + 700821,"NLSH: Reg. V","V",974795345, + 4210562,"NLSH: Spes.pol. BU","BU",975296008, + 4210825,"HSYK: Allm.pol. V Mosjøen","V",975326551, + 4204191,"CAPIO: Spes.døgn BU","BU",980524493, + 4208300,"SIHF: Spes.døgn V","V",983971709, + 4204275,"SOHF: Spes.døgn V","V",983971768, + 4207697,"HNT: MHOBY","V",983974791, + 102152,"HSYK: Allm.pol. V Sandnessjøen","V",983974929, + 102154,"HSYK: Allm.pol. BU Sandnessjøen","BU",983974929, + 104083,"SSHF: Spes.døgn V","V",983975240, + 105008,"SSHF: Allm.pol. V Arendal/Froland","V",983975240, + 108462,"SSHF Allm.pol. V Solvang","V",983975240, + 104364,"SIV: Spis.pol. V","V",983975259, + 4209009,"SIV: Spes.pol. BU","BU",983975259, + 109979,"OUS: Reg. BU","BU",987547243, + 107026,"HB: Reg. V","V",991992677, + 110361,"OUS: Spes.pol. V","V",998158923) + + variabeloversikt <- readxl::read_xlsx("~/mydata/norspis/Variabler i forløp v2.xlsx", - sheet = 1) + sheet = 1) %>% + rename(status = `Start/slutt/utgått`, + OppfolgingNum = `Også i tabellen OppfolgingNum`) %>% + mutate(status = case_when(status == "Ikke slutt" ~ "IkkeSlutt", + status == "Ikke start" ~ "IkkeStart", + status == "Utgått" ~ "Utgaatt")) AlleScorer <- queryAlleScorer("norspis") @@ -17,11 +60,11 @@ EnkeltLeddNum <- queryEnkeltLeddNum("norspis") ForlopsOversikt <- norspis::queryForlopsOversikt("norspis") AlleScorer <- AlleScorer[ , setdiff(names(AlleScorer), - variabeloversikt$Variabelnavn[variabeloversikt$Tabell == "AlleScorer" & - variabeloversikt$`Start/slutt/utgått` == "Utgått"])] + variabeloversikt$Variabelnavn[variabeloversikt$Tabell == "AlleScorer" & + variabeloversikt$status == "Utgaatt"])] EnkeltLeddNum <- EnkeltLeddNum[ , setdiff(names(EnkeltLeddNum), - variabeloversikt$Variabelnavn[variabeloversikt$Tabell == "EnkeltLeddNum" & - variabeloversikt$`Start/slutt/utgått` == "Utgått"])] + variabeloversikt$Variabelnavn[variabeloversikt$Tabell == "EnkeltLeddNum" & + variabeloversikt$status == "Utgaatt"])] RegData <- merge(EnkeltLeddNum, ForlopsOversikt[, c("ForlopsID", "ForlopsType1Num", @@ -30,36 +73,33 @@ RegData <- merge(EnkeltLeddNum, by = "ForlopsID") %>% filter(BasisRegStatus == 1) %>% merge(AlleScorer, by = "ForlopsID") %>% - merge(resh_voksen_barn[, c("RESH", "Barn/unge (BU) eller voksen (V)", - "Kortnavn i årsrapporten", "Org.nr.")], - by.x = "AvdRESH", by.y = "RESH", all.x = TRUE) %>% - rename(AvdBUV = `Barn/unge (BU) eller voksen (V)`, - Kortnavn = `Kortnavn i årsrapporten`, - orgnr = Org.nr.) %>% + merge(resh_voksen_barn[, c("AvdRESH", "AvdBUV", + "Kortnavn", "orgnr")], + by = "AvdRESH", all.x = TRUE) %>% mutate(AvdBUV = ifelse(AvdRESH == 109979 & ForlopsType1Num %in% c(1,3,5,7,98), "V", AvdBUV), + Kortnavn = ifelse(AvdRESH == 109979 & ForlopsType1Num %in% c(1,3,5,7,98), + "OUS: Reg. V", Kortnavn), Over18 = ifelse(PasientAlder >= 18, TRUE, FALSE)) RegData_start <- RegData[RegData$ForlopsType1Num %in% 3:4, ] RegData_start <- RegData_start[ , setdiff(names(RegData_start), - variabeloversikt$Variabelnavn[variabeloversikt$`Start/slutt/utgått` == "Ikke start"])] + variabeloversikt$Variabelnavn[variabeloversikt$status == "IkkeStart"])] RegData_slutt <- RegData[RegData$ForlopsType1Num %in% 5:6, ] RegData_slutt <- RegData_slutt[ , setdiff(names(RegData_slutt), - variabeloversikt$Variabelnavn[variabeloversikt$`Start/slutt/utgått` == "Ikke slutt"])] + variabeloversikt$Variabelnavn[variabeloversikt$status == "IkkeSlutt"])] RegData_slutt <- RegData_slutt[ , setdiff(names(RegData_slutt), c("AvdRESH", "Kortnavn", "PasientID", "SykehusNavn", "orgnr"))] - - RegData <- merge(RegData_start, RegData_slutt, by.x = "ForlopsID", by.y = "RegTilhorendeStartReg", suffixes = c("_start", "_slutt"), all.x = TRUE) -indikatordata <- norspisBeregnIndikator(RegData, ind_id = "norspis_KI4_utfallsvurdering_BU") +indikatordata <- norspisBeregnIndikator(RegData, ind_id = "norspis_involvering_famlie_venner_V") norspisPlotIndikator(indikatordata) # tmp <- RegData %>% filter(ForlopsID %in% (RegData %>% summarise(N=n(), .by = ForlopsID) %>% filter(N>1) %>% select(ForlopsID) %>% unlist())) @@ -107,7 +147,7 @@ Indikator7 <- RegData %>% MedBlodprove_start %in% c(0,1)) %>% mutate(var = MedBlodprove_start, denominator = 1, - year = format(RegHendelsesdato_start, "%Y") %>% as.numeric(),) %>% + year = format(RegHendelsesdato_start, "%Y") %>% as.numeric()) %>% select(AvdRESH, year, var, denominator, SykehusNavn, AvdBUV_start) @@ -128,7 +168,7 @@ Indikator9 <- RegData %>% mutate(bmi = ifelse(!is.na(MedIsoBMIBGS_start), MedIsoBMIBGS_start, MedBMI_start), BeintetthMaling = ifelse(MedBeintetthMaling_start == 1 | - MedBeintetthMaling_slutt == 1, + MedBeintetthMaling_slutt == 1, 1, 0)) %>% filter(Over18_start, bmi < 18.5, @@ -180,7 +220,7 @@ Indikator3 <- RegData %>% mutate(bmi = ifelse(!is.na(MedIsoBMIBGS_start), MedIsoBMIBGS_start, MedBMI_start), bmi_slutt = ifelse(!is.na(MedIsoBMIBGS_slutt), - MedIsoBMIBGS_slutt, MedBMI_slutt)) %>% + MedIsoBMIBGS_slutt, MedBMI_slutt)) %>% filter(!is.na(bmi), bmi < 18.5, !is.na(bmi_slutt)) %>% diff --git a/man/norspisLesOgProsesser.Rd b/man/norspisLesOgProsesser.Rd new file mode 100644 index 0000000..3150919 --- /dev/null +++ b/man/norspisLesOgProsesser.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/norspisLesOgProsesser.R +\name{norspisLesOgProsesser} +\alias{norspisLesOgProsesser} +\title{Les og preprosesser data for Norspis} +\usage{ +norspisLesOgProsesser() +} +\description{ +Leg nødvendige tabeller for Norspis og returner en utflatet dataramme +}