@jescon-technologies/react-native-ui-kit 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/index.d.ts +66 -0
  2. package/index.js +0 -4
  3. package/package.json +3 -2
  4. package/src/Alerts/AAlert.js +3 -3
  5. package/src/Alerts/AAlertIOS.js +3 -3
  6. package/src/{common → Common}/NetworkServiceCall.js +1 -1
  7. package/src/CommonStyle/CommonTheme.js +11 -0
  8. package/src/CommonStyle/ComponentFunctions.js +632 -0
  9. package/src/CommonStyle/PopupStyle.js +146 -0
  10. package/src/CommonStyle/commonStyle.js +93 -0
  11. package/src/CommonStyle/componentStyle.js +545 -0
  12. package/src/CommonStyle/optionListStyles.js +175 -0
  13. package/src/Components/ByProductPage.js +200 -0
  14. package/src/Components/CDropDownListNew.js +153 -0
  15. package/src/Components/CSupplierList.js +88 -0
  16. package/src/Components/CVerificationCard.js +2822 -0
  17. package/src/Components/CustomButton.js +67 -0
  18. package/src/Components/CustomCard.js +127 -0
  19. package/src/Components/CustomTextInput.js +47 -0
  20. package/src/Components/EquipmentPage.js +313 -0
  21. package/src/Components/FilterInput.Copy.js +723 -0
  22. package/src/Components/FilterInput.js +569 -0
  23. package/src/Components/HSubHeading.js +68 -0
  24. package/src/Components/HeaderCard.js +40 -0
  25. package/src/Components/MoreOptionsScreen.js +251 -0
  26. package/src/Components/NonSwipableProductCard.js +226 -0
  27. package/src/Components/NonSwipableSupplierCard.js +348 -0
  28. package/src/Components/ProductCard.js +1336 -0
  29. package/src/Components/QualityProductCard.js +1059 -0
  30. package/src/Components/RateProductCard.js +1452 -0
  31. package/src/Components/RawMaterial.js +261 -0
  32. package/src/Components/SDropDownEdited.js +549 -0
  33. package/src/Components/SDropDownNew.js +529 -0
  34. package/src/Components/SHelpDescription.js +147 -0
  35. package/src/Components/STextInputNew.js +510 -0
  36. package/src/Components/SearchProductCard.js +470 -0
  37. package/src/Components/StageByProduct.js +199 -0
  38. package/src/Components/SupplierCard.js +243 -0
  39. package/src/Components/SupplierInvoiceCard.js +405 -0
  40. package/src/Components/SwipableSupplierCard.js +136 -0
  41. package/src/Components/TagTemplate.js +74 -0
  42. package/src/Components/WrappedComponent.js +25 -0
  43. package/src/Custom/CBooking.js +944 -0
  44. package/src/Custom/CBookingPostpone.js +1822 -0
  45. package/src/Custom/CCalendar.js +560 -0
  46. package/src/Custom/CCard.js +880 -0
  47. package/src/Custom/CDetailCard.js +205 -0
  48. package/src/Custom/CHelpImage.js +52 -0
  49. package/src/Custom/CReport.js +569 -0
  50. package/src/Custom/CScrollView.js +73 -0
  51. package/src/Custom/CSignature.js +112 -0
  52. package/src/Custom/CSliderMenu.js +339 -0
  53. package/src/Custom/CSupplierCard.js +99 -0
  54. package/src/Custom/CTemplateCard.js +438 -0
  55. package/src/Custom/CTokenAllocation.js +1402 -0
  56. package/src/Custom/CTokenListOverlay.js +122 -0
  57. package/src/Custom/CWardStatus.js +444 -0
  58. package/src/Custom/Charts/CBarChart.js +218 -0
  59. package/src/Custom/Charts/CDashBoardList.js +133 -0
  60. package/src/Custom/Charts/CDashBoardTable.js +172 -0
  61. package/src/Custom/Charts/CLineChart.js +193 -0
  62. package/src/Custom/Charts/CPieChart.js +186 -0
  63. package/src/Custom/Loader.js +182 -0
  64. package/src/Custom/OUserView.js +1121 -0
  65. package/src/Custom/PreviewDosage.js +115 -0
  66. package/src/Custom/SearchLoader.js +32 -0
  67. package/src/Custom/TableComponent/CActivityTable.js +707 -0
  68. package/src/Custom/TableComponent/CMoreButtonTable.js +197 -0
  69. package/src/Custom/TableComponent/CTable.js +185 -0
  70. package/src/Custom/TableComponent/CTextBody.js +40 -0
  71. package/src/Custom/TableComponent/CTextHeader.js +17 -0
  72. package/src/Custom/TableComponent/PreviewPrescriptionNew.js +1011 -0
  73. package/src/Custom/TableComponent/SDropdownTable.js +491 -0
  74. package/src/Custom/TableComponent/TagTable.js +1200 -0
  75. package/src/CustomComponents/CAddColumn.js +140 -0
  76. package/src/CustomComponents/CAssessmentDelete.js +307 -0
  77. package/src/CustomComponents/CAwesomeButton.js +83 -0
  78. package/src/CustomComponents/CAwesomeMoreButton.js +54 -0
  79. package/src/CustomComponents/CBackHandler.js +273 -0
  80. package/src/CustomComponents/CCalendar.js +243 -0
  81. package/src/CustomComponents/CCommentOverlay.js +202 -0
  82. package/src/CustomComponents/CComments.js +162 -0
  83. package/src/CustomComponents/CContainerView.js +24 -0
  84. package/src/CustomComponents/CCustomTextInput.js +336 -0
  85. package/src/CustomComponents/CDetailView.js +40 -0
  86. package/src/CustomComponents/CDropDownList.js +153 -0
  87. package/src/CustomComponents/CDropdownSelect.js +555 -0
  88. package/src/CustomComponents/CFooterView.js +42 -0
  89. package/src/CustomComponents/CImagePickerSave.js +316 -0
  90. package/src/CustomComponents/CModalOverlay.js +91 -0
  91. package/src/CustomComponents/CNetworkStatus.js +327 -0
  92. package/src/CustomComponents/CNotesInstructions.js +1000 -0
  93. package/src/CustomComponents/COverlay.js +81 -0
  94. package/src/CustomComponents/CRemarks.js +176 -0
  95. package/src/CustomComponents/CRowAdd.js +143 -0
  96. package/src/CustomComponents/CSummaryDropDown.js +327 -0
  97. package/src/CustomComponents/CText.js +9 -0
  98. package/src/CustomComponents/CVectorIcon.js +34 -0
  99. package/src/CustomComponents/HtmlContentViewer.js +65 -0
  100. package/src/CustomComponents/PdfContentViewer.js +90 -0
  101. package/src/CustomComponents/SDropDownDosage.js +1087 -0
  102. package/src/CustomComponents/SwipableProductCard.js +246 -0
  103. package/src/CustomComponents/SwipableProductImageCard.js +254 -0
  104. package/src/CustomComponents/WorkOrderDetails.js +1216 -0
  105. package/src/CustomComponents/WorkOrderDetailsPage.js +1213 -0
  106. package/src/HOC/ConfirmOverlay.js +2 -2
  107. package/src/HOC/HMoreButton.js +1 -1
  108. package/src/HOC/HNatureHeading.js +1 -1
  109. package/src/HOC/HShadowButton.js +1 -1
  110. package/src/HOC/HShadowCountButton.js +1 -1
  111. package/src/Json/Chart.json +818 -0
  112. package/src/Json/Consultation.json +622 -0
  113. package/src/Json/CreditBill.json +490 -0
  114. package/src/Json/Dropdown.json +216 -0
  115. package/src/Json/DropdownConsultation.json +228 -0
  116. package/src/Json/DynamicReports.json +623 -0
  117. package/src/Json/Footer.json +79 -0
  118. package/src/Media/AudioScreen.js +2 -7
  119. package/src/Media/CCaptureImageWithoutEdit.js +1 -1
  120. package/src/Media/CImageGallery.js +2 -2
  121. package/src/Media/CSingleImage.js +2 -2
  122. package/src/Media/CVideoPlay.js +1 -1
  123. package/src/Media/DocumentScreen.js +2 -7
  124. package/src/Media/DrawingScreen.js +2 -6
  125. package/src/Media/ImageScreen.js +2 -6
  126. package/src/Media/VideoScreen.js +2 -7
  127. package/src/Navigation/PageNavigation.js +224 -0
  128. package/src/Navigation/useFocusEffect.js +2 -0
  129. package/src/Navigation/useFocusEffect.native.js +1 -0
  130. package/src/Navigation/useFocusEffect.web.js +1 -0
  131. package/src/Navigation/useIsFocused.js +1 -0
  132. package/src/Navigation/useIsFocused.native.js +1 -0
  133. package/src/Navigation/useIsFocused.web.js +1 -0
  134. package/src/Navigation/useNavigation.js +2 -0
  135. package/src/Navigation/useNavigation.native.js +1 -0
  136. package/src/Navigation/useNavigation.web.js +1 -0
  137. package/src/Screens/CMedications.js +528 -0
  138. package/src/Screens/CWebViewGallery.js +203 -0
  139. package/src/Screens/ChartScan.js +279 -0
  140. package/src/Screens/ChartScreenNew.js +1579 -0
  141. package/src/Screens/Consultation.js +1500 -0
  142. package/src/Screens/Dashboard.js +778 -0
  143. package/src/Screens/FileExplorer.js +288 -0
  144. package/src/Screens/Footer.js +340 -0
  145. package/src/Screens/ForgotPassword.js +288 -0
  146. package/src/Screens/HeaderBlock.js +353 -0
  147. package/src/Screens/Login.js +328 -0
  148. package/src/Screens/Notification.js +149 -0
  149. package/src/Screens/OcrScreen.js +20 -0
  150. package/src/Screens/PdfPreview.js +507 -0
  151. package/src/Screens/RegistrationDetails.js +467 -0
  152. package/src/Screens/SearchScreen.js +582 -0
  153. package/src/Screens/Splash.js +788 -0
  154. package/src/Screens/SwipeLeftView.js +1867 -0
  155. package/src/StaticComponents/SDatePickerLabel.js +1 -1
  156. package/src/StaticComponents/SDatePickerNew.js +1 -1
  157. package/src/StaticComponents/SDateTimePickerNew.js +2 -2
  158. package/src/StaticComponents/SDropDownGenerate.js +3 -3
  159. package/src/StaticComponents/SDropDownHoc.js +4 -4
  160. package/src/StaticComponents/SDropDownIcon.js +1 -1
  161. package/src/StaticComponents/SMenuBox.js +2 -2
  162. package/src/StaticComponents/SSearch.js +2 -2
  163. package/src/StaticComponents/STextInput.js +1 -1
  164. package/src/StaticComponents/STimePicker.js +1 -1
  165. package/src/StaticComponents/STimingDropDownNew.js +2 -6
  166. package/src/StaticComponents/STimingSwitch.js +1 -1
  167. package/src/layout/CContainerView.js +1 -1
  168. package/src/layout/CDetailView.js +3 -3
  169. package/src/layout/HeaderBlock.js +5 -5
  170. package/src/layout/INVLoginLayout.js +3 -4
  171. package/src/layout/Loader.js +2 -2
  172. package/src/HOC/HAbsolute.js +0 -56
  173. package/src/HOC/HDiscontinue.js +0 -105
  174. package/src/HOC/HOverlay.js +0 -99
  175. package/src/layout/FooterBlock.js +0 -821
  176. /package/src/{common → Common}/ErrorBoundary.tsx +0 -0
  177. /package/src/{common → Common}/Icons.js +0 -0
