Skip to content

Commit

Permalink
Merge pull request #759 from statisticsnorway/bug-fix-sosialhjelp
Browse files Browse the repository at this point in the history
Bug fix sosialhjelp
  • Loading branch information
jululstein authored Nov 13, 2024
2 parents a523868 + fe0c87e commit ae0a5bb
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ object SosialhjelpColumnNames {
const val VILKARHELSE_COL_NAME = "VILKARHELSE"
const val VILKARANNET_COL_NAME = "VILKARANNET"
const val VILKARDIGPLAN_COL_NAME = "VILKARDIGPLAN"
const val VILKARNORSKSAMISKOPPL_COL_NAME = "VILKARNORSKSAMISKOPPL"
const val VEDTAKDATO_COL_NAME = "VEDTAKDATO"
const val VEDTAKARB_COL_NAME = "VEDTAKARB"
const val VEDTAKAKT_COL_NAME = "VEDTAKAKT"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ class Rule020AViktigsteKildeTilLivsOppholdKode3 : AbstractNoArgsRule<List<Kostra
.codeList
.firstOrNull { item -> item.code == kostraRecord[VKLO_COL_NAME] }

val vklo = if (vkloNullable == null) "ukjent" else vkloNullable.value

val codeList = SosialhjelpFieldDefinitions
.fieldDefinitions
.byColumnName(TRYGDESIT_COL_NAME)
Expand All @@ -34,7 +32,7 @@ class Rule020AViktigsteKildeTilLivsOppholdKode3 : AbstractNoArgsRule<List<Kostra

createValidationReportEntry(
"Mottakerens viktigste kilde til livsopphold ved siste kontakt med sosial-/NAV-kontoret " +
"er ${vklo}. Trygdesituasjonen er '(${kostraRecord[TRYGDESIT_COL_NAME]})', " +
"er ikke trygd/pensjon. Trygdesituasjonen er '(${kostraRecord[TRYGDESIT_COL_NAME]})', " +
"forventet én av '(${codeList})'. Feltet er obligatorisk å fylle ut.",
lineNumbers = listOf(kostraRecord.lineNumber)
).copy(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,26 @@ import no.ssb.kostra.validation.report.Severity
import no.ssb.kostra.validation.rule.AbstractRule
import no.ssb.kostra.validation.rule.sosial.sosialhjelp.SosialhjelpRuleId

class Rule022TilknytningTilTrygdesystemetOgAlder : AbstractRule<List<KostraRecord>>(
SosialhjelpRuleId.SOSIALHJELP_K022_TRYGDESYSTEMET_ALDER.title,
Severity.ERROR
) {
override fun validate(context: List<KostraRecord>, arguments: KotlinArguments) = context
class Rule022TilknytningTilTrygdesystemetOgAlder :
AbstractRule<List<KostraRecord>>(
SosialhjelpRuleId.SOSIALHJELP_K022_TRYGDESYSTEMET_ALDER.title,
Severity.ERROR,
) {
override fun validate(
context: List<KostraRecord>,
arguments: KotlinArguments,
) = context
.filter { it[TRYGDESIT_COL_NAME] == "07" }
.filterNot { (it[PERSON_FODSELSNR_COL_NAME].ageInYears(arguments.aargang.toInt()) ?: -1) > 62 }
.filterNot { (it[PERSON_FODSELSNR_COL_NAME].ageInYears(arguments.aargang.toInt()) ?: -1) >= 60 }
.map {
createValidationReportEntry(
"Mottakeren (${
(it[PERSON_FODSELSNR_COL_NAME].ageInYears(arguments.aargang.toInt()) ?: -1)
} år) er 62 år eller yngre og mottar alderspensjon.",
lineNumbers = listOf(it.lineNumber)
} år) er yngre enn 60 år og mottar alderspensjon.",
lineNumbers = listOf(it.lineNumber),
).copy(
caseworker = it[SosialhjelpColumnNames.SAKSBEHANDLER_COL_NAME],
journalId = it[SosialhjelpColumnNames.PERSON_JOURNALNR_COL_NAME],
)
}.ifEmpty { null }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARJOBBLO
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARJOBBTILB_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARKURS_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARLIVSH_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARNORSKSAMISKOPPL_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKAROKRETT_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARSAMT_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARSOSLOV_COL_NAME
Expand Down Expand Up @@ -40,6 +41,7 @@ class Rule043UtfyltVilkar : AbstractNoArgsRule<List<KostraRecord>>(
VILKARHELSE_COL_NAME,
VILKARANNET_COL_NAME,
VILKARDIGPLAN_COL_NAME,
VILKARNORSKSAMISKOPPL_COL_NAME,
).any { vilkar ->
fieldDefinitions.byColumnName(vilkar).codeExists(it[vilkar])
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,47 +7,50 @@ import no.ssb.kostra.validation.rule.ForAllRowItem
import no.ssb.kostra.validation.rule.KostraTestFactory
import no.ssb.kostra.validation.rule.sosial.sosialhjelp.SosialhjelpTestUtils

class Rule020AViktigsteKildeTilLivsOppholdKode3Test : BehaviorSpec({
include(
KostraTestFactory.validationRuleNoContextTest(
sut = Rule020AViktigsteKildeTilLivsOppholdKode3(),
expectedSeverity = Severity.WARNING,
ForAllRowItem(
"vkloCode = 3, trygdesitCode = 00",
kostraRecordInTest("3", "00"),
),
ForAllRowItem(
"vkloCode = 1, trygdesitCode = 12",
kostraRecordInTest("1", "12"),
),
ForAllRowItem(
"vkloCode = 1, trygdesitCode = 00",
kostraRecordInTest("1", "00"),
expectedErrorMessage = "Mottakerens viktigste kilde til livsopphold ved siste kontakt med " +
"sosial-/NAV-kontoret er Arbeidsinntekt. " +
"Trygdesituasjonen er '(00)', forventet én av '([12=Har ingen trygd/pensjon])'. " +
"Feltet er obligatorisk å fylle ut.",
),
ForAllRowItem(
"vkloCode = ' ', trygdesitCode = 00",
kostraRecordInTest(" ", "00"),
expectedErrorMessage = "Mottakerens viktigste kilde til livsopphold ved siste kontakt med " +
"sosial-/NAV-kontoret er ukjent. " +
"Trygdesituasjonen er '(00)', forventet én av '([12=Har ingen trygd/pensjon])'. " +
"Feltet er obligatorisk å fylle ut.",
class Rule020AViktigsteKildeTilLivsOppholdKode3Test :
BehaviorSpec({
include(
KostraTestFactory.validationRuleNoContextTest(
sut = Rule020AViktigsteKildeTilLivsOppholdKode3(),
expectedSeverity = Severity.WARNING,
ForAllRowItem(
"vkloCode = 3, trygdesitCode = 00",
kostraRecordInTest("3", "00"),
),
ForAllRowItem(
"vkloCode = 1, trygdesitCode = 12",
kostraRecordInTest("1", "12"),
),
ForAllRowItem(
"vkloCode = 1, trygdesitCode = 00",
kostraRecordInTest("1", "00"),
expectedErrorMessage =
"Mottakerens viktigste kilde til livsopphold ved siste kontakt med " +
"sosial-/NAV-kontoret er ikke trygd/pensjon. " +
"Trygdesituasjonen er '(00)', forventet én av '([12=Har ingen trygd/pensjon])'. " +
"Feltet er obligatorisk å fylle ut.",
),
ForAllRowItem(
"vkloCode = ' ', trygdesitCode = 00",
kostraRecordInTest(" ", "00"),
expectedErrorMessage =
"Mottakerens viktigste kilde til livsopphold ved siste kontakt med " +
"sosial-/NAV-kontoret er ikke trygd/pensjon. " +
"Trygdesituasjonen er '(00)', forventet én av '([12=Har ingen trygd/pensjon])'. " +
"Feltet er obligatorisk å fylle ut.",
),
),
)
)
}) {
}) {
companion object {
private fun kostraRecordInTest(
vkloCode: String,
trygdesitCode: String
trygdesitCode: String,
) = SosialhjelpTestUtils.sosialKostraRecordInTest(
mapOf(
SosialhjelpColumnNames.VKLO_COL_NAME to vkloCode,
SosialhjelpColumnNames.TRYGDESIT_COL_NAME to trygdesitCode
)
SosialhjelpColumnNames.TRYGDESIT_COL_NAME to trygdesitCode,
),
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,52 +10,54 @@ import no.ssb.kostra.validation.rule.KostraTestFactory.validationRuleNoContextTe
import no.ssb.kostra.validation.rule.RuleTestData
import no.ssb.kostra.validation.rule.sosial.sosialhjelp.SosialhjelpTestUtils

class Rule022TilknytningTilTrygdesystemetOgAlderTest : BehaviorSpec({
include(
validationRuleNoContextTest(
sut = Rule022TilknytningTilTrygdesystemetOgAlder(),
expectedSeverity = Severity.ERROR,
ForAllRowItem(
"trygdesitCode = 00, fodselsNummer = 00",
kostraRecordInTest(
"00",
RandomUtils.generateRandomSsn(age = 0, year = RuleTestData.argumentsInTest.aargang.toInt())
class Rule022TilknytningTilTrygdesystemetOgAlderTest :
BehaviorSpec({
include(
validationRuleNoContextTest(
sut = Rule022TilknytningTilTrygdesystemetOgAlder(),
expectedSeverity = Severity.ERROR,
ForAllRowItem(
"trygdesitCode = 00, fodselsNummer = 00",
kostraRecordInTest(
"00",
RandomUtils.generateRandomSsn(age = 0, year = RuleTestData.argumentsInTest.aargang.toInt()),
),
),
),
ForAllRowItem(
"trygdesitCode = 07, alder = 63",
kostraRecordInTest(
"07",
RandomUtils.generateRandomSsn(age = 63, year = RuleTestData.argumentsInTest.aargang.toInt())
ForAllRowItem(
"trygdesitCode = 07, alder = 60",
kostraRecordInTest(
"07",
RandomUtils.generateRandomSsn(age = 60, year = RuleTestData.argumentsInTest.aargang.toInt()),
),
),
),
ForAllRowItem(
"trygdesitCode = 07, alder = 62",
kostraRecordInTest(
"07",
RandomUtils.generateRandomSsn(age = 62, year = RuleTestData.argumentsInTest.aargang.toInt())
ForAllRowItem(
"trygdesitCode = 07, alder = 59",
kostraRecordInTest(
"07",
RandomUtils.generateRandomSsn(age = 59, year = RuleTestData.argumentsInTest.aargang.toInt()),
),
expectedErrorMessage = "Mottakeren (59 år) er yngre enn 60 år og mottar alderspensjon.",
),
expectedErrorMessage = "Mottakeren (62 år) er 62 år eller yngre og mottar alderspensjon.",
),
ForAllRowItem(
"trygdesitCode = 07, alder = -1 (pga. feil dato-del i fnr)",
kostraRecordInTest(
"07", "32138800000"
ForAllRowItem(
"trygdesitCode = 07, alder = -1 (pga. feil dato-del i fnr)",
kostraRecordInTest(
"07",
"32138800000",
),
expectedErrorMessage = "Mottakeren (-1 år) er yngre enn 60 år og mottar alderspensjon.",
),
expectedErrorMessage = "Mottakeren (-1 år) er 62 år eller yngre og mottar alderspensjon.",
)
),
)
)
}) {
}) {
companion object {
private fun kostraRecordInTest(
trygdesitCode: String,
fnr: String
fnr: String,
) = SosialhjelpTestUtils.sosialKostraRecordInTest(
mapOf(
TRYGDESIT_COL_NAME to trygdesitCode,
PERSON_FODSELSNR_COL_NAME to fnr
)
PERSON_FODSELSNR_COL_NAME to fnr,
),
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARJOBBLO
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARJOBBTILB_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARKURS_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARLIVSH_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARNORSKSAMISKOPPL_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKAROKRETT_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARSAMT_COL_NAME
import no.ssb.kostra.area.sosial.sosialhjelp.SosialhjelpColumnNames.VILKARSOSLOV_COL_NAME
Expand All @@ -18,31 +19,35 @@ import no.ssb.kostra.validation.rule.ForAllRowItem
import no.ssb.kostra.validation.rule.KostraTestFactory.validationRuleNoContextTest
import no.ssb.kostra.validation.rule.sosial.sosialhjelp.SosialhjelpTestUtils

class Rule043UtfyltVilkarTest : BehaviorSpec({
include(
validationRuleNoContextTest(
sut = Rule043UtfyltVilkar(),
expectedSeverity = Severity.ERROR,
ForAllRowItem(
"vilkar = 2, arbeid = XX",
kostraRecordInTest("2", "XX"),
class Rule043UtfyltVilkarTest :
BehaviorSpec({
include(
validationRuleNoContextTest(
sut = Rule043UtfyltVilkar(),
expectedSeverity = Severity.ERROR,
ForAllRowItem(
"vilkar = 2, arbeid = XX",
kostraRecordInTest("2", "XX"),
),
ForAllRowItem(
"vilkar = 1, arbeid = 16",
kostraRecordInTest("1", "16"),
),
ForAllRowItem(
"vilkar = 1, arbeid = XX",
kostraRecordInTest("1", "XX"),
expectedErrorMessage =
"Feltet for " +
"'Hvis ja på spørsmålet Stilles det vilkår til mottakeren etter sosialtjenesteloven', " +
"så skal det oppgis hvilke vilkår som stilles til mottakeren. Feltet er obligatorisk å fylle ut.",
),
),
ForAllRowItem(
"vilkar = 1, arbeid = 16",
kostraRecordInTest("1", "16"),
),
ForAllRowItem(
"vilkar = 1, arbeid = XX",
kostraRecordInTest("1", "XX"),
expectedErrorMessage = "Feltet for 'Hvis ja på spørsmålet Stilles det vilkår til mottakeren etter sosialtjenesteloven', så skal det oppgis hvilke vilkår som stilles til mottakeren. Feltet er obligatorisk å fylle ut.",
)
)
)
}) {
}) {
companion object {
private fun kostraRecordInTest(
vilkar: String,
arbeid: String
arbeid: String,
) = SosialhjelpTestUtils.sosialKostraRecordInTest(
mapOf(
VILKARSOSLOV_COL_NAME to vilkar,
Expand All @@ -57,7 +62,8 @@ class Rule043UtfyltVilkarTest : BehaviorSpec({
VILKARHELSE_COL_NAME to " ",
VILKARANNET_COL_NAME to " ",
VILKARDIGPLAN_COL_NAME to " ",
)
VILKARNORSKSAMISKOPPL_COL_NAME to " ",
),
)
}
}
}

0 comments on commit ae0a5bb

Please sign in to comment.