@@ -17,6 +17,7 @@ import axiosInstance from '@/pages/api/_axiosInstance';
17
17
import CustomModal from '@/components/CustomModal' ;
18
18
import useWithLoading from '@/utils/loading' ;
19
19
import NoVisitPlaceholder from '@/components/records/NoVisitPlaceholder' ;
20
+ import useSaveOnWrite from '@/hooks/useSaveOnWrite' ;
20
21
21
22
const PatientConsultation = ( ) => {
22
23
const [ mounted , setMounted ] = useState ( false ) ;
@@ -37,7 +38,11 @@ const PatientConsultation = () => {
37
38
const [ consultationModalOpen , setConsultationModalOpen ] = useState ( false ) ;
38
39
39
40
// Order Form Modal hooks
40
- const [ orders , setOrders ] = useState ( [ ] ) ;
41
+ const [ orders , setOrders , clearOrdersStorageData ] = useSaveOnWrite (
42
+ 'orders' ,
43
+ [ ] ,
44
+ [ selectedVisitID ]
45
+ ) ;
41
46
const blankOrderFormDetails = {
42
47
quantity : '' ,
43
48
medicine : 0 , // refers to the medcine id
@@ -49,59 +54,16 @@ const PatientConsultation = () => {
49
54
const [ orderFormModalOpen , setOrderFormModalOpen ] = useState ( false ) ;
50
55
51
56
// Consultation Form hooks
52
- const [ consultationFormDetails , setConsultationFormDetails ] = useState ( {
53
- diagnoses : [ ] ,
54
- } ) ;
57
+ const [
58
+ consultationFormDetails ,
59
+ setConsultationFormDetails ,
60
+ clearConsultStorageData ,
61
+ ] = useSaveOnWrite ( 'consult' , { diagnoses : [ ] } , [ selectedVisitID ] ) ;
55
62
56
63
useEffect ( ( ) => {
57
64
onRefresh ( ) ;
58
65
} , [ ] ) ;
59
66
60
- // Load saved data from localStorage when the component mounts
61
- useEffect ( ( ) => {
62
- const savedConsultData = localStorage . getItem (
63
- `consultationFormDetails_visit${ selectedVisitID } `
64
- ) ;
65
- if ( savedConsultData ) {
66
- setConsultationFormDetails ( JSON . parse ( savedConsultData ) ) ;
67
- }
68
- const savedOrderData = localStorage . getItem (
69
- `orders_visit${ selectedVisitID } `
70
- ) ;
71
- if ( savedOrderData ) {
72
- setOrders ( JSON . parse ( savedOrderData ) ) ;
73
- }
74
- } , [ selectedVisitID ] ) ;
75
- // Save consultation form data to localStorage whenever it changes
76
- useEffect ( ( ) => {
77
- const timeout = setTimeout ( ( ) => {
78
- localStorage . setItem (
79
- `consultationFormDetails_visit${ selectedVisitID } ` ,
80
- JSON . stringify ( consultationFormDetails )
81
- ) ;
82
- } , 500 ) ;
83
- return ( ) => clearTimeout ( timeout ) ;
84
- } , [ selectedVisitID , consultationFormDetails ] ) ;
85
- // Save orders form data to localStorage whenever it changes
86
- useEffect ( ( ) => {
87
- const timeout = setTimeout ( ( ) => {
88
- localStorage . setItem (
89
- `orders_visit${ selectedVisitID } ` ,
90
- JSON . stringify ( orders )
91
- ) ;
92
- } , 500 ) ;
93
- return ( ) => clearTimeout ( timeout ) ;
94
- } , [ selectedVisitID , orders ] ) ;
95
- // Purge data from localStorage on successful submit
96
- const clearLocalStorageData = ( ) => {
97
- localStorage . removeItem ( `consultationFormDetails_visit${ selectedVisitID } ` ) ;
98
- localStorage . removeItem ( `orders_visit${ selectedVisitID } ` ) ;
99
- setConsultationFormDetails ( {
100
- diagnoses : [ ] ,
101
- } ) ;
102
- setOrders ( [ ] ) ;
103
- } ;
104
-
105
67
const onRefresh = useWithLoading ( async ( ) => {
106
68
const patientID = Router . query . id ;
107
69
try {
@@ -223,7 +185,8 @@ const PatientConsultation = () => {
223
185
} ;
224
186
225
187
await axiosInstance . post ( '/consults' , combinedPayload ) ;
226
- clearLocalStorageData ( ) ;
188
+ clearOrdersStorageData ( ) ;
189
+ clearConsultStorageData ( ) ;
227
190
228
191
toast . success ( 'Medical Consult Completed!' ) ;
229
192
Router . push ( '/records' ) ;
0 commit comments