Skip to content

Commit

Permalink
feat: use minimalistisk soknad
Browse files Browse the repository at this point in the history
  • Loading branch information
andreasDev committed Feb 5, 2024
1 parent ffe154c commit a7c22d8
Show file tree
Hide file tree
Showing 23 changed files with 224 additions and 204 deletions.
2 changes: 0 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ val flywayVersion = "10.6.0"
val postgresVersion = "42.7.1"
val testContainerVersion = "1.19.4"
val kotlinVersion = "1.9.22"
val sykepengesoknadKafkaVersion = "2023.09.18-14.15-7ea2dc46"
val swaggerUiVersion = "5.10.3"
val kotestVersion = "5.8.0"
val googlePostgresVersion = "1.15.2"
Expand Down Expand Up @@ -69,7 +68,6 @@ repositories {
}
}
implementation("no.nav.helse:syfosm-common-models:$smCommonVersion")
implementation("no.nav.helse.flex:sykepengesoknad-kafka:$sykepengesoknadKafkaVersion")

implementation("ch.qos.logback:logback-classic:$logbackVersion")
implementation("net.logstash.logback:logstash-logback-encoder:$logstashEncoderVersion")
Expand Down
65 changes: 27 additions & 38 deletions src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteMapper.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package no.nav.syfo.minesykmeldte

import no.nav.helse.flex.sykepengesoknad.kafka.SoknadsperiodeDTO
import no.nav.helse.flex.sykepengesoknad.kafka.SoknadsstatusDTO
import no.nav.helse.flex.sykepengesoknad.kafka.SporsmalDTO
import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO
import no.nav.syfo.minesykmeldte.model.Hendelse
import no.nav.syfo.minesykmeldte.model.HendelseType
import no.nav.syfo.minesykmeldte.model.PeriodeEnum
Expand All @@ -15,22 +11,24 @@ import no.nav.syfo.minesykmeldte.model.Soknadsperiode
import no.nav.syfo.minesykmeldte.model.Sporsmal
import no.nav.syfo.minesykmeldte.model.Svar
import no.nav.syfo.minesykmeldte.model.Undersporsmal
import no.nav.syfo.soknad.model.Soknad
import no.nav.syfo.soknad.model.SoknadStatus

