## Type diabetes
diaTabell <- function(x){
## Demografisk variabler
demoVar <- c("PasientID", "Pnr", "hospital", "hospID", "hosKort", "alder", "Kjonn", "diagVar", "diagAlder")
## diabetes variabler
diabetesVar = c("diabetes_Type1", "diabetes_Type2", "diabetes_Mody", "diabetes_Kir62", "diabetes_SekDiabetes", "diabetes_AnnenDiabetes", "diabetes_UkjentDiabetes")
## lage subset
diabDT <- x[, c(demoVar, diabetesVar), with = F]
## --- Pasienter uten diagnoser ----
diabDTx <- copy(diabDT)
diabDTx[, (diabetesVar) := lapply(.SD, function(x) ifelse(x == "Ja", 1, 0)), .SDcols = diabetesVar]
diabDTx[, diaSum := sum(.SD, na.rm = TRUE), .SDcols = diabetesVar, by = Pnr]
## diabDTx[diaSum == 0, .(Pnr, hosKort)]
## Lage en long dataset
diabLg <- melt(data = diabDT,
id.vars = demoVar,
measure.vars = diabetesVar,
variable.name = "diabType",
value.name = "janei")
## Omkode diabetes type til tall fra 1 til 7
diabLg[.(janei = "Ja", diabType = diabetesVar, to = 1:7), on = c("janei", "diabType"), dbt := i.to]
## Beholder bare de som svarte Ja
diabJa <- diabLg[janei == "Ja", ]
## rekode annen type diabetes
## 1 = DT1, 2 = DT2, 3 = Mody, 4 = Annen type
diabJa[, dbtype := dbt][dbt > 3, dbtype := 4]
## Tabell
## -------
## Tabell mal
tabMal <- data.table(dbtype = rep(1:4, each = 2), Kjonn = rep(c("Gutt", "Jente"), 2))
## tabell diabetes
tabDiaHosp <- diabJa[, .N, by=.(dbtype, Kjonn)]
## sjekk hvis det er 0 i antall pasient ved å sammenlikne sykehus tabell mot tabell malen
diaUt <- tabDiaHosp[, .(dbtype, Kjonn)]
# tabell for rad som er forskjellige fra tabell malen
# tabDiff <- sqldf::sqldf('SELECT * FROM tabMal EXCEPT SELECT * FROM diaUt')
tabDiff <- data.table::fsetdiff(tabMal, diaUt)
radN <- dim(tabDiff)[1]
# Final tabell
if (radN > 0) {
tabDiff[, N := 0]
tabDia <- rbindlist(list(tabDiaHosp, tabDiff))
} else {
tabDia = tabDiaHosp
}
## Snu til wide
tabWd <- dcast(tabDia, Kjonn ~ dbtype, value.var = "N")
## Legger Totalen
tabTot <- tabWd[, lapply(.SD, function(x) sum(x, na.rm = T)), .SDcols = names(tabWd)[-1]]
tabTot[, Kjonn := "Totalt"]
## legge alle i en tabell
diab.tab <- rbindlist(list(tabWd, tabTot), use.names = TRUE)
diab.tab[.(Kjonn = c("Gutt", "Jente"), to = c("Gutter", "Jenter")), on = "Kjonn", Kjonn := i.to]
## legge kolonnavn til tabellen
tabNavn <-c(" ", "T1D", "T2D", "MODY", "Annen")
setnames(diab.tab, names(diab.tab), tabNavn)
## Antall pasienter
diab.n <- dim(diabJa)[1]
utData <- list(diab.tab = diab.tab, diab.n = diab.n)
return(invisible(utData))
}
## Lokal sykehus
utLocal <- diaTabell(lokal2018)
diab.lokal <- utLocal[["diab.tab"]][]
antall.lokal <- utLocal[["diab.n"]]
## Legger Nasjonale tall
utNasj <- diaTabell(ars2018)
diab.nasj <- utNasj[["diab.tab"]][]
antall.nasj <- utNasj[["diab.n"]]
#
# knitr::kable(
# list(
# diab.lokal,
# diab.nasj
# ),
# caption = 'Diabetes Type',
# booktabs = TRUE
# )