R/RyggVarTilrettelegg.R

Defines functions RyggVarTilrettelegg

Documented in RyggVarTilrettelegg

#' Funksjon for å tilrettelegge variable for beregning.
#'
#' Denne funksjonen gjør utvalg og tilrettelegger variable (gitt ved valgtVar) til videre bruk.
#' Videre bruk kan eksempelvis være beregning av AggVerdier eller gjennomsnitt.
#' Funksjonen gjør også filtreringer som å fjerne ugyldige verdier for den valgte variabelen, samt ta høyde for avhengigheter med
#' andre variable. Det er også her man angir aksetekster og titler for den valgte variabelen.
#' Her kan mye hentes til analysebok
#' Når ei fordeling består av flere variable, settes flerevar=1. Vi omdefinerer variablene slik at
#' alle gyldige registreringer (dvs. alle registreringer som skal telles med) er 0 eller 1.
#' De som har oppfylt spørsmålet
#' er 1, mens ugyldige registreringer er NA. Det betyr at hvis vi skal ta bort registreringer
#' som i kategorier av typen "Ukjent" kodes disse som NA, mens hvis de skal være med kodes de som 0.
#' Vi sender tilbake alle variable som indikatorvariable, dvs. med 0,1,NA
#'
#' @inheritParams RyggFigAndeler
#' @inheritParams RyggUtvalgEnh
#' @param figurtype Hvilken figurtype det skal tilrettelegges variable for:
#'                'andeler', 'andelGrVar', 'andelTid', 'gjsnGrVar', 'gjsnTid'
#'
#' @return Definisjon av valgt variabel.
#'
#' @export
#'