class MineSykmeldteMapper private constructor() {
companion object {
fun toPreviewSoknad(
soknad: SykepengesoknadDTO,
soknad: Soknad,
lest: Boolean,
hendelser: List<Hendelse>,
): PreviewSoknad =
when (soknad.status) {
SoknadsstatusDTO.NY -> getNySoknad(soknad, lest, hendelser)
SoknadsstatusDTO.SENDT -> getSendtSoknad(soknad, lest)
SoknadsstatusDTO.FREMTIDIG -> getFremtidigSoknad(soknad)
SoknadStatus.NY -> getNySoknad(soknad, lest, hendelser)
SoknadStatus.SENDT -> getSendtSoknad(soknad, lest)
SoknadStatus.FREMTIDIG -> getFremtidigSoknad(soknad)
else -> throw IllegalArgumentException("Incorrect soknad status ${soknad.status}")
}

private fun getSendtSoknad(soknad: SykepengesoknadDTO, lest: Boolean): PreviewSendtSoknad =
private fun getSendtSoknad(soknad: Soknad, lest: Boolean): PreviewSendtSoknad =
PreviewSendtSoknad(
id = soknad.id,
sykmeldingId = soknad.sykmeldingId,
Expand All @@ -42,26 +40,20 @@ class MineSykmeldteMapper private constructor() {
?: throw IllegalStateException(
"sendtArbeidsgiver is null for soknad: ${soknad.id}"
),
perioder = soknad.soknadsperioder?.map { it.toSoknadsperiode() }
?: throw IllegalStateException(
"søknadsperioder must not be null in sendt soknad: ${soknad.id}"
),
perioder = soknad.soknadsperioder.map { it.toSoknadsperiode() }
)

private fun getFremtidigSoknad(soknad: SykepengesoknadDTO): PreviewFremtidigSoknad =
private fun getFremtidigSoknad(soknad: Soknad): PreviewFremtidigSoknad =
PreviewFremtidigSoknad(
id = soknad.id,
sykmeldingId = soknad.sykmeldingId,
fom = soknad.fom,
tom = soknad.tom,
perioder = soknad.soknadsperioder?.map { it.toSoknadsperiode() }
?: throw IllegalStateException(
"søknadsperioder must not be null in fremtidig soknad: ${soknad.id}"
),
perioder = soknad.soknadsperioder.map { it.toSoknadsperiode() }
)

private fun getNySoknad(
soknad: SykepengesoknadDTO,
soknad: Soknad,
lest: Boolean,
hendelser: List<Hendelse>
): PreviewNySoknad =
Expand All @@ -71,10 +63,7 @@ class MineSykmeldteMapper private constructor() {
sykmeldingId = soknad.sykmeldingId,
fom = soknad.fom,
tom = soknad.tom,
perioder = soknad.soknadsperioder?.map { it.toSoknadsperiode() }
?: throw IllegalStateException(
"søknadsperioder must not be null in ny soknad: ${soknad.id}"
),
perioder = soknad.soknadsperioder.map { it.toSoknadsperiode() },
ikkeSendtSoknadVarsel =
hendelser.any {
it.id == soknad.id && it.oppgavetype == HendelseType.IKKE_SENDT_SOKNAD
Expand All @@ -87,50 +76,50 @@ class MineSykmeldteMapper private constructor() {
?.mottatt,
)

fun SoknadsperiodeDTO.toSoknadsperiode(): Soknadsperiode =
fun no.nav.syfo.soknad.model.Soknadsperiode.toSoknadsperiode(): Soknadsperiode =
Soknadsperiode(
fom = requireNotNull(fom),
tom = requireNotNull(tom),
fom = fom,
tom = tom,
sykmeldingsgrad = sykmeldingsgrad,
sykmeldingstype = PeriodeEnum.valueOf(sykmeldingstype.toString()),
)

private fun SporsmalDTO.toUndersporsmal(): Undersporsmal =
private fun no.nav.syfo.soknad.model.Sporsmal.toUndersporsmal(): Undersporsmal =
Undersporsmal(
id = requireNotNull(id),
tag = requireNotNull(tag),
id = id,
tag = tag,
min = min,
max = max,
sporsmalstekst = sporsmalstekst,
undertekst = undertekst,
svartype = requireNotNull(svartype),
svartype = svartype,
kriterieForVisningAvUndersporsmal = kriterieForVisningAvUndersporsmal,
svar =
svar?.map {
svar.map {
Svar(
verdi = requireNotNull(it.verdi),
)
},
undersporsmal = undersporsmal?.map { it.toUndersporsmal() },
undersporsmal = undersporsmal.map { it.toUndersporsmal() },
)

fun SporsmalDTO.toSporsmal(): Sporsmal =
fun no.nav.syfo.soknad.model.Sporsmal.toSporsmal(): Sporsmal =
Sporsmal(
id = requireNotNull(id),
tag = requireNotNull(tag),
id = id,
tag = tag,
min = min,
max = max,
sporsmalstekst = requireNotNull(sporsmalstekst),
undertekst = undertekst,
svartype = requireNotNull(svartype),
svartype = svartype,
kriterieForVisningAvUndersporsmal = kriterieForVisningAvUndersporsmal,
svar =
svar?.map {
svar.map {
Svar(
verdi = requireNotNull(it.verdi),
)
},
undersporsmal = undersporsmal?.map { it.toUndersporsmal() },
undersporsmal = undersporsmal.map { it.toUndersporsmal() },
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class MineSykmeldteService(

val sykmeldteMap = sykmeldteMapJob.await()

return@withContext sykmeldteMap.map { sykmeldtEntry ->
sykmeldteMap.map { sykmeldtEntry ->
val nyesteSendteSykmelding =
sykmeldtEntry.value.sortedBy { it.sendtTilArbeidsgiverDato }.last()
PreviewSykmeldt(
Expand Down Expand Up @@ -224,14 +224,8 @@ private fun Pair<SykmeldtDbModel, SoknadDbModel>.toSoknad(): Soknad {
sendtTilNavDato = soknadDb.soknad.sendtNav,
korrigererSoknadId = soknadDb.soknad.korrigerer,
korrigertBySoknadId = soknadDb.soknad.korrigertAv,
perioder = soknadDb.soknad.soknadsperioder?.map { it.toSoknadsperiode() }
?: throw IllegalStateException(
"Søknad uten perioder definert: ${soknadDb.soknadId}"
),
sporsmal = soknadDb.soknad.sporsmal?.map { it.toSporsmal() }
?: throw IllegalStateException(
"Søknad uten sporsmal definert: ${soknadDb.soknadId}"
),
perioder = soknadDb.soknad.soknadsperioder.map { it.toSoknadsperiode() },
sporsmal = soknadDb.soknad.sporsmal.map { it.toSporsmal() }
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package no.nav.syfo.minesykmeldte.db

import java.time.LocalDate
import java.time.OffsetDateTime
import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO
import no.nav.syfo.model.sykmelding.arbeidsgiver.ArbeidsgiverSykmelding
import no.nav.syfo.soknad.model.Soknad

data class MinSykmeldtDbModel(
val narmestelederId: String,
Expand All @@ -15,7 +15,7 @@ data class MinSykmeldtDbModel(
val orgNavn: String,
val sykmelding: ArbeidsgiverSykmelding,
val lestSykmelding: Boolean,
val soknad: SykepengesoknadDTO?,
val soknad: Soknad?,
val lestSoknad: Boolean,
val sendtTilArbeidsgiverDato: OffsetDateTime?,
val egenmeldingsdager: List<LocalDate>?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class MineSykmeldteDb(private val database: DatabaseInterface) {
sm.orgnavn,
sm.sykmelding,
sm.lest as sykmelding_lest,
sk.soknad,
sk.sykepengesoknad,
sk.sendt_dato,
sk.lest as soknad_lest,
sm.sendt_til_arbeidsgiver_dato as sendt_til_arbeidsgiver_dato,
Expand Down Expand Up @@ -87,7 +87,7 @@ class MineSykmeldteDb(private val database: DatabaseInterface) {
s.sykmelding_id,
s.pasient_fnr,
s.orgnummer,
s.soknad,
s.sykepengesoknad,
s.sendt_dato,
s.lest,
s.timestamp,
Expand Down Expand Up @@ -265,7 +265,7 @@ private fun ResultSet.toSykmeldtSoknad(): Pair<SykmeldtDbModel, SoknadDbModel>?
sykmeldingId = getString("sykmelding_id"),
pasientFnr = getString("pasient_fnr"),
orgnummer = getString("orgnummer"),
soknad = objectMapper.readValue(getString("soknad")),
soknad = objectMapper.readValue(getString("sykepengesoknad")),
sendtDato = getDate("sendt_dato").toLocalDate(),
lest = getBoolean("lest"),
timestamp = getTimestamp("timestamp").toInstant().atOffset(ZoneOffset.UTC),
Expand All @@ -285,7 +285,7 @@ private fun ResultSet.toMinSykmeldtDbModel(): MinSykmeldtDbModel =
orgNavn = getString("orgnavn"),
sykmelding = objectMapper.readValue(getString("sykmelding")),
lestSykmelding = getBoolean("sykmelding_lest"),
soknad = getString("soknad")?.let { objectMapper.readValue(it) },
soknad = getString("sykepengesoknad")?.let { objectMapper.readValue(it) },
lestSoknad = getBoolean("soknad_lest"),
sendtTilArbeidsgiverDato =
getTimestamp("sendt_til_arbeidsgiver_dato")?.toInstant()?.atOffset(ZoneOffset.UTC),
Expand Down
12 changes: 6 additions & 6 deletions src/main/kotlin/no/nav/syfo/minesykmeldte/model/Soknad.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package no.nav.syfo.minesykmeldte.model

import java.time.LocalDate
import java.time.LocalDateTime
import no.nav.helse.flex.sykepengesoknad.kafka.SvartypeDTO
import no.nav.helse.flex.sykepengesoknad.kafka.VisningskriteriumDTO
import no.nav.syfo.soknad.model.Svartype
import no.nav.syfo.soknad.model.Visningskriterium

data class Soknad(
val id: String,
Expand Down Expand Up @@ -35,8 +35,8 @@ data class Undersporsmal(
val max: String?,
val sporsmalstekst: String?,
val undertekst: String?,
val svartype: SvartypeDTO,
var kriterieForVisningAvUndersporsmal: VisningskriteriumDTO?,
val svartype: Svartype,
var kriterieForVisningAvUndersporsmal: Visningskriterium?,
var svar: List<Svar>?,
var undersporsmal: List<Undersporsmal>?,
)
Expand All @@ -48,8 +48,8 @@ data class Sporsmal(
val max: String?,
val sporsmalstekst: String,
val undertekst: String?,
val svartype: SvartypeDTO,
var kriterieForVisningAvUndersporsmal: VisningskriteriumDTO?,
val svartype: Svartype,
var kriterieForVisningAvUndersporsmal: Visningskriterium?,
var svar: List<Svar>?,
var undersporsmal: List<Undersporsmal>?,
)
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/no/nav/syfo/soknad/db/SoknadDbModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package no.nav.syfo.soknad.db

import java.time.LocalDate
import java.time.OffsetDateTime
import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO
import no.nav.syfo.soknad.model.Soknad

data class SoknadDbModel(
val soknadId: String,
val sykmeldingId: String?,
val pasientFnr: String,
val orgnummer: String,
val soknad: SykepengesoknadDTO,
val soknad: Soknad,
val sendtDato: LocalDate?,
val lest: Boolean,
val timestamp: OffsetDateTime,
Expand Down
6 changes: 6 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Arbeidsgiver.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.syfo.soknad.model

data class Arbeidsgiver(
val navn: String? = null,
val orgnummer: String? = null,
)
20 changes: 20 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Soknad.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.syfo.soknad.model

import java.time.LocalDate
import java.time.LocalDateTime

data class Soknad(
val id: String,
val status: SoknadStatus,
val fnr: String,
val orgnummer: String?,
val sykmeldingId: String?,
val korrigerer: String?,
val korrigertAv: String?,
val fom: LocalDate?,
val tom: LocalDate?,
val sendtNav: LocalDateTime?,
val sendtArbeidsgiver: LocalDateTime?,
val sporsmal: List<Sporsmal>,
val soknadsperioder: List<Soknadsperiode>,
)
11 changes: 11 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/SoknadStatus.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package no.nav.syfo.soknad.model

enum class SoknadStatus {
NY,
SENDT,
FREMTIDIG,
KORRIGERT,
AVBRUTT,
SLETTET,
UTGAATT
}
10 changes: 10 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Soknadsperiode.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package no.nav.syfo.soknad.model

import java.time.LocalDate

data class Soknadsperiode(
val fom: LocalDate,
val tom: LocalDate,
val sykmeldingsgrad: Int?,
val sykmeldingstype: Sykmeldingstype,
)
14 changes: 14 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Sporsmal.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package no.nav.syfo.soknad.model

data class Sporsmal(
val id: String,
val tag: String,
val min: String?,
val max: String?,
val kriterieForVisningAvUndersporsmal: Visningskriterium?,
val svartype: Svartype,
val sporsmalstekst: String?,
val undertekst: String?,
val svar: List<Svar>,
val undersporsmal: List<Sporsmal>,
)
3 changes: 3 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Svar.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package no.nav.syfo.soknad.model

data class Svar(val verdi: String)
30 changes: 30 additions & 0 deletions src/main/kotlin/no/nav/syfo/soknad/model/Svartype.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package no.nav.syfo.soknad.model

enum class Svartype {
JA_NEI,
CHECKBOX,
CHECKBOX_GRUPPE,
CHECKBOX_PANEL,
DATO,
PERIODE,
PERIODER,
TIMER,
FRITEKST,
IKKE_RELEVANT,
GRUPPE_AV_UNDERSPORSMAL,
BEKREFTELSESPUNKTER,
PROSENT,
RADIO_GRUPPE,
RADIO_GRUPPE_TIMER_PROSENT,
RADIO,
TALL,
RADIO_GRUPPE_UKEKALENDER,
LAND,
COMBOBOX_SINGLE,
COMBOBOX_MULTI,
INFO_BEHANDLINGSDAGER,
KVITTERING,
DATOER,
BELOP,
KILOMETER,
}
Loading

0 comments on commit a7c22d8

Please sign in to comment.