@@ -5,9 +5,9 @@ import dayjs from 'dayjs';
5
5
import localizedFormat from 'dayjs/plugin/localizedFormat' ;
6
6
import relativeTime from 'dayjs/plugin/relativeTime' ;
7
7
import { AddPatientToListOverflowMenuItem } from '../modals/add-patient-to-list-modal.component' ;
8
- import { fetchPatientLastEncounter } from '../../api.resource' ;
9
8
import { launchForm } from '../../utils/ohri-forms-commons' ;
10
9
import { navigate , WorkspaceContainer } from '@openmrs/esm-framework' ;
10
+ import { useLastEncounter } from '../../hooks/useLastEncounter' ;
11
11
12
12
interface PatientMetaConfig {
13
13
location : { name : string } ;
@@ -38,23 +38,25 @@ export const LaunchableFormMenuItem = ({
38
38
} ) => {
39
39
const [ actionText , setActionText ] = useState ( launchableForm . actionText ) ;
40
40
const [ encounterUuid , setEncounterUuid ] = useState ( null ) ;
41
- const [ isLoading , setIsLoading ] = useState ( false ) ;
42
41
const continueEncounterActionText = launchableForm . actionText || 'Continue encounter ' ;
42
+ const { lastEncounter, isLoading } = useLastEncounter ( patientUuid , encounterType ) ;
43
43
44
44
useEffect ( ( ) => {
45
45
if ( launchableForm . editLatestEncounter && encounterType && ! encounterUuid ) {
46
- setIsLoading ( true ) ;
47
- fetchPatientLastEncounter ( patientUuid , encounterType ) . then ( ( latestEncounter ) => {
48
- if ( latestEncounter ) {
49
- setActionText ( continueEncounterActionText ) ;
50
- setEncounterUuid ( latestEncounter . uuid ) ;
51
- }
52
- setIsLoading ( false ) ;
53
- } ) ;
54
- } else {
55
- setIsLoading ( false ) ;
46
+ if ( ! isLoading && lastEncounter ) {
47
+ setActionText ( continueEncounterActionText ) ;
48
+ setEncounterUuid ( lastEncounter . uuid ) ;
49
+ }
56
50
}
57
- } , [ continueEncounterActionText , encounterType , encounterUuid , launchableForm . editLatestEncounter , patientUuid ] ) ;
51
+ } , [
52
+ continueEncounterActionText ,
53
+ encounterType ,
54
+ encounterUuid ,
55
+ launchableForm . editLatestEncounter ,
56
+ patientUuid ,
57
+ lastEncounter ,
58
+ isLoading ,
59
+ ] ) ;
58
60
59
61
return (
60
62
< >
@@ -79,21 +81,15 @@ export const LaunchableFormMenuItem = ({
79
81
export const ViewSummaryMenuItem = ( { patientUuid, ViewSummary, encounterType } ) => {
80
82
const [ actionText , setActionText ] = useState ( ViewSummary . actionText ) ;
81
83
const [ encounterUuid , setEncounterUuid ] = useState ( null ) ;
82
- const [ isLoading , setIsLoading ] = useState ( false ) ;
83
84
const viewSummaryActionText = ViewSummary . actionText || 'View Summary ' ;
85
+ const { lastEncounter, isLoading } = useLastEncounter ( patientUuid , encounterType ) ;
84
86
85
87
useEffect ( ( ) => {
86
88
if ( ViewSummary . editLatestEncounter && encounterType && ! encounterUuid ) {
87
- setIsLoading ( true ) ;
88
- fetchPatientLastEncounter ( patientUuid , encounterType ) . then ( ( latestEncounter ) => {
89
- if ( latestEncounter ) {
90
- setActionText ( viewSummaryActionText ) ;
91
- setEncounterUuid ( latestEncounter . uuid ) ;
92
- }
93
- setIsLoading ( false ) ;
94
- } ) ;
95
- } else {
96
- setIsLoading ( false ) ;
89
+ if ( ! isLoading && lastEncounter ) {
90
+ setActionText ( viewSummaryActionText ) ;
91
+ setEncounterUuid ( lastEncounter . uuid ) ;
92
+ }
97
93
}
98
94
} , [ ViewSummary . editLatestEncounter , encounterType , encounterUuid , patientUuid , viewSummaryActionText ] ) ;
99
95
@@ -114,24 +110,19 @@ export const ViewSummaryMenuItem = ({ patientUuid, ViewSummary, encounterType })
114
110
</ >
115
111
) ;
116
112
} ;
113
+
117
114
export const ViewTptSummaryMenuItem = ( { patientUuid, ViewTptSummary, encounterType } ) => {
118
115
const [ actionText , setActionText ] = useState ( ViewTptSummary . actionText ) ;
119
116
const [ encounterUuid , setEncounterUuid ] = useState ( null ) ;
120
- const [ isLoading , setIsLoading ] = useState ( false ) ;
121
117
const viewTptSummaryActionText = ViewTptSummary . actionText || 'View Summary ' ;
118
+ const { lastEncounter, isLoading } = useLastEncounter ( patientUuid , encounterType ) ;
122
119
123
120
useEffect ( ( ) => {
124
121
if ( ViewTptSummary . editLatestEncounter && encounterType && ! encounterUuid ) {
125
- setIsLoading ( true ) ;
126
- fetchPatientLastEncounter ( patientUuid , encounterType ) . then ( ( latestEncounter ) => {
127
- if ( latestEncounter ) {
128
- setActionText ( viewTptSummaryActionText ) ;
129
- setEncounterUuid ( latestEncounter . uuid ) ;
130
- }
131
- setIsLoading ( false ) ;
132
- } ) ;
133
- } else {
134
- setIsLoading ( false ) ;
122
+ if ( ! isLoading && lastEncounter ) {
123
+ setActionText ( viewTptSummaryActionText ) ;
124
+ setEncounterUuid ( lastEncounter . uuid ) ;
125
+ }
135
126
}
136
127
} , [ ViewTptSummary . editLatestEncounter , encounterType , patientUuid , encounterUuid , viewTptSummaryActionText ] ) ;
137
128
@@ -152,6 +143,7 @@ export const ViewTptSummaryMenuItem = ({ patientUuid, ViewTptSummary, encounterT
152
143
</ >
153
144
) ;
154
145
} ;
146
+
155
147
export function consolidatatePatientMeta ( rawPatientMeta , form , config : PatientMetaConfig ) {
156
148
const {
157
149
isDynamicCohort,
0 commit comments