Skip to content

Commit

Permalink
Bugfix/valideringsendepunkt (#3691)
Browse files Browse the repository at this point in the history
* Add KontaktMedPasientDTO to SykemeldingDTO

Introduce the KontaktMedPasientDTO class to capture patient contact details such as contact date and reasons for no contact. This addition allows for enhanced tracking of patient interaction in the sykemelding domain.

* Add KontaktMedPasient mapping to sykemelding
#deploy-test-sykemelding-api

This update introduces a new class for handling KontaktMedPasient data, enriching the sykemelding model with contact information details. The changes ensure that KontaktMedPasient details are correctly included in the mapping strategy and are validated through updated test cases.

* Add test for handling null KontaktDato
#deploy-test-sykemelding-api

This commit introduces a new test case to verify the correct handling of null values for KontaktDato in the Sykemelding mapping logic. Additionally, it refactors the KontaktMedPasient constructor by removing the redundant start date parameter, streamlining object creation. These changes enhance the reliability and clarity of the codebase with regard to contact date management in health certificates.

* Handle null DTO in KontaktMedPasient constructor #deploy-test-sykemelding-api

Ensure that the KontaktMedPasient constructor checks for a null DTO before creating a new XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient instance. This change prevents potential null pointer exceptions and improves the robustness of the code.
  • Loading branch information
krharum authored Dec 10, 2024
1 parent eca7965 commit ab7d148
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Dokument {

var prognose = new Prognose(fomIArbeid, dto.getDetaljer());
var helsepersonell = new Helsepersonell(dto.getHelsepersonell());
var kontaktMedPasient = new KontaktMedPasient(dto.getKontaktMedPasient());

xmlHelseOpplysningerArbeidsuforhet = new XMLHelseOpplysningerArbeidsuforhet()
.withSyketilfelleStartDato(dto.getStartDato())
Expand All @@ -35,10 +36,7 @@ class Dokument {
.withTiltakNAV(dto.getDetaljer().getTiltakNav())
.withAndreTiltak(dto.getDetaljer().getAndreTiltak())
)
.withKontaktMedPasient(
new XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient()
.withBehandletDato(fom.atStartOfDay())
)
.withKontaktMedPasient(kontaktMedPasient.getXmlObject())
.withBehandler(helsepersonell.getXmlObject())
.withAvsenderSystem(new XMLHelseOpplysningerArbeidsuforhet.AvsenderSystem()
.withSystemNavn(applicationInfo.getName())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package no.nav.registre.testnorge.sykemelding.domain;

import no.nav.registre.testnorge.sykemelding.external.xmlstds.helseopplysningerarbeidsuforhet._2013_10_01.XMLHelseOpplysningerArbeidsuforhet;
import no.nav.testnav.libs.dto.sykemelding.v1.KontaktMedPasientDTO;

import static java.util.Objects.nonNull;

class KontaktMedPasient {

private final XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient xmlKontaktMedPasient;

KontaktMedPasient(KontaktMedPasientDTO dto) {

xmlKontaktMedPasient = nonNull(dto) ? new XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient()
.withKontaktDato(dto.getKontaktDato())
.withBegrunnIkkeKontakt(dto.getBegrunnelseIkkeKontakt()) : null;
}

XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient getXmlObject() {
return xmlKontaktMedPasient;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,7 @@ public void mapAtoB(Sykemelding source, ReceivedSykemeldingDTO target, MappingCo
.navn(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemNavn())
.versjon(xmlHelseOpplysningerArbeidsuforhet.getAvsenderSystem().getSystemVersjon())
.build())
.kontaktMedPasient(ReceivedSykemeldingDTO.KontaktMedpasient.builder()
.build())
.kontaktMedPasient(mapKontaktMedPasient(xmlHelseOpplysningerArbeidsuforhet.getKontaktMedPasient()))
.tiltakArbeidsplassen(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ?
xmlHelseOpplysningerArbeidsuforhet.getTiltak().getTiltakArbeidsplassen() : null)
.tiltakNAV(nonNull(xmlHelseOpplysningerArbeidsuforhet.getTiltak()) ?
Expand Down Expand Up @@ -128,6 +127,18 @@ public void mapAtoB(Sykemelding source, ReceivedSykemeldingDTO target, MappingCo
.register();
}

private ReceivedSykemeldingDTO.KontaktMedpasient mapKontaktMedPasient(XMLHelseOpplysningerArbeidsuforhet.KontaktMedPasient kontaktMedPasient) {

if (isNull(kontaktMedPasient)) {
return null;
}

return ReceivedSykemeldingDTO.KontaktMedpasient.builder()
.begrunnelseIkkeKontakt(kontaktMedPasient.getBegrunnIkkeKontakt())
.kontaktDato(kontaktMedPasient.getKontaktDato())
.build();
}

private ReceivedSykemeldingDTO.ArbeidsgiverType mapHarArbeidsgiver(XMLCS harArbeidsgiver) {

if (isNull(harArbeidsgiver)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import no.nav.testnav.libs.dto.sykemelding.v1.DetaljerDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.DiagnoseDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.HelsepersonellDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.KontaktMedPasientDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.OrganisasjonDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.PasientDTO;
import no.nav.testnav.libs.dto.sykemelding.v1.PeriodeDTO;
Expand Down Expand Up @@ -133,6 +134,10 @@ private SykemeldingDTO getSykemeldingOK() {
.restriksjon(SKJERMET_FOR_PASIENT)
.build()))
.build()))
.kontaktMedPasient(KontaktMedPasientDTO.builder()
.kontaktDato(LocalDate.of(2024, 11, 28))
.begrunnelseIkkeKontakt("Begrunnelse ikke kontakt")
.build())
.build();
}

Expand Down Expand Up @@ -222,6 +227,10 @@ void validateAllFields_OK() {
assertThat(target.getSykmelding().getAndreTiltak(), is(equalTo("Andre tiltak")));

assertThat(target.getPersonNrLege(), is(equalTo(sykemeldingDTO.getHelsepersonell().getIdent())));

assertThat(target.getSykmelding().getKontaktMedPasient(), allOf(
hasProperty("kontaktDato", is(equalTo(LocalDate.of(2024, 11, 28)))),
hasProperty("begrunnelseIkkeKontakt", is(equalTo("Begrunnelse ikke kontakt")))));
}

@Test
Expand All @@ -246,4 +255,17 @@ void validateNoPerioder_Failure() {
var exception = assertThrows(ResponseStatusException.class, () -> new Sykemelding(sykemeldingDTO, applicationInfo));
assertThat(exception.getMessage(), is(equalTo("400 BAD_REQUEST \"Perioder må angis\"")));
}

@Test
void validateNoKontaktDato_() {

var sykemeldingDTO = getSykemeldingOK();
sykemeldingDTO.getKontaktMedPasient().setKontaktDato(null);

var sykemelding = new Sykemelding(sykemeldingDTO, applicationInfo);
var target = mapperFacade.map(sykemelding, ReceivedSykemeldingDTO.class);

assertThat(target.getSykmelding().getKontaktMedPasient(), allOf(
hasProperty("kontaktDato", is(nullValue()))));
}
}

0 comments on commit ab7d148

Please sign in to comment.