Skip to content

Commit

Permalink
Favorisere/nedprioritere enkelte kodeverksverdier (#1777)
Browse files Browse the repository at this point in the history
* Funksjonalitet for å skjule eller nedprioritere enkelte kodeverksverdier

* Legger inn flere kodeverksverdier i synlighetsregler

* Mulig å markere enkelte kodeverksverdier som favoritt.
Alternative flagg var "avansert", "(ned)prioritert" og "lite brukt". Knyttes til "sekundærvalg" i dto mot frontend
  • Loading branch information
baskevold authored Dec 5, 2023
1 parent 7da4cea commit b85e728
Show file tree
Hide file tree
Showing 10 changed files with 104 additions and 70 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ enum class KøSortering(


@JsonFormat(shape = JsonFormat.Shape.OBJECT)
enum class Fagsystem(val kode: String, val kodeverk: String, val navn: String) {
enum class Fagsystem(override val kode: String, override val kodeverk: String, override val navn: String): Kodeverdi {
K9SAK("K9SAK", "FAGSYSTEM", "K9-sak"),
K9TILBAKE("K9TILBAKE", "FAGSYSTEM", "K9-tilbake"),
FPTILBAKE("FPTILBAKE", "FAGSYSTEM", "FP-tilbake"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import no.nav.k9.kodeverk.behandling.BehandlingResultatType
import no.nav.k9.kodeverk.behandling.BehandlingStegType
import no.nav.k9.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon
import no.nav.k9.kodeverk.behandling.aksjonspunkt.Venteårsak
import no.nav.k9.los.domene.lager.oppgave.Kodeverdi
import no.nav.k9.kodeverk.api.Kodeverdi as KodeverdiK9Sak
import no.nav.k9.los.domene.modell.BehandlingStatus
import no.nav.k9.los.domene.modell.BehandlingType
import no.nav.k9.los.domene.modell.FagsakYtelseType
Expand Down Expand Up @@ -71,7 +73,7 @@ class OmrådeSetup(
}

private fun aksjonspunktVerdierK9Sak() =
AksjonspunktDefinisjon.values().filterNot { it == AksjonspunktDefinisjon.UNDEFINED }.map { apDefinisjon ->
AksjonspunktDefinisjon.entries.filterNot { it == AksjonspunktDefinisjon.UNDEFINED }.map { apDefinisjon ->
KodeverkVerdiDto(
verdi = apDefinisjon.kode,
visningsnavn = apDefinisjon.navn,
Expand All @@ -80,7 +82,7 @@ class OmrådeSetup(
}

private fun aksjonspunktVerdierK9Klage() =
no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.values()
no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.entries
.filterNot { it == no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.UNDEFINED }
.map { apDefinisjon ->
KodeverkVerdiDto(
Expand All @@ -96,13 +98,7 @@ class OmrådeSetup(
eksternId = "Fagsystem",
beskrivelse = null,
uttømmende = true,
verdier = Fagsystem.values().map { fagsystem ->
KodeverkVerdiDto(
verdi = fagsystem.kode,
visningsnavn = fagsystem.navn,
beskrivelse = null
)
}
verdier = Fagsystem.entries.lagDto(beskrivelse = null)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -113,13 +109,7 @@ class OmrådeSetup(
eksternId = "Resultattype",
beskrivelse = null,
uttømmende = true,
verdier = BehandlingResultatType.values().map { resultattype ->
KodeverkVerdiDto(
verdi = resultattype.kode,
visningsnavn = resultattype.navn,
beskrivelse = null
)
}
verdier = BehandlingResultatType.entries.lagK9Dto(beskrivelse = null)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -130,13 +120,7 @@ class OmrådeSetup(
eksternId = "Ytelsetype",
beskrivelse = null,
uttømmende = true,
verdier = FagsakYtelseType.values().map { ytelsetype ->
KodeverkVerdiDto(
verdi = ytelsetype.kode,
visningsnavn = ytelsetype.navn,
beskrivelse = null
)
}
verdier = FagsakYtelseType.entries.lagDto(null, KodeverkSynlighetRegler::ytelseType)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -147,13 +131,7 @@ class OmrådeSetup(
eksternId = "Behandlingsstatus",
beskrivelse = null,
uttømmende = true,
verdier = BehandlingStatus.values().map { behandlingstatus ->
KodeverkVerdiDto(
verdi = behandlingstatus.kode,
visningsnavn = behandlingstatus.navn,
beskrivelse = null
)
}
verdier = BehandlingStatus.entries.lagDto(beskrivelse = null)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -164,13 +142,7 @@ class OmrådeSetup(
eksternId = "Behandlingtype",
beskrivelse = null,
uttømmende = true,
verdier = BehandlingType.values().map { behandlingtype ->
KodeverkVerdiDto(
verdi = behandlingtype.kode,
visningsnavn = behandlingtype.navn,
beskrivelse = null
)
}
verdier = BehandlingType.entries.lagDto(beskrivelse = null, KodeverkSynlighetRegler::behandlingType)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -181,13 +153,7 @@ class OmrådeSetup(
eksternId = "Venteårsak",
beskrivelse = null,
uttømmende = true,
verdier = Venteårsak.values().map { venteårsak ->
KodeverkVerdiDto(
verdi = venteårsak.kode,
visningsnavn = venteårsak.navn,
beskrivelse = null
)
}
verdier = Venteårsak.entries.lagK9Dto(beskrivelse = null)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}
Expand All @@ -198,14 +164,72 @@ class OmrådeSetup(
eksternId = "Behandlingssteg",
beskrivelse = null,
uttømmende = false,
verdier = BehandlingStegType.values().map { verdi ->
KodeverkVerdiDto(
verdi = verdi.kode,
visningsnavn = verdi.navn,
beskrivelse = null
)
}
verdier = BehandlingStegType.entries.lagK9Dto(beskrivelse = null)
)
feltdefinisjonTjeneste.oppdater(kodeverkDto)
}

fun <T: Kodeverdi> Collection<T>.lagDto(
beskrivelse: String?,
synlighet: (T) -> KodeverkSynlighet = { KodeverkSynlighet.SYNLIG_FAVORITT }
): List<KodeverkVerdiDto> {
return associateWith { synlighet(it) }
.filter { (_, synlighet) -> synlighet != KodeverkSynlighet.SKJULT }
.map { (kodeverdi, synlighet) -> KodeverkVerdiDto(
verdi = kodeverdi.kode,
visningsnavn = kodeverdi.navn,
beskrivelse = beskrivelse,
favoritt = synlighet == KodeverkSynlighet.SYNLIG_FAVORITT
)}.sortedBy { it.visningsnavn }
}

fun <T: KodeverdiK9Sak> Collection<T>.lagK9Dto(
beskrivelse: String?,
synlighet: (T) -> KodeverkSynlighet = { KodeverkSynlighet.SYNLIG_FAVORITT }
): List<KodeverkVerdiDto> {
return associateWith { synlighet(it) }
.filter { (_, synlighet) -> synlighet != KodeverkSynlighet.SKJULT }
.map { (kodeverdi, synlighet) -> KodeverkVerdiDto(
verdi = kodeverdi.kode,
visningsnavn = kodeverdi.navn,
beskrivelse = beskrivelse,
favoritt = synlighet == KodeverkSynlighet.SYNLIG_FAVORITT
)}.sortedBy { it.visningsnavn }
}
}

object KodeverkSynlighetRegler {
fun behandlingType(behandlingType: BehandlingType): KodeverkSynlighet {
return when (behandlingType) {
BehandlingType.ANKE -> KodeverkSynlighet.SKJULT
BehandlingType.UNNTAKSBEHANDLING,
BehandlingType.PAPIRSØKNAD,
BehandlingType.PAPIRETTERSENDELSE,
BehandlingType.PAPIRINNTEKTSOPPLYSNINGER,
BehandlingType.DIGITAL_ETTERSENDELSE,
BehandlingType.INNLOGGET_CHAT,
BehandlingType.SKRIV_TIL_OSS_SPØRMSÅL,
BehandlingType.SKRIV_TIL_OSS_SVAR,
BehandlingType.SAMTALEREFERAT,
BehandlingType.KOPI,
BehandlingType.UTEN_FNR_DNR,
BehandlingType.UKJENT -> KodeverkSynlighet.SYNLIG
else -> KodeverkSynlighet.SYNLIG_FAVORITT
}
}

fun ytelseType(ytelseType: FagsakYtelseType): KodeverkSynlighet {
return when(ytelseType) {
FagsakYtelseType.FRISINN -> KodeverkSynlighet.SKJULT
FagsakYtelseType.OLP,
FagsakYtelseType.UKJENT -> KodeverkSynlighet.SYNLIG
else -> KodeverkSynlighet.SYNLIG_FAVORITT
}
}
}

enum class KodeverkSynlighet {
SKJULT,
SYNLIG,
SYNLIG_FAVORITT;
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) {
"tolkesSom" to feltdefinisjon.tolkesSom,
"visTilBruker" to feltdefinisjon.visTilBruker,
"kokriterie" to feltdefinisjon.kokriterie,
"kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.let { it.toDatabasestreng() },
"kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.toDatabasestreng(),
"transientFeltutleder" to feltdefinisjon.transientFeltutleder?.let { TransientFeltutleder.hentId(it) }
)
).asUpdate
Expand Down Expand Up @@ -130,7 +130,7 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) {
"tolkesSom" to feltdefinisjon.tolkesSom,
"visTilBruker" to feltdefinisjon.visTilBruker,
"kokriterie" to feltdefinisjon.kokriterie,
"kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.let { it.toDatabasestreng() },
"kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.toDatabasestreng(),
"transientFeltutleder" to feltdefinisjon.transientFeltutleder?.let { TransientFeltutleder.hentId(it) }
)
).asUpdate
Expand Down Expand Up @@ -176,16 +176,17 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) {
)
)
tx.batchPreparedNamedStatement("""
insert into kodeverk_verdi(kodeverk_id, verdi, visningsnavn, beskrivelse)
VALUES (:kodeverkId, :verdi, :visningsnavn, :beskrivelse)
on conflict(kodeverk_id, verdi) do update set visningsnavn = :visningsnavn, beskrivelse = :beskrivelse
insert into kodeverk_verdi(kodeverk_id, verdi, visningsnavn, beskrivelse, favoritt)
VALUES (:kodeverkId, :verdi, :visningsnavn, :beskrivelse, :favoritt)
on conflict(kodeverk_id, verdi) do update set visningsnavn = :visningsnavn, beskrivelse = :beskrivelse, favoritt = :favoritt
""".trimIndent(),
kodeverk.verdier.map { verdi ->
mapOf(
"kodeverkId" to kodeverkId,
"verdi" to verdi.verdi,
"visningsnavn" to verdi.visningsnavn,
"beskrivelse" to verdi.beskrivelse
"beskrivelse" to verdi.beskrivelse,
"favoritt" to verdi.favoritt
)
}
)
Expand Down Expand Up @@ -245,7 +246,8 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) {
id = kodeverkverdiRow.long("id"),
verdi = kodeverkverdiRow.string("verdi"),
visningsnavn = kodeverkverdiRow.string("visningsnavn"),
beskrivelse = kodeverkverdiRow.stringOrNull("beskrivelse")
beskrivelse = kodeverkverdiRow.stringOrNull("beskrivelse"),
favoritt = kodeverkverdiRow.boolean("favoritt")
)
}.asList
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ package no.nav.k9.los.nyoppgavestyring.mottak.feltdefinisjon
data class KodeverkVerdiDto(
val verdi: String,
val visningsnavn: String,
val favoritt: Boolean = false,
val beskrivelse: String? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ class Kodeverkverdi(
val verdi: String,
val visningsnavn: String,
val beskrivelse: String?,
val favoritt: Boolean
) {
constructor(kodeverkVerdiDto: KodeverkVerdiDto) :this (
verdi = kodeverkVerdiDto.verdi,
visningsnavn = kodeverkVerdiDto.visningsnavn,
beskrivelse = kodeverkVerdiDto.beskrivelse,
favoritt = kodeverkVerdiDto.favoritt
)

override fun equals(other: Any?): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,19 +60,19 @@ class OppgaveQueryRepository(
tolkes_som = row.string("tolkes_som"),
kokriterie = row.boolean("kokriterie"),
verdiforklaringerErUttømmende = kodeverk?.uttømmende ?: false,
verdiforklaringer = kodeverk?.let { kodeverk ->
kodeverk.verdier.map { kodeverkverdi ->
Verdiforklaring(
verdi = kodeverkverdi.verdi,
visningsnavn = kodeverkverdi.visningsnavn
verdiforklaringer = kodeverk?.run { verdier.map { kodeverkverdi ->
Verdiforklaring(
verdi = kodeverkverdi.verdi,
visningsnavn = kodeverkverdi.visningsnavn,
sekundærvalg = !kodeverkverdi.favoritt
)
}
}
),
row.stringOrNull("transient_feltutleder")?.let { GyldigeTransientFeltutleder.hentFeltutleder(it) }
)
}.asList
) ?: throw IllegalStateException("Feil ved kjøring av hentAlleFelter")
)

val standardfelter = listOf(
Oppgavefelt(
Expand All @@ -82,10 +82,11 @@ class OppgaveQueryRepository(
"String",
kokriterie = true,
verdiforklaringerErUttømmende = true,
Oppgavestatus.values().map { oppgavestatus ->
verdiforklaringer = Oppgavestatus.entries.map { oppgavestatus ->
Verdiforklaring(
verdi = oppgavestatus.kode,
visningsnavn = oppgavestatus.visningsnavn
visningsnavn = oppgavestatus.visningsnavn,
sekundærvalg = false
)
}),
Oppgavefelt(null, "kildeområde", "Kildeområde", "String", false,false, emptyList()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.k9.los.nyoppgavestyring.query.dto.felter

class Verdiforklaring(
val verdi: String,
val visningsnavn: String
val visningsnavn: String,
val sekundærvalg: Boolean
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE kodeverk_verdi ADD COLUMN favoritt BOOLEAN default true;
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,15 @@ class KodeverkTest : AbstractK9LosIntegrationTest() {
id = null,
verdi = "verdi1",
visningsnavn = "navn1",
beskrivelse = "beskrivelse1"
beskrivelse = "beskrivelse1",
favoritt = false
),
Kodeverkverdi(
id = null,
verdi = "verdi2",
visningsnavn = "navn2",
beskrivelse = "beskrivelse2"
beskrivelse = "beskrivelse2",
favoritt = false
)
)
)
Expand Down

0 comments on commit b85e728

Please sign in to comment.