Skip to content

Commit 4195b9b

Browse files
IS-2152: Håndtere oversikt-hendelsetype for arbeidsuforhet vurder avslag (#355)
* IS-2152: Handle oversikthendelsetype arbeidsuforhet vurder avslag * Use getBoolean
1 parent 0046934 commit 4195b9b

14 files changed

+161
-11
lines changed

src/main/kotlin/no/nav/syfo/cronjob/behandlendeenhet/PersonBehandlendeEnhetQuery.kt

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const val queryGetPersonerWithOppgaveAndOldEnhet =
6969
OR aktivitetskrav_vurder_stans_ubehandlet = 't'
7070
OR trenger_oppfolging = 't'
7171
OR behandler_bistand_ubehandlet = 't'
72+
OR arbeidsuforhet_vurder_avslag_ubehandlet = 't'
7273
)
7374
AND (tildelt_enhet_updated_at IS NULL OR tildelt_enhet_updated_at <= NOW() - INTERVAL '24 HOURS')
7475
ORDER BY tildelt_enhet_updated_at ASC

src/main/kotlin/no/nav/syfo/cronjob/virksomhetsnavn/PersonOppfolgingstilfelleVirksomhetsnavnQuery.kt

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const val queryPersonOppfolgingstilfelleVirksomhetNoVirksomhetsnavnList =
4242
OR aktivitetskrav_vurder_stans_ubehandlet = 't'
4343
OR trenger_oppfolging = 't'
4444
OR behandler_bistand_ubehandlet = 't'
45+
OR arbeidsuforhet_vurder_avslag_ubehandlet = 't'
4546
)
4647
ORDER BY PERSON_OPPFOLGINGSTILFELLE_VIRKSOMHET.created_at ASC
4748
LIMIT 1000

src/main/kotlin/no/nav/syfo/personstatus/PersonoversiktStatusService.kt

+2
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ class PersonoversiktStatusService(
144144
connection.updateBehandlerBerOmBistand(isUbehandlet, personident)
145145
OversikthendelseType.BEHANDLER_BER_OM_BISTAND_BEHANDLET ->
146146
connection.updateBehandlerBerOmBistand(isBehandlet, personident)
147+
OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT -> connection.updateArbeidsuforhetVurderAvslag(isUbehandlet, personident)
148+
OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_BEHANDLET -> connection.updateArbeidsuforhetVurderAvslag(isBehandlet, personident)
147149
}
148150

149151
COUNT_KAFKA_CONSUMER_PERSONOPPGAVEHENDELSE_UPDATED_PERSONOVERSIKT_STATUS.increment()

src/main/kotlin/no/nav/syfo/personstatus/api/v2/PersonOversiktStatusDTO.kt

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ data class PersonOversiktStatusDTO(
2424
val trengerOppfolging: Boolean,
2525
val trengerOppfolgingFrist: LocalDate?,
2626
val behandlerBerOmBistandUbehandlet: Boolean,
27+
val arbeidsuforhetVurderAvslagUbehandlet: Boolean,
2728
)
2829

2930
data class PersonOppfolgingstilfelleDTO(

src/main/kotlin/no/nav/syfo/personstatus/db/UpdatePersonOversiktStatusColumn.kt

+19
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,25 @@ fun Connection.updateAktivitetskravVurderStans(
225225
}
226226
}
227227

228+
const val queryUpdatePersonOversiktStatusArbeidsuforhetVurderAvslag =
229+
"""
230+
UPDATE PERSON_OVERSIKT_STATUS
231+
SET arbeidsuforhet_vurder_avslag_ubehandlet = ?, sist_endret = ?
232+
WHERE fnr = ?
233+
"""
234+
235+
fun Connection.updateArbeidsuforhetVurderAvslag(
236+
isUbehandlet: Boolean,
237+
personIdent: PersonIdent,
238+
) {
239+
this.prepareStatement(queryUpdatePersonOversiktStatusArbeidsuforhetVurderAvslag).use {
240+
it.setBoolean(1, isUbehandlet)
241+
it.setObject(2, Timestamp.from(Instant.now()))
242+
it.setString(3, personIdent.value)
243+
it.execute()
244+
}
245+
}
246+
228247
const val queryUpdatePersonOversiktStatusTrengerOppfolging =
229248
"""
230249
UPDATE PERSON_OVERSIKT_STATUS

src/main/kotlin/no/nav/syfo/personstatus/db/createOrUpdatePersonOversiktStatus.kt

+5-3
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,9 @@ const val queryCreatePersonOversiktStatus =
4747
trenger_oppfolging,
4848
trenger_oppfolging_frist,
4949
behandler_bistand_ubehandlet,
50+
arbeidsuforhet_vurder_avslag_ubehandlet,
5051
antall_sykedager
51-
) VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
52+
) VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5253
RETURNING id
5354
"""
5455

