Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hotfix: Fange tilfeller hvor det finnes flere saker av samme type #6423

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,23 @@ package no.nav.etterlatte.grunnlagsendring.doedshendelse.kontrollpunkt
import no.nav.etterlatte.behandling.BehandlingService
import no.nav.etterlatte.behandling.domain.GrunnlagsendringStatus
import no.nav.etterlatte.behandling.domain.GrunnlagsendringsType
import no.nav.etterlatte.behandling.sikkerLogg
import no.nav.etterlatte.common.klienter.PdlTjenesterKlient
import no.nav.etterlatte.common.klienter.PesysKlient
import no.nav.etterlatte.grunnlagsendring.GrunnlagsendringshendelseDao
import no.nav.etterlatte.grunnlagsendring.doedshendelse.DoedshendelseInternal
import no.nav.etterlatte.grunnlagsendring.doedshendelse.Relasjon
import no.nav.etterlatte.grunnlagsendring.doedshendelse.harAktivAdresse
import no.nav.etterlatte.libs.common.behandling.SakType
import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException
import no.nav.etterlatte.libs.common.pdl.PersonDTO
import no.nav.etterlatte.libs.common.person.PersonRolle
import no.nav.etterlatte.libs.common.person.maskerFnr
import no.nav.etterlatte.libs.common.sak.Sak
import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo
import no.nav.etterlatte.oppgave.OppgaveService
import no.nav.etterlatte.sak.SakService
import org.slf4j.LoggerFactory

class DoedshendelseKontrollpunktService(
private val pdlTjenesterKlient: PdlTjenesterKlient,
Expand All @@ -25,6 +29,8 @@ class DoedshendelseKontrollpunktService(
pesysKlient: PesysKlient,
private val behandlingService: BehandlingService,
) {
private val logger = LoggerFactory.getLogger(this::class.java)

private val kontrollpunktEktefelleService = DoedshendelseKontrollpunktEktefelleService()
private val kontrollpunktAvdoedService = DoedshendelseKontrollpunktAvdoedService()
private val kontrollpunktBarnService = DoedshendelseKontrollpunktBarnService(pdlTjenesterKlient, behandlingService)
Expand Down Expand Up @@ -102,13 +108,48 @@ class DoedshendelseKontrollpunktService(
beroert: PersonRolle,
): Triple<Sak?, PersonDTO, PersonDTO> {
val sakType = hendelse.sakTypeForEpsEllerBarn()
val sak = sakService.finnSak(hendelse.beroertFnr, sakType)
val sak = hentSakForDoedshendelse(hendelse.beroertFnr, sakType)

val avdoed = pdlTjenesterKlient.hentPdlModellForSaktype(hendelse.avdoedFnr, PersonRolle.AVDOED, sakType)
val gjenlevende = pdlTjenesterKlient.hentPdlModellForSaktype(hendelse.beroertFnr, beroert, hendelse.sakTypeForEpsEllerBarn())
val gjenlevende =
pdlTjenesterKlient.hentPdlModellForSaktype(hendelse.beroertFnr, beroert, hendelse.sakTypeForEpsEllerBarn())

return Triple(sak, avdoed, gjenlevende)
}

/**
* Midlertidig løsning inntil vi får nøstet opp i tilfellene hvor det finnes flere saker på én person
* Gjelder i hovedsak personer som har fått endret identifikator
**/
private fun hentSakForDoedshendelse(
beroertFnr: String,
sakType: SakType,
): Sak? =
try {
sakService.finnSak(beroertFnr, sakType)
} catch (e: InternfeilException) {
val saker = sakService.finnSaker(beroertFnr)

if (saker.size > 1) {
Copy link
Contributor

@sebassonav sebassonav Nov 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si det her skjer i produksjon, vil vi ikke potensielt nå da sende ut et brev selvom bruker allerede har sendt en søknad?
edit: Det kjøres en sjekk i kontrollpunktene i jobben på om bruker har en iverksatt behandling og da avbrytes den.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, men er det vanlig at det sendes ut dødshendelser flere ganger på samme person?

Tenkte kanskje det er mest sannsynlig at det opprettes ny hendelse fordi et annet familiemedlem dør, og da er det jo uansett hensiktsmessig at det blir sendt brev, selv om det potensielt er koblet til "feil sak".

Alternative løsninger blir å sjekke om det finnes behandling, i stedet for iverksatte som det gjøres i dag.
Eller skrive om kontrollpunktene til å håndtere en liste med saker.

Oddsen for at dette skjer er vel strengt tatt veldig lav nå som det ikke lenger er mulig å opprette flere saker på samme person. Finnes potensielt et par tilfeller hvor noen har flere saker i produksjon allerede, ettersom det ikke var noen sperre før.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Det er vel bare å sjekke i databasen det :D
Har ikke hørt noe om det i hvert fall.

Det er sikkert ikke krise, men det kan jo potensielt bli at bruker tror at en søknad de har sendt inn ikke er sendt inn allikevel som gjør bruker usikker. Samtidig om det skjer sjeldent så er det vel noe vi kan ignorere...

Men burde nok konsolidere behandlingssjekken for saker og den for kontrollpunktene?

Kan jo splitte ut hentSakMedBehandlinger for en med flere saker som denne bruker og

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Litt usikker på om jeg forsto problemstillingen her. Selv om bruker har sendt inn en søknad, vil det vel fortsatt sendes et brev all tid denne søknaden ikke er ferdig behandlet?

Denne sjekken som legges på vil vel kun gjøre at de som skulle ha to eller flere saker pga splitt ifm fnr-endring ikke feiler ved kjøring?

logger.error("Fikk flere saker på ident ved henting av data for dødshendelse. Se sikkerlogg.")
sikkerLogg.error("Det finnes flere saker på bruker med ident=$beroertFnr: ${saker.joinToString()} ")

val sakMedBehandlinger = behandlingService.hentSakMedBehandlinger(saker)
sikkerLogg.error("Bruker sak ${sakMedBehandlinger.sak.id} for dødshendelsen")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Denne trenger kanskje ikke å være sikkerlogg eller error?


with(sakMedBehandlinger.sak) {
Sak(
ident = ident,
sakType = sakType,
id = id,
enhet = enhet,
)
}
} else {
saker.firstOrNull()
}
}

private fun kontrollerAvdoedHarYtelseIGjenny(hendelse: DoedshendelseInternal): List<DoedshendelseKontrollpunkt> {
val sakerForAvdoed = sakService.finnSaker(hendelse.avdoedFnr)
return if (sakerForAvdoed.isEmpty()) {
Expand Down