Skip to content

Commit

Permalink
Merge pull request #662 from navikt/pdl_oppholdstilatelse
Browse files Browse the repository at this point in the history
Pdl oppholdstilatelse
  • Loading branch information
hjmNav authored Jun 4, 2024
2 parents 3bf2fa7 + 453f630 commit 5ba2050
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 17 deletions.
27 changes: 26 additions & 1 deletion pdl-client/src/main/resources/pdl/hentPerson.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,29 @@ query($ident: ID!, $bostedHistorikk: Boolean!, $statsborgerskapHistorikk: Boolea
historisk
}
},
opphold(historikk: true){
type
oppholdFra
oppholdTil
metadata{
historisk
master
endringer{
type,
kilde,
registrert,
registrertAv,
systemkilde
}
}
folkeregistermetadata {
aarsak,
ajourholdstidspunkt,
gyldighetstidspunkt,
opphoerstidspunkt,
kilde
}
},
doedsfall{
doedsdato
},
Expand Down Expand Up @@ -71,9 +94,11 @@ query($ident: ID!, $bostedHistorikk: Boolean!, $statsborgerskapHistorikk: Boolea
historisk
},
folkeregistermetadata {
aarsak
ajourholdstidspunkt,
gyldighetstidspunkt,
opphoerstidspunkt
opphoerstidspunkt,
kilde
}
},
utflyttingFraNorge{
Expand Down
14 changes: 7 additions & 7 deletions src/main/kotlin/no/nav/medlemskap/HttpServer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,16 @@ import io.ktor.server.plugins.callid.*
import io.ktor.server.plugins.callloging.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.statuspages.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics
import io.micrometer.core.instrument.binder.system.ProcessorMetrics
import io.micrometer.prometheus.PrometheusConfig
import io.micrometer.prometheus.PrometheusMeterRegistry
import io.micrometer.prometheusmetrics.PrometheusConfig
import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
import io.prometheus.client.CollectorRegistry
import mu.KotlinLogging
import no.nav.medlemskap.clients.Services
import no.nav.medlemskap.common.*
Expand All @@ -34,7 +33,6 @@ import no.nav.medlemskap.config.getAadConfig
import no.nav.medlemskap.domene.Datagrunnlag
import no.nav.medlemskap.domene.Request
import no.nav.medlemskap.routes.*
import org.slf4j.event.*
import org.slf4j.event.Level
import java.util.*

Expand Down Expand Up @@ -101,15 +99,17 @@ createHttpServer(
val requestContextService = RequestContextService()
if (useAuthentication) {
routing {
naisRoutes(readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = prometheusRegistry.prometheusRegistry)
naisRoutes(
readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = CollectorRegistry.defaultRegistry
)
if (services.configuration.cluster == "dev-gcp") setupSwaggerDocApi()
evalueringRoute(services, configuration, requestContextService, createDatagrunnlag)
reglerRoute()
healthRoute("/healthCheck", services.healthService)
}
} else {
routing {
naisRoutes(readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = prometheusRegistry.prometheusRegistry)
naisRoutes(readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = CollectorRegistry.defaultRegistry)
if (services.configuration.cluster == "dev-gcp") setupSwaggerDocApi()
evalueringTestRoute(services, configuration, requestContextService, createDatagrunnlag)
reglerRoute()
Expand Down
6 changes: 3 additions & 3 deletions src/main/kotlin/no/nav/medlemskap/common/Metrics.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package no.nav.medlemskap.common

import io.micrometer.core.instrument.*
import io.micrometer.core.instrument.config.MeterFilter
import io.micrometer.prometheus.PrometheusConfig
import io.micrometer.prometheus.PrometheusMeterRegistry
import io.micrometer.prometheus.PrometheusRenameFilter
import io.micrometer.prometheusmetrics.PrometheusConfig
import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
import io.micrometer.prometheusmetrics.PrometheusRenameFilter
import no.nav.medlemskap.common.influx.SensuInfluxConfig
import no.nav.medlemskap.common.influx.SensuInfluxMeterRegistry
import no.nav.medlemskap.domene.Ytelse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ import java.time.LocalDateTime
data class Folkeregistermetadata(
val ajourholdstidspunkt: LocalDateTime?,
val gyldighetstidspunkt: LocalDateTime?,
val opphoerstidspunkt: LocalDateTime?
val opphoerstidspunkt: LocalDateTime?,
val aarsak: String?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package no.nav.medlemskap.domene.personhistorikk

import java.time.LocalDate
import java.time.LocalDateTime

data class Opphold(
val type: OppholdstillatelseType,
val oppholdFra: LocalDate?,
val oppholdTil: LocalDate?,
val medtadata: OppholdMetadata,
val folkeregistermetadata: Folkeregistermetadata
)

enum class OppholdstillatelseType {
MIDLERTIDIG,
PERMANENT,
OPPLYSNING_MANGLER,
__UNKNOWN_VALUE
}

data class OppholdMetadata(
val historisk: Boolean,
val master: String,
val endringer: List<Endring>
)

data class Endring(
val type: Endringstype,
val kilde: String,
val registrert: LocalDateTime,
val registrertAv: String,
val systemkilde: String

)
enum class Endringstype {
OPPRETT,
KORRIGER,
OPPHOER,
/**
* This is a default enum value that will be used when attempting to deserialize unknown value.
*/
__UNKNOWN_VALUE,
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ data class Personhistorikk(
val doedsfall: List<LocalDate>,
val innflyttingTilNorge: List<InnflyttingTilNorge>,
val utflyttingFraNorge: List<UtflyttingFraNorge>,
val navn: List<Navn>
val navn: List<Navn>,
val oppholdstilatelser: List<Opphold> = emptyList()
) {

fun erBrukerDoed(): Boolean {
Expand Down
46 changes: 44 additions & 2 deletions src/main/kotlin/no/nav/medlemskap/services/pdl/mapper/PdlMapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import no.nav.medlemskap.clients.pdl.generated.DateTime
import no.nav.medlemskap.clients.pdl.generated.hentperson.*
import no.nav.medlemskap.common.exceptions.DetteSkalAldriSkje
import no.nav.medlemskap.domene.personhistorikk.*
import no.nav.medlemskap.domene.personhistorikk.Endring
import no.nav.medlemskap.domene.personhistorikk.Folkeregistermetadata
import no.nav.medlemskap.domene.personhistorikk.ForelderBarnRelasjon
import no.nav.medlemskap.domene.personhistorikk.InnflyttingTilNorge
import no.nav.medlemskap.domene.personhistorikk.Metadata
import no.nav.medlemskap.domene.personhistorikk.Navn
import no.nav.medlemskap.domene.personhistorikk.Opphold
import no.nav.medlemskap.domene.personhistorikk.Sivilstand
import no.nav.medlemskap.domene.personhistorikk.Statsborgerskap
import no.nav.medlemskap.domene.personhistorikk.UtflyttingFraNorge
Expand All @@ -35,6 +37,7 @@ object PdlMapper {
val innflyttingTilNorge: List<InnflyttingTilNorge> = mapInnflyttingTilNorge(person.innflyttingTilNorge)
val utflyttingFraNorge: List<UtflyttingFraNorge> = mapUtflyttingFraNorge(person.utflyttingFraNorge)
val navn: List<Navn> = mapNavn(person.navn)
val opphold: List<Opphold> = mapOppholdsTilatelser(person.opphold)

return Personhistorikk(
statsborgerskap = statsborgerskap,
Expand All @@ -46,10 +49,48 @@ object PdlMapper {
doedsfall = doedsfall,
innflyttingTilNorge = innflyttingTilNorge,
utflyttingFraNorge = utflyttingFraNorge,
navn = navn
navn = navn,
oppholdstilatelser = opphold

)
}

private fun mapOppholdsTilatelser(opphold: List<no.nav.medlemskap.clients.pdl.generated.hentperson.Opphold>): List<Opphold> {

return opphold.map {
Opphold(
type = OppholdstillatelseType.valueOf(it.type.name),
oppholdFra = mapDate(it.oppholdFra),
oppholdTil = mapDate(it.oppholdTil),
medtadata = OppholdMetadata(it.metadata.historisk, it.metadata.master, mapEnringer(it.metadata.endringer)),
folkeregistermetadata = mapFolkeregistermetadata(it.folkeregistermetadata)
)
}
}

private fun mapDateTime(registrert: String): LocalDateTime {
return LocalDateTime.parse(registrert)
}

private fun mapEnringer(endringer: List<no.nav.medlemskap.clients.pdl.generated.hentperson.Endring>): List<Endring> {
return endringer.map {
Endring(
type = Endringstype.valueOf(it.type.name),
kilde = it.kilde,
registrert = mapDateTime(it.registrert),
registrertAv = it.registrertAv,
systemkilde = it.systemkilde
)
}
}

private fun mapDate(dato: String?): LocalDate? {
if (dato != null) {
return LocalDate.parse(dato)
}
return null
}

private fun mapInnflyttingTilNorge(innflyttingTilNorge: List<no.nav.medlemskap.clients.pdl.generated.hentperson.InnflyttingTilNorge>): List<InnflyttingTilNorge> {
return innflyttingTilNorge.map {
InnflyttingTilNorge(
Expand All @@ -65,7 +106,8 @@ object PdlMapper {
return Folkeregistermetadata(
ajourholdstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.ajourholdstidspunkt),
gyldighetstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.gyldighetstidspunkt),
opphoerstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.opphoerstidspunkt)
opphoerstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.opphoerstidspunkt),
aarsak = folkeregistermetadata?.aarsak
)
}

Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/lovme.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,10 @@ components:
type: array
items:
$ref: "#/components/schemas/Navn"
oppholdstilatelser:
type: array
items:
nullable: true
PersonhistorikkBarn:
properties:
ident:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ class PdlClientHentPersonTest {
}
}
],
"opphold":[],
"adressebeskyttelse": [],
"sivilstand": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class PdlClientHentEktefelleTest {
"minRolleForPerson": "FAR"
}
],
"opphold":[],
"statsborgerskap": [
{
"land": "NOR",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,8 @@ class PdlMapperSteps : No {
adressebeskyttelse = adressebeskyttelse,
innflyttingTilNorge = innflyttingTilNorge,
utflyttingFraNorge = utflyttingFraNorge,
navn = navn
navn = navn,
opphold = emptyList()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@
"fornavn" : "Test",
"mellomnavn" : null,
"etternavn" : "Person"
} ]
} ],
"oppholdstilatelser" : [ ]
},
"medlemskap" : [ {
"dekning" : "dekning",
Expand Down

0 comments on commit 5ba2050

Please sign in to comment.