@@ -113,9 +114,10 @@ fun Connection.createPersonOversiktStatus(
113114
it.setBoolean(31, personOversiktStatus.trengerOppfolging)
114115
it.setObject(32, personOversiktStatus.trengerOppfolgingFrist)
115116
it.setBoolean(33, personOversiktStatus.behandlerBerOmBistandUbehandlet)
117+
it.setBoolean(34, personOversiktStatus.arbeidsuforhetVurderAvslagUbehandlet)
116118
if (personOversiktStatus.latestOppfolgingstilfelle?.antallSykedager != null) {
117-
it.setInt(34, personOversiktStatus.latestOppfolgingstilfelle.antallSykedager)
118-
} else it.setNull(34, Types.INTEGER)
119+
it.setInt(35, personOversiktStatus.latestOppfolgingstilfelle.antallSykedager)
120+
} else it.setNull(35, Types.INTEGER)
119121
it.executeQuery().toList { getInt("id") }.firstOrNull()
120122
} ?: throw SQLException("Creating PersonOversikStatus failed, no rows affected.")
121123

src/main/kotlin/no/nav/syfo/personstatus/db/getFromPersonOversiktStatus.kt

+8-6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const val queryHentUbehandledePersonerTilknyttetEnhet = """
5353
OR aktivitetskrav_vurder_stans_ubehandlet = 't'
5454
OR trenger_oppfolging = 't'
5555
OR behandler_bistand_ubehandlet = 't'
56+
OR arbeidsuforhet_vurder_avslag_ubehandlet = 't'
5657
)
5758
);
5859
"""
@@ -113,14 +114,15 @@ fun ResultSet.toPPersonOversiktStatus(): PPersonOversiktStatus =
113114
aktivitetskravStoppunkt = getObject("aktivitetskrav_stoppunkt", LocalDate::class.java),
114115
aktivitetskravUpdatedAt = getObject("aktivitetskrav_sist_vurdert", OffsetDateTime::class.java),
115116
aktivitetskravVurderingFrist = getObject("aktivitetskrav_vurdering_frist", LocalDate::class.java),
116-
behandlerdialogSvarUbehandlet = getObject("behandlerdialog_svar_ubehandlet") as Boolean,
117-
behandlerdialogUbesvartUbehandlet = getObject("behandlerdialog_ubesvart_ubehandlet") as Boolean,
118-
behandlerdialogAvvistUbehandlet = getObject("behandlerdialog_avvist_ubehandlet") as Boolean,
119-
aktivitetskravVurderStansUbehandlet = getObject("aktivitetskrav_vurder_stans_ubehandlet") as Boolean,
120-
trengerOppfolging = getObject("trenger_oppfolging") as Boolean,
117+
behandlerdialogSvarUbehandlet = getBoolean("behandlerdialog_svar_ubehandlet"),
118+
behandlerdialogUbesvartUbehandlet = getBoolean("behandlerdialog_ubesvart_ubehandlet"),
119+
behandlerdialogAvvistUbehandlet = getBoolean("behandlerdialog_avvist_ubehandlet"),
120+
aktivitetskravVurderStansUbehandlet = getBoolean("aktivitetskrav_vurder_stans_ubehandlet"),
121+
trengerOppfolging = getBoolean("trenger_oppfolging") as Boolean,
121122
trengerOppfolgingFrist = getObject("trenger_oppfolging_frist", LocalDate::class.java),
122-
behandlerBerOmBistandUbehandlet = getObject("behandler_bistand_ubehandlet") as Boolean,
123+
behandlerBerOmBistandUbehandlet = getBoolean("behandler_bistand_ubehandlet"),
123124
antallSykedager = getObject("antall_sykedager") as Int?,
125+
arbeidsuforhetVurderAvslagUbehandlet = getBoolean("arbeidsuforhet_vurder_avslag_ubehandlet")
124126
)
125127

