From d46a0880c7bc7fdc66e6c0bfbca9eeb95bf81843 Mon Sep 17 00:00:00 2001 From: kristenhaerum Date: Mon, 2 Sep 2024 11:05:33 +0200 Subject: [PATCH] Refactor 'foedsel' to 'foedselsdato' in PdlPerson Renamed the 'foedsel' field to 'foedselsdato' across multiple files and classes. This change updates both the JSON structure and Java classes to reflect the new field name for consistency and clarity. Removed deprecated birth-related fields and adjusted corresponding tests. --- .../consumer/response/pdl/PdlPerson.java | 15 +- .../service/ArenaAapService.java | 2 +- .../service/ArenaDagpengerService.java | 4 +- .../service/IdentService.java | 18 +- .../service/PensjonService.java | 2 +- .../src/main/resources/application-dev.yml | 5 - .../resources/pdlperson/graphql.config.yml | 8 + .../pdlperson/pdl-api-schema.graphql | 949 ++++++++++++++++++ .../resources/pdlperson/pdlbolkquery.graphql | 5 +- .../main/resources/pdlperson/pdlquery.graphql | 5 +- .../service/ArenaAapServiceTest.java | 16 +- .../service/PensjonServiceTest.java | 6 +- .../test/resources/files/pdl/pdlperson.json | 5 +- .../resources/files/pdl/pdlpersonbolk.json | 2 +- .../files/search/single_search_response.json | 2 +- 15 files changed, 992 insertions(+), 52 deletions(-) create mode 100644 apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/graphql.config.yml create mode 100644 apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdl-api-schema.graphql diff --git a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/consumer/response/pdl/PdlPerson.java b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/consumer/response/pdl/PdlPerson.java index a7ecbc4fe05..900ec73b4f8 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/consumer/response/pdl/PdlPerson.java +++ b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/consumer/response/pdl/PdlPerson.java @@ -61,7 +61,7 @@ public static class HentPerson { private List bostedsadresse; private List navn; - private List foedsel; + private List foedselsdato; private List doedsfall; public List getBostedsadresse() { @@ -78,11 +78,11 @@ public List getNavn() { return navn; } - public List getFoedsel() { - if (isNull(foedsel)) { - foedsel = new ArrayList<>(); + public List getFoedselsdato() { + if (isNull(foedselsdato)) { + foedselsdato = new ArrayList<>(); } - return foedsel; + return foedselsdato; } public List getDoedsfall() { @@ -140,13 +140,10 @@ public static class Navn { @lombok.Data @NoArgsConstructor @AllArgsConstructor - public static class Foedsel { + public static class Foedselsdato { private String foedselsaar; private LocalDate foedselsdato; - private String foedeland; - private String foedested; - private String foedekommune; private Folkeregistermetadata folkeregistermetadata; private Metadata metadata; } diff --git a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapService.java b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapService.java index 0a146560e78..aa169eaffd9 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapService.java +++ b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapService.java @@ -85,7 +85,7 @@ public void opprettVedtakUngUfoer( String miljoe, List rettigheter ) { - var foedselsdato = person.getFoedsel().getFoedselsdato(); + var foedselsdato = person.getFoedselsdato().getFoedselsdato(); var ungUfoer = historikk.getUngUfoer(); if (nonNull(ungUfoer) && !ungUfoer.isEmpty()) { for (var vedtak : ungUfoer) { diff --git a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaDagpengerService.java b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaDagpengerService.java index 3f26fe8e49c..0a7033a1b55 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaDagpengerService.java +++ b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaDagpengerService.java @@ -70,7 +70,7 @@ public Map> registrerArenaBrukereMedDagpenger Map> responses = new HashMap<>(); for (var ident : utvalgteIdenter) { - var foedselsdato = ident.getFoedsel().getFoedselsdato(); + var foedselsdato = ident.getFoedselsdato().getFoedselsdato(); var minDate = foedselsdato.plusYears(18).isAfter(MINIMUM_DATE) ? foedselsdato.plusYears(18) : MINIMUM_DATE; @@ -113,7 +113,7 @@ private List sendDagpenger(String ident, String miljoe, Lo var soknadResponse = arenaForvalterService.opprettMottaDagpengesoknad(soknadRequest); if (soknadResponse.getFeiledeDagpenger().isEmpty() && !soknadResponse.getNyeDagpenger().isEmpty() && nonNull(vedtakdato)) { - var vedtakRequest = getDagpengevedtakRequest(ident, miljoe, vedtakdato, rettighetKode, soknadResponse.getNyeDagpenger().get(0)); + var vedtakRequest = getDagpengevedtakRequest(ident, miljoe, vedtakdato, rettighetKode, soknadResponse.getNyeDagpenger().getFirst()); if (isNull(vedtakRequest)) { return Collections.singletonList(soknadResponse); } diff --git a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/IdentService.java b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/IdentService.java index 768d6cb88be..9f250bc1bf2 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/IdentService.java +++ b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/IdentService.java @@ -137,11 +137,11 @@ private boolean validBarn(List barn, LocalDate tidligsteDatoBarnetillegg private boolean under18VedTidspunkt(PdlPersonBolk.PersonBolk personBolk, LocalDate tidspunkt) { var person = personBolk.getPerson(); - if (nonNull(person) && nonNull(person.getFoedsel()) && !person.getFoedsel().isEmpty()){ - var foedselsdato = person.getFoedsel().get(0).getFoedselsdato(); + if (nonNull(person) && nonNull(person.getFoedselsdato()) && !person.getFoedselsdato().isEmpty()){ + var foedselsdato = person.getFoedselsdato().getFirst().getFoedselsdato(); if(nonNull(person.getDoedsfall()) && !person.getDoedsfall().isEmpty()){ - var doedsdato = person.getDoedsfall().get(0).getDoedsdato(); + var doedsdato = person.getDoedsfall().getFirst().getDoedsdato(); if (doedsdato.isBefore(tidspunkt.plusDays(1))) return false; } var alder = Math.toIntExact(ChronoUnit.YEARS.between(foedselsdato, tidspunkt)); @@ -160,19 +160,19 @@ public Kontoinfo getIdentMedKontoinformasjon() { return Kontoinfo.builder() .fnr(ident.getIdent()) - .fornavn(navnInfo.isEmpty() ? "" : navnInfo.get(0).getFornavn()) - .mellomnavn(navnInfo.isEmpty() || isNull(navnInfo.get(0).getMellomnavn()) ? "" : navnInfo.get(0).getMellomnavn()) - .etternavn(navnInfo.isEmpty() ? "" : navnInfo.get(0).getEtternavn()) + .fornavn(navnInfo.isEmpty() ? "" : navnInfo.getFirst().getFornavn()) + .mellomnavn(navnInfo.isEmpty() || isNull(navnInfo.getFirst().getMellomnavn()) ? "" : navnInfo.getFirst().getMellomnavn()) + .etternavn(navnInfo.isEmpty() ? "" : navnInfo.getFirst().getEtternavn()) .kontonummer(ident.getKontonummer()) .adresseLinje1(getAdresseLinje(boadresseInfo)) - .postnr(boadresseInfo.isEmpty() ? "" : boadresseInfo.get(0).getVegadresse().getPostnummer()) + .postnr(boadresseInfo.isEmpty() ? "" : boadresseInfo.getFirst().getVegadresse().getPostnummer()) .landkode("NO") .build(); } private String getAdresseLinje(List boadresse) { - if (boadresse.isEmpty() || isNull(boadresse.get(0).getVegadresse())) return ""; - var vegadresse = boadresse.get(0).getVegadresse(); + if (boadresse.isEmpty() || isNull(boadresse.getFirst().getVegadresse())) return ""; + var vegadresse = boadresse.getFirst().getVegadresse(); var husbokstav = isNull(vegadresse.getHusbokstav()) ? "" : vegadresse.getHusbokstav(); return vegadresse.getAdressenavn() + " " + vegadresse.getHusnummer() + husbokstav; } diff --git a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonService.java b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonService.java index 5276f00cbdd..80d13cf8268 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonService.java +++ b/apps/synt-vedtakshistorikk-service/src/main/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonService.java @@ -37,7 +37,7 @@ private boolean opprettPersonIPopp( ) { var opprettPersonStatus = pensjonTestdataFacadeConsumer.opprettPerson(PensjonTestdataPerson.builder() .bostedsland("NOR") - .fodselsDato(person.getFoedsel().getFoedselsdato()) + .fodselsDato(person.getFoedselsdato().getFoedselsdato()) .miljoer(Collections.singletonList(miljoe)) .fnr(person.getIdent()) .build()); diff --git a/apps/synt-vedtakshistorikk-service/src/main/resources/application-dev.yml b/apps/synt-vedtakshistorikk-service/src/main/resources/application-dev.yml index b4f9325607d..827909020eb 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/resources/application-dev.yml +++ b/apps/synt-vedtakshistorikk-service/src/main/resources/application-dev.yml @@ -1,8 +1,3 @@ -azure: - app: - client: - id: ${client_id} - secret: ${client_secret} batch: miljoe: q2 diff --git a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/graphql.config.yml b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/graphql.config.yml new file mode 100644 index 00000000000..1f9a7cdf2a6 --- /dev/null +++ b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/graphql.config.yml @@ -0,0 +1,8 @@ +schema: pdl-api-schema.graphql +extensions: + endpoints: + PDL GraphQL Endpoint: + url: https://pdl-api.dev.intern.nav.no/graphql + headers: + user-agent: '' + introspect: false diff --git a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdl-api-schema.graphql b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdl-api-schema.graphql new file mode 100644 index 00000000000..cc4a8c90344 --- /dev/null +++ b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdl-api-schema.graphql @@ -0,0 +1,949 @@ +# This file was generated. Do not edit manually. + +schema { + query: Query +} + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +type AdresseCompletionResult { + addressFound: CompletionAdresse + suggestions: [String!]! +} + +type AdresseSearchHit { + matrikkeladresse: MatrikkeladresseResult + score: Float + vegadresse: VegadresseResult +} + +type AdresseSearchResult { + hits: [AdresseSearchHit!]! + pageNumber: Int + totalHits: Int + totalPages: Int +} + +type Adressebeskyttelse { + folkeregistermetadata: Folkeregistermetadata + gradering: AdressebeskyttelseGradering! + metadata: Metadata! +} + +type Bostedsadresse { + angittFlyttedato: Date + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type CompletionAdresse { + matrikkeladresse: MatrikkeladresseResult + vegadresse: VegadresseResult +} + +type DeltBosted { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata! + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + sluttdatoForKontrakt: Date + startdatoForKontrakt: Date! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type DoedfoedtBarn { + dato: Date + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! +} + +type Doedsfall { + doedsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +" Endring som har blitt utført på opplysningen. F.eks: Opprett -> Korriger -> Korriger" +type Endring { + hendelseId: String! + """ + + Opphavet til informasjonen. I NAV blir dette satt i forbindelse med registrering (f.eks: Sykehuskassan). + Fra Folkeregisteret får vi opphaven til dems opplysning, altså NAV, UDI, Politiet, Skatteetaten o.l.. Fra Folkeregisteret kan det også være tekniske navn som: DSF_MIGRERING, m.m.. + """ + kilde: String! + " Tidspunktet for registrering." + registrert: DateTime! + " Hvem endringen har blitt utført av, ofte saksbehandler (f.eks Z990200), men kan også være system (f.eks srvXXXX). Denne blir satt til \"Folkeregisteret\" for det vi får fra dem." + registrertAv: String! + " Hvilke system endringen har kommet fra (f.eks srvXXX). Denne blir satt til \"FREG\" for det vi får fra Folkeregisteret." + systemkilde: String! + " Hvilke type endring som har blitt utført." + type: Endringstype! +} + +type FalskIdentitet { + erFalsk: Boolean! + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettIdentitetErUkjent: Boolean + rettIdentitetVedIdentifikasjonsnummer: String + rettIdentitetVedOpplysninger: FalskIdentitetIdentifiserendeInformasjon +} + +type FalskIdentitetIdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: KjoennType + personnavn: Personnavn! + statsborgerskap: [String!]! +} + +type Foedested { + foedekommune: String + foedeland: String + foedested: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedsel { + foedekommune: String + foedeland: String + foedested: String + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedselsdato { + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Folkeregisteridentifikator { + folkeregistermetadata: Folkeregistermetadata! + identifikasjonsnummer: String! + metadata: Metadata! + status: String! + type: String! +} + +type Folkeregistermetadata { + aarsak: String + ajourholdstidspunkt: DateTime + gyldighetstidspunkt: DateTime + kilde: String + opphoerstidspunkt: DateTime + sekvens: Int +} + +type Folkeregisterpersonstatus { + folkeregistermetadata: Folkeregistermetadata! + forenkletStatus: String! + metadata: Metadata! + status: String! +} + +type ForelderBarnRelasjon { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + minRolleForPerson: ForelderBarnRelasjonRolle + relatertPersonUtenFolkeregisteridentifikator: RelatertBiPerson + relatertPersonsIdent: String + relatertPersonsRolle: ForelderBarnRelasjonRolle! +} + +type Foreldreansvar { + ansvar: String + ansvarlig: String + ansvarligUtenIdentifikator: RelatertBiPerson + ansvarssubjekt: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Fullmakt { + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + metadata: Metadata! + motpartsPersonident: String! + motpartsRolle: FullmaktsRolle! + omraader: [String!]! +} + +type GeografiskTilknytning { + gtBydel: String + gtKommune: String + gtLand: String + gtType: GtType! + regel: String! +} + +type HentIdenterBolkResult { + code: String! + ident: String! + identer: [IdentInformasjon!] +} + +type HentPersonBolkResult { + code: String! + ident: String! + person: Person +} + +type IdentInformasjon { + gruppe: IdentGruppe! + historisk: Boolean! + ident: String! +} + +type IdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: String + navn: Personnavn + statsborgerskap: [String!] +} + +type Identitetsgrunnlag { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + status: Identitetsgrunnlagsstatus! +} + +type Identliste { + identer: [IdentInformasjon!]! +} + +type InnflyttingTilNorge { + folkeregistermetadata: Folkeregistermetadata + fraflyttingsland: String + fraflyttingsstedIUtlandet: String + metadata: Metadata! +} + +type KartverketAdresse { + id: Long! + matrikkeladresse: KartverketMatrikkeladresse + vegadresse: KartverketVegadresse +} + +type KartverketBydel { + bydelsnavn: String + bydelsnummer: String +} + +type KartverketFylke { + navn: String + nummer: String +} + +type KartverketGrunnkrets { + grunnkretsnavn: String + grunnkretsnummer: String +} + +type KartverketKommune { + fylke: KartverketFylke + navn: String + nummer: String +} + +type KartverketMatrikkeladresse { + adressetilleggsnavn: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + matrikkelnummer: KartverketMatrikkelnummer + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + undernummer: Int +} + +type KartverketMatrikkelnummer { + bruksnummer: Int + festenummer: Int + gaardsnummer: Int + kommunenummer: String + seksjonsnummer: Int +} + +type KartverketPostnummeromraade { + postnummer: String + poststed: String +} + +type KartverketRepresentasjonspunkt { + posisjonskvalitet: Int + x: Float + y: Float + z: Float +} + +type KartverketVeg { + adressekode: Int + adressenavn: String + kommune: KartverketKommune + kortnavn: String + stedsnummer: String +} + +type KartverketVegadresse { + adressetilleggsnavn: String + bokstav: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + nummer: Int + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + veg: KartverketVeg +} + +type Kjoenn { + folkeregistermetadata: Folkeregistermetadata + kjoenn: KjoennType + metadata: Metadata! +} + +type Kontaktadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + metadata: Metadata! + postadresseIFrittFormat: PostadresseIFrittFormat + postboksadresse: Postboksadresse + type: KontaktadresseType! + utenlandskAdresse: UtenlandskAdresse + utenlandskAdresseIFrittFormat: UtenlandskAdresseIFrittFormat + vegadresse: Vegadresse +} + +type KontaktinformasjonForDoedsbo { + adresse: KontaktinformasjonForDoedsboAdresse! + advokatSomKontakt: KontaktinformasjonForDoedsboAdvokatSomKontakt + attestutstedelsesdato: Date! + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + organisasjonSomKontakt: KontaktinformasjonForDoedsboOrganisasjonSomKontakt + personSomKontakt: KontaktinformasjonForDoedsboPersonSomKontakt + skifteform: KontaktinformasjonForDoedsboSkifteform! +} + +type KontaktinformasjonForDoedsboAdresse { + adresselinje1: String! + adresselinje2: String + landkode: String + postnummer: String! + poststedsnavn: String! +} + +type KontaktinformasjonForDoedsboAdvokatSomKontakt { + organisasjonsnavn: String + organisasjonsnummer: String + personnavn: Personnavn! +} + +type KontaktinformasjonForDoedsboOrganisasjonSomKontakt { + kontaktperson: Personnavn + organisasjonsnavn: String! + organisasjonsnummer: String +} + +type KontaktinformasjonForDoedsboPersonSomKontakt { + foedselsdato: Date + identifikasjonsnummer: String + personnavn: Personnavn +} + +type Koordinater { + kvalitet: Int + x: Float + y: Float + z: Float +} + +type Matrikkeladresse { + bruksenhetsnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type MatrikkeladresseResult { + bruksnummer: String + gaardsnummer: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type Metadata { + """ + + En liste over alle endringer som har blitt utført over tid. + Vær obs på at denne kan endre seg og man burde takle at det finnes flere korrigeringer i listen, så dersom man ønsker å kun vise den siste, så må man selv filtrere ut dette. + Det kan også ved svært få tilfeller skje at opprett blir fjernet. F.eks ved splitt tilfeller av identer. Dette skal skje i svært få tilfeller. Dersom man ønsker å presentere opprettet tidspunktet, så blir det tidspunktet på den første endringen. + """ + endringer: [Endring!]! + """ + + Feltet betegner hvorvidt dette er en funksjonelt historisk opplysning, for eksempel en tidligere fraflyttet adresse eller et foreldreansvar som er utløpt fordi barnet har fylt 18 år. + I de fleste tilfeller kan dette utledes ved å se på de andre feltene i opplysningen. Dette er imidlertid ikke alltid tilfellet, blant annet for foreldreansvar. + Feltet bør brukes av konsumenter som henter informasjon fra GraphQL med historikk, men som også trenger å utlede gjeldende informasjon. + """ + historisk: Boolean! + " Master refererer til hvem som eier opplysningen, f.eks så har PDL en kopi av Folkeregisteret, da vil master være FREG og eventuelle endringer på dette må gå via Folkeregisteret (API mot dem eller andre rutiner)." + master: String! + """ + + I PDL så får alle forekomster av en opplysning en ID som representerer dens unike forekomst. + F.eks, så vil en Opprett ha ID X, korriger ID Y (der hvor den spesifiserer at den korrigerer X). + Dersom en opplysning ikke er lagret i PDL, så vil denne verdien ikke være utfylt. + """ + opplysningsId: String +} + +type Navn { + etternavn: String! + folkeregistermetadata: Folkeregistermetadata + forkortetNavn: String @deprecated(reason: "No longer supported") + fornavn: String! + gyldigFraOgMed: Date + mellomnavn: String + metadata: Metadata! + originaltNavn: OriginaltNavn +} + +type Navspersonidentifikator { + identifikasjonsnummer: String! + metadata: Metadata! +} + +type Opphold { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + oppholdFra: Date + oppholdTil: Date + type: Oppholdstillatelse! +} + +type Oppholdsadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + oppholdAnnetSted: String + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type OriginaltNavn { + etternavn: String + fornavn: String + mellomnavn: String +} + +type Person { + adressebeskyttelse(historikk: Boolean = false): [Adressebeskyttelse!]! + bostedsadresse(historikk: Boolean = false): [Bostedsadresse!]! + deltBosted(historikk: Boolean = false): [DeltBosted!]! + doedfoedtBarn: [DoedfoedtBarn!]! + doedsfall: [Doedsfall!]! + falskIdentitet: FalskIdentitet + foedested: [Foedested!]! + foedsel: [Foedsel!]! @deprecated(reason: "Erstattet av foedselsdato & foedested") + foedselsdato: [Foedselsdato!]! + folkeregisteridentifikator(historikk: Boolean = false): [Folkeregisteridentifikator!]! + folkeregisterpersonstatus(historikk: Boolean = false): [Folkeregisterpersonstatus!]! + forelderBarnRelasjon: [ForelderBarnRelasjon!]! + foreldreansvar(historikk: Boolean = false): [Foreldreansvar!]! + fullmakt(historikk: Boolean = false): [Fullmakt!]! + identitetsgrunnlag(historikk: Boolean = false): [Identitetsgrunnlag!]! + innflyttingTilNorge: [InnflyttingTilNorge!]! + kjoenn(historikk: Boolean = false): [Kjoenn!]! + kontaktadresse(historikk: Boolean = false): [Kontaktadresse!]! + kontaktinformasjonForDoedsbo(historikk: Boolean = false): [KontaktinformasjonForDoedsbo!]! + navn(historikk: Boolean = false): [Navn!]! + navspersonidentifikator(historikk: Boolean = false): [Navspersonidentifikator!]! + opphold(historikk: Boolean = false): [Opphold!]! + oppholdsadresse(historikk: Boolean = false): [Oppholdsadresse!]! + rettsligHandleevne(historikk: Boolean = false): [RettsligHandleevne!]! + sikkerhetstiltak: [Sikkerhetstiltak!]! + sivilstand(historikk: Boolean = false): [Sivilstand!]! + statsborgerskap(historikk: Boolean = false): [Statsborgerskap!]! + telefonnummer(historikk: Boolean = false): [Telefonnummer!]! + tilrettelagtKommunikasjon: [TilrettelagtKommunikasjon!]! + utenlandskIdentifikasjonsnummer(historikk: Boolean = false): [UtenlandskIdentifikasjonsnummer!]! + utflyttingFraNorge: [UtflyttingFraNorge!]! + vergemaalEllerFremtidsfullmakt(historikk: Boolean = false): [VergemaalEllerFremtidsfullmakt!]! +} + +type PersonSearchHighlight { + " Forteller hvorvidt opplysningen som ga treff er markert som historisk." + historisk: Boolean + """ + + liste med feltene og verdiene som ga treff. + Merk at for fritekst søk så vil disse kunne referere til hjelpe felter som ikke er synelig i resultatene. + """ + matches: [SearchMatch] + """ + + Navn/Sti til opplysningen som ga treff. Merk at dette ikke er feltet som ga treff men opplysningen. + F.eks. hvis du søker på person.navn.fornavn så vil opplysingen være person.navn. + """ + opplysning: String + """ + + Gitt att opplysningen som ga treff har en opplysningsId så vil den returneres her. + alle søk under person skal ha opplysningsId, men søk i identer vil kunne returnere treff uten opplysningsId. + """ + opplysningsId: String +} + +type PersonSearchHit { + " Infromasjon om hva som ga treff i søke resultatet." + highlights: [PersonSearchHighlight] + " forespurte data" + identer(historikk: Boolean = false): [IdentInformasjon!]! + " forespurte data" + person: Person + " Poengsummen elasticsearch har gitt dette resultatet (brukt til feilsøking, og tuning av søk)" + score: Float +} + +type PersonSearchResult { + " treff liste" + hits: [PersonSearchHit!]! + " Side nummer for siden som vises" + pageNumber: Int + " Totalt antall treff (øvre grense er satt til 10 000)" + totalHits: Int + " Totalt antall sider" + totalPages: Int +} + +type Personnavn { + etternavn: String! + fornavn: String! + mellomnavn: String +} + +type PostadresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + postnummer: String +} + +type Postboksadresse { + postboks: String! + postbokseier: String + postnummer: String +} + +type Query { + forslagAdresse(parameters: CompletionParameters): AdresseCompletionResult + hentAdresse(matrikkelId: ID!): KartverketAdresse + hentGeografiskTilknytning(ident: ID!): GeografiskTilknytning + hentGeografiskTilknytningBolk(identer: [ID!]!): [hentGeografiskTilknytningBolkResult!]! + hentIdenter(grupper: [IdentGruppe!], historikk: Boolean = false, ident: ID!): Identliste + hentIdenterBolk(grupper: [IdentGruppe!], historikk: Boolean = false, identer: [ID!]!): [HentIdenterBolkResult!]! + hentPerson(ident: ID!): Person + hentPersonBolk(identer: [ID!]!): [HentPersonBolkResult!]! + sokAdresse(criteria: [Criterion], paging: Paging): AdresseSearchResult + sokPerson(criteria: [Criterion], paging: Paging): PersonSearchResult +} + +type RelatertBiPerson { + foedselsdato: Date + kjoenn: KjoennType + navn: Personnavn + statsborgerskap: String +} + +type RettsligHandleevne { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettsligHandleevneomfang: String +} + +type SearchMatch { + " feltnavn med sti til feltet so ga treff." + field: String! + " Verdien som ga treff" + fragments: [String] + type: String +} + +type Sikkerhetstiltak { + beskrivelse: String! + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + kontaktperson: SikkerhetstiltakKontaktperson + metadata: Metadata! + tiltakstype: String! +} + +type SikkerhetstiltakKontaktperson { + enhet: String! + personident: String! +} + +type Sivilstand { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + metadata: Metadata! + relatertVedSivilstand: String + type: Sivilstandstype! +} + +type Statsborgerskap { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + gyldigTilOgMed: Date + land: String! + metadata: Metadata! +} + +type Telefonnummer { + landskode: String! + metadata: Metadata! + nummer: String! + prioritet: Int! +} + +type TilrettelagtKommunikasjon { + metadata: Metadata! + talespraaktolk: Tolk + tegnspraaktolk: Tolk +} + +type Tjenesteomraade { + tjenesteoppgave: String + tjenestevirksomhet: String +} + +type Tolk { + spraak: String +} + +type UkjentBosted { + bostedskommune: String +} + +type UtenlandskAdresse { + adressenavnNummer: String + bySted: String + bygningEtasjeLeilighet: String + landkode: String! + postboksNummerNavn: String + postkode: String + regionDistriktOmraade: String +} + +type UtenlandskAdresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + byEllerStedsnavn: String + landkode: String! + postkode: String +} + +type UtenlandskIdentifikasjonsnummer { + folkeregistermetadata: Folkeregistermetadata + identifikasjonsnummer: String! + metadata: Metadata! + opphoert: Boolean! + utstederland: String! +} + +type UtflyttingFraNorge { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + tilflyttingsland: String + tilflyttingsstedIUtlandet: String + utflyttingsdato: Date +} + +type Vegadresse { + adressenavn: String + bruksenhetsnummer: String + bydelsnummer: String + husbokstav: String + husnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type VegadresseResult { + adressekode: String + adressenavn: String + bydelsnavn: String + bydelsnummer: String + fylkesnavn: String + fylkesnummer: String + husbokstav: String + husnummer: Int + kommunenavn: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type VergeEllerFullmektig { + identifiserendeInformasjon: IdentifiserendeInformasjon + motpartsPersonident: String + navn: Personnavn @deprecated(reason: "Erstattes av navn iidentifiserendeInformasjon") + omfang: String + omfangetErInnenPersonligOmraade: Boolean + tjenesteomraade: [Tjenesteomraade!] +} + +type VergemaalEllerFremtidsfullmakt { + embete: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + type: String + vergeEllerFullmektig: VergeEllerFullmektig! +} + +type hentGeografiskTilknytningBolkResult { + code: String! + geografiskTilknytning: GeografiskTilknytning + ident: String! +} + +enum AdressebeskyttelseGradering { + FORTROLIG + STRENGT_FORTROLIG + STRENGT_FORTROLIG_UTLAND + UGRADERT +} + +enum Direction { + ASC + DESC +} + +enum Endringstype { + KORRIGER + OPPHOER + OPPRETT +} + +enum Familierelasjonsrolle { + BARN + FAR + MEDMOR + MOR +} + +enum ForelderBarnRelasjonRolle { + BARN + FAR + MEDMOR + MOR +} + +enum FullmaktsRolle { + FULLMAKTSGIVER + FULLMEKTIG +} + +enum GtType { + BYDEL + KOMMUNE + UDEFINERT + UTLAND +} + +enum IdentGruppe { + AKTORID + FOLKEREGISTERIDENT + NPID +} + +enum Identitetsgrunnlagsstatus { + IKKE_KONTROLLERT + INGEN_STATUS + KONTROLLERT +} + +enum KjoennType { + KVINNE + MANN + UKJENT +} + +enum KontaktadresseType { + Innland + Utland +} + +enum KontaktinformasjonForDoedsboSkifteform { + ANNET + OFFENTLIG +} + +enum Oppholdstillatelse { + MIDLERTIDIG + OPPLYSNING_MANGLER + PERMANENT +} + +enum Sivilstandstype { + ENKE_ELLER_ENKEMANN + GIFT + GJENLEVENDE_PARTNER + REGISTRERT_PARTNER + SEPARERT + SEPARERT_PARTNER + SKILT + SKILT_PARTNER + UGIFT + UOPPGITT +} + +"Format: YYYY-MM-DD (ISO-8601), example: 2017-11-24" +scalar Date + +"Format: YYYY-MM-DDTHH:mm:SS (ISO-8601), example: 2011-12-03T10:15:30" +scalar DateTime + +"A 64-bit signed integer" +scalar Long + +input CompletionFieldValue { + fieldName: String! + fieldValue: String +} + +input CompletionParameters { + completionField: String! + fieldValues: [CompletionFieldValue]! + maxSuggestions: Int +} + +input Criterion { + and: [Criterion] + " Feltnavn inkludert sti til ønsket felt (Eksempel: person.navn.fornavn)" + fieldName: String + not: [Criterion] + or: [Criterion] + """ + + Søk i historiske data + true = søker kun i historiske data. + false = søker kun i gjeldende data. + null = søke i både historiske og gjeldende data. + """ + searchHistorical: Boolean + searchRule: SearchRule +} + +input Paging { + " Hvilken side i resultatsettet man ønsker vist." + pageNumber: Int = 1 + " antall treff per side (maks 100)" + resultsPerPage: Int = 10 + """ + + Liste over felter man ønsker resultatene sortert etter + Standard er "score". Score er poengsummen Elasticsearch tildeler hvert resultat. + """ + sortBy: [SearchSorting] +} + +input SearchRule { + " Brukes til søke etter datoer som kommer etter opgitt dato." + after: String + " Brukes til søke etter datoer som kommer før opgitt dato." + before: String + " Boost brukes til å gi ett søkekriterie høyere eller lavere vektlegging en de andre søke kriteriene." + boost: Float + " [Flag] Kan brukes til å overstyre standard oppførsellen for søk i felter (standard er case insensitive)" + caseSensitive: Boolean + " Gir treff når opgitt felt inneholder en eller flere ord fra input verdien." + contains: String + " [Flag] Brukes til å deaktivere fonetisk søk feltene som har dette som standard (Navn)" + disablePhonetic: Boolean + " Begrenser treff til kun de hvor felt har input verdi" + equals: String + " Sjekker om feltet finnes / at det ikke har en null verdi." + exists: String + """ + + Søk fra og med (se fromExcluding for bare fra men ikke med) + kan benyttes på tall og dato + """ + from: String + """ + + Søk fra men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + fromExcluding: String + " Søk som gir treff også for små variasjoner i skrivemåte" + fuzzy: String + " Brukes til å søke i tall og finner verdier som er størren en input verdi." + greaterThan: String + " Brukes til å søke i tall og finner verdier som er mindre en input verdi." + lessThan: String + " Filtrerer bort treff hvor felt inneholder input verdi" + notEquals: String + " Søk som gir tilfeldig poengsum til hvert treff (kun ment til generering av testdata)" + random: String + " Regex søk for spesielle situasjoner (Dette er en treg opprasjon og bør ikke brukes)" + regex: String + " Gir treff når opgitt feltstarter med opgitt verdi." + startsWith: String + """ + + Søk til og med (se toExcluding for bare til men ikke med) + kan benyttes på tall og dato + """ + to: String + """ + + Søk til men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + toExcluding: String + " Bruk \"?\" som wildcard for enkelt tegn, og \"*\" som wildcard for 0 eller flere tegn." + wildcard: String +} + +input SearchSorting { + direction: Direction! + " Feltnavn ikludert sti til ønsket felt (eksepmel: person.navn.fornavn)" + fieldName: String! +} diff --git a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlbolkquery.graphql b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlbolkquery.graphql index acf324ca33a..5adcb038f40 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlbolkquery.graphql +++ b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlbolkquery.graphql @@ -24,12 +24,9 @@ query($identer: [ID!]!) { hentPersonBolk(identer: $identer) { ident, person { - foedsel { + foedselsdato { foedselsaar, foedselsdato, - foedeland, - foedested, - foedekommune, folkeregistermetadata { ...folkeregistermetadataDetails } diff --git a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlquery.graphql b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlquery.graphql index 4a97089ff42..c7234709128 100644 --- a/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlquery.graphql +++ b/apps/synt-vedtakshistorikk-service/src/main/resources/pdlperson/pdlquery.graphql @@ -36,12 +36,9 @@ query($ident: ID!, $historikk: Boolean!) { regel } hentPerson(ident: $ident) { - foedsel { + foedselsdato { foedselsaar, foedselsdato, - foedeland, - foedested, - foedekommune, metadata { ...metadataDetails } diff --git a/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapServiceTest.java b/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapServiceTest.java index 8b05c6be483..2df7e69c6f9 100644 --- a/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapServiceTest.java +++ b/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/ArenaAapServiceTest.java @@ -5,7 +5,7 @@ import no.nav.testnav.libs.domain.dto.arena.testnorge.aap.gensaksopplysninger.Saksopplysning; import no.nav.testnav.libs.domain.dto.arena.testnorge.historikk.Vedtakshistorikk; import no.nav.testnav.libs.domain.dto.arena.testnorge.vedtak.NyttVedtakAap; -import no.nav.testnav.libs.dto.personsearchservice.v1.FoedselDTO; +import no.nav.testnav.libs.dto.personsearchservice.v1.FoedselsdatoDTO; import no.nav.testnav.libs.dto.personsearchservice.v1.PersonDTO; import org.junit.Before; import org.junit.Test; @@ -21,10 +21,10 @@ import java.util.Collections; import java.util.List; -import static org.mockito.Mockito.when; -import static org.assertj.core.api.Assertions.assertThat; -import static no.nav.testnav.apps.syntvedtakshistorikkservice.service.util.ServiceUtils.ARENA_AAP_UNG_UFOER_DATE_LIMIT; import static no.nav.testnav.apps.syntvedtakshistorikkservice.service.util.ServiceUtils.AKTIVITETSFASE_SYKEPENGEERSTATNING; +import static no.nav.testnav.apps.syntvedtakshistorikkservice.service.util.ServiceUtils.ARENA_AAP_UNG_UFOER_DATE_LIMIT; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ArenaAapServiceTest { @@ -38,7 +38,7 @@ public class ArenaAapServiceTest { private final String fnr1 = "27869949421"; private final PersonDTO person = PersonDTO.builder() .ident(fnr1) - .foedsel(FoedselDTO.builder() + .foedselsdato(FoedselsdatoDTO.builder() .foedselsdato(LocalDate.of(1999, 6, 27)) .build()) .build(); @@ -103,7 +103,7 @@ public void shouldGetIkkeAvsluttende115Vedtak(){ var emptyVedtak = arenaAapService.getIkkeAvsluttendeVedtakAap115(null); assertThat(ikkeAvsluttendeVedtak).hasSize(1); - assertThat(ikkeAvsluttendeVedtak.get(0).getVedtaktype()).isEqualTo("O"); + assertThat(ikkeAvsluttendeVedtak.getFirst().getVedtaktype()).isEqualTo("O"); assertThat(emptyVedtak).isEmpty(); } @@ -114,7 +114,7 @@ public void shouldGetAvsluttende115Vedtak(){ var emptyVedtak = arenaAapService.getAvsluttendeVedtakAap115(null); assertThat(avsluttendeVedtak).hasSize(1); - assertThat(avsluttendeVedtak.get(0).getVedtaktype()).isEqualTo("S"); + assertThat(avsluttendeVedtak.getFirst().getVedtaktype()).isEqualTo("S"); assertThat(emptyVedtak).isEmpty(); } @@ -129,7 +129,7 @@ public void shouldFjernAapUngUfoerMedUgyldigeDatoer(){ var response = arenaAapService.fjernAapUngUfoerMedUgyldigeDatoer(vedtak); assertThat(response).hasSize(1); - assertThat(response.get(0).getFraDato()).isEqualTo(ARENA_AAP_UNG_UFOER_DATE_LIMIT.minusDays(7)); + assertThat(response.getFirst().getFraDato()).isEqualTo(ARENA_AAP_UNG_UFOER_DATE_LIMIT.minusDays(7)); } @Test diff --git a/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonServiceTest.java b/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonServiceTest.java index 9dfdc463a73..602d8980ff7 100644 --- a/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonServiceTest.java +++ b/apps/synt-vedtakshistorikk-service/src/test/java/no/nav/testnav/apps/syntvedtakshistorikkservice/service/PensjonServiceTest.java @@ -7,7 +7,7 @@ import no.nav.testnav.apps.syntvedtakshistorikkservice.consumer.response.pensjon.PensjonTestdataResponse; import no.nav.testnav.apps.syntvedtakshistorikkservice.consumer.response.pensjon.PensjonTestdataResponseDetails; import no.nav.testnav.apps.syntvedtakshistorikkservice.consumer.response.pensjon.PensjonTestdataStatus; -import no.nav.testnav.libs.dto.personsearchservice.v1.FoedselDTO; +import no.nav.testnav.libs.dto.personsearchservice.v1.FoedselsdatoDTO; import no.nav.testnav.libs.dto.personsearchservice.v1.PersonDTO; import org.junit.Test; import org.junit.runner.RunWith; @@ -38,7 +38,7 @@ public void shouldOpprettePersonOgInntektIPopp() { var miljoe = "TEST"; var person = PersonDTO.builder() .ident("01016412345") - .foedsel(FoedselDTO.builder() + .foedselsdato(FoedselsdatoDTO.builder() .foedselsdato(LocalDate.of(1964, 1, 1)) .build()) .build(); @@ -67,7 +67,7 @@ public void shouldAcceptPensjonTimestampString() { var miljoe = "TEST"; var person = PersonDTO.builder() .ident("01016412345") - .foedsel(FoedselDTO.builder() + .foedselsdato(FoedselsdatoDTO.builder() .foedselsdato(LocalDate.of(1964, 1, 1)) .build()) .build(); diff --git a/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlperson.json b/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlperson.json index 2423815908d..2780bf175f4 100644 --- a/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlperson.json +++ b/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlperson.json @@ -148,13 +148,10 @@ "kontaktinformasjonForDoedsbo": [], "utenlandskIdentifikasjonsnummer": [], "adressebeskyttelse": [], - "foedsel": [ + "foedselsdato": [ { "foedselsaar": 1952, "foedselsdato": "1952-01-01", - "foedeland": "NOR", - "foedested": null, - "foedekommune": "3024", "folkeregistermetadata": { "aarsak": null, "ajourholdstidspunkt": "2022-03-02T09:35:36", diff --git a/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlpersonbolk.json b/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlpersonbolk.json index 3d479f4fbba..5da14e42a11 100644 --- a/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlpersonbolk.json +++ b/apps/synt-vedtakshistorikk-service/src/test/resources/files/pdl/pdlpersonbolk.json @@ -13,7 +13,7 @@ } } ], - "foedsel": [ + "foedselsdato": [ { "foedselsdato": "1973-09-05", "metadata": { diff --git a/apps/synt-vedtakshistorikk-service/src/test/resources/files/search/single_search_response.json b/apps/synt-vedtakshistorikk-service/src/test/resources/files/search/single_search_response.json index a258d34d34c..a0f0d44d46d 100644 --- a/apps/synt-vedtakshistorikk-service/src/test/resources/files/search/single_search_response.json +++ b/apps/synt-vedtakshistorikk-service/src/test/resources/files/search/single_search_response.json @@ -10,7 +10,7 @@ "tags": [ "TESTNORGE" ], - "foedsel": { + "foedselsdato": { "foedselsdato": "1968-06-11" }, "sivilstand": {