@@ -3,7 +3,7 @@ import { ExclamationmarkTriangleFillIcon } from '@navikt/aksel-icons';
3
3
import { Tabs } from '@navikt/ds-react' ;
4
4
import { Box , ChildIcon , Infostripe , Margin , PageContainer } from '@navikt/ft-plattform-komponenter' ;
5
5
import classnames from 'classnames' ;
6
- import React , { useMemo } from 'react' ;
6
+ import React , { useEffect , useMemo } from 'react' ;
7
7
import { useQuery } from 'react-query' ;
8
8
import FagsakYtelseType from '../../../constants/FagsakYtelseType' ;
9
9
import { DiagnosekodeResponse } from '../../../types/DiagnosekodeResponse' ;
@@ -79,15 +79,12 @@ const sykdomTittel = (fagsakYtelseType: FagsakYtelseType) => {
79
79
80
80
const MedisinskVilkår = ( ) : JSX . Element => {
81
81
const [ state , dispatch ] = React . useReducer ( medisinskVilkårReducer , {
82
- isLoading : true ,
83
- hasError : null ,
84
82
activeStep : null ,
85
83
markedStep : null ,
86
- sykdomsstegStatus : null ,
87
84
nyeDokumenterSomIkkeErVurdert : [ ] ,
88
85
} ) ;
89
86
90
- const { isLoading , hasError , activeStep, markedStep, sykdomsstegStatus , nyeDokumenterSomIkkeErVurdert } = state ;
87
+ const { activeStep, markedStep, nyeDokumenterSomIkkeErVurdert } = state ;
91
88
const { endpoints, httpErrorHandler, visFortsettknapp, fagsakYtelseType } = React . useContext ( ContainerContext ) ;
92
89
93
90
const dokumentStegForSakstype = stegForSakstype ( fagsakYtelseType ) . find ( stepObj => stepObj . id === StepId . Dokument ) ;
@@ -110,36 +107,40 @@ const MedisinskVilkår = (): JSX.Element => {
110
107
. get < DiagnosekodeResponse > ( endpoints . diagnosekoder , httpErrorHandler )
111
108
. then ( ( response : DiagnosekodeResponse ) => response ) ;
112
109
110
+ const hentStatus = ( ) =>
111
+ httpUtils . get < SykdomsstegStatusResponse > ( endpoints . status , httpErrorHandler , {
112
+ signal : controller . signal ,
113
+ } ) ;
114
+
113
115
const { isLoading : diagnosekoderLoading , data : diagnosekoderData } = useQuery (
114
116
'diagnosekodeResponse' ,
115
117
hentDiagnosekoder ,
116
118
{ enabled : ! erFagsakOLPEllerPLS ( fagsakYtelseType ) } ,
117
119
) ;
118
120
121
+ const {
122
+ isLoading : statusLoading ,
123
+ data : sykdomstegStatus ,
124
+ error : hasError ,
125
+ refetch : refetchSykdomstegStatus ,
126
+ } = useQuery ( 'status' , hentStatus ) ;
127
+
119
128
const diagnosekoder = endpoints . diagnosekoder ? diagnosekoderData ?. diagnosekoder : [ ] ;
120
129
const diagnosekoderTekst = diagnosekoder ?. length > 0 ? `${ diagnosekoder ?. join ( ', ' ) } ` : 'Kode mangler' ;
121
130
122
- const hentSykdomsstegStatus = async ( ) => {
123
- try {
124
- const status = await httpUtils . get < SykdomsstegStatusResponse > ( endpoints . status , httpErrorHandler , {
125
- signal : controller . signal ,
126
- } ) ;
127
- const nesteSteg = finnNesteStegFn ( status ) ;
131
+ useEffect ( ( ) => {
132
+ if ( ! statusLoading ) {
133
+ const nesteSteg = finnNesteStegFn ( sykdomstegStatus ) ;
128
134
dispatch ( {
129
135
type : ActionType . UPDATE_STATUS ,
130
- sykdomsstegStatus : status ,
131
136
step : nesteSteg ,
132
137
} ) ;
133
- return status ;
134
- } catch ( error ) {
135
- dispatch ( {
136
- type : ActionType . SHOW_ERROR ,
137
- } ) ;
138
- throw new Error ( error ) ;
139
138
}
140
- } ;
139
+ } , [ sykdomstegStatus , statusLoading ] ) ;
141
140
142
- const hentNyeDokumenterSomIkkeErVurdertHvisNødvendig = ( status ) : Promise < [ SykdomsstegStatusResponse , Dokument [ ] ] > =>
141
+ const hentNyeDokumenterSomIkkeErVurdertHvisNødvendig = (
142
+ status : SykdomsstegStatusResponse ,
143
+ ) : Promise < [ SykdomsstegStatusResponse , Dokument [ ] ] > =>
143
144
new Promise ( ( resolve , reject ) => {
144
145
if ( status . nyttDokumentHarIkkekontrollertEksisterendeVurderinger ) {
145
146
httpUtils
@@ -155,11 +156,11 @@ const MedisinskVilkår = (): JSX.Element => {
155
156
}
156
157
} ) ;
157
158
158
- React . useEffect ( ( ) => {
159
- hentSykdomsstegStatus ( )
160
- . then ( hentNyeDokumenterSomIkkeErVurdertHvisNødvendig )
161
- . then ( ( [ sykdomsstegStatusResponse , nyeDokumenterSomIkkeErVurdertResponse ] ) => {
162
- const step = finnNesteStegFn ( sykdomsstegStatusResponse , true ) ;
159
+ useEffect ( ( ) => {
160
+ refetchSykdomstegStatus ( )
161
+ . then ( res => hentNyeDokumenterSomIkkeErVurdertHvisNødvendig ( res . data ) )
162
+ . then ( ( [ status , nyeDokumenterSomIkkeErVurdertResponse ] ) => {
163
+ const step = finnNesteStegFn ( status , true ) ;
163
164
if ( step !== null ) {
164
165
dispatch ( {
165
166
type : ActionType . MARK_AND_ACTIVATE_STEP ,
@@ -181,12 +182,12 @@ const MedisinskVilkår = (): JSX.Element => {
181
182
} , [ ] ) ;
182
183
183
184
const navigerTilNesteSteg = ( ) => {
184
- const nesteSteg = finnNesteStegFn ( sykdomsstegStatus ) ;
185
+ const nesteSteg = finnNesteStegFn ( sykdomstegStatus ) ;
185
186
dispatch ( { type : ActionType . NAVIGATE_TO_STEP , step : nesteSteg } ) ;
186
187
} ;
187
188
188
189
const navigerTilSteg = ( nesteSteg : Step , ikkeMarkerSteg ?: boolean ) => {
189
- if ( sykdomsstegStatus . kanLøseAksjonspunkt || ikkeMarkerSteg ) {
190
+ if ( sykdomstegStatus . kanLøseAksjonspunkt || ikkeMarkerSteg ) {
190
191
dispatch ( { type : ActionType . ACTIVATE_STEP_AND_CLEAR_MARKING , step : nesteSteg } ) ;
191
192
} else {
192
193
dispatch ( { type : ActionType . NAVIGATE_TO_STEP , step : nesteSteg } ) ;
@@ -195,27 +196,26 @@ const MedisinskVilkår = (): JSX.Element => {
195
196
196
197
const afterEndringerUtifraNyeDokumenterRegistrert = ( ) => {
197
198
dispatch ( { type : ActionType . ENDRINGER_UTIFRA_NYE_DOKUMENTER_REGISTRERT } ) ;
198
- hentSykdomsstegStatus ( ) . then (
199
- ( {
199
+ refetchSykdomstegStatus ( ) . then ( ( { data } ) => {
200
+ const {
200
201
kanLøseAksjonspunkt,
201
202
manglerVurderingAvKontinuerligTilsynOgPleie,
202
203
manglerVurderingAvToOmsorgspersoner,
203
204
manglerVurderingAvLangvarigSykdom,
204
- } ) => {
205
- if ( kanLøseAksjonspunkt ) {
206
- navigerTilSteg ( toOmsorgspersonerSteg , true ) ;
207
- } else if ( ! manglerVurderingAvKontinuerligTilsynOgPleie && manglerVurderingAvToOmsorgspersoner ) {
208
- navigerTilSteg ( toOmsorgspersonerSteg ) ;
209
- } else if ( manglerVurderingAvLangvarigSykdom ) {
210
- navigerTilSteg ( langvarigSykdomSteg ) ;
211
- }
212
- } ,
213
- ) ;
205
+ } = data ;
206
+ if ( kanLøseAksjonspunkt ) {
207
+ navigerTilSteg ( toOmsorgspersonerSteg , true ) ;
208
+ } else if ( ! manglerVurderingAvKontinuerligTilsynOgPleie && manglerVurderingAvToOmsorgspersoner ) {
209
+ navigerTilSteg ( toOmsorgspersonerSteg ) ;
210
+ } else if ( manglerVurderingAvLangvarigSykdom ) {
211
+ navigerTilSteg ( langvarigSykdomSteg ) ;
212
+ }
213
+ } ) ;
214
214
} ;
215
215
216
- const kanLøseAksjonspunkt = sykdomsstegStatus ?. kanLøseAksjonspunkt ;
217
- const harDataSomIkkeHarBlittTattMedIBehandling = sykdomsstegStatus ?. harDataSomIkkeHarBlittTattMedIBehandling ;
218
- const manglerVurderingAvNyeDokumenter = sykdomsstegStatus ?. nyttDokumentHarIkkekontrollertEksisterendeVurderinger ;
216
+ const kanLøseAksjonspunkt = sykdomstegStatus ?. kanLøseAksjonspunkt ;
217
+ const harDataSomIkkeHarBlittTattMedIBehandling = sykdomstegStatus ?. harDataSomIkkeHarBlittTattMedIBehandling ;
218
+ const manglerVurderingAvNyeDokumenter = sykdomstegStatus ?. nyttDokumentHarIkkekontrollertEksisterendeVurderinger ;
219
219
220
220
const steps : Step [ ] = stegForSakstype ( fagsakYtelseType ) ;
221
221
@@ -235,7 +235,7 @@ const MedisinskVilkår = (): JSX.Element => {
235
235
return { } ;
236
236
} , [ activeStep ] ) ;
237
237
return (
238
- < PageContainer isLoading = { isLoading } hasError = { hasError } >
238
+ < PageContainer isLoading = { statusLoading } hasError = { hasError } >
239
239
< Infostripe
240
240
element = {
241
241
! erFagsakOLPEllerPLS ( fagsakYtelseType ) ? (
@@ -314,8 +314,8 @@ const MedisinskVilkår = (): JSX.Element => {
314
314
< StruktureringAvDokumentasjon
315
315
navigerTilNesteSteg = { navigerTilNesteSteg }
316
316
hentSykdomsstegStatus = { ( ) =>
317
- hentSykdomsstegStatus ( )
318
- . then ( hentNyeDokumenterSomIkkeErVurdertHvisNødvendig )
317
+ refetchSykdomstegStatus ( )
318
+ . then ( res => hentNyeDokumenterSomIkkeErVurdertHvisNødvendig ( res . data ) )
319
319
. then ( ( [ status , dokumenter ] ) => {
320
320
dispatch ( {
321
321
type : ActionType . UPDATE_NYE_DOKUMENTER_SOM_IKKE_ER_VURDERT ,
@@ -324,42 +324,42 @@ const MedisinskVilkår = (): JSX.Element => {
324
324
return [ status , dokumenter ] ;
325
325
} )
326
326
}
327
- sykdomsstegStatus = { sykdomsstegStatus }
327
+ sykdomsstegStatus = { sykdomstegStatus }
328
328
/>
329
329
) }
330
330
{ activeStep === tilsynOgPleieSteg && (
331
331
< VurderingContext . Provider value = { contextValue } >
332
332
< VilkårsvurderingAvTilsynOgPleie
333
333
navigerTilNesteSteg = { navigerTilSteg }
334
- hentSykdomsstegStatus = { hentSykdomsstegStatus }
335
- sykdomsstegStatus = { sykdomsstegStatus }
334
+ hentSykdomsstegStatus = { ( ) => refetchSykdomstegStatus ( ) . then ( ( { data } ) => data ) }
335
+ sykdomsstegStatus = { sykdomstegStatus }
336
336
/>
337
337
</ VurderingContext . Provider >
338
338
) }
339
339
{ activeStep === langvarigSykdomSteg && (
340
340
< VurderingContext . Provider value = { contextValue } >
341
341
< VilkårsvurderingLangvarigSykdom
342
342
navigerTilNesteSteg = { navigerTilSteg }
343
- hentSykdomsstegStatus = { hentSykdomsstegStatus }
344
- sykdomsstegStatus = { sykdomsstegStatus }
343
+ hentSykdomsstegStatus = { ( ) => refetchSykdomstegStatus ( ) . then ( ( { data } ) => data ) }
344
+ sykdomsstegStatus = { sykdomstegStatus }
345
345
/>
346
346
</ VurderingContext . Provider >
347
347
) }
348
348
{ activeStep === livetsSluttfaseSteg && (
349
349
< VurderingContext . Provider value = { contextValue } >
350
350
< VilkarsvurderingAvLivetsSluttfase
351
351
navigerTilNesteSteg = { navigerTilSteg }
352
- hentSykdomsstegStatus = { hentSykdomsstegStatus }
353
- sykdomsstegStatus = { sykdomsstegStatus }
352
+ hentSykdomsstegStatus = { ( ) => refetchSykdomstegStatus ( ) . then ( ( { data } ) => data ) }
353
+ sykdomsstegStatus = { sykdomstegStatus }
354
354
/>
355
355
</ VurderingContext . Provider >
356
356
) }
357
357
{ activeStep === toOmsorgspersonerSteg && (
358
358
< VurderingContext . Provider value = { contextValue } >
359
359
< VilkårsvurderingAvToOmsorgspersoner
360
360
navigerTilNesteSteg = { navigerTilSteg }
361
- hentSykdomsstegStatus = { hentSykdomsstegStatus }
362
- sykdomsstegStatus = { sykdomsstegStatus }
361
+ hentSykdomsstegStatus = { ( ) => refetchSykdomstegStatus ( ) . then ( ( { data } ) => data ) }
362
+ sykdomsstegStatus = { sykdomstegStatus }
363
363
/>
364
364
</ VurderingContext . Provider >
365
365
) }
0 commit comments