126128
fun ResultSet.toVeilederBrukerKnytning(): VeilederBrukerKnytning =

src/main/kotlin/no/nav/syfo/personstatus/domain/OversikthendelseType.kt

+2
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ enum class OversikthendelseType {
1717
AKTIVITETSKRAV_VURDER_STANS_BEHANDLET,
1818
BEHANDLER_BER_OM_BISTAND_MOTTATT,
1919
BEHANDLER_BER_OM_BISTAND_BEHANDLET,
20+
ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT,
21+
ARBEIDSUFORHET_VURDER_AVSLAG_BEHANDLET,
2022
}

src/main/kotlin/no/nav/syfo/personstatus/domain/PPersonOversiktStatus.kt

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ data class PPersonOversiktStatus(
4040
val trengerOppfolgingFrist: LocalDate?,
4141
val behandlerBerOmBistandUbehandlet: Boolean,
4242
val antallSykedager: Int?,
43+
val arbeidsuforhetVurderAvslagUbehandlet: Boolean,
4344
)
4445

4546
fun PPersonOversiktStatus.toPersonOversiktStatus(
@@ -70,6 +71,7 @@ fun PPersonOversiktStatus.toPersonOversiktStatus(
7071
trengerOppfolging = trengerOppfolging,
7172
trengerOppfolgingFrist = trengerOppfolgingFrist,
7273
behandlerBerOmBistandUbehandlet = behandlerBerOmBistandUbehandlet,
74+
arbeidsuforhetVurderAvslagUbehandlet = arbeidsuforhetVurderAvslagUbehandlet,
7375
)
7476

7577
fun PPersonOversiktStatus.toPersonOppfolgingstilfelle(

src/main/kotlin/no/nav/syfo/personstatus/domain/PersonOversiktStatus.kt

+10-2
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ data class PersonOversiktStatus(
3535
val trengerOppfolging: Boolean = false,
3636
val trengerOppfolgingFrist: LocalDate? = null,
3737
val behandlerBerOmBistandUbehandlet: Boolean = false,
38+
val arbeidsuforhetVurderAvslagUbehandlet: Boolean = false,
3839
) {
3940
constructor(fnr: String) : this(
4041
null, fnr = fnr, null, null, null,
4142
null, false, null, null, null,
4243
null, null, null, null, null, null,
4344
false, false, false, false, false,
44-
null, false,
45+
null, false, false,
4546
)
4647
}
4748

@@ -72,7 +73,7 @@ fun PersonOversiktStatus.hasActiveOppgave(arenaCutoff: LocalDate): Boolean {
7273
this.isActiveAktivitetskrav(arenaCutoff = arenaCutoff) ||
7374
hasActiveBehandlerdialogOppgave() ||
7475
this.aktivitetskravVurderStansUbehandlet ||
75-
this.trengerOppfolging || this.behandlerBerOmBistandUbehandlet
76+
this.trengerOppfolging || this.behandlerBerOmBistandUbehandlet || this.arbeidsuforhetVurderAvslagUbehandlet
7677
}
7778

7879
fun List<PersonOversiktStatus>.addPersonName(
@@ -115,6 +116,7 @@ fun PersonOversiktStatus.toPersonOversiktStatusDTO(arenaCutoff: LocalDate) =
115116
trengerOppfolging = trengerOppfolging,
116117
trengerOppfolgingFrist = trengerOppfolgingFrist,
117118
behandlerBerOmBistandUbehandlet = behandlerBerOmBistandUbehandlet,
119+
arbeidsuforhetVurderAvslagUbehandlet = arbeidsuforhetVurderAvslagUbehandlet,
118120
)
119121

120122
fun PersonOversiktStatus.hasActiveBehandlerdialogOppgave(): Boolean {
@@ -189,4 +191,10 @@ fun PersonOversiktStatus.applyHendelse(
189191
OversikthendelseType.BEHANDLER_BER_OM_BISTAND_BEHANDLET -> this.copy(
190192
behandlerBerOmBistandUbehandlet = false
191193
)
194+
OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT -> this.copy(
195+
arbeidsuforhetVurderAvslagUbehandlet = true,
196+
)
197+
OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_BEHANDLET -> this.copy(
198+
arbeidsuforhetVurderAvslagUbehandlet = false,
199+
)
192200
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
ALTER TABLE person_oversikt_status
2+
ADD COLUMN arbeidsuforhet_vurder_avslag_ubehandlet BOOLEAN DEFAULT FALSE;
3+
4+
DROP INDEX IX_PERSON_OVERSIKT_STATUS_ENHETENS_OVERSIKT;
5+
6+
CREATE INDEX IX_PERSON_OVERSIKT_STATUS_ENHETENS_OVERSIKT
7+
ON PERSON_OVERSIKT_STATUS (tildelt_enhet, dialogmotekandidat_generated_at)
8+
WHERE (motebehov_ubehandlet
9+
OR oppfolgingsplan_lps_bistand_ubehandlet
10+
OR dialogmotesvar_ubehandlet
11+
OR dialogmotekandidat
12+
OR ((aktivitetskrav = 'NY' OR aktivitetskrav = 'AVVENT') AND aktivitetskrav_stoppunkt > '2023-03-10')
13+
OR behandlerdialog_svar_ubehandlet
14+
OR behandlerdialog_ubesvart_ubehandlet
15+
OR behandlerdialog_avvist_ubehandlet
16+
OR aktivitetskrav_vurder_stans_ubehandlet
17+
OR trenger_oppfolging
18+
OR behandler_bistand_ubehandlet
19+
OR arbeidsuforhet_vurder_avslag_ubehandlet
20+
);

src/test/kotlin/no/nav/syfo/personoppgavehendelse/kafka/PersonoppgavehendelseConsumerSpek.kt

+31
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,37 @@ object PersonoppgavehendelseServiceSpek : Spek({
210210
firstStatus.aktivitetskravVurderStansUbehandlet.shouldBeFalse()
211211
}
212212

213+
it("Update personoversiktstatus from arbeidsuforhet vurder avslag mottatt hendelse") {
214+
val arbeidsuforhetVurderAvslagMottatt = KPersonoppgavehendelse(
215+
personident = UserConstants.ARBEIDSTAKER_FNR,
216+
hendelsetype = OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT,
217+
)
218+
mockReceiveHendelse(arbeidsuforhetVurderAvslagMottatt, mockPersonoppgavehendelseConsumer)
219+
220+
personoppgavehendelseConsumer.pollAndProcessRecords(kafkaConsumer = mockPersonoppgavehendelseConsumer)
221+
222+
val personoversiktStatuser = database.getPersonOversiktStatusList(UserConstants.ARBEIDSTAKER_FNR)
223+
val firstStatus = personoversiktStatuser.first()
224+
firstStatus.arbeidsuforhetVurderAvslagUbehandlet.shouldBeTrue()
225+
}
226+
227+
it("Update personoversiktstatus from arbeidsuforhet vurder avslag behandlet hendelse") {
228+
val arbeidsuforhetVurderAvslagBehandlet = KPersonoppgavehendelse(
229+
personident = UserConstants.ARBEIDSTAKER_FNR,
230+
hendelsetype = OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_BEHANDLET,
231+
)
232+
mockReceiveHendelse(arbeidsuforhetVurderAvslagBehandlet, mockPersonoppgavehendelseConsumer)
233+
val personOversiktStatus = PersonOversiktStatus(UserConstants.ARBEIDSTAKER_FNR)
234+
.applyHendelse(OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT)
235+
database.createPersonOversiktStatus(personOversiktStatus)
236+
237+
personoppgavehendelseConsumer.pollAndProcessRecords(kafkaConsumer = mockPersonoppgavehendelseConsumer)
238+
239+
val personoversiktStatuser = database.getPersonOversiktStatusList(UserConstants.ARBEIDSTAKER_FNR)
240+
val firstStatus = personoversiktStatuser.first()
241+
firstStatus.arbeidsuforhetVurderAvslagUbehandlet.shouldBeFalse()
242+
}
243+
213244
it("Update personoversiktstatus from behandler_ber_om_bistand_mottatt-hendelse") {
214245
val behandlerBistandHendelseMottatt = generateKPersonoppgavehendelse(OversikthendelseType.BEHANDLER_BER_OM_BISTAND_MOTTATT)
215246
mockReceiveHendelse(behandlerBistandHendelseMottatt, mockPersonoppgavehendelseConsumer)

src/test/kotlin/no/nav/syfo/personstatus/api/v2/PersonoversiktStatusApiV2Spek.kt

+58
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,64 @@ object PersonoversiktStatusApiV2Spek : Spek({
675675
}
676676
}
677677

678+
it("return person with arbeidsuforhet_vurder_avslag true when oppgave mottatt") {
679+
val arbeidsuforhetVurderAvslagMottatt = KPersonoppgavehendelse(
680+
personident = ARBEIDSTAKER_FNR,
681+
hendelsetype = OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_MOTTATT,
682+
)
683+
val personoversiktStatus = PersonOversiktStatus(
684+
fnr = arbeidsuforhetVurderAvslagMottatt.personident
685+
).applyHendelse(arbeidsuforhetVurderAvslagMottatt.hendelsetype)
686+
687+
database.createPersonOversiktStatus(personoversiktStatus)
688+
689+
database.setTildeltEnhet(
690+
ident = PersonIdent(ARBEIDSTAKER_FNR),
691+
enhet = NAV_ENHET,
692+
)
693+
694+
val personOversiktStatusList = database.getPersonOversiktStatusList(ARBEIDSTAKER_FNR)
695+
println(personOversiktStatusList)
696+
697+
with(
698+
handleRequest(HttpMethod.Get, url) {
699+
addHeader(HttpHeaders.Authorization, bearerHeader(validToken))
700+
}
701+
) {
702+
response.status() shouldBeEqualTo HttpStatusCode.OK
703+
704+
val personOversiktStatus =
705+
objectMapper.readValue<List<PersonOversiktStatusDTO>>(response.content!!).first()
706+
personOversiktStatus.fnr shouldBeEqualTo arbeidsuforhetVurderAvslagMottatt.personident
707+
personOversiktStatus.arbeidsuforhetVurderAvslagUbehandlet shouldBeEqualTo true
708+
}
709+
}
710+
711+
it("return no person when arbeidsuforhet_vurder_avslag oppgave behandlet") {
712+
val arbeidsuforhetVurderAvslagBehandlet = KPersonoppgavehendelse(
713+
personident = ARBEIDSTAKER_FNR,
714+
hendelsetype = OversikthendelseType.ARBEIDSUFORHET_VURDER_AVSLAG_BEHANDLET,
715+
)
716+
val personoversiktStatus = PersonOversiktStatus(
717+
fnr = arbeidsuforhetVurderAvslagBehandlet.personident
718+
).applyHendelse(arbeidsuforhetVurderAvslagBehandlet.hendelsetype)
719+
720+
database.createPersonOversiktStatus(personoversiktStatus)
721+
722+
database.setTildeltEnhet(
723+
ident = PersonIdent(ARBEIDSTAKER_FNR),
724+
enhet = NAV_ENHET,
725+
)
726+
727+
with(
728+
handleRequest(HttpMethod.Get, url) {
729+
addHeader(HttpHeaders.Authorization, bearerHeader(validToken))
730+
}
731+
) {
732+
response.status() shouldBeEqualTo HttpStatusCode.NoContent
733+
}
734+
}
735+
678736
it("return person when trenger_oppfolging true") {
679737
val personident = ARBEIDSTAKER_FNR
680738
val frist = LocalDate.now().plusDays(5)

src/test/kotlin/no/nav/syfo/testutil/generator/PPersonOversiktStatusGenerator.kt

+1
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ fun generatePPersonOversiktStatus(fnr: String = UserConstants.ARBEIDSTAKER_FNR)
3737
trengerOppfolgingFrist = null,
3838
behandlerBerOmBistandUbehandlet = false,
3939
antallSykedager = null,
40+
arbeidsuforhetVurderAvslagUbehandlet = false,
4041
)

0 commit comments

Comments
 (0)