Skip to content

Commit c82ab17

Browse files
feat: nytt søknadsformat, alene om omsorg (#156)
1 parent 34f33ba commit c82ab17

File tree

8 files changed

+212
-9
lines changed

8 files changed

+212
-9
lines changed

ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ytelse.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ public enum Ytelse {
1515

1616
/** Omsorgspenger utvidet rett - midlertidig alene. */
1717
OMP_UTV_MA,
18+
19+
/** Omsorgspenger alene om omsorg. */
20+
OMP_UTV_AO,
1821

1922
/** Omsorgspenger dele omsorgsdager*/
20-
OMP_DELE_DAGER
23+
OMP_DELE_DAGER,
24+
;
2125
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</modules>
1919

2020
<properties>
21-
<revision>5.0.0</revision>
21+
<revision>5.2.0</revision>
2222
<sha1></sha1>
2323
<changelist>-SNAPSHOT</changelist>
2424
<java.version>11</java.version>

soknad/src/main/java/no/nav/k9/søknad/felles/personopplysninger/Barn.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,19 @@ public class Barn implements Person {
3232

3333
@JsonCreator
3434
public Barn(
35-
@JsonProperty("norskIdentitetsnummer") @JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer", "fnr" }) NorskIdentitetsnummer norskIdentitetsnummer,
35+
@JsonProperty("norskIdentitetsnummer") @JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer",
36+
"fnr" }) NorskIdentitetsnummer norskIdentitetsnummer,
3637
@JsonProperty("fødselsdato") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Europe/Oslo") LocalDate fødselsdato) {
3738
this.norskIdentitetsnummer = norskIdentitetsnummer;
3839
this.fødselsdato = fødselsdato;
3940
}
4041

41-
@AssertTrue(message = "norskIdentitetsnummer og fødselsdato må være satt")
42+
public Barn(NorskIdentitetsnummer norskIdentitetsnummer) {
43+
this.norskIdentitetsnummer = Objects.requireNonNull(norskIdentitetsnummer);
44+
this.fødselsdato = null;
45+
}
46+
47+
@AssertTrue(message = "norskIdentitetsnummer eller fødselsdato må være satt")
4248
private boolean isOk() {
4349
return (norskIdentitetsnummer != null && norskIdentitetsnummer.getVerdi() != null)
4450
|| (fødselsdato != null);

soknad/src/main/java/no/nav/k9/søknad/ytelse/Ytelse.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
import com.fasterxml.jackson.annotation.JsonTypeInfo;
1010
import com.fasterxml.jackson.annotation.JsonValue;
1111

12-
import no.nav.k9.søknad.felles.type.Person;
1312
import no.nav.k9.søknad.felles.type.Periode;
13+
import no.nav.k9.søknad.felles.type.Person;
14+
import no.nav.k9.søknad.ytelse.omsorgspenger.utvidetrett.v1.OmsorgspengerAleneOmsorg;
1415
import no.nav.k9.søknad.ytelse.omsorgspenger.utvidetrett.v1.OmsorgspengerKroniskSyktBarn;
1516
import no.nav.k9.søknad.ytelse.omsorgspenger.utvidetrett.v1.OmsorgspengerMidlertidigAlene;
1617
import no.nav.k9.søknad.ytelse.omsorgspenger.v1.OmsorgspengerUtbetaling;
@@ -22,6 +23,7 @@
2223
@JsonSubTypes.Type(name = Ytelse.OMSORGSPENGER_UTBETALING, value = OmsorgspengerUtbetaling.class),
2324
@JsonSubTypes.Type(name = Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT, value = OmsorgspengerKroniskSyktBarn.class),
2425
@JsonSubTypes.Type(name = Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE, value = OmsorgspengerMidlertidigAlene.class),
26+
@JsonSubTypes.Type(name = Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG, value = OmsorgspengerAleneOmsorg.class),
2527
@JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_SYKT_BARN, value = PleiepengerSyktBarn.class),
2628
})
2729
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
@@ -30,6 +32,7 @@ public interface Ytelse {
3032
String OMSORGSPENGER_UTBETALING = "OMP_UT";
3133
String OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT = "OMP_UTV_KS";
3234
String OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE = "OMP_UTV_MA";
35+
String OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG = "OMP_UTV_AO";
3336
String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN";
3437

3538
Ytelse.Type getType();
@@ -52,6 +55,7 @@ enum Type {
5255
PLEIEPENGER_SYKT_BARN(Ytelse.PLEIEPENGER_SYKT_BARN),
5356
OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT_BARN(Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT),
5457
OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE(Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE),
58+
OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG(Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG),
5559
;
5660

5761
@JsonValue
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package no.nav.k9.søknad.ytelse.omsorgspenger.utvidetrett.v1;
2+
3+
import java.util.List;
4+
import java.util.Objects;
5+
6+
import javax.validation.Valid;
7+
import javax.validation.constraints.NotNull;
8+
import javax.validation.constraints.Size;
9+
10+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
11+
import com.fasterxml.jackson.annotation.JsonCreator;
12+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
13+
import com.fasterxml.jackson.annotation.JsonProperty;
14+
15+
import no.nav.k9.søknad.felles.Feil;
16+
import no.nav.k9.søknad.felles.personopplysninger.Barn;
17+
import no.nav.k9.søknad.felles.type.Periode;
18+
import no.nav.k9.søknad.felles.type.Person;
19+
import no.nav.k9.søknad.ytelse.Ytelse;
20+
import no.nav.k9.søknad.ytelse.YtelseValidator;
21+
22+
@JsonIgnoreProperties(ignoreUnknown = true)
23+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
24+
public class OmsorgspengerAleneOmsorg implements OmsorgspengerUtvidetRett {
25+
26+
/** Barn søkt om alene om omsorg for. */
27+
@Valid
28+
@JsonProperty(value = "barn")
29+
@NotNull
30+
private Barn barn;
31+
32+
/** Periode alene om omsorgen. */
33+
@Valid
34+
@JsonProperty(value = "periode")
35+
@NotNull
36+
private Periode periode;
37+
38+
@JsonProperty(value = "begrunnelse")
39+
@Size(max = 30000)
40+
private String begrunnelse;
41+
42+
public OmsorgspengerAleneOmsorg() {
43+
}
44+
45+
@JsonCreator
46+
public OmsorgspengerAleneOmsorg(@JsonProperty(value = "barn", required = true) @Valid @NotNull Barn barn,
47+
@Valid @JsonProperty(value = "periode") @NotNull Periode periode,
48+
@JsonProperty(value = "begrunnelse") String begrunnelse) {
49+
this.begrunnelse = begrunnelse;
50+
this.periode = Objects.requireNonNull(periode);
51+
this.barn = Objects.requireNonNull(barn);
52+
}
53+
54+
@Override
55+
public Type getType() {
56+
return Type.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG;
57+
}
58+
59+
@Override
60+
public YtelseValidator getValidator() {
61+
return new MinValidator();
62+
}
63+
64+
public String getBegrunnelse() {
65+
return begrunnelse;
66+
}
67+
68+
@Override
69+
public Person getAnnenPart() {
70+
return null;
71+
}
72+
73+
public Barn getBarn() {
74+
return barn;
75+
}
76+
77+
@Override
78+
public Person getPleietrengende() {
79+
return barn;
80+
}
81+
82+
@Override
83+
public List<Person> getBerørtePersoner() {
84+
return List.of(barn);
85+
}
86+
87+
/** NB: kan returnere null dersom ikke oppgitt i søknad */
88+
@Override
89+
public Periode getSøknadsperiode() {
90+
return periode;
91+
}
92+
93+
public static class MinValidator extends YtelseValidator {
94+
95+
@Override
96+
public List<Feil> valider(Ytelse søknad) {
97+
return List.of();
98+
}
99+
}
100+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package no.nav.søknad.ytelse.omsorgspenger.utvidetrett;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.io.IOException;
6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.time.LocalDate;
9+
import java.time.ZonedDateTime;
10+
import java.util.List;
11+
12+
import org.junit.jupiter.api.Test;
13+
14+
import no.nav.k9.søknad.JsonUtils;
15+
import no.nav.k9.søknad.Søknad;
16+
import no.nav.k9.søknad.felles.Feil;
17+
import no.nav.k9.søknad.felles.Versjon;
18+
import no.nav.k9.søknad.felles.personopplysninger.Barn;
19+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
20+
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
21+
import no.nav.k9.søknad.felles.type.Periode;
22+
import no.nav.k9.søknad.felles.type.SøknadId;
23+
import no.nav.k9.søknad.ytelse.YtelseValidator;
24+
import no.nav.k9.søknad.ytelse.omsorgspenger.utvidetrett.v1.OmsorgspengerAleneOmsorg;
25+
26+
public class OmsorgspengerAleneOmsorgTest {
27+
private static final YtelseValidator validator = new OmsorgspengerAleneOmsorg.MinValidator();
28+
29+
@Test
30+
void komplettSøknadSkalIkkeHaValideringsfeil() {
31+
var søknad = TestUtils.komplettSøknad();
32+
verifyIngenFeil(søknad);
33+
}
34+
35+
@Test
36+
void testKomplettSøknad() {
37+
var ytelse = TestUtils.komplettBuilder();
38+
var søker = new Søker(NorskIdentitetsnummer.of("123"));
39+
var søknad = new Søknad(new SøknadId("123"), new Versjon("0.1"), ZonedDateTime.now(), søker, ytelse);
40+
41+
var json = JsonUtils.toString(søknad);
42+
43+
var søknad2 = JsonUtils.fromString(json, Søknad.class);
44+
assertThat(JsonUtils.toString(søknad2)).isEqualTo(json);
45+
}
46+
47+
private void verifyIngenFeil(Søknad søknad) {
48+
final List<Feil> feil = validator.valider(søknad.getYtelse());
49+
assertThat(feil).isEmpty();
50+
}
51+
52+
private static class TestUtils {
53+
54+
private TestUtils() {
55+
}
56+
57+
private static String jsonFromFile(String filename) {
58+
try {
59+
return Files.readString(Path.of("src/test/resources/ytelse/omp/utvidetrett/" + filename));
60+
} catch (IOException e) {
61+
throw new RuntimeException(e);
62+
}
63+
}
64+
65+
static Søknad komplettSøknad() {
66+
return Søknad.SerDes.deserialize(jsonFromFile("komplett-søknad-alene-omsorg.json"));
67+
}
68+
69+
static OmsorgspengerAleneOmsorg komplettBuilder() {
70+
var barn = new Barn(NorskIdentitetsnummer.of("11111111111"));
71+
var periode = new Periode(LocalDate.parse("2021-01-01"), null);
72+
return new OmsorgspengerAleneOmsorg(barn, periode, "ok");
73+
}
74+
75+
}
76+
}

soknad/src/test/java/no/nav/søknad/ytelse/omsorgspenger/utvidetrett/OmsorgspengerMidlertidigAleneValidatorTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ private static String jsonFromFile(String filename) {
6969

7070
static OmsorgspengerMidlertidigAlene komplettBuilder() {
7171

72-
var barn = Barn.builder()
73-
.norskIdentitetsnummer(NorskIdentitetsnummer.of("11111111111"))
74-
.fødselsdato(null)
75-
.build();
72+
var barn = new Barn(NorskIdentitetsnummer.of("11111111111"));
7673

7774
var annenForelder = new AnnenForelder(NorskIdentitetsnummer.of("21111111111"))
7875
.medSituasjon(SituasjonType.ANNET, "en annen årsak")
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"søknadId" : "123",
3+
"versjon" : "0.1",
4+
"mottattDato" : "2021-02-01T09:50:50.470Z",
5+
"søker" : {
6+
"norskIdentitetsnummer" : "123"
7+
},
8+
"språk" : "nb",
9+
"ytelse" : {
10+
"type" : "OMP_UTV_AO",
11+
"barn" : {
12+
"norskIdentitetsnummer" : "11111111111"
13+
},
14+
"periode" : "2021-01-01/.."
15+
}
16+
}

0 commit comments

Comments
 (0)