Skip to content

Commit

Permalink
UPDATE: logic for showing data recieved from behandlingskatalog
Browse files Browse the repository at this point in the history
  • Loading branch information
JeremiahUy committed Feb 11, 2025
1 parent a515fd0 commit 37228e4
Showing 1 changed file with 105 additions and 50 deletions.
155 changes: 105 additions & 50 deletions apps/frontend/src/pages/PvkBehovPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CheckmarkCircleFillIcon, EnvelopeClosedIcon } from '@navikt/aksel-icons'
import { EnvelopeClosedIcon } from '@navikt/aksel-icons'
import {
Alert,
BodyLong,
Expand Down Expand Up @@ -58,9 +58,10 @@ export const PvkBehovPage = () => {
useEtterlevelseDokumentasjon(params.id)
const [pvkdokument, setPvkDokument] = usePvkDokument(params.pvkdokumentId)
const [codelistUtils] = CodelistService()
const [profilering, setProfilering] = useState<boolean>(false)
const [automatiskBehandling, setAutomatiskBehandling] = useState<boolean>(false)
const [profilering, setProfilering] = useState<boolean | null>(false)
const [automatiskBehandling, setAutomatiskBehandling] = useState<boolean | null>(false)
const [saerligKategorier, setSaerligKategorier] = useState<boolean>(false)
const [opplysningstyperMangler, setOpplysningstyperMangler] = useState<boolean>(false)
const [checkedYttligereEgenskaper, setCheckedYttligereEgenskaper] = useState<string[]>([])
const [tilTemaOversikt, setTilTemaOversikt] = useState<boolean>(false)
const [tilPvkDokument, setTilPvkDokument] = useState<boolean>(false)
Expand Down Expand Up @@ -99,17 +100,33 @@ export const PvkBehovPage = () => {
useEffect(() => {
if (etterlevelseDokumentasjon && etterlevelseDokumentasjon.behandlinger) {
const alleOpplysningstyper: IPolicy[] = []
const alleProfilering: any[] = []
const alleAutomatiskBehandling: any[] = []
etterlevelseDokumentasjon.behandlinger.forEach((behandling) => {
alleOpplysningstyper.push(...behandling.policies)

if (behandling.profilering) {
setProfilering(true)
}
if (behandling.automatiskBehandling) {
setAutomatiskBehandling(true)
if (behandling.policies.length === 0) {
setOpplysningstyperMangler(true)
}
alleOpplysningstyper.push(...behandling.policies)
alleProfilering.push(behandling.profilering)
alleAutomatiskBehandling.push(behandling.automatiskBehandling)
})

if (alleProfilering.includes(true)) {
setProfilering(true)
} else if (alleProfilering.every((v) => v === false)) {
setProfilering(false)
} else if (alleProfilering.includes(null)) {
setProfilering(null)
}

if (alleAutomatiskBehandling.includes(true)) {
setAutomatiskBehandling(true)
} else if (alleAutomatiskBehandling.every((v) => v === false)) {
setAutomatiskBehandling(false)
} else if (alleAutomatiskBehandling.includes(null)) {
setAutomatiskBehandling(null)
}

const saerligKategorierOppsumert: IExternalCode[] = uniqBy(
alleOpplysningstyper.flatMap((opplysningstyper) => opplysningstyper.sensitivity),
'code'
Expand Down Expand Up @@ -219,13 +236,88 @@ export const PvkBehovPage = () => {
pvkdokument &&
(etterlevelseDokumentasjon.hasCurrentUserAccess || user.isAdmin()) && (
<div className="flex w-full">
<div className="pr-4 flex flex-1 flex-col gap-4 col-span-8">
<div className="pt-6 pr-4 flex flex-1 flex-col gap-4 col-span-8">
<BodyLong>
En PVK skal gjennomføres når vi ønsker å starte eller endre en behandling av
personopplysninger som sannsynligvis vil medføre høy risiko for den registrertes
rettigheter og friheter.
</BodyLong>

<Heading level="2" size="small" className="mb-5">
Egenskaper som gjelder for behandlingene deres
</Heading>

{etterlevelseDokumentasjon.behandlinger && (
<Alert variant="info">
Dere har ikke ennå lagt til behandlinger under Dokumentegenskaper (åpner i en ny
fane). Det anbefales at dere gjør dette før dere vurderer behov for PVK.
</Alert>
)}

{etterlevelseDokumentasjon && (
<BodyShort className="mt-5">
Disse egenskapene blir enklere å vurdere hvis{' '}
<Link
href={
'/dokumentasjon/' +
etterlevelseDokumentasjon.id +
'/behandlingens-livslop/' +
(behandlingensLivslop?.id ? behandlingensLivslop.id : 'ny')
}
target="_blank"
rel="noopener noreferrer"
aria-label="redigere etterlevelsesdokumentasjon"
className="inline"
>
dere har tegnet behandlingens livsløp (åpner i en ny fane).
</Link>
</BodyShort>
)}

<List
title="- Følgende egenskaper er hentet fra Behandlingskatalogen:"
className="py-5"
>
{profilering !== null && (
<List.Item>
<strong>Det {profilering ? 'gjelder' : 'gjelder ikke'}</strong> profilering
</List.Item>
)}

{automatiskBehandling !== null && (
<List.Item>
<strong>Det {automatiskBehandling ? 'gjelder' : 'gjelder ikke'}</strong>{' '}
automatisert behandling
</List.Item>
)}

{!opplysningstyperMangler && (
<List.Item>
<strong>Det {saerligKategorier ? 'gjelder' : 'gjelder ikke'}</strong> særlige
kategorier av personopplysninger
</List.Item>
)}
</List>

{(profilering === null ||
automatiskBehandling === null ||
opplysningstyperMangler) && (
<Alert variant="warning">
Dere har ikke vurdert følgende egenskaper i Behandlingskatalogen:
<List>
{profilering === null && <List.Item>Profilering</List.Item>}
{automatiskBehandling === null && (
<List.Item>Automatisert behandling</List.Item>
)}
{opplysningstyperMangler && (
<List.Item>Særlige kategorier av personopplysninger</List.Item>
)}
</List>
behandling Dere burde oppdatere behandlingene deres før dere bestemmer behov for
PVK.
</Alert>
)}

<Formik
validateOnChange={false}
validateOnBlur={false}
Expand All @@ -235,11 +327,11 @@ export const PvkBehovPage = () => {
>
{({ values, submitForm }) => (
<Form>
<div className="mt-3" id="ytterlige-egenskaper">
<div id="ytterlige-egenskaper">
<FieldArray name="ytterligereEgenskaper">
{(fieldArrayRenderProps: FieldArrayRenderProps) => (
<CheckboxGroup
legend="Les igjennom og velg ytterligere egenskaper som gjelder for behandlingene deres."
legend="Les igjennom og velg eventuelt øvrige egenskaper som gjelder for behandlingene deres:"
value={checkedYttligereEgenskaper}
onChange={(selected: string[]) => {
setCheckedYttligereEgenskaper(selected)
Expand All @@ -255,24 +347,6 @@ export const PvkBehovPage = () => {
)
}}
>
<List>
{profilering && (
<List.Item icon={<CheckmarkCircleFillIcon title="checked" />}>
Profilering (hentet fra Behandlingskatalogen)
</List.Item>
)}
{automatiskBehandling && (
<List.Item icon={<CheckmarkCircleFillIcon title="checked" />}>
automatisert behandling (hentet fra Behandlingskatalogen)
</List.Item>
)}
{saerligKategorier && (
<List.Item icon={<CheckmarkCircleFillIcon title="checked" />}>
særlige kategorier av personopplysninger (hentet fra
Behandlingskatalogen)
</List.Item>
)}
</List>
{ytterligereEgenskaper.map((egenskap) => (
<Checkbox key={egenskap.code} value={egenskap.code}>
{egenskap.shortName}
Expand All @@ -281,25 +355,6 @@ export const PvkBehovPage = () => {
</CheckboxGroup>
)}
</FieldArray>
{etterlevelseDokumentasjon && (
<BodyShort className="mt-5">
Disse egenskapene blir enklere å vurdere hvis{' '}
<Link
href={
'/dokumentasjon/' +
etterlevelseDokumentasjon.id +
'/behandlingens-livslop/' +
(behandlingensLivslop?.id ? behandlingensLivslop.id : 'ny')
}
target="_blank"
rel="noopener noreferrer"
aria-label="redigere etterlevelsesdokumentasjon"
className="inline"
>
dere har tegnet behandlingens livsløp (åpner i en ny fane).
</Link>
</BodyShort>
)}
</div>

{(checkedYttligereEgenskaper.length > 0 ||
Expand Down

0 comments on commit 37228e4

Please sign in to comment.