Skip to content

Commit

Permalink
IS-2559: Ikke lage duplikate relasjoner for suspenderte behandlere
Browse files Browse the repository at this point in the history
  • Loading branch information
geir-waagboe committed Aug 13, 2024
1 parent ec6627f commit b6af355
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 27 deletions.
47 changes: 24 additions & 23 deletions src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
38 changes: 34 additions & 4 deletions src/test/kotlin/no/nav/syfo/behandler/BehandlerServiceSpek.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit b6af355

Please sign in to comment.