Skip to content

Commit

Permalink
fix: InvalidDefinitionException
Browse files Browse the repository at this point in the history
  • Loading branch information
helehar committed Feb 10, 2025
1 parent a80bc8a commit b00539c
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package no.nav.syfo.aksessering.db

import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.readValue
import java.sql.ResultSet
import java.time.ZoneOffset
import no.nav.syfo.db.DatabaseInterface
import no.nav.syfo.db.toList
import no.nav.syfo.log
import no.nav.syfo.model.ManuellOppgaveDTO
import no.nav.syfo.model.ManuellOppgaveDTOSykDig
import no.nav.syfo.model.PapirSmRegistering
Expand Down Expand Up @@ -82,31 +80,27 @@ fun ResultSet.toManuellOppgaveDTO(): ManuellOppgaveDTO =
)

fun ResultSet.toManuellOppgaveDTOSykDig(): ManuellOppgaveDTOSykDig {
val objectMapper =
ObjectMapper()
.registerModule(JavaTimeModule()) // Legger til støtte for Java 8-datoer
.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)

return ManuellOppgaveDTOSykDig(
journalpostId = getString("journalpost_id")?.trim() ?: "",
fnr = getString("fnr")?.trim(),
aktorId = getString("aktor_id")?.trim(),
dokumentInfoId = getString("dokument_info_id")?.trim(),
datoOpprettet = getTimestamp("dato_opprettet").toInstant().atOffset(ZoneOffset.UTC),
datoOpprettet = getTimestamp("dato_opprettet")?.toInstant()?.atOffset(ZoneOffset.UTC),
sykmeldingId = getString("id")?.trim() ?: "",
oppgaveid = getInt("oppgave_id"),
ferdigstilt = getBoolean("ferdigstilt"),
papirSmRegistering =
getString("papir_sm_registrering")?.let { json ->
val fixedJson =
json.replace(
"\"datoOpprettet\":\"(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})\""
.toRegex(),
"\"datoOpprettet\":\"$1Z\""
)
objectMapper.readValue(fixedJson, PapirSmRegistering::class.java)
},
papirSmRegistering = getString("papir_sm_registrering")?.let {
if (it.isNotBlank()) {
try {
objectMapper.readValue<PapirSmRegistering>(it)
} catch (e: Exception) {
log.error("Feil ved deserialisering av papir_sm_registrering: ${e.message}", e)
null
}
} else {
null
}
},
pdfPapirSykmelding = null,
ferdigstiltAv = getString("ferdigstilt_av")?.trim(),
utfall = getString("utfall")?.trim(),
Expand Down
25 changes: 25 additions & 0 deletions src/main/kotlin/no/nav/syfo/model/PapirSmRegistering.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,28 @@ data class PapirSmRegistering(
val behandletTidspunkt: LocalDate?,
val behandler: Behandler?,
)

data class PapirSmRegisteringSykDig(
val journalpostId: String = "",
val oppgaveId: String? = null,
val fnr: String? = null,
val aktorId: String? = null,
val dokumentInfoId: String? = null,
val datoOpprettet: OffsetDateTime? = null,
val sykmeldingId: String = "",
val syketilfelleStartDato: LocalDate? = null,
val arbeidsgiver: ArbeidsgiverSykDig? = null,
val medisinskVurdering: MedisinskVurdering? = null,
val skjermesForPasient: Boolean? = null,
val perioder: List<Periode>? = null,
val prognose: PrognoseSykDig? = null,
val utdypendeOpplysninger: Map<String, Map<String, SporsmalSvar>>? = null,
val tiltakNAV: String? = null,
val tiltakArbeidsplassen: String? = null,
val andreTiltak: String? = null,
val meldingTilNAV: MeldingTilNAV? = null,
val meldingTilArbeidsgiver: String? = null,
val kontaktMedPasient: KontaktMedPasient? = null,
val behandletTidspunkt: LocalDate? = null,
val behandler: BehandlerSykDig? = null
)
44 changes: 44 additions & 0 deletions src/main/kotlin/no/nav/syfo/model/Sykmelding.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package no.nav.syfo.model

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import java.time.LocalDate
import java.time.LocalDateTime

Expand Down Expand Up @@ -47,6 +49,15 @@ data class Arbeidsgiver(
val stillingsprosent: Int?
)

data class ArbeidsgiverSykDig
@JsonCreator
constructor(
@JsonProperty("harArbeidsgiver") val harArbeidsgiver: HarArbeidsgiver,
@JsonProperty("navn") val navn: String?,
@JsonProperty("yrkesbetegnelse") val yrkesbetegnelse: String?,
@JsonProperty("stillingsprosent") val stillingsprosent: Int?
)

enum class HarArbeidsgiver(
val codeValue: String,
val text: String,
Expand Down Expand Up @@ -108,6 +119,15 @@ data class Prognose(
val erIkkeIArbeid: ErIkkeIArbeid?
)

data class PrognoseSykDig
@JsonCreator
constructor(
@JsonProperty("arbeidsforEtterPeriode") val arbeidsforEtterPeriode: Boolean,
@JsonProperty("hensynArbeidsplassen") val hensynArbeidsplassen: String?,
@JsonProperty("erIArbeid") val erIArbeid: ErIArbeid?,
@JsonProperty("erIkkeIArbeid") val erIkkeIArbeid: ErIkkeIArbeid?
)

data class ErIArbeid(
val egetArbeidPaSikt: Boolean,
val annetArbeidPaSikt: Boolean,
Expand Down Expand Up @@ -145,6 +165,30 @@ data class Adresse(
val land: String?
)

data class BehandlerSykDig
@JsonCreator
constructor(
@JsonProperty("fornavn") val fornavn: String,
@JsonProperty("mellomnavn") val mellomnavn: String?,
@JsonProperty("etternavn") val etternavn: String,
@JsonProperty("aktoerId") val aktoerId: String,
@JsonProperty("fnr") val fnr: String,
@JsonProperty("hpr") val hpr: String?,
@JsonProperty("her") val her: String?,
@JsonProperty("adresse") val adresse: AdresseSykDig,
@JsonProperty("tlf") val tlf: String?
)

data class AdresseSykDig
@JsonCreator
constructor(
@JsonProperty("gate") val gate: String?,
@JsonProperty("postnummer") val postnummer: Int?,
@JsonProperty("kommune") val kommune: String?,
@JsonProperty("postboks") val postboks: String?,
@JsonProperty("land") val land: String?
)

data class AvsenderSystem(val navn: String, val versjon: String)

data class SporsmalSvar(
Expand Down

0 comments on commit b00539c

Please sign in to comment.