Skip to content

Commit

Permalink
- Sykemelding-api lagt til defaultverdi for utdypendeOpplysninger
Browse files Browse the repository at this point in the history
#deploy-sykemelding-api
  • Loading branch information
stigus committed Dec 2, 2024
1 parent 526d4c7 commit e605679
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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) {
Expand All @@ -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) {

Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {

Expand All @@ -103,7 +59,7 @@ private SykemeldingDTO getSykemeldingOK() {
.etternavn("September")
.fornavn("August")
.hprId("9144897")
.ident("20086600138")
.ident("20486612345")
.samhandlerType("LEGE")
.build())
.manglendeTilretteleggingPaaArbeidsplassen(false)
Expand Down Expand Up @@ -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
}
}

0 comments on commit e605679

Please sign in to comment.