diff --git a/apps/dolly-frontend/config.idporten.yml b/apps/dolly-frontend/config.idporten.yml index fac21c7597c..26a1b76de43 100644 --- a/apps/dolly-frontend/config.idporten.yml +++ b/apps/dolly-frontend/config.idporten.yml @@ -56,6 +56,7 @@ spec: - application: testnav-varslinger-service - application: testnorge-profil-api - application: testnorge-tilbakemelding-api + - application: testnav-yrkesskade-proxy external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.test.yml b/apps/dolly-frontend/config.test.yml index 1844b03a0b1..ab094b75d80 100644 --- a/apps/dolly-frontend/config.test.yml +++ b/apps/dolly-frontend/config.test.yml @@ -62,6 +62,7 @@ spec: - application: testnav-levende-arbeidsforhold-ansettelse - application: testnav-levende-arbeidsforhold-scheduler - application: testnav-skattekort-service + - application: testnav-yrkesskade-proxy external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.unstable.yml b/apps/dolly-frontend/config.unstable.yml index 5a24b4f9360..ce2e6f9d8a8 100644 --- a/apps/dolly-frontend/config.unstable.yml +++ b/apps/dolly-frontend/config.unstable.yml @@ -55,6 +55,7 @@ spec: - application: testnorge-profil-api-dev - application: testnorge-tilbakemelding-api - application: testnav-skattekort-service + - application: testnav-yrkesskade-proxy external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.yml b/apps/dolly-frontend/config.yml index 5f7d016f3a5..9dafd8ea194 100644 --- a/apps/dolly-frontend/config.yml +++ b/apps/dolly-frontend/config.yml @@ -66,6 +66,7 @@ spec: - application: testnorge-tilbakemelding-api - application: testnav-levende-arbeidsforhold-ansettelse - application: testnav-levende-arbeidsforhold-scheduler + - application: testnav-yrkesskade-proxy external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java index 0a48ab5f5eb..82c5cb21190 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java @@ -85,6 +85,7 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { .route(createRoute(consumers.getTestnavSkattekortService())) .route(createRoute(consumers.getTestnavLevendeArbeidsforholdAnsettelse(), "testnav-levende-arbeidsforhold-ansettelse")) .route(createRoute(consumers.getTestnavLevendeArbeidsforholdScheduler(), "testnav-levende-arbeidsforhold-scheduler")) + .route(createRoute(consumers.getTestnavYrkesskadeProxy())) .build(); } diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java index 8a8efa1a7f4..bdd38964ada 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java @@ -65,5 +65,6 @@ public class Consumers { private ServerProperties testnavSkattekortService; private ServerProperties testnavLevendeArbeidsforholdAnsettelse; private ServerProperties testnavLevendeArbeidsforholdScheduler; + private ServerProperties testnavYrkesskadeProxy; } diff --git a/apps/dolly-frontend/src/main/js/proxy-routes.json b/apps/dolly-frontend/src/main/js/proxy-routes.json index 859caa2d6c0..ac756604110 100644 --- a/apps/dolly-frontend/src/main/js/proxy-routes.json +++ b/apps/dolly-frontend/src/main/js/proxy-routes.json @@ -243,5 +243,10 @@ "target": "http://localhost:8020", "changeOrigin": true, "secure": false + }, + "/testnav-yrkesskade-proxy": { + "target": "http://localhost:8020", + "changeOrigin": true, + "secure": false } } \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx index 64bde954c53..97fb34a7bf1 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx @@ -4,6 +4,7 @@ import { arrayToString, codeToNorskLabel, formatDate, + formatDateTime, formatDateTimeWithSeconds, formatDateToYear, omraaderArrayToString, @@ -1270,7 +1271,7 @@ const mapInntektStub = (bestillingData, data) => { inntektStub.itemRows.push([ { numberHeader: `Inntektsinformasjon ${i + 1}` }, obj('År/måned', inntektsinfo.sisteAarMaaned), - obj('Rapporteringstidspunkt', inntektsinfo.rapporteringsdato), + obj('Rapporteringstidspunkt', formatDateTime(inntektsinfo.rapporteringsdato)), obj('Generer antall måneder', inntektsinfo.antallMaaneder), obj('Virksomhet (orgnr/id)', inntektsinfo.virksomhet), obj('Opplysningspliktig (orgnr/id)', inntektsinfo.opplysningspliktig), @@ -1572,6 +1573,30 @@ const mapSykemelding = (bestillingData, data) => { } } +const mapYrkesskader = (bestillingData, data) => { + const yrkesskadeKriterier = bestillingData.yrkesskader + + if (yrkesskadeKriterier) { + const mapYrkesskadeKriterier = () => ({ + header: 'Yrkesskader', + itemRows: yrkesskadeKriterier.map((yrkesskade, i) => [ + { + numberHeader: `Yrkesskade ${i + 1}`, + }, + obj('Rolletype', codeToNorskLabel(yrkesskade.rolletype)), + obj('Innmelderrolle', codeToNorskLabel(yrkesskade.innmelderrolle)), + obj('Klassifisering', showLabel('klassifisering', yrkesskade.klassifisering)), + obj('Referanse', yrkesskade.referanse), + obj('Ferdigstill sak', showLabel('ferdigstillSak', yrkesskade.ferdigstillSak)), + obj('Tidstype', showLabel('tidstype', yrkesskade.tidstype)), + obj('Skadetidspunkt', formatDateTime(yrkesskade.skadetidspunkt)), + obj('Antall perioder', yrkesskade.perioder?.length), + ]), + }) + data.push(mapYrkesskadeKriterier()) + } +} + const mapBrregstub = (bestillingData, data) => { const brregstubKriterier = bestillingData.brregstub @@ -2431,6 +2456,7 @@ export function mapBestillingData(bestillingData, bestillingsinformasjon, firstI mapPensjon(bestillingData, data, navEnheter) mapArena(bestillingData, data) mapSykemelding(bestillingData, data) + mapYrkesskader(bestillingData, data) mapBrregstub(bestillingData, data) mapInst(bestillingData, data) mapKrr(bestillingData, data) diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Sykdom.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Sykdom.tsx index 3575e039409..7ce326579ab 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Sykdom.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Sykdom.tsx @@ -4,17 +4,18 @@ import { harValgtAttributt } from '@/components/ui/form/formUtils' import { sykdomAttributt } from '@/components/fagsystem/sykdom/form/Form' import { useContext } from 'react' import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' +import { initialYrkesskade } from '@/components/fagsystem/yrkesskader/initialValues' +import { yrkesskaderAttributt } from '@/components/fagsystem/yrkesskader/form/Form' export const SykdomPanel = ({ stateModifier, formValues }: any) => { const sm = stateModifier(SykdomPanel.initialValues) const opts = useContext(BestillingsveilederContext) - const harGyldigSykemeldingBestilling = opts?.tidligereBestillinger?.some( - (bestilling) => - bestilling.status?.some( - (status) => - status.id === 'SYKEMELDING' && status.statuser?.some((item) => item?.melding === 'OK'), - ), + const harGyldigSykemeldingBestilling = opts?.tidligereBestillinger?.some((bestilling) => + bestilling.status?.some( + (status) => + status.id === 'SYKEMELDING' && status.statuser?.some((item) => item?.melding === 'OK'), + ), ) return ( @@ -24,7 +25,7 @@ export const SykdomPanel = ({ stateModifier, formValues }: any) => { checkAttributeArray={() => sm.batchAdd(harGyldigSykemeldingBestilling ? ['sykemelding'] : [])} uncheckAttributeArray={sm.batchRemove} iconType="sykdom" - startOpen={harValgtAttributt(formValues, [sykdomAttributt])} + startOpen={harValgtAttributt(formValues, [sykdomAttributt, yrkesskaderAttributt])} > { disabled={harGyldigSykemeldingBestilling} title={harGyldigSykemeldingBestilling ? 'Personen har allerede sykemelding' : null} /> + ) } -SykdomPanel.heading = 'Sykdom' +SykdomPanel.heading = 'Sykdom og skade' SykdomPanel.initialValues = ({ set, del, has }: any) => ({ sykemelding: { @@ -56,4 +58,14 @@ SykdomPanel.initialValues = ({ set, del, has }: any) => ({ del('sykemelding') }, }, + yrkesskader: { + label: 'Har yrkesskader', + checked: has('yrkesskader'), + add() { + set('yrkesskader', [initialYrkesskade]) + }, + remove() { + del('yrkesskader') + }, + }, }) diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/DollyValidation.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/DollyValidation.tsx index 9fad3f3d878..e719937fb4b 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/DollyValidation.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/DollyValidation.tsx @@ -22,6 +22,7 @@ import { MiljoVelger } from '@/components/miljoVelger/MiljoVelger' import { MalForm } from '@/components/bestillingsveileder/stegVelger/steg/steg3/MalForm' import { VelgGruppe } from '@/components/bestillingsveileder/stegVelger/steg/steg3/VelgGruppe' import { SkattekortForm } from '@/components/fagsystem/skattekort/form/Form' +import { YrkesskaderForm } from '@/components/fagsystem/yrkesskader/form/Form' export const DollyValidation = Yup.object({ ...PdlfForm.validation, @@ -33,6 +34,7 @@ export const DollyValidation = Yup.object({ ...InntektsmeldingForm.validation, ...SkattekortForm.validation, ...SykdomForm.validation, + ...YrkesskaderForm.validation, ...BrregstubForm.validation, ...InstForm.validation, ...KrrstubForm.validation, diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx index b742fc3c344..7576fcea519 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx @@ -27,6 +27,7 @@ import { useFormContext } from 'react-hook-form' import { SkattekortForm } from '@/components/fagsystem/skattekort/form/Form' import { PensjonsavtaleForm } from '@/components/fagsystem/pensjonsavtale/form/Form' import { AfpOffentligForm } from '@/components/fagsystem/afpOffentlig/form/Form' +import { YrkesskaderForm } from '@/components/fagsystem/yrkesskader/form/Form' const gruppeNavn = (gruppe) => {gruppe.navn} @@ -81,6 +82,7 @@ export const Steg2 = () => { + diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/utils.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/utils.tsx index 7cab3240fab..cc018c30744 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/utils.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/utils.tsx @@ -73,6 +73,7 @@ export const rootPaths = [ 'dokarkiv', 'medl', 'sykemelding', + 'yrkesskader', 'organisasjon', 'skattekort', ] diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektsmelding/form/partials/orgnrToogle.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektsmelding/form/partials/orgnrToogle.tsx index d4ec46351d6..83590fb941f 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektsmelding/form/partials/orgnrToogle.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektsmelding/form/partials/orgnrToogle.tsx @@ -12,9 +12,14 @@ import { ORGANISASJONSTYPE_TOGGLE } from '@/components/fagsystem/inntektstub/for interface OrgnrToggleProps { path: string formMethods: UseFormReturn + label?: string } -export const OrgnrToggle = ({ path, formMethods }: OrgnrToggleProps) => { +export const OrgnrToggle = ({ + path, + formMethods, + label = 'Arbeidsgiver (orgnr)', +}: OrgnrToggleProps) => { const [inputType, setInputType] = useState( sessionStorage.getItem(ORGANISASJONSTYPE_TOGGLE) || inputValg.fraFellesListe, ) @@ -40,7 +45,7 @@ export const OrgnrToggle = ({ path, formMethods }: OrgnrToggleProps) => { {inputType === inputValg.fraFellesListe && ( @@ -48,7 +53,7 @@ export const OrgnrToggle = ({ path, formMethods }: OrgnrToggleProps) => { {inputType === inputValg.fraEgenListe && ( { /> )} {inputType === inputValg.skrivSelv && ( - + )} ) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/YrkesskaderTypes.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/YrkesskaderTypes.tsx new file mode 100644 index 00000000000..cf12854661a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/YrkesskaderTypes.tsx @@ -0,0 +1,21 @@ +export type YrkesskadePeriodeTypes = { + fra: string + til: string +} + +export type YrkesskadeTypes = { + rolletype: string + innmelderrolle: string + innmelderIdentifikator: string + paaVegneAv: string + klassifisering?: string + tidstype?: string + skadetidspunkt?: string + perioder: Array + referanse?: string + ferdigstillSak?: string +} + +export type YrkesskaderTypes = { + yrkesskader: Array +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/Form.tsx new file mode 100644 index 00000000000..9bf93216568 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/Form.tsx @@ -0,0 +1,213 @@ +import { useFormContext } from 'react-hook-form' +import React, { useContext } from 'react' +import { Vis } from '@/components/bestillingsveileder/VisAttributt' +import Panel from '@/components/ui/panel/Panel' +import { erForsteEllerTest, panelError } from '@/components/ui/form/formUtils' +import { + initialYrkesskade, + initialYrkesskadePeriode, +} from '@/components/fagsystem/yrkesskader/initialValues' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { FormDollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormDateTimepicker } from '@/components/ui/form/inputs/timepicker/Timepicker' +import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import StyledAlert from '@/components/ui/alert/StyledAlert' +import { validation } from '@/components/fagsystem/yrkesskader/form/validation' +import { useYrkesskadeKodeverk } from '@/utils/hooks/useYrkesskade' +import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' +import { YrkesskadeTypes } from '@/components/fagsystem/yrkesskader/YrkesskaderTypes' + +export const yrkesskaderAttributt = 'yrkesskader' + +export const YrkesskaderForm = () => { + const formMethods = useFormContext() + const opts: any = useContext(BestillingsveilederContext) + + const handleChangeTidstype = (value: any, path: string) => { + formMethods.setValue(`${path}.tidstype`, value?.value || null) + formMethods.setValue(`${path}.skadetidspunkt`, null) + if (value?.value === 'periode') { + formMethods.setValue(`${path}.perioder`, [initialYrkesskadePeriode]) + } else { + formMethods.setValue(`${path}.perioder`, null) + } + formMethods.trigger(path) + } + + const getVergemaal = () => { + const vergemaalForm = formMethods.watch('pdldata.person.vergemaal') + const vergemaalImport = opts?.importPersoner?.flatMap( + (person: any) => person?.data?.hentPerson?.vergemaalEllerFremtidsfullmakt, + ) + const vergemaalLeggTil = + opts?.personFoerLeggTil?.pdl?.hentPerson?.vergemaalEllerFremtidsfullmakt || + opts?.personFoerLeggTil?.pdlforvalter?.person?.vergemaal + + return vergemaalForm || vergemaalImport || vergemaalLeggTil + } + + const getForelder = () => { + const forelderForm = formMethods + .watch('pdldata.person.forelderBarnRelasjon') + ?.filter((relasjon: any) => relasjon?.relatertPersonsRolle === 'FORELDER') + const forelderImport = opts?.importPersoner + ?.flatMap((person: any) => person?.data?.hentPerson?.forelderBarnRelasjon) + ?.filter((relasjon: any) => relasjon?.minRolleForPerson === 'BARN') + const forelderLeggTil = ( + opts?.personFoerLeggTil?.pdl?.hentPerson?.forelderBarnRelasjon || + opts?.personFoerLeggTil?.pdlforvalter?.person?.forelderBarnRelasjon + )?.filter((relasjon: any) => relasjon?.minRolleForPerson === 'BARN') + + return forelderForm || forelderImport || forelderLeggTil + } + + const manglerVergeEllerForelder = () => { + const vergemaal = getVergemaal() + const forelder = getForelder() + const harInnmelderrolleVergeOgForesatt = formMethods + .watch('yrkesskader') + ?.some((yrkesskade: YrkesskadeTypes) => yrkesskade?.innmelderrolle === 'vergeOgForesatt') + + return ( + harInnmelderrolleVergeOgForesatt && + (!vergemaal || vergemaal?.length < 1) && + (!forelder || forelder?.length < 1) + ) + } + + const { kodeverkData: kodeverkRolletype } = useYrkesskadeKodeverk('ROLLETYPE') + const { kodeverkData: kodeverkInnmelderrolletype } = useYrkesskadeKodeverk('INNMELDERROLLETYPE') + + const rolletypeOptions = + kodeverkRolletype && + Object.values(kodeverkRolletype)?.map((option: any) => ({ + value: option?.kode, + label: option?.verdi, + })) + + const innmelderrolletypeOptions = + kodeverkInnmelderrolletype && + Object.values(kodeverkInnmelderrolletype)?.map((option: any) => ({ + value: option?.kode, + label: option?.verdi, + })) + + const hjelpetekst = ( + <> +

+ Det er kun rolletyper som blir rutet til KOMPYS som vil få opprettet en synlig sak. Saker + som går til GOSYS må manuelt behandles før de kan dukke opp i Infotrygd og deretter dukke + opp i saksliste. +

+

Foreløpige kriterier for ruting til Kompys er:

+
    +
  • Det må være bagatellmessige skader.
  • +
  • Bruker kan ikke ha en eksisterende sak.
  • +
  • + Bruker kan ikke ha en potensiell innkommende sak/oppgave/behandling (sjekkes i Joark). +
  • +
  • + Rolletype er elevEllerStudent, vernepliktigIFoerstegangstjenesten eller + vernepliktigIRepetisjonstjeneste (utvides stadig støtte for flere rolletyper). +
  • +
+ + ) + + return ( + + + <> + {manglerVergeEllerForelder() && ( + + Person må ha verge, eller forelder dersom alder er 5-17 år. Dette kan legges til ved å + huke av for "Vergemål" eller "Har barn/foreldre" på forrige side. + + )} + + {(path: string, idx: number) => { + return ( + + + + + + + handleChangeTidstype(value, path)} + /> + {formMethods.watch(`${path}.tidstype`) === 'tidspunkt' && ( + + )} + {formMethods.watch(`${path}.tidstype`) === 'periode' && ( + + {(periodePath: string, periodeIdx: number) => { + return ( + + + + + ) + }} + + )} + + ) + }} + + + + + ) +} + +YrkesskaderForm.validation = validation diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/validation.tsx new file mode 100644 index 00000000000..346f9196c40 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/form/validation.tsx @@ -0,0 +1,31 @@ +import { ifPresent, requiredString } from '@/utils/YupValidations' +import * as Yup from 'yup' + +export const validation = { + yrkesskader: ifPresent( + '$yrkesskader', + Yup.array().of( + Yup.object({ + rolletype: Yup.string().nullable(), + innmelderrolle: requiredString, + klassifisering: Yup.string().nullable(), + referanse: Yup.string().nullable(), + ferdigstillSak: Yup.string().nullable(), + tidstype: Yup.string().nullable(), + skadetidspunkt: Yup.mixed().when('tidstype', { + is: (tidstype: string) => tidstype === 'tidspunkt', + then: () => requiredString, + otherwise: () => Yup.mixed().notRequired(), + }), + perioder: Yup.array() + .of( + Yup.object({ + fra: ifPresent('$fra', requiredString), + til: ifPresent('$til', requiredString), + }), + ) + .nullable(), + }), + ), + ), +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/initialValues.tsx new file mode 100644 index 00000000000..78bb217364c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/initialValues.tsx @@ -0,0 +1,15 @@ +export const initialYrkesskadePeriode = { + fra: null, + til: null, +} + +export const initialYrkesskade = { + rolletype: 'arbeidstaker', + innmelderrolle: 'virksomhetsrepresentant', + klassifisering: 'MANUELL', + tidstype: null, + skadetidspunkt: null, + perioder: null, + referanse: null, + ferdigstillSak: null, +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/visning/YrkesskaderVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/visning/YrkesskaderVisning.tsx new file mode 100644 index 00000000000..c127eccdf20 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/yrkesskader/visning/YrkesskaderVisning.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import { Alert } from '@navikt/ds-react' +import Loading from '@/components/ui/loading/Loading' +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { formatDateTime, showLabel, formatDate } from '@/utils/DataFormatter' +import { useYrkesskadeKodeverk } from '@/utils/hooks/useYrkesskade' +import { + YrkesskadePeriodeTypes, + YrkesskaderTypes, + YrkesskadeTypes, +} from '@/components/fagsystem/yrkesskader/YrkesskaderTypes' + +type YrkesskaderVisningProps = { + data: YrkesskaderTypes + loading: boolean +} + +export const sjekkManglerYrkesskadeData = (yrkesskadeData: any) => { + return !yrkesskadeData || yrkesskadeData?.length < 1 +} + +const showKodeverkLabel = (kodeverkData: any, value: string) => { + if (!kodeverkData) { + return value + } + if (!value) { + return null + } + return kodeverkData[value]?.verdi +} + +export const YrkesskaderVisning = ({ data, loading }: YrkesskaderVisningProps) => { + if (loading) { + return + } + + if (!data) { + return null + } + + const manglerFagsystemData = sjekkManglerYrkesskadeData(data) + + const { kodeverkData: kodeverkDataRolletype } = useYrkesskadeKodeverk('ROLLETYPE') + const { kodeverkData: kodeverkDataInnmelderrolletype } = + useYrkesskadeKodeverk('INNMELDERROLLETYPE') + + return ( +
+ + {manglerFagsystemData ? ( + + Fant ikke yrkesskade-data på person + + ) : ( +
+ + {(yrkesskade: { data: YrkesskadeTypes }, idx: number) => { + return ( + + + + + + + + + + + {yrkesskade?.data?.perioder?.length > 0 && ( + + {(periode: YrkesskadePeriodeTypes, periodeIdx: number) => ( + + + + + )} + + )} + + ) + }} + +
+ )} +
+ ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx index f8b1a54667c..432e6e6c9d3 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx @@ -78,6 +78,7 @@ const getValgteAttributter = (values) => { 'pensjonforvalter.afpOffentlig', 'arenaforvalter', 'sykemelding', + 'yrkesskader', 'brregstub', 'instdata', 'krrstub', diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx index f7ab1421258..107ede10771 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx @@ -67,6 +67,7 @@ import { harTpBestilling, harUdistubBestilling, harUforetrygdBestilling, + harYrkesskaderBestilling, } from '@/utils/SjekkBestillingFagsystem' import { AlderspensjonVisning, @@ -99,6 +100,10 @@ import { SkattekortVisning } from '@/components/fagsystem/skattekort/visning/Vis import { PensjonsavtaleVisning } from '@/components/fagsystem/pensjonsavtale/visning/PensjonsavtaleVisning' import { useMockOppsett } from '@/utils/hooks/usePensjon' import { AfpOffentligVisning } from '@/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning' +import { + sjekkManglerYrkesskadeData, + YrkesskaderVisning, +} from '@/components/fagsystem/yrkesskader/visning/YrkesskaderVisning' const getIdenttype = (ident) => { if (parseInt(ident.charAt(0)) > 3) { @@ -246,6 +251,12 @@ export default ({ const sykemeldingBestilling = SykemeldingVisning.filterValues(bestillingListe, ident.ident) + const { loading: loadingYrkesskadeData, data: yrkesskadeData } = useTransaksjonIdData( + ident.ident, + 'YRKESSKADE', + harYrkesskaderBestilling(bestillingerFagsystemer), + ) + const { loading: loadingInntektsmeldingData, data: inntektsmeldingData } = useTransaksjonIdData( ident.ident, 'INNTKMELD', @@ -312,6 +323,9 @@ export default ({ ) { return true } + if (yrkesskadeData && sjekkManglerYrkesskadeData(yrkesskadeData)) { + return true + } return false } @@ -539,6 +553,7 @@ export default ({ harSykemeldingBestilling(bestillingerFagsystemer) ? sykemeldingBestilling : null } /> + { return sykemelding } +export const harYrkesskaderBestilling = (bestillingerFagsystemer) => { + let yrkesskader = false + bestillingerFagsystemer?.forEach((i) => { + if (i?.yrkesskader) { + yrkesskader = true + } + }) + return yrkesskader +} + export const harInntektsmeldingBestilling = (bestillingerFagsystemer) => { let inntektsmelding = false bestillingerFagsystemer?.forEach((i) => { diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useYrkesskade.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useYrkesskade.tsx new file mode 100644 index 00000000000..4e81a4663d5 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useYrkesskade.tsx @@ -0,0 +1,15 @@ +import useSWR from 'swr' +import { fetcher } from '@/api' + +const baseUrl = '/testnav-yrkesskade-proxy' +const getKodeverkUrl = (kodeverktype) => `${baseUrl}/api/v1/kodeverk/${kodeverktype}` + +export const useYrkesskadeKodeverk = (kodeverktype) => { + const { data, isLoading, error } = useSWR(getKodeverkUrl(kodeverktype), fetcher) + + return { + kodeverkData: data?.kodeverk, + loading: isLoading, + error: error, + } +} diff --git a/apps/dolly-frontend/src/main/resources/application-local.yml b/apps/dolly-frontend/src/main/resources/application-local.yml index f60d5b79093..2ce7060a052 100644 --- a/apps/dolly-frontend/src/main/resources/application-local.yml +++ b/apps/dolly-frontend/src/main/resources/application-local.yml @@ -81,4 +81,6 @@ consumers: testnav-levende-arbeidsforhold-ansettelse: url: https://testnav-levende-arbeidsforhold-ansettelse.intern.dev.nav.no testnav-levende-arbeidsforhold-scheduler: - url: https://testnav-levende-arbeidsforhold-scheduler.intern.dev.nav.no \ No newline at end of file + url: https://testnav-levende-arbeidsforhold-scheduler.intern.dev.nav.no + testnav-yrkesskade-proxy: + url: https://testnav-yrkesskade-proxy.intern.dev.nav.no \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/resources/application.yml b/apps/dolly-frontend/src/main/resources/application.yml index 9a9fd54cbd5..842a8da0a4c 100644 --- a/apps/dolly-frontend/src/main/resources/application.yml +++ b/apps/dolly-frontend/src/main/resources/application.yml @@ -233,6 +233,11 @@ consumers: namespace: dolly name: testnav-levende-arbeidsforhold-scheduler url: http://testnav-levende-arbeidsforhold-scheduler.dolly.svc.cluster.local + testnav-yrkesskade-proxy: + cluster: dev-gcp + namespace: dolly + name: testnav-yrkesskade-proxy + url: https://testnav-yrkesskade-proxy.dolly.svc.cluster.local management: endpoints: