#' Søylediagram som viser andeler av ulike variabler
#'
#' Denne funksjonen lager et søylediagram som viser andeler (fordeling) av valgt variabel
#' filtrert på de utvalg som er gjort.
#'
#' Argumentet \emph{valgtVar} har følgende valgmuligheter:
#' \itemize{
#' \item Alder: Aldersfordeling, 10-årige grupper
#' \item AntDagerInnl: Liggetid
#' \item AvdForstInnlagtHvilken: Hvilken avdeling ble pasienten først innlagt?
#' \item AvdUtskrFraHvilken: Hvilken avdeling ble pasienten utskrevet fra?
#' \item BevissthetsgradInnleggelse: Bevissthetsgrad ved innleggelsen
#' \item BildediagnostikkEkstrakranKar: Bildediagnostikk av ekstrakranielle kar
#' \item BildediagnostikkHjerne: Bildediagnostikk av hjerneslaget
#' \item BildediagnostikkHjerte: Bildediagnostikk av hjertet
#' \item BildediagnostikkIntraraniell: Bildediagnostikk av intrakranielle kar
#' \item Boligforhold3mnd: Boligforhold ved oppfølging
#' \item BoligforholdPre: Boligforhold ved innleggelse
#' \item FokaleUtf: Fokale utfall
#' \item FokaleUtfAndre: Andre fokale utfall
#' \item MRS3mnd: Rankinscale ved oppfølging
#' \item MRSPre: Rankinscale ved innleggelse
#' \item NIHSSendrTrombektomi: Endring i NIHSS fra før trombektomi til 24t etter
#' \item NIHSSendrTrombolyse: Endring i NIHSS fra før trombolyse til 24t etter
#' \item NIHSSetterTrombektomi: NIHSS 24t etter trombektomi
#' \item NIHSSetterTrombolyse: NIHSS 24t etter trombolyse
#' \item NIHSSinnkomst: NIHSS ved innkomst
#' \item NIHSSpreTrombektomi: NIHSS før trombektomi
#' \item NIHSSpreTrombolyse: NIHSS før trombolyse
#' \item RegistreringHjerterytme: Registrering av hjerterytme
#' \item Royker3mnd: Røykestatus ved oppfølging
#' \item RoykerPre: Røykestatus ved innleggelse
#' \item Sivilstatus3mnd: Sivilstatus ved oppfølging
#' \item SivilstatusPre: Sivilstatus ved innleggelse
#' \item Slagdiagnose: Slagdiagnose
#' \item TidInnleggTrombolyse: Antall timer fra innleggelse til trombolyse
#' \item TidSymptInnlegg: Tid fra symptomdebut til innleggelse', '(kun de som ikke våknet med symptom)
#' \item TidSymptTrombolyse: Tid fra symptomdebut til trombolyse,', '(kun de som ikke våknet med symptom)
#' \item Tilfredshet: Er du like fornøyd med tilværelsen som før hjerneslaget?
#' \item Transportmetode: Transport til sykehus etter varsling av AMK
#' \item UtskrTil. Hva pasientene ble utskrevet til
#' }
#'
#' @param RegData En dataramme med alle nødvendige variabler fra registeret
#' @param valgtVar Hvilken variabel som skal visualiseres. Se \strong{Details} for oversikt.
#' @param datoFra Tidligste dato i utvalget (vises alltid i figuren).
#' @param datoTil Seneste dato i utvalget (vises alltid i figuren).
#' @param erMann Kjønn, standard: alt annet enn 0/1 gir begge kjønn
#' 0: Kvinner
#' 1: Menn
#' @param minald Alder, fra og med (Standardverdi: 0)
#' @param maxald Alder, til og med (Standardverdi: 130)
#' @param outfile Navn på fil figuren skrives til. Standard: '' (Figur skrives
#' til systemets standard utdataenhet (som regel skjerm))
#' @param reshID Parameter følger fra innlogging helseregister.no og angir
#' hvilken enhet i spesialisthelsetjenesten brukeren tilhører
#' @param enhetsUtvalg Gjør gruppeutvalg med eller uten sammenlikning for
#' 0: Hele landet
#' 1: Egen enhet mot resten av landet (Standard)
#' 2: Egen enhet
#' 6: Egen enhet mot egen region
#' 7: Egen region
#' 8: Egen region mot resten
#' @param preprosess Preprosesser data
#' FALSE: Nei
#' TRUE: Ja (Standard)
#' @param hentData Gjør spørring mot database
#' 0: Nei, RegData gis som input til funksjonen (Standard)
#' 1: Ja
#' @param diagnose
#' 1: Infarkt(I61),
#' 2: Blødning(I63),
#' 3: definert(I64),
#' standard: alle (ikke spesifisert)
#' @param innl4t innlagt innen 4 timer.
#' 0: nei
#' 1: ja, standard:'' (alt annet)
#' @param NIHSSinn NIHSS ved innkomst. Registreringer hvor NIHSS ikke er utførtblir tatt bort.
#' Kategorier: 0-5,6-10,11-15,...
#'
#' @return Søylediagram (fordeling) av valgt variabel. De enkelte verdiene kan også sendes med.
#'
#' @export
#'
SlagFigAndeler <- function(RegData, valgtVar, datoFra='2012-04-01', datoTil='2050-12-31',
minald=0, maxald=130, erMann='', diagnose='', innl4t='', NIHSSinn='', outfile='',
preprosess=1, hentData=0, reshID, enhetsUtvalg=1)
{
if (hentData == 1) {
RegData <- SlagRegDataSQL(datoFra, datoTil)
}
# Hvis RegData ikke har blitt preprosessert. (I samledokument gjøre dette i samledokumentet)
if (preprosess==1){
RegData <- SlagPreprosess(RegData=RegData)
}
RegData$Variabel <- 0
#Når bare skal sammenlikne med sykehusgruppe eller region, eller ikke sammenlikne,
#trengs ikke data for hele landet:
reshID <- as.numeric(reshID)
indEgen1 <- match(reshID, RegData$ReshId)
if (enhetsUtvalg %in% c(2,6,7)) {
RegData <- switch(as.character(enhetsUtvalg),
'2' = RegData[which(RegData$ReshId == reshID),], #kun egen enhet
'6' = RegData[which(RegData$Region == as.character(RegData$Region[indEgen1])),], #sml region
'7' = RegData[which(RegData$Region == as.character(RegData$Region[indEgen1])),]) #kun egen region
}
#if (valgtVar == 'TidSymptInnlegg') {
#RegData$TidSymptInnlegg <- as.numeric(difftime(RegData$Innleggelsestidspunkt, RegData$Symptomdebut,
# units='hours'))
#RegData <- RegData[which(RegData$VaaknetMedSymptom==2), ]
# }
#if (valgtVar == 'TidSymptTrombolyse') {
# RegData <- RegData[intersect(which(RegData$Trombolyse %in% c(1,3)),
# which(RegData$VaaknetMedSymptom==2)), ]
#RegData$TidSymptTrombolyse <- as.numeric(difftime(RegData$TrombolyseStarttid, RegData$Symptomdebut,
# units='hours'))
# }
#if (valgtVar == 'TidInnleggTrombolyse') {
# RegData <- RegData[which(RegData$Trombolyse %in% c(1,3)), ]
#RegData$TidInnleggTrombolyse <- as.numeric(difftime(RegData$TrombolyseStarttid,
# RegData$Innleggelsestidspunkt, units='hours')) #units='mins'
# }
if (valgtVar %in% c('Alder', 'AntDagerInnl', 'TidSymptInnlegg','TidSymptTrombolyse','TidInnleggTrombolyse',
'NIHSSinnkomst','NIHSSpreTrombolyse','NIHSSetterTrombolyse',
'NIHSSpreTrombektomi', 'NIHSSetterTrombektomi',
'BevissthetsgradInnleggelse', 'AvdForstInnlagtHvilken','AvdUtskrFraHvilken', 'UtskrTil',
'Slagdiagnose', 'BildediagnostikkHjerne','BildediagnostikkHjerte', 'BildediagnostikkIntraraniell',
'BildediagnostikkEkstrakranKar', 'RegistreringHjerterytme', 'MRSPre', 'MRS3mnd',
'Transportmetode', 'BoligforholdPre', 'Boligforhold3mnd',
'SivilstatusPre', 'Sivilstatus3mnd','RoykerPre', 'Royker3mnd', 'Tilfredshet' )) {
RegData$Variabel <- RegData[ ,valgtVar]
}
#----------- Figurparametre ------------------------------
cexgr <- 1 #Kan endres for enkeltvariable
retn <- 'V' #Vertikal som standard. 'H' angis evt. for enkeltvariable
grtxt <- '' #Spesifiseres for hver enkelt variabel
grtxt2 <- '' #Spesifiseres evt. for hver enkelt variabel
# grtxt3 <- ''
subtxt <- '' #Benevning
flerevar <- 0
#--------------- Variabeldefinisjon ------------------------------
if (valgtVar=='Alder') {
tittel <- 'Aldersfordeling'
gr <- c(0, seq(35, 95, 10), 120) #c(0,16,31,46,61,76,200)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c('<35','[35,44]','[45,54]','[55,64]','[65,74]','[75,84]','[85,94]','95+')
#grtxt <- c('<35', levels(RegData$VariabelGr)[2:(length(gr)-2)], '90+')
subtxt <- 'Aldersgrupper'
}
if (valgtVar=='AntDagerInnl') {
RegData$Variabel <- as.numeric(RegData$Variabel)
tittel <- 'Liggetid'
gr <- c(0:15,1000) #c(0:8,11,15,1000) #c(18, seq(30, 90, 10), 120)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c(gr[1:(length(gr)-2)],'15+') #c(levels(RegData$VariabelGr)[1:(length(gr)-2)], '20+') #
subtxt <- 'Antall dager'
}
if (valgtVar == 'TidSymptInnlegg') {
RegData$Variabel <- as.numeric(RegData$Variabel)
#De som ikke våknet med symptom
tittel <- c('Tid fra symptomdebut til innleggelse', '(kun de som ikke våknet med symptom)')
gr <- c(0,1.5,3,4.5,6,12,24,168,10000)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c(levels(RegData$VariabelGr)[1:(length(gr)-3)], '1-7døgn', '>7døgn')
subtxt <- 'Antall timer'
}
if (valgtVar == 'TidSymptTrombolyse') {
RegData$Variabel <- as.numeric(RegData$Variabel)
#De som ikke våknet med symptom
tittel <- c('Tid fra symptomdebut til trombolyse,', '(kun de som ikke våknet med symptom)')
gr <- c(0,1,2,3,4,10000)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c(levels(RegData$VariabelGr)[1:(length(gr)-2)], '4+')
subtxt <- 'Antall timer'
}
if (valgtVar == 'TidInnleggTrombolyse') {
RegData$Variabel <- as.numeric(RegData$Variabel)
tittel <- 'Antall timer fra innleggelse til trombolyse'
#gr <- c(0,0.5,1,1.5,2,2.5,10000) #*60
gr <- c(0,30,60,90,120,150,10000000) #*60
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c(levels(RegData$VariabelGr)[1:(length(gr)-2)], '2.5+')
grtxt <- c('[0-0.5)','[0.5-1)', '[1-1.5)', '[1.5-2)', '[2-2.5)' , '2.5+')
subtxt <- 'Antall timer'
}
if (valgtVar %in% c('NIHSSinnkomst', 'NIHSSpreTrombolyse','NIHSSetterTrombolyse',
'NIHSSpreTrombektomi', 'NIHSSetterTrombektomi')) {
#Utvalg på de det faktisk er gjort NIHSS-score på.
#Utvalg på de som har fått trombolyse/trombektomi:
#Her vet vi ikke om det er utført NIHSS el om 0 er default
RegData <- switch(valgtVar,
NIHSSinnkomst = RegData[which(RegData$NIHSSikkeUtfort==0), ],
NIHSSpreTrombolyse = RegData[which(RegData$Trombolyse %in% c(1,3)), ],
NIHSSetterTrombolyse = RegData[which(RegData$Trombolyse %in% c(1,3)), ],
NIHSSpreTrombektomi = RegData[which(RegData$Trombektomi %in% c(1,3)), ],
NIHSSetterTrombektomi = RegData[which(RegData$Trombektomi %in% c(1,3)), ],
)
tittel <- switch(valgtVar,
NIHSSinnkomst = 'NIHSS ved innkomst',
NIHSSpreTrombolyse = c('NIHSS før trombolyse',
'(fordeling for pasienter som har fått trombolyse)'),
NIHSSetterTrombolyse = c('NIHSS 24t etter trombolyse',
'(fordeling for pasienter som har fått trombolyse)'),
NIHSSpreTrombektomi = c('NIHSS før trombektomi',
'(fordeling for pasienter som har fått trombektomi)'),
NIHSSetterTrombektomi = c('NIHSS 24t etter trombektomi',
'(fordeling for pasienter som har fått trombektomi)'))
gr <- c(0,6,11,16,21,100)
RegData$Variabel <- as.numeric(RegData$Variabel)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, include.lowest=TRUE, right=FALSE)
grtxt <- c('[0-5]','[6-10]','[11-15]','[16-20]','21+')
cexgr <- 0.8
subtxt <- 'Totalscore'
}
if (valgtVar == 'NIHSSendrTrombolyse') {
RegData <- RegData[which(RegData$Trombolyse %in% c(1,3)), ]
RegData$NIHSSendrTrombolyse <- RegData$NIHSSetterTrombolyse - RegData$NIHSSpreTrombolyse
}
if (valgtVar == 'NIHSSendrTrombektomi') {
RegData <- RegData[which(RegData$Trombektomi %in% c(1,3)), ]
RegData$NIHSSendrTrombektomi <- RegData$NIHSSetterTrombektomi - RegData$NIHSSpreTrombektomi
}
if (valgtVar %in% c('NIHSSendrTrombolyse','NIHSSendrTrombektomi')) {
RegData <- switch(valgtVar,
NIHSSendrTrombolyse = RegData[which(RegData$Trombolyse %in% c(1,3)), ],
NIHSSendrTrombektomi = RegData[which(RegData$Trombektomi %in% c(1,3)), ])
RegData$Variabel <- switch(valgtVar,
NIHSSendrTrombolyse = as.numeric(RegData$NIHSSetterTrombolyse) - as.numeric(RegData$NIHSSpreTrombolyse),
NIHSSendrTrombektomi = as.numeric(RegData$NIHSSetterTrombektomi) - as.numeric(RegData$NIHSSpreTrombektomi))
tittel <- switch(valgtVar,
NIHSSendrTrombolyse = c('Endring i NIHSS fra før trombolyse til 24t etter',
'(fordeling for pasienter som har fått trombolyse)'),
NIHSSendrTrombektomi = c('Endring i NIHSS fra før trombektomi til 24t etter',
'(fordeling for pasienter som har fått trombektomi)'))
gr <- c(-100,-16,-11,-6,-1,0,5,10,15,100)
RegData$VariabelGr <- cut(RegData$Variabel, breaks=gr, right=TRUE) #include.lowest=FALSE,
grtxt <- c('-16]', '[-15,-11]', '[-10,-6]', '[-5,-1]', 0, '[1,5]', '[6,10]',
'[11,15]', '[16+' )
subtxt <- 'Endring i totalscore fra før til etter'
}
if (valgtVar %in% c('MRSPre', 'MRS3mnd')) {
if (valgtVar == 'MRS3mnd') {
RegData <- RegData[setdiff(1:dim(RegData)[1],
which(RegData$OppfolgUtf ==2 & RegData$MRS3mnd == 0 )), ]
}
tittel <- switch(valgtVar,
MRSPre = 'Rankinscale før innleggelse',
MRS3mnd = 'Rankinscale ved oppfølging')
#grtxt <- c('Ingen symptomer', 'Ikke sign. hemmet', 'Litt hemmet', 'Moderat hemmet',
# 'Moderat/alvorlig hemmet', 'Alvorlig hemmet') #, 'Død')
grtxt <- 0:5
subtxt <- ''
RegData <- RegData[RegData$Variabel %in% c(0:5), ]
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(0:5), labels = grtxt)
# retn <- 'H' #Hvis ønsker prosentandeler
}
if (valgtVar %in% c('BoligforholdPre', 'Boligforhold3mnd')) {
tittel <- switch(valgtVar,
BoligforholdPre = 'Boligforhold ved innleggelse',
Boligforhold3mnd = 'Boligforhold ved oppfølging')
grtxt <- c('Egen bolig u/hjelp', 'Egen bolig, m/hjelp', 'Omsorgsbolig', 'Sykehjem', 'Ukjent')
subtxt <- ''
RegData <- RegData[RegData$Variabel %in% c(1:4,9), ]
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(1:4,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar %in% c('RoykerPre', 'Royker3mnd')) {
tittel <- switch(valgtVar,
RoykerPre = 'Røykestatus ved innleggelse',
Royker3mnd = 'Røykestatus ved oppfølging')
grtxt <- c('Aldri', 'Røyker', 'Eks-røyker', 'Ukjent')
subtxt <- ''
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(0:2,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar %in% c('SivilstatusPre', 'Sivilstatus3mnd')) {
tittel <- switch(valgtVar,
SivilstatusPre = 'Sivilstatus ved innleggelse',
Sivilstatus3mnd = 'Sivilstatus ved oppfølging')
grtxt <- c('Gift/samboende', 'Enke/-mann', 'Enslig', 'Ukjent')
subtxt <- ''
RegData <- RegData[which(RegData$Variabel %in% c(1:3,9)), ]
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(1:3,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'Slagdiagnose') {
tittel <- 'Slagdiagnose'
grtxt <- c('Hjerneblødning', 'Hjerneinfarkt', 'Uspesifisert')
RegData <- RegData[which(RegData$Variabel %in% 1:3), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=1:3, labels = grtxt)
}
if (valgtVar == 'BildediagnostikkHjerne') {
tittel <- 'Bildediagnostikk av hjerneslaget'
grtxt <- c('Ingen', 'CT', 'MRI', 'CT+MRI', 'Annen', 'Ukjent')
RegData <- RegData[which(RegData$Variabel %in% c(1:5,9)), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=c(1:5,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'BildediagnostikkHjerte') {
tittel <- 'Bildediagnostikk av hjertet'
grtxt <- c('Ingen', 'Transthorakal ultralyd', 'Transøsofageal ultralyd', 'MRI',
'Kombinasjon av flere', 'Annen', 'Ukjent')
RegData <- RegData[which(RegData$Variabel %in% c(1:6,9)), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=c(1:6,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'BildediagnostikkIntraraniell') {
tittel <- 'Bildediagnostikk av intrakranielle kar'
grtxt <- c('Ingen', 'Ultralyd', 'CT-angio', 'MR-angio', 'Kombinasjon av flere', 'Ukjent')
RegData <- RegData[which(RegData$Variabel %in% c(1:5,9)), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=c(1:5,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'BildediagnostikkEkstrakranKar') {
tittel <- 'Bildediagnostikk av ekstrakranielle kar'
grtxt <- c('Ingen', 'Ultralyd', 'CT-angio', 'MR-angio', 'Kombinasjon av flere', 'Ukjent')
RegData <- RegData[which(RegData$Variabel %in% c(1:5,9)), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=c(1:5,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'RegistreringHjerterytme') {
tittel <- 'Registrering av hjerterytme'
grtxt <- c('Ingen', 'EKG', 'Telemetri/kont.EKG-monit.', 'Holtermonitorering', 'Kombinasjon av flere', 'Ukjent')
RegData <- RegData[which(RegData$Variabel %in% c(1:5,9)), ]
RegData$VariabelGr <- factor(RegData$Variabel, levels=c(1:5,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'BevissthetsgradInnleggelse') {
tittel <- 'Bevissthetsgrad ved innleggelsen'
grtxt <- c('Våken', 'Reagerer v/lett stim.', 'Reagerer v/kraftig stim.', 'Reagerer ikke', 'Ukjent')
subtxt <- ''
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(0:3,9), labels = grtxt)
retn <- 'H'
}
if (valgtVar == 'AvdForstInnlagtHvilken') {
tittel <- 'Hvilken avdeling ble pasienten først innlagt?'
grtxt <- c('Slagenhet', 'Medisinsk', 'Nevrologisk', 'Nevrokirurgisk', 'Intensiv', 'Observasjon', 'Annen')
subtxt <- ''
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(-1,1:6), labels = grtxt)
#Antall 0'er stemmer overens med antall som har svart slagenehet i spm. Avdeling først innlagt?
retn <- 'H'
}
if (valgtVar == 'AvdUtskrFraHvilken') {
tittel <- 'Hvilken avdeling ble pasienten utskrevet fra?'
grtxt <- c('Slagenhet', 'Medisinsk', 'Nevrologisk', 'Nevrokirurgisk', 'Intensiv', 'Observasjon', 'Annen')
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(-1, 1:6), labels = grtxt)
#Antall 0'er stemmer overens med antall som har svart slagenehet i spm. Avdeling utskrevet fra? (AvdUtskrFra)
retn <- 'H'
}
if (valgtVar == 'UtskrTil') {
tittel <- 'Hva pasientene ble utskrevet til'
grtxt <- c('Hjem u/hjelp', 'Hjem m/hjelp', 'Omsorgsbolig', 'Sykehjem', 'Avd for behandling',
'Avd, vente sykehj/rehab', 'Rehabilitering', 'Opptreningssenter', 'Ukjent', 'Død under opphold',
'Annen', 'Annet sykehus')
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(1:12), labels = grtxt)
#Antall 0'er stemmer overens med antall som har svart slagenehet i spm. Avdeling utskrevet fra? (AvdUtskrFra)
retn <- 'H'
}
if (valgtVar == 'Tilfredshet') {
RegData <- RegData[which(RegData$Tilfredshet %in% c(1,2,9)), ]
tittel <- 'Er du like fornøyd med tilværelsen som før hjerneslaget?'
grtxt <- c('Ja', 'Nei', 'Vet ikke')
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(1,2,9), labels = grtxt)
}
if (valgtVar == 'Transportmetode') {
RegData <- RegData[which(RegData$Transportmetode %in% 1:4), ]
tittel <- 'Transport til sykehus etter varsling av AMK'
grtxt <- c('Ambulanse', 'Luftambulanse', 'Kombinasjon', 'Annet')
RegData$VariabelGr <- factor(as.numeric(RegData$Variabel), levels=c(1:4), labels = grtxt)
#retn <- 'H'
}
#FIGURER SATT SAMMEN AV FLERE VARIABLE FRA SAMME TOTALUTVALG
if (valgtVar == 'FokaleUtf') {
flerevar <- 1
retn <- 'H'
tittel <- 'Fokale utfall'
subtxt <- 'Andel med svar "ja" av alle totalt'
#Verdier 1,2,9. 0 kan forekomme.
variableOrig <- c('Facialisparese', 'Beinparese', 'Armparese', 'Spraakproblem',
'AndreFokaleSympt')
variable <- c('Facialisparese01', 'Beinparese01', 'Armparese01', 'Spraakproblem01',
'AndreFokaleSympt01')
RegData[ ,variable] <- 0
for (teller in 1:length(variable)) { #Fysj! STYGG KVIKKFIX...
RegData[which(RegData[ ,variableOrig[teller]]==1), variable[teller]] <- 1
}
grtxt <- c('Facialisparese', 'Beinparese', 'Armparese', 'Språkproblem', 'Andre')
}
if (valgtVar %in% c('Boligforhold3mnd','MRS3mnd', 'Royker3mnd', 'Sivilstatus3mnd')) {
datoTil <- min(datoTil, as.character(Sys.Date()-90))}
#Gjør utvalg
SlagUtvalg <- SlagUtvalg(RegData=RegData, datoFra=datoFra, datoTil=datoTil, minald=minald, maxald=maxald,
erMann=erMann, diagnose=diagnose, innl4t=innl4t, NIHSSinn=NIHSSinn)
RegData <- SlagUtvalg$RegData
utvalgTxt <- SlagUtvalg$utvalgTxt
indEgen1 <- match(reshID, RegData$ReshId)
if (enhetsUtvalg %in% c(1,2,6)) { #Involverer egen enhet
shtxt <- as.character(RegData$Avdeling[indEgen1]) } else {
shtxt <- switch(as.character(enhetsUtvalg),
'0' = 'Hele landet',
'7' = as.character(RegData$Region[indEgen1]),
'8' = as.character(RegData$Region[indEgen1]))
}
if (enhetsUtvalg %in% c(0,2,7)) { #Ikke sammenlikning
medSml <- 0
indHoved <- 1:dim(RegData)[1] #Tidligere redusert datasettet for 2,7. (+ 6)
indRest <- NULL
} else { #Skal gjøre sammenlikning
medSml <- 1
if (enhetsUtvalg %in% c(1,6)) { #Involverer egen enhet
indHoved <-which(as.numeric(RegData$ReshId)==reshID) } else {
indHoved <- switch(as.character(enhetsUtvalg),
'8' = which(RegData$Region == RegData$Region[indEgen1]))} #region
smltxt <- switch(as.character(enhetsUtvalg),
'1' = 'landet forøvrig',
'6' = paste(RegData$Region[indEgen1], ' forøvrig', sep=''), #RegData inneh. kun egen region
'8' = 'andre regioner')
indRest <- switch(as.character(enhetsUtvalg),
'1' = which(as.numeric(RegData$ReshId) != reshID),
'6' = which(as.numeric(RegData$ReshId)!=reshID), #RegData inneh. kun egen region
'8' = which(RegData$Region != RegData$Region[indEgen1]))
}
#--------------- Gjøre beregninger ------------------------------
#Gjør beregninger selv om det evt ikke skal vise figur ut. Trenger utdata.
Andeler <- list(Hoved = 0, Rest =0)
NRest <- 0
AntRest <- 0
AntHoved <- switch(as.character(flerevar),
'0' = table(RegData$VariabelGr[indHoved]),
'1' = colSums(sapply(RegData[indHoved ,variable], as.numeric), na.rm=T))
NHoved <- switch(as.character(flerevar),
'0' = sum(AntHoved), #length(indHoved)- Kan inneholde NA
'1' = length(indHoved))
Andeler$Hoved <- 100*AntHoved/NHoved
if (medSml==1) {
AntRest <- switch(as.character(flerevar),
'0' = table(RegData$VariabelGr[indRest]),
'1' = colSums(sapply(RegData[indRest ,variable], as.numeric), na.rm=T))
NRest <- switch(as.character(flerevar),
'0' = sum(AntRest), #length(indRest)- Kan inneholde NA
'1' = length(indRest))
Andeler$Rest <- 100*AntRest/NRest
}
#FIGURER SATT SAMMEN AV FLERE VARIABLE, ULIKT TOTALUTVALG
if (valgtVar %in% c('FokaleUtfAndre')){
retn <- 'H'
utvalg <- c('Hoved', 'Rest') #Hoved vil angi enhet, evt. hele landet hvis ikke gjøre sml, 'Rest' utgjør sammenligningsgruppa
RegDataLand <- RegData
NHoved <-length(indHoved)
NRest <- length(indRest)
for (teller in 1:(medSml+1)) {
# Variablene kjøres for angitt indeks, dvs. to ganger hvis vi skal ha sammenligning med Resten.
RegData <- RegDataLand[switch(utvalg[teller], Hoved = indHoved, Rest=indRest), ]
if (valgtVar == 'FokaleUtfAndre'){
RegData <- RegData[which(RegData$AndreFokaleSympt==1), ]
tittel <- 'Andre fokale utfall'
subtxt <- 'Andel med svar "ja" av "andre fokale utfall"'
variable <- c('Dysartri', 'Ataksi', 'Sensibilitetsutfall', 'Neglekt', 'Dobbeltsyn', 'Synsfeltutfall', 'Vertigo')
grtxt <- c('Dysartri (fra 2016)', 'Ataksi', 'Sens.utfall', 'Neglekt', 'Dobbeltsyn', 'Synsfeltutfall', 'Vertigo')
AntVar <- colSums(RegData[ ,variable], na.rm=T)
N <- dim(RegData)[1]
Ndys <- length(which(RegData$InnDato >= as.Date('2016-01-01'))) #Ei reg. før den tid
NVar <- c(Ndys, rep(N, length(variable)-1))
}
#Generell beregning for alle figurer med sammensatte variable:
if (teller == 1) {
AntHoved <- AntVar
NHoved <- N #sum(NVar, na.rm=T) #feil: max(NVar, na.rm=T)
Andeler$Hoved <- 100*AntVar/NVar
}
if (teller == 2) {
AntRest <- AntVar
NRest <- N #sum(NVar,na.rm=T) #length(indRest)- Kan inneholde NA
Andeler$Rest <- 100*AntVar/NVar
}
} #end medSml (med sammenligning)
} #end begrensning til valgtVar som inneholder flere variable
#-----------Figur---------------------------------------
#Hvis for få observasjoner..
if (NHoved < 10 | (medSml ==1 & NRest<10)) {
FigTypUt <- figtype(outfile)
farger <- FigTypUt$farger
plot.new()
title(main=paste('variabel: ', valgtVar, sep='')) #, line=-6)
legend('topleft',utvalgTxt, bty='n', cex=0.9, text.col=farger[1])
text(0.5, 0.65, 'Færre enn 10 registreringer i hoved-', cex=1.2)
text(0.55, 0.6, 'eller sammenlikningsgruppe', cex=1.2)
if ( outfile != '') {dev.off()}
} else {
#-----------Figur---------------------------------------
#Innparametre: subtxt, grtxt, grtxt2, tittel, Andeler, utvalgTxt, retn, cexgr
#Plottspesifikke parametre:
FigTypUt <- figtype(outfile)
#Tilpasse marger for å kunne skrive utvalgsteksten
NutvTxt <- length(utvalgTxt)
grtxtpst <- paste(rev(grtxt), ' (', rev(sprintf('%.1f',Andeler$Hoved)), '%)', sep='')
vmarg <- switch(retn, V=0, H=max(0, strwidth(grtxtpst, units='figure', cex=cexgr)*0.7))
#vmarg <- max(0, strwidth(grtxtpst, units='figure', cex=cexgr)*0.7)
par('fig'=c(vmarg, 1, 0, 1-0.02*(NutvTxt-1))) #Har alltid datoutvalg med
if (grtxt2 == '') {grtxt2 <- paste(sprintf('%.1f',Andeler$Hoved), '%', sep='')}
# if (grtxt3 == '') {grtxt3 <- paste(sprintf('%.0f',Andeler$Hoved*NHoved/100), '', sep='')}
farger <- FigTypUt$farger
fargeSh <- farger[1]
fargeRest <- farger[3]
antGr <- length(grtxt)
lwdRest <- 3 #tykkelse på linja som repr. landet
cexleg <- 1 #Størrelse på legendtekst
#Horisontale søyler
if (retn == 'H') {
xmax <- min(max(c(Andeler$Hoved, Andeler$Rest),na.rm=T)*1.25, 100)
pos <- barplot(rev(as.numeric(Andeler$Hoved)), horiz=TRUE, beside=TRUE, las=1, xlab="Andel pasienter (%)", #main=tittel,
col=fargeSh, border='white', font.main=1, xlim=c(0, xmax), ylim=c(0.05,1.4)*antGr) #
mtext(at=pos+0.05, text=grtxtpst, side=2, las=1, cex=cexgr, adj=1, line=0.25)
if (medSml == 1) {
points(as.numeric(rev(Andeler$Rest)), pos, col=fargeRest, cex=2, pch=18) #c("p","b","o"),
legend('top', c(paste(shtxt, ' (N=', NHoved,')', sep=''), paste(smltxt, ' (N=', NRest,')', sep='')),
border=c(fargeSh,NA), col=c(fargeSh,fargeRest), bty='n', pch=c(15,18), pt.cex=2,
lwd=lwdRest, lty=NA, ncol=1, cex=cexleg)
} else {
legend('top', paste0(shtxt, ' (N=', NHoved,')'),
border=NA, fill=fargeSh, bty='n', ncol=1, cex=cexleg)
}
}
if (retn == 'V' ) {
#Vertikale søyler eller linje
ymax <- min(max(c(Andeler$Hoved, Andeler$Rest),na.rm=T)*1.25, 100)
pos <- barplot(as.numeric(Andeler$Hoved), beside=TRUE, las=1, ylab="Andel pasienter (%)",
sub=subtxt, col=fargeSh, border='white', ylim=c(0, ymax))
mtext(at=pos, grtxt, side=1, las=1, cex=cexgr, adj=0.5, line=0.5)
mtext(at=pos, grtxt2, side=1, las=1, cex=cexgr, adj=0.5, line=1.5)
# mtext(at=pos, grtxt3, side=1, las=1, cex=cexgr, adj=0.5, line=2.5)
if (medSml == 1) {
points(pos, as.numeric(Andeler$Rest), col=fargeRest, cex=2, pch=18) #c("p","b","o"),
legend('top', c(paste0(shtxt, ' (N=', NHoved,')'), paste0(smltxt, ' (N=', NRest,')')),
border=c(fargeSh,NA), col=c(fargeSh,fargeRest), bty='n', pch=c(15,18), pt.cex=2, lty=c(NA,NA),
lwd=lwdRest, ncol=2, cex=cexleg)
} else {
legend('top', paste0(shtxt, ' (N=', NHoved,')'),
border=NA, fill=fargeSh, bty='n', ncol=1, cex=cexleg)
}
}
title(tittel, line=1, font.main=1)
#Tekst som angir hvilket utvalg som er gjort
avst <- 0.8
utvpos <- 3 #Startlinje for teksten
mtext(utvalgTxt, side=3, las=1, cex=0.9, adj=0, col=farger[1], line=c(3+0.8*((NutvTxt-1):0)))
par('fig'=c(0, 1, 0, 1))
if ( outfile != '') {dev.off()}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.