Applikasjonen tar imot innkommende inntektsmeldinger for sykepenger, journalfører dette og oppretter oppgaver i Gosys for behandlende enhet. Dersom behandlede enhet ikke er funnet blir det opprettet en fordelingsoppgave istedet. Andre applikasjoner kan be om utsettelse eller ignorering av opprettelser av disse oppgavene.
Illustrasjonen viser innholdet i kafka meldingen (InngaaendeJournalpostDTO).
Illustrasjonen viser inntektsmeldingen i sin helhet
Applikasjonen er laget med tanke på aldri miste noen inntektsmeldinger. Dette er løst med disse tiltakene:
JoarkHendelseConsumer lytter på en Kafka kø. Straks den får nyss om inntektsmelding blir kafka-meldingen lagret i databasen og køet opp til behandling av de periodiserte jobbene.
BakgrunnsjobbService kjører to ulike jobber med faste tidsintervaller. Hver av de henter ventende oppgaver fra køen (databasen). Oppgaver som feiler sendes tilbake til køen med en utsettelse. Dersom de feiler for mange ganger blir de stoppet.
JoarkInntektsmeldingHendelseProsessor henter ut inntektsmelding fra køen og sjekker hvor lenge den har ligget ubehandlet i køen. Dersom tidsfristen er nådd opprettes det en fordelingsoppgave i Gosys og inntektsmeldingen blir markert som ferdigbehandlet og tatt ut av køen. Hvis ikke ferdigstilles journalposten for inntektsmeldingen det gjelder og fjernes fra denne køen. I tillegg blir det opprettet en jobb i oppgavekøen under. Til slutt blir inntektsmeldingen lagt på en Kafka topic.
FeiletUtsattOppgaveMeldingProsessor henter ut oppgaver fra køen og sjekker tilstanden. Dersom tilstanden er satt i å opprette blir det opprettet en Gosys-oppgave.
UtsattOppgaveConsumer lytter på en Kafka kø om det er oppgaver som skal forkastes eller utsettes. Oppgaver som blir funnet her endrer tilstanden i køen for Oppgave i avsnittet over.
Applikasjonen er avhengig av mange tjenester og det enkleste er å starte den inne fra en tynnklient hvor tjenestene er tilgjengelige.
Applikasjonen må kjøres som en spring-boot applikasjon med local som profil. For å kunne starte
så MÅ du sette tre
environment variabler ellers vil den ikke starte. Det er filen application-local.properties
som bestemmer hvilke tjenster som blir benytter lokalt. For å kunne kjøre må du påse at alle
disse miljø innstillingene er riktig og fylle ut innstillinger for passord da de nå er satt
til dummy.
Prosjektet bruker en Ktlint-plugin for Gradle som håndhever kodestilregler. Nyttige kommandoer er:
gradle lintKotlin
(sier ifra om brudd på kodestilreglene)gradle formatKotlin
(retter opp i brudd på kodestilreglene)
Det anbefales hver utvikler å konfigurere en pre-commit hook som automatisk sjekker endrede filer for brudd på kodestilreglene. Alternativt kan man sette opp automatisk formattering. Kommandoene for dette er:
gradle installKotlinterPrePushHook
(automatisk formattering)
Les mer om pluginen her.
Applikasjonen bruker Postgres database med JPA grensesnitt OG et JDBC grensesnitt. Skjermbildet nedenfor viser samtlige tabeller som er brukt. Flyway blir brukt til versjonering i databasen.
Interne henvendelser kan sendes via Slack i kanalen #helse-arbeidsgiver