diff --git a/src/main/kotlin/no/nav/syfo/application/DialogmeldingProcessor.kt b/src/main/kotlin/no/nav/syfo/application/DialogmeldingProcessor.kt index 7fd9b2ad..b43304c6 100644 --- a/src/main/kotlin/no/nav/syfo/application/DialogmeldingProcessor.kt +++ b/src/main/kotlin/no/nav/syfo/application/DialogmeldingProcessor.kt @@ -8,6 +8,8 @@ import no.nav.syfo.Environment import no.nav.syfo.application.mq.MQSenderInterface import no.nav.syfo.client.* import no.nav.syfo.client.azuread.v2.AzureAdV2Client +import no.nav.syfo.client.helsenett.SyfohelsenettproxyClient +import no.nav.syfo.client.helsenett.fullName import no.nav.syfo.client.pdl.PdlClient import no.nav.syfo.db.DatabaseInterface import no.nav.syfo.domain.PersonIdent @@ -67,9 +69,6 @@ class DialogmeldingProcessor( pdfgenClient = pdfgenClient, database = database, ) - val signerendeLegeService = SignerendeLegeService( - syfohelsenettproxyClient = syfohelsenettproxyClient, - ) val clamAvClient = ClamAvClient( endpointUrl = env.clamavURL, ) @@ -106,13 +105,15 @@ class DialogmeldingProcessor( ) val innbyggerOK = pdlClient.personEksisterer(PersonIdent(receivedDialogmelding.personNrPasient)) - val legeOK = pdlClient.personEksisterer(PersonIdent(receivedDialogmelding.personNrLege)) + val behandlerFnr = receivedDialogmelding.personNrLege + val legeOK = pdlClient.personEksisterer(PersonIdent(behandlerFnr)) - val navnSignerendeLege = signerendeLegeService.signerendeLegeNavn( - signerendeLegeFnr = receivedDialogmelding.personNrLege, + val navnSignerendeLege = syfohelsenettproxyClient.finnBehandler( + behandlerFnr = behandlerFnr, msgId = msgId, loggingMeta = loggingMeta, - ) + )?.fullName() ?: behandlerFnr + val vedleggListe = xmlVedlegg.map { xml -> xml.toVedlegg() } val validationResult = validateMessage( diff --git a/src/main/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandler.kt b/src/main/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandler.kt new file mode 100644 index 00000000..d94a62a2 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandler.kt @@ -0,0 +1,50 @@ +package no.nav.syfo.client.helsenett + +import java.util.* + +data class HelsenettProxyBehandler( + val godkjenninger: List, + val fnr: String?, + val hprNummer: Int?, + val fornavn: String?, + val mellomnavn: String?, + val etternavn: String? +) + +data class Godkjenning( + val helsepersonellkategori: Kode? = null, + val autorisasjon: Kode? = null +) + +data class Kode( + val aktiv: Boolean, + val oid: Int, + val verdi: String? +) + +fun HelsenettProxyBehandler.fullName(): String? = when { + fornavn == null && mellomnavn == null && etternavn == null -> { + null + } + mellomnavn == null -> { + "${fornavn?.lowerCapitalize()} ${etternavn?.lowerCapitalize()}" + } + else -> { + "${fornavn?.lowerCapitalize()} ${mellomnavn.lowerCapitalize()} ${etternavn?.lowerCapitalize()}" + } +} + +private fun String.lowerCapitalize() = + this.split(" ").joinToString(" ") { name -> + val nameWithDash = name.split("-") + if (nameWithDash.size > 1) { + nameWithDash.joinToString("-") { it.capitalizeName() } + } else { + name.capitalizeName() + } + } + +private fun String.capitalizeName() = + this.lowercase(Locale.getDefault()).replaceFirstChar { + if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() + } diff --git a/src/main/kotlin/no/nav/syfo/client/SyfohelsenettproxyClient.kt b/src/main/kotlin/no/nav/syfo/client/helsenett/SyfohelsenettproxyClient.kt similarity index 84% rename from src/main/kotlin/no/nav/syfo/client/SyfohelsenettproxyClient.kt rename to src/main/kotlin/no/nav/syfo/client/helsenett/SyfohelsenettproxyClient.kt index 73dc6cd7..99106918 100644 --- a/src/main/kotlin/no/nav/syfo/client/SyfohelsenettproxyClient.kt +++ b/src/main/kotlin/no/nav/syfo/client/helsenett/SyfohelsenettproxyClient.kt @@ -1,4 +1,4 @@ -package no.nav.syfo.client +package no.nav.syfo.client.helsenett import io.ktor.client.* import io.ktor.client.call.* @@ -59,23 +59,3 @@ class SyfohelsenettproxyClient( } } } - -data class HelsenettProxyBehandler( - val godkjenninger: List, - val fnr: String?, - val hprNummer: Int?, - val fornavn: String?, - val mellomnavn: String?, - val etternavn: String? -) - -data class Godkjenning( - val helsepersonellkategori: Kode? = null, - val autorisasjon: Kode? = null -) - -data class Kode( - val aktiv: Boolean, - val oid: Int, - val verdi: String? -) diff --git a/src/main/kotlin/no/nav/syfo/rules/HPRRuleChain.kt b/src/main/kotlin/no/nav/syfo/rules/HPRRuleChain.kt index 6a411bc5..e12802a9 100644 --- a/src/main/kotlin/no/nav/syfo/rules/HPRRuleChain.kt +++ b/src/main/kotlin/no/nav/syfo/rules/HPRRuleChain.kt @@ -1,6 +1,6 @@ package no.nav.syfo.rules -import no.nav.syfo.client.HelsenettProxyBehandler +import no.nav.syfo.client.helsenett.HelsenettProxyBehandler import no.nav.syfo.model.HelsepersonellKategori import no.nav.syfo.model.Status diff --git a/src/main/kotlin/no/nav/syfo/services/RuleService.kt b/src/main/kotlin/no/nav/syfo/services/RuleService.kt index c0d9b9f8..d3e8571e 100644 --- a/src/main/kotlin/no/nav/syfo/services/RuleService.kt +++ b/src/main/kotlin/no/nav/syfo/services/RuleService.kt @@ -3,7 +3,7 @@ package no.nav.syfo.services import java.time.format.DateTimeFormatter import net.logstash.logback.argument.StructuredArguments.fields import no.nav.syfo.client.LegeSuspensjonClient -import no.nav.syfo.client.SyfohelsenettproxyClient +import no.nav.syfo.client.helsenett.SyfohelsenettproxyClient import no.nav.syfo.model.ReceivedDialogmelding import no.nav.syfo.model.RuleInfo import no.nav.syfo.model.RuleMetadata diff --git a/src/main/kotlin/no/nav/syfo/services/SignerendeLegeService.kt b/src/main/kotlin/no/nav/syfo/services/SignerendeLegeService.kt deleted file mode 100644 index 3a13644e..00000000 --- a/src/main/kotlin/no/nav/syfo/services/SignerendeLegeService.kt +++ /dev/null @@ -1,36 +0,0 @@ -package no.nav.syfo.services - -import io.ktor.util.* -import no.nav.syfo.client.HelsenettProxyBehandler -import no.nav.syfo.client.SyfohelsenettproxyClient -import no.nav.syfo.util.LoggingMeta - -class SignerendeLegeService( - private val syfohelsenettproxyClient: SyfohelsenettproxyClient -) { - suspend fun signerendeLegeNavn( - signerendeLegeFnr: String, - msgId: String, - loggingMeta: LoggingMeta - ): String { - val signerendeLege = syfohelsenettproxyClient.finnBehandler(signerendeLegeFnr, msgId, loggingMeta) - - return getNameSignerendeLege(signerendeLege, signerendeLegeFnr) - } - - private fun getNameSignerendeLege(helsenettProxyBehandler: HelsenettProxyBehandler?, behandlerFnr: String): String = - when { - helsenettProxyBehandler == null -> { - behandlerFnr - } - helsenettProxyBehandler.fornavn == null && helsenettProxyBehandler.mellomnavn == null && helsenettProxyBehandler.etternavn == null -> { - behandlerFnr - } - helsenettProxyBehandler.mellomnavn == null -> { - "${helsenettProxyBehandler.etternavn}, ${helsenettProxyBehandler.fornavn}" - } - else -> { - "${helsenettProxyBehandler.etternavn}, ${helsenettProxyBehandler.fornavn} ${helsenettProxyBehandler.mellomnavn}" - } - } -} diff --git a/src/test/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandlerSpek.kt b/src/test/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandlerSpek.kt new file mode 100644 index 00000000..81107dad --- /dev/null +++ b/src/test/kotlin/no/nav/syfo/client/helsenett/HelsenettProxyBehandlerSpek.kt @@ -0,0 +1,47 @@ +package no.nav.syfo.client.helsenett + +import org.amshove.kluent.shouldBeEqualTo +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +fun generateHelsenettProxyBehandler(fornavn: String, mellomnavn: String?, etternavn: String): HelsenettProxyBehandler { + return HelsenettProxyBehandler( + godkjenninger = emptyList(), + fnr = "12125678911", + hprNummer = 123456, + fornavn = fornavn, + mellomnavn = mellomnavn, + etternavn = etternavn + ) +} + +class HelsenettProxyBehandlerSpek : Spek({ + describe("fullName") { + it("returns full name Fornavn Mellomnavn Etternavn") { + val behandler = generateHelsenettProxyBehandler( + fornavn = "fornavn", + mellomnavn = "mellomnavn", + etternavn = "etternavn" + ) + behandler.fullName() shouldBeEqualTo "Fornavn Mellomnavn Etternavn" + } + it("returns full name Fornavn-Navn Mellomnavn Etternavn") { + val behandler = generateHelsenettProxyBehandler( + fornavn = "fornavn-navn", + mellomnavn = "MELLOMNAVN", + etternavn = "EtternAvn" + ) + + behandler.fullName() shouldBeEqualTo "Fornavn-Navn Mellomnavn Etternavn" + } + it("returns full name Fornavn Etternavn when mellomnavn is null") { + val behandler = generateHelsenettProxyBehandler( + fornavn = "fornavn", + mellomnavn = null, + etternavn = "ETTERNAVN" + ) + + behandler.fullName() shouldBeEqualTo "Fornavn Etternavn" + } + } +}) diff --git a/src/test/kotlin/no/nav/syfo/mock/SyfohelsenettproxyMock.kt b/src/test/kotlin/no/nav/syfo/mock/SyfohelsenettproxyMock.kt index f3c88ad1..1e8a3dc7 100644 --- a/src/test/kotlin/no/nav/syfo/mock/SyfohelsenettproxyMock.kt +++ b/src/test/kotlin/no/nav/syfo/mock/SyfohelsenettproxyMock.kt @@ -9,7 +9,9 @@ import io.ktor.server.plugins.contentnegotiation.* import io.ktor.server.response.* import io.ktor.server.routing.* import no.nav.syfo.UserConstants -import no.nav.syfo.client.* +import no.nav.syfo.client.helsenett.Godkjenning +import no.nav.syfo.client.helsenett.HelsenettProxyBehandler +import no.nav.syfo.client.helsenett.Kode import no.nav.syfo.getRandomPort import no.nav.syfo.model.HelsepersonellKategori import no.nav.syfo.util.configure diff --git a/src/test/kotlin/no/nav/syfo/rules/HPRRuleChainTest.kt b/src/test/kotlin/no/nav/syfo/rules/HPRRuleChainTest.kt index 6cab9339..bf64320a 100644 --- a/src/test/kotlin/no/nav/syfo/rules/HPRRuleChainTest.kt +++ b/src/test/kotlin/no/nav/syfo/rules/HPRRuleChainTest.kt @@ -1,9 +1,9 @@ package no.nav.syfo.rules import io.mockk.mockk -import no.nav.syfo.client.Godkjenning -import no.nav.syfo.client.HelsenettProxyBehandler -import no.nav.syfo.client.Kode +import no.nav.syfo.client.helsenett.Godkjenning +import no.nav.syfo.client.helsenett.HelsenettProxyBehandler +import no.nav.syfo.client.helsenett.Kode import no.nav.syfo.model.Dialogmelding import no.nav.syfo.model.HelsepersonellKategori import org.amshove.kluent.shouldBeEqualTo