Skip to content

Commit c6efe55

Browse files
elithooydisrefsum
andcommitted
🚧 I ny totrinnsløype er overstyring knyttet til totrinns i db
Co-authored-by: Øydis Kind Refsum <[email protected]>
1 parent 7822832 commit c6efe55

File tree

5 files changed

+228
-24
lines changed

5 files changed

+228
-24
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
package no.nav.helse.spesialist.application
22

33
import no.nav.helse.modell.saksbehandler.handlinger.Overstyring
4+
import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingId
45

56
interface OverstyringRepository {
6-
fun lagre(overstyringer: List<Overstyring>)
7+
fun lagre(
8+
overstyringer: List<Overstyring>,
9+
totrinnsvurderingId: TotrinnsvurderingId? = null,
10+
)
711

12+
fun finnAktive(
13+
dselsnummer: String,
14+
totrinnsvurderingId: TotrinnsvurderingId,
15+
): List<Overstyring>
16+
17+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
818
fun finnAktive(fødselsnummer: String): List<Overstyring>
919
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE overstyring ADD COLUMN totrinnsvurdering_ref BIGINT REFERENCES totrinnsvurdering(id);

Diff for: spesialist-db/src/main/kotlin/no/nav/helse/spesialist/db/repository/PgOverstyringRepository.kt

+197-19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import no.nav.helse.modell.saksbehandler.handlinger.OverstyrtTidslinje
1616
import no.nav.helse.modell.saksbehandler.handlinger.OverstyrtTidslinjedag
1717
import no.nav.helse.modell.saksbehandler.handlinger.SkjønnsfastsattArbeidsgiver
1818
import no.nav.helse.modell.saksbehandler.handlinger.SkjønnsfastsattSykepengegrunnlag
19+
import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingId
1920
import no.nav.helse.spesialist.application.OverstyringRepository
2021
import no.nav.helse.spesialist.db.HelseDao.Companion.asSQL
2122
import no.nav.helse.spesialist.db.MedSession
@@ -26,36 +27,53 @@ import java.util.UUID
2627
class PgOverstyringRepository(
2728
session: Session,
2829
) : QueryRunner by MedSession(session), OverstyringRepository {
29-
override fun lagre(overstyringer: List<Overstyring>) {
30+
override fun lagre(
31+
overstyringer: List<Overstyring>,
32+
totrinnsvurderingId: TotrinnsvurderingId?,
33+
) {
3034
overstyringer.forEach { overstyring ->
3135
if (overstyring.harFåttTildeltId()) {
3236
updateOverstyring(overstyring)
3337
} else {
3438
val id: Long =
3539
when (overstyring) {
36-
is OverstyrtTidslinje -> insertTidslinjeOverstyring(overstyring)
37-
is OverstyrtInntektOgRefusjon -> insertInntektOgRefusjonOverstyring(overstyring)
38-
is OverstyrtArbeidsforhold -> insertArbeidsforholdOverstyring(overstyring)
39-
is MinimumSykdomsgrad -> insertMinimumSykdomsgradOverstyring(overstyring)
40-
is SkjønnsfastsattSykepengegrunnlag -> insertSkjønnsfastsattSykepengegrunnlag(overstyring)
40+
is OverstyrtTidslinje -> insertTidslinjeOverstyring(overstyring, totrinnsvurderingId)
41+
is OverstyrtInntektOgRefusjon -> insertInntektOgRefusjonOverstyring(overstyring, totrinnsvurderingId)
42+
is OverstyrtArbeidsforhold -> insertArbeidsforholdOverstyring(overstyring, totrinnsvurderingId)
43+
is MinimumSykdomsgrad -> insertMinimumSykdomsgradOverstyring(overstyring, totrinnsvurderingId)
44+
is SkjønnsfastsattSykepengegrunnlag -> insertSkjønnsfastsattSykepengegrunnlag(overstyring, totrinnsvurderingId)
4145
}
4246
overstyring.tildelId(OverstyringId(id))
4347
}
4448
}
4549
}
4650

51+
override fun finnAktive(
52+
dselsnummer: String,
53+
totrinnsvurderingId: TotrinnsvurderingId,
54+
): List<Overstyring> =
55+
finnTidslinjeOverstyringer(fødselsnummer, totrinnsvurderingId) +
56+
finnInntektOgRefusjonOverstyringer(fødselsnummer, totrinnsvurderingId) +
57+
finnArbeidsforholdOverstyringer(fødselsnummer, totrinnsvurderingId) +
58+
finnMinimumSykdomsgradsOverstyringer(fødselsnummer, totrinnsvurderingId) +
59+
finnSkjønnsfastsattSykepengegrunnlag(fødselsnummer, totrinnsvurderingId)
60+
61+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
4762
override fun finnAktive(fødselsnummer: String): List<Overstyring> =
4863
finnTidslinjeOverstyringer(fødselsnummer) +
4964
finnInntektOgRefusjonOverstyringer(fødselsnummer) +
5065
finnArbeidsforholdOverstyringer(fødselsnummer) +
5166
finnMinimumSykdomsgradsOverstyringer(fødselsnummer) +
5267
finnSkjønnsfastsattSykepengegrunnlag(fødselsnummer)
5368

54-
private fun insertOverstyring(overstyring: Overstyring): Long =
69+
private fun insertOverstyring(
70+
overstyring: Overstyring,
71+
totrinnsvurderingId: TotrinnsvurderingId?,
72+
): Long =
5573
asSQL(
5674
"""
57-
INSERT INTO overstyring (hendelse_ref, ekstern_hendelse_id, person_ref, saksbehandler_ref, tidspunkt, vedtaksperiode_id, ferdigstilt)
58-
SELECT gen_random_uuid(), :eksternHendelseId, p.id, :saksbehandlerRef, :opprettet, :vedtaksperiodeId, :ferdigstilt
75+
INSERT INTO overstyring (hendelse_ref, ekstern_hendelse_id, person_ref, saksbehandler_ref, tidspunkt, vedtaksperiode_id, ferdigstilt, totrinnsvurdering_ref)
76+
SELECT gen_random_uuid(), :eksternHendelseId, p.id, :saksbehandlerRef, :opprettet, :vedtaksperiodeId, :ferdigstilt, :totrinnsvurderingId
5977
FROM person p
6078
WHERE p.fødselsnummer = :foedselsnummer
6179
""".trimIndent(),
@@ -65,10 +83,14 @@ class PgOverstyringRepository(
6583
"opprettet" to overstyring.opprettet,
6684
"vedtaksperiodeId" to overstyring.vedtaksperiodeId,
6785
"ferdigstilt" to overstyring.ferdigstilt,
86+
"totrinnsvurderingId" to totrinnsvurderingId?.value,
6887
).updateAndReturnGeneratedKey()
6988

70-
private fun insertTidslinjeOverstyring(overstyrtTidslinje: OverstyrtTidslinje): Long {
71-
val overstyringRef = insertOverstyring(overstyrtTidslinje)
89+
private fun insertTidslinjeOverstyring(
90+
overstyrtTidslinje: OverstyrtTidslinje,
91+
totrinnsvurderingId: TotrinnsvurderingId?,
92+
): Long {
93+
val overstyringRef = insertOverstyring(overstyrtTidslinje, totrinnsvurderingId)
7294

7395
val overstyringTidslinjeRef =
7496
asSQL(
@@ -101,8 +123,11 @@ class PgOverstyringRepository(
101123
return overstyringRef
102124
}
103125

104-
private fun insertArbeidsforholdOverstyring(overstyrtArbeidsforhold: OverstyrtArbeidsforhold): Long {
105-
val overstyringRef = insertOverstyring(overstyrtArbeidsforhold)
126+
private fun insertArbeidsforholdOverstyring(
127+
overstyrtArbeidsforhold: OverstyrtArbeidsforhold,
128+
totrinnsvurderingId: TotrinnsvurderingId?,
129+
): Long {
130+
val overstyringRef = insertOverstyring(overstyrtArbeidsforhold, totrinnsvurderingId)
106131

107132
overstyrtArbeidsforhold.overstyrteArbeidsforhold.forEach { arbeidsforhold ->
108133
asSQL(
@@ -124,8 +149,11 @@ class PgOverstyringRepository(
124149
return overstyringRef
125150
}
126151

127-
private fun insertInntektOgRefusjonOverstyring(overstyrtInntektOgRefusjon: OverstyrtInntektOgRefusjon): Long {
128-
val overstyringRef = insertOverstyring(overstyrtInntektOgRefusjon)
152+
private fun insertInntektOgRefusjonOverstyring(
153+
overstyrtInntektOgRefusjon: OverstyrtInntektOgRefusjon,
154+
totrinnsvurderingId: TotrinnsvurderingId?,
155+
): Long {
156+
val overstyringRef = insertOverstyring(overstyrtInntektOgRefusjon, totrinnsvurderingId)
129157

130158
overstyrtInntektOgRefusjon.arbeidsgivere.forEach { arbeidsgiver ->
131159
asSQL(
@@ -168,8 +196,11 @@ class PgOverstyringRepository(
168196
return overstyringRef
169197
}
170198

171-
private fun insertMinimumSykdomsgradOverstyring(minimumSykdomsgrad: MinimumSykdomsgrad): Long {
172-
val overstyringRef = insertOverstyring(minimumSykdomsgrad)
199+
private fun insertMinimumSykdomsgradOverstyring(
200+
minimumSykdomsgrad: MinimumSykdomsgrad,
201+
totrinnsvurderingId: TotrinnsvurderingId?,
202+
): Long {
203+
val overstyringRef = insertOverstyring(minimumSykdomsgrad, totrinnsvurderingId)
173204

174205
val overstyringMinimumSykdomsgradId =
175206
asSQL(
@@ -218,7 +249,10 @@ class PgOverstyringRepository(
218249
return overstyringRef
219250
}
220251

221-
private fun insertSkjønnsfastsattSykepengegrunnlag(skjønnsfastsattSykepengegrunnlag: SkjønnsfastsattSykepengegrunnlag): Long {
252+
private fun insertSkjønnsfastsattSykepengegrunnlag(
253+
skjønnsfastsattSykepengegrunnlag: SkjønnsfastsattSykepengegrunnlag,
254+
totrinnsvurderingId: TotrinnsvurderingId?,
255+
): Long {
222256
// Den felles informasjonen ligger på alle arbeidsgiverne. Burde kanskje skilles ut i eget objekt
223257
val enArbeidsgiver = skjønnsfastsattSykepengegrunnlag.arbeidsgivere.first()
224258

@@ -232,7 +266,7 @@ class PgOverstyringRepository(
232266
insertBegrunnelse(type, tekst, skjønnsfastsattSykepengegrunnlag.saksbehandlerOid)
233267
}
234268

235-
val overstyringRef = insertOverstyring(skjønnsfastsattSykepengegrunnlag)
269+
val overstyringRef = insertOverstyring(skjønnsfastsattSykepengegrunnlag, totrinnsvurderingId)
236270

237271
val skjønnsfastsettingSykepengegrunnlagId =
238272
asSQL(
@@ -312,6 +346,34 @@ class PgOverstyringRepository(
312346
).update()
313347
}
314348

349+
private fun finnTidslinjeOverstyringer(
350+
dselsnummer: String,
351+
totrinnsvurderingId: TotrinnsvurderingId,
352+
): List<OverstyrtTidslinje> =
353+
asSQL(
354+
"""
355+
SELECT o.id,
356+
ot.id AS overstyring_tidslinje_id,
357+
o.ekstern_hendelse_id,
358+
p.fødselsnummer,
359+
p.aktør_id,
360+
a.organisasjonsnummer,
361+
o.vedtaksperiode_id,
362+
ot.begrunnelse,
363+
o.tidspunkt,
364+
o.ferdigstilt,
365+
o.saksbehandler_ref
366+
FROM overstyring o
367+
INNER JOIN overstyring_tidslinje ot ON ot.overstyring_ref = o.id
368+
INNER JOIN person p ON p.id = o.person_ref
369+
INNER JOIN arbeidsgiver a ON a.id = ot.arbeidsgiver_ref
370+
WHERE p.fødselsnummer = :fodselsnummer and o.totrinnsvurdering_ref = :totrinnsvurderingId and o.ferdigstilt = false
371+
""",
372+
"fodselsnummer" to fødselsnummer,
373+
"totrinnsvurderingId" to totrinnsvurderingId.value,
374+
).list { it.toOverstyrtTidslinje() }
375+
376+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
315377
private fun finnTidslinjeOverstyringer(fødselsnummer: String): List<OverstyrtTidslinje> =
316378
asSQL(
317379
"""
@@ -335,6 +397,32 @@ class PgOverstyringRepository(
335397
"fodselsnummer" to fødselsnummer,
336398
).list { it.toOverstyrtTidslinje() }
337399

400+
private fun finnInntektOgRefusjonOverstyringer(
401+
dselsnummer: String,
402+
totrinnsvurderingId: TotrinnsvurderingId,
403+
): List<OverstyrtInntektOgRefusjon> =
404+
asSQL(
405+
"""
406+
SELECT DISTINCT ON (o.id)
407+
o.id,
408+
o.ekstern_hendelse_id,
409+
p.fødselsnummer,
410+
p.aktør_id,
411+
o.tidspunkt,
412+
o.vedtaksperiode_id,
413+
o.saksbehandler_ref,
414+
o.ferdigstilt,
415+
oi.skjaeringstidspunkt
416+
FROM overstyring o
417+
INNER JOIN overstyring_inntekt oi on o.id = oi.overstyring_ref
418+
INNER JOIN person p ON p.id = o.person_ref
419+
WHERE p.fødselsnummer = :fodselsnummer and o.totrinnsvurdering_ref = :totrinnsvurderingId and o.ferdigstilt = false
420+
""",
421+
"fodselsnummer" to fødselsnummer,
422+
"totrinnsvurderingId" to totrinnsvurderingId.value,
423+
).list { it.toOverstyrtInntektOgRefusjon() }
424+
425+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
338426
private fun finnInntektOgRefusjonOverstyringer(fødselsnummer: String): List<OverstyrtInntektOgRefusjon> =
339427
asSQL(
340428
"""
@@ -356,6 +444,33 @@ class PgOverstyringRepository(
356444
"fodselsnummer" to fødselsnummer,
357445
).list { it.toOverstyrtInntektOgRefusjon() }
358446

447+
private fun finnArbeidsforholdOverstyringer(
448+
dselsnummer: String,
449+
totrinnsvurderingId: TotrinnsvurderingId,
450+
): List<OverstyrtArbeidsforhold> =
451+
asSQL(
452+
"""
453+
SELECT DISTINCT ON (o.id)
454+
o.id,
455+
o.ekstern_hendelse_id,
456+
p.fødselsnummer,
457+
o.tidspunkt,
458+
p.aktør_id,
459+
o.ferdigstilt,
460+
o.vedtaksperiode_id,
461+
o.saksbehandler_ref,
462+
o.ferdigstilt,
463+
oa.skjaeringstidspunkt
464+
FROM overstyring o
465+
INNER JOIN overstyring_arbeidsforhold oa on o.id = oa.overstyring_ref
466+
INNER JOIN person p ON p.id = o.person_ref
467+
WHERE p.fødselsnummer = :fodselsnummer and o.totrinnsvurdering_ref = :totrinnsvurderingId and o.ferdigstilt = false
468+
""",
469+
"fodselsnummer" to fødselsnummer,
470+
"totrinnsvurderingId" to totrinnsvurderingId.value,
471+
).list { it.toOverstyrtArbeidsforhold() }
472+
473+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
359474
private fun finnArbeidsforholdOverstyringer(fødselsnummer: String): List<OverstyrtArbeidsforhold> =
360475
asSQL(
361476
"""
@@ -378,6 +493,33 @@ class PgOverstyringRepository(
378493
"fodselsnummer" to fødselsnummer,
379494
).list { it.toOverstyrtArbeidsforhold() }
380495

496+
private fun finnMinimumSykdomsgradsOverstyringer(
497+
dselsnummer: String,
498+
totrinnsvurderingId: TotrinnsvurderingId,
499+
): List<MinimumSykdomsgrad> =
500+
asSQL(
501+
"""
502+
SELECT
503+
o.id,
504+
oms.id AS overstyring_minimum_sykdomsgrad_id,
505+
ekstern_hendelse_id,
506+
aktør_id,
507+
fødselsnummer,
508+
tidspunkt,
509+
vedtaksperiode_id,
510+
begrunnelse,
511+
o.saksbehandler_ref,
512+
o.ferdigstilt
513+
FROM overstyring o
514+
JOIN person p ON o.person_ref = p.id
515+
JOIN overstyring_minimum_sykdomsgrad oms ON oms.overstyring_ref = o.id
516+
WHERE p.fødselsnummer = :fodselsnummer and o.totrinnsvurdering_ref = :totrinnsvurderingId and o.ferdigstilt = false
517+
""".trimIndent(),
518+
"fodselsnummer" to fødselsnummer,
519+
"totrinnsvurderingId" to totrinnsvurderingId.value,
520+
).list { it.toMinimumSykdomsgrad() }
521+
522+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
381523
private fun finnMinimumSykdomsgradsOverstyringer(fødselsnummer: String): List<MinimumSykdomsgrad> =
382524
asSQL(
383525
"""
@@ -400,6 +542,42 @@ class PgOverstyringRepository(
400542
"fodselsnummer" to fødselsnummer,
401543
).list { it.toMinimumSykdomsgrad() }
402544

545+
private fun finnSkjønnsfastsattSykepengegrunnlag(
546+
dselsnummer: String,
547+
totrinnsvurderingId: TotrinnsvurderingId,
548+
): List<SkjønnsfastsattSykepengegrunnlag> =
549+
asSQL(
550+
"""
551+
SELECT o.id,
552+
ss.id as overstyring_skjonn_id,
553+
ss.subsumsjon,
554+
o.ekstern_hendelse_id,
555+
p.fødselsnummer,
556+
p.aktør_id,
557+
o.tidspunkt,
558+
ss.skjaeringstidspunkt,
559+
o.vedtaksperiode_id,
560+
o.saksbehandler_ref,
561+
ss.arsak,
562+
ss.type,
563+
b2.tekst as mal,
564+
b1.tekst as fritekst,
565+
b3.tekst as konklusjon,
566+
ss.initierende_vedtaksperiode_id,
567+
o.ferdigstilt
568+
FROM overstyring o
569+
INNER JOIN skjonnsfastsetting_sykepengegrunnlag ss ON o.id = ss.overstyring_ref
570+
INNER JOIN person p ON p.id = o.person_ref
571+
INNER JOIN begrunnelse b1 ON ss.begrunnelse_fritekst_ref = b1.id
572+
INNER JOIN begrunnelse b2 ON ss.begrunnelse_mal_ref = b2.id
573+
INNER JOIN begrunnelse b3 ON ss.begrunnelse_konklusjon_ref = b3.id
574+
WHERE p.fødselsnummer = :fodselsnummer and o.totrinnsvurdering_ref = :totrinnsvurderingId and o.ferdigstilt = false
575+
""",
576+
"fodselsnummer" to fødselsnummer,
577+
"totrinnsvurderingId" to totrinnsvurderingId.value,
578+
).list { it.toSkjønnsfastsattSykepengegrunnlag() }
579+
580+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
403581
private fun finnSkjønnsfastsattSykepengegrunnlag(fødselsnummer: String): List<SkjønnsfastsattSykepengegrunnlag> =
404582
asSQL(
405583
"""

Diff for: spesialist-db/src/main/kotlin/no/nav/helse/spesialist/db/repository/PgTotrinnsvurderingRepository.kt

+17-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
3333
insert(totrinnsvurdering).let(::TotrinnsvurderingId).let(totrinnsvurdering::tildelId)
3434
}
3535

36-
overstyringRepository.lagre(totrinnsvurdering.overstyringer)
36+
overstyringRepository.lagre(totrinnsvurdering.overstyringer, totrinnsvurdering.id())
3737
}
3838

3939
private fun finnAktivTotrinnsvurdering(fødselsnummer: String): Totrinnsvurdering? =
@@ -81,7 +81,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
8181
AND utbetaling_id_ref IS NULL
8282
""".trimIndent(),
8383
"vedtaksperiodeId" to vedtaksperiodeId,
84-
).singleOrNull { it.toTotrinnsvurdering() }
84+
).singleOrNull { it.toTotrinnsvurderingDeprecated() }
8585

8686
private fun insert(totrinnsvurdering: Totrinnsvurdering): Long =
8787
asSQL(
@@ -117,6 +117,21 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
117117
}
118118

119119
private fun Row.toTotrinnsvurdering(): Totrinnsvurdering =
120+
Totrinnsvurdering.fraLagring(
121+
id = TotrinnsvurderingId(long("id")),
122+
vedtaksperiodeId = uuid("vedtaksperiode_id"),
123+
erRetur = boolean("er_retur"),
124+
saksbehandler = uuidOrNull("saksbehandler_oid")?.let(::SaksbehandlerOid),
125+
beslutter = uuidOrNull("beslutter_oid")?.let(::SaksbehandlerOid),
126+
utbetalingId = uuidOrNull("utbetaling_id"),
127+
opprettet = localDateTime("opprettet"),
128+
oppdatert = localDateTimeOrNull("oppdatert"),
129+
ferdigstilt = uuidOrNull("utbetaling_id") != null,
130+
overstyringer = overstyringRepository.finnAktive(string("fødselsnummer"), TotrinnsvurderingId(long("id"))),
131+
)
132+
133+
@Deprecated("Ny totrinnsløype bruker totrinnsvurderingId til å finne overstyringer")
134+
private fun Row.toTotrinnsvurderingDeprecated(): Totrinnsvurdering =
120135
Totrinnsvurdering.fraLagring(
121136
id = TotrinnsvurderingId(long("id")),
122137
vedtaksperiodeId = uuid("vedtaksperiode_id"),

0 commit comments

Comments
 (0)