Skip to content

Commit

Permalink
♻️ stans automatisk behandling er historikkinnslag
Browse files Browse the repository at this point in the history
* og knyttes til generasjon

Co-authored-by: Christian Bülow Skovborg <[email protected]>
  • Loading branch information
elitho and chsko committed Oct 23, 2024
1 parent 5731112 commit ea3bf5d
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ sealed interface HistorikkinnslagDto {

fun totrinnsvurderingAutomatiskRetur(): TotrinnsvurderingAutomatiskRetur =
TotrinnsvurderingAutomatiskRetur(tidspunkt = LocalDateTime.now())

fun automatiskBehandlingStanset(): AutomatiskBehandlingStanset = AutomatiskBehandlingStanset(tidspunkt = LocalDateTime.now())
}
}

Expand Down Expand Up @@ -109,3 +111,10 @@ data class TotrinnsvurderingAutomatiskRetur(
override val notat: NotatDto? = null
override val saksbehandler: SaksbehandlerDto? = null
}

data class AutomatiskBehandlingStanset(
override val tidspunkt: LocalDateTime,
) : HistorikkinnslagDto {
override val notat: NotatDto? = null
override val saksbehandler: SaksbehandlerDto? = null
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ import no.nav.helse.modell.person.PersonDao
import no.nav.helse.modell.risiko.RisikovurderingDao
import no.nav.helse.modell.stoppautomatiskbehandling.StansAutomatiskBehandlingMediator
import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingService
import no.nav.helse.modell.utbetaling.UtbetalingDao
import no.nav.helse.modell.vedtaksperiode.GenerasjonDao
import no.nav.helse.modell.vergemal.VergemålDao
import no.nav.helse.rapids_rivers.RapidsConnection
Expand Down Expand Up @@ -96,7 +95,6 @@ internal class SpesialistApp(
private val personDao = PersonDao(dataSource)
private val personApiDao = PersonApiDao(dataSource)
private val oppgaveDao = OppgaveDao(dataSource)
private val utbetalingDao = UtbetalingDao(dataSource)
private val oppgaveApiDao = OppgaveApiDao(dataSource)
private val periodehistorikkApiDao = PeriodehistorikkApiDao(dataSource)
private val pgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource)
Expand Down Expand Up @@ -144,7 +142,6 @@ internal class SpesialistApp(
stansAutomatiskBehandlingDao,
pgHistorikkinnslagRepository,
oppgaveDao,
utbetalingDao,
notatDao,
) { subsumsjonsmelder }
private val totrinnsvurderingService =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.helse.db

import kotliquery.sessionOf
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.periodehistorikk.AutomatiskBehandlingStanset
import no.nav.helse.modell.periodehistorikk.AvventerTotrinnsvurdering
import no.nav.helse.modell.periodehistorikk.FjernetFraPåVent
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
Expand Down Expand Up @@ -55,6 +56,7 @@ class PgHistorikkinnslagRepository(
)?.toInt()
lagre(historikkinnslag, generasjonId, notatId)
}
is AutomatiskBehandlingStanset -> lagre(historikkinnslag, generasjonId, null)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.helse.db

import kotliquery.Session
import kotliquery.queryOf
import no.nav.helse.modell.periodehistorikk.AutomatiskBehandlingStanset
import no.nav.helse.modell.periodehistorikk.AvventerTotrinnsvurdering
import no.nav.helse.modell.periodehistorikk.FjernetFraPåVent
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
Expand Down Expand Up @@ -53,6 +54,7 @@ class TransactionalPeriodehistorikkDao(
is AvventerTotrinnsvurdering -> "TOTRINNSVURDERING_TIL_GODKJENNING" // TODO: Mangler å migrere typen i databasen
is TotrinnsvurderingRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
is TotrinnsvurderingAutomatiskRetur -> "TOTRINNSVURDERING_RETUR" // TODO: Mangler å migrere typen i databasen
is AutomatiskBehandlingStanset -> "STANS_AUTOMATISK_BEHANDLING" // TODO: Mangler å migrere typen i databasen
}

