diff --git a/build.gradle.kts b/build.gradle.kts index bd77b107..3188bba5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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" @@ -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") diff --git a/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteMapper.kt b/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteMapper.kt index 5cc585c5..61a8958a 100644 --- a/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteMapper.kt +++ b/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteMapper.kt @@ -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 @@ -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, ): 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, @@ -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 ): PreviewNySoknad = @@ -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 @@ -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() }, ) } } diff --git a/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteService.kt b/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteService.kt index a6f10704..9d5a565b 100644 --- a/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteService.kt +++ b/src/main/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteService.kt @@ -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( @@ -224,14 +224,8 @@ private fun Pair.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() } ) } diff --git a/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MinSykmeldtDbModel.kt b/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MinSykmeldtDbModel.kt index b857b3fd..a59e83ef 100644 --- a/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MinSykmeldtDbModel.kt +++ b/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MinSykmeldtDbModel.kt @@ -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, @@ -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?, diff --git a/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDb.kt b/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDb.kt index 0b8910d8..380a9e61 100644 --- a/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDb.kt +++ b/src/main/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDb.kt @@ -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, @@ -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, @@ -265,7 +265,7 @@ private fun ResultSet.toSykmeldtSoknad(): Pair? 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), @@ -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), diff --git a/src/main/kotlin/no/nav/syfo/minesykmeldte/model/Soknad.kt b/src/main/kotlin/no/nav/syfo/minesykmeldte/model/Soknad.kt index 41673aa1..79a802ec 100644 --- a/src/main/kotlin/no/nav/syfo/minesykmeldte/model/Soknad.kt +++ b/src/main/kotlin/no/nav/syfo/minesykmeldte/model/Soknad.kt @@ -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, @@ -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?, var undersporsmal: List?, ) @@ -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?, var undersporsmal: List?, ) diff --git a/src/main/kotlin/no/nav/syfo/soknad/db/SoknadDbModel.kt b/src/main/kotlin/no/nav/syfo/soknad/db/SoknadDbModel.kt index 6d8c9030..9023f3d2 100644 --- a/src/main/kotlin/no/nav/syfo/soknad/db/SoknadDbModel.kt +++ b/src/main/kotlin/no/nav/syfo/soknad/db/SoknadDbModel.kt @@ -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, diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Arbeidsgiver.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Arbeidsgiver.kt new file mode 100644 index 00000000..51be7f26 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Arbeidsgiver.kt @@ -0,0 +1,6 @@ +package no.nav.syfo.soknad.model + +data class Arbeidsgiver( + val navn: String? = null, + val orgnummer: String? = null, +) diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Soknad.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Soknad.kt new file mode 100644 index 00000000..1cf41f6c --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Soknad.kt @@ -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, + val soknadsperioder: List, +) diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/SoknadStatus.kt b/src/main/kotlin/no/nav/syfo/soknad/model/SoknadStatus.kt new file mode 100644 index 00000000..bf95ba90 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/SoknadStatus.kt @@ -0,0 +1,11 @@ +package no.nav.syfo.soknad.model + +enum class SoknadStatus { + NY, + SENDT, + FREMTIDIG, + KORRIGERT, + AVBRUTT, + SLETTET, + UTGAATT +} diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Soknadsperiode.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Soknadsperiode.kt new file mode 100644 index 00000000..bb0a4c1f --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Soknadsperiode.kt @@ -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, +) diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Sporsmal.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Sporsmal.kt new file mode 100644 index 00000000..a08b4e9b --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Sporsmal.kt @@ -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, + val undersporsmal: List, +) diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Svar.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Svar.kt new file mode 100644 index 00000000..2c4de1f1 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Svar.kt @@ -0,0 +1,3 @@ +package no.nav.syfo.soknad.model + +data class Svar(val verdi: String) diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Svartype.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Svartype.kt new file mode 100644 index 00000000..4d92a83c --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Svartype.kt @@ -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, +} diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Sykmeldingstype.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Sykmeldingstype.kt new file mode 100644 index 00000000..c01abaef --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Sykmeldingstype.kt @@ -0,0 +1,9 @@ +package no.nav.syfo.soknad.model + +enum class Sykmeldingstype { + AKTIVITET_IKKE_MULIG, + AVVENTENDE, + BEHANDLINGSDAGER, + GRADERT, + REISETILSKUDD, +} diff --git a/src/main/kotlin/no/nav/syfo/soknad/model/Visningskriterium.kt b/src/main/kotlin/no/nav/syfo/soknad/model/Visningskriterium.kt new file mode 100644 index 00000000..a33f5c37 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/soknad/model/Visningskriterium.kt @@ -0,0 +1,7 @@ +package no.nav.syfo.soknad.model + +enum class Visningskriterium { + NEI, + JA, + CHECKED, +} diff --git a/src/test/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteServiceTest.kt b/src/test/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteServiceTest.kt index 72f09431..c8f85564 100644 --- a/src/test/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteServiceTest.kt +++ b/src/test/kotlin/no/nav/syfo/minesykmeldte/MineSykmeldteServiceTest.kt @@ -16,15 +16,6 @@ import java.time.ZoneOffset import java.util.UUID import kotlin.contracts.ExperimentalContracts import kotlinx.coroutines.runBlocking -import no.nav.helse.flex.sykepengesoknad.kafka.SoknadsperiodeDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SoknadsstatusDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SoknadstypeDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SporsmalDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SvarDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SvartypeDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SykmeldingstypeDTO -import no.nav.helse.flex.sykepengesoknad.kafka.VisningskriteriumDTO import no.nav.syfo.hendelser.db.HendelseDbModel import no.nav.syfo.minesykmeldte.db.MinSykmeldtDbModel import no.nav.syfo.minesykmeldte.db.MineSykmeldteDb @@ -49,10 +40,19 @@ import no.nav.syfo.model.sykmelding.model.GradertDTO import no.nav.syfo.model.sykmelding.model.PeriodetypeDTO import no.nav.syfo.objectMapper import no.nav.syfo.soknad.db.SoknadDbModel +import no.nav.syfo.soknad.model.Soknad +import no.nav.syfo.soknad.model.SoknadStatus.FREMTIDIG +import no.nav.syfo.soknad.model.SoknadStatus.NY +import no.nav.syfo.soknad.model.SoknadStatus.SENDT +import no.nav.syfo.soknad.model.Soknadsperiode +import no.nav.syfo.soknad.model.Sporsmal +import no.nav.syfo.soknad.model.Svartype +import no.nav.syfo.soknad.model.Sykmeldingstype +import no.nav.syfo.soknad.model.Visningskriterium import no.nav.syfo.sykmelding.db.SykmeldingDbModel import no.nav.syfo.sykmelding.db.SykmeldtDbModel import no.nav.syfo.util.createArbeidsgiverSykmelding -import no.nav.syfo.util.createSykepengesoknadDto +import no.nav.syfo.util.createSoknad import no.nav.syfo.util.createSykmeldingsperiode import no.nav.syfo.util.shouldBeInstance import no.nav.syfo.util.toSoknadDbModel @@ -156,7 +156,7 @@ class MineSykmeldteServiceTest : test("Should get one sykmeldt with one IKKE_SENDT_SOKNAD") { val sykmeldtData = getSykmeldtData(1, sykmeldtFnrPrefix = "prefix", soknader = 1).map { - it.copy(soknad = it.soknad!!.copy(status = SoknadsstatusDTO.NY)) + it.copy(soknad = it.soknad!!.copy(status = NY)) } coEvery { mineSykmeldteDb.getHendelser("1") } returns @@ -712,11 +712,10 @@ class MineSykmeldteServiceTest : test("should map to a new søknad and use tom if date is latest") { coEvery { mineSykmeldteDb.getHendelser("1") } returns emptyList() val soknad = - createSykepengesoknadDto("soknad-id", "sykmeldingId") + createSoknad("soknad-id", "sykmeldingId") .copy( - status = SoknadsstatusDTO.NY, + status = NY, tom = LocalDate.parse("2020-05-02"), - opprettet = LocalDateTime.parse("2020-04-05T18:00:50.63"), ) coEvery { mineSykmeldteDb.getMineSykmeldte("1") } returns @@ -753,11 +752,10 @@ class MineSykmeldteServiceTest : test("should map to a new søknad and use opprettet if date is latest") { coEvery { mineSykmeldteDb.getHendelser("1") } returns emptyList() val soknad = - createSykepengesoknadDto("soknad-id", "sykmeldingId") + createSoknad("soknad-id", "sykmeldingId") .copy( - status = SoknadsstatusDTO.NY, + status = NY, tom = LocalDate.parse("2020-05-02"), - opprettet = LocalDateTime.parse("2020-06-05T18:00:50.63"), ) coEvery { mineSykmeldteDb.getMineSykmeldte("1") } returns @@ -794,9 +792,9 @@ class MineSykmeldteServiceTest : test("should map to a sendt søknad") { coEvery { mineSykmeldteDb.getHendelser("1") } returns emptyList() val soknad = - createSykepengesoknadDto("soknad-id", "sykmeldingId") + createSoknad("soknad-id", "sykmeldingId") .copy( - status = SoknadsstatusDTO.SENDT, + status = SENDT, korrigerer = "korrigerer-id", sendtArbeidsgiver = LocalDateTime.parse("2020-06-07T19:34:50.63"), ) @@ -834,20 +832,20 @@ class MineSykmeldteServiceTest : test("Should not get Korrigert soknad") { coEvery { mineSykmeldteDb.getHendelser("1") } returns emptyList() val korrigertSoknad = - createSykepengesoknadDto("soknad-id-korrigert", "sykmeldingId") + createSoknad("soknad-id-korrigert", "sykmeldingId") .copy( - status = SoknadsstatusDTO.SENDT, + status = SENDT, ) val korrigererSoknad = - createSykepengesoknadDto("soknad-id-korrigerer", "sykmeldingId") + createSoknad("soknad-id-korrigerer", "sykmeldingId") .copy( - status = SoknadsstatusDTO.SENDT, + status = SENDT, korrigerer = "soknad-id-korrigert", ) val sendtSoknad = - createSykepengesoknadDto("soknad-id-sendt", "sykmeldingId") + createSoknad("soknad-id-sendt", "sykmeldingId") .copy( - status = SoknadsstatusDTO.SENDT, + status = SENDT, ) val mineSykmeldteModel = MinSykmeldtDbModel( @@ -893,9 +891,9 @@ class MineSykmeldteServiceTest : test("should map to a fremtidig søknad") { coEvery { mineSykmeldteDb.getHendelser("1") } returns emptyList() val soknad = - createSykepengesoknadDto("soknad-id", "sykmeldingId") + createSoknad("soknad-id", "sykmeldingId") .copy( - status = SoknadsstatusDTO.FREMTIDIG, + status = FREMTIDIG, ) coEvery { mineSykmeldteDb.getMineSykmeldte("1") } returns @@ -1085,7 +1083,7 @@ class MineSykmeldteServiceTest : context("getSoknad") { test("should map correct") { val soknad = getFileAsString("src/test/resources/testSoknad.json") - val soknadDTO = objectMapper.readValue(soknad) + val soknadDTO = objectMapper.readValue(soknad) val soknadDbModel = soknadDTO.toSoknadDbModel() val sykmeldtDbModel = SykmeldtDbModel( @@ -1114,18 +1112,19 @@ class MineSykmeldteServiceTest : sendtDato = LocalDate.parse("2021-04-04"), timestamp = OffsetDateTime.parse("2021-11-18T14:06:12Z"), soknad = - mockk().also { + mockk().also { every { it.fom } returns LocalDate.parse("2021-10-01") every { it.korrigerer } returns null every { it.korrigertAv } returns "jd14jfqd-0422-4a5e-b779-a8819abf" every { it.soknadsperioder } returns listOf( - SoknadsperiodeDTO( + Soknadsperiode( fom = LocalDate.parse("2021-10-04"), tom = LocalDate.parse("2021-10-12"), sykmeldingstype = - SykmeldingstypeDTO.AKTIVITET_IKKE_MULIG, + Sykmeldingstype.AKTIVITET_IKKE_MULIG, + sykmeldingsgrad = null ), ) every { it.sendtNav } returns @@ -1134,22 +1133,23 @@ class MineSykmeldteServiceTest : LocalDateTime.parse("2022-05-10T08:56:24") every { it.sporsmal } returns listOf( - SporsmalDTO( + Sporsmal( id = "54217564", tag = "label", min = "2021-10-03", max = "2021-10-06", sporsmalstekst = "Er dette et spørsmål?", undertekst = "Undertekst til spørsmålet", - svartype = SvartypeDTO.FRITEKST, + svartype = Svartype.FRITEKST, kriterieForVisningAvUndersporsmal = - VisningskriteriumDTO.JA, + Visningskriterium.JA, svar = listOf( - SvarDTO( + no.nav.syfo.soknad.model.Svar( verdi = "Ja", ), ), + undersporsmal = emptyList() ), ) }, @@ -1169,7 +1169,7 @@ class MineSykmeldteServiceTest : result.sporsmal[0].tag shouldBeEqualTo "label" result.sporsmal[0].min shouldBeEqualTo "2021-10-03" result.sporsmal[0].max shouldBeEqualTo "2021-10-06" - result.sporsmal[0].svartype shouldBeEqualTo SvartypeDTO.FRITEKST + result.sporsmal[0].svartype shouldBeEqualTo Svartype.FRITEKST result.sporsmal[0].svar shouldBeEqualTo listOf( Svar( @@ -1185,10 +1185,9 @@ private fun createSoknadDbModel( sykmeldingId: String = "31c5b5ca-1248-4280-bc2e-3c6b11c365b9", pasientFnr: String = "09099012345", orgnummer: String = "0102983875", - soknad: SykepengesoknadDTO = - mockk(relaxed = true).also { - every { it.type } returns SoknadstypeDTO.ARBEIDSLEDIG - every { it.status } returns SoknadsstatusDTO.NY + soknad: Soknad = + mockk(relaxed = true).also { + every { it.status } returns NY every { it.fom } returns LocalDate.now() }, sendtDato: LocalDate = LocalDate.now(), @@ -1275,7 +1274,7 @@ fun getSykmeldtData( sykmelding = arbeigsgiverSykmelding, soknad = if (soknader != 0 && index < soknader) { - createSykepengesoknadDto( + createSoknad( soknadId = UUID.randomUUID().toString(), sykmeldingId = arbeigsgiverSykmelding.id, ) diff --git a/src/test/kotlin/no/nav/syfo/minesykmeldte/api/MineSykmeldteApiKtTest.kt b/src/test/kotlin/no/nav/syfo/minesykmeldte/api/MineSykmeldteApiKtTest.kt index 1409739b..9901693d 100644 --- a/src/test/kotlin/no/nav/syfo/minesykmeldte/api/MineSykmeldteApiKtTest.kt +++ b/src/test/kotlin/no/nav/syfo/minesykmeldte/api/MineSykmeldteApiKtTest.kt @@ -15,8 +15,6 @@ import java.time.OffsetDateTime import java.time.ZoneOffset import java.util.UUID import kotlin.time.ExperimentalTime -import no.nav.helse.flex.sykepengesoknad.kafka.SvartypeDTO -import no.nav.helse.flex.sykepengesoknad.kafka.VisningskriteriumDTO import no.nav.syfo.Environment import no.nav.syfo.minesykmeldte.MineSykmeldteService import no.nav.syfo.minesykmeldte.model.Aktivitetsvarsel @@ -32,6 +30,8 @@ import no.nav.syfo.minesykmeldte.model.Sporsmal import no.nav.syfo.minesykmeldte.model.Svar import no.nav.syfo.minesykmeldte.model.Sykmelding import no.nav.syfo.minesykmeldte.model.UtenlandskSykmelding +import no.nav.syfo.soknad.model.Svartype +import no.nav.syfo.soknad.model.Visningskriterium import no.nav.syfo.util.addAuthorizationHeader import no.nav.syfo.util.minifyApiResponse import no.nav.syfo.util.withKtor @@ -404,8 +404,8 @@ class MineSykmeldteApiKtTest : max = "2021-10-06", sporsmalstekst = "Har du vært på ferie?", undertekst = null, - svartype = SvartypeDTO.JA_NEI, - kriterieForVisningAvUndersporsmal = VisningskriteriumDTO.CHECKED, + svartype = Svartype.JA_NEI, + kriterieForVisningAvUndersporsmal = Visningskriterium.CHECKED, svar = listOf( Svar( diff --git a/src/test/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDbTest.kt b/src/test/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDbTest.kt index 2e2ead5f..3c256579 100644 --- a/src/test/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDbTest.kt +++ b/src/test/kotlin/no/nav/syfo/minesykmeldte/db/MineSykmeldteDbTest.kt @@ -7,10 +7,10 @@ import java.time.LocalDateTime import java.time.OffsetDateTime import java.time.ZoneOffset import java.util.UUID -import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO import no.nav.syfo.hendelser.db.HendelseDbModel import no.nav.syfo.objectMapper import no.nav.syfo.soknad.db.SoknadDbModel +import no.nav.syfo.soknad.model.Soknad import no.nav.syfo.sykmelding.db.SykmeldtDbModel import no.nav.syfo.testutils.getFileAsString import no.nav.syfo.util.TestDb @@ -480,7 +480,7 @@ fun createSykepengesoknadDto( fnr: String = "12345678910", ) = objectMapper - .readValue( + .readValue( getFileAsString("src/test/resources/soknad.json"), ) .copy( diff --git a/src/test/kotlin/no/nav/syfo/util/TestData.kt b/src/test/kotlin/no/nav/syfo/util/TestData.kt index d5f82073..e4cadf16 100644 --- a/src/test/kotlin/no/nav/syfo/util/TestData.kt +++ b/src/test/kotlin/no/nav/syfo/util/TestData.kt @@ -5,8 +5,6 @@ import java.time.LocalDate import java.time.LocalDateTime import java.time.OffsetDateTime import java.time.ZoneOffset -import no.nav.helse.flex.sykepengesoknad.kafka.ArbeidsgiverDTO -import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO import no.nav.syfo.model.sykmelding.arbeidsgiver.AktivitetIkkeMuligAGDTO import no.nav.syfo.model.sykmelding.arbeidsgiver.ArbeidsgiverAGDTO import no.nav.syfo.model.sykmelding.arbeidsgiver.ArbeidsgiverSykmelding @@ -19,6 +17,7 @@ import no.nav.syfo.model.sykmelding.model.GradertDTO import no.nav.syfo.model.sykmelding.model.PeriodetypeDTO import no.nav.syfo.objectMapper import no.nav.syfo.soknad.db.SoknadDbModel +import no.nav.syfo.soknad.model.Soknad import no.nav.syfo.sykmelding.db.SykmeldingDbModel import no.nav.syfo.sykmelding.db.SykmeldtDbModel import no.nav.syfo.testutils.getFileAsString @@ -58,33 +57,28 @@ fun createSoknadDbModel( soknadId: String, sykmeldingId: String = "76483e9f-eb16-464c-9bed-a9b258794bc4", pasientFnr: String = "123456789", - arbeidsgivernavn: String = "Kebabbiten", orgnummer: String = "123454543", ): SoknadDbModel { - val sykepengesoknadDTO: SykepengesoknadDTO = + val sykepengesoknadDTO: Soknad = objectMapper - .readValue( + .readValue( getFileAsString("src/test/resources/soknad.json"), ) .copy( id = soknadId, sykmeldingId = sykmeldingId, fnr = pasientFnr, - arbeidsgiver = - ArbeidsgiverDTO( - navn = arbeidsgivernavn, - orgnummer = orgnummer, - ), + orgnummer = orgnummer, ) return sykepengesoknadDTO.toSoknadDbModel() } -fun createSykepengesoknadDto( +fun createSoknad( soknadId: String, sykmeldingId: String, ) = objectMapper - .readValue( + .readValue( getFileAsString("src/test/resources/soknad.json"), ) .copy( @@ -153,12 +147,12 @@ fun createSykmeldingsperiode( reisetilskudd = reisetilskudd, ) -fun SykepengesoknadDTO.toSoknadDbModel(): SoknadDbModel { +fun Soknad.toSoknadDbModel(): SoknadDbModel { return SoknadDbModel( soknadId = id, sykmeldingId = sykmeldingId, pasientFnr = fnr, - orgnummer = arbeidsgiver?.orgnummer + orgnummer = orgnummer ?: throw IllegalStateException("Har mottatt sendt søknad uten orgnummer: $id"), soknad = this, sendtDato = sendtArbeidsgiver?.toLocalDate(), diff --git a/src/test/kotlin/no/nav/syfo/util/TestDb.kt b/src/test/kotlin/no/nav/syfo/util/TestDb.kt index f3b6d617..02aabc24 100644 --- a/src/test/kotlin/no/nav/syfo/util/TestDb.kt +++ b/src/test/kotlin/no/nav/syfo/util/TestDb.kt @@ -9,7 +9,6 @@ import java.sql.Timestamp import java.time.LocalDate import java.time.ZoneOffset import java.util.UUID -import no.nav.helse.flex.sykepengesoknad.kafka.SykepengesoknadDTO import no.nav.syfo.Environment import no.nav.syfo.application.database.Database import no.nav.syfo.application.database.DatabaseInterface @@ -20,6 +19,7 @@ import no.nav.syfo.narmesteleder.db.NarmestelederDbModel import no.nav.syfo.narmesteleder.db.toNarmestelederDbModel import no.nav.syfo.objectMapper import no.nav.syfo.soknad.db.SoknadDbModel +import no.nav.syfo.soknad.model.Soknad import no.nav.syfo.sykmelding.db.SykmeldingDbModel import no.nav.syfo.sykmelding.db.SykmeldtDbModel import no.nav.syfo.util.TestDb.Companion.database @@ -160,8 +160,7 @@ class TestDb private constructor() { sykmeldingId = getString("sykmelding_id"), pasientFnr = getString("pasient_fnr"), orgnummer = getString("orgnummer"), - soknad = - objectMapper.readValue(getString("soknad"), SykepengesoknadDTO::class.java), + soknad = objectMapper.readValue(getString("soknad"), Soknad::class.java), sendtDato = getObject("sendt_dato", LocalDate::class.java), lest = getBoolean("lest"), timestamp = getTimestamp("timestamp").toInstant().atOffset(ZoneOffset.UTC), @@ -281,12 +280,14 @@ fun DatabaseInterface.insertOrUpdate(soknadDbModel: SoknadDbModel) { pasient_fnr, orgnummer, soknad, + sykepengesoknad, sendt_dato, lest, timestamp, tom) - values (?, ?, ?, ?, ?, ?, ?, ?, ?) on CONFLICT(soknad_id) do update - set soknad = excluded.soknad, + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) on CONFLICT(soknad_id) do update + set sykepengesoknad = excluded.sykepengesoknad, + soknad = excluded.soknad, sykmelding_id = excluded.sykmelding_id, pasient_fnr = excluded.pasient_fnr, orgnummer = excluded.orgnummer, @@ -303,13 +304,14 @@ fun DatabaseInterface.insertOrUpdate(soknadDbModel: SoknadDbModel) { preparedStatement.setString(3, soknadDbModel.pasientFnr) preparedStatement.setString(4, soknadDbModel.orgnummer) preparedStatement.setObject(5, soknadDbModel.soknad.toPGObject()) - preparedStatement.setObject(6, soknadDbModel.sendtDato) - preparedStatement.setBoolean(7, soknadDbModel.lest) + preparedStatement.setObject(6, soknadDbModel.soknad.toPGObject()) + preparedStatement.setObject(7, soknadDbModel.sendtDato) + preparedStatement.setBoolean(8, soknadDbModel.lest) preparedStatement.setTimestamp( - 8, + 9, Timestamp.from(soknadDbModel.timestamp.toInstant()) ) - preparedStatement.setObject(9, soknadDbModel.tom) + preparedStatement.setObject(10, soknadDbModel.tom) preparedStatement.executeUpdate() } connection.commit() diff --git a/src/test/resources/soknad.json b/src/test/resources/soknad.json index 25c4565e..557f39fd 100644 --- a/src/test/resources/soknad.json +++ b/src/test/resources/soknad.json @@ -1,47 +1,21 @@ { "id": "c4c08150-6dc4-495a-9172-5147124d4624", - "type": "ARBEIDSTAKERE", "status": "SENDT", "fnr": "123456789", "sykmeldingId": "76483e9f-eb16-464c-9bed-a9b258794bc4", - "arbeidsgiver": { - "navn": "Kebabbiten", - "orgnummer": "123454543" - }, - "arbeidssituasjon": "ARBEIDSTAKER", + "orgnummer": "123454543", "korrigerer": null, "korrigertAv": null, - "soktUtenlandsopphold": null, - "arbeidsgiverForskutterer": null, "fom": "2021-10-09", "tom": "2021-10-26", - "dodsdato": null, - "startSyketilfelle": "2021-10-29", - "arbeidGjenopptatt": null, - "sykmeldingSkrevet": "2021-10-29T05:55:52.293556", - "opprettet": "2021-10-29T07:55:53.877267", "sendtNav": null, "sendtArbeidsgiver": "2021-10-29T07:56:01.113051", - "egenmeldinger": [], - "fravarForSykmeldingen": [ - { - "fom": "2021-09-25", - "tom": "2021-10-02" - } - ], - "papirsykmeldinger": [], - "fravar": [], - "andreInntektskilder": [], "soknadsperioder": [ { "fom": "2021-10-09", "tom": "2021-10-26", "sykmeldingsgrad": 100, - "faktiskGrad": null, - "avtaltTimer": null, - "faktiskTimer": null, - "sykmeldingstype": "AKTIVITET_IKKE_MULIG", - "grad": 100 + "sykmeldingstype": "AKTIVITET_IKKE_MULIG" } ], "sporsmal": [ @@ -429,18 +403,5 @@ ], "undersporsmal": [] } - ], - "avsendertype": "BRUKER", - "ettersending": false, - "mottaker": "ARBEIDSGIVER", - "egenmeldtSykmelding": false, - "harRedusertVenteperiode": null, - "behandlingsdager": null, - "permitteringer": [], - "merknaderFraSykmelding": [ - { - "type": "UGYLDIG_TILBAKEDATERING", - "beskrivelse": "Hey" - } ] } diff --git a/src/test/resources/testSoknad.json b/src/test/resources/testSoknad.json index c561936e..b15a094f 100644 --- a/src/test/resources/testSoknad.json +++ b/src/test/resources/testSoknad.json @@ -3,11 +3,7 @@ "fnr": "12345678912", "fom": "2022-01-03", "tom": "2022-01-10", - "type": "ARBEIDSTAKERE", - "fravar": [], "status": "SENDT", - "dodsdato": null, - "mottaker": "ARBEIDSGIVER", "sendtNav": null, "sporsmal": [ { @@ -391,15 +387,9 @@ "kriterieForVisningAvUndersporsmal": null } ], - "opprettet": "2022-03-16T09:30:18.575035", "korrigerer": null, "korrigertAv": null, - "arbeidsgiver": { - "navn": "PENGELØS SPAREBANK", - "orgnummer": "972674818" - }, - "avsendertype": "BRUKER", - "ettersending": false, + "orgnummer": "972674818", "sykmeldingId": "0f4b0bbe-dce8-4493-9d24-18197f8bc438", "egenmeldinger": [], "permitteringer": [], @@ -407,26 +397,9 @@ { "fom": "2022-01-03", "tom": "2022-01-10", - "grad": 100, - "avtaltTimer": null, - "faktiskGrad": null, - "faktiskTimer": null, "sykmeldingsgrad": 100, "sykmeldingstype": "AKTIVITET_IKKE_MULIG" } ], - "arbeidssituasjon": "ARBEIDSTAKER", - "behandlingsdager": null, - "arbeidGjenopptatt": null, - "papirsykmeldinger": [], - "sendtArbeidsgiver": "2022-03-16T09:39:39.633876919", - "startSyketilfelle": "2022-01-03", - "sykmeldingSkrevet": "2022-01-03T00:00:00", - "andreInntektskilder": null, - "egenmeldtSykmelding": false, - "soktUtenlandsopphold": null, - "fravarForSykmeldingen": [], - "merknaderFraSykmelding": null, - "harRedusertVenteperiode": null, - "arbeidsgiverForskutterer": null -} \ No newline at end of file + "sendtArbeidsgiver": "2022-03-16T09:39:39.633876919" +}