Skip to content

Commit

Permalink
Merge pull request #3285 from navikt/feature/sykemelding-miljo-visning
Browse files Browse the repository at this point in the history
Feature/sykemelding miljo visning
  • Loading branch information
betsytraran authored Sep 21, 2023
2 parents 740a79b + 0b22969 commit ddb7439
Show file tree
Hide file tree
Showing 12 changed files with 334 additions and 197 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@ import { Kategori } from '@/components/ui/form/kategori/Kategori'
import { SelectOptionsManager as Options } from '@/service/SelectOptions'
import { OrganisasjonMedArbeidsforholdSelect } from '@/components/organisasjonSelect'
import { SelectOptionsDiagnoser } from './SelectOptionsDiagnoser'
import HelsepersonellSelect from './HelsepersonellSelect'
import { ArbeidKodeverk } from '@/config/kodeverk'
import {
Arbeidsgiver,
Helsepersonell,
SykemeldingForm,
} from '@/components/fagsystem/sykdom/SykemeldingTypes'
import { useKodeverk } from '@/utils/hooks/useKodeverk'
import { getRandomValue } from '@/components/fagsystem/utils'
import { useEffect } from 'react'
import * as _ from 'lodash-es'
import { useHelsepersonellOptions } from '@/utils/hooks/useSelectOptions'

type DiagnoseSelect = {
diagnoseNavn: string
Expand Down Expand Up @@ -68,6 +72,28 @@ export const DetaljertSykemelding = ({ formikBag }: SykemeldingForm) => {
})
}

const { kodeverk: yrker } = useKodeverk(ArbeidKodeverk.Yrker)
const randomYrke = getRandomValue(yrker?.koder)

useEffect(() => {
const yrkePath = 'sykemelding.detaljertSykemelding.arbeidsgiver.yrkesbetegnelse'
if (_.get(formikBag.values, yrkePath) === '') {
formikBag.setFieldValue(yrkePath, randomYrke?.value || '')
}
}, [randomYrke])

const { helsepersonellOptions, helsepersonellError } = useHelsepersonellOptions()
const randomHelsepersonell = getRandomValue(helsepersonellOptions)

useEffect(() => {
if (
_.get(formikBag.values, 'sykemelding.detaljertSykemelding.helsepersonell.ident') === '' &&
randomHelsepersonell
) {
handleLegeChange(randomHelsepersonell)
}
}, [randomHelsepersonell])