override fun lagre(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ import no.nav.helse.db.TransactionalNotatDao
import no.nav.helse.db.TransactionalOppgaveDao
import no.nav.helse.db.TransactionalPeriodehistorikkDao
import no.nav.helse.db.TransactionalStansAutomatiskBehandlingDao
import no.nav.helse.db.TransactionalUtbetalingDao
import no.nav.helse.db.UtbetalingRepository
import no.nav.helse.mediator.Subsumsjonsmelder
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.saksbehandler.Saksbehandler
import no.nav.helse.modell.saksbehandler.handlinger.Personhandling
import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak.AKTIVITETSKRAV
Expand All @@ -28,7 +27,6 @@ import no.nav.helse.modell.vilkårsprøving.SubsumsjonEvent
import no.nav.helse.spesialist.api.StansAutomatiskBehandlinghåndterer
import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.graphql.schema.UnntattFraAutomatiskGodkjenning
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType.STANS_AUTOMATISK_BEHANDLING
import org.slf4j.LoggerFactory
import java.time.LocalDateTime
import java.util.UUID
Expand All @@ -37,7 +35,6 @@ class StansAutomatiskBehandlingMediator(
private val stansAutomatiskBehandlingRepository: StansAutomatiskBehandlingRepository,
private val historikkinnslagRepository: HistorikkinnslagRepository,
private val oppgaveRepository: OppgaveRepository,
private val utbetalingRepository: UtbetalingRepository,
private val notatRepository: NotatRepository,
private val subsumsjonsmelderProvider: () -> Subsumsjonsmelder,
) : StansAutomatiskBehandlinghåndterer {
Expand Down Expand Up @@ -89,25 +86,22 @@ class StansAutomatiskBehandlingMediator(
return stoppmeldinger.isNotEmpty()
}

override fun nyStansAutomatiskBehandlinghåndterer(transactionalSession: TransactionalSession): StansAutomatiskBehandlinghåndterer {
return StansAutomatiskBehandlingMediator(
override fun nyStansAutomatiskBehandlinghåndterer(transactionalSession: TransactionalSession): StansAutomatiskBehandlinghåndterer =
StansAutomatiskBehandlingMediator(
TransactionalStansAutomatiskBehandlingDao(transactionalSession),
TransactionalPeriodehistorikkDao(transactionalSession),
TransactionalOppgaveDao(transactionalSession),
TransactionalUtbetalingDao(transactionalSession),
TransactionalNotatDao(transactionalSession),
subsumsjonsmelderProvider,
)
}

private fun lagrePeriodehistorikk(fødselsnummer: String) {
val utbetalingId =
oppgaveRepository.finnOppgaveId(fødselsnummer)?.let { oppgaveRepository.finnUtbetalingId(it) }
?: utbetalingRepository.sisteUtbetalingIdFor(fødselsnummer)
if (utbetalingId != null) {
historikkinnslagRepository.lagre(STANS_AUTOMATISK_BEHANDLING, null, utbetalingId, null)
val oppgaveId = oppgaveRepository.finnOppgaveId(fødselsnummer)
if (oppgaveId != null) {
val innslag = HistorikkinnslagDto.automatiskBehandlingStanset()
historikkinnslagRepository.lagre(innslag, oppgaveId)
} else {
sikkerlogg.error("Fant ikke oppgave for $fødselsnummer. Fikk ikke lagret historikkinnslag om stans av automatisk behandling")
sikkerlogg.info("Fant ikke oppgave for $fødselsnummer. Fikk ikke lagret historikkinnslag om stans av automatisk behandling")
}
}

Expand Down Expand Up @@ -161,7 +155,9 @@ class StansAutomatiskBehandlingMediator(
dselsnummer: String,
vedtaksperiodeId: UUID,
organisasjonsnummer: String,
) = stoppmeldinger.byggSubsumsjonEventer(fødselsnummer, vedtaksperiodeId, organisasjonsnummer).toMutableList()
) = stoppmeldinger
.byggSubsumsjonEventer(fødselsnummer, vedtaksperiodeId, organisasjonsnummer)
.toMutableList()
.apply {
if (none { it.paragraf == "8-4" }) {
add(åtteFireOppfyltEvent(fødselsnummer, vedtaksperiodeId, organisasjonsnummer))
Expand Down
3 changes: 0 additions & 3 deletions spesialist-selve/src/test/kotlin/TestMediator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import no.nav.helse.modell.overstyring.OverstyringDao
import no.nav.helse.modell.person.PersonDao
import no.nav.helse.modell.risiko.RisikovurderingDao
import no.nav.helse.modell.stoppautomatiskbehandling.StansAutomatiskBehandlingMediator
import no.nav.helse.modell.utbetaling.UtbetalingDao
import no.nav.helse.modell.vedtaksperiode.GenerasjonDao
import no.nav.helse.modell.vergemal.VergemålDao
import no.nav.helse.rapids_rivers.testsupport.TestRapid
Expand All @@ -45,7 +44,6 @@ internal class TestMediator(
private val opptegnelseDao = OpptegnelseDao(dataSource)
private val oppgaveDao = OppgaveDao(dataSource)
private val pgHistorikkinnslagRepository = PgHistorikkinnslagRepository(dataSource)
private val utbetalingDao = UtbetalingDao(dataSource)
private val overstyringDao = OverstyringDao(dataSource)
private val meldingDao = MeldingDao(dataSource)
private val generasjonDao = GenerasjonDao(dataSource)
Expand All @@ -61,7 +59,6 @@ internal class TestMediator(
StansAutomatiskBehandlingDao(dataSource),
pgHistorikkinnslagRepository,
oppgaveDao,
utbetalingDao,
notatDao,
) { Subsumsjonsmelder("versjonAvKode", testRapid) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ internal class SaksbehandlerMediatorTest : DatabaseIntegrationTest() {
stansAutomatiskBehandlingDao,
pgHistorikkinnslagRepository,
oppgaveDao,
utbetalingDao,
notatDao,
) { Subsumsjonsmelder("versjonAvKode", testRapid) }
private val oppgaveService =
Expand Down Expand Up @@ -890,7 +889,8 @@ internal class SaksbehandlerMediatorTest : DatabaseIntegrationTest() {
private fun annullering(
begrunnelser: List<String> = listOf("EN_BEGRUNNELSE"),
kommentar: String? = "EN_KOMMENTAR",
arsaker: List<AnnulleringArsak> = listOf(AnnulleringArsak(_key = "key01", arsak = "Ferie"), AnnulleringArsak(_key = "key02", arsak = "Perm")),
arsaker: List<AnnulleringArsak> =
listOf(AnnulleringArsak(_key = "key01", arsak = "Ferie"), AnnulleringArsak(_key = "key02", arsak = "Perm")),
) = AnnulleringData(
aktorId = AKTØR_ID,
fodselsnummer = FØDSELSNUMMER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,24 @@ import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import no.nav.helse.TestRapidHelpers.hendelser
import no.nav.helse.db.NotatRepository
import no.nav.helse.db.HistorikkinnslagRepository
import no.nav.helse.db.NotatRepository
import no.nav.helse.db.StansAutomatiskBehandlingDao
import no.nav.helse.db.StansAutomatiskBehandlingFraDatabase
import no.nav.helse.mediator.Subsumsjonsmelder
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.periodehistorikk.AutomatiskBehandlingStanset
import no.nav.helse.modell.saksbehandler.Saksbehandler
import no.nav.helse.modell.saksbehandler.handlinger.OpphevStans
import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak.AKTIVITETSKRAV
import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak.BESTRIDELSE_SYKMELDING
import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak.MANGLENDE_MEDVIRKING
import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak.MEDISINSK_VILKAR
import no.nav.helse.modell.utbetaling.UtbetalingDao
import no.nav.helse.modell.vilkårsprøving.Subsumsjon.Utfall.VILKAR_OPPFYLT
import no.nav.helse.modell.vilkårsprøving.Subsumsjon.Utfall.VILKAR_UAVKLART
import no.nav.helse.objectMapper
import no.nav.helse.rapids_rivers.testsupport.TestRapid
import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType.STANS_AUTOMATISK_BEHANDLING
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Assertions.assertNull
Expand All @@ -38,7 +37,6 @@ class StansAutomatiskBehandlingMediatorTest {
private val stansAutomatiskBehandlingDao = mockk<StansAutomatiskBehandlingDao>(relaxed = true)
private val historikkinnslagRepository = mockk<HistorikkinnslagRepository>(relaxed = true)
private val oppgaveDao = mockk<OppgaveDao>(relaxed = true)
private val utbetalingDao = mockk<UtbetalingDao>(relaxed = true)
private val notatDao = mockk<NotatRepository>(relaxed = true)
private val testRapid = TestRapid()
private val subsumsjonsmelder = Subsumsjonsmelder("versjonAvKode", testRapid)
Expand All @@ -54,7 +52,6 @@ class StansAutomatiskBehandlingMediatorTest {
stansAutomatiskBehandlingDao,
historikkinnslagRepository,
oppgaveDao,
utbetalingDao,
notatDao,
) { subsumsjonsmelder }

Expand Down Expand Up @@ -86,10 +83,8 @@ class StansAutomatiskBehandlingMediatorTest {
}
verify(exactly = 1) {
historikkinnslagRepository.lagre(
historikkType = STANS_AUTOMATISK_BEHANDLING,
saksbehandlerOid = null,
utbetalingId = any(),
notatId = null,
historikkinnslag = any<AutomatiskBehandlingStanset>(),
oppgaveId = any(),
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import io.mockk.verify
import no.nav.helse.db.HistorikkinnslagRepository
import no.nav.helse.db.TotrinnsvurderingDao
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.periodehistorikk.TotrinnsvurderingAutomatiskRetur
import org.junit.jupiter.api.Test
import java.util.UUID

Expand Down Expand Up @@ -37,7 +38,7 @@ class TotrinnsvurderingServiceTest {
verify(exactly = 1) { oppgaveDao.finnIdForAktivOppgave(vedtaksperiodeId) }
verify(exactly = 1) {
historikkinnslagRepository.lagre(
historikkinnslag = any(),
historikkinnslag = any<TotrinnsvurderingAutomatiskRetur>(),
oppgaveId = oppgaveId,
)
}
Expand Down

0 comments on commit ea3bf5d

Please sign in to comment.