RyggVarTilrettelegg  <- function(RegData=NULL, valgtVar, ktr=0, datoFra='2007-01-01',
                                 datoTil=Sys.Date(), hovedkat=99, figurtype='andeler'){ #grVar='',


      "%i%" <- intersect

      #----------- Figurparametre ------------------------------
      cexgr <- 1	#Kan endres for enkeltvariable
      retn <- 'V'		#Vertikal som standard. 'H' angis evt. for enkeltvariable
      flerevar <- 0
      grtxt <- ''		#Spesifiseres for hver enkelt variabel
      grtxt2 <- ''	#Spesifiseres evt. for hver enkelt variabel
      varTxt <- ''
      xAkseTxt <- ''	#Benevning
      subtxt <- ''
      antDes <- 1
      if (figurtype == 'andelGrVar') {xAkseTxt <- 'Andel operasjoner (%)'}
      sortAvtagende <- TRUE  #Sortering av resultater
      KImaalGrenser <- NA
      tittel <- 'Variabelvalg (valgtVar) feil angitt' # ? I AndelerGrVar og GjsnGrVar genereres tittel i beregningsfunksjonen
      variable <- 'Ingen'
      #deltittel <- ''
      if (!is.null(RegData)) {RegData$Variabel <- 0}
      #Kan her definere opp alle aktuelle grupperingsvariable og deres tekst, eller
      #sende inn grupperingsvariabel og så gjøre beregninger. (Ulempe: Ekstra avhengigheter)
      #Sentralt spm: Hvor skal det avgjøres hvilken figurtype som vises??? her
      KIekstrem <- NULL

      #----Filtrere på at oppfølgigsskjema finnes
      #ktr kan ha verdiene 0, 1 eller 2
valgtVarTest <- valgtVar
      if (length(grep('3mnd', valgtVar)) == 1) {
         ktr <- 1
         valgtVarTest <- sub('3mnd', '', valgtVar)
         }
      if (length(grep('12mnd', valgtVar) == 1)) {
         ktr <- 2
         valgtVarTest <- sub('12mnd', '', valgtVar)
         }
      varPrePost <- c('fornoydhet', 'nytte', 'EQ5DEndr','EQ5DEndr',
                      'OswEndr', 'SmBeinEndr', 'SmRyggEndr',
                      'OswEndrPre', 'SmBeinEndrPre', 'SmRyggEndrPre')
      if ((valgtVarTest %in% varPrePost) & (ktr==0)) {ktr <- 1}
     ktrtxt <- c(' før operasjon', ' (3 mnd etter)', ' (12 mnd. etter)')[ktr+1]
      trekkfraDager <- c(0,100,380)[ktr+1]


      #-------------------------------------
      if (valgtVar=='deknRygg17') {        #andelerGrVar
            tittel <- 'Dekningsgrad, NKR Degenerativ Rygg, 2017'
            xAkseTxt <- 'dekningsgrad, NKR'
            KImaal <- 0.8
            data('deknRygg17', package = 'nkr') #paste0(valgtVar,'.Rdata')
            RegData <- deknRygg17 #paste0(valgtVar)
      }
      if (valgtVar=='deknNakke17') {        #andelerGrVar
            tittel <- 'Dekningsgrad, NKR Degenerativ Nakke, 2017'
            xAkseTxt <- 'dekningsgrad, NKR'
            KImaal <- 0.8
            data(deknNakke17, package = 'nkr')
            RegData <- deknNakke17 #paste0(valgtVar)
      }
      if (valgtVar=='deknRygg19') {        #andelerGrVar
         tittel <- 'Dekningsgrad, NKR Degenerativ Rygg, 2019'
         xAkseTxt <- 'dekningsgrad, NKR'
         KImaal <- 0.8
         data('deknRygg19', package = 'rygg') #paste0(valgtVar,'.Rdata')
         RegData <- deknRygg19 #paste0(valgtVar)
      }
      if (valgtVar=='deknNakke19') {        #andelerGrVar
         tittel <- 'Dekningsgrad, NKR Degenerativ Nakke, 2019'
         xAkseTxt <- 'dekningsgrad, NKR'
         KImaal <- 0.8
         data(deknNakke19, package = 'nakke')
         RegData <- deknNakke19 #paste0(valgtVar)
      }


      if (valgtVar=='alder') {	#Fordeling, GjsnGrVar, GjsnTid
            RegData <- RegData[which(RegData$Alder>=0), ]    #Tar bort alder<0
            RegData$Variabel <- RegData$Alder  	#GjsnTid, GjsnGrVar
            xAkseTxt <- 'alder (år)'
            tittel <- 'Alder ved innleggelse' #c('XX', 'test av tittel over to linjer') - funker!
            subtxt <- 'Aldersgrupper (år)'
            if (figurtype %in% c('gjsnGrVar', 'gjsnTid')) {
                  tittel <- 'alder ved innleggelse'}
            if (figurtype == 'andeler') {	#Fordelingsfigur
                  gr <- c(0,seq(20,90,10),150)
                  #gr <- c(seq(0, 100, 10),150)
                  RegData$VariabelGr <- cut(RegData$Alder, breaks=gr, include.lowest=TRUE, right=FALSE)
                  grtxt <- c('0-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79', '80-89', '90+')	#c(levels(RegData$VariabelGr)[-length(gr)], '90+')	#c(names(AndelLand)[-length(gr)], '90+')
                  #grtxt <- c('0-9','10-19','20-29','30-39','40-49','50-59','60-69','70-79','80-89','90-99','100+')
                  xAkseTxt <- 'Aldersgrupper (år)'}
            sortAvtagende <- FALSE
      }

      if (valgtVar=='alder70') {	#AndelTid, AndelerGrVar
            RegData <- RegData[which(RegData$Alder>=0), ]    #Tar bort alder<0
            RegData$Variabel[which(RegData$Alder>=70)] <- 1
            varTxt <- 'over 70 år'
            tittel <- 'Pasienter over 70 år'
      }

      if (valgtVar == 'antibiotika') { #fordeling, AndelGrVar, AndelTid
            grtxt <- c('Nei', 'Ja', 'Ikke utfylt')
            RegData$VariabelGr <- factor(RegData$AntibiotikaV3, levels = c(0,1,9))
            tittel <- 'Er det gitt antibiotikaprofylakse?'
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
               RegData <- RegData[which(RegData$AntibiotikaV3 %in% 0:1), ]
                  RegData$Variabel <- RegData$AntibiotikaV3
                  tittel <- 'Fått antibiotika'
                  varTxt <- 'som har fått antibiotika'
            }
      }
      if (valgtVar=='antibiotikaMedikament'){ #fordeling
         tittel <- 'Antibiotikatyper'
         grtxt <- c("Cefalotin","Cefuroxim","Cefalexin","(Di)Kloksacillin","Klindamycin",
                    "Penicillin","Erytromycin","Ampicillin","Tetracyclin","Trimetoprim+Sulfonamid",
                    "Vancomycin","Fusidinsyre","Ciprofloxacin","Cefazolin","Annet")
         RegData$VariabelGr <- factor(RegData$AntibiotikaMedikament, levels = c(1:14,20))
         retn <- 'H'
      }

      if (valgtVar %in% c('arbstatus', 'arbstatus3mnd', 'arbstatus12mnd')) { #Fordeling, AndelGrVar, AndelTid
            # Andel i kategori 6 tom 9, mottar sykepenger Av 1-9, (ikke bare de som sykemeldt fra før)
            #  Gml: grtxt <- c('I arbeid','Hjemmeværende', 'Studie/skole', 'Pensjonist', 'Arbeidsledig', 'Sykemeldt',
            #		'Aktiv sykemeldt', 'Delvis sykemeldt', 'Attføring/rehab.', 'Uføretrygdet', 'Ukjent')
            datoTil <- min(datoTil, Sys.Date()-trekkfraDager)
            RegData$Arbstatus <- switch(as.character(ktr),
                                        '0' = RegData$ArbstatusPreV3,
                                        '1'= RegData$Arbstatus3mndV3,
                                        '2'= RegData$Arbstatus12mndV3)
            ind <- switch(as.character(ktr),
                          '0' = 1:dim(RegData)[1],
                          '1' = which(RegData$Ferdigstilt1b3mnd==1),
                          '2' = which(RegData$Ferdigstilt1b12mnd == 1))
            RegData <- RegData[ind, ]
            retn <- 'H'
            grtxt <- c("Fulltidsjobb","Deltidsjobb","Student/skoleelev",
                       "Alderspensjonist", "Arbeidsledig","Sykemeldt","Delvis sykemeldt",
                       "Arbeidsavklaringspenger", "Uførepensjonert","Ikke utfylt")
            RegData$VariabelGr <- factor(RegData$Arbstatus, levels = c(1:9,99))
            tittel <- paste0('Arbeidsstatus, ', ktrtxt)
            if (figurtype %in% c('andelTid', 'andelGrVar')) {
                  RegData <- RegData[which(RegData$Arbstatus %in% 1:9), ]
                  RegData$Variabel[which(RegData$Arbstatus %in% 6:9)] <- 1
                  tittel <- paste0('Mottar sykepenger' ,ktrtxt)
                  varTxt <- 'som mottar sykepenger'}
            sortAvtagende <- FALSE
      }

      if (valgtVar == 'ASA') { #fordeling, AndelGrVar
            grtxt <- c('I:Ingen','II:Moderat', 'III:Alvorlig', 'IV:Livstruende', 'Ikke utfylt')
            subtxt <- 'Sykdomsgrad'
            RegData <- RegData[which(RegData$ASA %in% c(1:4,9)), ]  	#Antar ikke opererer døde...
            RegData$VariabelGr <- factor(RegData$ASA, levels = c(1:4,9))
            tittel <- 'ASA-grad (komorbiditet)'
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
                  RegData <- RegData[which(RegData$ASA %in% 1:4), ]
                  RegData$Variabel[which(RegData$ASA > 2)] <- 1
                  tittel <- 'ASA-grad > II'
            }
            sortAvtagende <- FALSE
      }

      if (valgtVar == 'BMI') { #Fordeling, AndelGrVar
            #BMI > 30
            RegData <- RegData[which(RegData$BMI >10), ]
            gr <- c(0, 18.5, 25, 30, 35, 40, 1000)
            RegData$VariabelGr <- cut(RegData$BMI, breaks=gr, include.lowest=TRUE, right=FALSE)
            tittel <- 'Pasientenes BMI (Body Mass Index)'
            grtxt <- c('<18,5', levels(RegData$VariabelGr)[2:(length(gr)-2)],'40+')
            grtxt2 <- c('Undervekt', 'Normalvekt', 'Overvekt', 'Fedme', 'Fedme kl II', 'Fedme kl III')
            xAkseTxt <- '"Body Mass Index"'
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
                  RegData$Variabel[which(RegData$BMI > 30)] <- 1
                  tittel <- 'Pasienter med fedme: (BMI>30)'
                  varTxt <- 'BMI>30'
                  sortAvtagende <- FALSE
            }}

      if (valgtVar == 'degSponFusj') { #AndelGrVar, AndelTid
        #hovedkat=10 #Degen. spondylolistese
        RegData <- RyggUtvalgEnh(RegData, hovedkat=10)$RegData
        RegData$Variabel[which(RegData$HovedInngrep ==5)] <- 1
        varTxt <- 'tilfeller'
        tittel <- 'Degen. spondylolistese operert med fusjonskirurgi'
        sortAvtagende <- F
        xAkseTxt <- 'Andel med fusjonskirurgi (%)'
      }
      if (valgtVar == 'degSponFusj1op') { #AndelGrVar, AndelTid
        # Kl 5. Andel pasienter med degenerativ spondylolistese som blir operert med
        # fusjonskirurgi ved første operasjon
        # Mål: ≤ landsgjennomsnittet høy måloppnåelse (grønt), &gt; landsgjennomsnittet moderat/lav (gult)
        # Hensikt: Redusere andel pasienter med degenerativ spondylolistese som blir operert
        # med fusjonskirurgi ved første operasjon
        #hovedkat=10 #Degen. spondylolistese
        #RegData <- finnReoperasjoner(RegData = RegData)
        RegData <- RyggUtvalgEnh(RegData, hovedkat=10)$RegData
        RegData <- RegData[which(RegData$TidlOpr == 4), ]
        RegData$Variabel[which(RegData$HovedInngrep ==5)] <- 1 # & RegData$TidlOpr == 4
        varTxt <- 'tilfeller'
        tittel <- 'Degen. spondylolistese, fusjonskirurgi ved første operasjon'
        sortAvtagende <- F
        xAkseTxt <- 'Andel med fusjonskirurgi i første operasjon (%)'
        KImaalGrenser <- 'landsgj' #c(0,landsgj,100)
      }
      if (valgtVar == 'degSponSSSten') { #AndelGrVar
            #(Først og fremst fusjonskirurgi)
            RegData$Variabel[which((RegData$RfSentr==1) & (RegData$RfSpondtypeDegen == 1))] <- 1
            tittel <- 'Degenerativ spondylolistese og sentral spinal stenose'
            varTxt <- 'som har dette'
            sortAvtagende <- FALSE
      }

      if (valgtVar == 'EQ5DPre') {#ford gjsnPre (gjsnBox)
            RegData <- RegData[which(RegData$EQ5DV3Pre > -0.6),]
            gr <- c(-0.6, seq(-0.2, 0.9, 0.1), 1)
            #gr <- c(0,seq(20,90,10),150)
            RegData$VariabelGr <- cut(round(RegData$EQ5DV3Pre,3), breaks=gr, include.lowest=TRUE, right=FALSE)
            #grtxt <- c('0-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79', '80-89', '90+')
            grtxt <- levels(RegData$VariabelGr)
            #grtxt <- c(levels(RegData$VariabelGr)[-length(gr)], '90+')
            tittel <- 'EQ5D før operasjon'
            if (figurtype %in% c('gjsnBox', 'gjsnGrVar')){
               tittel <- 'EQ5D før operasjonen'}
            RegData$Variabel <- RegData$EQ5DV3Pre
            KIekstrem <- c(-0.6, 1)
      }

      if (valgtVar %in% c('EQ5DEndr', 'EQ5DEndr3mnd', 'EQ5DEndr12mnd')) {#gjsnPre (gjsnBox)
            tittel <- paste0('forbedring av EQ5D', ktrtxt)
            RegData$Variabel <- switch(as.character(ktr),
                                       '1'= (RegData$EQ5DV33mnd - RegData$EQ5DV3Pre),
                                       '2'= (RegData$EQ5D12V3mnd - RegData$EQ5DV3Pre))
            RegData <- RegData[which(!is.na(RegData$Variabel)),]
            Xlab <- 'EQ5D før operasjon'
            gr <- c(round(seq(-0.6,0.8,0.2),1),1.6)	#round(seq(-0.6,1.6,0.3),1)}
            RegData$Gr <- cut(RegData$EQ5DV3Pre, gr, right=F)
            GrNavn <- levels(RegData$Gr)
            AntGr <- length(GrNavn)
            GrNavn[AntGr] <- '0.8+'
            KIekstrem <- c(-1.6, 1.6)
      }

      if (valgtVar == 'EQangstPre') {#fordeling
         tittel <- 'Problemer med angst/depresjon'
         grtxt <- c('Ingen', 'Litt','Middels', 'Svært','Ekstremt', 'Ikke utfylt')
         RegData$VariabelGr <- factor(RegData$EqangstV3Pre, levels = c(1:5,9))
         subtxt <- 'Grad av engstelighet/deprimerthet'	#Tilstand i forhold til angst'
      }
      if (valgtVar == 'EQgangePre') { #fordeling
         tittel <- 'Problemer med gangfunksjon før operasjon'
         grtxt <- c('Ingen', 'Litt','Middels', 'Store', 'Ute av stand til å gå', 'Ikke utfylt')
         RegData$VariabelGr <- factor(RegData$EqgangeV3Pre, levels = c(1:5,9))
         subtxt <- 'problemer med gange'
      }
      if (valgtVar == 'erstatningPre') { #fordeling, AndelGrVar, #AndelTid
         #Pasientskjema. Andel med ErstatningPre
         #V2: Kode 1:4,9: 'Ja', 'Nei', 'Planlegger', 'Innvilget', 'Ukjent'
         #V3: [0,1,2,3,9]	["Nei","Ja","Planlegger","Innvilget","Ikke utfylt"]

         grtxt <- c('Nei', 'Ja', 'Planlegger', 'Innvilget', 'Ikke utfylt')
         #RegData$VariabelGr <- 9
         #indDum <- which(RegData$ErstatningPre %in% 1:4)
         #RegData$VariabelGr[indDum] <- RegData$ErstatningPre[indDum]
         RegData$VariabelGr <- factor(RegData$ErstatningPre, levels = c(0:3,9))
         tittel <- 'Har pasienten søkt erstatning?'
         if (figurtype %in% c('andelGrVar', 'andelTid')) {
            RegData <- RegData[which(RegData$ErstatningPre %in% 0:3), ]
            RegData$Variabel[which(RegData$ErstatningPre %in% c(1,2))] <- 1
            tittel <- 'Pasienten har søkt/planlegger å søke erstatning'
            varTxt <- 'som har søkt erstatning'
            sortAvtagende <- FALSE}
      }

      if (valgtVar %in% c('fornoydhet', 'fornoydhet3mnd', 'fornoydhet12mnd')) { #fordeling, AndelGrVar
         #3/12mndSkjema. Andel med helt Fornøyd (1)
         #Kode 1:5,9: 'Fornøyd', 'Litt fornøyd', 'Verken eller', 'Litt misfornøyd', 'Misfornøyd', 'Ukjent')
         tittel <- paste('Fornøydhet', ktrtxt)
         datoTil <- min(datoTil, as.Date(Sys.Date()-trekkfraDager))
         RegData$Fornoyd <- switch(as.character(ktr),
                                   '1'= RegData$Fornoyd3mnd,
                                   '2'= RegData$Fornoyd12mnd)
         grtxt <- c('Fornøyd', 'Litt fornøyd', 'Verken eller', 'Litt misfornøyd', 'Misfornøyd', 'Ukjent')
         RegData$VariabelGr <- 9
         indDum <- which(RegData$Fornoyd %in% 1:5)
         RegData$VariabelGr[indDum] <- RegData$Fornoyd[indDum]
         RegData$VariabelGr <- factor(RegData$VariabelGr, levels = c(1:5,9))
         if (figurtype %in% c('andelGrVar', 'andelTid')) {
            RegData <- RegData[which(RegData$Fornoyd %in% 1:5), ]
            RegData$Variabel[which(RegData$Fornoyd %in% 1:2)] <- 1 #
            tittel <- paste0('Fornøyde pasienter', ktrtxt)
         }
      }
      if (valgtVar=='hovedInngrep'){ #fordeling
         tittel <- 'Hovedinngrep'
         # grtxt <- c('Udefinerbart', 'Prolapskirurgi', 'Foramenotomi', 'Laminektomi',
         #            'Interspin. implantat', 'Fusjonskirurgi', 'Skiveprotese', 'Rev. av implantat')
         grtxt <- c('Udefinerbart', 'Prolapskirurgi', 'Dekompresjon', 'Laminektomi', 'Eksp. intersp impl.',
                    'Fusjonskirurgi', 'Deformitet', 'Rev. av implantat', 'Skiveprotese')
         RegData$VariabelGr <- factor(RegData$HovedInngrep, levels = 0:8)
         retn <- 'H'
      }
      if (valgtVar=='inngrep'){ #fordeling
         tittel <- 'Inngrepstyper'
         grtxt <- c('Andre inngrep', 'Prolaps mikro', 'Prolaps åpen', 'Midtlinjebev. dekomp.',
                    'Laminektomi', 'Eksp. intersp impl.', 'PLF', 'PLIF', 'TLIF', 'ALIF', 'XLIF',
                    'Udefinert fusjon', 'Osteotomi/deform.', 'Revisjon', 'Skiveprotese')
         RegData$VariabelGr <- factor(RegData$InngrepV2V3, levels = 0:14)
         retn <- 'H'
      }


      if (valgtVar=='komorbiditet') {
         tittel <- 'Komorbiditet'
         retn <- 'H'
         flerevar <- 1
         RegData <- RegData[which(RegData$OpDato >= '2019-01-01'), ]
         # variableV2 <- c('SykdAndreRelevanteSykdBechtrew', 'SykdAnnenendokrin', 'SykdAnnenreumatisk',
         #               'SykdCerebrovaskular', 'SykdDepresjonAngst', 'SykdHjertekar', 'SykdHoftekneartose',
         #               'SykdHypertensjon', 'SykdKreft', 'SykdKroniskLunge', 'SykdKroniskNevrologisk',
         #               'SykdKroniskSmerterMuskelSkjelettsyst', 'SykdOsteoporose', 'SykDprebetesMellitus',
         #               'SykdReumatoidartritt', 'SykdVaskularClaudicatio', 'Sykd')
         variable <- c('SykdAndreRelevanteSykdBechtrew', 'SykdAnnenendokrin', 'SykdAnnenreumatisk',
                       'SykdCerebrovaskular', 'SykdDepresjonAngst', 'SykdHjertekar', 'SykdHoftekneartose',
                       'SykdHypertensjon', 'SykdKreft', 'SykdKroniskLunge', 'SykdKroniskNevrologisk',
                       'SykdOsteoporose', 'SykdOsteoporoseBrudd', 'SykDprebetesMellitus',                   #'SykdKroniskSmerterMuskelSkjelettsyst',
                       'SykdPolynevropati', 'SykdProstatisme',
                       'SykdReumatoidartritt', 'SykdVaskularClaudicatio', 'SykdGeneralisertSmSyndr',
                       'Sykd')

         grtxt <- c('Bechterew', 'Endokrin', 'Reumatisk',
                    'Cerebrovaskulær', 'Depresjon/Angst', 'Hjerte-kar', 'Hoftekneartose',
                    'Hypertensjon', 'Kreft', 'Lungesykd.', 'Nevrologisk sykd.',
                    'Osteoporose', 'Osteoporosebrudd', 'Diabetes Mell.',                         #'Muskel-/skjelettsm.',
                    'Polynevropati', 'Prostatisme',
                    'Reumatoid artritt', 'Vask. Claudicatio', 'Gen.smertesyndrom',
                    'Tot. Komorb.')

         cexgr <- 0.9	#Kan endres for enkeltvariable
      }

      if (valgtVar=='komplPer') { #fordeling
         tittel <- 'Peroperative komplikasjoner'
         retn <- 'H'
         flerevar <- 1
         #NB <- '(Komplikasjoner rapporteres kun f.o.m. 2010)'
         variable <- c('PeropKompDura', 'PeropKompFeilnivSide', 'PeropKompNerve', 'PeropKompTransfuBlodning',
                       'PeropKompKardio','PeropKompFeilplassImp','PeropKompResp','PeropKompAnafy')
         grtxt <- c('Durarift', 'Operert feil nivå/side', 'Nerveskade', 'Transfusjonskrevende blødning',
                    'Kardiovaskulær komplikasjon', 'Feilplassert implantat', 'Respiratorisk komplikasjon', 'Anafylaksi')
      }

      if (valgtVar=='komplPost') {
         tittel <- 'Pasientrapporterte komplikasjoner'
         datoFra <- max(datoFra, '2020-01-01')
         datoTil <- min(datoTil, as.character(Sys.Date()-90))
         retn <- 'H'
         flerevar <- 1
         variable <- c('KpInfOverfla3mnd','KpInfDyp3mnd', 'KpUVI3mnd', #'KpMiktProb3mnd',
                       'KpLungebet3mnd', 'KpBlod3mnd','KpDVT3mnd','KpLE3mnd', 'Kp3mnd')
         grtxt <- c('Overfl. sårinf. (mangelfull reg. 2019)', 'Dyp sårinfeksjon',
                    'Urinveisinfeksjon', 'Pneumoni', #'Problem, vannlatning/avføring',
                    'Transf./opr. pga. blødning', 'DVT','Lungeemboli', 'Postop. kompl. totalt') #'Tot. komplikasjoner'
         #Andel kun av de som har svart på 3 mnd ktr:
         RegData <- RegData[which(RegData$Ferdigstilt1b3mnd==1), ]
         indNA <- which(rowSums(is.na(RegData[ ,variable])) == length(variable))
         if (length(indNA)>0){ #Fjerner rader hvor alle Kp-variabler er NA
           RegData <- RegData[-indNA, ] }
         }

      if (valgtVar == 'kp3mnd') { #AndelGrVar
         #Komplikasjoner 0:nei, 1:ja
         #ind <- which(RegData$Ferdigstilt1b3mnd==1)
         #RegData <- RegData[ind, ]
        variable <- c('KpInfOverfla3mnd','KpInfDyp3mnd', 'KpUVI3mnd', #'KpMiktProb3mnd',
                       'KpLungebet3mnd', 'KpBlod3mnd','KpDVT3mnd','KpLE3mnd')
        indNA <- which(rowSums(is.na(RegData[ ,variable])) == length(variable))
        if (length(indNA)>0){ #Fjerner rader hvor alle Kp-variabler er NA
        RegData <- RegData[-indNA, ] }
         RegData$Variabel[rowSums(RegData[ ,variable], na.rm = T) > 0] <- 1
         VarTxt <- 'tilfeller'
         tittel <- 'Pasientrapporterte komplikasjoner (%)'
         sortAvtagende <- FALSE
      }
      if (valgtVar == 'kpInf3mnd') { #AndelGrVar, AndelTid
         #Komplikasjoner 0:nei, 1:ja
        #Antar at de som ikke har fylt ut ikke har hatt infeksjon
         RegData <- RegData[which(RegData$Ferdigstilt1b3mnd==1), ]
         RegData$Variabel[rowSums(RegData[ ,c('KpInfOverfla3mnd', 'KpInfDyp3mnd')], na.rm = T) > 0] <- 1
         indIkkeSaarInf <- which(RegData$OpDato >= '2019-01-01' & RegData$OpDato <= '2021-12-31')
         RegData$Variabel[indIkkeSaarInf] <- NA
         VarTxt <- 'tilfeller'
         tittel <- paste0('Sårinfeksjon, pasientrapportert', ktrtxt)
         sortAvtagende <- FALSE
         xAkseTxt <- 'Andel sårinfeksjoner (%)'
         # if (hovedkat == 1) {KImaalGrenser <- c(0,2,100)}
         # if (hovedkat == 5) {KImaalGrenser <- c(0,3,100)}
         # if (hovedkat == 9) {KImaalGrenser <- c(0,3,100)}
      }
      if (valgtVar == 'kpInfOverfl') { #AndelGrVar, AndelTid
        #Lena: Tilpass ktr
        #Komplikasjoner 0:nei, 1:ja
        ind <- switch(as.character(ktr),
                      '1' = which(RegData$Ferdigstilt1b3mnd==1),
                      '2' = which(RegData$Ferdigstilt1b12mnd == 1))
        RegData <- RegData[ind, ]
        RegData$Variabel[RegData$KpInfOverfla3mnd==1] <- 1
        indIkkeSaarInf <- which(RegData$OpDato >= '2019-01-01' & RegData$OpDato <= '2021-12-31')
        RegData$Variabel[indIkkeSaarInf] <- NA
        VarTxt <- 'tilfeller'
        tittel <- paste0('Overfladisk sårinfeksjon, pasientrapportert', ktrtxt)
        sortAvtagende <- FALSE
        xAkseTxt <- 'Andel sårinfeksjoner (%)'
        #KImaalRetn <- 'lav'
        if (hovedkat == 1) {KImaalGrenser <- c(0,2,100)}
        if (hovedkat == 5) {KImaalGrenser <- c(0,3,100)}
        if (hovedkat == 9) {KImaalGrenser <- c(0,3,100)}
      }

      if (valgtVar=='liggedogn') {#fordeling, gjsnGrVar, andeler, gjsnTid
            #liggedogn
            #For opphold registrert som dagkirurgi uten at liggedogn er reg., settes liggedogn=0
            tittel <- 'Total liggetid ved operasjon'
            dagind <- which( (is.na(RegData$Liggedogn) | is.nan(RegData$Liggedogn))  & RegData$Dagkirurgi==1)
            RegData$Liggedogn[dagind]<-0
            RegData <- RegData[which(RegData$Liggedogn>=0),]
            RegData$Variabel <- RegData$Liggedogn #gjsnGrVar
            gr <- c(0:7,100)
            RegData$VariabelGr <- cut(RegData$Liggedogn, breaks=gr, include.lowest=TRUE, right=FALSE)
            grtxt <- c(0:6, '7+')
            xAkseTxt <- 'Antall liggedøgn' #(subtxt
            subtxt <- 'døgn'
            if (figurtype=='gjsnGrVar') {tittel <- 'total liggetid'}
            sortAvtagende <- 'F'
            TittelVar <- 'Total liggetid ved operasjon'
            ytxt1 <- 'liggetid'
            KIekstrem <- c(0, 20)
      }
      if (valgtVar=='liggetidPostOp') {#fordeling, gjsnGrVar, gjsnTid
         #liggedogn
         #For opphold registrert som dagkirurgi uten at liggedogn er reg., settes liggedogn=0
         tittel <- 'Liggetid etter operasjon'
         RegData <- RegData[which(RegData$OpDato >= '2019-01-01'), ]
         dagind <- which( (is.na(RegData$LiggetidPostOp) | is.nan(RegData$LiggetidPostOp))  & RegData$Dagkirurgi==1)
         RegData$LiggetidPostOp[dagind]<-0
         RegData <- RegData[which(RegData$LiggetidPostOp>=0),]
         RegData$Variabel <- RegData$LiggetidPostOp #gjsnGrVar
         gr <- c(0:7,100)
         RegData$VariabelGr <- cut(RegData$LiggetidPostOp, breaks=gr, include.lowest=TRUE, right=FALSE)
         grtxt <- c(0:6, '7+')
         xAkseTxt <- 'Antall liggedøgn' #(subtxt
         subtxt <- 'døgn'
         if (figurtype=='gjsnGrVar') {tittel <- 'liggetid etter operasjon'}
         sortAvtagende <- 'F'
         TittelVar <- 'Liggetid etter operasjon'
         ytxt1 <- 'liggetid'
         KIekstrem <- c(0, 20)
      }
      if (valgtVar %in% c('misfornoyd', 'misfornoyd3mnd', 'misfornoyd12mnd')) { #AndelGrVar	#%in% c('Misfor3mnd','Misfor12mnd')) { #AndelGrVar
            #3/12mndSkjema. Andel med Misfornøyd/litt misfornøyd (1,2)
            #Kode 1:5,9: 'Fornøyd', 'Litt fornøyd', 'Verken eller', 'Litt misfornøyd', 'Misfornøyd', 'Ukjent')
            RegData$Misfornoyd <- switch(as.character(ktr),
                                         '1'= RegData$Fornoyd3mnd,
                                         '2'= RegData$Fornoyd12mnd)
            RegData <- RegData[which(RegData$Misfornoyd %in% 1:5), ]
            RegData$Variabel[which(RegData$Misfornoyd %in% 4:5)] <- 1
            tittel <- paste0('Misfornøyde pasienter' ,ktrtxt)
            sortAvtagende <- FALSE
      }
      if (valgtVar == 'morsmal') { #fordeling AndelGrVar, AndelTid
            grtxt <- c('Norsk', 'Samisk', 'Annet', 'Ikke utfylt')
            tittel <- 'Morsmål'
            RegData$VariabelGr <- factor(RegData$Morsmal, levels = c(1:3,9))
            if (figurtype %in% c('andelTid', 'andelGrVar')) {
                  RegData <- RegData[which(RegData$Morsmal %in% 1:3), ]
                  RegData$Variabel[which(RegData$Morsmal %in% 2:3)] <- 1
                  tittel <- 'Fremmedspråklige (ikke norsk som morsmål)'
                  varTxt <- 'fremmedspråklige'
                  sortAvtagende <- F}
      }

      if (valgtVar %in% c('nytte', 'nytte3mnd', 'nytte12mnd')) { #fordeling, AndelGrVar
            #Andel med helt bra/mye bedre (1:2)
            #Kode 1:7: ''Helt bra', 'Mye bedre', 'Litt bedre', 'Uendret', 'Litt verre', 'Mye verre',
            #				'Verre enn noen gang', 'Ukjent')
            tittel <- c('Hvilken nytte har du hatt av operasjonen?',ktrtxt)
            RegData$Nytte <- switch(as.character(ktr),
                                    '1'=RegData$Nytte3mnd,
                                    '2'=RegData$Nytte12mnd)
            datoTil <- min(datoTil, Sys.Date()-trekkfraDager)
            retn <- 'H'
            RegData$VariabelGr <- 9
            indDum <- which(RegData$Nytte %in% 1:7)
            RegData$VariabelGr[indDum] <- RegData$Nytte[indDum]
            RegData$VariabelGr <- factor(RegData$VariabelGr, levels = c(1:7,9))
            grtxt <- c('Helt bra', 'Mye bedre', 'Litt bedre', 'Uendret', 'Litt verre', 'Mye verre',
                       'Verre enn noen gang', 'Ukjent')
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
                  RegData <- RegData[which(RegData$Nytte %in% 1:7), ]
                  RegData$Variabel[RegData$Nytte %in% 1:2] <- 1
                  tittel <- paste0('Helt bra eller mye bedre' , ktrtxt)
            }}

      if (valgtVar=='opInd') { #fordeling
            tittel <- 'Operasjonsindikasjon'
            retn <- 'H'
            flerevar <- 1
            variable <- c('OpIndCauda', 'OpIndParese') #, 'OpIndSme')
            grtxt <- c('Cauda equlina', 'Parese')# , 'Smerter')
      }
      if (valgtVar == 'opIndPareseGrad') {#fordeling
            tittel <- 'Operasjonsindikasjon, paresegrad'
            grtxt <- c(0:5, 'Ukjent')
            RegData <- RegData[which(RegData$OpIndParese ==1),]
            indDum <- which(RegData$OpIndPareseGrad %in% 0:5)
            RegData$VariabelGr <- 9
            RegData$VariabelGr[indDum] <- RegData$OpIndPareseGrad[indDum]
            RegData$VariabelGr <- factor(RegData$VariabelGr, levels = c(0:5,9))
      }

      if (valgtVar %in% c('oppf3mnd', 'oppf12mnd', 'oppf3og12mnd')) { #AndelGrVar
        #Oppfølgingsskjema.
        #"Ferdig1a", "Ferdig2a", "Ferdigstilt1b12mnd", "Ferdigstilt1b3mnd"
        datoTil <- min(datoTil, Sys.Date()-trekkfraDager)
        ind <- switch(valgtVar,
                      oppf3mnd = which(RegData$Ferdigstilt1b3mnd==1),
                      oppf12mnd = which(RegData$Ferdigstilt1b12mnd==1),
                      oppf3og12mnd = which(RegData$Ferdigstilt1b3mnd==1 & RegData$Ferdigstilt1b12mnd==1 ))

        RegData$Variabel[ind] <- 1

        tittel <- paste0('Svart på oppfølging, ',
                         switch(valgtVar,
                                oppf3mnd = '3 mnd. etter',
                                oppf12mnd = '12 mnd. etter',
                                oppf3og12mnd = 'både 3 og 12 mnd. etter'))
        sortAvtagende <- T
      }
      if (valgtVar == 'opKat') { #fordeling, andel øhjelp
            #retn <- 'H'
            tittel <- 'Operasjonskategori'
            grtxt <- c('Elektiv', 'Akutt', '1/2-Akutt', 'Ikke utfylt')
            RegData$VariabelGr <- factor(RegData$OpKat, levels = c(1:3,9))
            if (figurtype %in% c('andelTid', 'andelGrVar')) {
               RegData <- RegData[which(RegData$OpKat %in% 1:3), ]
               RegData$Variabel[which(RegData$OpKat ==2)] <- 1
               tittel <- 'Øyeblikkelig hjelp'
               varTxt <- 'ø-hjelp'
               sortAvtagende <- F}
      }


      if (valgtVar %in% c('OswEndr', 'OswEndr3mnd', 'OswEndr12mnd')) {
         #Forbedring=lavere Oswestry
         tittel <- paste0('forbedring av ODI', ktrtxt)
         RegData$Variabel <- switch(as.character(ktr),
                                    '1'= (RegData$OswTotPre - RegData$OswTot3mnd),
                                    '2'= (RegData$OswTotPre - RegData$OswTot12mnd))
         RegData <- RegData[which(!is.na(RegData$Variabel)),]
         KIekstrem <- c(-100, 100)
      }

      if (valgtVar %in% c('OswEndrPre', 'OswEndrPre3mnd', 'OswEndrPre12mnd')) { #Sammenligner endring og prescore
         #Forbedring=lavere Oswestry
         tittel <- paste0('forbedring av ODI', ktrtxt)
         RegData$Variabel <- switch(as.character(ktr),
                                    '1'= (RegData$OswTotPre - RegData$OswTot3mnd),
                                    '2'= (RegData$OswTotPre - RegData$OswTot12mnd))
         RegData <- RegData[which(!is.na(RegData$Variabel)),]
         KIekstrem <- c(-100, 100)
         Xlab <- 'Oswestry før operasjon'
         gr <- c(seq(0,90,10), 101)
         RegData$Gr <- cut(RegData$OswTotPre, gr, right=F)
         GrNavn <- levels(RegData$Gr)
         GrNavn[length(GrNavn)] <- '[90,100]'
      }


      if (valgtVar == 'OswEndrLav') { #AndelGrVar
            #Mislykkede operasjoner
            RegData$OswEndr <- switch(as.character(ktr),
                                      '1'= (RegData$OswTotPre - RegData$OswTot3mnd),
                                      '2'= (RegData$OswTotPre - RegData$OswTot12mnd))
            RegData <- RegData[which(RegData$OswEndr >= -100), ]
            RegData$Variabel[which(RegData$OswEndr <13)] <- 1
            tittel <- paste0('Forbedring av Oswestry-skår < 13 poeng', ktrtxt)
            sortAvtagende <- F
      }
      if (valgtVar %in% c('OswEndr20', 'OswEndr203mnd', 'OswEndr2012mnd')) { #AndelGrVar, andelTid
            #Mislykkede operasjoner
            RegData$OswEndr <- switch(as.character(ktr),
                                      '1'= (RegData$OswTotPre - RegData$OswTot3mnd),
                                      '2'= (RegData$OswTotPre - RegData$OswTot12mnd))
            RegData <- RegData[which(RegData$OswEndr >= -100), ]
            RegData$Variabel[which(RegData$OswEndr >=20)] <- 1
            varTxt <- 'med >20 poeng forbedring'
            tittel <- paste0('Forbedring av Oswestry-skår >= 20 poeng', ktrtxt)

      }

      if (valgtVar %in% c('OswEndr30pst', 'OswEndr30pst3mnd', 'OswEndr30pst12mnd')) { #AndelGrVar, andelTid
            #Andel med klinisk signifikant forbedring i Oswestry-skår.
            #Forbedring = nedgang
            RegData$OswPst <- switch(as.character(ktr),
                                     '1' = (RegData$OswTotPre - RegData$OswTot3mnd)/RegData$OswTotPre*100,
                                     '2' = (RegData$OswTotPre - RegData$OswTot12mnd)/RegData$OswTotPre*100)
            RegData <- RegData[which(RegData$OswPst>=-1000), ]
            RegData$Variabel[which(RegData$OswPst >=30)] <- 1
            varTxt <- 'med \u2265 30 % forbedring'
            tittel <- paste0('Minst 30% forbedring av Oswestry-skår', ktrtxt)
      }
      if (valgtVar %in% c('Osw22', 'Osw223mnd', 'Osw2212mnd')) { #AndelGrVar
            #Andel med Oswestry-skår under 23 etter op.
            RegData$OswPost <- switch(as.character(ktr),
                                      '1' = RegData$OswTot3mnd,
                                      '2' = RegData$OswTot12mnd)
            RegData <- RegData[which(RegData$OswPost>=0), ]
            RegData$Variabel[which(RegData$OswPost <= 22)] <- 1
            tittel <- paste0('Oswestry-skår < 23 poeng', ktrtxt)
      }
      if (valgtVar %in% c('Osw48', 'Osw483mnd', 'Osw4812mnd')) { #AndelGrVar
            #Andel med Oswestry-skår fortsatt over 48.
            RegData$OswPost <- switch(as.character(ktr),
                                      '1' = RegData$OswTot3mnd,
                                      '2' = RegData$OswTot12mnd)
            RegData <- RegData[which(RegData$OswPost>=0), ]
            RegData$Variabel[which(RegData$OswPost >48)] <- 1
            tittel <- paste0('Oswestry-skår > 48 poeng', ktrtxt)
            sortAvtagende <- F
      }
      if (valgtVar == 'OswTotPre') { #fordeling, gjsnBox, gjsnGrVar
         RegData$Variabel <- RegData$OswTotPre
         RegData <- RegData[which(!is.na(RegData$Variabel)),]
         tittel <- 'oswestryskår før operasjonen'
         gr <- seq(0, 100, 10)
         RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
         grtxt <- levels(RegData$VariabelGr)
         xAkseTxt <- 'skår'
         KIekstrem <- c(0, 100)
         sortAvtagende <- FALSE
      }

       if (valgtVar=='peropKomp') { #AndelGrVar
            #Komplikasjoner ved operasjon
            #Kode 1:Ja,  tomme:Nei
            RegData$Variabel[which(RegData$PeropKomp == 1)] <- 1
            tittel <- 'Komplikasjoner ved operasjon'
            varTxt <- 'med komplikasjoner'
            sortAvtagende <- FALSE
      }
      if (valgtVar=='peropKompDura') { #AndelGrVar
            #Durarift ved operasjon
            #Kode 1:Ja,  tomme:Nei
            RegData$Variabel[which(RegData$PeropKompDura == 1)] <- 1
            tittel <- 'Komplikasjon ved operasjon: Durarift'
            sortAvtagende <- FALSE
            xAkseTxt <- 'Andel durarift (%)'
            varTxt <- 'med durarift'
            # if (hovedkat == 1) {KImaalGrenser <- c(0,2,20)}
            # if (hovedkat %in% c(5,9)) {KImaalGrenser <- c(0,3,20)}
      }
      if (valgtVar=='radUnders') { #fordeling
            tittel <- 'Radiologisk undersøkelse'
            retn <- 'H'
            flerevar <- 1
            variable <- c('RvCt', 'RvMr',  'RvRtgLscol', 'RvFunksjo') #'RvRadigr-it', 'RvDiscogr-ut', 'RvDpregblok',
            grtxt <- c('CT', 'MR', 'Rtg.LS-columna', 'Fleks./Ekst.') #'Radikulografi-ut', 'Diskografi-ut', 'Diag.blokade'-finnes,
            #variable <- c('RvCt', 'RvMr', 'RvRadigr', 'RvDiscogr', 'RvDpregblok', 'RvRtgLscol', 'RvFunksjo')
            #grtxt <- c('CT', 'MR', 'Radikulografi', 'Diskografi', 'Diag.blokade', 'Rtg.LS-columna', 'Fleks./Ekst.')
      }

      if (valgtVar == 'regDiffOp') {  #Andeler
      #Verdier: 0-3402
      tittel <- 'Tid fra utfylling av pasientskjema(?) til operasjon'
      #if (figurtype == 'andeler') {	#Fordelingsfigur
      #14 dager, mellom 15 dager og 3 mnd, mer enn 3 mnd
        gr <- c(-1000,-30, -14, 0, 15, 91, 2000)
        RegData$VariabelGr <- cut(RegData$DiffUtfOp, breaks=gr, include.lowest=TRUE, right=FALSE)
        grtxt <- c('<-30d', levels(RegData$VariabelGr)[2:(length(gr)-2)], '>3mnd')
        subtxt <- 'dager fra operasjon til utfylling' #}
      }


       if (valgtVar == 'regForsinkelse') {  #Andeler, GjsnGrVar
         #Verdier: -2205 - 969
         RegData <- RegData[which(RegData$DiffUtFerdig > -1), ]
         tittel <- switch(figurtype,
                          andeler='Tid fra utskriving til ferdigstilt registrering',
                          andelGrVar = 'Mer enn 30 dager fra utskriving til ferdig registrering') #
         subtxt <- 'døgn'
         cexgr <- 0.9
         xAkseTxt <- 'dager'
         sortAvtagende <- FALSE
         datoTil <- min(datoTil, Sys.Date()-trekkfraDager)

         if (figurtype == 'andeler') {	#Fordelingsfigur
            gr <- c(seq(0,98,7), 2000)
            RegData$VariabelGr <- cut(RegData$DiffUtFerdig, breaks=gr, include.lowest=TRUE, right=FALSE)
            #plot(RegData$VariabelGr)
            grtxt <- c(1:14, '>3 mnd.')
            subtxt <- 'innen gitte uker etter utskriving'
         }

         if (figurtype %in% c('andelTid', 'andelGrVar')) {
            RegData$Variabel[which(RegData$DiffUtFerdig >90)] <- 1
            tittel <- 'Registrert for sent for 3 mnd. oppfølging'
            varTxt <- 'for sent registrert'
            sortAvtagende <- F}
         #KImaalGrenser <- c(0,3,10,100)
      }

      if (valgtVar=='roker') { #fordeling, AndelGrVar, #AndelTid
            #PasientSkjema. Andel med Roker=1
            #Kode 0,1,tom: Nei, Ja Ukjent
            #V3: [0,1,2,9] ["Nei","Ja","Har røkt tidligere","Ikke utfylt"]
            tittel <- 'Røyker du?'
            if (figurtype == 'andeler'){
            grtxt <- c("Nei","Ja","Har røkt tidligere","Ikke utfylt")
            RegData <- RegData[which(RegData$RokerV3 %in% c(0:2,9)), ]
            RegData$VariabelGr <- factor(RegData$RokerV3, levels = c(0:2,9))
            }
            if (figurtype %in% c('andelGrVar', 'andelTid')){
                  # RegData <- RegData[which(RegData$RokerV3 %in% 0:2), ]
                  # RegData$Variabel[RegData$RokerV3==1] <- 1
                  RegData <- RegData[which(RegData$RokerV2 %in% 0:1), ]
                  RegData$Variabel <- RegData$RokerV2
                  tittel <- 'Røykere'
                  varTxt <- 'røykere'
                  sortAvtagende <- FALSE}
      }


      if (valgtVar == 'saardren') { #AndelGrVar
            #LegeSkjema. Andel med Saardren=1
            #Kode 0,1,tom: Nei, Ja Ukjent
            grtxt <- c('Nei', 'Ja', 'Ikke utfylt')
            RegData$VariabelGr <- factor(RegData$Saardren, levels = c(0:1,9))
            tittel <- 'Sårdren'
            sortAvtagende <- F
            if (figurtype %in% c('andelGrVar', 'andelTid')){
                  RegData <- RegData[which(RegData$Saardren %in% 0:1), ]
                  RegData$Variabel <- RegData$Saardren
                  tittel <- 'Andel som får sårdren (%)'
            }
      }
      if (valgtVar == 'sivilStatus') { #fordeling
         tittel <- 'Sivilstatus'
         #V2: grtxt <- c('Gift', 'Samboer', 'Enslig', 'Ukjent')
         grtxt <- c('Gift/Samboer', 'Enslig', 'Ikke utfylt')
         RegData$VariabelGr <- factor(RegData$SivilStatusV3, levels = c(1:2,9))
      }
       if (valgtVar == 'smStiPreHypp') { #fordeling
         tittel <- 'Hyppighet av smertestillende før operasjonen'
         grtxt <- c('Sjeldnere', 'Månedlig', 'Ukentlig', 'Daglig', 'Flere ganger om dagen', 'Ikke utfylt') #'Oftere',
         #RegData <- RegData[which(RegData$SmHyppPre %in% c(1:5, 9)), ]
         RegData$VariabelGr <- factor(RegData$SmHyppPre, levels = c(1:5,9))
         retn <- 'H'
      }

      if (valgtVar %in% c('smBeinEndr', 'smBeinEndr3mnd', 'smBeinEndr12mnd')) {
         tittel <- paste0('bedring av beinsmerter ',ktrtxt)
         RegData <- RegData[which((RegData$SmBePre %in% 0:10) &
                                     (RegData$SmBe3mnd %in% 0:10) & (RegData$SmBe3mnd %in% 0:10)), ]
         RegData$Variabel <- switch(as.character(ktr),
                                    '1'= (RegData$SmBePre - RegData$SmBe3mnd),
                                    '2'= (RegData$SmBePre - RegData$SmBe12mnd))
         #RegData <- RegData[which(!is.na(RegData$Variabel)),]
         KIekstrem <- c(-10,10)
      }

      if (valgtVar == 'smBePre') { #fordeling, gjsn
         if (figurtype=='andeler'){
            RegData$VariabelGr <- RegData$SmBePre
            levels(RegData$VariabelGr) <- c(0:10,99)
            grtxt <- c(as.character(0:10), 'Ikke utfylt')
            tittel <- 'Beinsmerter før operasjon'
         }
         if (figurtype %in% c('gjsnBox', 'gjsnGrVar')){
            RegData <- RegData[RegData$SmBePre %in% 0:10, ]
            RegData$Variabel <- RegData$SmBePre
            tittel <- 'beinsmerter før operasjonen'
         }
         xAkseTxt <- 'skår'
         KIekstrem <- c(0, 10)
      }
      if (valgtVar == 'smBePreLav') { #AndelGrVar, AndelTid
         #Lav beinsmerte og ingen parese. (Først og fremst prolaps)
         RegData <- RegData[which(RegData$SmBePre %in% 0:10),]
         RegData$Variabel[which((RegData$OpIndParese==0) & (RegData$SmBePre < 3.5))] <- 1
         sortAvtagende <- F
         tittel <- "Lite beinsmerter og ingen parese" #expression("Lite beinsmerter og ingen parese") #paste0('Beinsmerte ', expression(""<="3"), ' og ingen parese')
         #intToUtf8(2264)
         #KImaalRetn <- 'lav'
         KImaalGrenser <- c(0,3,100)
         varTxt <- 'med manglende indikasjon'
      }

      if (valgtVar %in% c('smRyggEndr', 'smRyggEndr3mnd', 'smRyggEndr12mnd')) {#gjsn
         tittel <- paste0('forbedring av  ryggsmerter', ktrtxt)
         RegData <- RegData[which((RegData$SmRyPre %in% 0:10) &
                                     (RegData$SmRy3mnd %in% 0:10) & (RegData$SmRy12mnd %in% 0:10)), ]
         RegData$Variabel <- switch(as.character(ktr),
                                    '1'= RegData$SmRyPre - RegData$SmRy3mnd,
                                    '2'= RegData$SmRyPre - RegData$SmRy12mnd)
         KIekstrem <- c(-10,10)
      }

      if (valgtVar == 'smRyggPre') { #fordeling, gjsn
         if (figurtype=='andeler'){
            RegData$VariabelGr <- RegData$SmRyPre
            levels(RegData$VariabelGr) <- c(0:10,99)
            grtxt <- c(as.character(0:10), 'Ikke utfylt')
            tittel <- 'Ryggsmerter før operasjon'
         }
         if (figurtype %in% c('gjsnBox', 'gjsnGrVar')){
            RegData <- RegData[RegData$SmRyPre %in% 0:10, ]
            RegData$Variabel <- RegData$SmRyPre
            tittel <- 'ryggsmerter før operasjonen'
         }
      }

      if (valgtVar == 'smStiPre') { #fordeling, andelGrVar/Tid
         tittel <- 'Bruk av smertestillende før operasjonen'
         grtxt <- c('Nei', 'Ja', 'Ikke utfylt')
         RegData$VariabelGr <- factor(RegData$SmStiPre, levels = c(0:1,9))
         if (figurtype %in% c('andelGrVar', 'andelTid')) {
            RegData <- RegData[which(RegData$SmStiPre %in% 0:1), ]
            RegData$Variabel <- RegData$SmStiPre
            varTxt <- 'som brukte smertestillende'
            sortAvtagende <- F}
      }
      if (valgtVar %in% c('symptVarighRyggHof','sympVarighUtstr')) { #fordeling, andelGrVar/Tid
            grtxt <- c('Ingen', '<3 mnd', '3-12 mnd', '1-2 år', '> 2 år', 'Ikke utfylt')
            RegData$VariabelGr <- factor(switch(valgtVar,
                             symptVarighRyggHof = RegData$SymptVarighRyggHof,
                             sympVarighUtstr = RegData$SympVarighUtstr),
                             levels = c(1:5,9)
            )
            tittel <- switch(valgtVar,
                             symptVarighRyggHof = 'Varighet av rygg-/hoftesmerter',
                             sympVarighUtstr = 'Varighet av utstrålende smerter'
            )
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
                  RegData <- RegData[which(RegData$VariabelGr %in% 1:5), ]
                  RegData$Variabel[which(RegData$VariabelGr %in% 4:5)] <- 1
                  varTxt <- 'med varighet minst 1 år'
                  tittel <- switch(valgtVar,
                                   symptVarighRyggHof ='Varighet av rygg-/hoftesmerter minst ett år',
                                   sympVarighUtstr = 'Varighet av utstrålende smerter minst ett år')
                  sortAvtagende <- F}
           # if (valgtVar == 'sympVarighUtstr') {KImaalGrenser <- c(0,20,100)}
      }


      if (valgtVar == 'tidlOpr') {
            tittel <- 'Tidligere ryggoperert?'
            retn <- 'H'
            grtxt <- c('Samme nivå', 'Annet nivå', 'Annet og sm. nivå', 'Primæroperasjon') #, 'Ukjent')
            RegData$VariabelGr <- factor(RegData$TidlOpr, levels = c(1:4))
      }
      if (valgtVar=='tidlOprAntall') {
            tittel <- 'Antall tidligere operasjoner'
            gr <- c(-1:5, 1000)
            RegData$Variabel <- -1
            RegData$Variabel[RegData$TidlOpr==4] <- 0
            indDum <- which(RegData$TidlOprAntall>-1)
            RegData$Variabel[indDum] <- RegData$TidlOprAntall[indDum]
            RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
            grtxt <- c('Ukjent', 0:4,paste0('5-', max(RegData$TidlOprAntall, na.rm=T)))
      }

      if (valgtVar == 'tidlOp3'){ #AndelTid, AndelGrVar
            RegData$Variabel[RegData$TidlOprAntall>2] <- 1
            varTxt <- 'med >2 tidl. operasjoner'
            tittel <- 'Flere enn to tidligere operasjoner'
            sortAvtagende <- F
      }

      if (valgtVar == 'trombProfyl') { #AndelGrVar, AndelTid
         #Legeskjema
         tittel <- 'Tromboseprofylakse gitt ifm. operasjon'
         #if (figurtype %in% c('andelGrVar', 'andelTid')){
            RegData <- RegData[which(RegData$PostopTrombProfyl %in% 0:1), ]
            RegData$Variabel <- RegData$PostopTrombProfyl
            varTxt <- 'fått tromboseprofylakse'
            sortAvtagende <- F #}
      }
      if (valgtVar == 'trombProfylLettKI') { #AndelGrVar, AndelTid
        #Legeskjema
        #Spesifisering: (BlodfortynnendeFast = 0 &  ASA grad< 3 & Kjønn = 1 (mann)) & (HovedInngrepV2V3=1 eller HovedInngrepV2V3=2)
        #Mål: < landsgjennomsnittet høy måloppnåelse (grønt), ≥ landsgjennomsnittet moderat/lav (gult)

        indUtv <- which((RegData$ASA<3) & (RegData$ErMann==1) & (RegData$HovedInngrepV2V3 %in% 1:2) & (RegData$BlodfortynnendeFast==0))
        #(RegData$ErMann==1) & (RegData$HovedInngrepV2V3 %in% 1:2) er også hardkodet utvalg i andelsfigurene.
        RegData <- RegData[indUtv,]
        tittel <- 'Tromboseprofylakse gitt, ASA<3'
        RegData <- RegData[which(RegData$PostopTrombProfyl %in% 0:1), ]
        RegData$Variabel <- RegData$PostopTrombProfyl
        varTxt <- 'fått tromboseprofylakse'
        sortAvtagende <- F
        KImaalGrenser <- 'landsgj'
      }


      if (valgtVar == 'tryggKir') { #fordeling, AndelGrVar, AndelTid
         #Legeskjema. Andel med UforetrygdPre ja og planlegger. Innført V3
         tittel <- 'Ble "trygg kirurgi"-prosedyre gjennomført?'
         #retn <- 'H'
         grtxt <- c('Nei', 'Ja, ved start', 'Ja, ved avslutning', 'Ja, start/avslutn.', 'Ikke utfylt')
         RegData$VariabelGr <- factor(RegData$SafeSurgery, levels = c(0:3,9))
         if (figurtype %in% c('andelGrVar', 'andelTid')){
            RegData <- RegData[which(RegData$SafeSurgery %in% 0:3), ]
            RegData$Variabel[which(RegData$SafeSurgery %in% c(1:3))] <- 1
            varTxt <- 'trygg kirurgi'
            KImaalGrenser <- c(0,95,100)
            sortAvtagende <- T}
      }

      if (valgtVar == 'uforetrygdPre') { #fordeling, AndelGrVar, AndelTid
            #PasientSkjema. Andel med UforetrygdPre ja og planlegger
            #Kode V2 1:4,tom: 'Ja', 'Nei', 'Planlegger søknad', 'Innvilget', 'Ukjent')
            #V3: [0,1,2,3,9]	["Nei","Ja","Planlegger å søke","Er allerede innvilget","Ikke utfylt"]
            tittel <- 'Har pasienten søkt uføretrygd?'
            #retn <- 'H'
            grtxt <- c('Nei', 'Ja', 'Planlegger søknad', 'Innvilget', 'Ukjent')
            RegData$VariabelGr <- factor(RegData$UforetrygdPre, levels = c(0:3,9))
            if (figurtype %in% c('andelGrVar', 'andelTid')){
                  RegData <- RegData[which(RegData$UforetrygdPre %in% 0:3), ]
                  RegData$Variabel[which(RegData$UforetrygdPre %in% c(1,2))] <- 1
                  varTxt <- 'søkt/planlagt å søke'
                  tittel <- 'Har søkt/planlegger å søke uføretrygd før op.'
                  sortAvtagende <- F}
      }


      if (valgtVar == 'utd') { #AndelGrVar, AndelTid
            #PasientSkjema. Andel med Utdanning 4 el 5
            #Kode V2 1:5,9: 'Grunnskole++, 7-10år','Real-, yrkes- el vg skole', 'Allmennfaglig vg skole',
            #Høyskole/universitet, <4 år', 'Høyskole/universitet, 4år+', 'Ukjent'
            #V3: [1,2,3,4,5,9]	["Grunnskole 7-10 år, framhaldsskole eller folkehøyskole",
            grtxt <- c('Grunnskole, 7-10år','Real-, yrkes- el vg skole', #'Real-, yrkes-/yrkesfaglig vg skole',
                       'Allmennfaglig vg skole','Høyskole/universitet, <4 år','Høyskole/universitet, 4år+',
                       'Ikke utfylt')
            RegData$VariabelGr <- factor(RegData$Utd, levels = c(1:5,9))
            retn <- 'H'
            tittel <- 'Høyeste fullførte utdanning'
            if (figurtype %in% c('andelGrVar', 'andelTid')) {
                  RegData$Variabel[which(RegData$Utd %in% 4:5)] <- 1
                  varTxt <- 'med høyere utdanning'
                  tittel <- 'Andel høyskole-/universitetsutdannede'
            }}


      if (valgtVar == 'ventetidHenvTimePol') { #Fordeling, AndelGrVar, AndelTid
         grtxt <- c("< 3 mnd.","3-6 mnd","6-12 mnd.","> 12 mnd.","Ikke utfylt")
         RegData$VariabelGr <- factor(RegData$VentetidHenvTilSpesialist, levels = c(1:4,9))
         retn <- 'H'
         tittel <- 'Ventetid fra henvisning til time på poliklinikk'
         if (figurtype %in% c('andelGrVar', 'andelTid')) {
            RegData <- RegData[which(RegData$VentetidHenvTilSpesialist %in% 1:4),]
            RegData$Variabel[which(RegData$VentetidHenvTilSpesialist == 1)] <- 1
            varTxt <- 'ventet <3mnd'
            tittel <- 'Ventetid < 3 mnd. fra henvisning til time på poliklinikk'
         }}
      if (valgtVar == 'ventetidSpesOp') { #Fordeling, AndelGrVar, AndelTid
         grtxt <- c("< 3 mnd.","3-6 mnd","6-12 mnd.","> 12 mnd.","Ikke utfylt")
         RegData$VariabelGr <- factor(RegData$VentetidSpesialistTilOpr, levels = c(1:4,9))
         retn <- 'H'
         tittel <- 'Ventetid fra operasjon bestemt til utført'
         if (figurtype %in% c('andelGrVar', 'andelTid')) {
            RegData <- RegData[which(RegData$VentetidSpesialistTilOpr %in% 1:4),]
            RegData$Variabel[which(RegData$VentetidSpesialistTilOpr == 1)] <- 1
            varTxt <- 'ventet <3mnd'
            tittel <- 'Ventetid < 3 mnd. fra operasjon bestemt til utført'
            KImaalGrenser <- c(0,50,80,100)
         }}


      if (valgtVar %in% c('verre', 'verre3mnd', 'verre12mnd')) { #AndelGrVar		#%in% c('Verre3mnd','Verre12mnd')) {
            #3/12mndSkjema. Andel med helt mye verre og noen sinne (6:7)
            #Kode 1:7,9: ''Helt bra', 'Mye bedre', 'Litt bedre', 'Uendret', 'Litt verre', 'Mye verre',
            #				'Verre enn noen gang', 'Ukjent')
            RegData$Nytte <- switch(as.character(ktr),
                                    '1'=RegData$Nytte3mnd,
                                    '2'=RegData$Nytte12mnd)
            RegData <- RegData[which(RegData$Nytte %in% 1:7), ]
            RegData$Variabel[RegData$Nytte %in% 6:7] <- 1
            tittel <- paste0('Mye verre/verre enn noen gang' , ktrtxt)
            sortAvtagende <- F
      }

      RegData <- RegData[which(!is.na(RegData$Variabel)),]
      #print(datoTil)
      RegData <- RegData[RegData$InnDato < datoTil,]

      UtData <- list(RegData=RegData, grtxt=grtxt, cexgr=cexgr, varTxt=varTxt, xAkseTxt=xAkseTxt,
                     KImaalGrenser=KImaalGrenser, KIekstrem=KIekstrem, #KImaal=KImaalRetn,
                     retn=retn, subtxt=subtxt, tittel=tittel, antDes=antDes,
                     flerevar=flerevar, variable=variable, sortAvtagende=sortAvtagende)
      #RegData inneholder nå variablene 'Variabel' og 'VariabelGr'
      return(invisible(UtData))

}
Rapporteket/rygg documentation built on March 20, 2024, 11:44 p.m.