diff --git a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingProducer.kt b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingProducer.kt index 55deae275..404baddf1 100644 --- a/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingProducer.kt +++ b/api/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/innsending/InnsendingProducer.kt @@ -34,7 +34,7 @@ class InnsendingProducer( Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.ORGNRUNDERENHET to request.orgnrUnderenhet.toJson(), Key.IDENTITETSNUMMER to request.identitetsnummer.toJson(), - Key.ARBEIDSGIVER_ID to arbeidsgiverFnr.toJson(), + Key.ARBEIDSGIVER_FNR to arbeidsgiverFnr.toJson(), Key.SKJEMA_INNTEKTSMELDING to request.toJson(Innsending.serializer()), ).also { logger.info("Publiserte til kafka forespørselId: $forespoerselId og transaksjonId=$transaksjonId") diff --git a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/InnsendingProducerTest.kt b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/InnsendingProducerTest.kt index 90f63535f..c14e78c9d 100644 --- a/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/InnsendingProducerTest.kt +++ b/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/InnsendingProducerTest.kt @@ -38,7 +38,7 @@ class InnsendingProducerTest : Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.ORGNRUNDERENHET to gyldigInnsendingRequest.orgnrUnderenhet.toJson(), Key.IDENTITETSNUMMER to gyldigInnsendingRequest.identitetsnummer.toJson(), - Key.ARBEIDSGIVER_ID to avsenderFnr.toJson(), + Key.ARBEIDSGIVER_FNR to avsenderFnr.toJson(), Key.SKJEMA_INNTEKTSMELDING to gyldigInnsendingRequest.toJson(Innsending.serializer()), ) } diff --git a/innsending/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/innsending/InnsendingService.kt b/innsending/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/innsending/InnsendingService.kt index 9655f52d6..2f7899ca2 100644 --- a/innsending/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/innsending/InnsendingService.kt +++ b/innsending/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/innsending/InnsendingService.kt @@ -12,11 +12,12 @@ import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Forespoersel import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.PersonDato +import no.nav.helsearbeidsgiver.felles.Person import no.nav.helsearbeidsgiver.felles.ResultJson import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.orgMapSerializer +import no.nav.helsearbeidsgiver.felles.json.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail @@ -37,6 +38,8 @@ import no.nav.helsearbeidsgiver.utils.wrapper.Fnr import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr import java.util.UUID +private const val UKJENT_NAVN = "Ukjent navn" + data class Steg0( val transaksjonId: UUID, val forespoerselId: UUID, @@ -52,8 +55,7 @@ sealed class Steg2 { data class Komplett( val aarsakInnsending: AarsakInnsending, val orgnrMedNavn: Map, - val sykmeldt: PersonDato, - val avsender: PersonDato, + val personer: Map, ) : Steg2() data object Delvis : Steg2() @@ -76,14 +78,13 @@ class InnsendingService( override val startKeys = setOf( Key.FORESPOERSEL_ID, - Key.ARBEIDSGIVER_ID, + Key.ARBEIDSGIVER_FNR, Key.SKJEMA_INNTEKTSMELDING, ) override val dataKeys = setOf( Key.VIRKSOMHETER, - Key.ARBEIDSGIVER_INFORMASJON, - Key.ARBEIDSTAKER_INFORMASJON, + Key.PERSONER, Key.INNTEKTSMELDING_DOKUMENT, Key.ER_DUPLIKAT_IM, Key.FORESPOERSEL_SVAR, @@ -95,7 +96,7 @@ class InnsendingService( Steg0( transaksjonId = Key.UUID.les(UuidSerializer, melding), forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, melding), - avsenderFnr = Key.ARBEIDSGIVER_ID.les(Fnr.serializer(), melding), + avsenderFnr = Key.ARBEIDSGIVER_FNR.les(Fnr.serializer(), melding), skjema = Key.SKJEMA_INNTEKTSMELDING.les(JsonElement.serializer(), melding), ) @@ -108,10 +109,9 @@ class InnsendingService( val tidligereInntektsmelding = runCatching { Key.LAGRET_INNTEKTSMELDING.les(ResultJson.serializer(), melding) } val tidligereEksternInntektsmelding = runCatching { Key.EKSTERN_INNTEKTSMELDING.les(ResultJson.serializer(), melding) } val orgnrMedNavn = runCatching { Key.VIRKSOMHETER.les(orgMapSerializer, melding) } - val sykmeldt = runCatching { Key.ARBEIDSTAKER_INFORMASJON.les(PersonDato.serializer(), melding) } - val avsender = runCatching { Key.ARBEIDSGIVER_INFORMASJON.les(PersonDato.serializer(), melding) } + val personer = runCatching { Key.PERSONER.les(personMapSerializer, melding) } - val results = listOf(tidligereInntektsmelding, tidligereEksternInntektsmelding, orgnrMedNavn, sykmeldt, avsender) + val results = listOf(tidligereInntektsmelding, tidligereEksternInntektsmelding, orgnrMedNavn, personer) return if (results.all { it.isSuccess }) { val aarsakInnsending = @@ -124,8 +124,7 @@ class InnsendingService( Steg2.Komplett( aarsakInnsending = aarsakInnsending, orgnrMedNavn = orgnrMedNavn.getOrThrow(), - sykmeldt = sykmeldt.getOrThrow(), - avsender = avsender.getOrThrow(), + personer = personer.getOrThrow(), ) } else if (results.any { it.isSuccess }) { Steg2.Delvis @@ -180,12 +179,18 @@ class InnsendingService( rapid .publish( Key.EVENT_NAME to eventName.toJson(), - Key.BEHOV to BehovType.FULLT_NAVN.toJson(), + Key.BEHOV to BehovType.HENT_PERSONER.toJson(), Key.UUID to steg0.transaksjonId.toJson(), - Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), - Key.IDENTITETSNUMMER to steg1.forespoersel.fnr.toJson(), - Key.ARBEIDSGIVER_ID to steg0.avsenderFnr.toJson(), - ).also { loggBehovPublisert(BehovType.FULLT_NAVN, it) } + Key.DATA to + mapOf( + Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), + Key.FNR_LISTE to + setOf( + steg1.forespoersel.fnr.let(::Fnr), + steg0.avsenderFnr, + ).toJson(Fnr.serializer()), + ).toJson(), + ).also { loggBehovPublisert(BehovType.HENT_PERSONER, it) } } override fun utfoerSteg2( @@ -207,14 +212,16 @@ class InnsendingService( } val orgNavn = steg2.orgnrMedNavn[steg1.forespoersel.orgnr.let(::Orgnr)] ?: "Ukjent virksomhet" + val sykmeldtNavn = steg2.personer[steg1.forespoersel.fnr.let(::Fnr)]?.navn ?: UKJENT_NAVN + val avsenderNavn = steg2.personer[steg0.avsenderFnr]?.navn ?: UKJENT_NAVN val inntektsmelding = mapInntektsmelding( forespoersel = steg1.forespoersel, skjema = skjema, - fulltnavnArbeidstaker = steg2.sykmeldt.navn, + fulltnavnArbeidstaker = sykmeldtNavn, virksomhetNavn = orgNavn, - innsenderNavn = steg2.avsender.navn, + innsenderNavn = avsenderNavn, ) if (inntektsmelding.bestemmendeFraværsdag.isBefore(inntektsmelding.inntektsdato)) { @@ -274,33 +281,15 @@ class InnsendingService( val datafeil = when (utloesendeBehov) { - BehovType.HENT_VIRKSOMHET_NAVN -> { - listOf( - Key.VIRKSOMHETER to emptyMap().toJson(), - ) - } - - BehovType.FULLT_NAVN -> { - val sykmeldtFnr = Key.IDENTITETSNUMMER.les(String.serializer(), melding) - val avsenderFnr = Key.ARBEIDSGIVER_ID.les(String.serializer(), melding) - - listOf( - Key.ARBEIDSTAKER_INFORMASJON to tomPerson(sykmeldtFnr).toJson(PersonDato.serializer()), - Key.ARBEIDSGIVER_INFORMASJON to tomPerson(avsenderFnr).toJson(PersonDato.serializer()), - ) - } - - else -> { - emptyList() - } + BehovType.HENT_VIRKSOMHET_NAVN -> Key.VIRKSOMHETER to emptyMap().toJson() + BehovType.HENT_PERSONER -> Key.PERSONER to emptyMap().toJson() + else -> null } - if (datafeil.isNotEmpty()) { - datafeil.onEach { (key, defaultVerdi) -> - redisStore.set(RedisKey.of(fail.transaksjonId, key), defaultVerdi) - } + if (datafeil != null) { + redisStore.set(RedisKey.of(fail.transaksjonId, datafeil.first), datafeil.second) - val meldingMedDefault = datafeil.toMap().plus(melding) + val meldingMedDefault = mapOf(datafeil).plus(melding) onData(meldingMedDefault) } else { @@ -332,10 +321,3 @@ class InnsendingService( } } } - -private fun tomPerson(fnr: String): PersonDato = - PersonDato( - navn = "", - fødselsdato = null, - ident = fnr, - ) diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingIT.kt index 547806ebe..d1b53e390 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingIT.kt @@ -70,7 +70,7 @@ class InnsendingIT : EndToEndTest() { Key.UUID to transaksjonId.toJson(), Key.DATA to "".toJson(), Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.ARBEIDSGIVER_ID to Mock.skjema.identitetsnummer.toJson(), + Key.ARBEIDSGIVER_FNR to Mock.skjema.identitetsnummer.toJson(), Key.SKJEMA_INNTEKTSMELDING to Mock.skjema.toJson(Innsending.serializer()), ) @@ -165,7 +165,7 @@ class InnsendingIT : EndToEndTest() { Key.UUID to transaksjonId.toJson(), Key.DATA to "".toJson(), Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.ARBEIDSGIVER_ID to maxMekker.ident!!.toJson(), + Key.ARBEIDSGIVER_FNR to maxMekker.ident!!.toJson(), Key.SKJEMA_INNTEKTSMELDING to Mock.skjema.toJson(Innsending.serializer()), ) diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt index 4a6dce35f..50e0ce1f2 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt @@ -14,10 +14,10 @@ import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Forespoersel import no.nav.helsearbeidsgiver.felles.ForespoerselType import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.PersonDato import no.nav.helsearbeidsgiver.felles.ResultJson import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.orgMapSerializer +import no.nav.helsearbeidsgiver.felles.json.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisPrefix @@ -72,7 +72,7 @@ class InnsendingServiceIT : EndToEndTest() { Key.UUID to transaksjonId.toJson(), Key.DATA to "".toJson(), Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.ARBEIDSGIVER_ID to Mock.fnrAg.toJson(), + Key.ARBEIDSGIVER_FNR to Mock.fnrAg.toJson(), Key.SKJEMA_INNTEKTSMELDING to gyldigInnsendingRequest.toJson(Innsending.serializer()), ) @@ -99,7 +99,7 @@ class InnsendingServiceIT : EndToEndTest() { .also { it shouldContainKey Key.DATA - val data = it[Key.DATA]?.toMap().orEmpty() + val data = it[Key.DATA].shouldNotBeNull().toMap() val tidligereInntektsmeldingResult = ResultJson(success = tidligereInntektsmelding.toJson(Inntektsmelding.serializer())) data[Key.LAGRET_INNTEKTSMELDING]?.fromJson(ResultJson.serializer()) shouldBe tidligereInntektsmeldingResult @@ -121,22 +121,17 @@ class InnsendingServiceIT : EndToEndTest() { // Sykmeldt og innsender hentet messages .filter(EventName.INSENDING_STARTED) - .filter(Key.ARBEIDSTAKER_INFORMASJON) - .filter(Key.ARBEIDSGIVER_INFORMASJON) + .filter(Key.PERSONER, nestedData = true) .firstAsMap() .verifiserTransaksjonId(transaksjonId) .verifiserForespoerselId() .also { - it shouldContainKey Key.DATA + val data = it[Key.DATA].shouldNotBeNull().toMap() shouldNotThrowAny { - it[Key.ARBEIDSTAKER_INFORMASJON] - .shouldNotBeNull() - .fromJson(PersonDato.serializer()) - - it[Key.ARBEIDSGIVER_INFORMASJON] + data[Key.PERSONER] .shouldNotBeNull() - .fromJson(PersonDato.serializer()) + .fromJson(personMapSerializer) } } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/NotifikasjonIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/NotifikasjonIT.kt index e73f96b27..ea24f15fb 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/NotifikasjonIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/NotifikasjonIT.kt @@ -8,7 +8,7 @@ import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Forespoersel import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.PersonDato +import no.nav.helsearbeidsgiver.felles.json.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.test.mock.mockForespoersel @@ -16,6 +16,7 @@ import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndT import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.fromJsonToString import no.nav.helsearbeidsgiver.utils.json.fromJson import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer +import no.nav.helsearbeidsgiver.utils.json.serializer.set import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig import no.nav.helsearbeidsgiver.utils.wrapper.Fnr @@ -43,20 +44,22 @@ class NotifikasjonIT : EndToEndTest() { messages .filter(EventName.SAK_OPPRETT_REQUESTED) - .filter(BehovType.FULLT_NAVN) + .filter(BehovType.HENT_PERSONER) .firstAsMap() .also { - it[Key.IDENTITETSNUMMER]?.fromJson(Fnr.serializer()) shouldBe Mock.fnr - it[Key.FORESPOERSEL_ID]?.fromJson(UuidSerializer) shouldBe Mock.forespoerselId + val data = it[Key.DATA].shouldNotBeNull().toMap() + data[Key.FORESPOERSEL_ID]?.fromJson(UuidSerializer) shouldBe Mock.forespoerselId + data[Key.FNR_LISTE]?.fromJson(Fnr.serializer().set()) shouldBe setOf(Mock.fnr) } messages .filter(EventName.SAK_OPPRETT_REQUESTED) - .filter(Key.ARBEIDSTAKER_INFORMASJON) + .filter(Key.PERSONER, nestedData = true) .firstAsMap() .also { - it[Key.ARBEIDSTAKER_INFORMASJON] - ?.fromJson(PersonDato.serializer()) + val data = it[Key.DATA].shouldNotBeNull().toMap() + data[Key.PERSONER] + ?.fromJson(personMapSerializer) .shouldNotBeNull() } @@ -174,20 +177,22 @@ class NotifikasjonIT : EndToEndTest() { messages .filter(EventName.MANUELL_OPPRETT_SAK_REQUESTED) - .filter(BehovType.FULLT_NAVN) + .filter(BehovType.HENT_PERSONER) .firstAsMap() .also { - it[Key.IDENTITETSNUMMER]?.fromJson(Fnr.serializer()) shouldBe Mock.fnr - it[Key.FORESPOERSEL_ID]?.fromJson(UuidSerializer) shouldBe Mock.forespoerselId + val data = it[Key.DATA].shouldNotBeNull().toMap() + data[Key.FORESPOERSEL_ID]?.fromJson(UuidSerializer) shouldBe Mock.forespoerselId + data[Key.FNR_LISTE]?.fromJson(Fnr.serializer().set()) shouldBe setOf(Mock.fnr) } messages .filter(EventName.MANUELL_OPPRETT_SAK_REQUESTED) - .filter(Key.ARBEIDSTAKER_INFORMASJON) + .filter(Key.PERSONER, nestedData = true) .firstAsMap() .also { - it[Key.ARBEIDSTAKER_INFORMASJON] - ?.fromJson(PersonDato.serializer()) + val data = it[Key.DATA].shouldNotBeNull().toMap() + data[Key.PERSONER] + ?.fromJson(personMapSerializer) .shouldNotBeNull() } diff --git a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/ManuellOpprettSakService.kt b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/ManuellOpprettSakService.kt index 046848d40..fe508b5aa 100644 --- a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/ManuellOpprettSakService.kt +++ b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/ManuellOpprettSakService.kt @@ -7,8 +7,10 @@ import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Forespoersel import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.Person import no.nav.helsearbeidsgiver.felles.PersonDato import no.nav.helsearbeidsgiver.felles.json.les +import no.nav.helsearbeidsgiver.felles.json.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish @@ -20,6 +22,8 @@ import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger +import no.nav.helsearbeidsgiver.utils.pipe.orDefault +import no.nav.helsearbeidsgiver.utils.wrapper.Fnr import java.util.UUID class ManuellOpprettSakService( @@ -45,7 +49,7 @@ class ManuellOpprettSakService( override val dataKeys = setOf( Key.FORESPOERSEL_SVAR, - Key.ARBEIDSTAKER_INFORMASJON, + Key.PERSONER, Key.SAK_ID, Key.PERSISTERT_SAK_ID, ) @@ -60,7 +64,7 @@ class ManuellOpprettSakService( ) data class Steg2( - val sykmeldt: PersonDato, + val personer: Map, ) data class Steg3( @@ -84,7 +88,7 @@ class ManuellOpprettSakService( override fun lesSteg2(melding: Map): Steg2 = Steg2( - sykmeldt = Key.ARBEIDSTAKER_INFORMASJON.les(PersonDato.serializer(), melding), + personer = Key.PERSONER.les(personMapSerializer, melding), ) override fun lesSteg3(melding: Map): Steg3 = @@ -112,10 +116,13 @@ class ManuellOpprettSakService( ) { rapid.publish( Key.EVENT_NAME to eventName.toJson(), - Key.BEHOV to BehovType.FULLT_NAVN.toJson(), + Key.BEHOV to BehovType.HENT_PERSONER.toJson(), Key.UUID to steg0.transaksjonId.toJson(), - Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), - Key.IDENTITETSNUMMER to steg1.forespoersel.fnr.toJson(), + Key.DATA to + mapOf( + Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), + Key.FNR_LISTE to setOf(steg1.forespoersel.fnr).toJson(String.serializer()), + ).toJson(), ) } @@ -124,13 +131,23 @@ class ManuellOpprettSakService( steg1: Steg1, steg2: Steg2, ) { + val sykmeldt = + steg2.personer[steg1.forespoersel.fnr.let(::Fnr)] + ?.let { + PersonDato( + it.navn, + it.foedselsdato, + it.fnr.verdi, + ) + }.orDefault(PersonDato("Ukjent person", null, steg1.forespoersel.fnr)) + rapid.publish( Key.EVENT_NAME to eventName.toJson(), Key.BEHOV to BehovType.OPPRETT_SAK.toJson(), Key.UUID to steg0.transaksjonId.toJson(), Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), Key.ORGNRUNDERENHET to steg1.forespoersel.orgnr.toJson(), - Key.ARBEIDSTAKER_INFORMASJON to steg2.sykmeldt.toJson(PersonDato.serializer()), + Key.ARBEIDSTAKER_INFORMASJON to sykmeldt.toJson(PersonDato.serializer()), ) } diff --git a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakService.kt b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakService.kt index 1a0fbdb42..13178983a 100644 --- a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakService.kt +++ b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakService.kt @@ -6,9 +6,11 @@ import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.Person import no.nav.helsearbeidsgiver.felles.PersonDato import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.lesOrNull +import no.nav.helsearbeidsgiver.felles.json.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail @@ -23,6 +25,7 @@ import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.MdcUtils import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger +import no.nav.helsearbeidsgiver.utils.pipe.orDefault import no.nav.helsearbeidsgiver.utils.wrapper.Fnr import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr import java.util.UUID @@ -50,7 +53,7 @@ class OpprettSakService( ) override val dataKeys = setOf( - Key.ARBEIDSTAKER_INFORMASJON, + Key.PERSONER, Key.SAK_ID, Key.PERSISTERT_SAK_ID, ) @@ -63,7 +66,7 @@ class OpprettSakService( ) data class Steg1( - val sykmeldt: PersonDato, + val personer: Map, ) data class Steg2( @@ -84,7 +87,7 @@ class OpprettSakService( override fun lesSteg1(melding: Map): Steg1 = Steg1( - sykmeldt = Key.ARBEIDSTAKER_INFORMASJON.les(PersonDato.serializer(), melding), + personer = Key.PERSONER.les(personMapSerializer, melding), ) override fun lesSteg2(melding: Map): Steg2 = @@ -100,10 +103,13 @@ class OpprettSakService( override fun utfoerSteg0(steg0: Steg0) { rapid.publish( Key.EVENT_NAME to eventName.toJson(), - Key.BEHOV to BehovType.FULLT_NAVN.toJson(), + Key.BEHOV to BehovType.HENT_PERSONER.toJson(), Key.UUID to steg0.transaksjonId.toJson(), - Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), - Key.IDENTITETSNUMMER to steg0.fnr.toJson(), + Key.DATA to + mapOf( + Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), + Key.FNR_LISTE to setOf(steg0.fnr).toJson(Fnr.serializer()), + ).toJson(), ) } @@ -111,13 +117,23 @@ class OpprettSakService( steg0: Steg0, steg1: Steg1, ) { + val sykmeldt = + steg1.personer[steg0.fnr] + ?.let { + PersonDato( + it.navn, + it.foedselsdato, + it.fnr.verdi, + ) + }.orDefault(PersonDato("Ukjent person", null, steg0.fnr.verdi)) + rapid.publish( Key.EVENT_NAME to eventName.toJson(), Key.BEHOV to BehovType.OPPRETT_SAK.toJson(), Key.UUID to steg0.transaksjonId.toJson(), Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), Key.ORGNRUNDERENHET to steg0.orgnr.toJson(), - Key.ARBEIDSTAKER_INFORMASJON to steg1.sykmeldt.toJson(PersonDato.serializer()), + Key.ARBEIDSTAKER_INFORMASJON to sykmeldt.toJson(PersonDato.serializer()), ) } @@ -158,13 +174,12 @@ class OpprettSakService( Log.transaksjonId(fail.transaksjonId), ) { val utloesendeBehov = Key.BEHOV.lesOrNull(BehovType.serializer(), fail.utloesendeMelding.toMap()) - if (utloesendeBehov == BehovType.FULLT_NAVN) { - val fnr = Key.IDENTITETSNUMMER.les(String.serializer(), melding) - val ukjentPersonJson = PersonDato("Ukjent person", null, fnr).toJson(PersonDato.serializer()) + if (utloesendeBehov == BehovType.HENT_PERSONER) { + val tomtPersonerMap = emptyMap().toJson() - redisStore.set(RedisKey.of(fail.transaksjonId, Key.ARBEIDSTAKER_INFORMASJON), ukjentPersonJson) + redisStore.set(RedisKey.of(fail.transaksjonId, Key.PERSONER), tomtPersonerMap) - val meldingMedDefault = mapOf(Key.ARBEIDSTAKER_INFORMASJON to ukjentPersonJson).plus(melding) + val meldingMedDefault = mapOf(Key.PERSONER to tomtPersonerMap).plus(melding) onData(meldingMedDefault) } diff --git a/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakServiceTest.kt b/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakServiceTest.kt index cf619c352..590e8effb 100644 --- a/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakServiceTest.kt +++ b/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/service/OpprettSakServiceTest.kt @@ -7,7 +7,6 @@ import no.nav.helse.rapids_rivers.testsupport.TestRapid import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.PersonDato import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisKey @@ -65,7 +64,7 @@ class OpprettSakServiceTest { utloesendeMelding = JsonObject( mapOf( - Key.BEHOV.str to BehovType.FULLT_NAVN.toJson(), + Key.BEHOV.str to BehovType.HENT_PERSONER.toJson(), ), ), ).toJson(Fail.serializer()), @@ -75,10 +74,7 @@ class OpprettSakServiceTest { ) verify { - mockRedis.store.set( - RedisKey.of(transaksjonId, Key.ARBEIDSTAKER_INFORMASJON), - PersonDato("Ukjent person", null, fnr.verdi).toJson(PersonDato.serializer()), - ) + mockRedis.store.set(RedisKey.of(transaksjonId, Key.PERSONER), emptyMap().toJson()) } } }