diff --git a/src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt b/src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt index f833a74d..72a34486 100644 --- a/src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt +++ b/src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt @@ -198,32 +198,33 @@ class BehandlerService( existingBehandler = pBehandler, ) } + if (!pBehandler.suspendert) { + val pBehandlereForArbeidstakerList = + database.getBehandlerAndRelasjonstypeList( + arbeidstakerIdent = arbeidstaker.arbeidstakerPersonident, + ) - val pBehandlereForArbeidstakerList = - database.getBehandlerAndRelasjonstypeList( - arbeidstakerIdent = arbeidstaker.arbeidstakerPersonident, - ) - - val isBytteAvFastlege = relasjonstype == BehandlerArbeidstakerRelasjonstype.FASTLEGE && pBehandlereForArbeidstakerList - .filter { (_, behandlerType) -> behandlerType == BehandlerArbeidstakerRelasjonstype.FASTLEGE } - .map { (pBehandler, _) -> pBehandler.id }.firstOrNull() != pBehandler.id + val isBytteAvFastlege = relasjonstype == BehandlerArbeidstakerRelasjonstype.FASTLEGE && pBehandlereForArbeidstakerList + .filter { (_, behandlerType) -> behandlerType == BehandlerArbeidstakerRelasjonstype.FASTLEGE } + .map { (pBehandler, _) -> pBehandler.id }.firstOrNull() != pBehandler.id - val behandlerIkkeKnyttetTilArbeidstaker = !pBehandlereForArbeidstakerList - .filter { (_, behandlerType) -> behandlerType == relasjonstype } - .map { (pBehandler, _) -> pBehandler.id }.contains(pBehandler.id) + val behandlerIkkeKnyttetTilArbeidstaker = !pBehandlereForArbeidstakerList + .filter { (_, behandlerType) -> behandlerType == relasjonstype } + .map { (pBehandler, _) -> pBehandler.id }.contains(pBehandler.id) - if (isBytteAvFastlege || behandlerIkkeKnyttetTilArbeidstaker) { - addBehandlerToArbeidstaker( - arbeidstaker = arbeidstaker, - relasjonstype = relasjonstype, - behandlerId = pBehandler.id, - ) - } else if (relasjonstype == BehandlerArbeidstakerRelasjonstype.SYKMELDER) { - database.updateBehandlerArbeidstakerRelasjon( - arbeidstaker = arbeidstaker, - relasjonstype = relasjonstype, - behandlerId = pBehandler.id, - ) + if (isBytteAvFastlege || behandlerIkkeKnyttetTilArbeidstaker) { + addBehandlerToArbeidstaker( + arbeidstaker = arbeidstaker, + relasjonstype = relasjonstype, + behandlerId = pBehandler.id, + ) + } else if (relasjonstype == BehandlerArbeidstakerRelasjonstype.SYKMELDER) { + database.updateBehandlerArbeidstakerRelasjon( + arbeidstaker = arbeidstaker, + relasjonstype = relasjonstype, + behandlerId = pBehandler.id, + ) + } } return pBehandler.toBehandler( diff --git a/src/test/kotlin/no/nav/syfo/behandler/BehandlerServiceSpek.kt b/src/test/kotlin/no/nav/syfo/behandler/BehandlerServiceSpek.kt index 039b27ef..b9d6e50e 100644 --- a/src/test/kotlin/no/nav/syfo/behandler/BehandlerServiceSpek.kt +++ b/src/test/kotlin/no/nav/syfo/behandler/BehandlerServiceSpek.kt @@ -4,14 +4,12 @@ import io.ktor.server.testing.* import io.mockk.* import no.nav.syfo.behandler.database.* import no.nav.syfo.behandler.database.domain.toBehandler +import no.nav.syfo.behandler.database.getBehandlerByArbeidstaker import no.nav.syfo.behandler.fastlege.FastlegeClient import no.nav.syfo.behandler.domain.* import no.nav.syfo.behandler.fastlege.toBehandler import no.nav.syfo.behandler.partnerinfo.PartnerinfoClient -import no.nav.syfo.testhelper.ExternalMockEnvironment -import no.nav.syfo.testhelper.UserConstants -import no.nav.syfo.testhelper.createBehandlerForArbeidstaker -import no.nav.syfo.testhelper.dropData +import no.nav.syfo.testhelper.* import no.nav.syfo.testhelper.generator.generateFastlegeResponse import org.amshove.kluent.* import org.junit.Assert.assertThrows @@ -194,6 +192,38 @@ class BehandlerServiceSpek : Spek({ ) pBehandlerList.size shouldBeEqualTo 1 } + it("oppretter ikke duplikate koblinger til arbeidstaker for suspendert behandler") { + val behandler = generateFastlegeResponse().toBehandler(UserConstants.PARTNERID) + behandlerService.createOrGetBehandler( + behandler, + Arbeidstaker( + arbeidstakerPersonident = UserConstants.ARBEIDSTAKER_FNR, + mottatt = OffsetDateTime.now(), + ), + relasjonstype = BehandlerArbeidstakerRelasjonstype.FASTLEGE, + ) + val pBehandlerListBefore = database.getBehandlerArbeidstakerRelasjoner( + UserConstants.ARBEIDSTAKER_FNR, + ) + pBehandlerListBefore.size shouldBeEqualTo 1 + behandlerService.updateBehandlerSuspensjon(behandler.personident!!, true) + behandlerService.createOrGetBehandler( + behandler, + Arbeidstaker( + arbeidstakerPersonident = UserConstants.ARBEIDSTAKER_FNR, + mottatt = OffsetDateTime.now(), + ), + relasjonstype = BehandlerArbeidstakerRelasjonstype.FASTLEGE, + ) + val pBehandlerListAfter = database.getBehandlerArbeidstakerRelasjoner( + UserConstants.ARBEIDSTAKER_FNR, + ) + pBehandlerListAfter.size shouldBeEqualTo 1 + val pBehandlerList = database.getBehandlerByArbeidstaker( + UserConstants.ARBEIDSTAKER_FNR, + ) + pBehandlerList.size shouldBeEqualTo 0 + } it("lagrer én behandler koblet til begge arbeidstakere når kalt for to ulike arbeidstakere med samme behandler") { val behandler = generateFastlegeResponse().toBehandler(UserConstants.PARTNERID) behandlerService.createOrGetBehandler(