@@ -16,6 +16,7 @@ import no.nav.helse.modell.saksbehandler.handlinger.OverstyrtTidslinje
16
16
import no.nav.helse.modell.saksbehandler.handlinger.OverstyrtTidslinjedag
17
17
import no.nav.helse.modell.saksbehandler.handlinger.SkjønnsfastsattArbeidsgiver
18
18
import no.nav.helse.modell.saksbehandler.handlinger.SkjønnsfastsattSykepengegrunnlag
19
+ import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingId
19
20
import no.nav.helse.spesialist.application.OverstyringRepository
20
21
import no.nav.helse.spesialist.db.HelseDao.Companion.asSQL
21
22
import no.nav.helse.spesialist.db.MedSession
@@ -26,36 +27,53 @@ import java.util.UUID
26
27
class PgOverstyringRepository (
27
28
session : Session ,
28
29
) : QueryRunner by MedSession(session), OverstyringRepository {
29
- override fun lagre (overstyringer : List <Overstyring >) {
30
+ override fun lagre (
31
+ overstyringer : List <Overstyring >,
32
+ totrinnsvurderingId : TotrinnsvurderingId ? ,
33
+ ) {
30
34
overstyringer.forEach { overstyring ->
31
35
if (overstyring.harFåttTildeltId()) {
32
36
updateOverstyring(overstyring)
33
37
} else {
34
38
val id: Long =
35
39
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 )
41
45
}
42
46
overstyring.tildelId(OverstyringId (id))
43
47
}
44
48
}
45
49
}
46
50
51
+ override fun finnAktive (
52
+ fø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" )
47
62
override fun finnAktive (fødselsnummer : String ): List <Overstyring > =
48
63
finnTidslinjeOverstyringer(fødselsnummer) +
49
64
finnInntektOgRefusjonOverstyringer(fødselsnummer) +
50
65
finnArbeidsforholdOverstyringer(fødselsnummer) +
51
66
finnMinimumSykdomsgradsOverstyringer(fødselsnummer) +
52
67
finnSkjønnsfastsattSykepengegrunnlag(fødselsnummer)
53
68
54
- private fun insertOverstyring (overstyring : Overstyring ): Long =
69
+ private fun insertOverstyring (
70
+ overstyring : Overstyring ,
71
+ totrinnsvurderingId : TotrinnsvurderingId ? ,
72
+ ): Long =
55
73
asSQL(
56
74
"""
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
59
77
FROM person p
60
78
WHERE p.fødselsnummer = :foedselsnummer
61
79
""" .trimIndent(),
@@ -65,10 +83,14 @@ class PgOverstyringRepository(
65
83
" opprettet" to overstyring.opprettet,
66
84
" vedtaksperiodeId" to overstyring.vedtaksperiodeId,
67
85
" ferdigstilt" to overstyring.ferdigstilt,
86
+ " totrinnsvurderingId" to totrinnsvurderingId?.value,
68
87
).updateAndReturnGeneratedKey()
69
88
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)
72
94
73
95
val overstyringTidslinjeRef =
74
96
asSQL(
@@ -101,8 +123,11 @@ class PgOverstyringRepository(
101
123
return overstyringRef
102
124
}
103
125
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)
106
131
107
132
overstyrtArbeidsforhold.overstyrteArbeidsforhold.forEach { arbeidsforhold ->
108
133
asSQL(
@@ -124,8 +149,11 @@ class PgOverstyringRepository(
124
149
return overstyringRef
125
150
}
126
151
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)
129
157
130
158
overstyrtInntektOgRefusjon.arbeidsgivere.forEach { arbeidsgiver ->
131
159
asSQL(
@@ -168,8 +196,11 @@ class PgOverstyringRepository(
168
196
return overstyringRef
169
197
}
170
198
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)
173
204
174
205
val overstyringMinimumSykdomsgradId =
175
206
asSQL(
@@ -218,7 +249,10 @@ class PgOverstyringRepository(
218
249
return overstyringRef
219
250
}
220
251
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 {
222
256
// Den felles informasjonen ligger på alle arbeidsgiverne. Burde kanskje skilles ut i eget objekt
223
257
val enArbeidsgiver = skjønnsfastsattSykepengegrunnlag.arbeidsgivere.first()
224
258
@@ -232,7 +266,7 @@ class PgOverstyringRepository(
232
266
insertBegrunnelse(type, tekst, skjønnsfastsattSykepengegrunnlag.saksbehandlerOid)
233
267
}
234
268
235
- val overstyringRef = insertOverstyring(skjønnsfastsattSykepengegrunnlag)
269
+ val overstyringRef = insertOverstyring(skjønnsfastsattSykepengegrunnlag, totrinnsvurderingId )
236
270
237
271
val skjønnsfastsettingSykepengegrunnlagId =
238
272
asSQL(
@@ -312,6 +346,34 @@ class PgOverstyringRepository(
312
346
).update()
313
347
}
314
348
349
+ private fun finnTidslinjeOverstyringer (
350
+ fø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" )
315
377
private fun finnTidslinjeOverstyringer (fødselsnummer : String ): List <OverstyrtTidslinje > =
316
378
asSQL(
317
379
"""
@@ -335,6 +397,32 @@ class PgOverstyringRepository(
335
397
" fodselsnummer" to fødselsnummer,
336
398
).list { it.toOverstyrtTidslinje() }
337
399
400
+ private fun finnInntektOgRefusjonOverstyringer (
401
+ fø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" )
338
426
private fun finnInntektOgRefusjonOverstyringer (fødselsnummer : String ): List <OverstyrtInntektOgRefusjon > =
339
427
asSQL(
340
428
"""
@@ -356,6 +444,33 @@ class PgOverstyringRepository(
356
444
" fodselsnummer" to fødselsnummer,
357
445
).list { it.toOverstyrtInntektOgRefusjon() }
358
446
447
+ private fun finnArbeidsforholdOverstyringer (
448
+ fø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" )
359
474
private fun finnArbeidsforholdOverstyringer (fødselsnummer : String ): List <OverstyrtArbeidsforhold > =
360
475
asSQL(
361
476
"""
@@ -378,6 +493,33 @@ class PgOverstyringRepository(
378
493
" fodselsnummer" to fødselsnummer,
379
494
).list { it.toOverstyrtArbeidsforhold() }
380
495
496
+ private fun finnMinimumSykdomsgradsOverstyringer (
497
+ fø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" )
381
523
private fun finnMinimumSykdomsgradsOverstyringer (fødselsnummer : String ): List <MinimumSykdomsgrad > =
382
524
asSQL(
383
525
"""
@@ -400,6 +542,42 @@ class PgOverstyringRepository(
400
542
" fodselsnummer" to fødselsnummer,
401
543
).list { it.toMinimumSykdomsgrad() }
402
544
545
+ private fun finnSkj ønnsfastsattSykepengegrunnlag (
546
+ fø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" )
403
581
private fun finnSkj ønnsfastsattSykepengegrunnlag (fødselsnummer : String ): List <Skj ønnsfastsattSykepengegrunnlag> =
404
582
asSQL(
405
583
"""
0 commit comments