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

IS-3152: Invalid svar dialogmoteinnkalling #276

Merged
merged 3 commits into from
Mar 10, 2025
Merged
Show file tree
Hide file tree
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 @@ -117,6 +117,7 @@ class DialogmeldingProcessor(
val vedleggListe = xmlVedlegg.map { xml -> xml.toVedlegg() }

val validationResult = validateMessage(
msgId = msgId,
sha256String = sha256String,
loggingMeta = loggingMeta,
innbyggerOK = innbyggerOK,
Expand Down Expand Up @@ -180,6 +181,7 @@ class DialogmeldingProcessor(
}

suspend fun validateMessage(
msgId: String,
sha256String: String,
loggingMeta: LoggingMeta,
innbyggerOK: Boolean,
Expand All @@ -205,7 +207,7 @@ class DialogmeldingProcessor(
handleTestFnrInProd(loggingMeta)
} else if (dialogmeldingType.isHenvendelseFraLegeOrForesporselSvar() && dialogmeldingXml.notat.first().tekstNotatInnhold.isNullOrEmpty()) {
handleMeldingsTekstMangler(loggingMeta)
} else if (!isKodeverkValid(dialogmeldingXml, dialogmeldingType)) {
} else if (!isKodeverkValid(msgId, dialogmeldingXml, dialogmeldingType)) {
handleInvalidDialogMeldingKodeverk(loggingMeta)
} else if (virusScanService.vedleggContainsVirus(vedlegg)) {
handleVedleggMayContainVirus(loggingMeta)
Expand Down
8 changes: 8 additions & 0 deletions src/main/kotlin/no/nav/syfo/model/DialogmeldingKodeverk.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ enum class DialogmeldingKodeverk(
val arenaNotatTittel: String
) {
PRODUKSJON_AV_NOTAT_FORFATTER("2.16.578.1.12.4.1.1.9057", "Forfatter", "1", "", "", ""),
INNKALLING_DIALOGMOTE_KODEVERK(
"2.16.578.1.12.4.1.1.8125",
"Innkalling dialogmøte",
"",
"",
"",
""
),
SVAR_PAA_INNKALLING_DIALOGMOTE_JA_JEG_KOMMER(
"2.16.578.1.12.4.1.1.8126",
"Ja, jeg kommer",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package no.nav.syfo.validation

import no.nav.helse.dialogmelding.XMLDialogmelding
import no.nav.syfo.model.DialogmeldingKodeverk
import no.nav.syfo.model.DialogmeldingType
import no.nav.syfo.model.findDialogmeldingKodeverk
import org.slf4j.Logger
import org.slf4j.LoggerFactory

fun isKodeverkValid(xmlDialogmelding: XMLDialogmelding, dialogmeldingType: DialogmeldingType): Boolean {
val logger: Logger = LoggerFactory.getLogger("no.nav.syfo.padm2")

fun isKodeverkValid(msgId: String, xmlDialogmelding: XMLDialogmelding, dialogmeldingType: DialogmeldingType): Boolean {
when (dialogmeldingType) {
DialogmeldingType.DIALOGMELDING_DIALOGMOTE_INNKALLING_MOTERESPONS -> {
val kodeverkOID = xmlDialogmelding.notat.first().temaKodet.s
Expand All @@ -17,6 +22,10 @@ fun isKodeverkValid(xmlDialogmelding: XMLDialogmelding, dialogmeldingType: Dialo
val kodeverkOID = xmlDialogmelding.notat.first().temaKodet.s
val versjon = xmlDialogmelding.notat.first().temaKodet.v
val xmlDialogmeldingKodeverk = findDialogmeldingKodeverk(kodeverkOID, versjon)
val foresporselKodeverk = xmlDialogmelding.foresporsel.firstOrNull()?.typeForesp?.s
if (foresporselKodeverk == DialogmeldingKodeverk.INNKALLING_DIALOGMOTE_KODEVERK.kodeverkOID) {
logger.warn("Invalid kodeverk: Received foresporselsvar for foresporsel with dialogmotekodeverk: $msgId")
}
val gyldigeDialogmeldingKodeverk = DialogmeldingType.DIALOGMELDING_FORESPORSEL_FRA_SAKSBEHANDLER_FORESPORSEL_SVAR.dialogmeldingKodeverk
return gyldigeDialogmeldingKodeverk.contains(xmlDialogmeldingKodeverk)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@ import no.nav.syfo.util.safeUnmarshal
import no.nav.syfo.validation.isKodeverkValid
import org.amshove.kluent.shouldBe
import org.junit.jupiter.api.Test
import java.util.*

internal class ValidateDialogMeldingKodeverkTest {

val msgId = UUID.randomUUID().toString()

@Test
internal fun `Should be invalid dialogmeldingkodeverk combo`() {
val felleformatDm = safeUnmarshal(
Expand All @@ -23,7 +26,7 @@ internal class ValidateDialogMeldingKodeverkTest {

val dialogmeldingType = findDialogmeldingType(emottakblokk.ebService, emottakblokk.ebAction)

val validateDialogMeldingKodeverk = isKodeverkValid(dialomeldingxml, dialogmeldingType)
val validateDialogMeldingKodeverk = isKodeverkValid(msgId, dialomeldingxml, dialogmeldingType)

validateDialogMeldingKodeverk shouldBe false
}
Expand All @@ -39,7 +42,7 @@ internal class ValidateDialogMeldingKodeverkTest {

val dialogmeldingType = findDialogmeldingType(emottakblokk.ebService, emottakblokk.ebAction)

val validateDialogMeldingKodeverk = isKodeverkValid(dialomeldingxml, dialogmeldingType)
val validateDialogMeldingKodeverk = isKodeverkValid(msgId, dialomeldingxml, dialogmeldingType)

validateDialogMeldingKodeverk shouldBe true
}
Expand All @@ -57,7 +60,7 @@ internal class ValidateDialogMeldingKodeverkTest {

val dialogmeldingType = findDialogmeldingType(emottakblokk.ebService, emottakblokk.ebAction)

val validateDialogMeldingKodeverk = isKodeverkValid(dialogmeldingxml, dialogmeldingType)
val validateDialogMeldingKodeverk = isKodeverkValid(msgId, dialogmeldingxml, dialogmeldingType)

validateDialogMeldingKodeverk shouldBe false
}
Expand Down
Loading