Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ny utgave #6

Merged
merged 10 commits into from
Sep 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -19,15 +19,16 @@ License: GPL (>= 3)
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.1
RoxygenNote: 7.2.3
Imports:
dplyr,
lubridate,
magrittr,
shiny,
rapbase,
rlang,
janitor
janitor,
shinyjs
Remotes:
Rapporteket/rapbase@*release,
Suggests:
6 changes: 6 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -13,6 +13,10 @@ export(admtab_ui)
export(appServer)
export(appUi)
export(binomkonf)
export(datadump_UI)
export(datadump_server)
export(indikatorfigServer)
export(indikatorfig_UI)
export(norspisApp)
export(norspisBeregnIndikator)
export(norspisLesOgProsesser)
@@ -26,6 +30,8 @@ export(queryForlopsOversikt)
export(queryReshNames)
export(querySkjemaOversikt)
export(reportProcessor)
export(separer)
export(tr_summarize_output)
importFrom(lubridate,"%m-%")
importFrom(magrittr,"%$%")
importFrom(magrittr,"%<>%")
14 changes: 14 additions & 0 deletions R/appServer.R
Original file line number Diff line number Diff line change
@@ -15,16 +15,30 @@ appServer <- function(input, output, session) {
norspisdata <- norspis::norspisLesOgProsesser()
SkjemaOversikt <- norspisdata$SkjemaOversikt
ForlopsOversikt <- norspisdata$ForlopsOversikt
RegData <- norspisdata$RegData

registryName <- "norspis"
userFullName <- rapbase::getUserFullName(session)
userRole <- rapbase::getUserRole(session)
userReshId <- rapbase::getUserReshId(session)
hospitalName <- ForlopsOversikt$Kortnavn[match(userReshId, ForlopsOversikt$AvdRESH)]

if (userRole != 'SC') {
shiny::hideTab("tabs", target = "Verkt\u00f8y")
}

rapbase::navbarWidgetServer("norspisNavbarWidget", "norspis",
caller = "norspis")

# Indikatorfigur
norspis::indikatorfigServer("indikatorfig_id",
RegData = RegData, userRole = userRole,
hvd_session = session)

# Datadump
norspis::datadump_server("datadump_id", reshID = userReshId,
RegData = RegData, userRole = userRole, hvd_session = session)

# Administrative tabeller
norspis::admtab_server("admtabell", SkjemaOversikt, ForlopsOversikt)

83 changes: 46 additions & 37 deletions R/appUi.R
Original file line number Diff line number Diff line change
@@ -34,33 +34,42 @@ appUi <- function() {
)
),

shiny::tabPanel(
"Eksempelrapport",
shiny::sidebarLayout(
shiny::sidebarPanel(
shiny::radioButtons("formatReport",
"Format for nedlasting",
list(PDF = "pdf", HTML = "html"),
inline = FALSE),
shiny::downloadButton("downloadReport", "Last ned!")
),
shiny::mainPanel(
shiny::htmlOutput("exReport", inline = TRUE)
)
# shiny::tabPanel(
# "Eksempelrapport",
# shiny::sidebarLayout(
# shiny::sidebarPanel(
# shiny::radioButtons("formatReport",
# "Format for nedlasting",
# list(PDF = "pdf", HTML = "html"),
# inline = FALSE),
# shiny::downloadButton("downloadReport", "Last ned!")
# ),
# shiny::mainPanel(
# shiny::htmlOutput("exReport", inline = TRUE)
# )
#
# )
# ),

)
),
# shiny::tabPanel(
# "Abonnement",
# shiny::sidebarLayout(
# shiny::sidebarPanel(
# rapbase::autoReportInput("norspisSubscription")
# ),
# shiny::mainPanel(
# rapbase::autoReportUI("norspisSubscription")
# )
# )
# ),

shiny::tabPanel(
"Abonnement",
shiny::sidebarLayout(
shiny::sidebarPanel(
rapbase::autoReportInput("norspisSubscription")
),
shiny::mainPanel(
rapbase::autoReportUI("norspisSubscription")
)
)
"Indikatorer",
norspis::indikatorfig_UI(id = "indikatorfig_id")
),

shiny::tabPanel("Datadump",
norspis::datadump_UI(id = "datadump_id")
),

