Skip to content

Commit

Permalink
⚡️ Hent alle risikovurderinger i samme spørring, i stedet for separat
Browse files Browse the repository at this point in the history
  • Loading branch information
havstein committed Nov 18, 2024
1 parent 98456e9 commit c326e17
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import no.nav.helse.spesialist.api.overstyring.Dagtype
import no.nav.helse.spesialist.api.overstyring.Skjonnsfastsettingstype
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
import no.nav.helse.spesialist.api.totrinnsvurdering.TotrinnsvurderingApiDao
import no.nav.helse.spesialist.api.varsel.ApiVarselRepository
import no.nav.helse.spleis.graphql.hentsnapshot.GraphQLBeregnetPeriode
Expand Down Expand Up @@ -169,7 +169,7 @@ data class Arbeidsgiver(
private val oppgavehåndterer: Oppgavehåndterer,
private val saksbehandlerhåndterer: Saksbehandlerhåndterer,
private val arbeidsgiverApiDao: ArbeidsgiverApiDao,
private val risikovurderingApiDao: RisikovurderingApiDao,
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val fullPeriodehistorikk: Map<UUID, List<PeriodehistorikkDto>>,
Expand Down Expand Up @@ -203,7 +203,7 @@ data class Arbeidsgiver(
periode = it,
oppgavehåndterer = oppgavehåndterer,
saksbehandlerhåndterer = saksbehandlerhåndterer,
risikovurderingApiDao = risikovurderingApiDao,
risikovurderinger = risikovurderinger,
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = fullPeriodehistorikk,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import no.nav.helse.spesialist.api.oppgave.Oppgavehåndterer
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
import no.nav.helse.spesialist.api.totrinnsvurdering.TotrinnsvurderingApiDao
import no.nav.helse.spesialist.api.varsel.ApiVarselRepository
import no.nav.helse.spleis.graphql.enums.GraphQLInntektstype
Expand Down Expand Up @@ -464,7 +464,7 @@ data class BeregnetPeriode(
private val periode: GraphQLBeregnetPeriode,
private val oppgavehåndterer: Oppgavehåndterer,
private val saksbehandlerhåndterer: Saksbehandlerhåndterer,
private val risikovurderingApiDao: RisikovurderingApiDao,
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val fullPeriodehistorikk: Map<UUID, List<PeriodehistorikkDto>>,
Expand Down Expand Up @@ -675,7 +675,7 @@ data class BeregnetPeriode(
fun vilkarsgrunnlagId(): UUID? = periode.vilkarsgrunnlagId

fun risikovurdering(): Risikovurdering? =
risikovurderingApiDao.finnRisikovurdering(vedtaksperiodeId())?.let { vurdering ->
risikovurderinger[vedtaksperiodeId()]?.let { vurdering ->
Risikovurdering(
funn = vurdering.funn.tilFaresignaler(),
kontrollertOk = vurdering.kontrollertOk.tilFaresignaler(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import no.nav.helse.spesialist.api.overstyring.SkjønnsfastsettingSykepengegrunn
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkDto
import no.nav.helse.spesialist.api.person.PersonApiDao
import no.nav.helse.spesialist.api.påvent.PåVentApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDao
import no.nav.helse.spesialist.api.risikovurdering.RisikovurderingApiDto
import no.nav.helse.spesialist.api.tildeling.TildelingApiDao
import no.nav.helse.spesialist.api.totrinnsvurdering.TotrinnsvurderingApiDao
import no.nav.helse.spesialist.api.varsel.ApiVarselRepository
Expand Down Expand Up @@ -97,7 +97,7 @@ data class Person(
private val tildelingApiDao: TildelingApiDao,
private val arbeidsgiverApiDao: ArbeidsgiverApiDao,
private val overstyringApiDao: OverstyringApiDao,
private val risikovurderingApiDao: RisikovurderingApiDao,
private val risikovurderinger: Map<UUID, RisikovurderingApiDto>,
private val varselRepository: ApiVarselRepository,
private val oppgaveApiDao: OppgaveApiDao,
private val notatDao: NotatApiDao,
Expand Down Expand Up @@ -162,7 +162,7 @@ data class Person(
oppgavehåndterer = oppgavehåndterer,
saksbehandlerhåndterer = saksbehandlerhåndterer,
arbeidsgiverApiDao = arbeidsgiverApiDao,
risikovurderingApiDao = risikovurderingApiDao,
risikovurderinger = risikovurderinger,
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = fullPeriodehistorikk,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ class PersonService(
tildelingApiDao = tildelingApiDao,
arbeidsgiverApiDao = arbeidsgiverApiDao,
overstyringApiDao = overstyringApiDao,
risikovurderingApiDao = risikovurderingApiDao,
risikovurderinger = risikovurderingApiDao.finnRisikovurderinger(fødselsnummer),
varselRepository = varselRepository,
oppgaveApiDao = oppgaveApiDao,
fullPeriodehistorikk = periodehistorikkApiDao.hentForPerson(fødselsnummer),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,31 @@ import java.util.UUID
import javax.sql.DataSource

class RisikovurderingApiDao(dataSource: DataSource) : QueryRunner by MedDataSource(dataSource) {
fun finnRisikovurdering(vedtaksperiodeId: UUID): RisikovurderingApiDto? =
fun finnRisikovurderinger(fødselsnummer: String): Map<UUID, RisikovurderingApiDto> =
asSQL(
" SELECT data FROM risikovurdering_2021 WHERE vedtaksperiode_id = :vedtaksperiodeId ORDER BY id DESC LIMIT 1 ",
"vedtaksperiodeId" to vedtaksperiodeId,
).singleOrNull { objectMapper.readTree(it.string("data")) }?.let { data ->
RisikovurderingApiDto(funn = data["funn"].toList(), kontrollertOk = data["kontrollertOk"].toList())
"""
with vedtaksperioder_for_person as (
select vedtaksperiode_id
from vedtak v
join person p on v.person_ref = p.id
where p.fødselsnummer = :foedselsnummer
)
select distinct on (r.vedtaksperiode_id) r.vedtaksperiode_id, data
from risikovurdering_2021 r
join vedtaksperioder_for_person vfp on r.vedtaksperiode_id = vfp.vedtaksperiode_id
order by r.vedtaksperiode_id, id desc
""".trimIndent(),
"foedselsnummer" to fødselsnummer,
).list {
it.uuid("vedtaksperiode_id") to toDto(it.string("data"))
}.toMap()

private fun toDto(data: String) =
objectMapper.readTree(data).let {
RisikovurderingApiDto(
funn = it["funn"].toList(),
kontrollertOk = it["kontrollertOk"].toList(),
)
}

private fun JsonNode.toList(): List<JsonNode> =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package no.nav.helse.spesialist.api.risikovurdering

import com.fasterxml.jackson.databind.JsonNode
import kotliquery.queryOf
import kotliquery.sessionOf
import no.nav.helse.HelseDao.Companion.asSQL
import no.nav.helse.spesialist.api.DatabaseIntegrationTest
import org.intellij.lang.annotations.Language
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Test
import java.util.*
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.Test
import java.time.LocalDate
import java.util.UUID

internal class RisikovurderingApiDaoTest: DatabaseIntegrationTest() {

@Test
fun `finner risikovurdering`() {
risikovurdering()
val risikovurdering = requireNotNull(risikovurderingApiDao.finnRisikovurdering(PERIODE.id))
val risikovurdering = requireNotNull(risikovurderingApiDao.finnRisikovurderinger(FØDSELSNUMMER)[PERIODE.id])
assertEquals(1, risikovurdering.funn.size)
assertEquals(1, risikovurdering.kontrollertOk.size)
assertEquals("En beskrivelse", risikovurdering.funn.first()["beskrivelse"].asText())
Expand All @@ -42,7 +42,7 @@ internal class RisikovurderingApiDaoTest: DatabaseIntegrationTest() {
}
"""
risikovurdering(data = data)
val risikovurdering = requireNotNull(risikovurderingApiDao.finnRisikovurdering(PERIODE.id))
val risikovurdering = requireNotNull(risikovurderingApiDao.finnRisikovurderinger(FØDSELSNUMMER)[PERIODE.id])
risikovurdering.also { dto ->
assertEquals(listOf("jobb ok"), dto.kontrollertOk.map { it["beskrivelse"].asText() })
assertEquals(listOf("arbeid"), dto.kontrollertOk.flatMap { it["kategori"].map(JsonNode::asText) })
Expand All @@ -55,13 +55,23 @@ internal class RisikovurderingApiDaoTest: DatabaseIntegrationTest() {

@Test
fun `leser manglende risikovurdering`() {
assertNull(risikovurderingApiDao.finnRisikovurdering(UUID.randomUUID()))
assertNull(risikovurderingApiDao.finnRisikovurderinger(FØDSELSNUMMER)[PERIODE.id])
}

private fun risikovurdering(vedtaksperiodeId: UUID = PERIODE.id, data: String = riskrespons) = sessionOf(dataSource).use { session ->
@Language("PostgreSQL")
val statement = "INSERT INTO risikovurdering_2021(vedtaksperiode_id, kan_godkjennes_automatisk, krever_supersaksbehandler, data) VALUES(?, True, False, ?::json)"
session.run(queryOf(statement, vedtaksperiodeId, data).asExecute)
private fun risikovurdering(vedtaksperiodeId: UUID = PERIODE.id, data: String = riskrespons) {
opprettVedtak(
opprettPerson(),
opprettArbeidsgiver(),
periode = Periode(vedtaksperiodeId, LocalDate.of(2024, 1, 1), LocalDate.of(2024, 1, 31))
)
asSQL(
"""
INSERT INTO risikovurdering_2021 (vedtaksperiode_id, kan_godkjennes_automatisk, krever_supersaksbehandler, data)
VALUES (:vedtaksperiodeId, true, false, :data::json)
""".trimIndent(),
"vedtaksperiodeId" to vedtaksperiodeId,
"data" to data
).update()
}

@Language("JSON")
Expand Down

0 comments on commit c326e17

Please sign in to comment.