Skip to content

Commit 552e9c5

Browse files
committed
legg til manglende enumverdier og håndter flere edge-cases ved parsing/mapping
1 parent 70cc628 commit 552e9c5

File tree

4 files changed

+72
-11
lines changed

4 files changed

+72
-11
lines changed

behovsmeldingsmodell/src/main/kotlin/no/nav/hjelpemidler/behovsmeldingsmodell/Kodeverk.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ enum class Boform {
7171

7272
@JsonProperty("Institusjon")
7373
INSTITUSJON,
74+
75+
@JsonProperty("Hjemme i egen bolig")
76+
HJEMME_I_EGEN_BOLIG,
77+
78+
@JsonProperty("Hjemme i omsorgsbolig, bofellesskap eller servicebolig")
79+
HJEMME_I_EGEN_BOLIG_OMSORGSBOLIG_BOFELLESSKAP_SERVICEBOLIG,
7480
}
7581

7682
enum class BrukersituasjonVilkår {
@@ -336,6 +342,14 @@ enum class SitteputeValg {
336342

337343
@JsonProperty("HarFraFor")
338344
HAR_FRA_FØR,
345+
346+
@JsonProperty("StandardSittepute")
347+
@Deprecated("Ikke lenger et valg. Tidligere brukt for å legge til et tilbehør med navn 'Standard sittepute' og hmsArtNr '000000'")
348+
STANDARD_SITTEPUTE,
349+
350+
@JsonProperty("LeggesTilSeparat")
351+
@Deprecated("Ikke lenger et valg.")
352+
LEGGES_TIL_SEPARAT,
339353
}
340354

341355
enum class BehovForSeng {

behovsmeldingsmodell/src/main/kotlin/no/nav/hjelpemidler/behovsmeldingsmodell/v1/Behovsmelding.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ data class Levering(
182182
// Oppfølgingsansvarlig
183183

184184
@JsonProperty("opfRadioButton")
185-
val oppfølgingsansvarlig: Oppfølgingsansvarlig,
185+
val oppfølgingsansvarlig: Oppfølgingsansvarlig?,
186186

187187
// Oppfølgingsansvarlig -> Annen person er ansvarlig
188188

behovsmeldingsmodell/src/main/kotlin/no/nav/hjelpemidler/behovsmeldingsmodell/v2/Formidlerbehovsmelding.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,15 @@ data class HjelpemiddelProdukt(
118118
val artikkelnavn: String,
119119
val iso8: Iso8,
120120
val iso8Tittel: String,
121-
val rangering: Int,
122121
val delkontrakttittel: String,
123122
val sortimentkategori: String, // fra digithot-sortiment
123+
124+
/*
125+
null -> ikke på rammeavtale
126+
Har i sjeldne tilfeller skjedd at formidler får søkt om produkt som ikke lenger er på rammeavtale, antageligvis pga
127+
endring i produkter på rammeavtale etter lansering av rammeavtalen.
128+
*/
129+
val rangering: Int?,
124130
)
125131

126132
data class Tilbehør(

behovsmeldingsmodell/src/main/kotlin/no/nav/hjelpemidler/behovsmeldingsmodell/v2/mapping/FormidlerbehovsmeldingMapper.kt

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,15 @@ fun tilFormidlerbehovsmeldingV2(
7777
innhold = when (v1.søknad.brukersituasjon.boform) {
7878
Boform.HJEMME -> LokalisertTekst(nb = "Hjemme", nn = "Heime")
7979
Boform.INSTITUSJON -> LokalisertTekst("Institusjon")
80+
Boform.HJEMME_I_EGEN_BOLIG -> LokalisertTekst(
81+
nb = "Hjemme i egen bolig",
82+
nn = "Heime i eigen bustad",
83+
)
84+
85+
Boform.HJEMME_I_EGEN_BOLIG_OMSORGSBOLIG_BOFELLESSKAP_SERVICEBOLIG -> LokalisertTekst(
86+
nb = "Hjemme i omsorgsbolig, bofellesskap eller servicebolig",
87+
nn = "Heime i omsorgsbustad, bufellesskap eller servicebustad",
88+
)
8089
},
8190
),
8291
)
@@ -148,6 +157,7 @@ fun tilFormidlerbehovsmeldingV2(
148157
oppfølgingsansvarlig = when (v1.søknad.levering.oppfølgingsansvarlig) {
149158
Oppfølgingsansvarlig.HJELPEMIDDELFORMIDLER -> OppfølgingsansvarligV2.HJELPEMIDDELFORMIDLER
150159
Oppfølgingsansvarlig.ANNEN_OPPFØLGINGSANSVARLIG -> OppfølgingsansvarligV2.ANNEN_OPPFØLGINGSANSVARLIG
160+
null -> OppfølgingsansvarligV2.HJELPEMIDDELFORMIDLER
151161
},
152162
annenOppfølgingsansvarlig = v1.søknad.levering.annenOppfølgingsansvarlig,
153163
utleveringsmåte = when (v1.søknad.levering.utleveringsmåte) {
@@ -191,9 +201,9 @@ fun tilHjelpemiddelV2(v1: Hjelpemiddel, søknad: Søknad): no.nav.hjelpemidler.b
191201
produkt = HjelpemiddelProdukt(
192202
hmsArtNr = v1.hmsnr,
193203
artikkelnavn = v1.beskrivelse,
194-
iso8 = Iso8(v1.produkt?.isocode ?: error("Behovsmelding $id mangler isocode for ${v1.hmsnr}")),
195-
iso8Tittel = v1.produkt.isotitle ?: error("Behovsmelding $id mangler isotitle for ${v1.hmsnr}"),
196-
rangering = v1.produkt.postrank?.toInt() ?: error("Behovsmelding $id mangler rangering for ${v1.hmsnr}"),
204+
iso8 = padIso8(v1.produkt?.isocode) ?: error("Behovsmelding $id mangler isocode for ${v1.hmsnr}"),
205+
iso8Tittel = v1.produkt?.isotitle ?: error("Behovsmelding $id mangler isotitle for ${v1.hmsnr}"),
206+
rangering = parseRangering(v1.produkt.postrank),
197207
delkontrakttittel = v1.produkt.aposttitle
198208
?: error("Behovsmelding $id mangler delkontrakttittel for ${v1.hmsnr}"),
199209
sortimentkategori = v1.produkt.kategori ?: error("v1.produkt.kategori (sortimentkategori) mangler"),
@@ -419,8 +429,8 @@ private fun begrunnelseLavereRangeringEllerIkkeTilsvarende(hm: Hjelpemiddel): Li
419429
return emptyList()
420430
}
421431
val label = if (hm.kanIkkeTilsvarende == true) {
422-
val rangering = hm.produkt?.postrank?.toInt() ?: error("Klarte ikke parse rangering (postrank)")
423-
if (rangering > 1) {
432+
val rangering = parseRangering(hm.produkt?.postrank)
433+
if (rangering != null && rangering > 1) {
424434
LokalisertTekst(nb = "Begrunnelse for lavere rangering", nn = "Grunngiving for lågare rangering")
425435
} else {
426436
LokalisertTekst(nb = "Kan ikke ha tilsvarende fordi", nn = "Kan ikkje ha tilsvarande fordi")
@@ -621,6 +631,16 @@ private fun rullestolinfo(hm: Hjelpemiddel): List<Opplysning> {
621631
nb = "Har sittepute fra før",
622632
nn = "Har sitjepute frå før",
623633
)
634+
635+
SitteputeValg.STANDARD_SITTEPUTE -> Tekst(
636+
nb = "Ønsker standard sittepute",
637+
nn = "Ynskjer standard sitjepute",
638+
)
639+
640+
SitteputeValg.LEGGES_TIL_SEPARAT -> Tekst(
641+
nb = "Trykkavlastende sittepute legges til separat",
642+
nn = "Trykkavlastande sitjepute leggjast til separat",
643+
)
624644
},
625645
),
626646
)
@@ -807,16 +827,18 @@ fun seilEllerSele(hm: Hjelpemiddel): List<Opplysning> {
807827
* er derfor ikke relevant for post 9. Bør derfor fjernes helt for post 9. Skal vises for de andre postene.
808828
*/
809829
val apostnrBadekarheis = "9"
810-
if (hm.produkt?.kategori == "Personløftere og seil" && hm.produkt.apostnr != apostnrBadekarheis) {
830+
if (hm.produkt?.kategori == "Personløftere og seil" &&
831+
hm.produkt.apostnr != apostnrBadekarheis &&
832+
hm.personløfterInfo?.harBehovForSeilEllerSele != null
833+
) {
811834
return opplysninger(
812835
ledetekst = LokalisertTekst(
813836
nb = "Har bruker behov for seil eller sele",
814837
nn = "Har brukar behov for segl eller sele",
815838
),
816-
tekst = when (hm.personløfterInfo?.harBehovForSeilEllerSele) {
839+
tekst = when (hm.personløfterInfo.harBehovForSeilEllerSele) {
817840
true -> LokalisertTekst("Ja")
818841
false -> LokalisertTekst("Nei")
819-
else -> error("hm.personløfterInfo?.harBehovForSeilEllerSele skal være satt for hjm ${hm.produkt}")
820842
},
821843
)
822844
}
@@ -1407,7 +1429,9 @@ fun ganghjelpemiddelInfo(hm: Hjelpemiddel): List<Opplysning> {
14071429

14081430
val opplysninger = mutableListOf<Opplysning>()
14091431

1410-
if (hm.ganghjelpemiddelInfo.kanIkkeBrukeMindreAvansertGanghjelpemiddel == true) {
1432+
if (hm.ganghjelpemiddelInfo.kanIkkeBrukeMindreAvansertGanghjelpemiddel == true &&
1433+
hm.ganghjelpemiddelInfo.type != null
1434+
) {
14111435
opplysninger.add(
14121436
Opplysning(
14131437
ledetekst = formidlerBekrefterAt,
@@ -1523,3 +1547,20 @@ private val dysfunksjoneltSøvnmønsterForklaring = LokalisertTekst(
15231547
nb = "Med dysfunksjonelt søvnmønster menes: Varige og vesentlige problemer med å sovne, urolig nattesøvn, meget tidlig oppvåkning om morgenen og/eller dårlig søvnkvalitet som fører til nedsatt funksjon på dagtid. Den nedsatte funksjonen på dagtid må føre til problemer med å utføre dagliglivets nødvendige aktiviteter.",
15241548
nn = "Med dysfunksjonelt søvnmønster siktar ein til: Varige og vesentlege problem med å sovna, uroleg nattesøvn, svært tidleg oppvakning om morgonen og/eller dårleg søvnkvalitet som fører til nedsett funksjon på dagtid. Den nedsette funksjonen på dagtid må føra til problem med å utføra dei nødvendige aktivitetane til dagleglivet.",
15251549
)
1550+
1551+
private fun padIso8(isocode: String?): Iso8? {
1552+
if (isocode == null) return null
1553+
1554+
if (isocode.length == 7) {
1555+
return Iso8(isocode.padStart(8, '0'))
1556+
}
1557+
1558+
return Iso8(isocode)
1559+
}
1560+
1561+
private fun parseRangering(rangering: String?): Int? {
1562+
if (rangering.isNullOrBlank()) {
1563+
return null
1564+
}
1565+
return rangering.toInt()
1566+
}

0 commit comments

Comments
 (0)