Skip to content

Commit

Permalink
only log identendringer
Browse files Browse the repository at this point in the history
  • Loading branch information
andreasDev committed Oct 11, 2023
1 parent 397af7c commit 1d6c375
Show file tree
Hide file tree
Showing 6 changed files with 600 additions and 279 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ graph TD
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR(BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR) -->|Yes| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_INVALID(INVALID):::invalid
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR(BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR) -->|No| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER(BEHANDLER_MT_FT_KI_OVER_12_UKER)
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER(BEHANDLER_MT_FT_KI_OVER_12_UKER) -->|Yes| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_INVALID(INVALID):::invalid
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER(BEHANDLER_MT_FT_KI_OVER_12_UKER) -->|No| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_OK(OK):::ok
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER(BEHANDLER_MT_FT_KI_OVER_12_UKER) -->|No| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING(BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING)
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING(BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING) -->|Yes| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING_INVALID(INVALID):::invalid
root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING(BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING) -->|No| root_BEHANDLER_IKKE_GYLDIG_I_HPR_BEHANDLER_MANGLER_AUTORISASJON_I_HPR_BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR_BEHANDLER_MT_FT_KI_OVER_12_UKER_BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING_OK(OK):::ok
classDef ok fill:#c3ff91,stroke:#004a00,color: black;
classDef invalid fill:#ff7373,stroke:#ff0000,color: black;
classDef manuell fill:#ffe24f,stroke:#ffd500,color: #473c00;
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/no/nav/syfo/client/NorskHelsenettClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import io.ktor.http.HttpStatusCode.Companion.InternalServerError
import io.ktor.http.HttpStatusCode.Companion.NotFound
import io.ktor.http.HttpStatusCode.Companion.OK
import java.io.IOException
import java.time.LocalDateTime
import net.logstash.logback.argument.StructuredArguments.fields
import no.nav.syfo.azuread.v2.AzureAdV2Client
import no.nav.syfo.helpers.retry
import no.nav.syfo.rules.api.log
import no.nav.syfo.utils.LoggingMeta
import java.time.LocalDateTime

class NorskHelsenettClient(
private val endpointUrl: String,
Expand Down Expand Up @@ -91,7 +91,7 @@ data class Behandler(
data class Godkjenning(
val helsepersonellkategori: Kode? = null,
val autorisasjon: Kode? = null,
val tillegskompetanse: List<Tilleggskompetanse>?
val tillegskompetanse: List<Tilleggskompetanse>? = null,
)

data class Tilleggskompetanse(
Expand Down
11 changes: 11 additions & 0 deletions src/main/kotlin/no/nav/syfo/rules/hpr/HPRRuleHit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,15 @@ enum class HPRRuleHit(
"gjør at sykefraværet ditt overstiger 12 uker",
),
),
BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING(
ruleHit =
RuleHit(
rule = "BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDINGHPRRuleHit",
status = Status.INVALID,
messageForSender =
"Behandler finnes i HPR, men er fysioterapeut uten tilleggskompetanse for sykmelding" +
"Pasienten har fått beskjed.",
messageForUser = "Den som skrev sykmeldingen manglet autorisasjon",
),
),
}
11 changes: 10 additions & 1 deletion src/main/kotlin/no/nav/syfo/rules/hpr/HPRRuleTree.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ enum class HPRRules {
BEHANDLER_MANGLER_AUTORISASJON_I_HPR,
BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR,
BEHANDLER_MT_FT_KI_OVER_12_UKER,
BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING,
}

val hprRuleTree =
Expand All @@ -22,7 +23,13 @@ val hprRuleTree =
yes(Status.INVALID, HPRRuleHit.BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR)
no(HPRRules.BEHANDLER_MT_FT_KI_OVER_12_UKER) {
yes(Status.INVALID, HPRRuleHit.BEHANDLER_MT_FT_KI_OVER_12_UKER)
no(OK)
no(HPRRules.BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING) {
yes(
Status.INVALID,
HPRRuleHit.BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING
)
no(OK)
}
}
}
}
Expand All @@ -42,5 +49,7 @@ fun getRule(rules: HPRRules): Rule<HPRRules> {
HPRRules.BEHANDLER_MANGLER_AUTORISASJON_I_HPR -> behandlerManglerAutorisasjon
HPRRules.BEHANDLER_IKKE_LE_KI_MT_TL_FT_I_HPR -> behandlerIkkeLEKIMTTLFT
HPRRules.BEHANDLER_MT_FT_KI_OVER_12_UKER -> behandlerMTFTKISykmeldtOver12Uker
HPRRules.BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING ->
behandlerErFTUtenTilligskompetanseSykmelding
}
}
62 changes: 45 additions & 17 deletions src/main/kotlin/no/nav/syfo/rules/hpr/Rules.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package no.nav.syfo.rules.hpr

