#' Gjøre utvalg i koronaskjema
#'
#' Returnerer filtrert dataramme og utvalgstekst.
#' NB: RegData filtreres IKKE på enhet. Velg enhetsutvalg 1 el 2 for
#' å få ind$Hoved for "egen enhet"
#'
#' Argumentet \emph{enhetsUtvalg} har følgende valgmuligheter:
#' \itemize{
#' \item 0: Hele landet
#' \item 1: Egen enhet mot resten av landet (Standard)
#' \item 2: Egen enhet (kan være både RHF eller HF)
#' }
#'
#'
#' @param RegData data, covid-skjema
#' @param datoFra startdato 'yyyy-mm-dd'
#' @param datoTil sluttdato 'yyyy-mm-dd'
#' @param minald kjønn, 0-kvinne, 1-mann
#' @param erMann kjønn, 0-kvinne, 1-mann
#' @param skjemastatusInn status på inklusjonsskjema 0-ingen, 1-kladd, 2-ferdigstilt, 4-slettet, 5-returnert
#' @param skjemastatusUt status på utskrivingsskjema 0-ingen, 1-kladd, 2-ferdigstilt, 4-slettet, 5-returnert
#' @param aarsakInn covid-19 som hovedårsak til innleggelse 1-ja, alle opph, 2-ja, minst siste opphold,
#' 3-ja, minst ett opph, 4-nei, ingen opph, 9-ukj
#' @param enhetsNivaa organisatorisk nivå, dvs. filtreringsnivå for egen enhet.
#' RHF (SC og LC-brukere), HF (LU-brukere)
#' @param valgtEnhet - gis ut fra resh
#' @param enhetsUtvalg 0: hele landet,
#' 1: egen enhet mot resten av landet,
#' 2: egen enhet (NB: returnerer hele landet i ind$Rest)
#' @param dodSh død på sykehus 1-'nei', 2-'ja', 3-'ja og nei' (=ferdigstilte?)
#' @param beredPas Har pasienten vært innlagt på intensiv? 0-nei, 1-ja.
#' Per nå (12.03.23) basert på at faktisk finner et tilhørende beredskapsskjema.Vurder om
#' vi heller skal basere på variabelen Nir_beredskapsskjema_CoV2
#'
#' @return Filtrerte data
#' @export
#'
KoronaUtvalg <- function(RegData, datoFra=0, datoTil=0, erMann=9, minald=0, maxald=110,
skjemastatusInn=9, skjemastatusUt=9, dodSh=9, aarsakInn=9,
enhetsNivaa='RHF', valgtEnhet='Alle', enhetsUtvalg=2,
beredPas=9) { #reshID=0,
#if (enhetsNivaa == 'HF') {enhetsNivaa <- 'HFkort'} #Vil benytte HFkort siden HF er mangelfull
if ('BeredReg' %in% names(RegData)) { #Sjekker om data koblet på beredskapsskjema
if (beredPas %in% 0:1) {RegData <- subset(RegData, RegData$BeredReg == beredPas)}}
if (skjemastatusInn %in% 1:2){RegData <- subset(RegData, RegData$FormStatus==skjemastatusInn)}
if (skjemastatusUt %in% 1:2){RegData <- subset(RegData, RegData$FormStatusUt==skjemastatusUt)}
# if (aarsakInn %in% 1:2){RegData <- subset(RegData, RegData$ArsakInnleggelse==aarsakInn)}
if (aarsakInn %in% 1:4){ ##ArsakInnNy: 1-ja, alle opph, 2-ja, siste opph, ikke alle, 3-ja, minst ett opph, ikke siste, 4-nei, ingen opph
ind <- switch(as.character(aarsakInn),
'1' = which(RegData$ArsakInnNy==1), #alle opph
'2' = which(RegData$ArsakInnNy %in% 1:2), #siste opph
'3' = which(RegData$ArsakInnNy %in% 1:3), #minst ett opph
'4' = which(RegData$ArsakInnNy == 4) #Ingen opph
)
RegData <- RegData[ind, ]
}
if (dodSh %in% 1:3){
RegData <- if (dodSh %in% 1:2) {subset(RegData, RegData$StatusVedUtskriving==dodSh)
} else {subset(RegData, RegData$StatusVedUtskriving %in% 1:2)}} #Alle utskrevne
if (erMann %in% 0:1){
vec <- (RegData$erMann == erMann)
RegData <- subset(RegData, vec)}
if(minald>0 | maxald<110) {RegData <- subset(RegData,
RegData$Alder >= minald & RegData$Alder <= maxald)}
if(datoFra!=0) {RegData <- subset(RegData, RegData$InnDato >= as.Date(datoFra, tz= 'UTC'))}
if(datoTil!=0) {RegData <- subset(RegData, RegData$InnDato <= as.Date(datoTil, tz= 'UTC'))}
N <- dim(RegData)[1]
utvalgTxt <- c(
if(datoFra!=0 | datoTil!=0) {paste0(
'Innleggelsesdatoer: ', if (N>0) {min(as.Date(RegData$InnDato), na.rm=T)} else {datoFra},
' til ', if (N>0) {max(as.Date(RegData$InnDato), na.rm=T)} else {datoTil})} else {NULL},
if ((minald>0) | (maxald<110)) {paste0('Pasienter fra ', minald, ' til ', maxald)}, #if (N>0) {min(RegData$Alder, na.rm=T)} else {minald},' til ', if (N>0) {max(RegData$Alder, na.rm=T)} else {maxald}, ' år')},
if (skjemastatusInn %in% 0:5){paste('Skjemastatus, inklusjon:',
c('ingen', 'kladd', 'ferdigstilt', '','slettet', 'returnert')[skjemastatusInn+1])},
if (skjemastatusUt %in% 0:5){paste('Skjemastatus, utskriving:',
c('ingen', 'kladd', 'ferdigstilt', '','slettet', 'returnert')[skjemastatusInn+1])},
if (aarsakInn %in% 1:4){paste0('Covid-19, hovedårsak? ',
c('Ja, alle opphold', 'Ja, (minst) siste opphold', 'Ja, minst ett opphold', 'Nei, ingen opphold')[aarsakInn])},
if (erMann %in% 0:1) {paste0('Kjønn: ', c('Kvinner', 'Menn')[erMann+1])},
if (dodSh %in% 1:3) {paste0('Tilstand ved utskriving: ', c('Levende','Død','Alle utskrevne')[as.numeric(dodSh)])},
if ((valgtEnhet != 'Alle') &(enhetsUtvalg == 2)) {paste('Valgt enhet:', valgtEnhet)},
if ('BeredReg' %in% names(RegData)) { #Sjekker om data koblet på beredskapsskjema
if (beredPas %in% 0:1) {paste0('Intensivpasient? ', c('Nei', 'Ja')[beredPas+1])}}
)
# utvalgTxt <- ifelse(is.null(utvalgTxt), '', utvalgTxt)
if (is.null(utvalgTxt)) {utvalgTxt <- ''}
ind <- list(Hoved=0, Rest=0)
medSml <- 0
smltxt <- ''
if (valgtEnhet == 'Alle' |(enhetsUtvalg == 0) ) {
enhetsUtvalg <- 0
ind$Hoved <- 1:N
hovedgrTxt <- 'Hele landet'
} else {
ind$Hoved <- which(RegData[ ,enhetsNivaa] == valgtEnhet)
hovedgrTxt <- valgtEnhet
ind$Rest <- 1:N #Nødvendig??
if (enhetsUtvalg==1){
ind$Rest <- setdiff(1:N, ind$Hoved)
medSml <- 1
smltxt <- 'resten av landet' #switch(enhetsNivaa, RHF='andre RHF', HF = 'andre HF')
}
}
RegDataAlle <- RegData
if ((valgtEnhet != 'Alle') &(enhetsUtvalg == 2)) {RegData <- subset(RegData, RegData[,enhetsNivaa] == valgtEnhet)}
#RegData er ikke filtrert på enhet. Velg enhetsutvalg 1 el 2 for å få ind$Hoved for egen enhet
UtData <- list(RegData=RegData, RegDataAlle=RegDataAlle, utvalgTxt=utvalgTxt, ind=ind, medSml=medSml,
smltxt=smltxt, hovedgrTxt=hovedgrTxt) #fargepalett=fargepalett,
return(invisible(UtData))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.