Skip to content

Commit

Permalink
IS-2403: Oppdatere behandlere fra AR
Browse files Browse the repository at this point in the history
  • Loading branch information
geir-waagboe committed Aug 2, 2024
1 parent 98a356a commit c203882
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/main/kotlin/no/nav/syfo/behandler/BehandlerService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,24 @@ class BehandlerService(
database.updateBehandlerIdenter(behandlerRef, identer)
}

fun updateBehandlerNavnAndKategoriAndHerId(
behandlerRef: UUID,
fornavn: String,
mellomnavn: String?,
etternavn: String,
kategori: BehandlerKategori?,
herId: String,
) {
database.updateBehandlerNavnAndKategoriAndHerId(
behandlerRef = behandlerRef,
fornavn = fornavn,
mellomnavn = mellomnavn,
etternavn = etternavn,
kategori = kategori,
herId,
)
}

fun invalidateBehandler(behandlerRef: UUID) {
database.invalidateBehandler(behandlerRef)
}
Expand Down
29 changes: 29 additions & 0 deletions src/main/kotlin/no/nav/syfo/behandler/database/BehandlerQuery.kt
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,35 @@ fun DatabaseInterface.getBehandlerByArbeidstaker(personident: Personident): List
return getBehandlerAndRelasjonstypeList(personident).map { it.first }
}

const val queryUpdateBehandlerNavnOgKategoriAndHerId =
"""
UPDATE BEHANDLER
SET fornavn=?,mellomnavn=?,etternavn=?,kategori=COALESCE(kategori,?),her_id=?,updated_at=now()
WHERE behandler_ref=?
"""

fun DatabaseInterface.updateBehandlerNavnAndKategoriAndHerId(
behandlerRef: UUID,
fornavn: String,
mellomnavn: String?,
etternavn: String,
kategori: BehandlerKategori?,
herId: String,
) {
connection.use {
it.prepareStatement(queryUpdateBehandlerNavnOgKategoriAndHerId).use {
it.setString(1, fornavn)
it.setString(2, mellomnavn)
it.setString(3, etternavn)
it.setString(4, kategori?.kategoriKode)
it.setString(5, herId)
it.setString(6, behandlerRef.toString())
it.executeUpdate()
}
it.commit()
}
}

const val queryUpdateBehandlerTelefon =
"""
UPDATE BEHANDLER
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import no.nav.syfo.behandler.database.domain.PBehandler
import no.nav.syfo.behandler.database.domain.PBehandlerKontor
import no.nav.syfo.behandler.database.domain.toBehandlerKontor
import no.nav.syfo.behandler.domain.Behandler
import no.nav.syfo.behandler.domain.BehandlerKategori
import no.nav.syfo.behandler.domain.BehandleridentType
import no.nav.syfo.behandler.fastlege.BehandlerKontorFraAdresseregisteretDTO
import no.nav.syfo.behandler.fastlege.FastlegeClient
Expand Down Expand Up @@ -82,6 +83,11 @@ class VerifyBehandlereForKontorCronjob(
existingBehandlereForKontor,
)

updateExistingBehandlere(
aktiveBehandlereForKontor,
behandlerService.getBehandlereForKontor(behandlerKontor).filter { it.invalidated == null },
)

// TODO: Hvis finnes fra før: oppdatere behandlerforekomst med info fra Adresseregisteret/HPR: navn, herId, behandlerKategori
}
} else {
Expand Down Expand Up @@ -275,6 +281,39 @@ class VerifyBehandlereForKontorCronjob(
}
}

private suspend fun updateExistingBehandlere(
aktiveBehandlereForKontor: List<BehandlerKontorFraAdresseregisteretDTO.BehandlerFraAdresseregisteretDTO>,
existingBehandlereForKontor: List<PBehandler>,
) {
aktiveBehandlereForKontor.filter {
it.hprId != null
}.forEach { behandlerFraAdresseregisteret ->
val behandlerFraAdresseregisteretHprId = behandlerFraAdresseregisteret.hprId!!.toString()
val existingBehandlereWithSameHprId = existingBehandlereForKontor.filter {
it.hprId == behandlerFraAdresseregisteretHprId
}
if (existingBehandlereWithSameHprId.size != 1) {
log.warn("VerifyBehandlereForKontorCronjob: Expected to find exactly one behandler: ${existingBehandlereWithSameHprId.first().behandlerRef}")
} else {
val existingBehandler = existingBehandlereWithSameHprId[0]
val hprBehandlerFnr = syfohelsenettproxyClient.finnBehandlerFraHpr(behandlerFraAdresseregisteretHprId)?.fnr
if (hprBehandlerFnr == null || hprBehandlerFnr != existingBehandler.personident) {
log.warn("VerifyBehandlereForKontorCronjob: Mismatched personident: ${existingBehandler.behandlerRef}")
} else {
// both hpr and personident match: update name, herid and kategori
behandlerService.updateBehandlerNavnAndKategoriAndHerId(
behandlerRef = existingBehandler.behandlerRef,
fornavn = behandlerFraAdresseregisteret.fornavn,
mellomnavn = behandlerFraAdresseregisteret.mellomnavn,
etternavn = behandlerFraAdresseregisteret.etternavn,
kategori = BehandlerKategori.fromKategoriKode(behandlerFraAdresseregisteret.kategori),
herId = behandlerFraAdresseregisteret.herId.toString(),
)
}
}
}
}

companion object {
private val log = LoggerFactory.getLogger(VerifyBehandlereForKontorCronjob::class.java)
}
Expand Down

0 comments on commit c203882

Please sign in to comment.