import java.time.LocalDateTime
import no.nav.syfo.client.Godkjenning
import no.nav.syfo.client.Tilleggskompetanse
import no.nav.syfo.model.Sykmelding
import no.nav.syfo.rules.dsl.RuleResult
import no.nav.syfo.services.BehandlerOgStartdato
Expand All @@ -13,23 +15,6 @@ typealias Rule<T> =

typealias HPRRule = Rule<HPRRules>

val behanderManglerTillegeskompetanse: HPRRule = { _, behandlerOgStartdato ->

val behandlerGodkjenninger = behandlerOgStartdato.behandler.godkjenninger
val har = harAktivHelsepersonellAutorisasjonsSom(
behandlerGodkjenninger,
listOf(
HelsepersonellKategori.FYSIOTERAPAEUT.verdi,
),
)

RuleResult(
ruleInputs = mapOf("behandlerGodkjenninger" to behandlerGodkjenninger),
rule = HPRRules.BEHANDLER_IKKE_GYLDIG_I_HPR,
ruleResult = !aktivAutorisasjon,
)
}

val behanderIkkeGyldigHPR: HPRRule = { _, behandlerOgStartdato ->
val behandlerGodkjenninger = behandlerOgStartdato.behandler.godkjenninger

Expand Down Expand Up @@ -121,6 +106,49 @@ val behandlerMTFTKISykmeldtOver12Uker: HPRRule = { sykmelding, behandlerOgStartd
ruleResult = behandlerMTFTKISykmeldtOver12Uker,
)
}
val behandlerErFTUtenTilligskompetanseSykmelding: HPRRule = { metadata, behandlerOgStartdato ->
val behandlerGodkjenninger = behandlerOgStartdato.behandler.godkjenninger
val genereringsTidspunkt = metadata.signaturDato

val erFtMedTilleggskompetanse =
erFTMedTillegskompetanse(behandlerGodkjenninger, genereringsTidspunkt)

val result = erFtMedTilleggskompetanse

RuleResult(
ruleInputs = mapOf("behandlerGodkjenninger" to behandlerGodkjenninger),
rule = HPRRules.BEHANDLER_ER_FT_UTEN_TILLIGESKOMPETANSE_SYKMELDING,
ruleResult = result,
)
}

private fun erFTMedTillegskompetanse(
behandlerGodkjenninger: List<Godkjenning>,
genereringsTidspunkt: LocalDateTime,
) =
(behandlerGodkjenninger.size == 1 &&
behandlerGodkjenninger.any { godkjenning ->
godkjenning.helsepersonellkategori?.verdi ==
HelsepersonellKategori.FYSIOTERAPAEUT.verdi &&
godkjenning.tillegskompetanse?.any { tillegskompetanse ->
tillegskompetanse.avsluttetStatus == null &&
tillegskompetanse.gyldigPeriode(genereringsTidspunkt) &&
tillegskompetanse.type?.aktiv == true &&
tillegskompetanse.type.oid == 7702 &&
tillegskompetanse.type.verdi == "1"
}
?: false
})

private fun Tilleggskompetanse.gyldigPeriode(genereringsTidspunkt: LocalDateTime): Boolean {
val fom = gyldig?.fra?.toLocalDate()
val tom = gyldig?.til?.toLocalDate()
val genDate = genereringsTidspunkt.toLocalDate()
if (fom == null) {
return false
}
return fom.minusDays(1).isBefore(genDate) && (tom == null || tom.plusDays(1).isAfter(genDate))
}

private fun harAktivHelsepersonellAutorisasjonsSom(
behandlerGodkjenninger: List<Godkjenning>,
Expand Down
Loading

0 comments on commit 1d6c375

Please sign in to comment.