Skip to content

Commit

Permalink
IS-2542: Add support for sending manglende medvirkning varsel
Browse files Browse the repository at this point in the history
  • Loading branch information
vetlesolgaard committed Aug 6, 2024
1 parent 23a5b10 commit 5c6baab
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 1 deletion.
3 changes: 3 additions & 0 deletions nais/topics/varselbus-topic-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ spec:
- team: team-esyfo
application: meroppfolging-backend
access: write
- team: teamsykefravr
application: ismanglendemedvirkning
access: write
3 changes: 3 additions & 0 deletions nais/topics/varselbus-topic-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,6 @@ spec:
- team: team-esyfo
application: meroppfolging-backend
access: write
- team: teamsykefravr
application: ismanglendemedvirkning
access: write
2 changes: 2 additions & 0 deletions src/main/kotlin/no/nav/syfo/BootstrapApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ fun createEngineEnvironment(): ApplicationEngineEnvironment = applicationEngineE
)
val arbeidsuforhetForhandsvarselService = ArbeidsuforhetForhandsvarselService(senderFacade)
val friskmeldingTilArbeidsformidlingVedtakService = FriskmeldingTilArbeidsformidlingVedtakService(senderFacade)
val manglendeMedvirkningVarselService = ManglendeMedvirkningVarselService(senderFacade)
val oppfolgingsplanVarselService =
OppfolgingsplanVarselService(senderFacade, accessControlService, env.urlEnv.oppfolgingsplanerUrl)
val sykepengerMaxDateService = SykepengerMaxDateService(database, pdlConsumer)
Expand Down Expand Up @@ -177,6 +178,7 @@ fun createEngineEnvironment(): ApplicationEngineEnvironment = applicationEngineE
arbeidsuforhetForhandsvarselService,
mikrofrontendService,
friskmeldingTilArbeidsformidlingVedtakService,
manglendeMedvirkningVarselService,
)

val veilederTilgangskontrollConsumer =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ enum class HendelseType {
SM_AKTIVITETSPLIKT,
SM_ARBEIDSUFORHET_FORHANDSVARSEL,
SM_VEDTAK_FRISKMELDING_TIL_ARBEIDSFORMIDLING,
SM_FORHANDSVARSEL_MANGLENDE_MEDVIRKNING,
}

fun ArbeidstakerHendelse.getSynligTom(): LocalDateTime? {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package no.nav.syfo.service

import no.nav.syfo.consumer.distribuerjournalpost.DistibusjonsType
import no.nav.syfo.kafka.consumers.varselbus.domain.ArbeidstakerHendelse
import no.nav.syfo.utils.dataToVarselData
import org.slf4j.LoggerFactory

class ManglendeMedvirkningVarselService(
private val senderFacade: SenderFacade,
) {

suspend fun sendVarselTilArbeidstaker(varselHendelse: ArbeidstakerHendelse) {
val data = dataToVarselData(varselHendelse.data)
requireNotNull(data.journalpost)
requireNotNull(data.journalpost.id)

log.info("Sending [SM_FORHANDSVARSEL_MANGLENDE_MEDVIRKNING] with uuid ${data.journalpost.uuid} to print")
senderFacade.sendBrevTilFysiskPrint(
uuid = data.journalpost.uuid,
varselHendelse = varselHendelse,
journalpostId = data.journalpost.id,
distribusjonsType = DistibusjonsType.VIKTIG,
)
}

companion object {
private val log = LoggerFactory.getLogger(ManglendeMedvirkningVarselService::class.qualifiedName)
}
}
6 changes: 5 additions & 1 deletion src/main/kotlin/no/nav/syfo/service/VarselBusService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class VarselBusService(
private val arbeidsuforhetForhandsvarselService: ArbeidsuforhetForhandsvarselService,
private val mikrofrontendService: MikrofrontendService,
private val friskmeldingTilArbeidsformidlingVedtakService: FriskmeldingTilArbeidsformidlingVedtakService,
private val manglendeMedvirkningVarselService: ManglendeMedvirkningVarselService,
) {
private val log: Logger = LoggerFactory.getLogger(VarselBusService::class.qualifiedName)
suspend fun processVarselHendelse(
Expand Down Expand Up @@ -62,11 +63,14 @@ class VarselBusService(
SM_ARBEIDSUFORHET_FORHANDSVARSEL -> arbeidsuforhetForhandsvarselService.sendVarselTilArbeidstaker(
varselHendelse.toArbeidstakerHendelse()
)

SM_VEDTAK_FRISKMELDING_TIL_ARBEIDSFORMIDLING -> friskmeldingTilArbeidsformidlingVedtakService.sendVarselTilArbeidstaker(
varselHendelse.toArbeidstakerHendelse()
)

SM_FORHANDSVARSEL_MANGLENDE_MEDVIRKNING ->
manglendeMedvirkningVarselService.sendVarselTilArbeidstaker(varselHendelse.toArbeidstakerHendelse())

else -> {
log.warn("Klarte ikke mappe varsel av type ${varselHendelse.type} ved behandling forsøk")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package no.nav.syfo.service

import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.style.DescribeSpec
import io.mockk.clearAllMocks
import io.mockk.coVerify
import io.mockk.mockk
import no.nav.syfo.consumer.distribuerjournalpost.DistibusjonsType
import no.nav.syfo.kafka.consumers.varselbus.domain.ArbeidstakerHendelse
import no.nav.syfo.kafka.consumers.varselbus.domain.HendelseType
import no.nav.syfo.kafka.consumers.varselbus.domain.VarselData
import no.nav.syfo.kafka.consumers.varselbus.domain.VarselDataJournalpost
import org.amshove.kluent.shouldBeEqualTo
import java.io.IOException

class ManglendeMedvirkningVarselServiceTest : DescribeSpec({
val senderFacade = mockk<SenderFacade>(relaxed = true)
val manglendeMedvirkningVarselService = ManglendeMedvirkningVarselService(senderFacade)
val journalpostId = "620049753"
val journalpostUuid = "bda0b55a-df72-4888-a5a5-6bfa74cacafe"
val hendelse = ArbeidstakerHendelse(
type = HendelseType.SM_FORHANDSVARSEL_MANGLENDE_MEDVIRKNING,
ferdigstill = false,
data = varselData(journalpostId = journalpostId, journalpostUuid = journalpostUuid),
arbeidstakerFnr = SM_FNR,
orgnummer = null,
)

beforeTest {
clearAllMocks()
}

describe("Varsel ang. manglende medvirkning") {
it("Sender varsel til fysisk print") {
manglendeMedvirkningVarselService.sendVarselTilArbeidstaker(hendelse)

coVerify(exactly = 1) {
senderFacade.sendBrevTilFysiskPrint(
journalpostUuid,
hendelse,
journalpostId,
DistibusjonsType.VIKTIG,
)
}
}

it("Får IOException dersom mangende journalpostid") {
val feilendeHendelse = hendelse.copy(
data = VarselData(
journalpost = VarselDataJournalpost(uuid = "something", id = null)
)
)

val exception = shouldThrow<IOException> {
manglendeMedvirkningVarselService.sendVarselTilArbeidstaker(feilendeHendelse)
}

exception.message shouldBeEqualTo "ArbeidstakerHendelse har feil format"
}
}
})

0 comments on commit 5c6baab

Please sign in to comment.