Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Favorisere/nedprioritere enkelte kodeverksverdier #1777

Merged
merged 4 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ønsker meg en forklarende kommentar på dette feltet, kanskje? Hvordan blir det at noe ikke er en favoritt til et sekundært valg? Hva er et sekundært valg for noe?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Det er mindre brukte kodeverksverdier. Dette tilsvarer "avansert" og knyttet til visningen - der sekundærvalg vises separat nederst i dropdown. Det virket litt feil å lagre det som sekundærvalg i db, men er er åpen for forslag

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hm, første refleks er at "mindreBrukt" i så fall er en forbedring

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

evt "sorterTilSlutt"/"sorterNederst"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvorfor trenger vi en inversform i verdiforklaring? Kan det ikke bare være "favoritt" her også?

) {
}
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