Skip to content

Commit

Permalink
IS-2588: Add begrunnelse to vurdering
Browse files Browse the repository at this point in the history
  • Loading branch information
vetlesolgaard authored and ingring committed Aug 28, 2024
1 parent 01268e5 commit f22892a
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 45 deletions.
2 changes: 1 addition & 1 deletion mock/isfrisktilarbeid/mockIsfrisktilarbeid.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
VedtakResponseDTO,
} from "../../src/data/frisktilarbeid/frisktilarbeidTypes";
import dayjs from "dayjs";
import { addWeeks } from "@/utils/datoUtils";
import { addWeeks } from "../../src/utils/datoUtils";

let vedtak: VedtakResponseDTO[] = [];

Expand Down
1 change: 1 addition & 0 deletions src/data/senoppfolging/senOppfolgingTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,5 @@ export enum SenOppfolgingVurderingType {

export interface SenOppfolgingVurderingRequestDTO {
type: SenOppfolgingVurderingType;
begrunnelse: string;
}
33 changes: 33 additions & 0 deletions src/sider/senoppfolging/KandidatSvar.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { SenOppfolgingFormResponseDTOV2 } from "@/data/senoppfolging/senOppfolgingTypes";
import { tilLesbarDatoMedArUtenManedNavn } from "@/utils/datoUtils";
import { BodyShort, Box, Heading, Label } from "@navikt/ds-react";
import React from "react";

const texts = {
heading: "Sykmeldtes svar",
};

interface KandidatSvarProps {
svar: SenOppfolgingFormResponseDTOV2;
}

export function KandidatSvar({ svar }: KandidatSvarProps) {
const svardato = svar && tilLesbarDatoMedArUtenManedNavn(svar.createdAt);
return (
<Box
background="surface-default"
padding="6"
className="flex flex-col gap-4 mb-2"
>
<Heading size="medium">{texts.heading}</Heading>
<BodyShort size="small">Den sykmeldte svarte {svardato}.</BodyShort>
{svar &&
svar?.questionResponses.map((response, index) => (
<div key={index}>
<Label size="small">{response.questionText}</Label>
<BodyShort size="small">{response.answerText}</BodyShort>
</div>
))}
</Box>
);
}
48 changes: 5 additions & 43 deletions src/sider/senoppfolging/SenOppfolging.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
import React, { ReactElement } from "react";
import { BodyShort, Box, Heading, Label, List } from "@navikt/ds-react";
import { BodyShort, Box } from "@navikt/ds-react";
import { useSenOppfolgingSvarQuery } from "@/data/senoppfolging/useSenOppfolgingSvarQuery";
import { tilLesbarDatoMedArUtenManedNavn } from "@/utils/datoUtils";
import { useSenOppfolgingKandidatQuery } from "@/data/senoppfolging/useSenOppfolgingKandidatQuery";
import { VurderSenOppfolging } from "@/sider/senoppfolging/VurderSenOppfolging";
import { KandidatSvar } from "@/sider/senoppfolging/KandidatSvar";
import { Vurdering } from "@/sider/senoppfolging/Vurdering";

const texts = {
heading: "Sykmeldtes svar",
oppfolging: "Vurder videre oppfølging",
vurderFolgende: "Basert på svarene kan du vurdere følgende",
rutine: [
"§ 14a-vedtak: Hvis den sykmeldte har svart at han eller hun trenger oppfølging, skal det gjøres et § 14a-vedtak i Arena",
"Dialogmøte: Vurder om det burde kalles inn til et dialogmøte",
"Kontakt bruker: Ta kontakt med den sykmeldte for å avklare behov for videre oppfølging",
"Kontakt arbeidsgiver: Ta kontakt med arbeidsgiver for å avklare muligheter for tilrettelegging",
"Kontakt behandler: Ta kontakt med behandler for å innhente medisinske opplysninger",
"AAP: Vurder om den sykmeldte bør søke om AAP",
],
ikkeVarslet: {
info1:
"Den sykmeldte har ikke mottatt varsel om at det snart er slutt på sykepengene enda.",
Expand All @@ -29,40 +18,13 @@ const texts = {

export default function SenOppfolging(): ReactElement {
const { data: svar } = useSenOppfolgingSvarQuery();
const svardato = svar && tilLesbarDatoMedArUtenManedNavn(svar.createdAt);
const { data: kandidater } = useSenOppfolgingKandidatQuery();
const kandidat = kandidater[0];

return svar ? (
<>
<Box
background="surface-default"
padding="6"
className="flex flex-col gap-4 mb-2"
>
<Heading size="medium">{texts.heading}</Heading>
<BodyShort size="small">Den sykmeldte svarte {svardato}.</BodyShort>
{svar &&
svar?.questionResponses.map((response, index) => (
<div key={index}>
<Label size="small">{response.questionText}</Label>
<BodyShort size="small">{response.answerText}</BodyShort>
</div>
))}
</Box>
<Box
background="surface-default"
padding="6"
className="flex flex-col gap-4 mb-2"
>
<Heading size="medium">{texts.oppfolging}</Heading>
<List as="ul" title={texts.vurderFolgende} size="small">
{texts.rutine.map((text, index) => (
<List.Item key={index}>{text}</List.Item>
))}
</List>
{kandidat && <VurderSenOppfolging kandidat={kandidat} />}
</Box>
<KandidatSvar svar={svar} />
<Vurdering kandidat={kandidat} />
</>
) : (
<Box
Expand Down
4 changes: 3 additions & 1 deletion src/sider/senoppfolging/VurderSenOppfolging.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const texts = {

interface Props {
kandidat: SenOppfolgingKandidatResponseDTO;
begrunnelse: string;
}

const VurdertKandidat = ({
Expand All @@ -45,7 +46,7 @@ const VurdertKandidat = ({
);
};

export const VurderSenOppfolging = ({ kandidat }: Props) => {
export const VurderSenOppfolging = ({ kandidat, begrunnelse }: Props) => {
const vurderKandidat = useVurderSenOppfolgingKandidat(kandidat.uuid);
const isFerdigbehandlet =
kandidat.status === SenOppfolgingStatus.FERDIGBEHANDLET;
Expand All @@ -69,6 +70,7 @@ export const VurderSenOppfolging = ({ kandidat }: Props) => {
onClick={() =>
vurderKandidat.mutate({
type: SenOppfolgingVurderingType.FERDIGBEHANDLET,
begrunnelse: begrunnelse,
})
}
>
Expand Down
46 changes: 46 additions & 0 deletions src/sider/senoppfolging/Vurdering.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Box, Heading, List, Textarea } from "@navikt/ds-react";
import { VurderSenOppfolging } from "@/sider/senoppfolging/VurderSenOppfolging";
import React, { useState } from "react";
import { SenOppfolgingKandidatResponseDTO } from "@/data/senoppfolging/senOppfolgingTypes";

const texts = {
oppfolging: "Vurder videre oppfølging",
vurderFolgende: "Basert på svarene kan du vurdere følgende",
rutine: [
"§ 14a-vedtak: Hvis den sykmeldte har svart at han eller hun trenger oppfølging, skal det gjøres et § 14a-vedtak i Arena",
"Dialogmøte: Vurder om det burde kalles inn til et dialogmøte",
"Kontakt bruker: Ta kontakt med den sykmeldte for å avklare behov for videre oppfølging",
"Kontakt arbeidsgiver: Ta kontakt med arbeidsgiver for å avklare muligheter for tilrettelegging",
"Kontakt behandler: Ta kontakt med behandler for å innhente medisinske opplysninger",
"AAP: Vurder om den sykmeldte bør søke om AAP",
],
};

interface Props {
kandidat: SenOppfolgingKandidatResponseDTO;
}

export function Vurdering({ kandidat }: Props) {
const [begrunnelse, setBegrunnelse] = useState<string>("");
return (
<Box
background="surface-default"
padding="6"
className="flex flex-col gap-4 mb-2"
>
<Heading size="medium">{texts.oppfolging}</Heading>
<List as="ul" title={texts.vurderFolgende} size="small">
{texts.rutine.map((text, index) => (
<List.Item key={index}>{text}</List.Item>
))}
</List>
<Textarea
label="Begrunnelse (obligatorisk)"
onChange={(e) => setBegrunnelse(e.target.value)}
/>
{kandidat && (
<VurderSenOppfolging kandidat={kandidat} begrunnelse={begrunnelse} />
)}
</Box>
);
}

0 comments on commit f22892a

Please sign in to comment.