From e605679e6705e0275354e2db019e99214c09cc7e Mon Sep 17 00:00:00 2001 From: stigus Date: Mon, 2 Dec 2024 12:03:23 +0100 Subject: [PATCH] - Sykemelding-api lagt til defaultverdi for utdypendeOpplysninger #deploy-sykemelding-api --- .../SykemeldingValidateMappingStrategy.java | 77 +++++++++------- ...ykemeldingValidateMappingStrategyTest.java | 90 +++++++++---------- 2 files changed, 87 insertions(+), 80 deletions(-) diff --git a/apps/sykemelding-api/src/main/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategy.java b/apps/sykemelding-api/src/main/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategy.java index cb5d6683024..22624c2efc6 100644 --- a/apps/sykemelding-api/src/main/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategy.java +++ b/apps/sykemelding-api/src/main/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategy.java @@ -17,6 +17,7 @@ import javax.xml.datatype.XMLGregorianCalendar; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -28,6 +29,14 @@ public class SykemeldingValidateMappingStrategy implements MappingStrategy { private static final String DUMMY_FNR = "12508407724"; + private static final ReceivedSykemeldingDTO.UtdypendeOpplysninger DUMMY_UTDYPENDE_OPPLYSNINGER = ReceivedSykemeldingDTO.UtdypendeOpplysninger.builder() + .sporsmalSvar(Collections.singletonMap("1", Collections.singletonMap("2", + ReceivedSykemeldingDTO.SporsmalSvar.builder() + .sporsmal("Hva er din hovedplage?") + .svar("Tester") + .restriksjoner(List.of(Restriksjon.SKJERMET_FOR_ARBEIDSGIVER)) + .build()))) + .build(); @Override public void register(MapperFactory factory) { @@ -49,39 +58,39 @@ public void mapAtoB(Sykemelding source, ReceivedSykemeldingDTO target, MappingCo xmlMsgHead.getDocument().forEach(document -> document.getRefDoc().getContent().getAny().forEach(refDoc -> { - if (refDoc instanceof XMLHelseOpplysningerArbeidsuforhet xmlHelseOpplysningerArbeidsuforhet) { - sykemelding.syketilfelleStartDato(xmlHelseOpplysningerArbeidsuforhet.getSyketilfelleStartDato()) - .navnFastlege(xmlHelseOpplysningerArbeidsuforhet.getPasient().getNavnFastlege()) - .arbeidsgiver(ReceivedSykemeldingDTO.Arbeidsgiver.builder() - .harArbeidsgiver(ReceivedSykemeldingDTO.ArbeidsgiverType.EN_ARBEIDSGIVER) - .yrkesbetegnelse(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getYrkesbetegnelse()) - .stillingsprosent(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getStillingsprosent()) - .navn(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getNavnArbeidsgiver()) - .build()) - .medisinskVurdering(mapMedisinskVurdering(xmlHelseOpplysningerArbeidsuforhet.getMedisinskVurdering())) - .behandler(ReceivedSykemeldingDTO.Behandler.builder() - .fornavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getFornavn()) - .mellomnavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getMellomnavn()) - .etternavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getEtternavn()) - .fnr(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getId().getFirst().getId()) - .build()) - .avsenderSystem(ReceivedSykemeldingDTO.AvsenderSystem.builder() - .navn(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemNavn()) - .versjon(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemVersjon()) - .build()) - .kontaktMedPasient(ReceivedSykemeldingDTO.KontaktMedpasient.builder() - .build()) - .tiltakArbeidsplassen(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? - xmlHelseOpplysningerArbeidsuforhet.getTiltak().getTiltakArbeidsplassen() : null) - .tiltakNAV(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? - xmlHelseOpplysningerArbeidsuforhet.getTiltak().getTiltakNAV() : null) - .andreTiltak(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? - xmlHelseOpplysningerArbeidsuforhet.getTiltak().getAndreTiltak() : null) - .utdypendeOpplysninger(mapUtdypendeOpplysninger(xmlHelseOpplysningerArbeidsuforhet.getUtdypendeOpplysninger())) - .perioder(mapPerioder(xmlHelseOpplysningerArbeidsuforhet.getAktivitet().getPeriode())) - .prognose(mapPrognose(xmlHelseOpplysningerArbeidsuforhet.getPrognose())); - } - })); + if (refDoc instanceof XMLHelseOpplysningerArbeidsuforhet xmlHelseOpplysningerArbeidsuforhet) { + sykemelding.syketilfelleStartDato(xmlHelseOpplysningerArbeidsuforhet.getSyketilfelleStartDato()) + .navnFastlege(xmlHelseOpplysningerArbeidsuforhet.getPasient().getNavnFastlege()) + .arbeidsgiver(ReceivedSykemeldingDTO.Arbeidsgiver.builder() + .harArbeidsgiver(ReceivedSykemeldingDTO.ArbeidsgiverType.EN_ARBEIDSGIVER) + .yrkesbetegnelse(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getYrkesbetegnelse()) + .stillingsprosent(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getStillingsprosent()) + .navn(xmlHelseOpplysningerArbeidsuforhet.getArbeidsgiver().getNavnArbeidsgiver()) + .build()) + .medisinskVurdering(mapMedisinskVurdering(xmlHelseOpplysningerArbeidsuforhet.getMedisinskVurdering())) + .behandler(ReceivedSykemeldingDTO.Behandler.builder() + .fornavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getFornavn()) + .mellomnavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getMellomnavn()) + .etternavn(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getNavn().getEtternavn()) + .fnr(xmlHelseOpplysningerArbeidsuforhet.getBehandler().getId().getFirst().getId()) + .build()) + .avsenderSystem(ReceivedSykemeldingDTO.AvsenderSystem.builder() + .navn(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemNavn()) + .versjon(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemVersjon()) + .build()) + .kontaktMedPasient(ReceivedSykemeldingDTO.KontaktMedpasient.builder() + .build()) + .tiltakArbeidsplassen(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? + xmlHelseOpplysningerArbeidsuforhet.getTiltak().getTiltakArbeidsplassen() : null) + .tiltakNAV(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? + xmlHelseOpplysningerArbeidsuforhet.getTiltak().getTiltakNAV() : null) + .andreTiltak(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ? + xmlHelseOpplysningerArbeidsuforhet.getTiltak().getAndreTiltak() : null) + .utdypendeOpplysninger(mapUtdypendeOpplysninger(xmlHelseOpplysningerArbeidsuforhet.getUtdypendeOpplysninger())) + .perioder(mapPerioder(xmlHelseOpplysningerArbeidsuforhet.getAktivitet().getPeriode())) + .prognose(mapPrognose(xmlHelseOpplysningerArbeidsuforhet.getPrognose())); + } + })); } if (any instanceof XMLMottakenhetBlokk xmlMottakenhetBlokk) { @@ -143,7 +152,7 @@ private ReceivedSykemeldingDTO.Prognose mapPrognose(XMLHelseOpplysningerArbeidsu private ReceivedSykemeldingDTO.UtdypendeOpplysninger mapUtdypendeOpplysninger(XMLHelseOpplysningerArbeidsuforhet.UtdypendeOpplysninger utdypendeOpplysninger) { - return new ReceivedSykemeldingDTO.UtdypendeOpplysninger( + return isNull(utdypendeOpplysninger) ? DUMMY_UTDYPENDE_OPPLYSNINGER : new ReceivedSykemeldingDTO.UtdypendeOpplysninger( utdypendeOpplysninger.getSpmGruppe().stream() .collect(Collectors.toMap(SpmGruppe::getSpmGruppeId, gruppe -> gruppe.getSpmSvar().stream() diff --git a/apps/sykemelding-api/src/test/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategyTest.java b/apps/sykemelding-api/src/test/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategyTest.java index 241a289d7e9..0b463c78265 100644 --- a/apps/sykemelding-api/src/test/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategyTest.java +++ b/apps/sykemelding-api/src/test/java/no/nav/registre/testnorge/sykemelding/mapper/SykemeldingValidateMappingStrategyTest.java @@ -33,55 +33,11 @@ class SykemeldingValidateMappingStrategyTest { private static final String DUMMY_FNR = "12508407724"; - - private MapperFacade mapperFacade; - private final ApplicationInfo applicationInfo = ApplicationInfo.builder() .name("Test") .version("1.0.0") .build(); - - @BeforeEach - void setup() { - - mapperFacade = MapperTestUtils.createMapperFacadeForMappingStrategy(new SykemeldingValidateMappingStrategy()); - } - - @Test - void validateAllFields_OK() { - - var sykemeldingDTO = getSykemeldingOK(); - var sykemelding = new Sykemelding(sykemeldingDTO, applicationInfo); - var target = mapperFacade.map(sykemelding, ReceivedSykemeldingDTO.class); - - assertThat(target.getMsgId(), is(equalTo(sykemelding.getMsgId()))); - assertThat(target.getSykmelding().getMedisinskVurdering().getYrkesskadeDato(), is(equalTo(LocalDate.of(2024, 11, 21)))); - assertThat(target.getSykmelding().getMedisinskVurdering().getSvangerskap(), is(equalTo(false))); - assertThat(target.getSykmelding().getMedisinskVurdering().getYrkesskade(), is(equalTo(false))); - assertThat(target.getSykmelding().getMedisinskVurdering().getAnnenFraversArsak().getBeskrivelse(), is(equalTo("Medising årsak i kategorien annet"))); - - assertThat(target.getSykmelding().getArbeidsgiver().getHarArbeidsgiver(), is(equalTo(ReceivedSykemeldingDTO.ArbeidsgiverType.EN_ARBEIDSGIVER))); - assertThat(target.getSykmelding().getArbeidsgiver().getStillingsprosent(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getStillingsprosent().intValue()))); - assertThat(target.getSykmelding().getArbeidsgiver().getYrkesbetegnelse(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getYrkesbetegnelse()))); - assertThat(target.getSykmelding().getArbeidsgiver().getNavn(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getNavn()))); - - assertThat(target.getSykmelding().getBehandler().getFornavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getFornavn()))); - assertThat(target.getSykmelding().getBehandler().getMellomnavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getMellomnavn()))); - assertThat(target.getSykmelding().getBehandler().getEtternavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getEtternavn()))); - assertThat(target.getSykmelding().getBehandler().getFnr(), is(equalTo(sykemeldingDTO.getHelsepersonell().getIdent()))); - - assertThat(target.getSykmelding().getAvsenderSystem().getNavn(), is(equalTo(applicationInfo.getName()))); - assertThat(target.getSykmelding().getAvsenderSystem().getVersjon(), is(equalTo(applicationInfo.getVersion()))); - - assertThat(target.getPersonNrPasient(), is(equalTo(DUMMY_FNR))); - assertThat(target.getMottattDato(), is(equalTo(sykemeldingDTO.getStartDato().atStartOfDay()))); - - assertThat(target.getSykmelding().getNavnFastlege(), - is(equalTo(sykemeldingDTO.getHelsepersonell().getFornavn() + " " + sykemeldingDTO.getHelsepersonell().getEtternavn()))); - assertThat(target.getLegekontorOrgNr(), is(equalTo(sykemeldingDTO.getMottaker().getOrgNr()))); - - // TBD utdypendeOpplysninger, Perioder, mm - } + private MapperFacade mapperFacade; private SykemeldingDTO getSykemeldingOK() { @@ -103,7 +59,7 @@ private SykemeldingDTO getSykemeldingOK() { .etternavn("September") .fornavn("August") .hprId("9144897") - .ident("20086600138") + .ident("20486612345") .samhandlerType("LEGE") .build()) .manglendeTilretteleggingPaaArbeidsplassen(false) @@ -166,4 +122,46 @@ private SykemeldingDTO getSykemeldingOK() { .build())) .build(); } + + @BeforeEach + void setup() { + + mapperFacade = MapperTestUtils.createMapperFacadeForMappingStrategy(new SykemeldingValidateMappingStrategy()); + } + + @Test + void validateAllFields_OK() { + + var sykemeldingDTO = getSykemeldingOK(); + var sykemelding = new Sykemelding(sykemeldingDTO, applicationInfo); + var target = mapperFacade.map(sykemelding, ReceivedSykemeldingDTO.class); + + assertThat(target.getMsgId(), is(equalTo(sykemelding.getMsgId()))); + assertThat(target.getSykmelding().getMedisinskVurdering().getYrkesskadeDato(), is(equalTo(LocalDate.of(2024, 11, 21)))); + assertThat(target.getSykmelding().getMedisinskVurdering().getSvangerskap(), is(equalTo(false))); + assertThat(target.getSykmelding().getMedisinskVurdering().getYrkesskade(), is(equalTo(false))); + assertThat(target.getSykmelding().getMedisinskVurdering().getAnnenFraversArsak().getBeskrivelse(), is(equalTo("Medising årsak i kategorien annet"))); + + assertThat(target.getSykmelding().getArbeidsgiver().getHarArbeidsgiver(), is(equalTo(ReceivedSykemeldingDTO.ArbeidsgiverType.EN_ARBEIDSGIVER))); + assertThat(target.getSykmelding().getArbeidsgiver().getStillingsprosent(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getStillingsprosent().intValue()))); + assertThat(target.getSykmelding().getArbeidsgiver().getYrkesbetegnelse(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getYrkesbetegnelse()))); + assertThat(target.getSykmelding().getArbeidsgiver().getNavn(), is(equalTo(sykemeldingDTO.getArbeidsgiver().getNavn()))); + + assertThat(target.getSykmelding().getBehandler().getFornavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getFornavn()))); + assertThat(target.getSykmelding().getBehandler().getMellomnavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getMellomnavn()))); + assertThat(target.getSykmelding().getBehandler().getEtternavn(), is(equalTo(sykemeldingDTO.getHelsepersonell().getEtternavn()))); + assertThat(target.getSykmelding().getBehandler().getFnr(), is(equalTo(sykemeldingDTO.getHelsepersonell().getIdent()))); + + assertThat(target.getSykmelding().getAvsenderSystem().getNavn(), is(equalTo(applicationInfo.getName()))); + assertThat(target.getSykmelding().getAvsenderSystem().getVersjon(), is(equalTo(applicationInfo.getVersion()))); + + assertThat(target.getPersonNrPasient(), is(equalTo(DUMMY_FNR))); + assertThat(target.getMottattDato(), is(equalTo(sykemeldingDTO.getStartDato().atStartOfDay()))); + + assertThat(target.getSykmelding().getNavnFastlege(), + is(equalTo(sykemeldingDTO.getHelsepersonell().getFornavn() + " " + sykemeldingDTO.getHelsepersonell().getEtternavn()))); + assertThat(target.getLegekontorOrgNr(), is(equalTo(sykemeldingDTO.getMottaker().getOrgNr()))); + + // TBD utdypendeOpplysninger, Perioder, mm + } } \ No newline at end of file