shiny::tabPanel(
@@ -71,19 +80,19 @@ appUi <- function() {
shiny::navbarMenu(
"Verkt\u00f8y",

shiny::tabPanel(
"Utsending",
shiny::sidebarLayout(
shiny::sidebarPanel(
rapbase::autoReportFormatInput("norspisDispatchFormat"),
rapbase::autoReportOrgInput("norspisDispatchOrg"),
rapbase::autoReportInput("norspisDispatch")
),
shiny::mainPanel(
rapbase::autoReportUI("norspisDispatch")
)
)
),
# shiny::tabPanel(
# "Utsending",
# shiny::sidebarLayout(
# shiny::sidebarPanel(
# rapbase::autoReportFormatInput("norspisDispatchFormat"),
# rapbase::autoReportOrgInput("norspisDispatchOrg"),
# rapbase::autoReportInput("norspisDispatch")
# ),
# shiny::mainPanel(
# rapbase::autoReportUI("norspisDispatch")
# )
# )
# ),

shiny::tabPanel(
"Bruksstatistikk",
102 changes: 102 additions & 0 deletions R/modul_datadump.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#' Modul for datadump-fane i Norspis sin shiny-app på Rapporteket
#'
#' Kun til bruk i Shiny
#'
#' @name datadump
#' @aliases datadump_ui datadump_server
#'
#' @rdname datadump
#' @export
datadump_UI <- function(id){
ns <- shiny::NS(id)

shiny::sidebarLayout(
sidebarPanel(
id = ns("id_dump_panel"),
dateRangeInput(inputId=ns("datovalg"),
label = "Dato fra og til",
language = "nb",
max = Sys.Date(),
start = '2014-01-01',
end = Sys.Date(),
separator = " til "),
selectInput(inputId = ns("dumptype"),
label = "Velg type datadump",
choices = c("AlleScorer",
"Behandling",
"BehandlingNum",
"EnkeltLedd",
"EnkeltLeddNum",
"ForlopsOversikt",
"SkjemaOversikt",
"Norspisdata_utflatet")),
tags$hr(),
downloadButton(ns("lastNed_dump"), "Last ned datadump")
),
mainPanel(
h2('Datadump - Norspis', align='center'),
br(),
h4('Her kan du laste ned forskjellige varianter av datadump for Norspis.
Lokale brukere vil bare kunne laste ned data for egen avdeling.'),
br(),
h4(tags$b(tags$u('Forklaring til de ulike datadump-typene:'))),
h4(tags$b('AlleScorer: '), 'forklaring fra register'),
h4(tags$b('Behandling: '), 'forklaring fra register'),
h4(tags$b('BehandlingNum: '), 'forklaring fra register'),
h4(tags$b('EnkeltLedd: '), 'forklaring fra register'),
h4(tags$b('EnkeltLeddNum: '), 'forklaring fra register'),
h4(tags$b('ForlopsOversikt: '), 'forklaring fra register'),
h4(tags$b('SkjemaOversikt: '), 'En oversikt med informasjon om status på
alle påbegynte og avsluttede skjema.'),
h4(tags$b('Norspisdata_utflatet: '), 'inneholder alle kliniske variabler
i registeret og benytter tallkodene til kategoriske variabler.
At tabellen er utflatet innebærer at sluttregistrering er koblet til
startregistrering slik at en linje utgjør et forløp.')
)
)
}

#' @rdname datadump
#' @export
datadump_server <- function(id, RegData, userRole, hvd_session, reshID){
moduleServer(
id,

function(input, output, session) {

output$lastNed_dump <- downloadHandler(
filename = function(){
fs::path_sanitize(paste0(input$dumptype, Sys.time(), '.csv'))
},
content = function(file){
if (input$dumptype == "Norspisdata_utflatet") {
dumpdata <- RegData
} else {
query <- paste0("SELECT * FROM ", input$dumptype)
dumpdata <- rapbase::loadRegData("norspis", query)
}
# dumpdata <- tmpData[which(as.Date(tmpData$S1b_DateOfCompletion, format="%d.%m.%Y") >= input$datovalg[1] &
# as.Date(tmpData$S1b_DateOfCompletion, format="%d.%m.%Y") <= input$datovalg[2]), ]
if (userRole != 'SC') {
dumpdata <- dumpdata[dumpdata$AvdRESH %in% reshID, ]
}
# write.csv2(dumpdata, file, row.names = F, na = '', fileEncoding = 'Latin1')
readr::write_excel_csv2(dumpdata, file, na = "")
}
)

shiny::observe({
if (rapbase::isRapContext()) {

shinyjs::onclick(
"lastNed_dump",
rapbase::repLogger(
session = hvd_session,
msg = paste0("Norspis: nedlasting datadump: ", input$dumptype)
)
)
}
})

}
)}
147 changes: 147 additions & 0 deletions R/modul_indikatorer.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
#' UI-modul for indikatorfigurer i Norspis sin shiny-app på Rapporteket
#'
#' Kun til bruk i Shiny
#'
#' @export
#'
indikatorfig_UI <- function(id){
ns <- shiny::NS(id)

shiny::sidebarLayout(
sidebarPanel(
width = 3,
id = ns("id_indikator_panel"),
selectInput(
inputId = ns("valgtVar"), label = "Velg indikator",
choices = c("Symptomreduksjon EDEQ, voksne" = "norspis_KI1_symptomreduksjon_EDEQ_V",
"Symptomreduksjon EDEQ, barn/ungdom" = "norspis_KI1_symptomreduksjon_EDEQ_BU",
"Bedring i livskvalitet, voksne" = "norspis_KI2_funksjonsbedring_CIA_V",
"Bedring i livskvalitet, barn/ungdom" = "norspis_KI2_funksjonsbedring_CIA_BU",
"Endring i undervektsstatus, voksne" = "norspis_KI3_undervektsreduksjon_V",
"Endring i undervektsstatus, barn/ungdom" = "norspis_KI3_undervektsreduksjon_BU",
"Utfallsvurdering, voksne" = "norspis_KI4_utfallsvurdering_V",
"Utfallsvurdering, barn/ungdom" = "norspis_KI4_utfallsvurdering_BU",
"Familie/venner involvert i behandlingen, voksne" = "norspis_involvering_familie_venner_V",
"Familie/venner involvert i behandlingen, barn/ungdom" = "norspis_involvering_familie_venner_BU",
"Blodprøver ved start, undervektige, voksne" = "norspis_undervekt_blodprove_V",
"Blodprøver ved start, undervektige, barn/ungdom" = "norspis_undervekt_blodprove_BU",
"Blodprøver ved start, oppkast, voksne" = "norspis_oppkast_blodprove_V",
"Blodprøver ved start, oppkast, barn/ungdom" = "norspis_oppkast_blodprove_BU",
"Beintetthetsmåling ved start, undervektige voksne" = "norspis_beintetthetsmaling_V",
"Beintetthetsmåling ved start, undervektige barn/ungdom" = "norspis_beintetthetsmaling_BU"
)
),
uiOutput(outputId = ns('tilAar_ui')),
selectInput(inputId = ns("bildeformat"), label = "Velg bildeformat",
choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')),
tags$hr(),
actionButton(ns("reset_input"), "Nullstill valg")
),
mainPanel(
tabsetPanel(id = ns("tab"),
tabPanel("Figur", value = "fig",
plotOutput(ns("Figur1"), height="auto"),
downloadButton(ns("lastNedBilde"), "Last ned figur")),
tabPanel("Tabell", value = "tab",
DT::DTOutput(ns("tabell"))
)
)
)
)

}

#' Server-modul for indikatorfigurer i Norspis sin shiny-app på Rapporteket
#'
#' Kun til bruk i Shiny
#'
#' @export
#'
indikatorfigServer <- function(id, RegData, userRole, hvd_session){
moduleServer(
id,

function(input, output, session) {

observeEvent(input$reset_input, {
shinyjs::reset("id_indikator_panel")
})

output$tilAar_ui <- renderUI({
ns <- session$ns
selectInput(inputId = ns("tilAar"), label = "T.o.m. år",
choices = rev((min(RegData$StartAar)+2):max(RegData$StartAar)))
})


tabellReager <- reactive({
indikatordata <- norspis::norspisBeregnIndikator(RegData = RegData,
ind_id = input$valgtVar)
TabellData <- indikatordata$indikator
TabellData <- TabellData[which(TabellData$year <= as.numeric(req(input$tilAar))), ]
indikatordata$indikator <- TabellData
indikatordata
})

output$Figur1 <- renderPlot({
norspis::norspisPlotIndikator(indikatordata = tabellReager(),
graaUt=NA, outfile = '',
lavDG=NA, inkl_konf=F)
}, width = 700, height = 700)

# output$tabell <- DT::renderDT({
# indikatordata = tabellReager()
# tabell <- indikatordata$indikator %>%
# dplyr::group_by(SykehusNavn, year) %>%
# dplyr::summarise(Antall = sum(var),
# N = sum(denominator),
# Andel = Antall/N*100)
# # antall <-
# #
# # %>%
# # janitor::adorn_totals()
#
# })

output$tabell <- DT::renderDataTable(
server = FALSE,
DT::datatable(
{tabellReager()$indikator %>%
dplyr::group_by(SykehusNavn, year) %>%
dplyr::summarise(Antall = sum(var),
N = sum(denominator),
Andel = Antall/N*100)},

extensions = 'Buttons',
rownames = FALSE,

options = list(
paging = TRUE,
pageLength = 40,
searching = TRUE,
fixedColumns = TRUE,
autoWidth = TRUE,
ordering = TRUE,
dom = 'tB',
buttons = c('copy', 'csv', 'excel')
),

class = "display"
) %>% DT::formatRound(columns = "Andel", digits = 1)
)

output$lastNedBilde <- downloadHandler(
filename = function(){
paste0(input$valgtVar, Sys.time(), '.', input$bildeformat)
},

content = function(file){
norspis::norspisPlotIndikator(indikatordata = tabellReager(),
graaUt=NA, lavDG=NA, inkl_konf=F,
outfile = file)
}
)

}
)
}
413 changes: 241 additions & 172 deletions R/norspisBeregnIndikator.R

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion R/norspisLesOgProsesser.R
Original file line number Diff line number Diff line change
@@ -62,11 +62,15 @@ norspisLesOgProsesser <- function() {
RegData <- merge(RegData_start, RegData_slutt,
by.x = "ForlopsID", by.y = "RegTilhorendeStartReg",
suffixes = c("_start", "_slutt"),
all.x = TRUE)
all.x = TRUE) %>%
dplyr::mutate(StartAar = format(RegHendelsesdato_start, "%Y") %>% as.numeric(),
SluttAar = format(RegHendelsesdato_slutt, "%Y") %>% as.numeric())

## Foreløpig, velg én sluttregistrering der det finnes flere
RegData <- RegData[match(unique(RegData$ForlopsID), RegData$ForlopsID), ]
##########################################################################
RegData <- merge(RegData, ForlopsOversikt[, c("ForlopsID", "erMann", "Norsktalende",
"Sivilstatus", "UtdanningSSB")])


SkjemaOversikt <- norspis::querySkjemaOversikt("norspis") %>%
10 changes: 5 additions & 5 deletions R/norspisPlotIndikator.R
Original file line number Diff line number Diff line change
@@ -9,21 +9,18 @@
#' @export
#'
norspisPlotIndikator <- function(indikatordata, graaUt=NA, outfile = '',
lavDG=NA, inkl_konf=F)
lavDG=NA, inkl_konf=F, width=800,
height=700, skriftStr=1.0, pktStr=1.4)
{
indikator=indikatordata$indikator
tittel=indikatordata$tittel
terskel=indikatordata$terskel
minstekrav=indikatordata$minstekrav
maal=indikatordata$maal
skriftStr=indikatordata$skriftStr
pktStr=indikatordata$pktStr
legPlass=indikatordata$legPlass
minstekravTxt=indikatordata$minstekravTxt
maalTxt=indikatordata$maalTxt
decreasing=indikatordata$decreasing
width=indikatordata$width
height=indikatordata$height
maalretn=indikatordata$maalretn

indikator <- indikator[indikator$year > max(indikator$year)-3, ] # behold bare siste 3 år
@@ -112,6 +109,9 @@ norspisPlotIndikator <- function(indikatordata, graaUt=NA, outfile = '',
} else {
xmax <- min(100, 1.15*max(andeler[,-1], na.rm = T))
}
if (!is.na(maal)) {
xmax <- min(100, max(1.15*maal, xmax), na.rm = T)
}

ypos <- barplot( t(andeler[,dim(andeler)[2]]), beside=T, las=1,
xlim=c(0,xmax),
54 changes: 54 additions & 0 deletions R/stottefunksjoner.R
Original file line number Diff line number Diff line change
@@ -22,3 +22,57 @@ binomkonf <- function(n, N, konfnivaa=0.95)
}
return(invisible(binkonf))
}


#' Trekk ut diagnoser fra kolonne med kommaseparerte diagnoser til separate
#' kolonner
#'
#' @param variable - kolonnen som skal splittes i flere
#' @param separator - separator mellom elementer i tekststreng. Overflødig hvis
#' unique_varnames gis som input
#' @param unique_varnames - vektor med navnene som skal trekkes ut i nye kolonner, må/bør
#' samsvare med navn som eksisterer i kolonnen som skal splittes
#'
#' @return En dataramme med separerte variabler
#'
#' @export
separer <- function(variable, separator = ",", unique_varnames = NULL) {
if (is.null(unique_varnames)){
unique_varnames <- stringi::stri_split_fixed(variable[!is.na(variable)], separator) %>%
unlist() %>% unique()
}
df <- lapply(
unique_varnames,
function(x, variable){
stringr::str_detect(variable,x)
},
variable
)

df <- as.data.frame.list(df)
names(df) <- unique_varnames
return(df)
}


#' Transponer output fra dplyr::summarise
#'
#' Denne funksjonen tar som input resultatet av dplyr::summarise og returnerer dens
#' transponerte uten at formatene endres.
#'
#' Her kan detaljer skrives
#'
#' @return tr_frame Den transponerte av inputen
#'
#' @export
#'
tr_summarize_output <- function(x, kolnavn1 = ""){

rekkefolge <- names(x)[-1]
y <- x %>% gather(names(x)[-1], key=nokkel, value = verdi) %>%
spread(key=names(x)[1], value = verdi)
y <- y[match(rekkefolge, y$nokkel), ]
names(y)[1] <- kolnavn1

return(y)
}
233 changes: 233 additions & 0 deletions data-raw/mapping_og_variabelutvalg.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
# Denne filen lager noen datasett som er nødvendig i preprosesseringen

# 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), ] %>%
# 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/resh_voksen_barn.csv", row.names = F)

resh_voksen_barn <-
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) %>%
# 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"))
# write.csv(variabeloversikt, "~/mydata/norspis/variabeloversikt.csv", row.names = F)

variabeloversikt <-
tibble::tribble(
~Tabell, ~status, ~Variabelnavn, ~OppfolgingNum,
"AlleScorer","IkkeStart","PasOppErfaring","Nei",
"AlleScorer","IkkeStart","PasOppTilfredshet","Nei",
"AlleScorer","IkkeStart","PasOppTilgjengelighet","Nei",
"AlleScorer","IkkeStart","PasOppSikkerhet","Nei",
"AlleScorer","Utgaatt","RAND36FysFunk","Nei",
"AlleScorer","Utgaatt","RAND36RollebegFys","Nei",
"AlleScorer","Utgaatt","RAND36RollebegEmo","Nei",
"AlleScorer","Utgaatt","RAND36Tretthet","Nei",
"AlleScorer","Utgaatt","RAND36MentalHelse","Nei",
"AlleScorer","Utgaatt","RAND36SosialFunk","Nei",
"AlleScorer","Utgaatt","RAND36Smerte","Nei",
"AlleScorer","Utgaatt","RAND36GenHelse","Nei",
"AlleScorer","Utgaatt","RAND36EndringHelse","Nei",
"AlleScorer","Utgaatt","HoNOSSumScore","Nei",
"AlleScorer","Utgaatt","HoNOSSnittScore","Nei",
"AlleScorer","Utgaatt","HoNOSAntSvar","Nei",
"AlleScorer","Utgaatt","HoNOSCATotalSum","Nei",
"AlleScorer","Utgaatt","HoNOSCATotalSnitt","Nei",
"AlleScorer","Utgaatt","HoNOSCADelASum","Nei",
"AlleScorer","Utgaatt","HoNOSCADelASnitt","Nei",
"AlleScorer","Utgaatt","HoNOSCADelBSum","Nei",
"AlleScorer","Utgaatt","HoNOSCADelBSnitt","Nei",
"AlleScorer","Utgaatt","HoNOSCATotalSvar","Nei",
"AlleScorer","Utgaatt","HoNOSCADelASvar","Nei",
"AlleScorer","Utgaatt","HoNOSCADelBSvar","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse1","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse2","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse3","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse4","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse5","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUAkse6","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5utfylles","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5Hoved","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5ANSub","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5AnnenSub","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5ANAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5BNAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUDSM5OverspisAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUForstLukketAV","Nei",
"EnkeltLeddNum","IkkeStart","DiagBUForstLukket","Nei",
"EnkeltLeddNum","IkkeStart","DiagVSF","Nei",
"EnkeltLeddNum","IkkeStart","DiagVSomatiske","Nei",
"EnkeltLeddNum","IkkeStart","DiagVMalabsorpsjon","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDiabetes","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5utfylles","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5Hoved","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5ANSub","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5AnnenSub","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5ANAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5BNAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagVDSM5OverspisAlvGrd","Nei",
"EnkeltLeddNum","IkkeStart","DiagVForstLukketAV","Nei",
"EnkeltLeddNum","IkkeStart","DiagVForstLukket","Nei",
"EnkeltLeddNum","Utgaatt","H01Atferd","Nei",
"EnkeltLeddNum","Utgaatt","H02Selvskade","Nei",
"EnkeltLeddNum","Utgaatt","H03Rusmisbruk","Nei",
"EnkeltLeddNum","Utgaatt","H04KognitiveProbl","Nei",
"EnkeltLeddNum","Utgaatt","H05FysiskeProbl","Nei",
"EnkeltLeddNum","Utgaatt","H06Hallusinasjoner","Nei",
"EnkeltLeddNum","Utgaatt","H07Stemningsleie","Nei",
"EnkeltLeddNum","Utgaatt","H08AndreProbl","Nei",
"EnkeltLeddNum","Utgaatt","H08aVelgTypeProbl","Nei",
"EnkeltLeddNum","Utgaatt","H09ForhAndre","Nei",
"EnkeltLeddNum","Utgaatt","H10ADLProbl","Nei",
"EnkeltLeddNum","Utgaatt","H11BoligProbl","Nei",
"EnkeltLeddNum","Utgaatt","H12YrkeProbl","Nei",
"EnkeltLeddNum","Utgaatt","HForstLukketAV","Nei",
"EnkeltLeddNum","Utgaatt","HForstLukket","Nei",
"EnkeltLeddNum","Utgaatt","HCA01Atferd","Nei",
"EnkeltLeddNum","Utgaatt","HCA02Aktivitetsniva","Nei",
"EnkeltLeddNum","Utgaatt","HCA03Selvskade","Nei",
"EnkeltLeddNum","Utgaatt","HCA04Rusmisbruk","Nei",
"EnkeltLeddNum","Utgaatt","HCA05SkoleSprak","Nei",
"EnkeltLeddNum","Utgaatt","HCA06FysiskProblem","Nei",
"EnkeltLeddNum","Utgaatt","HCA07Hallusinasjoner","Nei",
"EnkeltLeddNum","Utgaatt","HCA08SomatiskSymp","Nei",
"EnkeltLeddNum","Utgaatt","HCA09EmosjonelleSymp","Nei",
"EnkeltLeddNum","Utgaatt","HCA10JevnaldrProbl","Nei",
"EnkeltLeddNum","Utgaatt","HCA11Egenomsorg","Nei",
"EnkeltLeddNum","Utgaatt","HCA12FamilieProbl","Nei",
"EnkeltLeddNum","Utgaatt","HCASkoleframmote","Nei",
"EnkeltLeddNum","Utgaatt","HCADelButfylles","Nei",
"EnkeltLeddNum","Utgaatt","HCA14ProblKunnskap","Nei",
"EnkeltLeddNum","Utgaatt","HCA15Mangelinfo","Nei",
"EnkeltLeddNum","Utgaatt","HCAForstLukketAV","Nei",
"EnkeltLeddNum","Utgaatt","HCAForstLukket","Nei",
"EnkeltLeddNum","IkkeStart","POTilfredsBesvart","Nei",
"EnkeltLeddNum","IkkeStart","POArsakIkkeBesvart","Nei",
"EnkeltLeddNum","IkkeStart","PO01Forstod","Nei",
"EnkeltLeddNum","IkkeStart","PO02Tillit","Nei",
"EnkeltLeddNum","IkkeStart","PO03InfoDiagnose","Nei",
"EnkeltLeddNum","IkkeStart","PO04Tilpasset","Nei",
"EnkeltLeddNum","IkkeStart","PO05Involvert","Nei",
"EnkeltLeddNum","IkkeStart","PO06Organisert","Nei",
"EnkeltLeddNum","IkkeStart","PO07Tilfredsstillende","Nei",
"EnkeltLeddNum","IkkeStart","PO08Tilgjengelighet","Nei",
"EnkeltLeddNum","IkkeStart","PO09Utbytte","Nei",
"EnkeltLeddNum","IkkeStart","PO10Pasientsikkerhet","Nei",
"EnkeltLeddNum","IkkeStart","POLukketViaEproms","Nei",
"EnkeltLeddNum","IkkeStart","POForstLukketAV","Nei",
"EnkeltLeddNum","IkkeStart","POForstLukket","Nei",
"EnkeltLeddNum","IkkeSlutt","BTilfredsBesvart","Ja",
"EnkeltLeddNum","IkkeSlutt","BArsakIkkeBesvart","Ja",
"EnkeltLeddNum","IkkeSlutt","B01Sivilstatus","Nei",
"EnkeltLeddNum","IkkeSlutt","B02EgneBarn","Nei",
"EnkeltLeddNum","IkkeSlutt","B03Bosituasjon","Nei",
"EnkeltLeddNum","IkkeSlutt","B03BostatusV1_4","Ja",
"EnkeltLeddNum","IkkeSlutt","B04PabegyntUtd","Nei",
"EnkeltLeddNum","IkkeSlutt","B05FullfortUtd","Nei",
"EnkeltLeddNum","IkkeSlutt","B04UtdanningV1_4","Ja",
"EnkeltLeddNum","IkkeSlutt","B06Hovedaktivitet","Nei",
"EnkeltLeddNum","IkkeSlutt","B06ArbeidsstatusV1_4","Ja",
"EnkeltLeddNum","IkkeSlutt","B07Hovedinntekt","Nei",
"EnkeltLeddNum","IkkeSlutt","B08StartAldrProbl","Nei",
"EnkeltLeddNum","IkkeSlutt","B09LavestVekt","Nei",
"EnkeltLeddNum","IkkeSlutt","B09aAldrLavestVekt","Nei",
"EnkeltLeddNum","IkkeSlutt","B10HoyestVekt","Nei",
"EnkeltLeddNum","IkkeSlutt","B10aAldrHoyestVekt","Nei",
"EnkeltLeddNum","IkkeSlutt","B11FamilieSF","Nei",
"EnkeltLeddNum","IkkeSlutt","B12TidlBehSF","Nei",
"EnkeltLeddNum","IkkeSlutt","B12aPrimarhtj","Nei",
"EnkeltLeddNum","IkkeSlutt","B12aSpesialisthtj","Nei",
"EnkeltLeddNum","IkkeSlutt","B12aSpesEnhetSF","Nei",
"EnkeltLeddNum","IkkeSlutt","B12aAnnenInstans","Nei",
"EnkeltLeddNum","IkkeSlutt","B12bTidlTvangsinnl","Nei",
"EnkeltLeddNum","IkkeSlutt","B12cAldrForsteBeh","Nei",
"EnkeltLeddNum","IkkeSlutt","B12dArTilBehstart","Nei",
"EnkeltLeddNum","IkkeSlutt","B12dMndTilBehstart","Nei",
"EnkeltLeddNum","IkkeSlutt","B13MensNoenGang","Nei",
"EnkeltLeddNum","IkkeSlutt","B14MensSiste3mnd","Nei",
"EnkeltLeddNum","IkkeSlutt","B15MedPrevensjon","Nei",
"EnkeltLeddNum","IkkeSlutt","B16Gravid","Nei",
"EnkeltLeddNum","IkkeSlutt","B17FysMishandl","Nei",
"EnkeltLeddNum","IkkeSlutt","B18PsykMishandl","Nei",
"EnkeltLeddNum","IkkeSlutt","B19Overgrep","Nei",
"EnkeltLeddNum","IkkeSlutt","B20Mobbing","Nei",
"EnkeltLeddNum","IkkeSlutt","B21SelvskadTidl","Nei",
"EnkeltLeddNum","IkkeSlutt","B22SelvskadSisteAr","Nei",
"EnkeltLeddNum","IkkeSlutt","B23SelvmordFTidl","Nei",
"EnkeltLeddNum","IkkeSlutt","B24SelvmordFSisteAr","Nei",
"EnkeltLeddNum","IkkeSlutt","B25Avhengighet","Nei",
"EnkeltLeddNum","IkkeSlutt","BLukketViaEproms","Ja",
"EnkeltLeddNum","IkkeSlutt","BForstLukketAV","Ja",
"EnkeltLeddNum","IkkeSlutt","BForstLukket","Ja",
"EnkeltLeddNum","IkkeStart","PTTilfredsBesvart","Nei",
"EnkeltLeddNum","IkkeStart","PTArsakIkkeBesvart","Nei",
"EnkeltLeddNum","IkkeStart","PT01OnsketInvolv","Nei",
"EnkeltLeddNum","IkkeStart","PT02BleInvolv","Nei",
"EnkeltLeddNum","IkkeStart","PT03Utfallsvurd","Nei",
"EnkeltLeddNum","IkkeStart","PT04KontaktBrukerorg","Nei",
"EnkeltLeddNum","IkkeStart","PT05OrientertBrukerorg","Nei",
"EnkeltLeddNum","IkkeStart","PTLukketViaEproms","Nei",
"EnkeltLeddNum","IkkeStart","PTForstLukketAV","Nei",
"EnkeltLeddNum","IkkeStart","PTForstLukket","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm1KunUtredning","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm1Poliklinikk","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm1Dag","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm1Dogn","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm2Tvang","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm3Ernaring","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm4Avbrudd","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm5Arsak","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm6Utfall","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm7Individuell","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm7Gruppe","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm7Familieterapi","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm7Flerfamilie","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm8ManualIndividual","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm8ManualGruppe","Nei",
"EnkeltLeddNum","IkkeStart","BehSpm8ManualFamilieterapi","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm8ManualFlerfamilie","Nei",
"EnkeltLeddNum","IkkeStart","Beh2Spm9Oppfolging","Nei")


usethis::use_data(resh_voksen_barn, variabeloversikt, overwrite = TRUE)
6 changes: 6 additions & 0 deletions doc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
NORSPIS - DG til sykehusveiviseren v2.xls
NORSPIS - DG til sykehusveiviseren.xls
NorSpis grunnlagsinfo - Beskrivelser av pasientgruppa.docx
NorSpis_klokeboken_12.03.2024.csv
RESH, navn og barn-unge eller voksen.xlsx
Tabeller og figurer laget i R til årsrapporten for 2022.pdf
75 changes: 75 additions & 0 deletions doc/indikatorer_behandlingskvalitet.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
library(norspis)
library(dplyr)
rm(list = ls())

rap_aar <- 2023

norspisdata <- norspisLesOgProsesser()
RegData <- norspisdata$RegData
ForlopsOversikt <- norspisdata$ForlopsOversikt
SkjemaOversikt <- norspisdata$SkjemaOversikt

tabfolder <- paste0("~/mydata/norspis/indikator_shuskvalitet/")
if (!dir.exists(tabfolder)) {
dir.create(tabfolder)
}

ind_id <- c("Symptomreduksjon EDEQ, voksne" = "norspis_KI1_symptomreduksjon_EDEQ_V",
"Symptomreduksjon EDEQ, barn/ungdom" = "norspis_KI1_symptomreduksjon_EDEQ_BU",
"Bedring i livskvalitet, voksne" = "norspis_KI2_funksjonsbedring_CIA_V",
"Bedring i livskvalitet, barn/ungdom" = "norspis_KI2_funksjonsbedring_CIA_BU",
"Endring i undervektsstatus, voksne" = "norspis_KI3_undervektsreduksjon_V",
"Endring i undervektsstatus, barn/ungdom" = "norspis_KI3_undervektsreduksjon_BU",
"Utfallsvurdering, voksne" = "norspis_KI4_utfallsvurdering_V",
"Utfallsvurdering, barn/ungdom" = "norspis_KI4_utfallsvurdering_BU",
"Familie/venner involvert i behandlingen, voksne" = "norspis_involvering_familie_venner_V",
"Familie/venner involvert i behandlingen, barn/ungdom" = "norspis_involvering_familie_venner_BU",
"Blodprøver ved start, undervektige, voksne" = "norspis_undervekt_blodprove_V",
"Blodprøver ved start, undervektige, barn/ungdom" = "norspis_undervekt_blodprove_BU",
"Blodprøver ved start, oppkast, voksne" = "norspis_oppkast_blodprove_V",
"Blodprøver ved start, oppkast, barn/ungdom" = "norspis_oppkast_blodprove_BU",
"Beintetthetsmåling ved start, undervektige voksne" = "norspis_beintetthetsmaling_V",
"Beintetthetsmåling ved start, undervektige barn/ungdom" = "norspis_beintetthetsmaling_BU")



indikatordata <- norspis::norspisBeregnIndikator(RegData = RegData,
ind_id = ind_id[1])
TabellData <- indikatordata$indikator
Indikator <- TabellData[which(TabellData$year <= rap_aar), ]

for (i in 2:length(ind_id)) {
indikatordata <- norspis::norspisBeregnIndikator(RegData = RegData,
ind_id = ind_id[i])
TabellData <- indikatordata$indikator
Indikator <- dplyr::bind_rows(Indikator, TabellData[which(TabellData$year <= rap_aar), ])
}

Indikator <- merge(Indikator, norspis::resh_voksen_barn[, c("AvdRESH", "orgnr")], by = "AvdRESH") %>%
dplyr::select(orgnr, year, var, denominator, ind_id, context)


DG2023 <- readxl::read_xls("~/mydata/norspis/NORSPIS - DG til sykehusveiviseren 2023.xls",
sheet = 1, col_names = T) %>%
select(orgnr, year, Teller, Nevner) %>%
rename(var = Teller,
denominator = Nevner) %>%
filter(denominator != "-") %>%
mutate(ind_id = "norspis_dg",
context = "caregiver",
var = as.numeric(var),
denominator = as.numeric(denominator))

DG_gml <- read.csv2("~/mydata/norspis/norspis_dg_gml.csv") %>%
dplyr::filter(ind_id == "norspis_dg")

DG <- dplyr::bind_rows(DG_gml, DG2023)

write.csv2(DG, "~/mydata/norspis/norspis_dg2023.csv", row.names = F)


Indikator <- dplyr::bind_rows(Indikator, DG2023)

write.csv2(Indikator, paste0(tabfolder, "indikatorer_norspis_", Sys.Date(), ".csv"),
row.names = F)

2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ services:
dev:
depends_on:
- db
image: rapporteket/norspis-dev:nightly
image: rapporteket/norspis-dev:main
volumes:
- ~/.ssh:/home/rstudio/.ssh
- ~/.gitconfig:/home/rstudio/.gitconfig
5 changes: 5 additions & 0 deletions inst/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
TabOgFigAarrappNorspis (copy).pdf
TabOgFigAarrappNorspis-concordance.tex
TabOgFigAarrappNorspis.log
TabOgFigAarrappNorspis.pdf
TabOgFigAarrappNorspis.tex
1,008 changes: 1,008 additions & 0 deletions inst/TabOgFigAarrappNorspis.Rnw

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions man/datadump.Rd
11 changes: 11 additions & 0 deletions man/indikatorfigServer.Rd
11 changes: 11 additions & 0 deletions man/indikatorfig_UI.Rd
3 changes: 3 additions & 0 deletions man/norspisLesOgProsesser.Rd
6 changes: 5 additions & 1 deletion man/norspisPlotIndikator.Rd
31 changes: 31 additions & 0 deletions man/separer.Rd
18 changes: 18 additions & 0 deletions man/tr_summarize_output.Rd
2 changes: 1 addition & 1 deletion norspis.Rproj
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8

RnwWeave: Sweave
RnwWeave: knitr
LaTeX: pdfLaTeX

AutoAppendNewline: Yes