@@ -0,0 +1,1500 @@
1
+ import React, { useState, useEffect, useRef, useContext, useCallback } from 'react';
2
+ import { Text, View, TouchableOpacity, Dimensions, BackHandler, Alert, FlatList, RefreshControl, DeviceEventEmitter } from 'react-native';
3
+ import Loader from '../Custom/Loader';
4
+ import HeaderBlock from './HeaderBlock';
5
+ // import CContainerView from '../CustomComponents/CContainerView';
6
+ import CDetailView from '../CustomComponents/CDetailView';
7
+ import CFooterView from '../CustomComponents/CFooterView';
8
+ // import { useIsFocused } from '@react-navigation/native';
9
+ import InsureResponseComponentContext from '../Handlers/insureResponseComponentContext';
10
+ import NetworkServiceCall from '../Common/NetworkServiceCall';
11
+ import { ArrayCheck, getLoading, getSound, isBNUL, isNU, isNUQ, notifyMessage, ValueCheck } from '../CommonStyle/ComponentFunctions';
12
+ import HHeading from '../HOC/HHeading';
13
+ import { normalize } from '../CommonStyle/componentStyle';
14
+ import HMoreButton from '../HOC/HMoreButton';
15
+ import HView from '../HOC/HView';
16
+ import { APIURL } from '../../../../../src/Common/apiConstants';
17
+ import NotesInstructionComments from '../CustomComponents/NotesInstructionComments';
18
+ import Icons from '../Common/Icons';
19
+ import HOverlay from '../HOC/HOverlay';
20
+ import CConfirmation from '../CustomComponents/CConfirmation';
21
+ import Footer from './Footer';
22
+ import FooterJSON from '../Json/Footer.json';
23
+ import { Global } from '../../../../../src/Common/Global';
24
+ import CBackHandler from '../CustomComponents/CBackHandler';
25
+ import HAbsolute from '../HOC/HAbsolute';
26
+
27
+ import { FlashList } from '@shopify/flash-list';
28
+ import HNatureHeading from '../HOC/HNatureHeading';
29
+ import { Menu, MenuOptions, MenuTrigger } from 'react-native-popup-menu';
30
+ import HOCIcons from '../HOC/HOCIcons';
31
+ import CDropDownList from '../CustomComponents/CDropDownList';
32
+ import CDetailCard from '../Custom/CDetailCard';
33
+ import FileExplorer from './FileExplorer';
34
+
35
+ var deletearg = {};
36
+ export default function Consultation(props) {
37
+
38
+ const [footer, setFooter] = useState();
39
+ // const navigation = useNavigation();
40
+ const [visibility, setVisibility] = useState(true)
41
+ const [backHandler, setBackHandler] = useState(false)
42
+ const [exitbackHandler, setExitBackHandler] = useState(false)
43
+ const [pulltorefresh] = useState(false)
44
+ const [overlay, setOverlay] = useState(false)
45
+ const [data, setData] = useState()
46
+ const [overlayData, setOverlayData] = useState()
47
+ const [isLoading, setIsLoading] = useState(false)
48
+ const { responseJSON, setResponseJSON } = useContext(InsureResponseComponentContext);
49
+ const [refresh, setRefresh] = useState(0);
50
+ const [deleteConfirmation, setDeleteConfirmation] = useState(false);
51
+ const [deleteClassificationNature, setDeleteClassificationNature] = useState();
52
+ // const isFocused = useIsFocused();
53
+
54
+ // useEffect(() => {
55
+ // BackHandler.addEventListener('hardwareBackPress2', backAction);
56
+ // return () =>
57
+ // BackHandler.removeEventListener('hardwareBackPress2', backAction);
58
+ // }, []);
59
+
60
+ useEffect(() => {
61
+ const backAction = () => {
62
+ if (!navigation.isFocused()) {
63
+ return false;
64
+ }
65
+ else {
66
+ if (isNU(responseJSON) && isBNUL(responseJSON.consultation) && CheckIfEdited(responseJSON.consultation)) {
67
+ setExitBackHandler(true)
68
+ }
69
+ else {
70
+ navigation.goBack();
71
+ }
72
+ }
73
+ return true;
74
+ };
75
+
76
+ const backHandler = BackHandler.addEventListener(
77
+ "hardwareBackPress",
78
+ backAction
79
+ );
80
+
81
+ return () => backHandler.remove();
82
+ }, [navigation, responseJSON]);
83
+
84
+ useEffect(() => {
85
+ getConsultation()
86
+ }, [])
87
+
88
+ // useEffect(() => {
89
+ // if (props?.route?.params?.chartscan) {
90
+
91
+ // {
92
+ // isNU(data) && isBNUL(data.consultation) ?
93
+
94
+ // data.consultation.map((fileEx, i) => {
95
+ // fileEx.customcomponent == 'FileExplorer' ? setResponseJSON({ ...responseJSON, "consultationEdit": fileEx }) : null;
96
+ // })
97
+ // : null
98
+ // }
99
+ // }
100
+ // }, [])
101
+
102
+
103
+ // const backAction = () => {
104
+ // if (navigation.isFocused() && isNU(responseJSON) && responseJSON.editStatus) {
105
+ // getSound('datanotsaved.mp3')
106
+ // setExitBackHandler(true)
107
+ // return true;
108
+ // }
109
+ // // else{
110
+ // // setExitBackHandler(false)
111
+ // // }
112
+ // };
113
+
114
+ function getExpand(params) {
115
+ params.expand = !params.expand
116
+ setRefresh(refresh + 1)
117
+ }
118
+
119
+ function getSelection(val, item, index) {
120
+
121
+ // if (ValueCheck(data) && ArrayCheck(data.consultation)) {
122
+ // data.consultation.map((forSelect) => forSelect.selected = false)
123
+ // item.selected = true
124
+ // setRefresh(refresh + 1)
125
+ // }
126
+
127
+ getHeaderMoreButtonPress(val, item, index)
128
+ }
129
+
130
+ function DeleteNotesOrInstructions(val, index, arrayname) {
131
+
132
+ const keysToRemove = [val.datavalue]
133
+
134
+ console.log('DeleteNotesOrInstructions', keysToRemove)
135
+
136
+ const updatedResponseJSON = {
137
+ ...responseJSON,
138
+ editStatus: true,
139
+ consultation: [...responseJSON.consultation], // Clone the consultation array
140
+ };
141
+
142
+ const natureindex = index;
143
+
144
+ const name = arrayname;
145
+
146
+ updatedResponseJSON.consultation[natureindex] = {
147
+ ...updatedResponseJSON.consultation[natureindex],
148
+ editStatus: true,
149
+ moreButton: [...updatedResponseJSON.consultation[natureindex].moreButton]
150
+ }
151
+
152
+ const indexOfSelected = isBNUL(updatedResponseJSON.consultation[natureindex].moreButton) ? updatedResponseJSON.consultation[natureindex].moreButton.findIndex(item => item.name === name) : 0;
153
+
154
+
155
+ if (name == 'Notes') {
156
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected] = {
157
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected],
158
+ NotesArray: [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray]
159
+ };
160
+
161
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray = [
162
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray.filter(item => !keysToRemove.includes(item.datavalue))
163
+ ]
164
+ }
165
+
166
+ if (name == 'Instructions') {
167
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected] = {
168
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected],
169
+ InstructionsArray: [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray]
170
+ };
171
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray = [
172
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray.filter(item => !keysToRemove.includes(item.datavalue))
173
+ ]
174
+ }
175
+
176
+ setResponseJSON(updatedResponseJSON);
177
+
178
+ }
179
+
180
+ function renderItem({ item, index }) {
181
+
182
+ return (
183
+ <View>
184
+ {item.visibility ?
185
+ <View style={{
186
+ marginVertical: normalize(4),
187
+ alignSelf: 'center',
188
+ elevation: 5,
189
+ borderWidth: 0.5,
190
+ borderColor: 'lightgrey',
191
+ width: '98%',
192
+ backgroundColor: '#f2efef', //'#f2efef',
193
+ }}>
194
+ <HNatureHeading
195
+ styles={{
196
+ "iconname": item.iconname,
197
+ "bgcolor": "#f2efef",
198
+ "iconsize": 16,
199
+ "iconcolor": item.editStatus != undefined && item.editStatus ? "#2085ec" : Global.AppTheme.primary_color,
200
+ "displaytext": item.heading,
201
+ "textsize": 14,
202
+ "textcolor": Global.AppTheme.primary_color
203
+ }}
204
+ callBack={val => (val == undefined ? null :
205
+ getHeaderClick(item, index)
206
+ )}
207
+ Expand={val => (val == undefined ? null :
208
+ {}
209
+ // getExpand(item)
210
+ )}
211
+ moreButtonArray={item.moreButton}
212
+ moreCallBack={val => (val == undefined ? null : getSelection(val, item, index))}
213
+ >
214
+
215
+ </HNatureHeading>
216
+ {/* <HHeading
217
+ styles={{
218
+ "iconname": item.iconname,
219
+ "bgcolor": "#f2efef",
220
+ "iconsize": 16,
221
+ "iconcolor": item.editStatus != undefined && item.editStatus ? "#2085ec" : Global.AppTheme.primary_color,
222
+ "displaytext": item.heading,
223
+ "textsize": 14,
224
+ "textcolor": Global.AppTheme.primary_color
225
+ }}
226
+ callBack={val => (val == undefined ? null :
227
+ getHeaderClick(item, index)
228
+ )}
229
+ Expand={val => (val == undefined ? null :
230
+ {}
231
+ )}>
232
+
233
+ <HMoreButton
234
+ styles={{
235
+ "iconname": 'dots-vertical',
236
+ "iconsize": 23,
237
+ "iconcolor": Global.AppTheme.primary_color,
238
+ "textsize": 9,
239
+ "textcolor": Global.AppTheme.primary_color
240
+ }}
241
+ moreButtonArray={item.moreButton}
242
+ // callBack={val => (val == undefined ? null : getHeaderMoreButtonPress(val, item))} />
243
+ callBack={val => (val == undefined ? null : getSelection(val, item, index))}
244
+ />
245
+ </HHeading> */}
246
+
247
+ {isBNUL(item.moreButton) &&
248
+ item.moreButton.map((Subitem, i) => {
249
+ return (
250
+ <View style={{ borderWidth: 0 }}>
251
+ {Subitem.name == 'Notes' && Subitem.NotesArray != undefined ? (
252
+ <NotesInstructionComments
253
+ key={i}
254
+ disabled={false}
255
+ data={Subitem.NotesArray}
256
+ icon={'notes'}
257
+ verification={true}
258
+ more={Subitem}
259
+ buttonFunction={(val) => buttonFunctionality(Subitem, i, Subitem.nature, item, index, val)}
260
+ deletebutton={true}
261
+ deleteCallback={(val) => {
262
+ DeleteNotesOrInstructions(val, index, 'Notes')
263
+ }}
264
+ />
265
+ ) : Subitem.name == 'Instructions' && Subitem.InstructionsArray != undefined ? (
266
+ <NotesInstructionComments
267
+ key={i}
268
+ disabled={true}
269
+ data={Subitem.InstructionsArray}
270
+ icon={'instruction'}
271
+ verification={true}
272
+ more={Subitem}
273
+ buttonFunction={() => buttonFunctionality(Subitem, i, Subitem.nature, item, index)}
274
+ deletebutton={true}
275
+ deleteCallback={(val) => {
276
+ DeleteNotesOrInstructions(val, index, 'Instructions')
277
+ }}
278
+ />
279
+ ) : Subitem.name == 'Comments' ? (
280
+ ValueCheck(Subitem.comments) ? (
281
+ <TouchableOpacity key={i}
282
+ onPress={() => buttonFunctionality(Subitem, i, Subitem.nature, item, index)}
283
+ style={{
284
+ paddingLeft: normalize(5),
285
+ padding: normalize(5),
286
+ borderWidth: 0.34,
287
+ borderColor: 'lightgrey',
288
+ backgroundColor: '#fff',
289
+ marginLeft: normalize(10),
290
+ borderRadius: normalize(10),
291
+ flexDirection: 'row',
292
+ alignItems: 'center',
293
+ justifyContent: 'flex-start',
294
+ marginTop: normalize(1),
295
+ elevation: 3,
296
+ }}>
297
+ <Icons.FontAwesome5
298
+ name={'comments'}
299
+ size={normalize(13)}
300
+ />
301
+ <Text
302
+ adjustsFontSizeToFit
303
+ style={{
304
+ fontSize: normalize(13),
305
+ paddingLeft: normalize(5),
306
+ }}>
307
+ {Subitem.comments}
308
+ </Text>
309
+ </TouchableOpacity>
310
+ ) : null
311
+ ) : null}
312
+ </View>
313
+ )
314
+ })}
315
+
316
+ {item.expand ?
317
+ <View>
318
+ {item.NewData != null && item.NewData != undefined && item.NewData.length > 0 ?
319
+ <FlatList
320
+ data={item.details}
321
+ renderItem={(k) => renderView(k, item, index)}
322
+ keyExtractor={(item, index) => 'keyq' + index}
323
+ listKey={(item, index) => 'keys' + index}
324
+ />
325
+ : null}
326
+ </View> : null}
327
+ </View>
328
+ : null}
329
+ </View>
330
+ )
331
+
332
+ }
333
+
334
+ function getConsultation() {
335
+
336
+ Global.EditStatus = null;
337
+ setIsLoading(true);
338
+ setResponseJSON({});
339
+ setData();
340
+ let buttonapi = props?.route?.params?.customlink ? props?.route?.params?.customlink : APIURL + Global.PatientDetails.detailapi;
341
+ console.log("getConsultation...................", buttonapi);
342
+
343
+ NetworkServiceCall("get", buttonapi, "", false)
344
+ .then(function (response) {
345
+ if (response.httpstatus == 200) {
346
+ if (response.data != undefined
347
+ && response.data.consultationdata != undefined) {
348
+ Global.ParameterInfo = response.data.consultationdata
349
+ }
350
+ setResponseJSON(response.data)
351
+ setData(response.data)
352
+ setFooter(response.data.componentFooter)
353
+ setIsLoading(false)
354
+ } else {
355
+ notifyMessage(response.data.subtitle, 2)
356
+ setIsLoading(false)
357
+ navigation.goBack()
358
+ }
359
+ })
360
+ getLoading(v => setIsLoading(false))
361
+
362
+ }
363
+
364
+ const renderView = ({ item, index }, parent, natureindex) => {
365
+
366
+ console.log('renderView', item.componentname);
367
+
368
+ return (
369
+ <View>
370
+ <HView
371
+ component={item.componentname}
372
+ data={parent.data}
373
+ index={index}
374
+ natureindex={natureindex}
375
+ parentClass={parent}
376
+ />
377
+ </View>
378
+ )
379
+ }
380
+
381
+ function getAddNature(params) {
382
+
383
+ isBNUL(params) ?
384
+ params.map((item) => { responseJSON.consultation.push({ ...item, "editStatus": true }) })
385
+ : null;
386
+
387
+ // ArrayCheck(params) ? params.map((item) => {
388
+ // responseJSON.consultation.unshift({
389
+ // ...item,
390
+ // "editStatus": true
391
+ // })
392
+ // }) : null
393
+
394
+ // console.log('hii...............', JSON.stringify(responseJSON));
395
+ }
396
+
397
+ function getAddTemplate(params) {
398
+ const Template = params.filter(({ hosumrclassificationnature: id1 }) => !responseJSON.consultation.some(({ hosumrclassificationnature: id2 }) => id2 === id1));
399
+ if (isBNUL(Template)) {
400
+ Template.map((item) => { responseJSON.consultation.push({ ...item, "editStatus": true }) });
401
+ setRefresh(refresh + 1);
402
+ }
403
+ else {
404
+ }
405
+ }
406
+
407
+ function getOverWriteTemplate(params) {
408
+
409
+ const Template = params.filter(function (item) { return item });
410
+
411
+ if (isBNUL(Template)) {
412
+
413
+ responseJSON.consultation.splice(0, responseJSON.consultation.length)
414
+ setVisibility(false);
415
+ setTimeout(() => {
416
+ Template.map((subItems) => {
417
+ responseJSON.consultation.push({ ...subItems, "editStatus": true })
418
+ });
419
+ setVisibility(true);
420
+ });
421
+ }
422
+
423
+ // if (data.consultation != undefined) {
424
+ // data.consultation.splice(0, data.consultation.length)
425
+ // setVisibility(false)
426
+ // setTimeout(() => {
427
+ // params.map((subItems) => {
428
+ // data.consultation.push({ ...subItems, "editStatus": true })
429
+ // })
430
+ // setVisibility(true)
431
+ // });
432
+ // }
433
+ }
434
+
435
+ function getVerify() {
436
+
437
+ var groups = {
438
+ "consultationdata": responseJSON.consultationdata,
439
+ "consultation": responseJSON.consultation.map(function (itemclassification) {
440
+ if (itemclassification.hosumrclassificationnature) {
441
+ switch (itemclassification.hosumrclassificationnature) {
442
+ case 17:
443
+ case 20:
444
+
445
+ // const Validatation = itemclassification.NewData[0].editArray.map(item =>
446
+ // !item.multitiming ?
447
+ // item.timingdata[0].hosumrprescriptiontiming : item.timingdata.map(xxx => xxx.hosumrprescriptiontiming))
448
+ // const merged = [].concat.apply([], Validatation).includes(0)
449
+ // merged ? notifyMessage("Please fill out mandatory fields on Prescription") : null
450
+
451
+ return ({
452
+ ...itemclassification,
453
+ "moreButton": itemclassification.moreButton != undefined ? getMoreButton(itemclassification) : []
454
+ })
455
+ case 0: return ({
456
+ ...itemclassification,
457
+ "NewData": itemclassification.NewData != undefined
458
+ && itemclassification.NewData[0].editArray != undefined &&
459
+ itemclassification.NewData[0].editArray != undefined ? getSavedFiles(itemclassification) : []
460
+ })
461
+ default: return ({
462
+ ...itemclassification,
463
+ "moreButton": itemclassification.moreButton != undefined ? getMoreButton(itemclassification) : [],
464
+ "NewData": itemclassification.NewData != undefined && itemclassification.NewData.length > 0 ? getNewDataArray(itemclassification) : []
465
+ })
466
+ }
467
+ }
468
+ }).filter(n => n)
469
+ }
470
+
471
+ var dataset = { groups }
472
+ console.log("GRopsssssssss", groups.consultation)
473
+ console.log('------------------VERIFY----------------------------', JSON.stringify(dataset));
474
+ let buttonapi = APIURL + "commonsave/getpatientchartverify";
475
+ console.log('output-----------------------------', buttonapi);
476
+ setIsLoading(true);
477
+ NetworkServiceCall('post', buttonapi, dataset).then(function (response) {
478
+ console.log("REPOSNEEEEEEEEEEEEEEEEEE", JSON.stringify(response))
479
+ if (response.httpstatus == 200 && response.data != undefined &&
480
+ response.data != null && response.data.Code == 200) {
481
+ getSound('https://www.mboxdrive.com/datasaved.mp3');
482
+ notifyMessage('Data Verified!!!!!', 1);
483
+ setIsLoading(false)
484
+ setBackHandler(false)
485
+ props.navigation.goBack()
486
+ } else {
487
+ getSound('https://www.mboxdrive.com/datanotsaved.mp3');
488
+ notifyMessage('Data Not Verified!!!!!', 2);
489
+ setIsLoading(false);
490
+ setBackHandler(false)
491
+ }
492
+ });
493
+ getLoading(v => setIsLoading(false))
494
+ }
495
+
496
+ function getDataForPreview(data) {
497
+
498
+ const jsonremovedquotes = isNU(data) && isBNUL(data.consultation) ? data.consultation.map((val) => {
499
+ return ({
500
+ ...val,
501
+ "currentreportbuttonapi": ""
502
+ })
503
+ }) : [];
504
+
505
+ const jsonBody = {
506
+ "groups": {
507
+ ...data,
508
+ "consultation": jsonremovedquotes
509
+ }
510
+ }
511
+ return jsonBody
512
+ }
513
+
514
+ function getCheckSave(params) {
515
+ if (params) {
516
+ getSave()
517
+ }
518
+ else {
519
+ notifyMessage('No data to save.')
520
+ }
521
+ }
522
+
523
+ function getEditFlag(params) {
524
+ // console.log("PARAMS INSIDE PRESCRIPTIONNNNNNN", JSON.stringify(params))
525
+ if (params.EditFlag == 1) {
526
+ return params.EditFlag = 2
527
+ } else if (params.EditFlag == 3) {
528
+ return params.EditFlag = 4
529
+ }
530
+ else {
531
+ return params.EditFlag
532
+ }
533
+ // Global.EditStatus = 1
534
+ // responseJSON.consultationEdit.editStatus = true
535
+ }
536
+
537
+ function CheckIfEdited(array) {
538
+
539
+ let prevcodearray = array.filter((i, k) => { return i.editStatus ? { ...i } : undefined });
540
+ let prevcode = isBNUL(prevcodearray) ? true : false;
541
+ return prevcode;
542
+
543
+ }
544
+
545
+ function getFooterFunctions(val) {
546
+
547
+ switch (val.heading) {
548
+ case "Save":
549
+
550
+ if (CheckIfEdited(responseJSON.consultation)) {
551
+
552
+ if (Global.PatientDetails.profilecontent[0].patienttype == 'IP') {
553
+
554
+ navigate('PdfUnSavedViewer', {
555
+ 'headerblockstyle': {
556
+ marginBottom: normalize(35)
557
+ },
558
+ 'data': getDataForPreview(responseJSON),
559
+ 'link': APIURL + "jrinsurance/jrcommonjreport/" + "/rnhomrNatureChartPreview/0/ClassificationNatureDetails",
560
+ 'savebutton': true,
561
+ savecallback: (val) => { getCheckSave(val) }
562
+ })
563
+ }
564
+ else {
565
+ getSave()
566
+ }
567
+
568
+ }
569
+ else {
570
+ notifyMessage("No data to save.", 3)
571
+ }
572
+
573
+
574
+ break;
575
+ case "Chart Download":
576
+ navigate('PdfPreview', { 'headerblockstyle': { marginBottom: normalize(35) }, 'link': APIURL + "jrinsurance/jrcommonreport/" + val.buttonapi })
577
+ break;
578
+ case "Chart Preview":
579
+ navigate('PdfUnSavedViewer', {
580
+ 'headerblockstyle': {
581
+ marginBottom: normalize(35)
582
+ },
583
+ 'data': getDataForPreview(data),
584
+ 'link': APIURL + "jrinsurance/jrcommonjreport/" + val.buttonapi
585
+ // 'rnhomrNatureChartPreview/0/ClassificationNatureDetails'
586
+ })
587
+ break;
588
+ case "Registration Preview":
589
+ // console.log('Registration Preview');
590
+ navigate('RegistrationDetails', {
591
+ 'headerblockstyle': {
592
+ marginBottom: normalize(35)
593
+ },
594
+ // 'data': getDataForPreview(data),
595
+ // 'link': APIURL + "jrinsurance/jrcommonjreport/" + val.buttonapi
596
+ // 'rnhomrNatureChartPreview/0/ClassificationNatureDetails'
597
+ })
598
+ break;
599
+ case "Verify":
600
+ var x = ValueCheck(responseJSON.consultation) ? responseJSON.consultation.filter((item) => item.editStatus == true ? item.editStatus : false) : []
601
+ console.log("VARIABLE ARRAYYYYYYYYYYYYYYY", JSON.stringify(x))
602
+ if (x.length == 0) {
603
+ setBackHandler(true)
604
+ } else {
605
+ notifyMessage("Please save patient data before verification", 5)
606
+ setIsLoading(false);
607
+ }
608
+ break;
609
+ case "SaveAs Template":
610
+ navigate('SaveTemplate', {
611
+ type: 0
612
+ // data: responseJSON.consultation
613
+ })
614
+ break;
615
+ case "Template":
616
+ // setResponseJSON({
617
+ // ...data,
618
+ // })
619
+ setOverlayData({
620
+ "displaytext": "Template",
621
+ "iconcolor": '#a30e0e',
622
+ "fontcolor": '#a30e0e',
623
+ "shadowcolor": '#ffe5e5',
624
+ "iconname": "list-ul",
625
+ "selected": false,
626
+ "visibility": true,
627
+ "iconsize": 22,
628
+ "functionid": "C02",
629
+ "componentname": "AddTemplate"
630
+ })
631
+ setOverlay(true)
632
+ break;
633
+ case "MicroTemplate":
634
+ case "Add Nature":
635
+ console.log('Add Nature jjj.........', JSON.stringify(val))
636
+ setOverlayData(val)
637
+ setOverlay(true)
638
+ break;
639
+ case "Lab Results":
640
+ navigate('CValueSummary')
641
+ break;
642
+ case "Diagnosis":
643
+ const sampledata = {
644
+ "itemid": 7,
645
+ "heading": "Diagnosis",
646
+ "functionname": "overlay",
647
+ "buttonapi": "insuranceadvanceget/emrcommonget/exec rndddaaddclassificationnature 6215896,7,176,3,1,",
648
+ "name": "Diagnosis",
649
+ "componentname": "CIcdView",
650
+ "iconname": "file-text-o"
651
+ };
652
+ setOverlayData(sampledata);
653
+ setOverlay(true);
654
+ break;
655
+ case "Files":
656
+ data.consultation.map((fileEx, i) => {
657
+ fileEx.customcomponent == 'FileExplorer'
658
+ ?
659
+ (navigate(fileEx.customcomponent, {
660
+ data: fileEx.NewData[0].editArray[0],
661
+ entireData: fileEx,
662
+ eventData: fileEx,
663
+ onselect: () => editStatus(fileEx),
664
+ }),
665
+ setResponseJSON({
666
+ ...responseJSON,
667
+ // "consultation": ValueCheck(data) && ValueCheck(data.consultation) ? data.consultation : [],
668
+ "consultationEdit": fileEx
669
+ }))
670
+ : console.log('files null', fileEx.customcomponent);
671
+ })
672
+ break;
673
+ case "Medications":
674
+ navigate('CalendarMedications')
675
+ break;
676
+ }
677
+ }
678
+
679
+ function selectProps(...props) {
680
+ return function (obj) {
681
+ const newObj = {};
682
+ props.forEach(name => {
683
+ newObj[name] = obj[name];
684
+ });
685
+
686
+ return newObj;
687
+ }
688
+ }
689
+
690
+ function getSavedFiles(obj) {
691
+ for (const [key, value] of Object.entries(obj.NewData[0].editArray[0])) {
692
+ switch (key) {
693
+ case "savedimages": var ImagesString = value.map((images) => images.filename).toString()
694
+ obj.FilesImagesString = ImagesString
695
+ break;
696
+ case "savedvideo": var VideosString = value.map((videos) => videos.filename).toString()
697
+ obj.FilesVideosString = VideosString
698
+ break;
699
+ case "savedaudio": var AudiosString = value.map((audios) => audios.filename).toString()
700
+ obj.FilesAudiosString = AudiosString
701
+ break;
702
+ case "saveddoc": var DocumentString = value.map((docs) => docs.filename).toString()
703
+ obj.FilesDocumentString = DocumentString
704
+ break;
705
+ case "savedpdf": var PdfString = value.map((pdf) => pdf.filename).toString()
706
+ obj.FilesPdfString = PdfString
707
+ break;
708
+ }
709
+ }
710
+ return obj
711
+ }
712
+
713
+ function getMoreButton(itemclassification) {
714
+ itemclassification.moreButton.map(function (x) {
715
+
716
+ switch (x.name) {
717
+ // case "Notes": var stringNotes = ArrayCheck(x.NotesArray) ? x.NotesArray.map((notes) => notes.datavalue).toString() : ""
718
+ // itemclassification.NotesString = stringNotes
719
+ // break;
720
+ case "Notes":
721
+ var stringNotes = ArrayCheck(x.NotesArray) ? x.NotesArray.map((notes) => notes.displayvalue).toString() : ""
722
+ itemclassification.NotesString = stringNotes
723
+ break;
724
+ case "Instructions": var InstructionsString = ArrayCheck(x.InstructionsArray) ? x.InstructionsArray.map((notes) => notes.datavalue).toString() : ""
725
+ itemclassification.InstructionsString = InstructionsString
726
+ break;
727
+ case "Images": var ImagesString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedimages) ? x.dataapi[0].savedimages.map((images) => images.filename).toString() : ""
728
+ itemclassification.ImagesString = ImagesString
729
+ break;
730
+ case "Videos": var VideosString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedvideo) ? x.dataapi[0].savedvideo.map((videos) => videos.filename).toString() : ""
731
+ itemclassification.VideosString = VideosString
732
+ break;
733
+ case "Audios": var AudiosString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedaudio) ? x.dataapi[0].savedaudio.map((audio) => audio.filename).toString() : ""
734
+ itemclassification.AudiosString = AudiosString
735
+ break;
736
+ case "Documents": var PdfString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedpdf) ? x.dataapi[0].savedpdf.map((audio) => audio.filename).toString() : ""
737
+ itemclassification.PdfString = PdfString
738
+ break;
739
+ case "Draw": var DrawString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].saveddoc) ? x.dataapi[0].saveddoc.map((audio) => audio.filename).toString() : ""
740
+ itemclassification.DocumentString = DrawString
741
+ break;
742
+ case "Files":
743
+ var VideosString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedvideo) ? x.dataapi[0].savedvideo.map((videos) => videos.filename).toString() : ""
744
+ itemclassification.FilesVideosString = VideosString
745
+ var ImagesString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedimages) ? x.dataapi[0].savedimages.map((images) => images.filename).toString() : ""
746
+ itemclassification.FilesImagesString = ImagesString
747
+ var AudiosString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedaudio) ? x.dataapi[0].savedaudio.map((audio) => audio.filename).toString() : ""
748
+ itemclassification.FilesAudiosString = AudiosString
749
+ var DocumentString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].saveddoc) ? x.dataapi[0].saveddoc.map((docs) => docs.filename).toString() : ""
750
+ itemclassification.FilesDocumentString = DocumentString
751
+ var PdfString = ArrayCheck(x.dataapi) && ArrayCheck(x.dataapi[0].savedpdf) ? x.dataapi[0].savedpdf.map((docs) => docs.filename).toString() : ""
752
+ itemclassification.FilesPdfString = PdfString
753
+ break;
754
+ default: return x
755
+ }
756
+ })
757
+ return itemclassification.moreButton
758
+ }
759
+
760
+ function getNewDataArray(itemclassification) {
761
+ itemclassification.NewData != undefined &&
762
+ itemclassification.NewData.length > 0
763
+ ? itemclassification.NewData.map(function (x) {
764
+ switch (x.componentname) {
765
+ case "CustomVitalSign":
766
+ return ({
767
+ ...x,
768
+ "editArray": x.editArray != undefined && x.editArray.length > 0 ? x.editArray.map(function (y) {
769
+
770
+
771
+ if (y.notesStatus != undefined && y.notesStatus == true) {
772
+ var stringNotes = y.NotesArray != undefined && typeof y.NotesArray != 'string' && y.NotesArray.length > 0 ? y.NotesArray.map((notes) => notes.displayvalue).toString() : ""
773
+ y.NotesString = stringNotes
774
+ }
775
+
776
+ if (y.instructionStatus != undefined && y.instructionStatus == true) {
777
+ var InstructionsString = y.InstructionsArray != undefined && typeof y.InstructionsArray != 'string' && y.InstructionsArray.length > 0 ? y.InstructionsArray.map((notes) => notes.datavalue).toString() : ""
778
+ y.InstructionsString = InstructionsString
779
+ }
780
+
781
+ // if (y.notesStatus != undefined && y.notesStatus == true) {
782
+ // var stringNotes = y.NotesArray != undefined && typeof y.NotesArray != 'string' && y.NotesArray.length > 0 ? y.NotesArray.map((notes) => notes.datavalue).toString() : ""
783
+ // y.NotesString = stringNotes
784
+ // }
785
+ }) : []
786
+ })
787
+
788
+ case "CAssessment":
789
+ return ({
790
+ ...x,
791
+ "editArray": x.editArray != undefined && x.editArray.length > 0 ? x.editArray.map(function (y) {
792
+ var stringNotes = y.NotesArray != undefined && y.NotesArray.length > 0 ? y.NotesArray.map((notes) => notes.datavalue).toString() : ""
793
+ y.NotesString = stringNotes
794
+ var savedString = y.savedtypes != undefined && y.savedtypes.length > 0 ? y.savedtypes.map((notes) => notes.datavalue).toString() : ""
795
+ y.DataString = savedString
796
+ }) : []
797
+ })
798
+ default: return x
799
+ }
800
+ }) : []
801
+ return itemclassification.NewData
802
+ }
803
+
804
+ function getSave() {
805
+
806
+ const newgroup = {
807
+ "groups": {
808
+ "procedurename": "homrcommonsave1",
809
+ "consultationdata": responseJSON.consultationdata,
810
+ consultation: [...responseJSON.consultation].map(function (itemclassification) {
811
+ if (itemclassification.editStatus == true) {
812
+ switch (itemclassification.hosumrclassificationnature) {
813
+ case 20:
814
+ const PostPrescription = Global.PatientDetails.profilecontent[0].patienttype == 'IP' && isBNUL(itemclassification.NewData[0].editArray) ? itemclassification.NewData[0].editArray.map((subItem) => ({
815
+ ...subItem,
816
+ "EditFlag": getEditFlag(subItem)
817
+ })) : [];
818
+ return ({
819
+ ...itemclassification,
820
+ "postflag": Global.PatientDetails.profilecontent[0].patienttype == 'IP' ? true : itemclassification.postflag,
821
+ "NewData": [
822
+ {
823
+ ...itemclassification.NewData[0],
824
+ 'editArray': Global.PatientDetails.profilecontent[0].patienttype == 'IP' ? PostPrescription : itemclassification.NewData[0].editArray,
825
+ }
826
+ ],
827
+ "moreButton": itemclassification.moreButton != undefined ? getMoreButton(itemclassification) : []
828
+ })
829
+ case 0: return ({
830
+ ...itemclassification,
831
+ "NewData": itemclassification.NewData != undefined
832
+ && itemclassification.NewData[0].editArray != undefined &&
833
+ itemclassification.NewData[0].editArray != undefined ? getSavedFiles(itemclassification) : []
834
+ })
835
+ default: return ({
836
+ ...itemclassification,
837
+ "moreButton": itemclassification.moreButton != undefined ? getMoreButton(itemclassification) : [],
838
+ "NewData": itemclassification.NewData != undefined && itemclassification.NewData.length > 0 ? getNewDataArray(itemclassification) : []
839
+ })
840
+ }
841
+ }
842
+ }).filter(n => n)
843
+ }
844
+ };
845
+ SaveApi(newgroup);
846
+ }
847
+
848
+ function SaveApi(dataset) {
849
+
850
+
851
+ let buttonapi = APIURL + 'commonsave/PatientChartSave';
852
+ console.log('SaveApi buttonapi-----------------------------', buttonapi);
853
+ console.log('SaveApi JSON----------------------------------------------', JSON.stringify(dataset));
854
+
855
+ setIsLoading(true);
856
+ NetworkServiceCall('post', buttonapi, dataset).then(function (response) {
857
+ if (response.httpstatus == 200) {
858
+ if (response.data && response.data.Code == 200) {
859
+ // getSound('https://www.mboxdrive.com/datasaved.mp3');
860
+ setIsLoading(false);
861
+ Global.ChartDataAll = null;
862
+ if (Global.PatientDetails.profilecontent[0].patienttype == 'IP') {
863
+ navigation.goBack()
864
+ }
865
+ else {
866
+ getConsultation()
867
+ }
868
+ notifyMessage('Data Saved.', 1);
869
+ } else {
870
+ setIsLoading(false);
871
+ notifyMessage(response.data.message, 2);
872
+ }
873
+ } else {
874
+ // getSound('https://www.mboxdrive.com/datanotsaved.mp3');
875
+ setIsLoading(false);
876
+ notifyMessage('Data Not Saved. Network Error.', 4);
877
+ }
878
+ });
879
+
880
+
881
+
882
+ }
883
+
884
+ function buttonFunctionality(item, key, nature, classification, index, editnote) {
885
+
886
+ var x = {
887
+ ...item,
888
+ "key": key,
889
+ "nature": nature != undefined ? nature : "G",
890
+ "classification": classification != undefined ? classification : null,
891
+ "natureindex": index,
892
+ "editnote": isNU(editnote) && isNUQ(editnote.displayvalue) ? editnote.displayvalue : null
893
+ };
894
+ console.log('buttonFunctionality.............', JSON.stringify(x));
895
+ setOverlay(true);
896
+ setOverlayData(x);
897
+ }
898
+
899
+ function getComments(item, index) {
900
+
901
+ setResponseJSON({
902
+ ...responseJSON,
903
+ natureindex: index
904
+ });
905
+ setOverlayData({
906
+ ...item,
907
+ "natureindex": index,
908
+ });
909
+ setOverlay(true);
910
+
911
+ var x = {
912
+ ...item,
913
+ "key": key,
914
+ "nature": nature != undefined ? nature : "G",
915
+ "classification": classification != undefined ? classification : null,
916
+ "natureindex": index,
917
+ };
918
+ setOverlay(true);
919
+ setOverlayData(x);
920
+ }
921
+
922
+ function getHeaderMoreButtonPress(val, item, index) {
923
+
924
+ if (val.keyid == 3441) { // Vital Sign Early Warning Setup
925
+ setResponseJSON({
926
+ ...responseJSON,
927
+ natureindex: index,
928
+ "consultationEdit": item
929
+ });
930
+ navigate('CTprOverall');
931
+ }
932
+ else {
933
+
934
+ switch (val.name) {
935
+ case 'Add Parameter':
936
+ setResponseJSON({
937
+ ...responseJSON,
938
+ natureindex: index,
939
+ "consultationEdit": item
940
+ })
941
+ buttonFunctionality(val)
942
+ break;
943
+ case 'Delete':
944
+ deletearg.homrpatientchart = item.homrpatientchart;
945
+ deletearg.homrpatientchartdetail = item.homrpatientchartdetail ? item.homrpatientchartdetail : 0;
946
+ deletearg.hosumrclassificationnature = item.hosumrclassificationnature;
947
+ deletearg.nature = item.nature;
948
+ deletearg.keyid = item.keyid;
949
+ setDeleteClassificationNature(deletearg);
950
+ setDeleteConfirmation(true);
951
+ break;
952
+ case 'Comments':
953
+ // getComments(val, index);
954
+ buttonFunctionality(val, index, item.nature, item, index)
955
+ break;
956
+ case 'Instructions':
957
+ case 'Notes':
958
+ buttonFunctionality(val, 1, item.nature, item, index)
959
+ if (val.name != "Delete") {
960
+ setResponseJSON({
961
+ ...responseJSON,
962
+ "consultationEdit": item
963
+ })
964
+ }
965
+ break;
966
+ case 'Files':
967
+ navigate(val.componentname, {
968
+ data: val && val.dataapi ? val.dataapi[0] : null,
969
+ entireData: val,
970
+ eventData: item,
971
+ onselect: editStatus,
972
+ });
973
+ if (val.name != "Delete") {
974
+ setResponseJSON({
975
+ ...responseJSON,
976
+ "consultationEdit": item
977
+ })
978
+ }
979
+ break;
980
+ case 'Images':
981
+ console.log('Images', val.componentname, val.dataapi[0], '@@@@@@@@@@@@', val, '@@@@@@@@@@@@@@', item, '@@@@@@@@@@@@@@', editStatus)
982
+ navigate(val.componentname, {
983
+ data: val && val.dataapi ? val.dataapi[0] : null,
984
+ entireData: val,
985
+ eventData: item,
986
+ visibility: 1,
987
+ onselect: editStatus,
988
+ });
989
+ if (val.name != "Delete") {
990
+ setResponseJSON({
991
+ ...responseJSON,
992
+ "consultationEdit": item
993
+ })
994
+ }
995
+ break;
996
+ case 'Videos':
997
+ navigate(val.componentname, {
998
+ data: val && val.dataapi ? val.dataapi[0] : null,
999
+ entireData: val,
1000
+ eventData: item,
1001
+ visibility: 3,
1002
+ onselect: editStatus,
1003
+ });
1004
+ if (val.name != "Delete") {
1005
+ setResponseJSON({
1006
+ ...responseJSON,
1007
+ "consultationEdit": item
1008
+ })
1009
+ }
1010
+ break;
1011
+ case 'Audios':
1012
+ navigate(val.componentname, {
1013
+ data: val && val.dataapi ? val.dataapi[0] : null,
1014
+ entireData: val,
1015
+ eventData: item,
1016
+ visibility: 2,
1017
+ onselect: editStatus,
1018
+ });
1019
+ if (val.name != "Delete") {
1020
+ setResponseJSON({
1021
+ ...responseJSON,
1022
+ "consultationEdit": item
1023
+ })
1024
+ }
1025
+ break;
1026
+ case 'Documents':
1027
+ navigate(val.componentname, {
1028
+ data: val && val.dataapi ? val.dataapi[0] : null,
1029
+ entireData: val,
1030
+ eventData: item,
1031
+ visibility: 4,
1032
+ onselect: editStatus,
1033
+ });
1034
+ if (val.name != "Delete") {
1035
+ setResponseJSON({
1036
+ ...responseJSON,
1037
+ "consultationEdit": item
1038
+ })
1039
+ }
1040
+ break;
1041
+ case 'Draw':
1042
+ navigate(val.componentname, {
1043
+ data: val && val.dataapi ? val.dataapi[0] : null,
1044
+ entireData: val,
1045
+ eventData: item,
1046
+ visibility: 5,
1047
+ onselect: editStatus,
1048
+ });
1049
+ if (val.name != "Delete") {
1050
+ setResponseJSON({
1051
+ ...responseJSON,
1052
+ "consultationEdit": item
1053
+ })
1054
+ }
1055
+ break;
1056
+ case 'Medication Chart':
1057
+ notifyMessage("Incorporate Soon")
1058
+ break;
1059
+ default:
1060
+ buttonFunctionality(val)
1061
+ if (val.name != "Delete") {
1062
+ setResponseJSON({
1063
+ ...responseJSON,
1064
+ "consultationEdit": item
1065
+ })
1066
+ }
1067
+ break;
1068
+ }
1069
+
1070
+ }
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+ }
1077
+
1078
+ function editStatus(item) {
1079
+ Global.EditStatus = 1;
1080
+ if (item) {
1081
+ item.editStatus = true
1082
+ console.log("FILE", JSON.stringify(item))
1083
+ }
1084
+ setRefresh(refresh + 1);
1085
+ }
1086
+
1087
+ function getHeaderClick(item, index) {
1088
+ // console.log("response jsonnnnnnnnnnnnnnnnnnnnnnn", JSON.stringify(responseJSON))
1089
+ // console.log("response jsonnnnnnnnnnnnnnnnnnnnnnn", JSON.stringify(data))
1090
+ switch (item.hosumrclassificationnature) {
1091
+ default:
1092
+
1093
+ const updateContext = {
1094
+ ...responseJSON,
1095
+ natureindex: index
1096
+ };
1097
+ setResponseJSON(updateContext);
1098
+
1099
+ // setResponseJSON({
1100
+ // ...responseJSON,
1101
+ // "natureindex": index
1102
+ // // "consultation": ValueCheck(data) && ValueCheck(data.consultation) ? data.consultation : responseJSON.consultation,
1103
+ // // "consultationEdit": item
1104
+ // })
1105
+ navigate('ConsultationEdit', {
1106
+ data: props.data,
1107
+ parent: item
1108
+ })
1109
+ break;
1110
+ }
1111
+ }
1112
+
1113
+ function renderFlashList(array) {
1114
+
1115
+ let newdata = isBNUL(array) ? array.filter(function (item) { return item }) : [];
1116
+
1117
+ return (
1118
+ isBNUL(newdata) ?
1119
+ <FlashList
1120
+ data={newdata}
1121
+ renderItem={(val) => renderItem(val)}
1122
+ keyExtractor={(item, index) => 'key' + index}
1123
+ estimatedItemSize={normalize(160)}
1124
+ />
1125
+ : null
1126
+ )
1127
+
1128
+ }
1129
+
1130
+ const [optionsArray, setOptionsArray] = useState({
1131
+ "success": true,
1132
+ "httpstatus": 200,
1133
+ "message": "SUCCESS",
1134
+ "data": {
1135
+ "data": [
1136
+ {
1137
+ "datavalue": 1,
1138
+ "displayvalue": "PRESCIPTION",
1139
+ "selected": false
1140
+ },
1141
+ {
1142
+ "datavalue": 2,
1143
+ "displayvalue": "SUMMARY",
1144
+ "selected": false
1145
+ },
1146
+ {
1147
+ "datavalue": 2,
1148
+ "displayvalue": "VITAL SIGNS",
1149
+ "selected": false
1150
+ }
1151
+ ]
1152
+ }
1153
+ });
1154
+
1155
+ function fnstring(i) {
1156
+ return isNU(i) ? i.toString() : null
1157
+ }
1158
+
1159
+ function fnarray(i) {
1160
+ let array = [];
1161
+ isBNUL(i) ? i.map(data => { data.selected ? array.push(data.displayvalue) : null }) : null
1162
+ return array
1163
+ }
1164
+
1165
+ function fnGetDiagnosis(array) {
1166
+ return fnstring(fnarray(array));
1167
+ }
1168
+
1169
+ function newFunction(val) {
1170
+ setOptionsArray(prevState => {
1171
+
1172
+ const updatedData = prevState.data.data.map(item => {
1173
+ if (item.datavalue == val) {
1174
+ return {
1175
+ ...item,
1176
+ selected: true // Toggle the selected value
1177
+ };
1178
+ }
1179
+ return item; // Keep other items unchanged
1180
+ });
1181
+
1182
+ return {
1183
+ ...prevState,
1184
+ data: {
1185
+ ...prevState.data,
1186
+ data: updatedData
1187
+ }
1188
+ };
1189
+ })
1190
+ }
1191
+
1192
+ return (
1193
+ <CContainerView>
1194
+ <HeaderBlock
1195
+ style={{ marginBottom: normalize(30) }}
1196
+ navigation={navigation}
1197
+ backhandler={true}
1198
+ consultation={true}
1199
+ callback={(val) => {
1200
+ if (isNU(responseJSON) && isBNUL(responseJSON.consultation) && CheckIfEdited(responseJSON.consultation)) {
1201
+ setExitBackHandler(true)
1202
+ }
1203
+ else {
1204
+ navigation.goBack();
1205
+ }
1206
+ }}
1207
+ />
1208
+ <CDetailView>
1209
+ {/* <PanGestureHandler onGestureEvent={handleGesture}> */}
1210
+ <View style={{ flex: 1 }}>
1211
+ {props?.route?.params?.chartscan ?
1212
+ <View style={{ flex: 1 }}>
1213
+ <HHeading
1214
+ styles={{
1215
+ "icongroup": 3,
1216
+ "iconname": 'scanner',
1217
+ "bgcolor": "#f2efef",
1218
+ "iconsize": 16,
1219
+ "iconcolor": Global.AppTheme.primary_color,
1220
+ "displaytext": 'CHART SCAN',
1221
+ "textsize": 14,
1222
+ "textcolor": Global.AppTheme.primary_color,
1223
+ }}
1224
+ callBack={val => (val == undefined ? null : console.log(val))}>
1225
+ </HHeading>
1226
+ {isNU(props.route.params.detailinfo) ?
1227
+ <CDetailCard
1228
+ val={props?.route?.params?.detailinfo ? props?.route?.params?.detailinfo : null}
1229
+ // blockData={blockData}
1230
+ admissiontype={props?.route?.params?.admissiontype ? props.route.params.admissiontype : null}
1231
+ NavigateToPatientChart={() => { }}
1232
+ getXRay={() => { }}
1233
+ getLabResults={() => { }}
1234
+ chartscancallback={(blockData1, detailcardinfo) => { }}
1235
+ chartscanfilescallback={(blockData, detailcardinfo) => { }}
1236
+ hidefilebutton={true}
1237
+ hidechartscanbutton={true}
1238
+ />
1239
+ : null}
1240
+ {/* <View>
1241
+ <Menu>
1242
+ <MenuTrigger
1243
+ // onPress={()=>{
1244
+ // getTokenList2(footerData, moment(item.postponedate).format('YYYY-MM-DD'),item)
1245
+ // }}
1246
+ customStyles={{
1247
+ triggerWrapper: {
1248
+ borderWidth: 0,
1249
+ justifyContent: 'flex-start',
1250
+ alignItems: 'flex-start'
1251
+ }
1252
+ }}
1253
+ >
1254
+ <View style={{ flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'center', borderWidth: 0.5, borderRadius: 5, margin: normalize(5), backgroundColor: 'white', elevation: 5, borderColor: 'lightgrey', height: normalize(35) }}>
1255
+ <HOCIcons.Icons
1256
+ icongroup={3}
1257
+ name={'view-list'}
1258
+ size={normalize(18)}
1259
+ color={Global.AppTheme.primary_color}
1260
+ style={{ textAlign: 'center', marginHorizontal: normalize(5) }}
1261
+ />
1262
+ <Text adjustsFontSizeToFit style={{ flex: 1, color: 'black', fontSize: normalize(10), fontWeight: 'bold', paddingHorizontal: normalize(3) }}>
1263
+ {isNU(optionsArray) && isNU(optionsArray.data) && isBNUL(optionsArray.data.data) ?
1264
+ fnGetDiagnosis(optionsArray.data.data)
1265
+ : null}
1266
+ </Text>
1267
+ <Text style={{
1268
+ position: 'absolute',
1269
+ // backgroundColor: 'white',
1270
+ top: normalize(0),
1271
+ left: normalize(10),
1272
+ fontSize: normalize(10),
1273
+ color: Global.AppTheme.primary_color
1274
+ }}>{" Select Nature "}</Text>
1275
+ </View>
1276
+ </MenuTrigger>
1277
+ <MenuOptions
1278
+ optionsContainerStyle={{ marginTop: normalize(40), backgroundColor: '#ffffff00' }}
1279
+ customStyles={{
1280
+ optionsContainer: {
1281
+ shadowColor: '#000000d8',
1282
+ shadowRadius: 0,
1283
+ borderRadius: 5,
1284
+ borderWidth: 0.5,
1285
+ padding: normalize(5),
1286
+ borderColor: 'lightgrey',
1287
+ elevation: 3,
1288
+ width: Dimensions.get('screen').width * 0.5,
1289
+ backgroundColor: 'white'
1290
+ },
1291
+ optionText: {},
1292
+ }}>
1293
+ <CDropDownList
1294
+ // dropdownapi={EMRAPI.getDropDown1}
1295
+ dropdownarray={optionsArray}
1296
+ callback={val => { newFunction(val.datavalue) }}
1297
+ />
1298
+ </MenuOptions>
1299
+ </Menu>
1300
+ </View> */}
1301
+ {/* <View style={{ flex: 1 }}>
1302
+ {isNU(data) && isBNUL(data.consultation) ? data.consultation.map((fileEx, i) => {
1303
+ return (
1304
+ fileEx.customcomponent == 'FileExplorer'
1305
+ ?
1306
+ <View style={{ borderWidth: 0, flex: 1 }}>
1307
+ <FileExplorer
1308
+ route={{
1309
+ 'params': {
1310
+ 'data': fileEx.NewData[0].editArray[0],
1311
+ 'entireData': fileEx,
1312
+ 'eventData': fileEx,
1313
+ 'componenttype': true,
1314
+ onselect: () => editStatus(fileEx)
1315
+ }
1316
+ }}
1317
+ />
1318
+ </View>
1319
+ // (navigate(fileEx.customcomponent, {
1320
+ // data: fileEx.NewData[0].editArray[0],
1321
+ // entireData: fileEx,
1322
+ // eventData: fileEx,
1323
+ // onselect: () => editStatus(fileEx),
1324
+ // }))
1325
+ : null
1326
+ )
1327
+ }) : null}
1328
+ </View> */}
1329
+ </View>
1330
+ : null}
1331
+
1332
+ {backHandler ?
1333
+ <CBackHandler
1334
+ type={2} // 2 for confirmation
1335
+ callBack={(val) => (val == undefined ? null : getVerify())}
1336
+ close={(val) => (val == undefined ? null : setBackHandler(val))}
1337
+ /> : null}
1338
+
1339
+ {exitbackHandler ?
1340
+ <CBackHandler
1341
+ type={5} // 2 for confirmation
1342
+ callBack={(val) => (val == undefined ? null : props.navigation.goBack())}
1343
+ close={(val) => (val == undefined ? null : setExitBackHandler(val))}
1344
+ /> : null}
1345
+
1346
+ {/* <HAbsolute
1347
+ callBack={val => (val == undefined ? null : getHeaderMoreButtonPress(val, responseJSON.consultationEdit))}
1348
+ /> */}
1349
+
1350
+ {!props?.route?.params?.chartscan && isNU(responseJSON) && isBNUL(responseJSON.consultation) && visibility ?
1351
+ // <FlatList
1352
+ // data={responseJSON.consultation}
1353
+ // renderItem={(val) => renderItem(val)}
1354
+ // initialNumToRender={5}
1355
+ // maxToRenderPerBatch={10}
1356
+ // keyExtractor={(item, index) => 'keyh' + index}
1357
+ // />
1358
+ renderFlashList(responseJSON.consultation)
1359
+ : null}
1360
+ </View>
1361
+ {/* </PanGestureHandler> */}
1362
+ </CDetailView>
1363
+
1364
+ {isBNUL(footer) ?
1365
+ <Footer
1366
+ footerIcon={footer}
1367
+ buttonFunction={val => val == undefined ? null : getFooterFunctions(val)}
1368
+ /> : null}
1369
+
1370
+ {isLoading ?
1371
+ <Loader
1372
+ displaytext={true}
1373
+ />
1374
+ : null}
1375
+
1376
+ {deleteConfirmation ? (
1377
+ <CConfirmation
1378
+ type={4}
1379
+ confirmation={val => val == undefined ? null : setDeleteConfirmation(val)}
1380
+ flag={0}
1381
+ deleteapi={APIURL + 'emrdeleteclassificationnature/deleteclassificationnature/' + deletearg.homrpatientchartdetail + '/' + deletearg.homrpatientchart + '/' + deletearg.hosumrclassificationnature + '/' + deletearg.nature}
1382
+ keyid={deletearg.hosumrclassificationnature}
1383
+ navigation={navigation}
1384
+ data={responseJSON}
1385
+ responseJSON={responseJSON.consultation}
1386
+ refreshCount={val => val == undefined ? null : setRefresh(refresh + val)}
1387
+ />
1388
+ ) : null}
1389
+
1390
+ {overlay ?
1391
+ (console.log('overlayData.componentname........', overlayData.componentname),
1392
+ <HOverlay
1393
+ data={overlayData}
1394
+ component={overlayData.componentname}
1395
+ visibility={val => (val == undefined ? null : (setOverlay(val), console.log('visibility is false now')))}
1396
+ addNature={val => (val == undefined ? null : getAddNature(val))}
1397
+ loading={val => val == undefined ? null : setIsLoading(val)}
1398
+ callBack={val => (val == undefined ? null : getAddTemplate(val))}
1399
+ overwrite={val => (val == undefined ? null : getOverWriteTemplate(val))}
1400
+ notesSelectCallBack={(val) => {
1401
+
1402
+ const newItem = isBNUL(val) ? val.filter((i, k) => { return i.selected ? { ...i } : undefined }) : [];
1403
+
1404
+ const updatedResponseJSON = {
1405
+ ...responseJSON,
1406
+ editStatus: true,
1407
+ consultation: [...responseJSON.consultation], // Clone the consultation array
1408
+ };
1409
+
1410
+ const natureindex = overlayData.natureindex ?? 0;
1411
+
1412
+ const name = overlayData.name ?? null;
1413
+
1414
+ updatedResponseJSON.consultation[natureindex] = {
1415
+ ...updatedResponseJSON.consultation[natureindex],
1416
+ editStatus: true,
1417
+ moreButton: [...updatedResponseJSON.consultation[natureindex].moreButton]
1418
+ }
1419
+
1420
+ const indexOfSelected = isBNUL(updatedResponseJSON.consultation[natureindex].moreButton) ? updatedResponseJSON.consultation[natureindex].moreButton.findIndex(item => item.name === name) : 0;
1421
+
1422
+
1423
+ if (name == 'Notes') {
1424
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected] = {
1425
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected],
1426
+ NotesArray: [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray]
1427
+ };
1428
+ const combinedArray = [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray, ...newItem];
1429
+ // const seenHosumrcodes = new Set();
1430
+ // const uniqueItems = combinedArray.filter(item => {
1431
+ // if (seenHosumrcodes.has(item.datavalue)) {
1432
+ // return false;
1433
+ // }
1434
+ // seenHosumrcodes.add(item.datavalue);
1435
+ // return true;
1436
+ // });
1437
+ // updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray = uniqueItems;
1438
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].NotesArray = combinedArray;
1439
+ }
1440
+
1441
+ if (name == 'Instructions') {
1442
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected] = {
1443
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected],
1444
+ InstructionsArray: [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray]
1445
+ };
1446
+ const combinedArray = [...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray, ...newItem];
1447
+ const seenHosumrcodes = new Set();
1448
+ const uniqueItems = combinedArray.filter(item => {
1449
+ if (seenHosumrcodes.has(item.datavalue)) {
1450
+ return false;
1451
+ }
1452
+ seenHosumrcodes.add(item.datavalue);
1453
+ return true;
1454
+ });
1455
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected].InstructionsArray = uniqueItems;
1456
+ }
1457
+
1458
+ setResponseJSON(updatedResponseJSON);
1459
+ }}
1460
+ commentsCallback={(val) => {
1461
+
1462
+ console.log('commentsCallbackcommentsCallback', val)
1463
+
1464
+ const updatedResponseJSON = {
1465
+ ...responseJSON,
1466
+ editStatus: true,
1467
+ consultation: [...responseJSON.consultation], // Clone the consultation array
1468
+ };
1469
+
1470
+ const natureindex = overlayData.natureindex ?? 0;
1471
+
1472
+ const name = overlayData.name ?? null;
1473
+
1474
+ updatedResponseJSON.consultation[natureindex] = {
1475
+ ...updatedResponseJSON.consultation[natureindex],
1476
+ editStatus: true,
1477
+ CommentsString: val,
1478
+ moreButton: [...updatedResponseJSON.consultation[natureindex].moreButton]
1479
+ }
1480
+
1481
+ const indexOfSelected = isBNUL(updatedResponseJSON.consultation[natureindex].moreButton) ? updatedResponseJSON.consultation[natureindex].moreButton.findIndex(item => item.name === name) : 0;
1482
+
1483
+ console.log('indexOfSelected', indexOfSelected);
1484
+
1485
+ updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected] = {
1486
+ ...updatedResponseJSON.consultation[natureindex].moreButton[indexOfSelected],
1487
+ comments: val
1488
+ };
1489
+
1490
+ console.log('commentsupdate', JSON.stringify(updatedResponseJSON))
1491
+
1492
+ setResponseJSON(updatedResponseJSON);
1493
+
1494
+ }}
1495
+ // flag={2}
1496
+ />
1497
+ ) : null}
1498
+ </CContainerView>
1499
+ )
1500
+ }