diff --git a/R/GetRegData.R b/R/GetRegData.R index 9567c0a..071bdf3 100644 --- a/R/GetRegData.R +++ b/R/GetRegData.R @@ -193,7 +193,9 @@ SELECT var.AkseptabelSmerte12, var.AkseptabelSmerte21, var.Funksjon12, - var.Funksjon21 + var.Funksjon21, + var.AngiNRS12, + var.AngiNRS21 FROM AlleVarNum var WHERE @@ -380,7 +382,6 @@ WHERE } - #' @rdname getRegData #' @export getLocalYears <- function(registryName, reshId, userRole) { diff --git a/inst/LokalIndikatorMaaned.Rmd b/inst/LokalIndikatorMaaned.Rmd index edd2eb8..2181574 100644 --- a/inst/LokalIndikatorMaaned.Rmd +++ b/inst/LokalIndikatorMaaned.Rmd @@ -811,3 +811,161 @@ if (dim(plotnedtr)[1] < 1) { ``` `r messageplotfunk` + +# NRS og kvalitetsforbedringsprosjektet +Her legges midlertidig inn oversikt til bruk i kvalitetsforbedringsprosjektet vedrørende NRS. + +```{r NRS2-12, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRS2 <- "" + +dat_utvalg <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 != 2 & AngiNRS21 != 2) + +#De med nedgang i smerte for StSmBe + #Antall i utvalget vårt + ant_utvalg <- nrow(dat_utvalg) + +dat_utvalgtils <- dat %>% + dplyr::filter(Tilsett == 1) +ant_utvalgtils <- nrow(dat_utvalgtils) + +# Klargjøre +if (dim(dat)[1] < 1) { + messagefunkNRS2 <- "I den valgte tidsperioden er det ikke nok data til å gi resultatet." +} else { + + + nrsdata12 <- dat %>% + dplyr::count(AngiNRS12) %>% + dplyr::mutate(prosent = round(100*(n/sum(n)))) +#Gi navn + nrsdata12 = nrsdata12 %>% + dplyr::mutate(grunnPR = case_when(AngiNRS12 == 0 ~ "Nei", + AngiNRS12 == 1 ~ "Ja", + AngiNRS12 == 2 ~ "Ikke aktuelt", + AngiNRS12 == 3 ~ "Ikke spurt")) +#Endrer rekkefølge og tar i tilleg ved NA-raden (siste) +nrsdata12 <- nrsdata12[1:(dim(nrsdata12)[1]-1), c(4,2,3)] + +#Bruker pakke kableextra +rapbase::mst( + tab = nrsdata12, + col_names = c("", "Antall ", "Prosent"), + cap = "Angi NRS (første tilsyn)", + label = "tabnrsdata12", + type = params$tableFormat, + digs = 0, + align = c("l", "r", "r", "r")) +} + + +``` +`r messagefunkNRS2` + +```{r NRS2-21, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRS21 <- "" + +# Klargjøre +if (dim(dat)[1] < 1) { + messagefunkNRS21 <- "I den valgte tidsperioden er det ikke nok data til å gi resultatet." +} else { + + nrsdata21 <- dat %>% + dplyr::count(AngiNRS21) %>% + dplyr::mutate(prosent = round(100*(n/sum(n)))) +#Gi navn + nrsdata21 = nrsdata21 %>% + dplyr::mutate(grunnPR = case_when(AngiNRS21 == 0 ~ "Nei", + AngiNRS21 == 1 ~ "Ja", + AngiNRS21 == 2 ~ "Ikke aktuelt", + AngiNRS21 == 3 ~ "Ikke spurt")) +#Endrer rekkefølge og tar i tilleg ved NA-raden (siste) +nrsdata21 <- nrsdata21[1:(dim(nrsdata21)[1]-1), c(4,2,3)] + +#Bruker pakke kableextra +rapbase::mst( + tab = nrsdata21, + col_names = c("", "Antall ", "Prosent"), + cap = "Angi NRS (siste tilsyn)", + label = "tabnrsdata21", + type = params$tableFormat, + digs = 0, + align = c("l", "r", "r", "r")) + +} +``` +`r messagefunkNRS21` + +Tabell \@ref(tab:tabnrsdata12) gir en oversikt over om pasientene var i stand til å angi NRS ved første tilsyn, mens tabell \@ref(tab:tabnrsdata21) viser det samme ved siste tilsyn. + +Antall forløp som har fått tilsyn av minst én profesjon og hvor det samtidig _ikke_ er krysset av for 'ikke aktuelt' å angi NRS (både første og siste tilsyn) er i den valgte tidpserioden `r ant_utvalg` forløp. Totalt antall forløp med tilsyn av minst en profesjon er `r ant_utvalgtils`. + + +```{r NRSscoreangitt, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRSangitt <- "" + +dat_utvalg2 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 == 1 & AngiNRS21 == 1) + +dat_utvalg21 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 == 1) + +dat_utvalg22 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS21 == 1) + +#De med nedgang i smerte for StSmBe + #Antall i utvalget vårt + ant_utvalg2 <- nrow(dat_utvalg2) + ant_utvalg21 <- nrow(dat_utvalg21) + ant_utvalg22 <- nrow(dat_utvalg22) + +``` +`r messagefunkNRSangitt` + +Antall forløp som har fått tilsyn av minst én profesjon og hvor det er krysset av for at pasienten kan angi NRS (alternativ 'Ja') for både første og siste tilsyn er i den valgte tidpserioden `r ant_utvalg2` forløp. + +Antall av disse forløpene hvor det er angitt NRS ved (minst) første tilsyn er `r ant_utvalg21`, mens det tilsvarende antall for (minst) siste tilsyn er `r ant_utvalg22`. + +Figuren under viser hvordan andelen forløp med minst ett tilsyn hvor det har blitt angitt NRS to ganger har fordelt seg i løpet av året. + +```{r kvalNRSfig, warning = FALSE, message=FALSE, results='asis', fig.pos= "H", out.extra = '', fig.align='center', out.width='100%'} + +messageplotNRSkval <- "" + +#Aggregate by month for plot +dat$med <- 0 + for(i in 1:dim(dat)[1]){ + if(dat$Tilsett[i] == 1 & dat$AngiNRS12[i] == 1 & dat$AngiNRS21[i] == 1 & !is.na(dat$AngiNRS12[i]) & !is.na(dat$AngiNRS21[i])) + {dat$med[i] = 1} + } + +plotnrs<- dat %>% + dplyr::group_by(month = monthname, med) %>% + dplyr::summarise(n = dplyr::n()) %>% + dplyr::mutate(freq = n/sum(n)) %>% + dplyr::filter(med == 1) + +if (dim(plotnrs)[1] < 1) { + messageplotNRSkval <- "I den valgte tidsperioden er det ikke nok data til å vise + figur for denne kvalitetsindikatoren." +} else { + + #Plotting plotdat + ggplot2::ggplot(plotnrs, ggplot2::aes(month, freq)) + + geom_line(ggplot2::aes(group = 1)) + geom_point() + + labs(x = "Måned", y = "Andel", + subtitle = "Andel av de som er tilsett som kunne angi NRS ved første og siste tilsyn.") + + theme_classic() + + theme(axis.text.x = element_text(size = 9), + plot.margin = unit(c(1, 1, 2, 0), "cm"), + axis.title.y = element_text(margin = + margin(t = 0, r = 10, b = 0, l = 0)), + axis.title.x = element_text(margin = margin(t = 10, r = 0, b = 0, l = 0))) + +} +``` + +`r messageplotNRSkval` diff --git a/inst/NasjonalIndikatorMaaned.Rmd b/inst/NasjonalIndikatorMaaned.Rmd index ce70d99..f10e4ae 100644 --- a/inst/NasjonalIndikatorMaaned.Rmd +++ b/inst/NasjonalIndikatorMaaned.Rmd @@ -54,9 +54,12 @@ if (rapbase::isRapContext()) { dat$SykehusNavn[dat$SykehusNavn == "Universitetssykehuset Nord-Norge HF"] = "UNN" dat$SykehusNavn[dat$SykehusNavn == "St. Olavs Hospital HF"] = "St. Olavs" dat$SykehusNavn[dat$SykehusNavn == "Oslo universitetssykehus HF"] = "OUS" +dat$SykehusNavn[dat$SykehusNavn == "Oslo universitetssykehus HF / Smerteteam, RH"] = "OUS, RH" +dat$SykehusNavn[dat$SykehusNavn == "Oslo universitetssykehus HF / Smerteteam, UL"] = "OUS, UL" dat$SykehusNavn[dat$SykehusNavn == "Helse Bergen HF"] = "HB" dat$SykehusNavn[dat$SykehusNavn == "Helse Møre og Romsdal HF"] = "HMR" dat$SykehusNavn[dat$SykehusNavn == "Vestre Viken HF"] = "VV" +dat$SykehusNavn[dat$SykehusNavn == "Vestre Viken HF / Klinikk Bærum Sykehus"] = "VV, Bærum" dat$SykehusNavn[dat$SykehusNavn == "Akershus universitetssykehus HF"] = "AHUS" #Legger inn månedene i riktig rekkefølge @@ -1017,7 +1020,7 @@ if (dim(dat)[1] < 1) { funfor = dat %>% dplyr::filter(!is.na(Funksjon12), !is.na(Funksjon21), Funksjon12 != 9, Funksjon21 != 9) %>% - dplyr:: mutate(bedring = (Funksjon21 - Funksjon12)) + dplyr::mutate(bedring = (Funksjon21 - Funksjon12)) funfor1 <- funfor %>% dplyr::mutate(bedring1 = bedring > 0) %>% @@ -1029,7 +1032,7 @@ funfor1 <- funfor %>% funfor1 <- funfor1 %>% dplyr::select(SykehusNavn, n, ant, freq) -andel_fun= sum(funfor$bedring == 0, na.rm = TRUE) +andel_fun = sum(funfor$bedring == 0, na.rm = TRUE) andel_tot = length(funfor$bedring) andel_uendret = andel_fun/andel_tot @@ -1047,7 +1050,7 @@ andel_uendret = andel_fun/andel_tot Figuren under viser hvordan andelen har fordelt seg i løpet av året. -```{r funkfig, warning = FALSE, message=FALSE, results='asis', fig.pos= "H", out.extra = '', fig.align='center', out.width='100%'} +```{r funkfig, warning = FALSE, message=FALSE, results='asis', fig.pos= "H", out.extra = '', fig.align='center', out.width='100%', fig.width = 14, fig.asp = 0.5} messageplotfunk <- "" @@ -1090,3 +1093,171 @@ if (dim(plotfunk)[1] < 1) { ``` `r messageplotfunk` + + +# NRS og kvalitetsforbedringsprosjektet +Her legges midlertidig inn oversikt til bruk i kvalitetsforbedringsprosjektet vedrørende NRS. + +```{r NRS2-12, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRS2 <- "" + +dat_utvalg <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 != 2 & AngiNRS21 != 2) + +#De med nedgang i smerte for StSmBe + #Antall i utvalget vårt + ant_utvalg <- nrow(dat_utvalg) + +dat_utvalgtils <- dat %>% + dplyr::filter(Tilsett == 1) +ant_utvalgtils <- nrow(dat_utvalgtils) + +# Klargjøre +if (dim(dat)[1] < 1) { + messagefunkNRS2 <- "I den valgte tidsperioden er det ikke nok data til å gi resultatet." +} else { + + + nrsdata12 <- dat %>% + dplyr::count(AngiNRS12) %>% + dplyr::mutate(prosent = round(100*(n/sum(n)))) +#Gi navn + nrsdata12 = nrsdata12 %>% + dplyr::mutate(grunnPR = case_when(AngiNRS12 == 0 ~ "Nei", + AngiNRS12 == 1 ~ "Ja", + AngiNRS12 == 2 ~ "Ikke aktuelt", + AngiNRS12 == 3 ~ "Ikke spurt")) +#Endrer rekkefølge og tar i tilleg ved NA-raden (siste) +nrsdata12 <- nrsdata12[1:(dim(nrsdata12)[1]-1), c(4,2,3)] + +#Bruker pakke kableextra +rapbase::mst( + tab = nrsdata12, + col_names = c("", "Antall ", "Prosent"), + cap = "Angi NRS (første tilsyn)", + label = "tabnrsdata12", + type = params$tableFormat, + digs = 0, + align = c("l", "r", "r", "r")) +} + + +``` +`r messagefunkNRS2` + +```{r NRS2-21, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRS21 <- "" + +# Klargjøre +if (dim(dat)[1] < 1) { + messagefunkNRS21 <- "I den valgte tidsperioden er det ikke nok data til å gi resultatet." +} else { + + nrsdata21 <- dat %>% + dplyr::count(AngiNRS21) %>% + dplyr::mutate(prosent = round(100*(n/sum(n)))) +#Gi navn + nrsdata21 = nrsdata21 %>% + dplyr::mutate(grunnPR = case_when(AngiNRS21 == 0 ~ "Nei", + AngiNRS21 == 1 ~ "Ja", + AngiNRS21 == 2 ~ "Ikke aktuelt", + AngiNRS21 == 3 ~ "Ikke spurt")) +#Endrer rekkefølge og tar i tilleg ved NA-raden (siste) +nrsdata21 <- nrsdata21[1:(dim(nrsdata21)[1]-1), c(4,2,3)] + +#Bruker pakke kableextra +rapbase::mst( + tab = nrsdata21, + col_names = c("", "Antall ", "Prosent"), + cap = "Angi NRS (siste tilsyn)", + label = "tabnrsdata21", + type = params$tableFormat, + digs = 0, + align = c("l", "r", "r", "r")) + +} +``` +`r messagefunkNRS21` + +Tabell \@ref(tab:tabnrsdata12) gir en oversikt over om pasientene var i stand til å angi NRS ved første tilsyn, mens tabell \@ref(tab:tabnrsdata21) viser det samme ved siste tilsyn. + +Antall forløp som har fått tilsyn av minst én profesjon og hvor det samtidig _ikke_ er krysset av for 'ikke aktuelt' å angi NRS (både første og siste tilsyn) er i den valgte tidpserioden `r ant_utvalg` forløp. Totalt antall forløp med tilsyn av minst en profesjon er `r ant_utvalgtils`. + + +```{r NRSscoreangitt, warning = FALSE, message=FALSE, results='asis'} + +messagefunkNRSangitt <- "" + +dat_utvalg2 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 == 1 & AngiNRS21 == 1) + +dat_utvalg21 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS12 == 1) + +dat_utvalg22 <- dat %>% + dplyr::filter(Tilsett == 1 & AngiNRS21 == 1) + +#De med nedgang i smerte for StSmBe + #Antall i utvalget vårt + ant_utvalg2 <- nrow(dat_utvalg2) + ant_utvalg21 <- nrow(dat_utvalg21) + ant_utvalg22 <- nrow(dat_utvalg22) + +``` +`r messagefunkNRSangitt` + +Antall forløp som har fått tilsyn av minst én profesjon og hvor det er krysset av for at pasienten kan angi NRS (alternativ 'Ja') for både første og siste tilsyn er i den valgte tidpserioden `r ant_utvalg2` forløp. + +Antall av disse forløpene hvor det er angitt NRS ved (minst) første tilsyn er `r ant_utvalg21`, mens det tilsvarende antall for (minst) siste tilsyn er `r ant_utvalg22`. + +Figuren under viser hvordan andelen forløp med minst ett tilsyn hvor det har blitt angitt NRS to ganger har fordelt seg i løpet av året. + +```{r kvalNRSfig, warning = FALSE, message=FALSE, results='asis', fig.pos= "H", out.extra = '', fig.align='center', out.width='100%', fig.width = 14, fig.asp = 0.5} + +messageplotNRSkval <- "" + +#Aggregate by month for plot +dat$med <- 0 + for(i in 1:dim(dat)[1]){ + if(dat$Tilsett[i] == 1 & dat$AngiNRS12[i] == 1 & dat$AngiNRS21[i] == 1 & !is.na(dat$AngiNRS12[i]) & !is.na(dat$AngiNRS21[i])) + {dat$med[i] = 1} + } + +plotnrs<- dat %>% + dplyr::group_by(SykehusNavn, monthname, med) %>% + dplyr::summarise(n = dplyr::n()) %>% + dplyr::mutate(freq = n/sum(n)) %>% + dplyr::filter(med == 1) + +if (dim(plotnrs)[1] < 1) { + messageplotNRSkval <- "I den valgte tidsperioden er det ikke nok data til å vise + figur for denne kvalitetsindikatoren." +} else { + #Plotting plotdat + ggplot2::ggplot(plotnrs, ggplot2::aes(monthname, freq)) + + ggplot2::geom_line(ggplot2::aes(group = factor(SykehusNavn), + colour=factor(SykehusNavn)), size = 0.5) + + ggplot2::geom_point(ggplot2::aes(group = factor(SykehusNavn), + colour=factor(SykehusNavn)), size = 1) + + ggplot2::labs(x = "Måned", y = "Andel", + subtitle = "Andel av de som er tilsett som kunne angi NRS ved første og siste tilsyn.", + color = "Sykehus") + ggplot2::theme_classic() + + ggplot2::theme(axis.text.x = ggplot2::element_text(size = 8.5), + axis.text.y = ggplot2::element_text(size = 10), + axis.title = ggplot2::element_text(size = 10), + plot.margin = ggplot2::unit(c(1, 1, 2, 1), "cm"), + legend.text = ggplot2::element_text(size = 13), + axis.title.y = ggplot2::element_text( + margin = ggplot2::margin(t = 0, r = 10, b = 0, l = 0) + ), + axis.title.x = ggplot2::element_text( + margin = ggplot2::margin(t = 10, r = 0, b = 0, l = 0) + ) + ) + +} +``` + +`r messageplotNRSkval` diff --git a/inst/veiledning.Rmd b/inst/veiledning.Rmd index b090987..4417614 100644 --- a/inst/veiledning.Rmd +++ b/inst/veiledning.Rmd @@ -15,21 +15,21 @@ Her finnes rapportene det er mulig å hente ut fra rapporteket. Etter hvert som ## Registerets nåværende rapporter -Tilsyn: informasjon om henvisninger, tilsyn (fordelt på lege, sykepleier etc.) og avdelingsoversikt for lokale data. +**Tilsyn:** informasjon om henvisninger, tilsyn (fordelt på lege, sykepleier etc.) og avdelingsoversikt for lokale data. -Dekningsgrad før reservasjon: utregning av dekningsgrad over valgfri tidsperiode for lokale data (gjelder før reservasjonsrett/til desember 2022). +**Dekningsgrad før reservasjon:** utregning av dekningsgrad over valgfri tidsperiode for lokale data (gjelder før reservasjonsrett/til desember 2022). -Dekningsgrad etter reservasjon: utregning av dekningsgrad over valgfri tidsperiode for lokale data (gjelder etter reservasjonsrett/fra desember 2022). +**Dekningsgrad etter reservasjon:** utregning av dekningsgrad over valgfri tidsperiode for lokale data (gjelder etter reservasjonsrett/fra desember 2022). -Indikatorer: Smerteregisterets resultat - og kvalitetsindikatorer for lokale eller nasjonale data. +**Indikatorer:** Smerteregisterets resultat - og kvalitetsindikatorer for lokale eller nasjonale data. I tillegg ligger informasjon rundt NRS for kvalitetsforbedringsprosjektet her. -ePROM: oversikt over alle variablene i alle eprom-skjema for lokale eller nasjonale data. +**ePROM:** oversikt over alle variablene i alle eprom-skjema for lokale eller nasjonale data. -Spinalkateter: diverse informasjon om de pasientene som har fått spinalkateter (tilsyn, morfinekvivalenter, NRS m.m.) for lokale data. +**Spinalkateter:** diverse informasjon om de pasientene som har fått spinalkateter (tilsyn, morfinekvivalenter, NRS m.m.) for lokale data. -Smertekategori: oversikt over hovedsmertekategori, undersmertekategorier og opioidbruk ved innleggelse for lokale data. +**Smertekategori:** oversikt over hovedsmertekategori, undersmertekategorier og opioidbruk ved innleggelse for lokale data. -Opioidreduksjon: oversikt over nedgang i morfinekvivalenter. +**Opioidreduksjon:** oversikt over nedgang i morfinekvivalenter. # Nye rapporter Dersom det er informasjon som er av interesse å hente ut gjentatte ganger kan det lønne seg å få laget en rapport.