#Resultattjeneste for NGER
library(nger)
idag <- Sys.Date()
startDato <- paste0(as.numeric(format(idag-100, "%Y")), '-01-01') #'2019-01-01' #Sys.Date()-364
# gjør Rapportekets www-felleskomponenter tilgjengelig for applikasjonen
addResourcePath('rap', system.file('www', package='rapbase'))
context <- Sys.getenv("R_RAP_INSTANCE") #Blir tom hvis jobber lokalt
paaServer <- (context %in% c("DEV", "TEST", "QA", "PRODUCTION")) #rapbase::isRapContext()
regTitle = ifelse(paaServer,'NORSK GYNEKOLOGISK ENDOSKOPIREGISTER',
'NORSK GYNEKOLOGISK ENDOSKOPIREGISTER med FIKTIVE data')
#----------Hente data og evt. parametre som er statiske i appen----------
if (paaServer) {
RegData <- NGERRegDataSQL() #datoFra = datoFra, datoTil = datoTil)
#stopifnot(dim(RegData)[1]>0)
errorCondition(dim(RegData)[1]==0, 'ingen data')
qSkjemaOversikt <- 'SELECT * FROM SkjemaOversikt'
SkjemaOversikt <- rapbase::loadRegData(registryName='nger',
query=qSkjemaOversikt, dbType='mysql')
}
tulledata <- 0
if (!exists('RegData')) {
#data("NGERtulledata.Rdata", package = "nger")
load('./data/NGERtulledata.Rdata')
tulledata <- 1 #Må få med denne i tulledatafila..
}
if (paaServer) {
RegData <- NGERPreprosess(RegData)
SkjemaOversikt <- NGERPreprosess(RegData = SkjemaOversikt)
}
#-----Definere utvalgsinnhold
#Definere utvalgsinnhold
sykehusNavn <- sort(unique(RegData$ShNavn), index.return=T)
sykehusValgUts <- unique(RegData$ReshId)[sykehusNavn$ix]
names(sykehusValgUts) <- sykehusNavn$x #c('Alle',sykehusNavn$x)
sykehusValg <- c(0,sykehusValgUts)
names(sykehusValg) <- c('Ikke valgt',sykehusNavn$x)
enhetsUtvalg <- c("Egen mot resten av landet"=1,
"Hele landet"=0,
"Egen enhet"=2)
diag <- 0:8
names(diag) <- c('Alle', 'Godartede ovarialcyster', 'Endometriose, livmorvegg', 'Endo u livmorvegg',
'Onkologi', 'Generell gynekologi', 'Gravide', 'Komplikasjoner', 'Infertilitet')
opMetode <- c('Alle'=0,
'Laparoskopi'=1,
'Hysteroskopi'=2,
#'Begge'=3,
'Tot. lap. hysterektomi (LCD01/LCD04)'=4,
'Lap. subtotal hysterektomi (LCC11)'=5,
'Lap. ass. vag. hysterektomi (LCD11)'=6,
'Alle hysterektomier' = 9,
'Robotassisert inngrep' = 7,
'Kolpopeksiene' = 8)
alvorKompl <- c(#"Alle"=0,
"Lite alvorlig"=1,
"Middels alvorlig"=2,
"Alvorlig"=3,
"Dødelig"=4)
hastegrad <- c('Alle'=0,
'Elektiv'=1,
'Akutt'=2,
'Ø-hjelp'=3)
dagkir <- c('Alle'=9,
'Dagkirurgi'=1,
'Ikke dagkirurgi'=0)
tidsenheter <- rev(c('År'= 'Aar', 'Halvår' = 'Halvaar',
'Kvartal'='Kvartal', 'Måned'='Mnd'))
ui <- navbarPage( #fluidPage( #"Hoved"Layout for alt som vises på skjermen
id = 'hovedark',
# lag logo og tittel som en del av navbar
#title = div(img(src="rap/logo.svg", alt="Rapporteket", height="26px"), regTitle),
title = div(a(includeHTML(system.file('www/logo.svg', package='rapbase'))),
regTitle),
# sett inn tittel også i browser-vindu
windowTitle = regTitle,
theme = "rap/bootstrap.css",
#------------Startside--------------------------
tabPanel("Startside",
shinyjs::useShinyjs(),
#fluidRow(
#column(width=5,
br(),
tags$head(tags$style(".butt{background-color:#6baed6;} .butt{color: white;}")), # background color and font color
h2('Velkommen til Rapporteket - Norsk Gynekologisk Endoskopiregister!', align='center'),
br(),
sidebarPanel(width = 3,
h3("Månedsrapport"), #),
h5('(Nedlastbart dokument med samling av resultater)'),
downloadButton(outputId = 'mndRapp.pdf', label='Last ned MÅNEDSRAPPORT', class = "butt"),
br(),
br(),
helpText('Det tar noen sekunder å generere en månedsrapport.
I mellomtida får du ikke sett på andre resultater'),
helpText(tags$b('Ønsker du månedsrapporten tilsendt regelmessig på e-post,
kan du bestille dette under fanen "Abonnement."'))
),
mainPanel(width = 8,
tags$head(tags$link(rel="shortcut icon", href="rap/favicon.ico")),
rapbase::appNavbarUserWidget(user = uiOutput("appUserName"),
organization = uiOutput("appOrgName")
, addUserInfo = TRUE
),
h4('Du er nå inne på Rapporteket for NGER. Rapporteket er registerets resultattjeneste.
Disse sidene inneholder en samling av figurer og tabeller som viser resultater fra registeret.
På hver av sidene kan man gjøre utvalg i menyene til venstre. Alle resultater er basert
på ferdigstilte registreringer. Merk at data er hentet direkte fra registerets database.
Dette medfører at nyere data ikke er kvalitetssikret ennå.'),
h4('Du kan se på resultater for eget sykehus, nasjonale tall og eget sykehus sett opp
mot landet for øvrig. Resultatene som vises er
basert på operasjonsdato. Alle figurer og
tabeller kan lastes ned.'),
br(),
h4(tags$b(tags$u('Innhold i de ulike fanene:'))),
h4('I feltet til venstre på hver side kan man velge hvilken variabel man ønsker å se
resultater for. Der kan man også gjøre ulike filtreringer/utvalg av data.'),
h4(tags$b('Registreringsoversikter '), 'viser aktivitet i registeret.'),
h4(tags$b('Kvalitetsindikatorer '), 'viser på fordelinger (figur/tabell) av ulike variable.'),
h4(tags$b('Fordelinger '), 'viser på fordelinger (figur/tabell) av ulike variable.'),
h4(tags$b('Andeler: per sykehus og over tid'), ' viser andeler(prosent) en per sykehus og utvikling over tid.
Man kan velge hvilken tidsskala man vi se på.'),
h4(tags$b('Gjennomsnitt: per sykehus og over tid'), ' viser gjennomsnittsverdier per sykehus og utvikling over tid.
Man kan velge om man vil se gjennomsnitt eller median.'),
h4('Gi gjerne innspill og tilbakemeldinger til registerledelsen vedrørende organisering
av og innhold på Rapporteket-NGER.'),
br(),
br(),
h4('Antall registreringer ved eget sykehus siste år:'),
plotOutput('antRegMnd', height="auto"),
# uiOutput("tabEgneReg"),
# br(),
# h4('Antall registreringer ved eget sykehus forrige år:'),
# uiOutput("tabEgneRegForrige"),
br(),
h4('Oversikt over registerets kvalitetsindikatorer og resultater med offentlig tilgjengelige tall
finner du på www.kvalitetsregistre.no:', #helpText
a("NGER", href="https://www.kvalitetsregistre.no/registers/547/resultater"),
target="_blank", align='center'),
br()
)
), #tab
#-----Registreringsoversikter------------
tabPanel("Registreringsoversikter",
sidebarPanel(width=3,
h3('Utvalg'),
conditionalPanel(condition = "input.ark == 'Antall operasjoner'",
dateInput(inputId = 'sluttDatoReg', label = 'Velg sluttdato', language="nb",
value = Sys.Date(), max = Sys.Date() ),
selectInput(inputId = "tidsenhetReg", label="Velg tidsenhet",
choices = rev(c('År'= 'Aar', 'Måned'='Mnd'))),
selectInput(inputId = 'velgDiagReg', label='Diagnose',
choices = diag
),
selectInput(inputId = 'opMetodeReg', label='Operasjonstype',
choices = opMetode
)
),
conditionalPanel(condition = "input.ark == 'Antall registrerte skjema' || input.ark == 'Last ned egne data' ",
dateRangeInput(inputId = 'datovalgReg', start = startDato, end = Sys.Date(),
label = "Tidsperiode", separator="t.o.m.", language="nb")
),
conditionalPanel(condition = "input.ark == 'Last ned egne data' ",
selectInput(inputId = 'velgReshReg', label='Velg sykehus',
selected = 0,
choices = sykehusValg),
selectInput(inputId = 'opMetodeRegDump', label='Operasjonstype (kun datadump)',
choices = opMetode
),
selectInput(inputId = 'diagnoseRegDump', label='Diagnose (kun datadump)',
choices = diag
),
selectInput(inputId = 'alvorlighetKomplDump',
label='Alvorlighetsgrad, postoperative komplikasjoner',
multiple = T, #selected=0,
choices = alvorKompl
),
checkboxInput(inputId = 'IntraKomplDump',
label = 'Intraoperativ komplikasjon?',
value = FALSE)
)
),
mainPanel(
tabsetPanel(id='ark',
tabPanel('Antall operasjoner',
h2("Antall opphold per avdeling"),
uiOutput("undertittelReg"),
p("Velg tidsperiode for operasjon ved å velge sluttdato/tidsenhet i menyen til venstre"),
br(),
fluidRow(
tableOutput("tabAntOpphSh")
,downloadButton(outputId = 'lastNed_tabAntOpph', label='Last ned')
)
),
tabPanel('Antall registrerte skjema',
h4("Tabellen viser antall registrerte skjema for valgt tidsperiode"),
p("Velg tidsperiode for operasjon i menyen til venstre"),
br(),
fluidRow(
tableOutput("tabAntSkjema")
,downloadButton(outputId = 'lastNed_tabAntSkjema', label='Last ned')
)
),
tabPanel('Last ned egne data',
h4("Gjør utvalg og last ned egne data"),
p("Velg tidsperiode og evt. operasjonsmetode i menyen til venstre"),
br(),
#fluidRow(
downloadButton(outputId = 'lastNed_dataTilRegKtr', label='Last ned fødselsdato og operasjonsdato'),
br(),
br(),
downloadButton(outputId = 'lastNed_dataDump', label='Last ned datadump')
#)
)
)
)
), #tab Registreringsoversikter
#-----Kvalitetsindikatorer------------
tabPanel(p("Kvalitetsindikatorer", title = 'Prosessindikatorer, RAND36, TSS2'),
h3('Registerets kvalitetsindikatorer', align='center'),
sidebarPanel(width=3,
h3('Utvalg'),
#Bare fig og tab
conditionalPanel(condition = "input.kvalIndark == 'Figur' || input.kvalIndark == 'Tabell' ",
selectInput(
inputId = "valgtVarKval", label="Velg variabel",
choices = c('Prosessindikatorer' = 'kvalInd',
'TSS2, oppfølging' = 'TSS0',
'RAND36, v/operasjon' = 'RAND0',
'RAND36, ett år etter' = 'RAND1',
'RAND36, tre år etter' = 'RAND3')
),
selectInput(inputId = 'enhetsUtvalgKval',
label='Egen enhet og/eller landet',
choices = enhetsUtvalg)
),
#Bare RAND, alle dimensjoner
conditionalPanel(condition = "input.kvalIndark == 'RAND, alle dimensjoner'",
selectInput(inputId = 'enhetsUtvalgKvalRAND',
label='Egen enhet / hele landet',
choices = c("Hele landet"=0, "Egen enhet"=2))
),
conditionalPanel(condition = "input.kvalIndark == 'Figur' || input.kvalIndark == 'Tabell' ||
input.kvalIndark == 'RAND, alle dimensjoner' ",
selectInput(inputId = 'velgReshKval', label='Velg eget Sykehus',
choices = sykehusValg)
),
#Bare RAND013
conditionalPanel(condition = "input.kvalIndark == 'RAND, alle år'",
selectInput(
inputId = "valgtVarRAND013", label="Velg variabel",
choices = c('Fysisk funksjon' = 'ScorePhys',
'Fysisk rollebegrensning' = 'ScoreRoleLmtPhy',
'Følelsesmessig rollebegrensning' = 'ScoreRoleLmtEmo',
'Energinivå/vitalitet' = 'ScoreEnergy',
'Mental helse' = 'ScoreEmo',
'Sosial funksjon' = 'ScoreSosial',
'Smerte' = 'ScorePain',
'Generell helsetilstand' = 'ScoreGeneral'))
),
dateRangeInput(inputId = 'datovalgKval', start = startDato, end = Sys.Date(),
label = "Tidsperiode", separator="t.o.m.", language="nb"
),
sliderInput(inputId="alderKval", label = "Alder", min = 0,
max = 110, value = c(0, 110)),
selectInput(inputId = 'opMetodeKval', label='Operasjonstype',
choices = opMetode
),
selectInput(inputId = 'velgDiagKval', label='Diagnose',
choices = diag
),
selectInput(inputId = 'hastegradKval', label='Hastegrad',
choices = hastegrad
),
selectInput(inputId = 'dagkirKval', label='Dagkirurgi',
choices = dagkir
),
selectInput(inputId = 'alvorlighetKomplKval',
label='Alvorlighetsgrad, postoperative komplikasjoner',
multiple = T, #selected=0,
choices = alvorKompl
),
selectInput(inputId = "bildeformatKval",
label = "Velg format for nedlasting av figur",
choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')
)
),
mainPanel(
tabsetPanel(id = 'kvalIndark',
tabPanel('Figur',
br(),
plotOutput('kvalInd', height="auto"),
downloadButton('LastNedFigKval', label='Velg format og last ned figur')
),
tabPanel('Tabell',
uiOutput("tittelKvalInd"),
br(),
tableOutput('kvalIndTab'),
downloadButton(outputId = 'lastNed_tabKvalInd', label='Last ned')
),
tabPanel('RAND, alle år',
br(),
plotOutput('kvalRAND013', height="auto"),
downloadButton(outputId = 'LastNedFigRAND013', label='Last ned')
),
tabPanel('RAND, alle dimensjoner',
br(),
plotOutput('kvalRANDdim', height="auto"),
downloadButton(outputId = 'LastNedFigRANDdim', label='Last ned')
)
))
), #tab Kvalitetsindikatorer
#--------------Tabelloversikter-------------
tabPanel(p("Tabelloversikter", title = 'Instrumentbruk, komplikasjoner'),
h3('Tabelloversikter', align='center'),
sidebarPanel(width=3,
h3('Utvalg'),
dateRangeInput(inputId = 'datovalgTab', start = startDato, end = Sys.Date(),
label = "Tidsperiode", separator="t.o.m.", language="nb"),
conditionalPanel(
condition = "input.tab == 'Pasientegenskaper'" ,
selectInput(inputId = "tidsenhetTab", label="Velg tidsenhet",
choices = tidsenheter))
),
mainPanel(
tabsetPanel(id='tab',
tabPanel('Instrumentbruk, Lap',
br(),
h4('Tabellen viser antall ganger i den valgte tidsperioden ulike instrumenter er benyttet ved laparoskopi. '),
br(),
tableOutput('tabInstrBruk'),
downloadButton(outputId = 'lastNed_tabInstrBruk', label='Last ned tabell')
),
tabPanel('Komplikasjoner, Lap.',
br(),
uiOutput("tittelLapKompl"),
br(),
tableOutput('LapKompl'),
downloadButton(outputId = 'lastNed_tabLapKompl', label='Last ned tabell')
)
))
), #Tab tabelloversikter
#--------Fordelinger-----------
tabPanel(p("Fordelinger", title= 'Alder, anestesi, ASA, BMI, diagnoser, komplikasjoner, prosessvariable, prosedyrer,
RAND36, TSS2, utdanning'),
#-----
sidebarPanel(width = 3,
h3('Utvalg'),
br(),
br(),
selectInput(
inputId = "valgtVar", label="Velg variabel",
choices = c('Alder' = 'Alder',
'Anestesitype' = 'OpAnestesi', #endret nov23
'Alvorlighetsgrad, postop. kompl.' = 'Opf0AlvorlighetsGrad',
'ASA-grad' = 'OpASA',
'BMI-kategori' = 'OpBMI',
'Behandlingsnivå' = 'OpBehNivaa',
'Diagnoser, hyppigste' = 'Diagnoser',
'Diagnosegrupper, hyppigste' = 'DiagnoseGr',
'Hastegrad av operasjon' = 'OpKategori',
'Hjelpeinnstikk, antall' = 'LapNumHjelpeinnstikk',
'Hysteroskopi: Gjennomføringsgrad' = 'HysGjforingsGrad',
'Hysteroskopi: Intraop. komplikasjoner' = 'HysKomplikasjoner',
'Hysteroskopi: Årsak til ufullstendig' = 'HysUfullAarsak',
'Hysteroskopi: Medvirkende årsak til komplikasjon' = 'HysSkadeaarsakIntra',
'Hysteroskopi: Tiltak ved komplikasjon' = 'HysKomplTiltak',
'Infeksjoner, type' = 'Opf0KomplInfeksjon',
'Infeksjoner, type (alvorlig/middels)' = 'Opf0KomplAlvorInfeksjon',
'Komplikasjoner, postoperativt' = 'KomplPostopType',
'Komplikasjoner, postop. alvorlig/middels' = 'KomplAlvorPostopType',
'Laparaskopisk utstyr benyttet' = 'LapEkstrautstyr',
'Laparaskopiske intraop. komplikasjoner' = 'LapKomplIntra',
'Laparaskopisk skadeårsak' = 'LapSkadeIntra',
'Laparoskopi: Medvirkende årsak til komplikasjon' = 'LapSkadeaarsakIntra',
'Laparaskopisk etablering av pneumoperitoneum' = 'LapTeknikk',
'Norskkunnskaper' = 'Norsktalende',
'Oppfølgingsmetode' = 'Opf0metode',
'Operasjon i legens vakttid' = 'OpIVaktTid',
'Operasjonsmetode' = 'OpMetode',
'Operasjonstid (minutter)' = 'OpTid',
'Primæroperasjon eller reoperasjon' = 'OpType',
'Prosedyrer, hyppigste' = 'Prosedyrer',
'Prosegrupper, hyppigste' = 'ProsedyreGr',
'Prosedyrer, viktigste laparaskopi' = 'ProsViktigLap',
'Prosedyrer, viktigste hysteroskopi' = 'ProsViktigHys',
'Postoperative komplikasjoner vs. utdanning' = 'KomplPostUtd',
'RAND36 Fysisk funksjon' = 'R0ScorePhys',
'RAND36 Begrenses av fysisk helse' = 'R0ScoreRoleLmtPhy',
'RAND36 Følelsesmessig rollebegrensning' = 'R0ScoreRoleLmtEmo',
'RAND36 Energinivå/vitalitet' = 'R0ScoreEnergy',
'RAND36 Mental helse' = 'R0ScoreEmo',
'RAND36 Sosial funksjon' = 'R0ScoreSosial',
'RAND36 Smerte' = 'R0ScorePain',
'RAND36 Generell helsetilstand' = 'R0ScoreGeneral',
'Registreringsforsinkelse' = 'RegForsinkelse',
'Reoperasjoner som følge av komplikasjon vs. utdanning' = 'KomplReopUtd',
'Sivilstatus' = 'SivilStatus',
'Tidligere vaginale inngrep' = 'OpTidlVagInngrep',
'Tidligere laparoskopi' = 'OpTidlLapsko',
'Tidligere laparatomi' = 'OpTidlLaparotomi',
'TSS2, sp.1 Mottak på avdelinga' = 'Tss2Mott',
'TSS2, sp.2 Behandlingsopplegg' = 'Tss2Behandling',
'TSS2, sp.3 Lyttet behandleren' = 'Tss2Lytte',
'TSS2, sp.4 Tillit til behandleren' = 'Tss2Behandlere',
'TSS2, sp.5 Enighet om målsetning' = 'Tss2Enighet',
'TSS2, sp.6 Generell oppfatning av avdelinga' = 'Tss2Generelt',
'Utdanning' = 'Utdanning'
), selected = c('Registreringsforsinkelse' = 'RegForsinkelse'),
),
dateRangeInput(inputId = 'datovalg', start = startDato, end = Sys.Date(),
label = "Tidsperiode", separator="t.o.m.", language="nb"),
sliderInput(inputId="alder", label = "Alder", min = 0,
max = 110, value = c(0, 110)
),
selectInput(inputId = 'enhetsUtvalg', label='Egen enhet og/eller landet',
choices = enhetsUtvalg
),
selectInput(inputId = 'opMetode', label='Operasjonstype',
choices = opMetode
),
selectInput(inputId = 'velgDiag', label='Diagnose',
choices = diag
),
selectInput(inputId = 'hastegrad', label='Hastegrad',
choices = hastegrad
),
selectInput(inputId = 'alvorlighetKompl',
label='Alvorlighetsgrad, postoperative komplikasjoner',
multiple = T, #selected=0,
choices = alvorKompl
),
selectInput(inputId = 'velgResh', label='Velg eget Sykehus',
choices = sykehusValg),
selectInput(inputId = "bildeformatFord",
label = "Velg format for nedlasting av figur",
choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')
)),
#--------
mainPanel(
tabsetPanel(
tabPanel(
'Figur',
br(),
em('(Høyreklikk på figuren for å laste den ned)'),
br(),
br(),
plotOutput('fordelinger', height="auto"),
downloadButton('LastNedFigFord', label='Velg format og last ned figur')
),
tabPanel(
'Tabell',
uiOutput("tittelFord"),
br(),
tableOutput('fordelingTab'),
downloadButton(outputId = 'lastNed_tabFord', label='Last ned')
)
))
), #tab Fordelinger
#----------Andeler-----------------------------
tabPanel(p("Andeler: per sykehus og tid", title='Alder, antibiotika, ASA, fedme, gjennomføringsgrad, komplikasjoner,
konvertering, oppfølging, registreringsforsinkelse, komplikasjoner, TSS2, utdanning'),
h2("Sykehusvise andeler og utvikling over tid for valgt variabel", align='center'),
h5("Hvilken variabel man ønsker å se resultater for, velges fra rullegardinmenyen
til venstre. Man kan også gjøre ulike filtreringer.", align='center'),
br(),
sidebarPanel(
width=3,
h3('Utvalg'),
selectInput(
inputId = "valgtVarAndel", label="Velg variabel",
choices = c('Kval.ind: Komplikasjoner under operasjon' = 'KomplIntra',
'Kval.ind: Postop. komplikasjon: moderate/alvorlige (grad 2-4)' = 'KomplPostopAlvor',
'Kval.ind: TSS2: Positiv oppfatning om gyn. avd.' = 'Tss2Generelt',
'Alder over 70 år' = 'Alder',
'Antibiotika' = 'OpAntibProfylakse',
'ASA-grad > II' = 'OpASA',
# 'Blodfortynnende' = 'Blodfortynnende', fjernet nov23
'Behandlingsnivå' = 'OpBehNivaa',
'Fedme (BMI>30)' = 'OpBMI',
'Konvertert til laparotomi' = 'LapKonvertert',
'Konvertert til laparotomi, ikke forventet' = 'LapKonvertertUventet',
# 'Lokalbedøvelse' = 'OpAnestesi', fjernet nov23
'Operasjonstid (minutter)' = 'OpTid',
'Pasienter med høyere utdanning' = 'Utdanning',
'Postop. komplikasjon: Alle' = 'KomplPostop',
'Postop. komplikasjon: Alvorlig og middels' = 'KomplPostopAlvor',
'Postop. komplikasjon: Blødning' = 'Opf0KomplBlodning',
'Postop. komplikasjon: Infeksjon' = 'Opf0KomplInfeksjon',
'Postop. komplikasjon: Infeksjon, alvorlig/middels' = 'Opf0KomplAlvorInfeksjon',
'Postop. komplikasjon: Organskade' = 'Opf0KomplOrgan',
'Postop. komplikasjon: Reoperasjon' = 'Opf0Reoperasjon',
'Postop. komplikasjon: lav alvorlighet (grad 1)' = 'Opf0AlvorlighetsGrad1',
'Postoperativ oppfølging' = 'Opf0Status',
'Registreringsforsinkelse' = 'RegForsinkelse',
'TSS2: Møtet med gyn. avd. var svært godt' = 'Tss2Mott',
'TSS2: Behandlingsopplegg/-innhold passet svært bra' = 'Tss2Behandling',
'TSS2: Behandlerne lyttet- og forsto i svært stor grad' = 'Tss2Lytte',
'TSS2: Pasienten hadde svært stor tillit til sine behandlere' = 'Tss2Behandlere',
'TSS2: Pasient og behandlere svært enige om målsetn. for behandlinga' = 'Tss2Enighet'
)
),
dateRangeInput(inputId = 'datovalgAndel', start = startDato, end = idag,
label = "Tidsperiode", separator="t.o.m.", language="nb"),
sliderInput(inputId="alderAndel", label = "Alder", min = 0,
max = 110, value = c(0, 110)),
selectInput(inputId = 'opMetodeAndel', label='Operasjonstype',
choices = opMetode
),
selectInput(inputId = 'velgDiagAndel', label='Diagnose',
choices = diag
),
selectInput(inputId = 'hastegradAndel', label='Hastegrad',
choices = hastegrad
),
selectInput(inputId = 'alvorlighetKomplAndel',
label='Alvorlighetsgrad, postoperative komplikasjoner',
multiple = T, #selected=0,
choices = alvorKompl
),
selectInput(inputId = "bildeformatAndel",
label = "Velg format for nedlasting av figur",
choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')
),
br(),
p(em('Følgende utvalg gjelder bare figuren/tabellen som viser utvikling over tid')),
selectInput(inputId = 'enhetsUtvalgAndel', label='Egen enhet og/eller landet',
choices = c("Egen mot resten av landet"=1, "Hele landet"=0, "Egen enhet"=2)),
selectInput(inputId = "tidsenhetAndel", label="Velg tidsenhet",
choices = rev(c('År'= 'Aar', 'Halvår' = 'Halvaar',
'Kvartal'='Kvartal', 'Måned'='Mnd')))
),
mainPanel(
tabsetPanel(
tabPanel("Figurer",
#column(10,
h3(em("Utvikling over tid")),
br(),
plotOutput("andelTid", height = 'auto'),
downloadButton('LastNedFigAndelTid', label='Velg format og last ned figur'),
br(),
h3(em("Sykehusvise resultater")),
plotOutput("andelerGrVar", height='auto'),
downloadButton('LastNedFigAndelGrVar', label='Velg format og last ned figur')
),
tabPanel("Tabeller",
uiOutput("tittelAndel"),
br(),
#fluidRow(
column(width = 3,
h3("Sykehusvise resultater"),
tableOutput("andelerGrVarTab"),
downloadButton(outputId = 'lastNed_tabAndelGrVar', label='Last ned tabell')),
column(width = 1),
column(width = 5,
h3("Utvikling over tid"),
tableOutput("andelTidTab"),
downloadButton(outputId = 'lastNed_tabAndelTid', label='Last ned tabell'))
#DT::DTOutput("andelerGrVarTab")
))
) #mainPanel
), #tab
#------------ Gjennomsnittresultater------------
tabPanel(p("Gjennomsnitt: per sykehus og over tid",title='Alder, operasjonstid, registreringsforsinkelse, RAND36, TSS2sumskår'),
h2('Sykehusvise gjennomsnitt/median og utvikling over tid for valgt variabel', align='center'),
h5('Hvilken variabel man ønsker å se resultater for, velges fra rullegardinmenyen til venstre.
(Man kan også gjøre ulike filtreringer.)', align='center'),
br(),
sidebarPanel(width = 3,
h3('Utvalg'),
#8 hoveddimensjoner av Rand, TSS2spm + sumskår
selectInput(
inputId = "valgtVarGjsn", label="Velg variabel",
selected = c('TSS2, sumskår' = 'Tss2Sumskaar'),
choices = c('Alder' = 'Alder',
'Operasjonstid (minutter)' = 'OpTid',
'Registreringsforsinkelse' = 'RegForsinkelse',
'RAND36 Fysisk funksjon' = 'R0ScorePhys',
'RAND36 Begrenses av fysisk helse' = 'R0ScoreRoleLmtPhy',
'RAND36 Følelsesmessig rollebegrensning' = 'R0ScoreRoleLmtEmo',
'RAND36 Energinivå/vitalitet' = 'R0ScoreEnergy',
'RAND36 Mental helse' = 'R0ScoreEmo',
'RAND36 Sosial funksjon' = 'R0ScoreSosial',
'RAND36 Smerte' = 'R0ScorePain',
'RAND36 Generell helsetilstand ved operasjon' = 'R0ScoreGeneral',
'RAND36 Generell helsetilstand ett år etter' = 'R1ScoreGeneral',
'RAND36 Generell helsetilstand tre år setter' = 'R3ScoreGeneral',
'TSS2, sumskår' = 'Tss2Sumskaar'
)
),
dateRangeInput(inputId = 'datovalgGjsn', start = startDato, end = Sys.Date(),
label = "Tidsperiode", separator="t.o.m.", language="nb"),
sliderInput(inputId="alderGjsn", label = "Alder", min = 0,
max = 110, value = c(0, 110)
),
selectInput(inputId = "sentralmaal", label="Velg gjennomsnitt/median ",
choices = c("Gjennomsnitt"='gjsn', "Median"='med')),
selectInput(inputId = 'opMetodeGjsn', label='Operasjonstype',
choices = opMetode
),
selectInput(inputId = 'velgDiagGjsn', label='Diagnose',
choices = diag
),
selectInput(inputId = 'hastegradGjsn', label='Hastegrad',
choices = hastegrad
),
selectInput(inputId = 'alvorlighetKomplGjsn',
label='Alvorlighetsgrad, postoperative komplikasjoner',
multiple = T, #selected=0,
choices = alvorKompl
),
selectInput(inputId = "bildeformatGjsn",
label = "Velg format for nedlasting av figur",
choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')
),
br(),
p(em('Følgende utvalg gjelder bare figuren/tabellen som viser utvikling over tid')),
selectInput(inputId = 'enhetsUtvalgGjsn', label='Egen enhet og/eller landet',
choices = c("Egen mot resten av landet"=1, "Hele landet"=0, "Egen enhet"=2)
),
selectInput(inputId = "tidsenhetGjsn", label="Velg tidsenhet",
choices = tidsenheter
)
),
mainPanel(
tabsetPanel(
tabPanel(
'Figurer',
br(),
em('(Høyreklikk på figuren for å laste den ned)'),
br(),
br(),
h3(em("Utvikling over tid")),
plotOutput("gjsnTid", height = 'auto'),
downloadButton('LastNedFigGjsnTid', label='Velg format og last ned figur'),
br(),
h3(em("Sykehusvise resultater")),
plotOutput("gjsnGrVar", height='auto'),
downloadButton('LastNedFigGjsnGrVar', label='Velg format og last ned figur')
),
tabPanel(
'Tabeller',
uiOutput("tittelGjsn"),
br(),
column(width = 3,
h3("Sykehusvise resultater"),
tableOutput('gjsnGrVarTab'),
downloadButton(outputId = 'lastNed_gjsnGrVarTab', label='Last ned')), # , class = "butt"))
column(width = 1),
column(width = 5,
h3("Utvikling over tid"),
tableOutput("gjsnTidTab"),
downloadButton(outputId = 'lastNed_gjsnTidTab', label='Last ned tabell'))
)
)
)
), #GjsnGrVar/Tid
#-------Registeradministrasjon----------
tabPanel(p("Registeradministrasjon", title='Registeradministrasjonens side for registreringer og resultater'),
value = "Registeradministrasjon",
h3('Siden er bare synlig for SC-bruker', align = 'center'),
#uiOutput('rolle'),
tabsetPanel(
#tabPanel(
# sidebarPanel(
# h4('Nedlasting av data til interaktive nettsider'), MÅ ENDRES TIL SYKEHUSVISER.. SJEKK INDIKATORER
#
# selectInput(inputId = "valgtVarRes", label="Velg variabel",
# choices = c('Komplikasjoner under operasjon' = 'KomplIntra',
# 'Komplikasjoner, postoperativt' = 'KomplPostop',
# 'Alvorlige, postop.kompl.' = 'KomplPostopAlvor',
# 'Konvertert, hys-lap' = 'HysKonvertert',
# 'Konvertert, lap-lap, ikke forventet' = 'LapKonvertert',
# 'TSS2-generelt, positiv oppfatning avd.' = 'Tss2Generelt',
# 'TSS2-sumskår' = 'Tss2Sumskaar'
# )
# ),
# selectInput(inputId = 'opMetodeRes', label='Operasjonstype',
# choices = opMetode
# ),
#
# # dateRangeInput(inputId = 'aarRes', start = startDato, end = Sys.Date(),
# # label = "Operasjonaår", separator="t.o.m.", language="nb", format = 'yyyy'
# # ),
# sliderInput(inputId="aarRes", label = "Operasjonsår", min = as.numeric(2016),
# max = as.numeric(year(idag)), value = c(2016, year(idag)), step=1, sep=""
# ),
# br(),
# #downloadButton(outputId = 'lastNed_dataTilResPort', label='Last ned data')
# ),
#),
tabPanel(
h4("Utsending av rapporter"),
# title = "Utsending av rapporter",
#sidebarLayout(
sidebarPanel(
rapbase::autoReportOrgInput("NGERutsending"),
rapbase::autoReportInput("NGERutsending")
),
mainPanel(
rapbase::autoReportUI("NGERutsending")
)
#)
), #Utsending-tab
tabPanel(
h4("Eksport av krypterte data"),
sidebarPanel(
rapbase::exportUCInput("ngerExport")
),
mainPanel(
rapbase::exportGuideUI("ngerExportGuide")
)
) #Eksport-tab
) #tabsetPanel
), #tab SC
#----------Abonnement-----------------
tabPanel(p("Abonnement",
title='Bestill automatisk utsending av rapporter på e-post'),
value = 'Abonnement',
sidebarLayout(
sidebarPanel(
rapbase::autoReportInput("ngerAbb")
),
shiny::mainPanel(
rapbase::autoReportUI("ngerAbb")
)
)
), #tab abonnement
#--------slutt tab'er----------
) #ui-del
#----- Define server logic required to draw a histogram-------
server <- function(input, output, session) {
#-- Div serveroppstart----
if (paaServer) {
rapbase::appLogger(session, msg = 'Starter Rapporteket-NGER')}
#hospitalName <-getHospitalName(rapbase::getUserReshId(session))
reshID <- ifelse(paaServer, as.numeric(rapbase::getUserReshId(session)), 105460)
#rolle <- reactive({ifelse(paaServer, rapbase::getUserRole(shinySession=session), 'SC')})
rolle <- ifelse(paaServer, rapbase::getUserRole(shinySession=session), 'SC')
brukernavn <- reactive({ifelse(paaServer, rapbase::getUserName(session), 'inkognito')})
observe({
#vise <- rolle =='SC'
#shinyjs::toggle(id = 'velgResh', condition = vise)
#shinyjs::toggle(id = 'velgReshReg', condition = vise)
#shinyjs::toggle(id = 'velgReshKval', condition = vise)
if (rolle != 'SC') { #
shinyjs::hide(id = 'velgResh')
shinyjs::hide(id = 'velgReshReg')
shinyjs::hide(id = 'velgReshKval')
hideTab(inputId = "hovedark", target = "Registeradministrasjon")
}
})
# widget
if (paaServer) {
output$appUserName <- renderText(rapbase::getUserFullName(session))
output$appOrgName <- renderText(paste0('rolle: ', rolle, '<br> ReshID: ', reshID) )}
# User info in widget
userInfo <- rapbase::howWeDealWithPersonalData(session)
observeEvent(input$userInfo, {
shinyalert::shinyalert("Dette vet Rapporteket om deg:", userInfo,
type = "", imageUrl = "rap/logo.svg",
closeOnEsc = TRUE, closeOnClickOutside = TRUE,
html = TRUE, confirmButtonText = rapbase::noOptOutOk())
})
#--------------Startside------------------------------
# filename function for re-use - i dette tilfellet vil det funke fint å hardkode det samme..
downloadFilename <- function(fileBaseName, type='') {
paste0(fileBaseName, as.character(as.integer(as.POSIXct(Sys.time()))), '.pdf')
}
output$mndRapp.pdf <- downloadHandler(
filename = function(){ downloadFilename('NGERmaanedsrapport')},
content = function(file){
henteSamlerapporter(file, rnwFil="NGERmndRapp.Rnw",
reshID = reshID)
})
output$antRegMnd <- renderPlot({NGERFigAntReg(RegData=RegData,
reshID = reshID
# ,OpMetode = as.numeric(input$opMetodeKval)
# ,Hastegrad = as.numeric(input$hastegradKval)
# ,velgDiag = as.numeric(input$velgDiagKval)
)
}, height=500, width=900
)
#----------Registreringsoversikter ----------------------
output$undertittelReg <- renderUI({
t1 <- 'Tabellen viser operasjoner '
tagList(
br(),
h4(HTML(switch(input$tidsenhetReg,
Mnd = paste0(t1, 'siste 12 måneder før ', input$sluttDatoReg, '<br />'),
Aar = paste0(t1, 'siste 5 år før ', input$sluttDatoReg, '<br />'))),
if(as.numeric(input$opMetodeReg)!=0){
HTML(paste0('Operasjonsmetode: ',
names(opMetode[opMetode==as.numeric(input$opMetodeReg)]), '<br />'))},
if(as.numeric(input$velgDiagReg)!=0){
paste0('Diagnose: ', names(diag[diag==as.numeric(input$velgDiagReg)]))}) #, '<br />'
)
#names(diag[diag==as.numeric(2)])
# h4(HTML(paste0(names(opMetode[opMetode==as.numeric(input$opMetodeReg)]), '<br />'),
# names(velgDiag[velgDiag==as.numeric(input$velgDiag)]), '<br />'))
})
observe({
tabAntOpphShMndAar <- switch(input$tidsenhetReg,
Mnd=tabAntOpphShMnd(RegData=RegData, datoTil=input$sluttDatoReg, antMnd=12,
OpMetode=as.numeric(input$opMetodeReg),
velgDiag=as.numeric(input$velgDiagReg)), #input$datovalgTab[2])
Aar=tabAntOpphSh5Aar(RegData=RegData, datoTil=input$sluttDatoReg,
OpMetode=as.numeric(input$opMetodeReg),
velgDiag=as.numeric(input$velgDiagReg)))
output$tabAntOpphSh <- renderTable(tabAntOpphShMndAar, rownames = T, digits=0, spacing="xs")
output$lastNed_tabAntOpph <- downloadHandler(
filename = function(){paste0('tabAntOpph.csv')},
content = function(file, filename){write.csv2(tabAntOpphShMndAar, file, row.names = T, na = '')
})
#RegData som har tilknyttede skjema av ulik type
AntSkjemaAvHver <- tabAntSkjema(RegData=RegData,
datoFra = input$datovalgReg[1],
datoTil=input$datovalgReg[2])
output$tabAntSkjema <- renderTable(AntSkjemaAvHver
,rownames = T, digits=0, spacing="xs" )
output$lastNed_tabAntSkjema <- downloadHandler(
filename = function(){'tabAntSkjema.csv'},
content = function(file, filename){write.csv2(AntSkjemaAvHver, file, row.names = T, na = '')
})
})
# Hente oversikt over hvilke registrereinger som er gjort (opdato og fødselsdato)
RegOversikt <- RegData[ , c('Fodselsdato', 'OpDato', 'ReshId', 'ShNavn', 'BasisRegStatus')]
observe({
RegOversikt <- dplyr::filter(RegOversikt,
as.Date(OpDato) >= input$datovalgReg[1],
as.Date(OpDato) <= input$datovalgReg[2])
if (rolle == 'SC') {
valgtResh <- as.numeric(input$velgReshReg)
ind <- if (valgtResh == 0) {1:dim(RegOversikt)[1]
} else {which(as.numeric(RegOversikt$ReshId) %in% as.numeric(valgtResh))}
tabDataRegKtr <- RegOversikt[ind,]
} else {
tabDataRegKtr <- RegOversikt[which(RegOversikt$ReshId == reshID), ]}
#tabDataRegKtr <-RegOversikt[which(RegOversikt$ReshId == reshID), ]
output$lastNed_dataTilRegKtr <- downloadHandler(
filename = function(){'dataTilKtr.csv'},
content = function(file, filename){write.csv2(tabDataRegKtr, file, row.names = F, na = '')})
})
# Egen datadump
# variablePRM <- c("R0Metode", "R0ScoreEmo", "R0ScoreEnergy", "R0ScoreGeneral", "R0ScorePain",
# "R0ScorePhys", "R0ScoreRoleLmtEmo", "R0ScoreRoleLmtPhy", "R0ScoreSosial",
# "R0Spm2", "R0Status", "Tss2Behandlere", "Tss2Behandling", "Tss2Enighet",
# "Tss2Generelt", "Tss2Lytte", "Tss2Mott", "Tss2Status", "Tss2Type")
qAlle <- 'SELECT * FROM AlleVarNum
INNER JOIN ForlopsOversikt
ON AlleVarNum.ForlopsID = ForlopsOversikt.ForlopsID'
RegDataAlle <- rapbase::loadRegData(registryName = "nger", query=qAlle, dbType = "mysql")
RegDataAlle <- NGERPreprosess(RegDataAlle)
observe({
DataDump <- NGERUtvalgEnh(RegData = RegDataAlle,
datoFra = input$datovalgReg[1],
datoTil = input$datovalgReg[2],
OpMetode = as.numeric(input$opMetodeRegDump),
velgDiag = as.numeric(input$diagnoseRegDump),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplDump))$RegData
if (input$IntraKomplDump == TRUE) {
indIntraKompl <- which((DataDump$LapKomplikasjoner==1) | (DataDump$HysKomplikasjoner==1))
DataDump <- DataDump[indIntraKompl, ]}
if (rolle =='SC') {
valgtResh <- as.numeric(input$velgReshReg)
ind <- if (valgtResh == 0) {1:dim(DataDump)[1]
} else {which(as.numeric(DataDump$ReshId) %in% as.numeric(valgtResh))}
tabDataDump <- DataDump[ind,]
#output$test <- renderText(valgtResh)
} else {
navn <- names(DataDump)
fjernVarInd <- c(grep('Opf0', navn), grep('Opf1', navn),grep('R0', navn), grep('R1', navn), grep('RY1', navn), grep('Tss', navn))
tabDataDump <-
DataDump[which(DataDump$ReshId == reshID), -fjernVarInd] #which(names(DataDump) %in% variablePRM)]
#output$test <- renderText(dim(tabDataDump)[1])
} #Tar bort PROM/PREM til egen avdeling
#tabDataDump <- DataDump[which(DataDump$ReshId == reshID), -which(names(DataDump) %in% variablePRM)]
output$lastNed_dataDump <- downloadHandler(
filename = function(){'dataDumpNGER.csv'},
content = function(file, filename){write.csv2(tabDataDump, file, row.names = F, na = '')})
})
#---------Kvalitetsindikatorer------------
observe({ #KvalInd
output$kvalInd <- renderPlot({
NGERFigKvalInd(RegData=RegData, valgtVar=input$valgtVarKval, preprosess = 0,
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
reshID = reshID,
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
dagkir = as.numeric(input$dagkirKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
enhetsUtvalg=as.numeric(input$enhetsUtvalgKval),
velgAvd=input$velgReshKval,
session = session)
}, height=800, width=800)
output$LastNedFigKval <- downloadHandler(
filename = function(){
paste0('FigKval_',input$valgtVarKval, Sys.time(), '.', input$bildeformatKval)
},
content = function(file){
NGERFigKvalInd(RegData=RegData, valgtVar=input$valgtVarKval, preprosess = 0,
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
reshID = reshID,
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
dagkir = as.numeric(input$dagkirKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
enhetsUtvalg=as.numeric(input$enhetsUtvalgKval),
velgAvd=input$velgReshKval,
session = session,
outfile = file)
})
UtDataKvalInd <- NGERFigKvalInd(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarKval,
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
reshID = reshID,
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
enhetsUtvalg=as.numeric(input$enhetsUtvalgKval),
velgAvd=input$velgReshKval,
session = session)
tabKvalInd <- lagTabavFig(UtDataFraFig = UtDataKvalInd) #lagTabavFigAndeler
output$tittelKvalInd <- renderUI({
tagList(
h3(UtDataKvalInd$tittel),
h5(HTML(paste0(UtDataKvalInd$utvalgTxt, '<br />')))
)}) #, align='center'
output$kvalIndTab <- function() {
antKol <- ncol(tabKvalInd)
kableExtra::kable(tabKvalInd, format = 'html'
, full_width=F
, digits = c(0,1,0,1)[1:antKol]
) %>%
kableExtra::add_header_above(c(" "=1, 'Egen enhet/gruppe' = 2, 'Resten' = 2)[1:(antKol/2+1)]) %>%
kableExtra::column_spec(column = 1, width_min = '7em') %>%
kableExtra::column_spec(column = 2:(ncol(tabKvalInd)+1), width = '7em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_tabKvalInd <- downloadHandler(
filename = function(){paste0(input$valgtVarKval, '_kvalInd.csv')},
content = function(file, filename){write.csv2(tabKvalInd, file, row.names = T, na = '')
})
}) #observe Kvalitetsind
#--RAND013:
output$kvalRAND013 <- renderPlot({
NGERFigPrePost(RegData=RegData, preprosess = 0,
valgtVar=input$valgtVarRAND013,
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
session = session)
}, height=800, width=800)
output$LastNedFigRAND013 <- downloadHandler(
filename = function(){
paste0('FigRAND013_',input$valgtVarRAND013, Sys.time(), '.', input$bildeformatKval)
},
content = function(file){
NGERFigPrePost(RegData=RegData, preprosess = 0,
valgtVar=input$valgtVarRAND013,
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
session = session,
outfile = file)
})
#RAND, alle dim
output$kvalRANDdim <- renderPlot({
NGERFigPrePost(RegData=RegData, preprosess = 0,
valgtVar='AlleRANDdim',
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
enhetsUtvalg=as.numeric(input$enhetsUtvalgKvalRAND),
reshID = reshID,
velgAvd=as.numeric(input$velgReshKval),
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
session = session)
}, height=800, width=800)
output$LastNedFigRANDdim <- downloadHandler(
filename = function(){
paste0('FigRANDdim_', Sys.time(), '.', input$bildeformatKval)
},
content = function(file){
NGERFigPrePost(RegData=RegData, preprosess = 0,
valgtVar='AlleRANDdim',
datoFra=input$datovalgKval[1], datoTil=input$datovalgKval[2],
enhetsUtvalg=as.numeric(input$enhetsUtvalgKvalRAND),
reshID = reshID,
velgAvd=as.numeric(input$velgReshKval),
minald=as.numeric(input$alderKval[1]), maxald=as.numeric(input$alderKval[2]),
OpMetode = as.numeric(input$opMetodeKval),
Hastegrad = as.numeric(input$hastegradKval),
velgDiag = as.numeric(input$velgDiagKval),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplKval),
session = session,
outfile = file)
})
#----------Tabelloversikter ----------------------
observe({
tabInstrumentbruk <- instrumentbruk(RegData = RegData,
datoFra = input$datovalgTab[1], datoTil = input$datovalgTab[2])
output$tabInstrBruk <- renderTable(tabInstrumentbruk, rownames = T, digits=0, spacing="xs")
output$lastNed_tabInstrBruk <- downloadHandler(
filename = function(){paste0('tabInstrumentbruk.csv')},
content = function(file, filename){write.csv2(tabInstrumentbruk, file, row.names = T, na = '')})
LapKomplData <- tabKomplLap(RegData=RegData, reshID=reshID,
datoFra = input$datovalgTab[1], datoTil = input$datovalgTab[2])
output$tittelLapKompl <- renderUI(tagList(
h4('Hyppighet (%) av laparoskopiske komplikasjoner. '),
h4(paste0('Totalt ble det utført ', LapKomplData$AntLap, ' laparaskopier i tidsperioden.'))))
output$LapKompl <- renderTable(LapKomplData$AndelLapKomplTab, rownames = T, digits=1, spacing="xs") #,caption = tabtxtLapKompl)
output$lastNed_tabLapKompl <- downloadHandler(
filename = function(){paste0('tabLapKompl.csv')},
content = function(file, filename){write.csv2(LapKomplData$AntLap, file, row.names = T, na = '')})
#,caption = tabtxtLapKompl)
})
#---------Fordelinger------------
observe({ #Fordelingsfigurer og tabeller
output$fordelinger <- renderPlot({
NGERFigAndeler(RegData=RegData, valgtVar=input$valgtVar, preprosess = 0,
datoFra=input$datovalg[1], datoTil=input$datovalg[2],
reshID = reshID,
minald=as.numeric(input$alder[1]),
maxald=as.numeric(input$alder[2]),
OpMetode = as.numeric(input$opMetode),
Hastegrad = as.numeric(input$hastegrad),
velgDiag = as.numeric(input$velgDiag),
AlvorlighetKompl = as.numeric(input$alvorlighetKompl),
enhetsUtvalg=as.numeric(input$enhetsUtvalg),
velgAvd=input$velgResh,
session = session)
}, height=800, width=800 #height = function() {session$clientData$output_fordelinger_width}
)
output$LastNedFigFord <- downloadHandler(
filename = function(){
paste0('FigFord_', input$valgtVar, Sys.time(), '.', input$bildeformatFord)
},
content = function(file){
NGERFigAndeler(RegData=RegData, valgtVar=input$valgtVar, preprosess = 0,
datoFra=input$datovalg[1], datoTil=input$datovalg[2],
reshID = reshID,
minald=as.numeric(input$alder[1]),
maxald=as.numeric(input$alder[2]),
OpMetode = as.numeric(input$opMetode),
Hastegrad = as.numeric(input$hastegrad),
velgDiag = as.numeric(input$velgDiag),
AlvorlighetKompl = as.numeric(input$alvorlighetKompl),
enhetsUtvalg=as.numeric(input$enhetsUtvalg),
velgAvd=input$velgResh,
session = session,
outfile = file)
})
#RegData må hentes ut fra valgtVar
UtDataFord <- NGERFigAndeler(RegData=RegData, preprosess = 0, valgtVar=input$valgtVar,
datoFra=input$datovalg[1], datoTil=input$datovalg[2],
reshID = reshID,
minald=as.numeric(input$alder[1]), maxald=as.numeric(input$alder[2]),
OpMetode = as.numeric(input$opMetode),
Hastegrad = as.numeric(input$hastegrad),
velgDiag = as.numeric(input$velgDiag),
AlvorlighetKompl = as.numeric(input$alvorlighetKompl),
enhetsUtvalg=as.numeric(input$enhetsUtvalg),
velgAvd=input$velgResh,
session = session)
tabFord <- lagTabavFig(UtDataFraFig = UtDataFord) #lagTabavFigAndeler
output$tittelFord <- renderUI({
tagList(
h3(UtDataFord$tittel),
h5(HTML(paste0(UtDataFord$utvalgTxt, '<br />')))
)}) #, align='center'
#output$fordelingTab <- renderTable(tabFord, rownames = T)
output$fordelingTab <- function() { #gr1=UtDataFord$hovedgrTxt, gr2=UtDataFord$smltxt renderTable(
antKol <- ncol(tabFord)
kableExtra::kable(tabFord, format = 'html'
, full_width=F
, digits = c(0,1,0,1)[1:antKol]
) %>%
kableExtra::add_header_above(c(" "=1, 'Egen enhet/gruppe' = 2, 'Resten' = 2)[1:(antKol/2+1)]) %>%
kableExtra::column_spec(column = 1, width_min = '7em') %>%
kableExtra::column_spec(column = 2:(ncol(tabFord)+1), width = '7em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_tabFord <- downloadHandler(
filename = function(){paste0(input$valgtVar, '_fordeling.csv')},
content = function(file, filename){write.csv2(tabFord, file, row.names = T, na = '')
})
}) #observe Fordeling
#--------------Andeler-----------------------------------
output$andelerGrVar <- renderPlot({
NGERFigAndelerGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
session=session)
}, height = 800, width=700 #height = function() {session$clientData$output_andelerGrVarFig_width} #})
)
output$LastNedFigAndelGrVar <- downloadHandler(
filename = function(){
paste0('FigAndelSh_', input$valgtVarAndel, Sys.time(), '.', input$bildeformatAndel)
},
content = function(file){
NGERFigAndelerGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
session=session,
outfile = file)
})
output$andelTid <- renderPlot({
NGERFigAndelTid(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
reshID= reshID,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
tidsenhet = input$tidsenhetAndel,
enhetsUtvalg = input$enhetsUtvalgAndel,
session=session)
}, height = 300, width = 1000
)
output$LastNedFigAndelTid <- downloadHandler(
filename = function(){
paste0('FigAndelTid_', input$valgtVarAndel, Sys.time(), '.', input$bildeformatAndel)
},
content = function(file){
NGERFigAndelTid(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
reshID= reshID,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
tidsenhet = input$tidsenhetAndel,
enhetsUtvalg = input$enhetsUtvalgAndel,
session=session,
outfile = file)
})
observe({
#AndelTid
AndelerTid <- NGERFigAndelTid(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
reshID= reshID,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
tidsenhet = input$tidsenhetAndel,
enhetsUtvalg = input$enhetsUtvalgAndel,
session=session) #,lagFig=0)
tabAndelTid <- lagTabavFig(UtDataFraFig = AndelerTid, figurtype = 'andelTid')
output$andelTidTab <- function() {
antKol <- ncol(tabAndelTid)
kableExtra::kable(tabAndelTid, format = 'html'
, full_width=F
, digits = c(0,1,0,1)[1:antKol]
) %>%
kableExtra::add_header_above(c(" "=1, 'Egen enhet/gruppe' = 2, 'Resten' = 2)[1:(antKol/2+1)]) %>%
kableExtra::column_spec(column = 1, width_min = '7em') %>%
kableExtra::column_spec(column = 2:(antKol+1), width = '7em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_tabAndelTid <- downloadHandler(
filename = function(){
paste0(input$valgtVar, '_andelTid.csv')
},
content = function(file, filename){
write.csv2(tabAndelTid, file, row.names = T, na = '')
})
#AndelGrVar
AndelerShus <- NGERFigAndelerGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarAndel,
datoFra=input$datovalgAndel[1], datoTil=input$datovalgAndel[2],
minald=as.numeric(input$alderAndel[1]), maxald=as.numeric(input$alderAndel[2]),
OpMetode = as.numeric(input$opMetodeAndel),
Hastegrad = as.numeric(input$hastegradAndel),
velgDiag = as.numeric(input$velgDiagAndel),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplAndel),
session=session) #, lagFig = 0))
tabAndelerShus <- cbind(Antall=AndelerShus$Ngr,
Andeler = AndelerShus$AggVerdier$Hoved)
output$andelerGrVarTab <- function() {
antKol <- ncol(tabAndelerShus)
kableExtra::kable(tabAndelerShus, format = 'html'
#, full_width=T
, digits = c(0,1) #,0,1)[1:antKol]
) %>%
kableExtra::column_spec(column = 1, width_min = '5em') %>%
kableExtra::column_spec(column = 2:(antKol+1), width = '4em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_tabAndelGrVar <- downloadHandler(
filename = function(){
paste0(input$valgtVar, '_andelGrVar.csv')
},
content = function(file, filename){
write.csv2(tabAndelerShus, file, row.names = T, na = '')
})
output$tittelAndel <- renderUI({
tagList(
h3(AndelerShus$tittel),
h5(HTML(paste0(AndelerShus$utvalgTxt, '<br />')))
)}) #, align='center'
}) #observe
#---------Gjennomsnitt------------
observe({ #Sykehusvise gjennomsnitt, figur og tabell
output$gjsnGrVar <- renderPlot(
NGERFigGjsnGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]), maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal,
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
session = session
),
width = 700, height = 800)
output$LastNedFigGjsnGrVar <- downloadHandler(
filename = function(){
paste0('FigGjsnSh_', input$valgtVarGjsn,Sys.time(), '.', input$bildeformatGjsn)
},
content = function(file){
NGERFigGjsnGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]), maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal,
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
session = session,
outfile = file)
})
UtDataGjsnGrVar <- NGERFigGjsnGrVar(RegData=RegData, preprosess = 0, valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]),
maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal,
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
session = session)
output$tittelGjsn <- renderUI({
tagList(
h3(UtDataGjsnGrVar$tittel),
h5(HTML(paste0(UtDataGjsnGrVar$utvalgTxt, '<br />')))
)}) #, align='center'
tabGjsnGrVar <- cbind(Antall = UtDataGjsnGrVar$Ngr$Hoved,
Sentralmål = UtDataGjsnGrVar$AggVerdier$Hoved)
colnames(tabGjsnGrVar)[2] <- ifelse(input$sentralmaal == 'Med', 'Median', 'Gjennomsnitt')
output$gjsnGrVarTab <- function() {
kableExtra::kable(tabGjsnGrVar, format = 'html'
, full_width=F
, digits = c(0,1) #,1,1)[1:antKol]
) %>%
kableExtra::column_spec(column = 1, width_min = '7em') %>%
kableExtra::column_spec(column = 2:3, width = '7em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_gjsnGrVarTab <- downloadHandler(
filename = function(){
paste0(input$valgtVarGjsn, '_tabGjsnSh .csv')
},
content = function(file, filename){
write.csv2(tabGjsnGrVar, file, row.names = T, na = '')
})
output$titteltabGjsnGrVar <- renderUI({
tagList(
h3(tabGjsnGrVar$tittel),
h5(HTML(paste0(tabGjsnGrVar$utvalgTxt, '<br />')))
)}) #, align='center'
#------gjsnTid
output$gjsnTid <- renderPlot(
NGERFigGjsnTid(RegData=RegData, reshID= reshID, preprosess = 0, valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]), maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal, enhetsUtvalg = as.numeric(input$enhetsUtvalgGjsn),
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
tidsenhet = input$tidsenhetGjsn,
session = session
),
width = 1000, height = 300)
output$LastNedFigGjsnTid <- downloadHandler(
filename = function(){
paste0('FigGjsnTid_', input$valgtVarGjsn, Sys.time(), '.', input$bildeformatGjsn)
},
content = function(file){
NGERFigGjsnTid(RegData=RegData, reshID= reshID, preprosess = 0, valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]), maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal, enhetsUtvalg = as.numeric(input$enhetsUtvalgGjsn),
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
tidsenhet = input$tidsenhetGjsn,
session = session,
outfile = file)
})
UtDataGjsnTid <- NGERFigGjsnTid(RegData=RegData, reshID= reshID, preprosess = 0,
valgtVar=input$valgtVarGjsn,
datoFra=input$datovalgGjsn[1], datoTil=input$datovalgGjsn[2],
minald=as.numeric(input$alderGjsn[1]),
maxald=as.numeric(input$alderGjsn[2]),
valgtMaal = input$sentralmaal,
enhetsUtvalg = as.numeric(input$enhetsUtvalgGjsn),
OpMetode = as.numeric(input$opMetodeGjsn),
Hastegrad = as.numeric(input$hastegradGjsn),
velgDiag = as.numeric(input$velgDiagGjsn),
AlvorlighetKompl = as.numeric(input$alvorlighetKomplGjsn),
tidsenhet = input$tidsenhetGjsn, lagFigur = 0,
session = session)
tabGjsnTid <- t(UtDataGjsnTid$AggVerdier)
grtxt <-UtDataGjsnTid$grtxt
if ((min(nchar(grtxt)) == 5) & (max(nchar(grtxt)) == 5)) {
grtxt <- paste(substr(grtxt, 1,3), substr(grtxt, 4,5))}
rownames(tabGjsnTid) <- grtxt
antKol <- ncol(tabGjsnTid)
navnKol <- colnames(tabGjsnTid)
if (antKol==6) {colnames(tabGjsnTid) <- c(navnKol[1:3], navnKol[1:3])}
output$gjsnTidTab <- function() {
kableExtra::kable(tabGjsnTid, format = 'html'
, full_width=F
, digits = 1 #c(0,1,1,1)[1:antKol]
) %>%
kableExtra::add_header_above(c(" "=1, 'Egen enhet/gruppe' = 3, 'Resten' = 3)[1:(antKol/3+1)]) %>%
kableExtra::column_spec(column = 1, width_min = '7em') %>%
kableExtra::column_spec(column = 2:(antKol+1), width = '7em') %>%
kableExtra::row_spec(0, bold = T)
}
output$lastNed_gjsnTidTab <- downloadHandler(
filename = function(){
paste0(input$valgtVarGjsn, '_tabGjsnTid .csv')
},
content = function(file, filename){
write.csv2(tabGjsnTid, file, row.names = T, na = '')
})
}) #observe gjsnGrVar
#------------------ Abonnement ----------------------------------------------
#--------Start modul, abonnement
orgs <- as.list(sykehusValgUts)
## make a list for report metadata
reports <- list(
MndRapp = list(
synopsis = "NGER/Rapporteket: Månedsrapport, abonnement",
fun = "abonnementNGER", #Lag egen funksjon for utsending
paramNames = c('rnwFil', 'reshID', 'brukernavn'), #"valgtRHF"),
paramValues = c('NGERmndRapp.Rnw', reshID, brukernavn) #'Alle')
)
)
#test <- nger::abonnementNGER(rnwFil="NGERmndRapp.Rnw", brukernavn='tullebukk', reshID=105460)
rapbase::autoReportServer(
id = "ngerAbb", registryName = "nger", type = "subscription",
paramNames = paramNames, paramValues = paramValues, #org = orgAbb$value,
reports = reports, orgs = orgs, eligible = TRUE
)
#-----------Registeradministrasjon-----------
if (rolle=='SC') {
## liste med metadata for rapport
reports <- list(
MndRapp = list(
synopsis = "Rapporteket-NGER: Månedsrapport",
fun = "abonnementNGER",
paramNames = c('rnwFil', "reshID"),
paramValues = c('NGERmndRapp.Rnw', 0)
),
SamleRapp = list(
synopsis = "Rapporteket-NGER: Rapport, div. resultater",
fun = "abonnementNGER",
paramNames = c('rnwFil', "reshID"),
paramValues = c('NGERSamleRapp.Rnw', 0)
)
)
org <- rapbase::autoReportOrgServer("NGERutsending", orgs)
# oppdatere reaktive parametre, for å få inn valgte verdier (overskrive de i report-lista)
paramNames <- shiny::reactive("reshID")
paramValues <- shiny::reactive(org$value())
rapbase::autoReportServer(
id = "NGERutsending", registryName = "nger", type = "dispatchment",
org = org$value, paramNames = paramNames, paramValues = paramValues,
reports = reports, orgs = orgs, eligible = TRUE
)
#----------- Eksport ----------------
registryName <- "nger"
## brukerkontroller
rapbase::exportUCServer("ngerExport", registryName)
## veileding
rapbase::exportGuideServer("ngerExportGuide", registryName)
}
} #server
# Run the application
shinyApp(ui = ui, server = server)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.