diff --git a/src/main/kotlin/no/nav/syfo/client/dokarkiv/OppdaterRequest.kt b/src/main/kotlin/no/nav/syfo/client/dokarkiv/OppdaterRequest.kt index c3968a4e..b2e3484c 100644 --- a/src/main/kotlin/no/nav/syfo/client/dokarkiv/OppdaterRequest.kt +++ b/src/main/kotlin/no/nav/syfo/client/dokarkiv/OppdaterRequest.kt @@ -41,7 +41,11 @@ data class Sak( val arkivsaksystem: String? = null, ) -fun mapOppdaterRequest(fnr: String): OppdaterJournalpostRequest = +fun mapOppdaterRequest( + fnr: String, + dokumentId: String, + dokumentTittel: String, +): OppdaterJournalpostRequest = OppdaterJournalpostRequest( bruker = Bruker( @@ -50,4 +54,5 @@ fun mapOppdaterRequest(fnr: String): OppdaterJournalpostRequest = ), sak = Sak("GENERELL_SAK"), tema = "SYK", + dokumenter = listOf(Dokument(dokumentId, dokumentTittel)), ) diff --git a/src/main/kotlin/no/nav/syfo/domain/Periode.kt b/src/main/kotlin/no/nav/syfo/domain/Periode.kt index 5ba56c6e..a1b81455 100644 --- a/src/main/kotlin/no/nav/syfo/domain/Periode.kt +++ b/src/main/kotlin/no/nav/syfo/domain/Periode.kt @@ -1,8 +1,22 @@ package no.nav.syfo.domain import java.time.LocalDate +import java.time.format.DateTimeFormatter data class Periode( val fom: LocalDate, val tom: LocalDate, ) + +val norskDatoFormat: DateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy") + +fun LocalDate.tilNorskFormat(): String = format(norskDatoFormat) + +fun List.tilKortFormat(): String? = + if (isEmpty()) { + null + } else if (size == 1) { + "${first().fom.tilNorskFormat()} - ${first().tom.tilNorskFormat()}" + } else { + "${first().fom.tilNorskFormat()} - [...] - ${last().tom.tilNorskFormat()}" + } diff --git a/src/main/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumer.kt b/src/main/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumer.kt index 0fa7af19..92fbdf77 100644 --- a/src/main/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumer.kt +++ b/src/main/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumer.kt @@ -6,6 +6,8 @@ import no.nav.syfo.client.dokarkiv.DokArkivClient import no.nav.syfo.client.dokarkiv.mapFeilregistrertRequest import no.nav.syfo.client.dokarkiv.mapOppdaterRequest import no.nav.syfo.domain.InngaendeJournalpost +import no.nav.syfo.domain.inntektsmelding.Inntektsmelding +import no.nav.syfo.util.tilDokumentbeskrivelse class BehandleInngaaendeJournalConsumer( private val dokArkivClient: DokArkivClient, @@ -15,16 +17,16 @@ class BehandleInngaaendeJournalConsumer( */ fun oppdaterJournalpost( - fnr: String, + inntektsmelding: Inntektsmelding, inngaendeJournalpost: InngaendeJournalpost, feilregistrert: Boolean, ) { val journalpostId = inngaendeJournalpost.journalpostId val req = if (feilregistrert) { - mapFeilregistrertRequest(fnr, inngaendeJournalpost.dokumentId) + mapFeilregistrertRequest(inntektsmelding.fnr, inngaendeJournalpost.dokumentId) } else { - mapOppdaterRequest(fnr) + mapOppdaterRequest(inntektsmelding.fnr, inngaendeJournalpost.dokumentId, inntektsmelding.tilDokumentbeskrivelse()) } runBlocking { dokArkivClient.oppdaterJournalpost( diff --git a/src/main/kotlin/no/nav/syfo/service/JournalpostService.kt b/src/main/kotlin/no/nav/syfo/service/JournalpostService.kt index 83c8a958..d7c1439c 100644 --- a/src/main/kotlin/no/nav/syfo/service/JournalpostService.kt +++ b/src/main/kotlin/no/nav/syfo/service/JournalpostService.kt @@ -18,7 +18,7 @@ class JournalpostService( fun ferdigstillJournalpost(inntektsmelding: Inntektsmelding) { val journalpost = hentInngaendeJournalpost(inntektsmelding) - behandleInngaaendeJournalConsumer.oppdaterJournalpost(inntektsmelding.fnr, journalpost, false) + behandleInngaaendeJournalConsumer.oppdaterJournalpost(inntektsmelding, journalpost, false) behandleInngaaendeJournalConsumer.ferdigstillJournalpost(journalpost) metrikk.tellInntektsmeldingerJournalfort() } @@ -37,7 +37,7 @@ class JournalpostService( fun feilregistrerJournalpost(inntektsmelding: Inntektsmelding) { val journalpost = hentInngaendeJournalpost(inntektsmelding) - behandleInngaaendeJournalConsumer.oppdaterJournalpost(inntektsmelding.fnr, journalpost, true) + behandleInngaaendeJournalConsumer.oppdaterJournalpost(inntektsmelding, journalpost, true) behandleInngaaendeJournalConsumer.ferdigstillJournalpost(journalpost) behandleInngaaendeJournalConsumer.feilregistrerJournalpost(inntektsmelding.journalpostId) } diff --git a/src/main/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtils.kt b/src/main/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtils.kt new file mode 100644 index 00000000..552e3282 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtils.kt @@ -0,0 +1,11 @@ +package no.nav.syfo.util + +import no.nav.helsearbeidsgiver.utils.pipe.orDefault +import no.nav.syfo.domain.inntektsmelding.Inntektsmelding +import no.nav.syfo.domain.tilKortFormat + +fun Inntektsmelding.tilDokumentbeskrivelse(): String { + val orgnr = this.arbeidsgiverOrgnummer.let { if (it.isNullOrBlank()) "(ingen orgnr)" else it } + val agp = this.arbeidsgiverperioder.tilKortFormat().orDefault("(ingen agp)") + return "Inntektsmelding-$orgnr-$agp" +} diff --git a/src/test/kotlin/no/nav/syfo/client/dokarkiv/DokArkivClientTest.kt b/src/test/kotlin/no/nav/syfo/client/dokarkiv/DokArkivClientTest.kt index 90c0465c..f101ce33 100644 --- a/src/test/kotlin/no/nav/syfo/client/dokarkiv/DokArkivClientTest.kt +++ b/src/test/kotlin/no/nav/syfo/client/dokarkiv/DokArkivClientTest.kt @@ -34,7 +34,7 @@ class DokArkivClientTest { fun `Skal oppdatere journalpost når man får status OK`() { dokArkivClient = DokArkivClient("", buildHttpClientText(HttpStatusCode.OK), ::mockAccessToken) runBlocking { - val req = mapOppdaterRequest("123") + val req = mapOppdaterRequest("123", "dok123", "nyDokumentTittel") val resultat = dokArkivClient.oppdaterJournalpost("111", req, "") assertEquals(HttpStatusCode.OK, resultat) } @@ -54,7 +54,7 @@ class DokArkivClientTest { @Test fun `Skal håndtere at oppdatering av journalpost feiler`() { dokArkivClient = DokArkivClient("", buildHttpClientText(HttpStatusCode.InternalServerError, ""), ::mockAccessToken) - val req = mapOppdaterRequest("123") + val req = mapOppdaterRequest("123", "dok123", "nyDokumentTittel") runBlocking { assertThrows { dokArkivClient.oppdaterJournalpost("111", req, "") diff --git a/src/test/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumerTest.kt b/src/test/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumerTest.kt index d814ba22..72ada8b3 100644 --- a/src/test/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumerTest.kt +++ b/src/test/kotlin/no/nav/syfo/service/BehandleInngaaendeJournalConsumerTest.kt @@ -1,10 +1,12 @@ package no.nav.syfo.service +import io.mockk.coVerifySequence import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.runBlocking import no.nav.syfo.client.dokarkiv.DokArkivClient import no.nav.syfo.domain.InngaendeJournalpost +import no.nav.syfo.grunnleggendeInntektsmelding import org.junit.jupiter.api.Test class BehandleInngaaendeJournalConsumerTest { @@ -40,11 +42,10 @@ class BehandleInngaaendeJournalConsumerTest { dokumentId = "dokumentId", journalpostId = "journalpostId", ) - behandleInngaaendeJournalConsumer.oppdaterJournalpost("fnr", inngaendeJournalpost, false) - verify { - runBlocking { - dokArkivClient.oppdaterJournalpost("journalpostId", any(), any()) - } + val dokumentTittel = "Inntektsmelding-(ingen orgnr)-01.01.2019 - 01.02.2019" + behandleInngaaendeJournalConsumer.oppdaterJournalpost(grunnleggendeInntektsmelding.copy(arbeidsgiverOrgnummer = null), inngaendeJournalpost, false) + coVerifySequence { + dokArkivClient.oppdaterJournalpost("journalpostId", match { it.dokumenter!!.first().tittel == dokumentTittel }, any()) } // TODO - Asserten under må virke // assertThat(captor.captured.inngaaendeJournalpost.avsender.avsenderId).isEqualTo("10101033333") diff --git a/src/test/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtilsTest.kt b/src/test/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtilsTest.kt new file mode 100644 index 00000000..501fd68e --- /dev/null +++ b/src/test/kotlin/no/nav/syfo/util/DokumentbeskrivelseUtilsTest.kt @@ -0,0 +1,38 @@ +package no.nav.syfo.util + +import no.nav.syfo.grunnleggendeInntektsmelding +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DokumentbeskrivelseUtilsTest { + @Test + fun `1 agp i dokumentbeskrivelse`() { + assertThat(grunnleggendeInntektsmelding.tilDokumentbeskrivelse()) + .isEqualTo("Inntektsmelding-1234-01.01.2019 - 01.02.2019") + } + + @Test + fun `2 agp i dokumentbeskrivelse`() { + val periode = grunnleggendeInntektsmelding.arbeidsgiverperioder.first() + assertThat(grunnleggendeInntektsmelding.copy(arbeidsgiverperioder = listOf(periode, periode)).tilDokumentbeskrivelse()) + .isEqualTo("Inntektsmelding-1234-01.01.2019 - [...] - 01.02.2019") + } + + @Test + fun `ingen agp i dokumentbeskrivelse`() { + assertThat(grunnleggendeInntektsmelding.copy(arbeidsgiverperioder = emptyList()).tilDokumentbeskrivelse()) + .isEqualTo("Inntektsmelding-1234-(ingen agp)") + } + + @Test + fun `ingen orgnr i dokumentbeskrivelse`() { + assertThat(grunnleggendeInntektsmelding.copy(arbeidsgiverOrgnummer = null).tilDokumentbeskrivelse()) + .isEqualTo("Inntektsmelding-(ingen orgnr)-01.01.2019 - 01.02.2019") + } + + @Test + fun `tom string orgnr i dokumentbeskrivelse`() { + assertThat(grunnleggendeInntektsmelding.copy(arbeidsgiverOrgnummer = "").tilDokumentbeskrivelse()) + .isEqualTo("Inntektsmelding-(ingen orgnr)-01.01.2019 - 01.02.2019") + } +}