Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prioriter navn og kjønn som kommer fra PDL og ikke Freg #5068

Merged
merged 7 commits into from
Feb 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlUtenlandskAdressseRespo
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlVergeResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PersonInfo
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.VergemaalEllerFremtidsfullmakt
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.filtrerKjønnPåKilde
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.filtrerNavnPåKilde
import no.nav.familie.ba.sak.kjerne.personident.Aktør
import no.nav.familie.ba.sak.kjerne.personident.PersonidentService
import no.nav.familie.http.client.AbstractRestClient
Expand Down Expand Up @@ -97,8 +99,8 @@ class PdlRestClient(
PersonInfo(
// Hvis det ikke finnes fødselsdato på person forsøker vi å bruke dato for barnets død fordi det var et dødfødt barn.
fødselsdato = LocalDate.parse(it.foedselsdato.firstOrNull()?.foedselsdato ?: it.doedfoedtBarn.first().dato),
navn = it.navn.firstOrNull()?.fulltNavn(),
kjønn = it.kjoenn.firstOrNull()?.kjoenn,
navn = it.navn.filtrerNavnPåKilde()?.fulltNavn(),
kjønn = it.kjoenn.filtrerKjønnPåKilde()?.kjoenn,
forelderBarnRelasjon = forelderBarnRelasjon,
adressebeskyttelseGradering = it.adressebeskyttelse.firstOrNull()?.gradering,
bostedsadresser = it.bostedsadresse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.familie.ba.sak.integrasjoner.pdl.domene
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import no.nav.familie.ba.sak.common.PdlPersonKanIkkeBehandlesIFagSystemÅrsak
import no.nav.familie.ba.sak.common.PdlPersonKanIkkeBehandlesIFagsystem
import no.nav.familie.ba.sak.integrasjoner.pdl.logger
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Kjønn
import no.nav.familie.kontrakter.felles.personopplysning.Adressebeskyttelse
import no.nav.familie.kontrakter.felles.personopplysning.Bostedsadresse
Expand Down Expand Up @@ -65,6 +66,7 @@ data class PdlNavn(
val fornavn: String,
val mellomnavn: String? = null,
val etternavn: String,
val metadata: PdlMetadata,
) {
fun fulltNavn(): String =
when (mellomnavn) {
Expand All @@ -76,4 +78,32 @@ data class PdlNavn(
@JsonIgnoreProperties(ignoreUnknown = true)
data class PdlKjoenn(
val kjoenn: Kjønn,
val metadata: PdlMetadata,
)

data class PdlMetadata(
val master: String,
val historisk: Boolean,
)

// Filtrer på historisk slik at ikke-historiske alltid får prioritet
fun List<PdlNavn>.filtrerNavnPåKilde(): PdlNavn? =
this
.filter { it.metadata.historisk == false }
.minByOrNull { it.metadata.master.kildeTilPrioritet() }

// Filtrer på historisk slik at ikke-historiske alltid får prioritet
fun List<PdlKjoenn>.filtrerKjønnPåKilde(): PdlKjoenn? =
this
.filter { it.metadata.historisk == false }
.minByOrNull { it.metadata.master.kildeTilPrioritet() }

fun String.kildeTilPrioritet(): Int =
when (uppercase()) {
"PDL" -> 1
"FREG" -> 2
else -> {
logger.warn("Ukjent kilde fra PDL: $this. Bør legges til.")
3
}
}
8 changes: 8 additions & 0 deletions src/main/resources/pdl/hentperson-enkel.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,17 @@ query($ident: ID!) {person: hentPerson(ident: $ident) {
fornavn
mellomnavn
etternavn
metadata {
master
historisk
}
}
kjoenn {
kjoenn
metadata {
master
historisk
}
}
adressebeskyttelse {
gradering
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,17 @@ query($ident: ID!) {person: hentPerson(ident: $ident) {
fornavn
mellomnavn
etternavn
metadata {
master
historisk
}
}
kjoenn {
kjoenn
metadata {
master
historisk
}
}
forelderBarnRelasjon {
relatertPersonsIdent,
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/pdl/hentperson-navn-og-adresse.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ query($ident: ID!) {person: hentPerson(ident: $ident) {
fornavn
mellomnavn
etternavn
metadata {
master
historisk
}
}
bostedsadresse(historikk: false) {
gyldigTilOgMed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlAdressebeskyttelseRespo
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlBaseResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlHentPersonRelasjonerResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlHentPersonResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlMetadata
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlNavn
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.filtrerKjønnPåKilde
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.filtrerNavnPåKilde
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Kjønn
import no.nav.familie.kontrakter.felles.objectMapper
import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING
import no.nav.familie.kontrakter.felles.personopplysning.FORELDERBARNRELASJONROLLE
Expand Down Expand Up @@ -35,6 +39,14 @@ class PdlGraphqlTest {
.first()
.fornavn,
).isEqualTo("ENGASJERT")
assertThat(
resp.data.person!!
.navn
.first()
.metadata
.master
.uppercase(),
).isEqualTo("PDL")
assertThat(
resp.data.person!!
.kjoenn
Expand Down Expand Up @@ -209,10 +221,57 @@ class PdlGraphqlTest {

@Test
fun testFulltNavn() {
assertThat(PdlNavn(fornavn = "For", mellomnavn = "Mellom", etternavn = "Etter").fulltNavn())
.isEqualTo("For Mellom Etter")
assertThat(PdlNavn(fornavn = "For", etternavn = "Etter").fulltNavn())
.isEqualTo("For Etter")
assertThat(
PdlNavn(
fornavn = "For",
mellomnavn = "Mellom",
etternavn = "Etter",
metadata = PdlMetadata(master = "kilde", historisk = false),
).fulltNavn(),
).isEqualTo("For Mellom Etter")
assertThat(
PdlNavn(
fornavn = "For",
etternavn = "Etter",
metadata = PdlMetadata(master = "kilde", historisk = false),
).fulltNavn(),
).isEqualTo("For Etter")
}

@Test
fun testDeserialiseringAvResponsMedToNavn() {
val resp =
mapper.readValue<PdlBaseResponse<PdlHentPersonResponse>>(File(getFile("pdl/pdlMedToNavnOgToKjonn.json")))
assertThat(
resp.data.person!!
.navn
.filtrerNavnPåKilde()
?.etternavn,
).isEqualTo("NATUR")
}

@Test
fun testDeserialiseringAvResponsMedToKjønn() {
val resp =
mapper.readValue<PdlBaseResponse<PdlHentPersonResponse>>(File(getFile("pdl/pdlMedToNavnOgToKjonn.json")))
assertThat(
resp.data.person!!
.kjoenn
.filtrerKjønnPåKilde()
?.kjoenn,
).isEqualTo(Kjønn.KVINNE)
}

@Test
fun testDeserialiseringAvResponsMedUgyldigeKilder() {
val resp =
mapper.readValue<PdlBaseResponse<PdlHentPersonResponse>>(File(getFile("pdl/pdlMedToNavnOgToKjonn.json")))
assertThat(
resp.data.person!!
.kjoenn
.filtrerKjønnPåKilde()
?.kjoenn,
).isEqualTo(Kjønn.KVINNE)
}

private fun getFile(name: String): String = javaClass.classLoader?.getResource(name)?.file ?: error("Testkonfigurasjon feil")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlHentIdenterResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlHentPersonResponse
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlIdenter
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlKjoenn
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlMetadata
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlNavn
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlPersonData
import no.nav.familie.ba.sak.integrasjoner.pdl.domene.PdlPersonRequest
Expand Down Expand Up @@ -202,9 +203,10 @@ private fun enkelPdlHentPersonResponse(scenarioPerson: RestScenarioPerson): PdlP
fornavn = scenarioPerson.fornavn,
mellomnavn = null,
etternavn = scenarioPerson.etternavn,
metadata = PdlMetadata(master = "kilde", historisk = false),
),
),
kjoenn = listOf(PdlKjoenn(kjoenn = Kjønn.KVINNE)),
kjoenn = listOf(PdlKjoenn(kjoenn = Kjønn.KVINNE, metadata = PdlMetadata(master = "kilde", historisk = false))),
adressebeskyttelse = emptyList(),
sivilstand = listOf(Sivilstand(type = SIVILSTANDTYPE.UGIFT)),
bostedsadresse = scenarioPerson.bostedsadresser,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
"navn": [
{
"fornavn": "BARN",
"etternavn": "FYR"
"etternavn": "FYR",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [
Expand All @@ -30,7 +34,11 @@
],
"kjoenn": [
{
"kjoenn": "MANN"
"kjoenn": "MANN",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
"navn": [
{
"fornavn": "REAL",
"etternavn": "RUNDINGSBØYE"
"etternavn": "RUNDINGSBØYE",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [
Expand All @@ -30,7 +34,11 @@
],
"kjoenn": [
{
"kjoenn": "MANN"
"kjoenn": "MANN",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
"navn": [
{
"fornavn": "BARN",
"etternavn": "FYR"
"etternavn": "FYR",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [
Expand All @@ -30,7 +34,11 @@
],
"kjoenn": [
{
"kjoenn": "MANN"
"kjoenn": "MANN",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,21 @@
"navn": [
{
"fornavn": "BARN",
"etternavn": "FYR"
"etternavn": "FYR",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [],
"kjoenn": [
{
"kjoenn": "MANN"
"kjoenn": "MANN",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
"navn": [
{
"fornavn": "MOR",
"etternavn": "FYR"
"etternavn": "FYR",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [
Expand All @@ -30,7 +34,11 @@
],
"kjoenn": [
{
"kjoenn": "KVINNE"
"kjoenn": "KVINNE",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
"navn": [
{
"fornavn": "MOR",
"etternavn": "FYR"
"etternavn": "FYR",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"foedselsdato": [
Expand All @@ -30,7 +34,11 @@
],
"kjoenn": [
{
"kjoenn": "KVINNE"
"kjoenn": "KVINNE",
"metadata": {
"master": "PDL",
"historisk": false
}
}
],
"bostedsadresse": [
Expand Down
Loading
Loading