return (
<div className="flexbox--wrap">
<div className="flexbox--flex-wrap">
Expand Down Expand Up @@ -114,10 +140,14 @@ export const DetaljertSykemelding = ({ formikBag }: SykemeldingForm) => {
)}
</FormikDollyFieldArray>
<Kategori title="Helsepersonell" vis="sykemelding">
<HelsepersonellSelect
<FormikSelect
name="sykemelding.detaljertSykemelding.helsepersonell.ident"
label="Helsepersonell"
options={helsepersonellOptions}
size="xxxlarge"
afterChange={(v: Helsepersonell) => handleLegeChange(v)}
isClearable={false}
feil={helsepersonellError}
/>
</Kategori>
<Kategori title="Arbeidsgiver" vis="sykemelding">
Expand Down Expand Up @@ -177,17 +207,17 @@ export const DetaljertSykemelding = ({ formikBag }: SykemeldingForm) => {
<FormikTextInput
name="sykemelding.detaljertSykemelding.detaljer.tiltakNav"
label="Tiltak fra Nav"
size="large"
size="xlarge"
/>
<FormikTextInput
name="sykemelding.detaljertSykemelding.detaljer.tiltakArbeidsplass"
label="Tiltak på arbeidsplass"
size="large"
size="xlarge"
/>
<FormikTextInput
name="sykemelding.detaljertSykemelding.detaljer.beskrivHensynArbeidsplassen"
label="Hensyn på arbeidsplass"
size="large"
size="xlarge"
/>
<FormikCheckbox
name="sykemelding.detaljertSykemelding.detaljer.arbeidsforEtterEndtPeriode"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ import { SyntSykemelding } from './SyntSykemelding'
import { DetaljertSykemelding } from './DetaljertSykemelding'
import { Diagnose, SykemeldingForm } from '@/components/fagsystem/sykdom/SykemeldingTypes'
import { ToggleGroup } from '@navikt/ds-react'
import { addDays } from 'date-fns'
import { getRandomValue } from '@/components/fagsystem/utils'
import { SelectOptionsDiagnoser } from '@/components/fagsystem/sykdom/form/partials/SelectOptionsDiagnoser'

const randomDiagnose = getRandomValue(SelectOptionsDiagnoser())

const initialValuesSyntSykemelding = {
syntSykemelding: {
Expand All @@ -28,9 +33,9 @@ const initialValuesDetaljertSykemelding = {
tiltakNav: '',
},
hovedDiagnose: {
diagnose: '',
diagnosekode: '',
system: '',
diagnose: randomDiagnose?.diagnoseNavn || '',
diagnosekode: randomDiagnose?.value || '',
system: randomDiagnose ? '2.16.578.1.12.4.1.1.7170' : '',
},
helsepersonell: {
etternavn: '',
Expand Down Expand Up @@ -59,8 +64,8 @@ const initialValuesDetaljertSykemelding = {
grad: 0,
reisetilskudd: false,
},
fom: '',
tom: '',
fom: addDays(new Date(), -7),
tom: addDays(new Date(), -1),
},
],
startDato: new Date(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,105 @@ import { SyntSykemelding } from './partials/SyntSykemelding'
import { DetaljertSykemelding } from './partials/DetaljertSykemelding'
import { Sykemelding, SykemeldingDetaljert, SykemeldingSynt } from '../SykemeldingTypes'
import { erGyldig } from '@/components/transaksjonid/GyldigeBestillinger'
import { Alert } from '@navikt/ds-react'
import React from 'react'
import { MiljoTabs } from '@/components/ui/miljoTabs/MiljoTabs'
import { useBestilteMiljoer } from '@/utils/hooks/useBestilling'
import Loading from '@/components/ui/loading/Loading'

export const SykemeldingVisning = ({ data }: Sykemelding) => {
// Viser foreløpig bestillingsdata
if (!data || data.length < 1) {
export const sjekkManglerSykemeldingData = (sykemeldingData) => {
return (
!sykemeldingData ||
sykemeldingData?.length < 1 ||
sykemeldingData?.every((miljoData) => !miljoData.data)
)
}

export const sjekkManglerSykemeldingBestilling = (sykemeldingBestilling) => {
return !sykemeldingBestilling || sykemeldingBestilling?.length < 1
}

const VisningAvBestilling = ({ bestillinger }) => {
if (!bestillinger) {
return null
}

return bestillinger?.map((bestilling: SykemeldingSynt | SykemeldingDetaljert, idx: number) => {
if (!bestilling.erGjenopprettet) {
const syntSykemelding = _.get(bestilling, 'data.sykemelding.syntSykemelding')
const detaljertSykemelding = _.get(bestilling, 'data.sykemelding.detaljertSykemelding')

return syntSykemelding ? (
<SyntSykemelding sykemelding={syntSykemelding} idx={idx} key={idx} />
) : detaljertSykemelding ? (
<DetaljertSykemelding sykemelding={detaljertSykemelding} idx={idx} key={idx} />
) : null
}
})
}

const VisningAvTransaksjonsId = ({ data }) => {
if (!data) {
return null
}

const syntSykemelding = _.get(data, 'syntSykemeldingRequest')
const detaljertSykemelding = _.get(data, 'detaljertSykemeldingRequest')

return syntSykemelding ? (
<SyntSykemelding sykemelding={syntSykemelding} />
) : detaljertSykemelding ? (
<DetaljertSykemelding sykemelding={detaljertSykemelding} />
) : null
}

export const SykemeldingVisning = ({
data,
loading,
bestillingIdListe,
tilgjengeligMiljoe,
bestillinger,
}: Sykemelding) => {
const { bestilteMiljoer } = useBestilteMiljoer(bestillingIdListe, 'SYKEMELDING')

if (loading) {
return <Loading label="Laster sykemelding-data" />
}

if (!data && !bestillinger) {
return null
}

const manglerFagsystemData =
sjekkManglerSykemeldingData(data) && sjekkManglerSykemeldingBestilling(bestillinger)

const miljoerMedData = data?.map((miljoData) => miljoData.data && miljoData.miljo)
const errorMiljoer = bestilteMiljoer?.filter((miljo) => !miljoerMedData?.includes(miljo))

const forsteMiljo = data?.find((miljoData) => miljoData?.data)?.miljo

const filteredData =
tilgjengeligMiljoe && data?.filter((item) => item.miljo === tilgjengeligMiljoe)

return (
<div>
<SubOverskrift label="Sykemelding" iconKind="sykdom" />
{data.map((bestilling: SykemeldingSynt | SykemeldingDetaljert, idx: number) => {
if (!bestilling.erGjenopprettet) {
const syntSykemelding = _.get(bestilling, 'data.sykemelding.syntSykemelding')
const detaljertSykemelding = _.get(bestilling, 'data.sykemelding.detaljertSykemelding')

return syntSykemelding ? (
<SyntSykemelding sykemelding={syntSykemelding} idx={idx} key={idx} />
) : detaljertSykemelding ? (
<DetaljertSykemelding sykemelding={detaljertSykemelding} idx={idx} key={idx} />
) : null
}
})}
<SubOverskrift label="Sykemelding" iconKind="sykdom" isWarning={manglerFagsystemData} />
{manglerFagsystemData ? (
<Alert variant={'warning'} size={'small'} inline style={{ marginBottom: '20px' }}>
Fant ikke sykemelding-data på person
</Alert>
) : sjekkManglerSykemeldingData(data) ? (
<VisningAvBestilling bestillinger={bestillinger} />
) : (
<MiljoTabs
bestilteMiljoer={bestilteMiljoer}
errorMiljoer={errorMiljoer}
forsteMiljo={forsteMiljo}
data={filteredData ? filteredData : data}
>
<VisningAvTransaksjonsId />
</MiljoTabs>
)}
</div>
)
}
Expand All @@ -34,6 +111,7 @@ SykemeldingVisning.filterValues = (bestillinger: Array<Sykemelding>, ident: stri
if (!bestillinger) {
return null
}

return bestillinger.filter(
(bestilling: any) =>
bestilling.data.sykemelding && erGyldig(bestilling.id, 'SYKEMELDING', ident),
Expand Down
Loading

0 comments on commit ddb7439

Please sign in to comment.