From 704bcd94818ab9d1356a76dee83f63a456229df3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roaldseth?= Date: Wed, 15 Jan 2025 14:59:23 +0100 Subject: [PATCH] =?UTF-8?q?Lag=20en=20m=C3=A5te=20=C3=A5=20vurdere=20om=20?= =?UTF-8?q?regelsett=20er=20relevant=20i=20behandlingen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Eivind Havnelid Røyrvik Co-authored-by: Sindre Sægrov --- .../main/kotlin/no/nav/dagpenger/regel/Verneplikt.kt | 11 +++++++++++ .../behandling/mediator/api/BehandlingApiMapper.kt | 9 +++++++-- openapi/src/main/resources/behandling-api.yaml | 3 ++- .../kotlin/no/nav/dagpenger/opplysning/Regelsett.kt | 7 +++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/Verneplikt.kt b/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/Verneplikt.kt index 0e0551d2..28b30fc6 100644 --- a/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/Verneplikt.kt +++ b/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/Verneplikt.kt @@ -6,6 +6,7 @@ import no.nav.dagpenger.opplysning.Regelsett import no.nav.dagpenger.opplysning.id import no.nav.dagpenger.opplysning.regel.erSann import no.nav.dagpenger.opplysning.regel.innhentMed +import no.nav.dagpenger.regel.KravPåDagpenger.kravPåDagpenger import no.nav.dagpenger.regel.Søknadstidspunkt.søknadIdOpplysningstype object Verneplikt { @@ -21,6 +22,16 @@ object Verneplikt { utfall(oppfyllerKravetTilVerneplikt) { erSann(avtjentVerneplikt) } avklaring(Avklaringspunkter.Verneplikt) + + relevantHvis { + val harKrav = it.har(kravPåDagpenger) && it.finnOpplysning(kravPåDagpenger).verdi + + if (harKrav) { + it.finnOpplysning(avtjentVerneplikt).verdi == false + } else { + true + } + } } val VernepliktKontroll = diff --git a/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt b/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt index 8574e092..1ddbaa0e 100644 --- a/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt +++ b/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt @@ -24,6 +24,7 @@ import no.nav.dagpenger.opplysning.Faktum import no.nav.dagpenger.opplysning.Heltall import no.nav.dagpenger.opplysning.Hypotese import no.nav.dagpenger.opplysning.InntektDataType +import no.nav.dagpenger.opplysning.LesbarOpplysninger import no.nav.dagpenger.opplysning.Opplysning import no.nav.dagpenger.opplysning.Penger import no.nav.dagpenger.opplysning.Redigerbar @@ -84,12 +85,12 @@ internal fun Behandling.tilBehandlingDTO(): BehandlingDTO = vilkår = behandler.regelverk .regelsettAvType(RegelsettType.Vilkår) - .map { it.tilRegelsettDTO(opplysninger, avklaringer) } + .map { it.tilRegelsettDTO(opplysninger, avklaringer, opplysninger()) } .sortedBy { it.hjemmel.paragraf.toInt() }, fastsettelser = behandler.regelverk .regelsettAvType(RegelsettType.Fastsettelse) - .map { it.tilRegelsettDTO(opplysninger, avklaringer) } + .map { it.tilRegelsettDTO(opplysninger, avklaringer, opplysninger()) } .sortedBy { it.hjemmel.paragraf.toInt() }, kreverTotrinnskontroll = this.kreverTotrinnskontroll(), avklaringer = generelleAvklaringer.map { it.tilAvklaringDTO() }, @@ -100,6 +101,7 @@ internal fun Behandling.tilBehandlingDTO(): BehandlingDTO = private fun Regelsett.tilRegelsettDTO( opplysninger: Set>, avklaringer: Set, + lesbarOpplysninger: LesbarOpplysninger, ): RegelsettDTO { val produserer = opplysninger.filter { opplysning -> opplysning.opplysningstype in produserer } val avklaringskoder = avklaringer() @@ -112,6 +114,8 @@ private fun Regelsett.tilRegelsettDTO( status = RegelsettDTO.Status.HarAvklaring } + val erRelevant = erRelevant(lesbarOpplysninger) + return RegelsettDTO( navn = hjemmel.kortnavn, hjemmel = @@ -124,6 +128,7 @@ private fun Regelsett.tilRegelsettDTO( avklaringer = egneAvklaringer.map { it.tilAvklaringDTO() }, opplysningIder = produserer.map { opplysning -> opplysning.id }, status = status, + relevant = erRelevant, ) } diff --git a/openapi/src/main/resources/behandling-api.yaml b/openapi/src/main/resources/behandling-api.yaml index 896d6f16..3772b804 100644 --- a/openapi/src/main/resources/behandling-api.yaml +++ b/openapi/src/main/resources/behandling-api.yaml @@ -498,7 +498,6 @@ components: - tittel - beskrivelse - status - - status2 - maskinelt - sistEndret properties: @@ -559,6 +558,8 @@ components: hjemmel: description: Hvilken hjemmel er regelsettet basert på $ref: '#/components/schemas/Hjemmel' + relevant: + type: boolean status: type: string enum: [ "Oppfylt", "HarAvklaring", "IkkeOppfylt", "Info" ] diff --git a/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt b/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt index b675f834..c590cc71 100644 --- a/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt +++ b/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt @@ -48,6 +48,7 @@ class Regelsett( private val regler: MutableMap, TemporalCollection>> = mutableMapOf() private val avklaringer: MutableSet = mutableSetOf() private var _utfall: Opplysningstype? = null + private var relevant: (opplysninger: LesbarOpplysninger) -> Boolean = { true } val utfall get() = _utfall val navn = hjemmel.kortnavn @@ -61,6 +62,12 @@ class Regelsett( fun avklaringer() = avklaringer.toSet() + fun relevantHvis(block: (opplysninger: LesbarOpplysninger) -> Boolean) { + relevant = block + } + + fun erRelevant(opplysninger: LesbarOpplysninger) = relevant(opplysninger) + fun utfall( produserer: Opplysningstype, gjelderFraOgMed: LocalDate = LocalDate.MIN,