#Kjørefil for Rapporteket-Pandemi
rm(list=(ls()))
library(korona)
t1 <- Sys.time()
RegDataRaa <- KoronaDataSQL(datoFra = '2020-01-01')
t2 <- Sys.time()
RegData <- KoronaPreprosesser(RegData = RegDataRaa[1:1000,], aggPers = 1, kobleBered = 1, tellFlereForlop = 1)
Pandemi <- KoronaPreprosesser(KoronaDataSQL(koble=1))
RegData <- Pandemi
DataBeredRaa <- NIRberedskDataSQL()
DataBered <- NIRPreprosessBeredsk(DataBeredRaa)
load('D:/mydata/AllePandemiData.RData')
t1 <- Sys.time()
RegData <- KoronaPreprosesser(RegData = KoroDataRaa[1:1000, ], aggPers = 1, kobleBered = 1, tellFlereForlop = 1)
t2 <- Sys.time()
t2-t1
dato <- Sys.Date()
lubridate::floor_date(dato - months(3), unit = 'month') #"2023-07-01"
library('lubridate')
floor_date(dato %m-% months(3), unit = 'month') #"2023-07-01"
#Sjekk av inneliggende
UtData <- KoronaUtvalg(RegData=RegData, enhetsNivaa = 'RHF', aarsakInn=2)
RegData <- UtData$RegData
Inneliggere <- RegData[is.na(RegData$UtDato),]
Inneliggere <- Inneliggere[Inneliggere$RHFut=='Sør-Øst',]
Inneliggere <- Inneliggere[Inneliggere$HFut=="Østfold", ]
sort(Inneliggere$InnDato)
#Filer til overvåkning, filtrert på hovedårsak Covid
test <- korona::lagDatafilerTilFHI(personIDvar='PatientInRegistryGuid',
bered=1, pand=1, influ=0, raa=1, aggP=0)
table(test$PandemiDataRaaFHI$ArsakInnleggelse)
Filer <- korona::lagDatafilerTilFHI(personIDvar='PatientInRegistryGuid',
bered=1, pand=1, influ=0,
raa=1, aggP=0)
names(Filer)
#Teste mulig feil i liggetid
data <- KoronaDataSQL(datoTil = '2023-03-01')
dataN <- data[data$HF == "Nordlandssykehuset HF",]
dataNpre <- KoronaPreprosesser(RegData = dataN)
dataNpre2023 <- dataNpre[which(dataNpre$PersonId %in% dataOpphN$PersonId), #dataNpre$InnDato > as.Date('2023-01-16')),
c('HF',"ShNavn","PersonId",'InnDato', "UtDato", "Liggetid", "LiggetidTot", "AntInnSkjema")]
dataOpph <- KoronaDataSQL(datoFra = '2023-01-25', datoTil = '2023-02-07')
dataOpphN <- dataOpph[dataOpph$HF == "Nordlandssykehuset HF", c("HelseenhetKortNavn", "FormDate", "FormDateUt", "SkjemaGUID", "PersonId")]
persN <- dataOpphN$PersonId
data[data$PersonId %in% dataOpphN$PersonId, c("HelseenhetKortNavn", "FormDate", "FormDateUt", "SkjemaGUID", "PersonId")]
remotes::install_github('tidyverse/dplyr', ref = 'd2f79bb') #Versjon 1.1.1
JaNeiUkjVar <- function(x) {ifelse(1 %in% x, 1, ifelse(2 %in% x, 2, 3))}
#Variabler med 1-nei, 2:5 ja, 999 ukjent. Velger mest alvorlige (høyeste) nivå. Ikke utfylt får også ukjent
SviktVar <- function(x) {
test <- x %in% 1:5
ifelse(sum(test)>0, max(x[test]), 999)} #1-nei, 2:5 ja, 999 ukjent.
Aarsak <- function(x, N, FormDate) {
dplyr::case_when(
sum(x == 1) == N ~ 1, #alle
dplyr::last(x, order_by = FormDate) == 1 ~ 2, #siste, men ikke alle
1 %in% x ~ 3, #Minst ett, ikke siste alle
sum(x == 2) == N ~ 4, #Ingen
(sum (x == 3) == N) | (sum(x == -1)) ~ 9 #Ukjent
)}
#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
RegDataRed <- RegData %>% dplyr::group_by(PasientID) %>%
dplyr::summarise(
AntInnSkjema = dplyr::n(),
ArsakInnNy = Aarsak(ArsakInnleggelse, N=AntInnSkjema, FormDate=FormDate)
#1-ja, alle opph, 2-ja, siste opphold, men ikke alle, 3-ja, minst ett opph, men ikke siste, 4-nei, ingen opph, 9-ukj
)
#Test av hentDatafiler til FHI
#Kjørende versjon:
dataNaa <- lagDatafilerTilFHI()
dataNy <- lagDatafilerTilFHI()
PandPpNaa <- dataNaa$PandemiDataPpFHI
PandPpNy <- dataNy$PandemiDataPpFHI
BeredPpNaa <- dataNaa$BeredskapDataPpFHI
BeredPpNy <- dataNy$BeredskapDataPpFHI
IntNaa <- dataNaa$InfluensaDataRaaFHI
IntNy <- dataNaa$InfluensaDataRaaFHI
data2levering <- lagDatafilerTilFHI(personIDvar = 'PersonId',
bered=1,
pand=1,
influ=0)
PandPp2 <- data2levering$PandemiDataPpFHI
BeredPp2 <- data2levering$BeredskapDataPpFHI
PandPp2$Per
PasientID == "4442C54B-848C-EB11-A970-00155D0B4E21"
RegData[RegData$PatientInRegistryGuid == "4442C54B-848C-EB11-A970-00155D0B4E21",]
#Påkoblet beredskap
KoroIntData <- KoronaPreprosesser(RegData = KoronaDataSQL(), aggPers = 1, kobleBered = 1)
KoronaFigAndelTid(RegData=KoroIntData)
#Hente og koble data fra csv-filer
KoroDataInn <- read.table('C:/Registerdata/nipar/InklusjonSkjemaDataContract2022-11-14.csv', sep=';',
stringsAsFactors=FALSE, header=T, encoding = 'UTF-8')
KoroDataUt <- read.table('C:/Registerdata/nipar/UtskrivningSkjemaDataContract2022-11-14.csv', sep=';',
stringsAsFactors=FALSE, header=T, encoding = 'UTF-8')
# varUt <- c("Antifungalbehandling", "AntiviralBehandling" , "HovedskjemaGUID",
# 'FormStatus', 'FormDate', "OverfortAnnetSykehusUtskrivning", "StatusVedUtskriving")
KoroData <- merge(KoroDataInn, KoroDataUt, suffixes = c('','Ut'),
by.x = 'SkjemaGUID', by.y = 'HovedskjemaGUID', all.x = T, all.y=F)
KoroDataInn$Aar <- substr(KoroDataInn$FormDate, 1,4)
table(KoroDataInn[KoroDataInn$ArsakInnleggelse==1, c('Aar', 'Isolert')])
table(KoroDataInn$Aar)
# PANDEMI - oppdater til dplyr 1.1.0
# mutate() requires that each argument returns the same number of rows as the input,
# summarise() requires that each argument returns a single value, and
# Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in dplyr 1.1.0.
# reframe() is a more general workhorse with no requirements on the number of rows returned per group. Please use `reframe()` instead.
# When switching from `summarise()` to `reframe()`, remember that `reframe()` always returns an ungrouped data frame and adjust accordingly.
load('d:/mydata/RegDataKoro.RData')
RegData <- RegDataKoro
RegData$Dato <- as.Date(RegData$FormDate)
RegData$PasientIDgml <- RegData$PasientID
Foer <- Sys.time()
PasFlere <- RegData %>% dplyr::group_by(PasientIDgml) %>%
dplyr::reframe(SkjemaGUID = SkjemaGUID,
InnNrDum1 = ifelse(Dato-min(Dato)>90, 2, 1),
InnNrDum2 = ifelse(InnNrDum1>1, ifelse(Dato - min(Dato[InnNrDum1==2])>90, 3, 2), 1),
InnNrDum3 = ifelse(InnNrDum2>2, ifelse(Dato - min(Dato[InnNrDum2==3])>90, 4, 3), InnNrDum2),
InnNr = ifelse(InnNrDum3>3, ifelse(Dato - min(Dato[InnNrDum3==4])>90, 5, 4), InnNrDum3),
PasientID = paste0(PasientID, '_', InnNr)
#Tid = as.numeric(Dato-min(Dato))
)
(Tidsbruk <- Sys.time() - Foer)
table(PasFlere$InnNr)
#AkuttRespirasjonsvikt, AkuttSirkulasjonsvikt, ja:2:5, nei:1
#AkuttNyresvikt, EndretBevissthet, Isolert, ja:1, nei:2
#AceHemmerInnkomst/AceHemmerInnkomst2 - tomme!
variable <- c('AkuttRespirasjonsvikt', 'AkuttSirkulasjonsvikt', 'AkuttNyresvikt',
'EndretBevissthet','Isolert')
RegData$AkuttRespirasjonsvikt <- ifelse(RegData$AkuttRespirasjonsvikt %in% 1:5,
ifelse(RegData$AkuttRespirasjonsvikt==1, 0, 1), NA)
table(RegData$AkuttRespirasjonsvikt, useNA = 'a')
RegData$AkuttSirkulasjonsvikt <- ifelse(RegData$AkuttSirkulasjonsvikt %in% 1:5,
ifelse(RegData$AkuttSirkulasjonsvikt==1, 0, 1), NA)
table(RegData$AkuttSirkulasjonsvikt, useNA = 'a')
table(RegData$AkuttNyresvikt, useNA = 'a')
# -1 1 2 3 <NA>
# 291 2109 18037 8026 0
table(RegData$EndretBevissthet, useNA = 'a')
#-1 1 2 3 <NA>
#754 3012 16193 8504 0
table(KoroData$Isolert, useNA = 'a')
# 0 1 <NA>
#25302 3161 0
var <- c('AkuttNyresvikt', 'EndretBevissthet', 'Isolert')
RegData[, var][which(RegData[ ,var] == -1, arr.ind = T)] <- NA
RegData[, var][which(RegData[ ,var] == 3, arr.ind = T)] <- NA
RegData[, var][which(RegData[ ,var] == 2, arr.ind = T)] <- 0
table(RegData[,variable[5]], useNA = 'a')
korona::tabAntPersOpph(RegData=RegDataPre, datoFra= '2022-06-01', datoTil=Sys.Date(), enhetsNivaa='RHF')
tabAntPersOpph(RegData=KoroDataOpph,
datoFra = input$valgtDatoForl[1],
datoTil=input$valgtDatoForl[1],
enhetsNivaa = input$enhetsNivaaForl)
RegData <- KoronaDataSQL(datoFra = '2022-01-01', datoTil = '2022-02-01') #10805
DataOpph <- korona::KoronaPreprosesser(RegData = RegData, aggPers = 0, tellFlereForlop = 0)
DataOpphBered <- korona::KoronaPreprosesser(RegData = RegData, aggPers = 0, tellFlereForlop = 0, kobleBered = 1)
DataPers <- korona::KoronaPreprosesser(RegData = RegData, aggPers = 1, tellFlereForlop = 0)
DataForlop <- korona::KoronaPreprosesser(RegData = RegData, aggPers = 1, tellFlereForlop = 1, kobleBered = 1) #
table(DataOpphBered$BeredReg)
DataForlopTest4 <- korona::KoronaPreprosesser(RegData = RegData, aggPers = 1, tellFlereForlop = 1)
#Tidsenheter og oppholdstabell
KoroDataRaa <- KoronaDataSQL(datoFra = '2020-01-01')
KoroDataOpph <- KoronaPreprosesser(RegData = KoroDataRaa, aggPers = 0)
tabAntOpphEnhTid(RegData=KoroDataOpph, datoTil='2021-08-31',
enhetsNivaa = 'ShNavn', tidsEnhet = 'Kvartal', antTidsenh=4)
tidsEnhet = 'Aar'
antTidsenh=4
datoTil='2021-08-31'
(datoDum <- switch(tidsEnhet,
Mnd = lubridate::floor_date(as.Date(datoTil), 'month') - months(antTidsenh-1, abbreviate = T),
Kvartal = lubridate::floor_date(as.Date(datoTil), 'month') - months(antTidsenh*3-1, abbreviate = T),
Aar = lubridate::floor_date(as.Date(datoTil) - 365*antTidsenh-1)
))
library(lubridate)
datoFra <- max(as.Date('2020-03-01'), as.Date(datoDum)) # max(as.Date('2020-03-01'), as.Date(datoDum))
aggVar <- c(enhetsNivaa, 'InnDato', 'Aar', 'MndNum', 'Kvartal', 'Halvaar')
RegData <- RegData[RegData$InnDato <= as.Date(datoTil, tz='UTC')
& RegData$InnDato > as.Date(datoFra, tz='UTC'), aggVar]
RegDataNy <- SorterOgNavngiTidsEnhet(RegData, tidsenhet= tidsEnhet)
RegData <- RegDataNy$RegData
tidsenheter <- RegDataNy$tidtxt
# AndelTid
NutvTxt <- 4
c(5-0.75*(0:(NutvTxt-1)))
KoronaFigAndelTid(RegData=RegData, hentData=0, valgtVar='alder_u18',
datoFra='2019-12-15', datoTil=Sys.Date(), tidsenhet='Kvartal',
dod=1, reshID=0, erMann=1, minald=10, maxald=110, #
skjemastatusInn=9, skjemastatusUt=2, dodSh=0, aarsakInn=9,
#enhetsNivaa='RHF', valgtEnhet='Alle', enhetsUtvalg=0,
beredPas=9)
#Antall innlagte på Gjøvik
705476
HFresh <- 100091
test <- RegDataRaa[RegDataRaa$UnitId == 705476, c("Innleggelse", "Utskrivningsdato", "FormStatus", "PatientInRegistryGuid")]
RegDataRaa[RegDataRaa$UnitId == 705476 & is.na(RegDataRaa$Utskrivningsdato), ]
table(RegData$ShNavnUt)
unique(RegData[, c('HF',"HFresh", "ReshId", 'ShNavn')])
library(korona)
PandemiDataRaa <- korona::KoronaDataSQL()
PandemiData <- KoronaPreprosesser(RegData = PandemiDataRaa, aggPers = 0)
PandemiUt <- KoronaDataSQL(koble = 0, skjema = 2)
RegData <- PandemiData
indReshEgen <- match(reshID, KoroData$HFresh) #Her skal benyttes HF-resh
egetRHF <- as.character(KoroData$RHF[indReshEgen])
egetHF <- as.character(KoroData$HF[indReshEgen])
#Filtreringsnivå for data:
egetEnhetsNivaa <- switch(rolle, SC = 'RHF', LC = 'RHF', LU = 'HF')
egenEnhet <- switch(rolle, SC='Alle', LC=egetRHF, LU=egetHF) #For LU vil reshID benyttes
antallTidEnhTab(RegData, tidsenhet='dag', erMann=9, datoFra=as.Date('2021-02-01'), datoTil=as.Date('2021-02-10'),
tilgangsNivaa='LC', valgtEnhet='Alle')$Tab
paste0('Uke ', format(aux$Tid, "%V.%y"))
RegData$Uke <- format(RegData$InnDag, "%V.%y")
table(RegData$Uke)
unique(RegData[order(RegData$UnitId),c("UnitId", "HelseenhetKortNavn", 'HF')])
unique(PandemiData[order(PandemiData$ShNavnUt),c("ReshId", "ShNavnUt", 'HF', 'RHF')])
unique(RegData[order(RegData$ReshId),c("ReshId", "ShNavn", 'HFresh', 'RHF')])
#Resh: 102919 HF: Bergen
table(PandemiDataRaa$UnitId)
#Sjekk av antall døde
BergenHF: 100082
PandemiDataRaa <- korona::KoronaDataSQL()
PandemiDataOpph <- KoronaPreprosesser(RegData = PandemiDataRaa, aggPers = 0)
PandemiData <- KoronaPreprosesser(RegData = PandemiDataRaa)
#Før aggregering:
table(PandemiDataOpph$ShNavn[which(PandemiDataOpph$StatusVedUtskriving==2 & PandemiDataOpph$HFresh==100082)])
sum(PandemiDataOpph$StatusVedUtskriving==2, na.rm = T)
persDod <- PandemiDataOpph$PersonId[which(PandemiDataOpph$StatusVedUtskriving == 2 & PandemiDataOpph$RHFresh == 100021)]
PandemiDataOpph[PandemiDataOpph$PersonId %in% persDod, c("ShNavn", "ShNavnUt")]
write.table()
#Etter aggregering:
table(PandemiData$ShNavnUt[which(PandemiData$StatusVedUtskriving==2& PandemiData$HFresh==100082)])
sum(PandemiData$StatusVedUtskriving==2, na.rm = T)
PandemiData[PandemiData$PersonId %in% persDod, c("ShNavn", "ShNavnUt")]
unique(PandemiDataOpph[PandemiDataOpph$StatusVedUtskriving==2 ,c('ReshId', "ShNavn")])
test <- PandemiDataOpph[which(PandemiDataOpph$StatusVedUtskriving==2), ]
testRaa <- PandemiDataRaa[PandemiDataRaa$StatusVedUtskriving==2, ]
#INNELIGGENDE, tabell
datoFra <- '2020-09-01'
datoTil <- '2020-11-01'
RegDataAlle <- PandemiData
if (datoFra != 0) {RegDataAlle <- RegDataAlle[RegDataAlle$UtDato >= datoFra | is.na(RegDataAlle$UtDato), ]}
if (datoTil != Sys.Date()) {RegDataAlle <- RegDataAlle[which(RegDataAlle$UtDato <= datoTil), ]} # filtrerer på tildato
datoer <- seq(if (datoFra!=0) datoFra else min(RegDataAlle$InnDato), datoTil, by="day") #today()
#' Funksjon som avgjør om en pasient er inneliggende på aktuell dato
#' Returnerer TRUE for datoer pasienten er inneliggende
#' @param datoer datoer som inneligging skal avgjøres for
#' @param regdata Dataramme som inneholder InnDato og Utdato per pasient
erInneliggende <- function(datoer, regdata){
# regnes som inneliggende på aktuell dato hvis den faller mellom inn- og utdato eller
# er etter inndato og det ikke finnes utddato. Flere betingelser kan legges til.
auxfunc <- function(x) {(x > regdata$InnDato & (x <= regdata$UtDato) | is.na( regdata$UtDato))}
purrr::map_df(datoer, auxfunc)
}
if (tidsenhet=='dag') {
names(datoer) <- format(datoer, '%d.%b')
aux <- erInneliggende(datoer = datoer, regdata = RegDataAlle)
RegDataAlle <- dplyr::bind_cols(RegDataAlle, aux)
} else {
names(datoer) <- datoer
aux <- erInneliggende(datoer = datoer, regdata = RegDataAlle)
aux <- dplyr::bind_cols(tidyr::as_tibble(RegDataAlle)[, "PasientID"], aux)
aux <- aux %>% tidyr::gather(names(aux)[-1], key=Tid, value = verdi)
aux$Tid <- as.Date(aux$Tid)
aux$Tid <- switch (tidsenhet,
'uke' = paste0('Uke ', format(aux$Tid, "%V")),
'maaned' = format(aux$Tid, "%b.%Y")
)
aux <- aux %>% dplyr::group_by(PasientID, Tid) %>%
dplyr::summarise(er_inne = max(verdi))
aux <- aux %>% tidyr::spread(key=Tid, value = er_inne)
RegDataAlle <- merge(RegDataAlle, aux, by = 'PasientID')
}
colMeans(RegData[,c("ReinnTid", "ReinnTidDum")], na.rm = T)
#RegData$Reinn==1
velgTidsenhet <- 'dag'
datoTil <- as.Date("2020-11-01")
datoFra <- switch (velgTidsenhet,
"dag" = datoTil - days(50-1),
"uke" = floor_date(datoTil - weeks(30-1), unit = 'week', week_start = 1),
"maaned" = floor_date(datoTil - months(20-1), unit = 'month')
)
test <- antallTidEnhTab(RegData=PandemiData, datoFra=datoFra, datoTil = )
# , tidsenhet='dag', erMann=9, datoFra=0, datoTil=Sys.Date(), #valgtVar='innlagt',
# tilgangsNivaa='SC', valgtEnhet='Alle', #enhetsNivaa='RHF',
# HF=0, skjemastatusInn=9, aarsakInn=9, dodSh=9)
test$Tab
statusNaaTab(RegData=KoroData, enhetsNivaa='HF', #
valgtEnhet='Bergen')
UtData <- KoronaUtvalg(RegData=KoroData, enhetsNivaa='HF', #
valgtEnhet='Bergen')$RegData
UtData <- KoronaUtvalg(RegData=KoroData, valgtEnhet=valgtEnhet, enhetsNivaa = enhetsNivaa)$RegData
#Sjekke manglende HF i Sør-Øst
unique(KoroDataRaa[ ,c("UnitId", "HelseenhetKortNavn", 'HF', 'RHF')])
unique(KoroData[ ,c("ReshId", "ShNavn", 'HF', 'RHF')])
Pandemi <- KoronaUtvalg(RegData=KoroData, aarsakInn = 2)$RegData
as.data.frame(Pandemi[Pandemi$HF=='',] %>% dplyr::group_by(RHF, HF, HF, ShNavn) %>% dplyr::summarise(Antall = dplyr::n()))
as.data.frame(Pandemi %>% dplyr::group_by(RHF, HF, HF, ShNavn) %>% dplyr::summarise(Antall = dplyr::n()))
# Test <- KoroData[KoroData$ShNavn == 'Radiumhospitalet', ]
# 705757
#Samlerapport, sjekk
#function(rnwFil, brukernavn='lluring', reshID=0, valgtEnhet = 'Alle', enhetsNivaa = 'RHF', rolle = 'SC')
test <- korona::abonnementKorona(rnwFil="KoronaRapport.Rnw", brukernavn='lenaro', reshID=700720,
valgtEnhet = 'Alle', enhetsNivaa = 'RHF', rolle = 'SC')
file.copy(from=test, to='~/korona/test.pdf')
testBer <- intensivberedskap::abonnementBeredsk(rnwFil='BeredskapCorona.Rnw', brukernavn='beredskap', reshID=0,
valgtRHF = 'Alle', Rpakke='intensivberedskap')
head(format(seq(Sys.Date(), min(Pandemi$InnDag), by=paste0('-1 day')), '%d.%b'))
class(seq(Sys.Date(), min(Pandemi$InnDag), by=paste0('-1 day')))
#INNELIGGENDE...#
library(korona)
RegData <- KoronaDataSQL(datoFra = '2020-03-01')
RegData <- KoronaPreprosesser(RegData = RegData)
RegData <- RegData[-which(RegData$SkjemaGUID %in% toupper(SkjemaGUIDInn)), ]
indSmDag <- which(as.numeric(difftime(RegData$CreationDateUt, RegData$CreationDate,
units = 'hours')) < 1)
indFerdig <- which(RegData$FormStatus==2 & RegData$FormStatusUt==2)
RegData <- RegData[intersect(indSmDag, indFerdig), ]
#Opprettet samtidig. Skjer det ved inn-eller utskriving?
#time 1 - time 2
InnDiff <- median(as.numeric(difftime(RegData$CreationDate, RegData$FormDate,
units = 'days'))) #Fra sept: Median reg. 1.7 dager etter
UtDiff <- median(as.numeric(difftime(RegData$CreationDateUt, RegData$FormDateUt,
units = 'days'))) #Fra sept. Median 1,8timer før utskrivning.
DiffInnlOpprUtskr <- median(as.numeric(difftime(RegData$CreationDate, RegData$FormDateUt,
units = 'days')))
Liggetid <- median(as.numeric(difftime(RegData$FormDate, RegData$FormDateUt,
units = 'days')))
# For 421 av 1330 opphold legges begge skjema inn samtidig. (Ferdigstilte registreringer f.o.m. 1.sept)
# For opphold hvor begge skjema legges inn samtidig, er median tid mellom innleggelse og registrering 1.7 dager,
# mens tid mellom utskriving og registrering er 0,07 dager (1,8t). Samtidig registrering av hele oppholdet
# tenderer derfor til å skje ved utskriving.
#
# Hvor mange legges inn samtidig med innleggelse?
#Justere inneliggene (UtDato) for ut-skjema som opprettes samme dag som innleggelse
indIkkeUtDato <- which(is.na(RegData$Utskrivningsdato)) #Mangler utskr.dato.
indSmDag <- which(as.numeric(difftime(RegData$CreationDateUt, RegData$CreationDate,
units = 'hours')) < 1)
test <- intersect(indIkkeUtDato, indSmDag)
RegData$UtDato <- RegData$Utskrivningsdato #FormDateUt # #Alle som har utskrivingsskjema
#Tar bort de som har skjema opprettet samme dag som inn-skjema og mangler utskrivingsdato
RegData$UtDato[intersect(indIkkeUtDato, indSmDag)] <- NA
inneliggereInd <- is.na(RegData$UtDato)
Inneliggende <- length(unique(RegData$PatientInRegistryGuid[inneliggereInd]))
#Se nærmere på inneliggende basert på manglende utskrivingsdato.
#Ca. 290 pasienter som har en dato for utskrivingsskjema før dato for utskrivning,
#med en mediantid skjemadato - utskrivningsdato 6 dager (nedre og øvre kvartil: 3 – 14). -> Over 10% "skrives ut" omtrent når de legges inn
#Ca. 1830 pasienter har dato for utskrivingsskjema (CreationDate?) ETTER utskrivning,
# mediantid skjemadato - utskrivningsdato på 1 dag (nedre og øvre kvartil: 0,5 – 9).
#Hvis vi tar alle med ‘FirstTimeClosedUt’ (ca. 1300 pasienter) er
#mediantid mellom utskrivningsdato og skjemadato på 10 dager (nedre og øvre kvartil: 4 – 67).
# Alle disse tallene er basert på pasientens siste opphold (som for de fleste er det sin eneste).
# Jeg tolker derfor at det blir mer riktig å fortsette å bruke FormDate når utskrivningsdato mangler fordi det virker som
# for de aller fleste at utskrivningsskjema fremdeles blir registrert etter utskrivning,
# og at for halvparten at ferdigstilling av skjemaet tar 10 dager eller lengre.
# Også, som nevnt ovenfor, gir beregningen basert på FormDate et riktigere bilde av situasjonen når man sammenligner med andre kilder.
plot(PandemiDataRaa$CreationDate, PandemiDataRaa$CreationDateUt, col='blue', pch=20)
points(PandemiDataRaa$CreationDate, PandemiDataRaa$Utskrivningsdato, col='red', pch=20)
plot(PandemiUt$CreationDate, PandemiUt$FormDate)
plot(PandemiUt$Utskrivningsdato, PandemiUt$CreationDate)
points(PandemiUt$Utskrivningsdato, PandemiUt$FirstTimeClosed, col='red', pch=20, cex=0.5)
#Få med utskriving etter opprettelse, og stort sett ikke så lenge etter
#Mange skjema etterregistreres
#Skjema ferdigstilles stort sett når de opprettes, men kan bli liggende noen dager. (Creation, FirstTimeClosed)
plot(PandemiUt$CreationDate, as.Date(PandemiUt$FirstTimeClosed))
#Etterregistrering av pasienter:
plot(PandemiDataRaa$CreationDate, PandemiDataRaa$FormDate)
plot(difftime(PandemiDataRaa$CreationDateUt, PandemiDataRaa$Utskrivningsdato,
units = 'days'))
#Ut-skjema som opprettes før utskrivning - opprettes de samtidig med innleggelse? Mange gjør det, ca 114 av 158 (72%)
indOpprettForUts <- which(as.numeric(difftime(PandemiDataRaa$CreationDateUt, PandemiDataRaa$Utskrivningsdato, units = 'mins')) <= 0)
indSmDag <- which(as.numeric(difftime(PandemiDataRaa$CreationDateUt[indOpprettForUts], PandemiDataRaa$CreationDate[indOpprettForUts],
units = 'days')) < 1)
#Justere inneliggene basert på at ut-skjema opprettes samme dag som innleggelse
indKladdUt <- which(PandemiDataRaa$FormStatusUt == 1 & is.na(PandemiDataRaa$Utskrivningsdato)) #I kladd og mangler utskr.dato
indSmDag <- which(as.numeric(difftime(PandemiDataRaa$CreationDateUt, PandemiDataRaa$FormDate,
units = 'days')) < 1)
PandemiDataRaa$UtDato <- PandemiDataRaa$FormDateUt
PandemiDataRaa$UtDato[intersect(indKladdUt, indSmDag)] <- NA
sum(is.na(PandemiDataRaa$UtDato))
sum(is.na(PandemiDataRaa$Utskrivningsdato))
#Hvor vanlig er det å inn og ut på samme dag? 258 av 2115, 12% (3% <0,5 dager)
indFerdig <- which(PandemiDataRaa$FormStatusUt == 2)
innUtSmdag <- sum(as.numeric(difftime(PandemiDataRaa$FormDateUt[indFerdig], PandemiDataRaa$FormDate[indFerdig],
units = 'days')) < .25)
ManglerUtDatoRaa <- sum(is.na(PandemiDataRaa$Utskrivningsdato))
ManglerUtDatoPers <- sum(is.na(PandemiData$Utskrivningsdato))
ManglerUtSkjemaRaa <- sum(is.na(PandemiDataRaa$FormStatusUt))
ManglerKladdUtSkjemaPers <- sum(PandemiData$FormStatusUt == 1) #Regnes som kladd hvis utskjema ikke opprettet.
#Er alle ut-skjema som mangler utdato i kladd? Ja
table(PandemiDataRaa$FormStatusUt[is.na(PandemiDataRaa$Utskrivningsdato)], useNA = 'a')
#Får utskrivingsskjema FormDate fra utskrivingsdato hvis denne finnes? JA
PandemiUt <- KoronaDataSQL(skjema = 2, koble = 0)
PandemiUt$DiffForm <- difftime(PandemiUt$FormDate, PandemiUt$Utskrivningsdato, units = 'mins')
#test <- PandemiUt[order(PandemiUt$FormDate),c('Diff', 'CreationDate', "FormDate", "Utskrivningsdato","FormStatus")]
PandemiDataRaa$DiffFormUts <- difftime(PandemiDataRaa$FormDateUt, PandemiDataRaa$Utskrivningsdato, units = 'days')
PandemiDataRaa$DiffCreUts <- difftime(PandemiDataRaa$CreationDateUt, PandemiDataRaa$Utskrivningsdato, units = 'days')
PandemiDataRaa$DiffFerdigUts <- difftime(PandemiDataRaa$FirstTimeClosedUt, PandemiDataRaa$Utskrivningsdato, units = 'days')
test <- PandemiDataRaa[order(PandemiDataRaa$FormDate),
c('DiffFormUts','DiffCreUts','DiffFerdigUts', 'CreationDateUt', "FormDateUt", "Utskrivningsdato","FormStatus")]
MedDiffFormUts <- median(as.numeric(PandemiDataRaa$DiffFormUts), na.rm = T)
MedDiffCreUts <- median(as.numeric(PandemiDataRaa$DiffCreUts), na.rm = T)
MedDiffFerdigUts<- median(as.numeric(PandemiDataRaa$DiffFerdigUts), na.rm = T)
'CreationDate'
'CreationDateUt'
'FirstTimeClosed'
'FirstTimeClosedUt'
#Se nærmere på antall døde
sum(is.na(PandemiDataRaa$SkjemaGUIDut))
SkjemaDod <- sort(PandemiDataRaa$SkjemaGUID[which(PandemiDataRaa$StatusVedUtskriving==2)])
#SkjemaDod <- sort(PandemiUt[which(PandemiUt$StatusVedUtskriving==2), "SkjemaGUID"])
DodHSO <- read.table('DodHSO.csv', sep=';',
stringsAsFactors=FALSE, header=T, encoding = 'UTF-8')
DodHSO <- sort(toupper(as.vector(t(DodHSO))))
#setdiff(DodHSO, SkjemaDod)
#setdiff(DodHSO, PandemiDataRaa$SkjemaGUID) #Skjema som ikke i mitt uttrekk
# PandemiDataRaa$DodHSO <- 0
# PandemiDataRaa$DodHSO[which(PandemiDataRaa$SkjemaGUID %in% DodHSO)] <- 1
PandemiDataRaa$DodHSO <- ifelse(PandemiDataRaa$SkjemaGUID %in% DodHSO,1,0)
#PandemiDataRaa[which(PandemiDataRaa$SkjemaGUID %in% DodHSO),
# c("FormDate", "SkjemaGUID", "SkjemaGUIDut", "FormStatus", "FormStatusUt",
# 'StatusVedUtskriving')]
StatusUt <- PandemiDataRaa[order(PandemiDataRaa$FormDate),
c("FormDate","SkjemaGUID", "SkjemaGUIDut","DodHSO", "StatusVedUtskriving", "FormStatus", "FormStatusUt")]
write.table(StatusUt,
file = 'StatusUtSkjemaGUID.csv', row.names = F, sep = ';')
#write.table(test[order(test$FormDate),], file = 'SkjemaGUIDtestDod.csv', row.names = F, sep = ';')
#Antall døde
AntDodRaa <- sum(PandemiDataRaa$StatusVedUtskriving == 2, na.rm = T)
AntDodPers <- sum(PandemiData$StatusVedUtskriving == 2, na.rm = T)
table(PandemiDataRaa$StatusVedUtskriving, useNA = 'a')
table(RegData$ShNavn, useNA = 'a')
table(RegData$HFresh, useNA = 'a')
table(RegData$HF, useNA = 'a')
table(RegData$RHFresh, useNA = 'a')
table(RegData$RHF, useNA = 'a')
RegData$ReshId[is.na(RegData$HFresh)]
RegData$ShNavn[is.na(RegData$HFresh)]
PandemiData[PandemiData$ReshId == 4204086, c("HFresh", 'HF', "RHFresh", 'RHF')]
RegData <- PandemiDataRaa
RegData$HFresh <- ReshNivaa$HFresh[match(RegData$UnitId, ReshNivaa$ShResh)]
test <- RegData[is.na(RegData$HFresh), c("HFresh", "UnitId", 'RHF')]
RegData[which(RegData$UnitId == 4204086), c("HFresh", 'RHF', 'HelseenhetKortNavn')]
match(4204086, ReshNivaa$ShResh)
ind <- which(PandemiDataRaa$SkjemaGUID==toupper('893ea8aa-e6db-457d-9d4a-fe614dea8ac1'))
PandemiDataRaa[ind, "Utskrivningsdato"]
table(PandemiDataRaa$ArsakInnleggelse)
table(PandemiData$ArsakInnleggelse)
table(PandemiData$ArsakInnNy)
table(PandemiData$CovidJAalle)
table(PandemiData$CovidJaSiste)
table(PandemiData$CovidJaFinnes)
table(PandemiData$CovidNei)
table(PandemiData$CovidUkjent)
table(PandemiData$ArsakInnleggelse, useNA = 'a')
table(PandemiData$ArsakInnleggelse_NyA, useNA = 'a')
table(PandemiData$ArsakInnleggelse_NyAC, useNA = 'a')
#Kan også teste ved å se på enkeltverdier
table(RegData[RegDataRaa$StatusVedUtskriving==2, 'HF'])
RegDataRaa[RegDataRaa$StatusVedUtskriving==2 & RegDataRaa$HF=='Helse Bergen HF',
c('SkjemaGUIDut', 'HelseenhetKortNavn')]
RegData[which(RegData$StatusVedUtskriving==2 & RegData$HF=='Helse Bergen HF'), ]
RegDataRaaHB <- RegDataRaa[RegDataRaa$HF=='Helse Bergen HF', ]
RegDataHB <- KoronaPreprosesser(RegDataRaaHB)
table(RegDataRaa$HF[which(RegDataRaa$StatusVedUtskriving==2)])
ind <- which(RegDataRaa$SkjemaGUIDut %in% toupper(c('c33a60b6-0e4f-4fd4-8413-1f15081c9687',
'508c6991-4dc5-4389-9f56-166e1647d5f3',
'cee202cd-ecfe-498a-98e6-68e3a254b13b',
'dd6c5606-cad0-4b17-9142-0bfff5944232',
'dbdf559e-ae70-4eb0-bb17-c2478ed3fcda')))
#
RegDataRaa$HF[ind]
RegDataRaa[ind,]
UtData <- KoronaUtvalg(RegData=RegDataHB,
enhetsNivaa='HF', valgtEnhet='Helse Bergen HF',
aarsakInn = 9,
skjemastatusInn=9,
erMann=9)
dim(UtData$RegData)
sum(UtData$RegData$StatusVedUtskriving==2, na.rm=T)
test <- unique(RegDataRaa[as.Date(RegDataRaa$FormDate) < '2020-03-08',c("SkjemaGUID", "FormDate", "HelseenhetKortNavn")])
pas <- RegDataRaa$PasientGUID[which(RegDataRaa$SkjemaGUID == '41FB2DF0-E9C6-4552-A10C-788C51A5B7B9')] # 'D8341A7C-04D6-4382-BAE1-014F8C13FBD1')]
t(RegDataRaa[RegDataRaa$PasientGUID==pas,c("PasientGUID","SkjemaGUID","SkjemaGUIDut", "FormDate", "HelseenhetKortNavn")])
table(RegData[RegData$Alder<18, c('Alder','ArsakInnleggelse')])
pas <- RegData$PasientID[which(RegData$ReinnTid<0,)] #Kan evt. brukes til å finne dbl.reg.
test1 <- RegDataRaa[which(RegDataRaa$PasientGUID %in% pas),
c('HelseenhetKortNavn','UnitId', 'PasientGUID', 'FormDate', "FormDateUt", 'SkjemaGUID')] #'Liggetid', 'LiggetidTot',
test1[order(test$PasientGUID, test1$FormDate), ]
test2 <- RegData[which(RegData$PasientID %in% pas),
c('ShNavn','PasientID', 'FormDate', "FormDateUt", 'Liggetid', 'LiggetidTot')] #
test2[order(test2$PasientID, test2$FormDate), ]
RegData[which(RegData$Reinn==1), c('Liggetid', 'LiggetidTot')]
#tab <- FerdigeRegTab(RegData = RegData)$Tab
alleInn <- innManglerUt(RegData = RegDataRaa)
sort(alleInn$InnDato)
test <- innManglerUt(RegData = RegDataRaa, enhetsNivaa = 'HF', valgtEnhet = egetHF) #, valgtEnhet = )
ikkeut <- RegDataRaa[which(RegDataRaa$SkjemaGUID %in% test$SkjemaGUID), ]
ikkeut[ ,c('HelseenhetKortNavn', 'SkjemaGUID', 'FormDate')]
pas <- unique(ikkeut$PasientGUID)
length(which(RegData$PasientID %in% pas))
t1 <- RegData[which(RegData$PasientID %in% pas),c('ShNavn','ShNavnUt', 'FormStatus', "FormDate", "FormDateUt",'Overf',"PasientID")]
t1[order(t1$PasientID), ]
t2 <- RegDataRaa[which(RegDataRaa$PasientGUID %in% pas),
c('HelseenhetKortNavn', 'SkjemaGUID', 'FormDate', "FormDateUt",'PasientGUID')]
#'OverfortAnnetSykehusInnleggelse', 'OverfortAnnetSykehusUtskrivning',
t2[order(t2$PasientGUID, t2$FormDate), ]
ifelse(0 > 0, 1,
sort(RegDataRaa$FormStatusUt)[1])
ifelse(1<0, 0, 'a')
table(RegData$Reinn8)
table(RegData$Reinn24)
table(RegData$Reinn48)
table(RegData$Reinn7d)
table(RegData$ReinnTid>24)
pas <- RegData$PasientID[which(as.numeric(RegData$ReinnTid) < -10)]
tab <- RegDataRaa[which(RegDataRaa$PasientGUID %in% pas),
c('PasientGUID', "FormDate", "FormDateUt", 'HelseenhetKortNavn')]
tab[order(tab$PasientGUID), ]
RegData[RegData$PasientID=='80572CB4-6E77-EA11-A96B-00155D0B4F09', ]
tab <- table(RegDataRaa$PasientGUID)
tab[tab>1]
table(round(RegData$Liggetid), useNA = 'a')
FerdigeRegTab(RegData=Pandemi,
aarsakInn = 1)$Tab
#,valgtEnhet=valgtEnhet,
#enhetsNivaa = enhetsNivaa)
test <- RegData[ , c("FormDateUt", "Utskrivningsdato","FormStatus", "FormStatusUt" )]
RegData <- KoronaUtvalg(RegData=RegData, aarsakInn = 1)$RegData
table(RegData$Reinn,is.na(RegData$FormDateUt))
table(is.na(RegData$FormDateUt))
RegDataRaa <- KoronaDataSQL()
RegData <- KoronaPreprosesser(RegData = RegDataRaa, aggPers = 0)
RegData <- KoronaPreprosesser(RegData = RegDataRaa)
Utdata <- KoronaFigAndeler(valgtVar='regForsinkelseInn', RegData=RegData, datoFra = '2020-04-01')
# ,minald=minald, maxald=maxald, aarsakInn=aarsakInn,
# erMann=erMann, dodSh=dodSh,
# skjemastatusInn=skjemastatusInn, skjemastatusUt=skjemastatusUt,
# enhetsNivaa=enhetsNivaa, valgtEnhet=valgtEnhet,
# enhetsUtvalg=1)
Tab <- FerdigeRegTab(RegData, valgtEnhet='Alle', enhetsNivaa='RHF', erMann=9, dodSh=9)$Tab
RisikoInnTab(Pandemi, valgtEnhet = valgtEnhet, enhetsNivaa = enhetsNivaa)
AlderTab(RegData=RegData)$Tab
antallTidEnhTab(RegData, tidsenhet=tidsenhet, erMann=9, tilgangsNivaa=tilgangsNivaa,
bekr=1, skjemastatus=0, dodSh=9, valgtEnhet='Sør-Øst')
library(korona)
valgtEnhet= 'Alle' #'N-Trøndelag' #'Midt' #'Innlandet' #'Vest' #'Innlandet' #'Alle'
enhetsNivaa <- 'RHF'
rolle <- 'SC'
reshID <- 100317 #N-Trøndelag #100091
#setwd('C:/ResultattjenesteGIT/korona/inst')
setwd('/home/rstudio/korona/inst')
#knitr::knit('KoronaRapport.Rnw', encoding = 'UTF-8')
#tools::texi2pdf(file='KoronaRapport.tex')
knitr::knit2pdf('KoronaRapport.Rnw') #, encoding = 'UTF-8')
korona::abonnementKorona(rnwFil=rnwFil, brukernavn='lluring', reshID=0,
valgtEnhet = 'Alle', #Rpakke='korona',
enhetsNivaa = 'RHF', rolle = 'SC')
unique(PandemiInn[,c('RHFresh','RHF')])
PandemiInn %>% dplyr::group_by(RHF, HF) %>% dplyr::summarise(Antall = length(unique(HealthUnitShortName)))
PandemiInn %>% dplyr::group_by(RHF) %>% dplyr::summarise(Antall = length(unique(HF)))
PandemiInn <- read.table('A:/Pandemi/Pandemiskjema2020-04-03.csv', sep=';',
stringsAsFactors=FALSE, header=T, encoding = 'UTF-8')
PandemiInn$InnDato <- as.Date(PandemiInn$FormDate, tz= 'UTC', format="%d.%m.%Y") #DateAdmittedIntensive
PandemiInn$Dag <- format(PandemiInn$InnDato, '%d.%B')
library(korona)
table(KoroDataInn$PasientGUID)[table(KoroDataInn$PasientGUID)>1]
sort(table(KoroDataUt$PasientGUID)) #[table(KoroDataUt$PasientGUID)>1]
ind <- which(KoroDataUt$HovedskjemaGUID==('D403C085-3F28-4840-AF72-9A6AF7954066'))
KoroDataUt$SkjemaGUID[ind] #= 'D403C085-3F28-4840-AF72-9A6AF7954066'
KoroDataUt[ind, "FormStatus"]
#----------- Datavask--------------------------------
#Feilreg, BMI
RegData[order(RegData$BMI, decreasing = T)[1:10],c('PasientID', 'InnDag', 'BMI')]
PasIDBMI <- RegData[which(RegData$BMI>50), "PasientID"]
RegDataRaa <- KoronaDataSQL()
RegDataRaa[union(which(RegDataRaa$PasientGUID %in% PasIDBMI),
which(RegDataRaa$Hoyde<140 & RegDataRaa$Hoyde>0)),
c('Hoyde', 'Vekt', "PatientAge", "SkjemaGUID")]
RegDataRaa <- KoronaDataSQL()
RegData <- KoronaPreprosesser(RegData = RegDataRaa)
#Dato inn/ut
sjekk <- 240 #-10
pas <- RegData$PasientID[which(as.numeric(RegData$ReinnTid) > sjekk)]
tab <- RegDataRaa[which(RegDataRaa$PasientGUID %in% pas),
c('PasientGUID', "FormDate", "FormDateUt", 'HelseenhetKortNavn')]
pas <- RegData$PasientID[RegData$AntReinn>1]
tab[order(tab$PasientGUID), ]
sort(table(RegData$AntReinn))
#FINN DOBBELTREGISTERERING - overlapp to avdelinger > 24?t
#-------------Overførte pasienter - SJEKK AV PASIENTAGGREGERING------------------------
library(korona)
RegDataRaa <- KoronaDataSQL() #1026
length(unique(RegDataRaa$PasientGUID)) #935 ->91 overføringer?
RegData <- KoronaPreprosesser(RegDataRaa)
JaNeiUkjVar <- function(x) {ifelse(1 %in% x, 1, ifelse(2 %in% x, 2, 3))}
# OverfortAnnetSykehusInnleggelse, #1-ja, 2-nei, 3-ukjent
# OverfortAnnetSykehusUtskrivning, #1-ja, 2-nei, 3-ukjent
# RegDataRed <- RegData %>% dplyr::group_by(PasientGUID) %>%
# summarise(Overf = JaNeiUkjVar(c(OverfortAnnetSykehusInnleggelse, OverfortAnnetSykehusUtskrivning)),
# AntInnSkjema = dplyr::n(),
# Reinn = ifelse(AntInnSkjema==1, 0,
# ifelse(sort(difftime(sort(FormDate)[2:AntInnSkjema], #sort hopper over NA
# FormDateUt[order(FormDate)][1:(AntInnSkjema-1)],
# hours)) <= 8, 0, 1)), #Beregn ja/nei. Xt
# AntReinn = ifelse(Reinn==0, 0, #0-nei, 1-ja
# sum(difftime(sort(FormDate)[2:AntInnSkjema], #sort hopper over NA
# FormDateUt[order(FormDate)][1:(AntInnSkjema-1)],
# hours) > 8))
# Dobbeltreg= , #Overlappende liggetid >Xt på to ulike Sh
# Overf = , #Beregn, ja nei
# AntOverf = , #Antall overføringer
# LiggetidSum = , #sum av liggetider
# )
#sort(difftime(RegData$FormDateUt[1:2], c(RegData$FormDate[1], NA)))
sum(RegData$Reinn, na.rm = T)
hvilkePas <- RegData$PasientID[which(RegData$Reinn==1)]
ReinnData <- RegDataRaa[which(RegDataRaa$PasientGUID %in% hvilkePas),
c('PasientGUID', "FormDate", "FormDateUt", "HelseenhetKortNavn", "SkjemaGUID")]
test <- ReinnData[order(ReinnData$PasientGUID, ReinnData$FormDate),]
#FINN DOBBEL
table(RegDataRed$Overf) #50 overf
tab <- table(RegData$PasientGUID)
table(tab)
tab[tab>2]
RegData <- KoronaPreprosesser(RegData = RegData)
length(unique(RegData$PasientID)) #926 sjekk ant før 8.mars : 9 stk OK
RegData <- KoronaUtvalg(RegData=RegData, aarsakInn = 1)$RegData #767
pas3 <- names(table(RegData$PasientGUID)[table(RegData$PasientGUID)>2])
indOverf <- which(RegData$PasientGUID %in% pas3)
var <- c('PasientGUID',"UnitId", "HelseenhetKortNavn", 'ShNavnUt', "FormStatus", "Innleggelse",
"Utskrivningsdato", "FormStatusUt", "OverfortAnnetSykehusInnleggelse", "OverfortAnnetSykehusUtskrivning")
#data3opph <- RegData[indOverf, var] #RegData$PasientGUID == '3E6F196C-EF7B-EA11-A96B-00155D0B4F09'
data3opph <- RegData[indOverf, ] #RegData$PasientGUID == '3E6F196C-EF7B-EA11-A96B-00155D0B4F09'
write.csv2(data3opph[order(data3opph$PasientGUID),], file='Data3opph.csv' ,fileEncoding = 'UTF-8', row.names = F)
Pandemi <- KoronaPreprosesser(KoronaDataSQL(koble=1))
varAgg <- c('PasientID',"ReshId", "ShNavn", 'ShNavnUt', "FormStatus", "InnTidspunkt",
"Utskrivningsdato", "FormStatusUt", "Overf")
data3opphAgg <- Pandemi[which(Pandemi$PasientID %in% pas3), ] #varAgg]
UtAgg <- data3opphAgg[order(data3opphAgg$PasientID),]
write.csv2(UtAgg, file='Data3opphAgg.csv' ,fileEncoding = 'UTF-8', row.names = F)
#-----------------------------Koble Intensiv og Pandemi------------------------------
library(korona)
library(intensivberedskap)
library(tidyverse)
IntensivData <- read.table('A:/Intensiv/BeredskapPers2020-04-23.csv', sep=';',
stringsAsFactors=FALSE, header=T) #, encoding = 'UTF-8')
var <- c("Fodselsnummer", "SkjemaGUID", 'FormDate', "HealthUnitShortName", "HF", "RHF")
IntDataPers <- IntensivData %>%
dplyr::group_by(Fodselsnummer) %>%
summarise(
SkjemaGUID = first(SkjemaGUID, order_by = FormDate),
RHF = first(RHF, order_by = FormDate),
HF = first(HF, order_by = FormDate),
ShNavn = first(HealthUnitShortName, order_by = FormDate),
FormDate = first(FormDate, order_by = FormDate)
)
PandemiData <- read.table('A:/Pandemi/PandemiPers2020-04-23.csv', sep=';',
stringsAsFactors=FALSE, header=T) #, encoding = 'UTF-8')
PanData <- PandemiData[which(PandemiData$Skjematype=='Pandemiskjema'), var]
PanDataPers <- PanData %>%
dplyr::group_by(Fodselsnummer) %>%
summarise(
SkjemaGUID = first(SkjemaGUID, order_by = FormDate),
RHF = first(RHF, order_by = FormDate),
HF = first(HF, order_by = FormDate),
ShNavn = first(HealthUnitShortName, order_by = FormDate),
FormDate = first(FormDate, order_by = FormDate)
)
#Manglende registrering
IntPan <- merge(IntDataPers, PanDataPers, suffixes = c('Int','Pan'),
by = 'Fodselsnummer', all.x = T, all.y=F)
IntIkkePan <- IntPan[which(is.na(IntPan$SkjemaGUIDPan)),
c('RHFInt', 'HFInt', 'ShNavnInt', 'FormDateInt', 'SkjemaGUIDInt')]
data.frame(IntIkkePan[order(IntIkkePan$RHFInt), ], row.names = 'SkjemaGUIDInt')
#Andel som har vært på intensiv
PanInt <- merge(IntDataPers, PanDataPers, suffixes = c('Int','Pan'),
by = 'Fodselsnummer', all.x = F, all.y=T)[,-1]
PanInt$PaaInt <- ifelse(is.na(PanInt$FormDateInt),0,1)
TabSh <- PanInt %>%
dplyr::group_by(RHFPan, HFPan, ShNavnPan) %>%
dplyr::summarise(
AntPaaInt = sum(PaaInt),
AntPas = dplyr::n(),
AndelPaaInt = round(sum(PaaInt)/dplyr::n()*100, 1)
)
TabHF <- PanInt %>%
dplyr::group_by(RHFPan, HFPan) %>%
dplyr::summarise(
AntPaaInt = sum(PaaInt),
AntPas = dplyr::n(),
AndelPaaInt = round(sum(PaaInt)/dplyr::n()*100, 1)
)
TabRHF <- PanInt %>%
dplyr::group_by(RHFPan) %>%
dplyr::summarise(
AntPaaInt = sum(PaaInt),
AntPas = dplyr::n(),
AndelPaaInt = round(sum(PaaInt)/dplyr::n()*100, 1)
)
TabNasj <- PanInt %>%
dplyr::summarise(
AntPaaInt = sum(PaaInt),
AntPas = dplyr::n(),
AndelPaaInt = round(sum(PaaInt)/dplyr::n()*100, 1)
)
install.packages(c("xlsx","openxlsx"))
library(openxlsx)
OUT <- openxlsx::createWorkbook()
tabeller <- list('IntIkkePan'=IntIkkePan, 'TabSh'=TabSh, 'TabHF'=TabHF, 'TabRHF'=TabRHF, 'TabNasj'=TabNasj)
for(a in 1:5){
tab <- data.frame(tabeller[[a]])
arknavn <- names(tabeller)[a]
addWorksheet(OUT, arknavn)
writeData(OUT, sheet = arknavn, x = tab)
}
saveWorkbook(OUT,'AndelPaaInt.xlsx')
round(prop.table(table(PanInt[ ,c('ShNavnPan', 'PaaInt')]), margin = 1)*100,1)
#------------Kontroll, Beregning av reinnleggelse
RegDataRaa <- KoronaDataSQL()
RegData <- KoronaPreprosesser(RegData = RegDataRaa)
#PersonID som skal sjekkes:' '
sjekkPers <- c('3d6hzE6rwd05cind5W8qRh8mqzCNUEcxWtsAemTUApU', 'V9r9pLkG3wVd7wvPt6SaEdrMDnTdxSnR9rk2bUokcQ',
'r9O7Q5p8Y0Hc8nUIIxGRxtfbpR2Y3n5iddHVqMF8No4', 'txIDdRvRmZrsFW6IRhh3gTytaPbFDRmIKUlcpl1CY')
RaaSjekk <- RegDataRaa[which(RegDataRaa$PersonId %in% sjekkPers), ]
RaaSjekk[order(RaaSjekk$PersonId, RaaSjekk$FormDate) ,c("PersonId", "FormDate", "FormDateUt", 'FormStatusUt', "UnitId")]
Sjekk <- KoronaPreprosesser(RegData = RaaSjekk)
Sjekk[order(Sjekk$PersonId, Sjekk$FormDate) ,c("PersonId", "FormDate", "FormDateUt", "AntReinn", 'Reinn',
'LiggetidSjekk', 'Liggetid')]
#----------------- COVID, belastning på sykehus SKDE-------------------------------
library(korona)
#data("belegg_ssb")
# belegg_ssb2019 <- read.table('C:/ResultattjenesteGIT/BeleggSSB2019.csv', sep=';',
# stringsAsFactors=FALSE, header=T, row.names = T, fileEncoding = 'latin1')
Kapasitet <- belegg_ssb[ ,c('HF', 'HFresh', 'Dognplasser.2018')]
#Henter personid fra intensiv fordi vil ha liggetider fra intensiv. Vil derfor mangle beredskapspasienter
#som ikke er registrert i intensiv. (Skal være svært få.)
datoTil <- '2020-12-31'
KoroDataRaa <- KoronaDataSQL(datoTil = datoTil, koble=1)
KoroDataPers <- KoronaPreprosesser(RegData = KoroDataRaa)
#IntData <- intensivberedskap::BeredskIntensivData() #NIRberedskDataSQL()
BeredskRaa <- intensivberedskap::NIRberedskDataSQL()
datoFra <- min(as.Date(BeredskRaa$FormDate))
IntDataRaa <- intensiv::NIRRegDataSQL(datoFra = datoFra, datoTil = datoTil) #Kun ferdigstilte intensivdata på Rapporteket
#Felles variabler som skal hentes fra intensiv (= fjernes fra beredskap)
varFellesInt <- c('DateAdmittedIntensive', 'DateDischargedIntensive', 'DaysAdmittedIntensiv',
'DeadPatientDuring24Hours', 'MechanicalRespirator', 'RHF', 'TransferredStatus',
'VasoactiveInfusion', 'MoreThan24Hours', 'Morsdato',
'MovedPatientToAnotherIntensivDuring24Hours', 'PatientAge', 'PatientGender',
'UnitId') # PatientInRegistryGuid', 'FormStatus', 'ShNavn',
BeredRaa <- BeredskRaa[ ,-which(names(BeredskRaa) %in% varFellesInt)]
BeredIntRaa <- merge(BeredRaa, IntDataRaa, suffixes = c('','Int'),
by.x = 'HovedskjemaGUID', by.y = 'SkjemaGUID', all.x = F, all.y=F)
IntDataPers <- intensivberedskap::NIRPreprosessBeredsk(RegData=BeredIntRaa, kobleInt = 1)
IntDataPers$Int <- 1
KoroIntKoblet <- merge(KoroDataPers, IntDataPers, suffixes = c('','Int'),
by = 'PersonId', all.x = T, all.y=F)
#Kobler på kapasitet
#RegData <- merge(KoroIntKoblet, Kapasitet, by = 'HFresh', all.x = T, all.y=F)
RegData <- KoroIntKoblet
RegData$HF <- as.factor(RegData$HF)
#Gjennomsnittlig liggetid på sykehus
LiggetidKoroHFgjsn <- round(tapply(RegData$Liggetid, INDEX = RegData$HF, FUN = function(x) {mean(x,na.rm=T)}),1)
indInt <- which(RegData$Int==1)
#Gjennomsnittlig liggetid på sykehus for intensivpasienter
LiggetidIntHFgjsn <- round(tapply(RegData$LiggetidInt[indInt], INDEX = RegData$HF[indInt],
FUN = function(x) {mean(x,na.rm=T)}),1)
#Gjennomsnittlig liggetid på intensiv
LiggetidKoroHFgjsnIntpas <- round(tapply(RegData$Liggetid[indInt], INDEX = RegData$HF[indInt],
mean, na.rm=T), 1)
#Total liggetid
LiggetidKoroHFtot <- round(tapply(RegData$Liggetid, INDEX = RegData$HF, sum, na.rm=T),1)
LiggetidKoroHFmndTot <- round(tapply(RegData$Liggetid, INDEX = list(RegData$HF, RegData$MndNum), sum, na.rm=T),1)
write.table(LiggetidKoroHFtot, file = 'LiggetidKoroHFmndTot.csv', sep=';')
LiggetidIntHFtot <- round(tapply(RegData$LiggetidInt, INDEX = RegData$HF, sum, na.rm=T), 1)
LiggetidIntHFmndTot <- round(tapply(RegData$LiggetidInt, INDEX = list(RegData$HF, RegData$MndNum), sum, na.rm=T), 1)
write.table(LiggetidIntHFtot, file = 'LiggetidIntHFmndTot.csv', sep=';')
#Sjekk: RegData <- KoronaPreprosesser(KoronaDataSQL(datoTil = '2020-12-31'))
KapasitetHF <- tapply(RegData$Dognplasser.2018, INDEX = RegData$HF, median)
antDager <- as.numeric(as.Date(datoTil) - as.Date(datoFra))+1
BeleggHF <- round(100*LiggetidKoroHFtot/(KapasitetHF*antDager),1)
Tab <- cbind('Antall pas.' = table(RegData$HF),
'Antall, intensiv' = table(RegData$HF[indInt]),
'Liggetid, alle' = LiggetidKoroHFgjsn,
'Liggetid, int.pas.' = LiggetidKoroHFgjsnIntpas,
'Liggetid på intensiv' = LiggetidIntHFgjsn
# ,'Belegg, prosent' = BeleggHF,
# 'Kapasitet/dag' = KapasitetHF
)
#write.table(Tab, file = 'CovBelastning.csv', fileEncoding = 'ASCII', sep=';')
write.table(Tab, file = 'CovLiggetider.csv', sep=';') #fileEncoding = 'ASCII',
#----Belegg per måned
LiggetidKoroHFmnd <- round(tapply(RegData$Liggetid, INDEX = RegData[ ,c('HF', 'MndNum')], sum, na.rm=T))
KapasitetHF <- tapply(RegData$Dognplasser.2018, INDEX = RegData$HF, median)
antDager <- as.numeric(as.Date(datoTil) - as.Date(datoFra))+1
BeleggHF <- round(100*LiggetidKoroHFtot/(KapasitetHF*antDager),1)
#--Se på antall inneliggende per dag. Benytter rådata, dvs. ikke-personaggregerte data.
#Lag datasett som inneholder liggetid per måned per HF
#Tabell, tot.liggetid på sykehus pr.mnd og HF, tilsv liggetid på intensiv
RegData <- KoroDataRaa[ ,c("FormDate", 'FormDateUt', "UnitId", 'PersonId')]
RegData$InnDato <- as.Date(RegData$FormDate)
RegData$UtDato <- as.Date(RegData$FormDateUt)
#RegData$MndNum <- as.numeric(format(RegData$InnDato, '%m'))
#RegData$MndAar <- format(RegData$InnDato, '%b%y')
RegData <- RegData[,-which((names(RegData) %in% c("FormDate", 'FormDateUt')))]
inneliggendeSum <- function(x) { #x-dato, summerer antall inneliggende for hver dato
sum((x > RegData$InnDato & (x <= RegData$UtDato) | is.na( RegData$UtDato)))}
inneliggende <- function(x) { #Om en pasient/skjema er inneliggende på gitt dato, TRUE/FALSAE
(x > RegData$InnDato & (x <= RegData$UtDato) | is.na( RegData$UtDato))}
RegData$InnDato[is.na( RegData$UtDato)]
# inneligendeMatr <- as.data.frame(purrr::map_df(datoer, inneliggende))
# RegDataAlleDatoer <- dplyr::bind_cols(RegData, inneligendeMatr)
#FEIL:
AntInneliggendeGr <- function(dato) { #Antall inneliggende for gitt dato, gruppert på variabel "gr"
#GrNavn <- levels(RegData[,gr])
inne <- (dato > RegData$InnDato & (dato <= RegData$UtDato) | is.na( RegData$UtDato))
data <- tapply(RegData[inne,'PersonId'], INDEX = RegData[inne, 'HF'], FUN= function(x){length(unique(x))})
return(data)
#data$Grupper <- GrNavn
}
sum(AntInneliggendeGr('2020-07-03'), na.rm = T)
# datoer <- seq(as.Date('2020-03-01'), as.Date('2020-09-30'), by="day")
# RegData <- KoroDataPers
beregnBelegg <- function(datoer){
names(datoer) <- format(datoer, '%d.%B')
#data <- as.data.frame(purrr::map_df(datoer, inneliggende))
data <- erInneliggende(datoer = datoer, regdata = RegData)
#RegData <- dplyr::bind_cols(RegData, data)
antDager <- length(datoer)
antPrDagPers <- colSums(data)
belegg <- 100*rowSums(data) / (antDager*RegData$Dognplasser.2018)
tot <- 100*sum(colSums(data)) / (antDager*sum(Kapasitet$Dognplasser.2018))
return(utData = list(belegg=belegg, tot=tot))
}
datoerMars <- seq(as.Date('2020-03-01'), as.Date('2020-03-31'), by="day")
RegData$mar <- beregnBelegg(datoerMars)$belegg
datoerApril <- seq(as.Date('2020-04-01'), as.Date('2020-04-30'), by="day")
RegData$apr <- beregnBelegg(datoerApril)$belegg
datoerMai <- seq(as.Date('2020-05-01'), as.Date('2020-05-31'), by="day")
RegData$mai <- beregnBelegg(datoerMai)$belegg
datoerJun <- seq(as.Date('2020-06-01'), as.Date('2020-06-30'), by="day")
RegData$jun <- beregnBelegg(datoerJun)$belegg
datoerJuli <- seq(as.Date('2020-07-01'), as.Date('2020-07-31'), by="day")
RegData$jul <- beregnBelegg(datoerJuli)$belegg
datoerAug <- seq(as.Date('2020-08-01'), as.Date('2020-08-31'), by="day")
RegData$aug <- beregnBelegg(datoerAug)$belegg
datoerSept <- seq(as.Date('2020-09-01'), as.Date('2020-09-30'), by="day")
RegData$sep <- beregnBelegg(datoerSept)$belegg
mnd <- c('mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep')
BeleggLandet <- c(beregnBelegg(datoerMars)$tot,
beregnBelegg(datoerApril)$tot,
beregnBelegg(datoerMai)$tot,
beregnBelegg(datoerJun)$tot,
beregnBelegg(datoerJuli)$tot,
beregnBelegg(datoerAug)$tot,
beregnBelegg(datoerSept)$tot)
names(BeleggLandet) <- mnd
#NB: Endre til å telle unike personid'er.
LiggeDogn <-
RegData[,c('HF', mnd)] %>%
dplyr::group_by(HF) %>%
summarise_all(sum)
test <-
BeleggData <- rbind(as.matrix(LiggeDogn),
c('HeleLandet', BeleggLandet))
write.table(BeleggData, file = 'BeleggData.csv', row.names = F, fileEncoding = 'UTF-8', sep = ';')
#-------------Figur
#dplyr::add_row(LiggeDogn, c('Landet', BeleggLandet))
#LiggeDogn <- data.frame(LiggeDogn, c('Landet', BeleggLandet))
#LiggeDogn$Tot <- rowSums(as.data.frame(LiggeDogn[,mnd]))
#tapply(KoroDataPers$Liggetid, KoroDataPers$HF, sum, na.rm=T)
LiggeDognData <- as.data.frame(tidyr::gather(LiggeDogn, key = 'mnd', value='Belegg', mnd, factor_key=TRUE))
p <- ggplot(LiggeDognData, aes(mnd, Belegg))
p + geom_point() + facet_wrap(~ HF)
# pdf(file = plott.pdf, width=7, height=7*height/width, family=fonttype, #family='arial',
# pointsize=pointsizePDF)
#ggplot(LiggeDognData, aes(mnd, Belegg)) + geom_point() + facet_wrap(~ HF) +
# Use vars() to supply variables from the dataset:
p + facet_grid(rows = vars(drv))
df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),
y = rnorm(30))
ds <- do.call(rbind, lapply(split(df, df$gp),
function(d) {data.frame(mean = mean(d$y), sd = sd(d$y), gp = d$gp)}))
#ggplot(df, aes(gp, y)) +
geom_point(data = ds, aes(y = mean), colour = 'red', size = 3)
p <-
ggplot(mpg, aes(displ, cty)) + geom_point()
# Use vars() to supply variables from the dataset:
p + facet_grid(rows = vars(drv))
belegg_ssb$RHFresh <- ReshNivaa$RHFresh[match(belegg_ssb$HFresh, ReshNivaa$HFresh)]
belegg_rhf <- belegg_ssb %>% dplyr::group_by(RHFresh) %>% summarise("Dognplasser.2018" = sum(Dognplasser.2018))
belegg_rhf$RHF <- as.character(RegData$RHF)[match(belegg_rhf$RHFresh, RegData$RHFresh)]
#---NY RUNDE
#Tabell, tot.liggetid pr.mnd og HF, tilsv liggetid på intensiv.
datoTil <- '2020-12-31'
KoroDataRaa <- KoronaDataSQL(datoTil = datoTil, koble=1)
BeredskRaa <- intensivberedskap::NIRberedskDataSQL()
datoFra <- min(as.Date(BeredskRaa$FormDate))
IntDataRaa <- intensiv::NIRRegDataSQL(datoFra = datoFra, datoTil = datoTil) #Kun ferdigstilte intensivdata på Rapporteket
#Felles variabler som skal hentes fra intensiv (= fjernes fra beredskap)
varFellesInt <- c('DateAdmittedIntensive', 'DateDischargedIntensive', 'DaysAdmittedIntensiv',
'DeadPatientDuring24Hours', 'MechanicalRespirator', 'RHF', 'TransferredStatus',
'VasoactiveInfusion', 'MoreThan24Hours', 'Morsdato',
'MovedPatientToAnotherIntensivDuring24Hours', 'PatientAge', 'PatientGender',
'UnitId') # PatientInRegistryGuid', 'FormStatus', 'ShNavn',
BeredRaa <- BeredskRaa[ ,-which(names(BeredskRaa) %in% varFellesInt)]
BeredIntRaa <- merge(BeredRaa, IntDataRaa, suffixes = c('','Int'),
by.x = 'HovedskjemaGUID', by.y = 'SkjemaGUID', all.x = F, all.y=F)
IntDataPers <- intensivberedskap::NIRPreprosessBeredsk(RegData=BeredIntRaa, kobleInt = 1)
IntDataPers$Int <- 1
KoroIntKoblet <- merge(KoroDataPers, IntDataPers, suffixes = c('','Int'),
by = 'PersonId', all.x = T, all.y=F)
#FLYTTEDE REGISTRERINGER:
SkjemaGUIDInn <- c(
'150e9c2f-77b3-44f0-916d-77605d36fece','a7d7d201-8da8-44ae-96ce-b6d0540a0a60',
'3561a23e-566a-4bab-a632-364eed12cbdd','4e6c27bc-6063-4835-a457-f18a3f9c938e',
'0334823d-5bb7-4dcf-91a6-1fe610d56b33','6110fae8-fe06-4038-aea2-6bea9dfc7c12',
'52411918-ebaf-444b-bbb1-077dab6d7552','c39bf236-8c56-4581-813a-9f83b217c468',
'4a9559e6-deab-4143-a21c-8b7eab07b526','be852097-0c51-451b-951d-ced0decbaca4',
'e5752e24-daff-455a-9c10-8c6648afa685','49bc1fda-871d-4d61-b07d-478efc835b18',
'390d5325-63ae-4c98-9675-bd83e726708c','3aafd47a-98f1-4121-9b72-cedd26539357',
'44ad0657-1039-4f69-a491-21d47d2b603e','89d68e91-e19d-487b-b65f-29576bd30d7d',
'bd58f45d-2bdc-40b8-9cdf-ae4e50af119e','54a7cf9b-d4f0-43dc-be4a-15b5c2e99173',
'df2d4d27-96e9-4461-9ef9-f902d01e9ea2','6ccd3de7-7af6-41e6-aff0-8d4fedcb8047',
'e9bde1b0-692e-468d-ba0d-0e7eda32b2da','bc3dfd58-0db9-4376-a011-49e293d97a1a',
'8ecc2b2f-d2eb-46b5-81d3-6636195f4c3f','c3049634-05e7-453b-bd22-74ff364feb00',
'091def5c-0b3f-4a39-9d84-16c80563689b','510d11df-a3fe-4a3f-855c-1acb3fc0d99e',
'9cf2a0be-2541-45b1-8a83-4c50185aebab','99e1774a-6e91-440d-a56f-27904a4cb1c8',
'5ded1bb3-188d-48f0-8a57-07d8265f6b00','35c6b20e-db86-4140-992f-336b93d6e612',
'f8875228-2055-4f46-a0b6-1c14c30cc4c7','78093e0c-06c1-4692-90a0-1ecbe73045c2',
'2a0b0ad1-a5c3-4f2b-ad57-708d555dfd55','14ce5c38-829d-4549-85d6-a88615348130',
'1c337b67-42ac-4677-8a2b-861d09117cd1')
SkjemaGUIDUt <- c(
'6cb85138-ba28-4618-9183-0bd706b7e5c0', 'f8012564-1b18-4ade-97b1-313389a0ed0a',
'8f406c23-6fca-431e-9017-4ac0ad67dc5d', '0d31c410-ca03-4cfe-b9a5-ce5bfb3d9e20',
'ad96b388-dc88-476d-b3b0-628a3269e9f5', '23ed777d-d9f5-44a2-932b-a80754476df6',
'dac534ce-25d7-4bae-abbd-6f9b57980971', 'a2b67b9b-7bd0-4e3b-bfec-a9b5f386380c',
'c8b46001-045d-4057-8b35-50cab9618e77', '4b91acd8-474d-44a7-8737-124ef97c14c5',
'cdf0335c-e2f6-47af-bc61-a03e488ef811', 'ad75bea7-7230-463a-8c18-fe5752b5256e',
'085ffdf5-96d6-4652-a4d3-b4d66db03d42', '7b569753-a287-4236-ab2f-d9269775fc3e',
'1284ccce-06e0-4b2a-900b-284a6f31b6c5', '6a7b0bf0-4d1f-4a96-9194-cf10d5a304f4',
'd2dc5df1-d714-4356-b941-96208f7790ef', '0bb683ca-c975-45ae-905c-b34f5f89307f',
'14396ac9-4711-407d-90be-a9a30d44dec2', '86ef80af-d029-40db-8ac6-526a6ac9ca23',
'1168b0a9-4bf4-40e7-a780-3da602adee8c', '193702b0-52a7-43b2-8544-5554f4babe4e',
'759bd541-4da4-4bda-a543-abca9fbb6195', '0a661671-276e-4291-9877-903a5a2bfca7',
'b900cde7-c8fa-4005-a4cb-167cb37c1639', 'f0765a25-b09a-420b-afc1-e3161e234831',
'bc8c5e82-76ed-40a0-ba3c-32028673afcf', 'd868857f-0350-4202-89cc-f7924deba976'
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.