For utviklere av Rapporteket
- Felles funksjoner
- Nødvendige miljøvariabler
- Docker
- Databaser
- Applikasjon som R-pakke
- Dette trenger du for å utvikle Rapportek
Rapporteket er en Shiny-app utviklet i R. Dette betyr at det meste av funksjonaliteter som trengs for å utvikle applikasjonene er generelle funksjoner som er tilgjengelige i R-universet. Det er likevel noen spesielle ting som gjør Shiny-applikasjonen til en Rapporteket-applikasjon.
Felles funksjoner
Rapbase er en pakke som tilbyr en rekke spesialiserte Rapporteket-funksjoner. Det er Nasjonalt Servicemiljø som vedlikeholder denne pakken, men vi ønsker velkomne forslag og tillegg her. Vi jobber med å dokumentere funksjonene så godt det lar seg gjøre. De essensielle funksjonene som må brukes er:
navbarWidgetServer2/navbarWidgetInputfor å hente ut brukernavn, rolle og tilhørighet som kommer fra FALK.repLogger/appLoggerfor å logge til Rapporteket sine logg-databaser.loadRegDatafor å kjøre spørringer mot database.autoReportServer/autoReportInput/autoReportUIfor å sette opp autorapport-utsending.loggerSetupfor å få ut logg ijson-format.
Nødvendige miljøvariabler
På Norsk Helsenett lagres informasjon om brukeren og Rapporteket kan tilpasses denne brukeren slik at data blir tilgjengelig basert på brukerens tilhørighet eller rolle i registeret. I tillegg er det viktig å logge hvem som ser dataene. For å kjøre applikasjonen lokalt må nødvendige miljøvariabler defineres. Dette kan enten defineres i .Renviron, i .Rprofile ved hjelp av Sys.setenv(), i docker-compose.yml-fil eller i egen R-fil som sources før kjøring av applikasjon. Miljøvariabler som er essensielle er merket med rød stjerne (★).
| Miljøvariabel | Beskrivelse | Eksempelverdier |
|---|---|---|
FALK_EXTENDED_USER_RIGHTS★ | Token med informasjon om brukers tilganger i json-format. | [{"A":80,"R":"SC","U":111961}, {"A":80,"R":"LU","U":111961}] |
FALK_APP_ID★ | Numerisk id. Tilsvarer A i FALK_EXTENDED_USER_RIGHTS. | 80 |
FALK_USER_FULLNAME | Navn på pålogget bruker | Navn Navnesen |
FALK_USER_EMAIL | Epost-adresse til pålogget bruker | navn.navnesen@helsevesenet.no |
MYSQL_DB_LOG★ | Navn på logg-database | db_log |
MYSQL_DB_AUTOREPORT★ | Navn på autoreport-database | db_autoreport |
MYSQL_DB_DATA★ | Navn på databasen med registerdata | ablanor |
MYSQL_HOST★ | Database-server-navn | localhost |
MYSQL_USER★ | Databasebruker | root |
MYSQL_PASSWORD★ | Databasepassord | root |
SHINYPROXY_USERNAME | Navn på pålogget bruker | Navn Navnesen |
SHINYPROXY_APPID | Kortnavn på register. | ablanor |
R_RAP_INSTANCE | Denne kan brukes til å bestemme hvilket miljø applikasjonen kjører i (test, QA eller produksjon). Ble brukt mye mer før. | QA |
R_RAP_CONFIG_PATH | Sti til mappe som inneholder configurasjonsfil(er). Ble brukt mye mer før. Må brukes hvis applikasjonen bruker flere databaser med data (blomstermodellen). | "" |
Docker
Applikasjonen skal kjøres i en Docker Container på Norsk Helsenett. Ved publisering av ny versjon av en Rapporteket-applikasjon bygges et image på github gjennom en github-action. Dette image dyttes så opp til NHN. For utviklere som har slik software tilgjengelig kan det være lurt å kjøre applikasjonen lokalt også i en container for å få testet applikasjonen i et så likt miljø som mulig.
Databaser
Rapporteket-applikasjonen er avhengig av at det finnes databaser for logging og abonnement. Kode for å lage disse ligger i pakken rapbase og må kjøres mot en databaseserver som utvikleren har tilgang til. I tillegg skal applikasjonen ha tilgang til database som inneholder registerdata. Det finnes funksjonalitet i rapbase for å hente ned databasedump fra NHN for å kunne teste lokalt.
Applikasjon som R-pakke
Erfaring tilsier at det er enklest og best å utvikle applikasjonen som en R-pakke. Dette er fordi det gir god struktur på koden og gjør det enklere å vedlikeholde applikasjonen over tid. Det vil si at utvikleren utvikler applikasjonen etter retningslinjene for pakke-bygging i R.
Dette trenger du for å utvikle Rapportek
For å kunne utvikle Rapportek-applikasjon trenger man
- R installert
- En IDE installert (RStudio, Visual Studio Code eller Positron anbefales)
- Kjennskap til R og Shiny
- Git installert
- Et repository på github.com/Rapporteket (dette lages av SKDE etter forespørsel)
- Kjennskap til git og GitHub
- Databaseinnstallasjon (helst MySQL eller MariaDB)
- LaTeX installert (hvis dere vil lage rapporter i pdf-format)
I tillegg er det nyttig med docker installert for å kunne teste applikasjonen i et så likt miljø som mulig som det den skal kjøres på NHN.